Warning: session_start(): Session cannot be started after headers have already been sent in /home/tvrreohg/public_html/manga.php on line 13
3 ÝPf±—ã@sdZddlmZddlZddlmZddlZddlZddlZddl m Z m Z ddl m Z mZmZddlmZdd lmZmZdd lmZmZejeƒZGd d „d e ƒZGd d„de ƒZGdd„de ƒZGdd„de ƒZdddgZdZ dZ!ej"dƒZ#ej"dƒZ$dGZ%dHZ&dIZ'dJZ(dKZ)dLZ*dMZ+e,ƒZ-e-j.e%ƒe-j.e&ƒe-j.e(ƒe-j.e*ƒej"d8ƒZ/d9d:„Z0d;d<„Z1ddddd%ddd d!d"d#d+d,d$d&d'd-d/d0d5d1d2d*d)d(d.d3d4d6d7d=œZ2dNZ3dOZ4dPZ5dQZ6dRZ7dSZ8dTZ9e:ƒZ;ej"d>ƒZdDZ?dEZ@GdFd„de:ƒZAdS)VzImplementation of the Metadata for Python packages PEPs. Supports all metadata formats (1.0, 1.1, 1.2, and 2.0 experimental). é)Úunicode_literalsN)Úmessage_from_fileé)ÚDistlibExceptionÚ __version__)ÚStringIOÚ string_typesÚ text_type)Ú interpret)Úextract_by_keyÚ get_extras)Ú get_schemeÚPEP440_VERSION_REc@seZdZdZdS)ÚMetadataMissingErrorzA required metadata is missingN)Ú__name__Ú __module__Ú __qualname__Ú__doc__©rrú/usr/lib/python3.6/metadata.pyrsrc@seZdZdZdS)ÚMetadataConflictErrorz>Attempt to read or write metadata fields that are conflictual.N)rrrrrrrrr src@seZdZdZdS)Ú MetadataUnrecognizedVersionErrorz Unknown metadata version number.N)rrrrrrrrr$src@seZdZdZdS)ÚMetadataInvalidErrorzA metadata value is invalidN)rrrrrrrrr(srÚMetadataÚPKG_INFO_ENCODINGÚPKG_INFO_PREFERRED_VERSIONzutf-8z1.1z \|z úMetadata-VersionÚNameÚVersionÚPlatformÚSummaryÚ DescriptionÚKeywordsú Home-pageÚAuthorú Author-emailÚLicenseúSupported-PlatformÚ Classifierú Download-URLÚ ObsoletesÚProvidesÚRequiresÚ MaintainerúMaintainer-emailúObsoletes-Distú Project-URLú Provides-Distú Requires-DistúRequires-PythonúRequires-ExternalúPrivate-Versionú Obsoleted-ByúSetup-Requires-DistÚ ExtensionúProvides-Extraz"extra\s*==\s*("([^"]+)"|'([^']+)')cCs<|dkr tS|dkrtS|dkr$tS|dkr0tSt|ƒ‚dS)Nz1.0z1.1z1.2z2.0)Ú _241_FIELDSÚ _314_FIELDSÚ _345_FIELDSÚ _426_FIELDSr)ÚversionrrrÚ_version2fieldlistgsr?c Cs„dd„}g}x.|jƒD]"\}}|gddfkr.q|j|ƒqWddddg}xt|D]l}|tkrld|krl|jdƒ|tkr†d|kr†|jdƒ|tkr d|kr |jdƒ|tkrNd|krN|jdƒqNWt|ƒd krÒ|d St|ƒd krætd ƒ‚d|koö||t ƒ}d|k�o ||t ƒ}d|k�o||t ƒ}t |ƒt |ƒt |ƒd k�rFtd ƒ‚| �rl| �rl| �rlt |k�rlt S|�rvdS|�r€dSdS) z5Detect the best version depending on the fields used.cSsx|D]}||krdSqWdS)NTFr)ÚkeysÚmarkersÚmarkerrrrÚ _has_markerus z"_best_version.._has_markerÚUNKNOWNNz1.0z1.1z1.2z2.0rrzUnknown metadata setz(You used incompatible 1.1/1.2/2.0 fields)ÚitemsÚappendr:Úremover;r<r=ÚlenrÚ _314_MARKERSÚ _345_MARKERSÚ _426_MARKERSÚintr) ÚfieldsrCr@ÚkeyÚvalueZpossible_versionsZis_1_1Zis_1_2Zis_2_0rrrÚ _best_versionssB        rP)Úmetadata_versionÚnamer>ÚplatformZsupported_platformÚsummaryÚ descriptionÚkeywordsÚ home_pageÚauthorÚ author_emailÚ maintainerÚmaintainer_emailÚlicenseÚ classifierÚ download_urlÚobsoletes_distÚ provides_distÚ requires_distÚsetup_requires_distÚrequires_pythonÚrequires_externalÚrequiresÚprovidesÚ obsoletesÚ project_urlZprivate_versionZ obsoleted_byÚ extensionZprovides_extraz[^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.ú-ú Ú.z%s-%s)Ú _FILESAFEÚsubÚreplace)rRr>Z for_filenamerrrÚ_get_name_and_versionßs rpc@s eZdZdZd?dd„Zdd„Zdd „Zd d „Zd d „Zdd„Z dd„Z dd„Z dd„Z dd„Z dd„Zd@dd„Zdd„Zdd „Zd!d"„Zd#d$„ZdAd%d&„ZdBd'd(„ZdCd)d*„Zd+d,„Zefd-d.„ZdDd/d0„ZdEd1d2„Zd3d4„Zd5d6„Zd7d8„Zd9d:„Zd;d<„Z d=d>„Z!dS)FÚLegacyMetadataaaThe legacy metadata of a release. Supports versions 1.0, 1.1 and 1.2 (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 NÚdefaultcCsz|||gjdƒdkrtdƒ‚i|_g|_d|_||_|dk rH|j|ƒn.|dk r\|j|ƒn|dk rv|j|ƒ|j ƒdS)Néz'path, fileobj and mapping are exclusive) ÚcountÚ TypeErrorÚ_fieldsZrequires_filesZ _dependenciesÚschemeÚreadÚ read_fileÚupdateÚset_metadata_version)ÚselfÚpathÚfileobjÚmappingrwrrrÚ__init__øs   zLegacyMetadata.__init__cCst|jƒ|jd<dS)NzMetadata-Version)rPrv)r|rrrr{sz#LegacyMetadata.set_metadata_versioncCs|jd||fƒdS)Nz%s: %s )Úwrite)r|r~rRrOrrrÚ _write_field szLegacyMetadata._write_fieldcCs |j|ƒS)N)Úget)r|rRrrrÚ __getitem__szLegacyMetadata.__getitem__cCs |j||ƒS)N)Úset)r|rRrOrrrÚ __setitem__szLegacyMetadata.__setitem__c Cs8|j|ƒ}y |j|=Wntk r2t|ƒ‚YnXdS)N)Ú _convert_namervÚKeyError)r|rRÚ field_namerrrÚ __delitem__s   zLegacyMetadata.__delitem__cCs||jkp|j|ƒ|jkS)N)rvr‡)r|rRrrrÚ __contains__s zLegacyMetadata.__contains__cCs(|tkr |S|jddƒjƒ}tj||ƒS)NrjÚ_)Ú _ALL_FIELDSroÚlowerÚ _ATTR2FIELDrƒ)r|rRrrrr‡szLegacyMetadata._convert_namecCs|tks|tkrgSdS)NrD)Ú _LISTFIELDSÚ_ELEMENTSFIELD)r|rRrrrÚ_default_value%szLegacyMetadata._default_valuecCs&|jdkrtjd|ƒStjd|ƒSdS)Nú1.0ú1.1Ú )r“r”)rQÚ_LINE_PREFIX_PRE_1_2rnÚ_LINE_PREFIX_1_2)r|rOrrrÚ_remove_line_prefix*s  z"LegacyMetadata._remove_line_prefixcCs|tkr||St|ƒ‚dS)N)r�ÚAttributeError)r|rRrrrÚ __getattr__0szLegacyMetadata.__getattr__FcCst|d|d|ƒS)zhReturn the distribution name with version. If filesafe is true, return a filename-escaped form.rr)rp)r|ZfilesaferrrÚ get_fullname;szLegacyMetadata.get_fullnamecCs|j|ƒ}|tkS)z+return True if name is a valid metadata key)r‡r�)r|rRrrrÚis_fieldAs zLegacyMetadata.is_fieldcCs|j|ƒ}|tkS)N)r‡r�)r|rRrrrÚis_multi_fieldFs zLegacyMetadata.is_multi_fieldc Cs.tj|ddd�}z|j|ƒWd|jƒXdS)z*Read the metadata values from a file path.Úrzutf-8)ÚencodingN)ÚcodecsÚopenryÚclose)r|ÚfilepathÚfprrrrxJszLegacyMetadata.readcCsœt|ƒ}|d|jd<xxtD]p}||kr*q|tkrh|j|ƒ}|tkrZ|dk rZdd„|Dƒ}|j||ƒq||}|dk r|dkr|j||ƒqW|jƒdS)z,Read the metadata values from a file object.zmetadata-versionzMetadata-VersionNcSsg|]}t|jdƒƒ‘qS)ú,)ÚtupleÚsplit)Ú.0rOrrrú _sz,LegacyMetadata.read_file..rD)rrvr�r�Zget_allÚ_LISTTUPLEFIELDSr…r{)r|ZfileobÚmsgÚfieldÚvaluesrOrrrryRs  zLegacyMetadata.read_filec Cs0tj|ddd�}z|j||ƒWd|jƒXdS)z&Write the metadata fields to filepath.Úwzutf-8)rŸN)r r¡Ú write_filer¢)r|r£Ú skip_unknownr¤rrrr�hszLegacyMetadata.writecCsÌ|jƒx¾t|dƒD]®}|j|ƒ}|r:|dgdgfkr:q|tkrX|j||dj|ƒƒq|tkr’|dkrŒ|jd kr€|jddƒ}n |jdd ƒ}|g}|t kr¨d d „|Dƒ}x|D]}|j|||ƒq®WqWd S)z0Write the PKG-INFO format data to a file object.zMetadata-VersionrDr¥r!ú1.0ú1.1r•z z |cSsg|]}dj|ƒ‘qS)r¥)Újoin)r¨rOrrrr©„sz-LegacyMetadata.write_file..N)r±r²) r{r?rƒr‘r‚r³r�rQrorª)r|Z fileobjectr°r¬r­rOrrrr¯ps$    zLegacyMetadata.write_filec s‚‡fdd„}|snHt|dƒr>x<|jƒD]}||||ƒq&Wnx|D]\}}|||ƒqDW|r~x|jƒD]\}}|||ƒqhWdS)a…Set 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|rˆjˆj|ƒ|ƒdS)N)r�r…r‡)rNrO)r|rrÚ_set“s z#LegacyMetadata.update.._setr@N)Úhasattrr@rE)r|ÚotherÚkwargsr´ÚkÚvr)r|rrz‰s  zLegacyMetadata.updatecCsn|j|ƒ}|tks|dkrPt|ttfƒ rPt|tƒrJdd„|jdƒDƒ}q~g}n.|tkr~t|ttfƒ r~t|tƒrz|g}ng}tj t j ƒ�rB|d}t |j ƒ}|tkrâ|dk râx’|D](}|j|jdƒdƒs´tjd |||ƒq´Wn`|tkoð|dk �r|j|ƒ�sBtjd |||ƒn0|tk�rB|dk �rB|j|ƒ�sBtjd |||ƒ|tk�r`|d k�r`|j|ƒ}||j|<dS) z"Control then set a metadata field.rcSsg|] }|jƒ‘qSr)Ústrip)r¨r¹rrrr©¬sz&LegacyMetadata.set..r¥rNú;rz$'%s': '%s' is not valid (field '%s')z.'%s': '%s' is not a valid version (field '%s')r!)r‡r‘Ú isinstanceÚlistr¦rr§r�ÚloggerZ isEnabledForÚloggingZWARNINGr rwÚ_PREDICATE_FIELDSÚis_valid_matcherÚwarningÚ_VERSIONS_FIELDSÚis_valid_constraint_listÚ_VERSION_FIELDSÚis_valid_versionÚ_UNICODEFIELDSr˜rv)r|rRrOZ project_namerwr¹rrrr…¥s@            zLegacyMetadata.setcCsÎ|j|ƒ}||jkr*|tkr&|j|ƒ}|S|tkr@|j|}|S|tkrž|j|}|dkr^gSg}x6|D].}|tkr€|j|ƒqh|j|d|dfƒqhW|S|tkrÄ|j|}t |t ƒrÄ|j dƒS|j|S)zGet a metadata field.Nrrr¥) r‡rvÚ_MISSINGr’rÇr�rªrFr‘r¼rr§)r|rRrrrOÚresÚvalrrrrƒÑs.          zLegacyMetadata.getc s |jƒgg}}xd D]}||kr|j|ƒqW|rT|gkrTddj|ƒ}t|ƒ‚xdD]}||krZ|j|ƒqZW|ddkrˆ||fSt|jƒ‰‡fd d „}xdt|ftˆjft ˆj ffD]F\}}x<|D]4} |j | d ƒ} | d k oè|| ƒ rÈ|jd | | fƒqÈWqºW||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|jdƒdƒsdSqWdS)Nr»rFT)rÁr§)rOr¹)rwrrÚare_valid_constraintss z3LegacyMetadata.check..are_valid_constraintsNzWrong value for '%s': %s)rr)rËr$) r{rFr³rr rwrÀrÃrÄrÅrÆrƒ) r|ÚstrictÚmissingÚwarningsÚattrr«rÌrMZ controllerr¬rOr)rwrÚcheckîs2         zLegacyMetadata.checkcCsì|jƒdB}i}x,|D]$\}}| s.||jkr||||<qW|ddk�r¢dK}x–|D]F\}}| sn||jkrV|d&k�r†||||<qVd,d-„||Dƒ||<qVWnF|dd.k�rèdO}x2|D]*\}}| �sÖ||jk�rº||||<�qºW|S)PzºReturn 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). rQúMetadata-VersionrRrr>rrTr rWú Home-pagerXr$rYú Author-emailr\r&rUr!rVr"rSrÚ classifiersr(r^ú Download-URLz1.2raú Requires-DistrcúRequires-PythonrdúRequires-Externalr`ú Provides-Distr_úObsoletes-Distrhú Project-URLrZr-r[úMaintainer-emailcSsg|]}dj|ƒ‘qS)r¥)r³)r¨Úurrrr©Gsz)LegacyMetadata.todict..z1.1rfr+rer,rgr*©rQrÒ©rRr©r>r©rTr ©rWrÓ©rXr$©rYrÔ©r\r&©rUr!©rVr"©rSr©rÕr(©r^rÖ) rßràrárârãrärårærçrèrérêrë©rarשrcrØ©rdrÙ©r`rÚ©r_rÛ©rhrÜ©rZr-©r[rÝ)rìrírîrïrðrñròró©rfr+©rer,©rgr*)rôrõrö)r{rv)r|Z skip_missingZ mapping_1_0ÚdatarNr‰Z mapping_1_2Z mapping_1_1rrrÚtodictsP zLegacyMetadata.todictcCs<|ddkr(xdD]}||kr||=qW|d|7<dS)NzMetadata-Versionz1.1r*r,r+z Requires-Dist)r*r,r+r)r|Ú requirementsr¬rrrÚadd_requirementsUs    zLegacyMetadata.add_requirementscCstt|dƒƒS)NzMetadata-Version)r½r?)r|rrrr@`szLegacyMetadata.keysccsx|jƒD] }|Vq WdS)N)r@)r|rNrrrÚ__iter__cszLegacyMetadata.__iter__cs‡fdd„ˆjƒDƒS)Ncsg|] }ˆ|‘qSrr)r¨rN)r|rrr©hsz)LegacyMetadata.values..)r@)r|r)r|rr­gszLegacyMetadata.valuescs‡fdd„ˆjƒDƒS)Ncsg|]}|ˆ|f‘qSrr)r¨rN)r|rrr©ksz(LegacyMetadata.items..)r@)r|r)r|rrEjszLegacyMetadata.itemscCsd|jj|j|jfS)Nz <%s %s %s>)Ú __class__rrRr>)r|rrrÚ__repr__ms zLegacyMetadata.__repr__)NNNrr)F)F)F)N)F)F)"rrrrr€r{r‚r„r†rŠr‹r‡r’r˜ršr›rœr�rxryr�r¯rzr…rÈrƒrÑrørúr@rûr­rErýrrrrrqìs>      ,  , ; rqz pydist.jsonz metadata.jsonc@s’eZdZdZejdƒZejdejƒZe Z ejdƒZ dZ de ZffdIdœZd Zd ZeffedJfe dKfe dLfd œZdMZdNdd„ZedOƒZdefZdefZdefdefeeedefeeeedefdPdQdœ Z[[dd „ZdRd!d"„Zd#d$„Zed%d&„ƒZ ed'd(„ƒZ!e!j"d)d(„ƒZ!dSd*d+„Z#ed,d-„ƒZ$ed.d/„ƒZ%e%j"d0d/„ƒZ%d1d2„Z&d3d4„Z'd5d6„Z(d7d8„Z)d9d:d;dœZ*d?d@„Z+dTdCdD„Z,dEdF„Z-dGdH„Z.dS)UrzÊ The metadata of a release. This implementation uses 2.0 (JSON) 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 .{1,2047}z2.0z distlib (%s)Úlegacy)rRr>rTzqname 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)rQrRr>rTÚ_legacyÚ_datarwNrrcCs0|||gjdƒdkrtdƒ‚d|_d|_||_|dk rzy|j||ƒ||_Wn*tk rvt||d�|_|jƒYnXn²d}|r¢t |dƒ�}|j ƒ}WdQRXn |r®|j ƒ}|dkrÈ|j |j dœ|_ndt |tƒsÜ|jdƒ}ytj|ƒ|_|j|j|ƒWn0tk �r*tt|ƒ|d�|_|jƒYnXdS)Nrsz'path, fileobj and mapping are exclusive)rrwÚrb)rQÚ generatorzutf-8)r~rw)rtrurÿrrwÚ_validate_mappingrrqÚvalidater¡rxÚMETADATA_VERSIONÚ GENERATORr¼r ÚdecodeÚjsonÚloadsÚ ValueErrorr)r|r}r~rrwr÷Úfrrrr€ s<       zMetadata.__init__rRr>r\rVrTz Requires-DistzSetup-Requires-DistzProvides-Extrar(ú Download-URLúMetadata-Version) Ú run_requiresÚbuild_requiresÚ dev_requiresZ test_requiresÚ meta_requiresÚextrasÚmodulesÚ namespacesÚexportsÚcommandsrÕZ source_urlrQc CsZtj|dƒ}tj|dƒ}||k�r||\}}|jr^|dkrP|dkrHdn|ƒ}n |jj|ƒ}n¼|dkrjdn|ƒ}|d krˆ|jj||ƒ}n’tƒ}|}|jjdƒ} | �r |dkrº| jd |ƒ}nR|dkrÞ| jd ƒ} | rÜ| j||ƒ}n.| jd ƒ} | �sú|jjd ƒ} | �r | j||ƒ}||k�rV|}n:||k�r4tj||ƒ}n"|j�rJ|jj|ƒ}n |jj|ƒ}|S) NÚ common_keysÚ mapped_keysrrrrrÕÚ extensionszpython.commandszpython.detailszpython.exports)rrrrrÕ)ÚobjectÚ__getattribute__rÿrƒr) r|rNÚcommonÚmappedÚlkZmakerÚresultrOÚsentinelÚdrrrräsF            zMetadata.__getattribute__cCsH||jkrD|j|\}}|p |j|krD|j|ƒ}|sDtd||fƒ‚dS)Nz.'%s' is an invalid value for the '%s' property)ÚSYNTAX_VALIDATORSrwÚmatchr)r|rNrOrwÚpatternÚ exclusionsÚmrrrÚ_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||krÖtj|||ƒnP|d k�rt|t ƒ�r|j ƒ}|�r|j ƒ}ng}|j�r||j|<n ||j|<dS)NrrrrrrrÕrzpython.commandszpython.detailszpython.exportsrV)rrrrrÕ) r'rrrÿÚNotImplementedErrorrÚ setdefaultÚ __setattr__r¼rrºr§)r|rNrOrrrrŒr!rrrr*s>               zMetadata.__setattr__cCst|j|jdƒS)NT)rprRr>)r|rrrÚname_and_version@szMetadata.name_and_versioncCsF|jr|jd}n|jjdgƒ}d|j|jf}||krB|j|ƒ|S)Nz Provides-Distrfz%s (%s))rÿrr)rRr>rF)r|rÚsrrrrfDs  zMetadata.providescCs |jr||jd<n ||jd<dS)Nz Provides-Distrf)rÿr)r|rOrrrrfOs c Csâ|jr |}nÒg}t|pg|jƒ}xl|D]d}d|kr@d|kr@d}n8d|krNd}n|jdƒ|k}|rx|jdƒ}|rxt||ƒ}|r&|j|dƒq&WxNd D]F}d|} | |kr”|j| ƒ|jjd |gƒ}|j|j|||d �ƒq”W|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Ú environmentTreÚbuildÚdevÚtestz:%s:z %s_requires)rÚenv)r/r0r1) rÿr rrƒr ÚextendrGrÚget_requirements) r|Úreqtsrr2rr!ÚincluderBrNÚerrrr4Vs0       zMetadata.get_requirementscCs|jr|jƒS|jS)N)rÿÚ _from_legacyr)r|rrrÚ dictionary€szMetadata.dictionarycCs|jr t‚nt|j|jƒSdS)N)rÿr(r rÚDEPENDENCY_KEYS)r|rrrÚ dependencies†szMetadata.dependenciescCs|jr t‚n |jj|ƒdS)N)rÿr(rrz)r|rOrrrr;�sc CsŽ|jdƒ|jkrtƒ‚g}x0|jjƒD]"\}}||kr&||kr&|j|ƒq&W|rfddj|ƒ}t|ƒ‚x"|jƒD]\}}|j|||ƒqpWdS)NrQzMissing metadata items: %sz, ) rƒrrÚMANDATORY_KEYSrErFr³rr') r|rrwrÎrNr%r«r¸r¹rrrr”szMetadata._validate_mappingcCsB|jr.|jjdƒ\}}|s|r>tjd||ƒn|j|j|jƒdS)NTz#Metadata: missing: %s, warnings: %s)rÿrÑr¾rÂrrrw)r|rÎrÏrrrr¢s  zMetadata.validatecCs(|jr|jjdƒSt|j|jƒ}|SdS)NT)rÿrør rÚ INDEX_KEYS)r|rrrrrø«s zMetadata.todictc Cs¾|j|jdœ}|jjdƒ}x2dD]*}||kr |dkr:d }n|}||||<q W|jd gƒ}|d gkrhg}||d <d}x2|D]*\}}||krz||rzd||ig||<qzW|j|d<i}i} |S)N)rQrTrRr>r\rTrUr]rÕr"ÚrVrarrbrrerf)rRr>r\rTrUr]©rar©rbr)r?r@)rrrÿrørƒrf) r|rZlmdr¸ÚnkÚkwr@ÚokrXrZrrrr8²s.     zMetadata._from_legacyrrr&r r!)rRr>r\rTrUrÕcCs�dd„}tƒ}|j}x*|jjƒD]\}}||kr ||||<q W||j|jƒ}||j|jƒ}|jrtt |jƒ|d<t |ƒ|d<t |ƒ|d<|S)NcSs˜tƒ}xŒ|D]„}|jdƒ}|jdƒ}|d}xb|D]Z}| rN| rN|j|ƒq2d}|r^d|}|rx|rtd||f}n|}|jdj||fƒƒq2Wq W|S)Nr-r.rer>z extra == "%s"z (%s) and %sr»)r…rƒÚaddr³)Zentriesr5r7r-r2ZrlistržrBrrrÚprocess_entriesÙs"      z,Metadata._to_legacy..process_entrieszProvides-Extraz Requires-DistzSetup-Requires-Dist) rqrÚLEGACY_MAPPINGrErrrrrÚsorted)r|rErZnmdrArCZr1Zr2rrrÚ _to_legacyØs  zMetadata._to_legacyFTcCsÂ||gjdƒdkrtdƒ‚|jƒ|r`|jr4|j}n|jƒ}|rP|j||d�q¾|j||d�n^|jrp|jƒ}n|j}|r�t j ||dddd�n.t j |ddƒ�}t j ||dddd�WdQRXdS) Nrz)Exactly one of path and fileobj is needed)r°Trs)Z ensure_asciiÚindentZ sort_keysr®zutf-8) rtr rrÿrHr�r¯r8rrÚdumpr r¡)r|r}r~rþr°Z legacy_mdr!r rrrr�ýs&    zMetadata.writecCsŒ|jr|jj|ƒnt|jjdgƒ}d}x"|D]}d|kr,d|kr,|}Pq,W|dkrhd|i}|jd|ƒn t|dƒt|ƒB}t|ƒ|d<dS)Nrr.r-rer)rÿrúrr)Úinsertr…rG)r|rùrÚalwaysÚentryZrsetrrrrús zMetadata.add_requirementscCs*|jpd}|jpd}d|jj|j||fS)Nz (no name)z no versionz<%s %s %s (%s)>)rRr>rürrQ)r|rRr>rrrrý(s  zMetadata.__repr__)rþ)rþ)rþ)rþ)rÿrrw)NNNrr)rRr>r\rVrT)r N)r N)N)NN)NNFT)/rrrrÚreÚcompileZMETADATA_VERSION_MATCHERÚIZ NAME_MATCHERrZVERSION_MATCHERZSUMMARY_MATCHERrrrr<r=r:r"Ú __slots__r€r…rr½Z none_listÚdictZ none_dictrrr'r*Úpropertyr+rfÚsetterr4r9r;rrrør8rFrHr�rúrýrrrrrvsx    ,+ '   *   % ) 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)r2r/r1)r3)r)rr(r*r,r+r/r1r2r4r0r'r7r9r8)r0)r")r$r-r r!)F)BrZ __future__rr Zemailrrr¿rNr>rrÚcompatrrr rAr Úutilr r r>r rZ getLoggerrr¾rrrrÚ__all__rrrOr—r–r:r;rIr<rJr=rKr…r�rzZEXTRA_REr?rPr�rÀrÃrÅr�rªr‘rÇrrÈrmrprqZMETADATA_FILENAMEZWHEEL_METADATA_FILENAMErrrrrÚ sà             9