/usr/local/lib/python3.6/site-packages/distlib/__pycache__
NameSizeModeActions
compat.cpython-36.pyc315800644editdlrm
database.cpython-36.pyc430950644editdlrm
index.cpython-36.pyc170910644editdlrm
locators.cpython-36.pyc385820644editdlrm
manifest.cpython-36.pyc103070644editdlrm
markers.cpython-36.pyc52970644editdlrm
metadata.cpython-36.pyc276730644editdlrm
resources.cpython-36.pyc108460644editdlrm
scripts.cpython-36.pyc115000644editdlrm
util.cpython-36.pyc518470644editdlrm
version.cpython-36.pyc208310644editdlrm
wheel.cpython-36.pyc277940644editdlrm
__init__.cpython-36.pyc9970644editdlrm
Edit: /usr/local/lib/python3.6/site-packages/distlib/__pycache__/metadata.cpython-36.pyc (27673B)
3 0DgD@sdZddlmZddlZddlmZddlZddlZddlZddl m Z m Z ddl m Z mZmZddlmZdd lmZmZdd lmZmZejeZGd d d e ZGd dde ZGddde ZGddde ZdddgZdZ dZ!ej"dZ#ej"dZ$dMZ%dNZ&dOZ'dPZ(dQZ)dRZ*dSZ+e*dTZ,dUZ-dVZ.e,e.Z/e0Z1e1j2e%e1j2e&e1j2e(e1j2e*e1j2e,e1j2e/ej"d;Z3dd?Z5d@dAe1DZ6dBdAe6j7DZ8dWZ9dXZ:dYZ;dZZd]Z?e@ZAej"dCZBd^dEdFZCGdGdHdHe@ZDdIZEdJZFdKZGGdLdde@ZHdS)_zzImplementation of the Metadata for Python packages PEPs. Supports all metadata formats (1.0, 1.1, 1.2, 1.3/2.1 and 2.2). )unicode_literalsN)message_from_file)DistlibException __version__)StringIO string_types text_type) interpret)extract_by_key get_extras) get_schemePEP440_VERSION_REc@seZdZdZdS)MetadataMissingErrorzA required metadata is missingN)__name__ __module__ __qualname____doc__rr:/usr/local/lib/python3.6/site-packages/distlib/metadata.pyrsrc@seZdZdZdS)MetadataConflictErrorz>Attempt to read or write metadata fields that are conflictual.N)rrrrrrrrrsrc@seZdZdZdS) MetadataUnrecognizedVersionErrorz Unknown metadata version number.N)rrrrrrrrr#src@seZdZdZdS)MetadataInvalidErrorzA metadata value is invalidN)rrrrrrrrr'srMetadataPKG_INFO_ENCODINGPKG_INFO_PREFERRED_VERSIONzutf-8z1.1z \|z Metadata-VersionNameVersionPlatformSummary DescriptionKeywords Home-pageAuthor Author-emailLicenseSupported-Platform Classifier Download-URL ObsoletesProvidesRequires MaintainerMaintainer-emailObsoletes-Dist Project-URL Provides-Dist Requires-DistRequires-PythonRequires-ExternalPrivate-Version Obsoleted-BySetup-Requires-Dist ExtensionProvides-ExtraDescription-Content-TypeDynamic License-Filez"extra\s*==\s*("([^"]+)"|'([^']+)')cCsl|dkr tS|dkrtS|dkr$tS|d krBttddtDS|dkrTtd n |d kr`tSt|dS) Nz1.0z1.1z1.21.32.1css|]}|tkr|VqdS)N) _345_FIELDS).0frrr psz%_version2fieldlist..z2.0z+Metadata 2.0 is withdrawn and not supportedz2.2)r=r>) _241_FIELDS _314_FIELDSr?tuple _566_FIELDS ValueError _643_FIELDSr)versionrrr_version2fieldlistgs rJc Cs*dd}dd|jD}ddddd d g}x|D]}|tkrZd|krZ|jdtjd ||tkrd|kr|jdtjd ||tkrd|kr|jdtjd ||tkrd|kr|jdtjd||tkrd |kr|dkr|jd tjd||tkr0d |kr0|jd tjd|q0Wt |dkr:|dSt |dkr\tjd|t dd|kon||t }d|ko||t }d |ko||t }d |ko||t}t|t|t|t|dkrt d| r| r| r| rt|krtS|rdS|rdS|r&d Sd S)z5Detect the best version depending on the fields used.cstfdd|DS)Nc3s|]}|kVqdS)Nr)r@marker)keysrrrB}sz5_best_version.._has_marker..)any)rLmarkersr)rLr _has_marker|sz"_best_version.._has_markercSs"g|]\}}|gddfkr|qS)UNKNOWNNr)r@keyvaluerrr sz!_best_version..z1.0z1.1z1.2z1.3z2.1z2.2zRemoved 1.0 due to %szRemoved 1.1 due to %szRemoved 1.2 due to %szRemoved 1.3 due to %sr!zRemoved 2.1 due to %szRemoved 2.2 due to %srrz)Out of options - unknown metadata set: %szUnknown metadata setz,You used incompatible 1.1/1.2/2.1/2.2 fields)itemsrCremoveloggerdebugrDr?rFrHlenr _314_MARKERS _345_MARKERS _566_MARKERS _643_MARKERSintr) fieldsrOrLZpossible_versionsrQZis_1_1Zis_1_2Zis_2_1Zis_2_2rrr _best_versionysX             &  r_cCsi|]}||jjddqS)-_)lowerreplace)r@namerrr srecCsi|]\}}||qSrr)r@attrfieldrrrresz[^A-Za-z0-9.]+FcCs0|r$tjd|}tjd|jdd}d||fS)zhReturn the distribution name with version. If for_filename is true, return a filename-escaped form.r` .z%s-%s) _FILESAFEsubrc)rdrIZ for_filenamerrr_get_name_and_versions rlc@s eZdZdZd?ddZddZdd Zd d Zd d ZddZ ddZ ddZ ddZ ddZ ddZd@ddZddZdd Zd!d"Zd#d$ZdAd%d&ZdBd'd(ZdCd)d*Zd+d,Zefd-d.ZdDd/d0ZdEd1d2Zd3d4Zd5d6Zd7d8Zd9d:Zd;d<Z d=d>Z!dS)FLegacyMetadataaoThe legacy metadata of a release. Supports versions 1.0, 1.1, 1.2, 2.0 and 1.3/2.1 (auto-detected). You can instantiate the class with one of these arguments (or none): - *path*, the path to a metadata file - *fileobj* give a file-like object with metadata as content - *mapping* is a dict-like object - *scheme* is a version scheme name NdefaultcCsz|||gjddkrtdi|_g|_d|_||_|dk rH|j|n.|dk r\|j|n|dk rv|j||j dS)Nz'path, fileobj and mapping are exclusive) count TypeError_fieldsZrequires_filesZ _dependenciesschemeread read_fileupdateset_metadata_version)selfpathfileobjmappingrsrrr__init__s   zLegacyMetadata.__init__cCst|j|jd<dS)NzMetadata-Version)r_rr)rxrrrrwsz#LegacyMetadata.set_metadata_versioncCs|jd||fdS)Nz%s: %s )write)rxrzrdrRrrr _write_fieldszLegacyMetadata._write_fieldcCs |j|S)N)get)rxrdrrr __getitem__szLegacyMetadata.__getitem__cCs |j||S)N)set)rxrdrRrrr __setitem__ szLegacyMetadata.__setitem__c Cs8|j|}y |j|=Wntk r2t|YnXdS)N) _convert_namerrKeyError)rxrd field_namerrr __delitem__ s   zLegacyMetadata.__delitem__cCs||jkp|j||jkS)N)rrr)rxrdrrr __contains__szLegacyMetadata.__contains__cCs(|tkr |S|jddj}tj||S)Nr`ra) _ALL_FIELDSrcrb _ATTR2FIELDr)rxrdrrrrszLegacyMetadata._convert_namecCs|tks|tkrgSdS)NrP) _LISTFIELDS_ELEMENTSFIELD)rxrdrrr_default_valueszLegacyMetadata._default_valuecCs&|jdkrtjd|Stjd|SdS)N1.01.1 )rr)metadata_version_LINE_PREFIX_PRE_1_2rk_LINE_PREFIX_1_2)rxrRrrr_remove_line_prefix!s  z"LegacyMetadata._remove_line_prefixcCs|tkr||St|dS)N)rAttributeError)rxrdrrr __getattr__'szLegacyMetadata.__getattr__FcCst|d|d|S)zz Return the distribution name with version. If filesafe is true, return a filename-escaped form. rr)rl)rxZfilesaferrr get_fullname0szLegacyMetadata.get_fullnamecCs|j|}|tkS)z+return True if name is a valid metadata key)rr)rxrdrrris_field8s zLegacyMetadata.is_fieldcCs|j|}|tkS)N)rr)rxrdrrris_multi_field=s zLegacyMetadata.is_multi_fieldc Cs.tj|ddd}z|j|Wd|jXdS)z*Read the metadata values from a file path.rzutf-8)encodingN)codecsopenruclose)rxfilepathfprrrrtAszLegacyMetadata.readcCst|}|d|jd<xxtD]p}||kr*q|tkrh|j|}|tkrZ|dk rZdd|D}|j||q||}|dk r|dkr|j||qW|j}|r|n|d|d<dS)z,Read the metadata values from a file object.zmetadata-versionzMetadata-VersionNcSsg|]}t|jdqS),)rEsplit)r@rRrrrrSVsz,LegacyMetadata.read_file..rPr!)rrrrrget_all_LISTTUPLEFIELDSr get_payload)rxZfileobmsgrgvaluesrRbodyrrrruIs  zLegacyMetadata.read_filec Cs0tj|ddd}z|j||Wd|jXdS)z&Write the metadata fields to filepath.wzutf-8)rN)rr write_filer)rxr skip_unknownrrrrr}eszLegacyMetadata.writecCs|jxt|dD]}|j|}|r:|dgdgfkr:q|tkrX|j||dj|q|tkr|dkr|jd kr|jdd}n |jdd }|g}|t krd d |D}x|D]}|j|||qWqWd S)z0Write the PKG-INFO format data to a file object.zMetadata-VersionrPrr!1.01.1rz z |cSsg|]}dj|qS)r)join)r@rRrrrrSsz-LegacyMetadata.write_file..N)rr) rwrJrrr~rrrrcr)rx fileobjectrrgrrRrrrrms$    zLegacyMetadata.write_filec sfdd}|snHt|dr>x<|jD]}||||q&Wnx|D]\}}|||qDW|r~x|jD]\}}|||qhWdS)aSet metadata values from the given iterable `other` and kwargs. Behavior is like `dict.update`: If `other` has a ``keys`` method, they are looped over and ``self[key]`` is assigned ``other[key]``. Else, ``other`` is an iterable of ``(key, value)`` iterables. Keys that don't match a metadata field or that have an empty value are dropped. cs"|tkr|rjj||dS)N)rrr)rQrR)rxrr_sets z#LegacyMetadata.update.._setrLN)hasattrrLrT)rxotherkwargsrkvr)rxrrvs  zLegacyMetadata.updatecCsn|j|}|tks|dkrPt|ttf rPt|trJdd|jdD}q~g}n.|tkr~t|ttf r~t|trz|g}ng}tj t j rB|d}t |j }|tkr|dk rx|D](}|j|jddstjd |||qWn`|tko|dk r|j|sBtjd |||n0|tkrB|dk rB|j|sBtjd ||||tkr`|d kr`|j|}||j|<dS) z"Control then set a metadata field.rcSsg|] }|jqSr)strip)r@rrrrrSsz&LegacyMetadata.set..rrN;rz$'%s': '%s' is not valid (field '%s')z.'%s': '%s' is not a valid version (field '%s')r!)rr isinstancelistrErrrrV isEnabledForloggingWARNINGr rs_PREDICATE_FIELDSis_valid_matcherwarning_VERSIONS_FIELDSis_valid_constraint_list_VERSION_FIELDSis_valid_version_UNICODEFIELDSrrr)rxrdrR project_namersrrrrrs4           zLegacyMetadata.setcCs|j|}||jkr*|tkr&|j|}|S|tkr@|j|}|S|tkr|j|}|dkr^gSg}x6|D].}|tkr|j|qh|j|d|dfqhW|S|tkr|j|}t |t r|j dS|j|S)zGet a metadata field.Nrrr) rrr_MISSINGrrrrappendrrrr)rxrdrnrRresvalrrrrs.          zLegacyMetadata.getc s |jgg}}xd D]}||kr|j|qW|rT|gkrTddj|}t|xdD]}||krZ|j|qZW|ddkr||fSt|jfd d }xdt|ftjft j ffD]F\}}x<|D]4} |j | d } | d k o||  r|jd | | fqWqW||fS)zkCheck if the metadata is compliant. If strict is True then raise if no Name or Version are providedrrzmissing required metadata: %sz, Home-pager$zMetadata-Versionz1.2cs*x$|D]}j|jddsdSqWdS)NrrFT)rr)rRr)rsrrare_valid_constraintss z3LegacyMetadata.check..are_valid_constraintsNzWrong value for '%s': %s)rr)rr$) rwrrrr rsrrrrrr) rxstrictmissingwarningsrfrrr^ controllerrgrRr)rsrchecks.          zLegacyMetadata.checkcCsn|jt|d}i}xP|D]H}| s2||jkrt|}|dkrP||||<qdd||D||<qW|S)aReturn fields as a dict. Field names will be converted to use the underscore-lowercase style instead of hyphen-mixed case (i.e. home_page instead of Home-page). This is as per https://www.python.org/dev/peps/pep-0566/#id17. zMetadata-Version project_urlcSsg|]}dj|qS)r)r)r@urrrrS#sz)LegacyMetadata.todict..)rwrJrr _FIELD2ATTR)rxZ skip_missingr^datarrQrrrtodicts  zLegacyMetadata.todictcCs<|ddkr(xdD]}||kr||=qW|d|7<dS)NzMetadata-Versionz1.1r*r,r+z Requires-Dist)r*r,r+r)rx requirementsrgrrradd_requirements's    zLegacyMetadata.add_requirementscCstt|dS)NzMetadata-Version)rrJ)rxrrrrL2szLegacyMetadata.keysccsx|jD] }|Vq WdS)N)rL)rxrQrrr__iter__5szLegacyMetadata.__iter__csfddjDS)Ncsg|] }|qSrr)r@rQ)rxrrrS:sz)LegacyMetadata.values..)rL)rxr)rxrr9szLegacyMetadata.valuescsfddjDS)Ncsg|]}||fqSrr)r@rQ)rxrrrS=sz(LegacyMetadata.items..)rL)rxr)rxrrT<szLegacyMetadata.itemscCsd|jj|j|jfS)Nz <%s %s %s>) __class__rrdrI)rxrrr__repr__?szLegacyMetadata.__repr__)NNNrn)F)F)F)N)F)F)"rrrrr|rwr~rrrrrrrrrrrrtrur}rrvrrrrrrrLrrrTrrrrrrms<      &  *  rmz pydist.jsonz metadata.jsonMETADATAc@seZdZdZejdZejdejZejdejZ e Z ejdZ dZ deZffdWd Zd Zd ZeffedXfe dYfe dZfe d[fd Zd\Zd]ddZed^ZdefZdefZdefdefeeedefeeeedefd_d`d Z[[d d!Zdad"d#Zd$d%Ze d&d'Z!e d(d)Z"e"j#d*d)Z"dbd+d,Z$e d-d.Z%e d/d0Z&e&j#d1d0Z&d2d3Z'd4d5Z(d6d7Z)d8d9Z*dd:dd;dcd>dd?d@dAdddEdedHdfdJdKddgdi Z+dMdNZ,dhdQdRZ-dSdTZ.dUdVZ/dS)irz The metadata of a release. This implementation uses 2.1 metadata where possible. If not possible, it wraps a LegacyMetadata instance which handles the key-value metadata format. z ^\d+(\.\d+)*$z!^[0-9A-Z]([0-9A-Z_.-]*[0-9A-Z])?$z^[A-Z]([0-9A-Z-]*[0-9A-Z])?$z .{1,2047}z2.0z distlib (%s)legacy)rdrIsummaryzqname version license summary description author author_email keywords platform home_page classifiers download_urlzwextras run_requires test_requires build_requires dev_requires provides meta_requires obsoleted_by supports_environments)rrdrIrZdynamic_legacy_datarsNrncCs0|||gjddkrtdd|_d|_||_|dk rzy|j||||_Wn*tk rvt||d|_|jYnXnd}|rt |d}|j }WdQRXn |r|j }|dkr|j |j d|_ndt |ts|jd}ytj||_|j|j|Wn0tk r*tt||d|_|jYnXdS)Nroz'path, fileobj and mapping are exclusive)r{rsrb)r generatorzutf-8)rzrs)rprqrrrs_validate_mappingrrmvalidaterrtMETADATA_VERSION GENERATORrr decodejsonloadsrGr)rxryrzr{rsrrArrrr|us:      zMetadata.__init__rdrIlicensekeywordsrz Requires-DistzSetup-Requires-DistzProvides-Extrar( Download-URLMetadata-Version) run_requiresbuild_requires dev_requiresZ test_requires meta_requiresextrasmodules namespacesexportscommands classifiers source_urlrc CsZtj|d}tj|d}||kr||\}}|jr^|dkrP|dkrHdn|}n |jj|}n|dkrjdn|}|d kr|jj||}nt}|}|jjd} | r |dkr| jd |}nR|dkr| jd } | r| j||}n.| jd } | s|jjd } | r | j||}||krV|}n:||kr4tj||}n"|jrJ|jj|}n |jj|}|S) N common_keys mapped_keysrrrrr extensionszpython.commandszpython.detailszpython.exports)rrrrr)object__getattribute__rrr) rxrQcommonmappedlkmakerresultrRsentineldrrrrsD            zMetadata.__getattribute__cCsH||jkrD|j|\}}|p |j|krD|j|}|sDtd||fdS)Nz.'%s' is an invalid value for the '%s' property)SYNTAX_VALIDATORSrsmatchr)rxrQrRrspattern exclusionsmrrr_validate_values  zMetadata._validate_valuecCs*|j||tj|d}tj|d}||kr||\}}|jrV|dkrJt||j|<nf|d krj||j|<nR|jjdi}|dkr||d <n2|dkr|jd i}|||<n|jd i}|||<nh||krtj|||nP|d krt|t r|j }|r|j }ng}|jr||j|<n ||j|<dS)Nrrrrrrrrzpython.commandszpython.detailszpython.exportsr)rrrrr) rrrrNotImplementedErrorr setdefault __setattr__rrrr)rxrQrRrrrrarrrrr s<               zMetadata.__setattr__cCst|j|jdS)NT)rlrdrI)rxrrrname_and_versionszMetadata.name_and_versioncCsF|jr|jd}n|jjdg}d|j|jf}||krB|j||S)Nz Provides-Distprovidesz%s (%s))rrr rdrIr)rxrsrrrr s  zMetadata.providescCs |jr||jd<n ||jd<dS)Nz Provides-Distr )rr)rxrRrrrr s c Cs|jr |}ng}t|pg|j}xl|D]d}d|kr@d|kr@d}n8d|krNd}n|jd|k}|rx|jd}|rxt||}|r&|j|dq&WxNd D]F}d|} | |kr|j| |jjd |g}|j|j|||d qW|S) a Base method to get dependencies, given a set of extras to satisfy and an optional environment context. :param reqts: A list of sometimes-wanted dependencies, perhaps dependent on extras and environment. :param extras: A list of optional components being requested. :param env: An optional environment for marker evaluation. extra environmentTrequiresbuilddevtestz:%s:z %s_requires)renv)rrr) rr rrr extendrUrget_requirements) rxreqtsrrrrincluderKrQerrrr&s.      zMetadata.get_requirementscCs|jr|jS|jS)N)r _from_legacyr)rxrrr dictionaryOszMetadata.dictionarycCs|jr tnt|j|jSdS)N)rr r rDEPENDENCY_KEYS)rxrrr dependenciesUszMetadata.dependenciescCs|jr tn |jj|dS)N)rr rrv)rxrRrrrr\sc Cs|jd|jkrtg}x0|jjD]"\}}||kr&||kr&|j|q&W|rfddj|}t|x"|jD]\}}|j|||qpWdS)NrzMissing metadata items: %sz, ) rrrMANDATORY_KEYSrTrrrr) rxr{rsrrQrrrrrrrrcszMetadata._validate_mappingcCsB|jr.|jjd\}}|s|r>tjd||n|j|j|jdS)NTz#Metadata: missing: %s, warnings: %s)rrrVrrrrs)rxrrrrrrqs zMetadata.validatecCs(|jr|jjdSt|j|j}|SdS)NT)rrr r INDEX_KEYS)rxrrrrrys zMetadata.todictcCs|jr|j st|j|jd}|jjd}x2dD]*}||kr2|dkrLd }n|}||||<q2W|jd g}|d gkrzg}||d <d}x2|D]*\}}||kr||rd||ig||<qW|j|d<|S)N)rrTrdrIrr description classifierrr"r requires_distrsetup_requires_distrrr )rdrIrrr!r"r$rr%r)r&r')rrAssertionErrorrrrrr )rxrZlmdrnkkwrLokrrrrs(      zMetadata._from_legacyrrrpython.detailsr&r r!r!python.project project_urlsHomez Home-pagecontactsrr$emailz Author-emailrrc Csdd}|jr|j stt}|j}x|jjD]v\}}t|tsZ||kr||||<q2|}d}x8|D]0}y ||}Wqhtt fk rd}PYqhXqhW|r2|||<q2W||j |j } ||j |j } |jrt|j|d<t| |d<t| |d<|S)NcSst}x|D]}|jd}|jd}|d}xb|D]Z}| rN| rN|j|q2d}|r^d|}|rx|rtd||f}n|}|jdj||fq2Wq W|S)Nrrrr#z extra == "%s"z (%s) and %sr)rraddr)entriesrrrrZrlistrrKrrrprocess_entriess"      z,Metadata._to_legacy..process_entriesTFzProvides-Extraz Requires-DistzSetup-Requires-Dist)rrr(rmLEGACY_MAPPINGrTrrEr IndexErrorrrrrrsorted) rxr4rZnmdr)r+rfoundrZr1Zr2rrr _to_legacys2       zMetadata._to_legacyFTcCs||gjddkrtd|j|r`|jr4|j}n|j}|rP|j||dq|j||dn^|jrp|j}n|j}|rt j ||ddddn.t j |dd}t j ||ddddWdQRXdS) Nrz)Exactly one of path and fileobj is needed)rTro) ensure_asciiindent sort_keysrzutf-8) rprGrrr9r}rrrrdumprr)rxryrzrrZ legacy_mdrrArrrr}s" zMetadata.writecCs|jr|jj|nt|jjdg}d}x"|D]}d|kr,d|kr,|}Pq,W|dkrhd|i}|jd|n t|dt|B}t||d<dS)Nrrrrr)rrrr insertrr7)rxrralwaysentryZrsetrrrrs zMetadata.add_requirementscCs*|jpd}|jpd}d|jj|j||fS)Nz (no name)z no versionz<%s %s %s (%s)>)rdrIrrr)rxrdrIrrrrs  zMetadata.__repr__)r)r)r)r)r)rrrs)NNNrn)rdrIrrr)rN)rN)N)NN)rr,r)rr-r.r/)rr-r0rrd)rr-r0rr1)rr,r)NNFT)0rrrrrecompileZMETADATA_VERSION_MATCHERIZ NAME_MATCHERZFIELDNAME_MATCHERrZVERSION_MATCHERZSUMMARY_MATCHERrrrrr rr __slots__r|rrrZ none_listdictZ none_dictrrrr propertyr r setterrrrrrrrr5r9r}rrrrrrrHs    +* &   )  3 ) rrrrr r!r"r#r$r%r&)rrrrr'r r!r"r#r$r%r&r(r)r*r+r,)r*r+r,r(r))rrrrr'r r!r"r#r$r%r-r.r&r(r)r/r0r1r2r3r4)r1r2r3r/r4r-r.r0)rrrrr'r r!r"r#r$r%r-r.r&r(r)r/r0r1r2r3r4r5r6r7r8r9)r5r9r6r7r8)r:r,r+r*)r:)r;r<)r2r/r1)r3)r)rr(r*r,r+r/r1r2r4r0r'r7r9r8r<)r0)r")r$r-r r!)F)Ir __future__rrr1rrrrAr#rrcompatrrr rNr utilr r rIr r getLoggerrrVrrrr__all__rrrBrrrCrDrYr?rZZ _426_FIELDSZ _426_MARKERSrFr[r\rHrrrvZEXTRA_RErJr_rrTrrrrrrrrrrrjrlrmZMETADATA_FILENAMEZWHEEL_METADATA_FILENAMEZLEGACY_METADATA_FILENAMErrrrr s              J  a