Ë  ¡ ;æÝöãóð—dZddlmZddlZddlmZddlZddlZddlZddl m Z m Z ddl m Z mZmZddlmZdd lmZmZdd lmZmZej0e«ZGd „d e «ZGd „de «ZGd„de «ZGd„de «Zgd¢ZdZ dZ!ejDd«Z#ejDd«Z$dZ%dZ&dZ'dZ(dZ)dZ*dZ+e*dzZ,d Z-d!Z.e,e.zZ/e0«Z1e1jee%«e1jee&«e1jee(«e1jee*«e1jee,«e1jee/«ejDd"«Z3d#„Z4d$„Z5e1D�cic]#}|jm«jod%d&«|“Œ%c}Z8e8js«D��cic]\}}||“Œ c}}Z:d'Z;d(Zd+Z?d,Z@d-ZAeB«ZCejDd.«ZDd7d/„ZEGd0„d1eB«ZFd2ZGd3ZHd4ZIGd5„d6eB«ZJycc}wcc}}w)8zzImplementation 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_schemeÚPEP440_VERSION_REcó—eZdZdZy)ÚMetadataMissingErrorzA required metadata is missingN©Ú__name__Ú __module__Ú __qualname__Ú__doc__©óú5/usr/lib/python3.12/site-packages/distlib/metadata.pyrrs„Ú(rrcó—eZdZdZy)ÚMetadataConflictErrorz>Attempt to read or write metadata fields that are conflictual.Nrrrrrr s„ÚHrrcó—eZdZdZy)Ú MetadataUnrecognizedVersionErrorz Unknown metadata version number.Nrrrrrr$s„Ú*rrcó—eZdZdZy)ÚMetadataInvalidErrorzA metadata value is invalidNrrrrrr(s„Ú%rr)ÚMetadataÚPKG_INFO_ENCODINGÚPKG_INFO_PREFERRED_VERSIONúutf-8ú1.1z \|ú ) úMetadata-VersionÚNameÚVersionÚPlatformÚSummaryÚ DescriptionÚKeywordsú Home-pageÚAuthorú Author-emailÚLicense)r&r'r(r)úSupported-Platformr*r+r,r-r.r/r0Ú Classifierú Download-URLÚ ObsoletesÚProvidesÚRequires)r4r5r6r2r3)r&r'r(r)r1r*r+r,r-r.r/Ú MaintainerúMaintainer-emailr0r2r3úObsoletes-Distú Project-URLú Provides-Distú Requires-DistúRequires-PythonúRequires-External)r;r<r=r9r>r7r8r:)r&r'r(r)r1r*r+r,r-r.r/r7r8r0r2r3r9r:r;r<r=r>úPrivate-Versionú Obsoleted-ByúSetup-Requires-DistÚ ExtensionúProvides-Extra)r?rCr@rArB)úDescription-Content-Typer6r5r4)rD)ÚDynamicú License-Filez"extra\s*==\s*("([^"]+)"|'([^']+)')cóÒ—|dk(rtS|dk(rtS|dk(rtS|dvrttd„tD««zS|dk(r t d«‚|dk(rt St|«‚) Nú1.0r$ú1.2)ú1.3ú2.1c3ó2K—|]}|tvsŒ |–—Œy­w©N)Ú _345_FIELDS)Ú.0Úfs rÚ z%_version2fieldlist..sèø€Ð"R©k¨¸QÄkÒ=Q¤1©kùs‚ �ú2.0z+Metadata 2.0 is withdrawn and not supportedú2.2)Ú _241_FIELDSÚ _314_FIELDSrNÚtupleÚ _566_FIELDSÚ ValueErrorÚ _643_FIELDSr)Úversions rÚ_version2fieldlistr[vsw€Ø�%ÒÜÐØ �EÒ ÜÐØ �EÒ ÜÐØ �NÑ "äœUÑ"R­kÓ"RÓRÑRÐRØ �EÒ ÜÐFÓGÐGà �EÒ ÜÐÜ *¨7Ó 3Ð3rcóΗd„}|j«D��cgc]\}}|gddfvsŒ|‘Œ}}}gd¢}|D�]>}|tvr+d|vr'|jd«tj d|«|t vr+d|vr'|jd«tj d|«|t vr+d |vr'|jd «tj d |«|tvr+d |vr'|jd «tj d |«|tvr0d |vr,|dk7r'|jd «tj d|«|tvs�Œd|vs�Œ|jd«tj d|«�ŒAt|«dk(r|dSt|«dk(r!tj d|«td«‚d|vxr ||t«}d |vxr ||t«}d |vxr ||t«}d|vxr ||t«} t|«t|«zt|«zt| «zdkDr td«‚|s|s|s| st |vrt S|ry|ry |ry ycc}}w)z5Detect the best version depending on the fields used.có,‡—tˆfd„|D««S)Nc3ó&•K—|]}|‰v–—Œ y­wrMr)rOÚmarkerÚkeyss €rrQz5_best_version.._has_marker..‹søèø€Ð8± f�6˜T”>±ùsƒ)Úany)r`Úmarkerss` rÚ _has_markerz"_best_version.._has_markerŠsø€ÜÓ8±Ó8Ó8Ð8rÚUNKNOWNN)rHr$rIrJrKrSrHzRemoved 1.0 due to %sr$zRemoved 1.1 due to %srIzRemoved 1.2 due to %srJzRemoved 1.3 due to %srKr+zRemoved 2.1 due to %srSzRemoved 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)ÚitemsrTÚremoveÚloggerÚdebugrUrNrWrYÚlenrÚ _314_MARKERSÚ _345_MARKERSÚ _566_MARKERSÚ _643_MARKERSÚintr") ÚfieldsrcÚkeyÚvaluer`Úpossible_versionsÚis_1_1Úis_1_2Úis_2_1Úis_2_2s rÚ _best_versionrwˆsk€ò9ð#)§,¡,¤.Ô W¡.‘J�C˜°EÀ"ÀiÐQUÐAVÒ4VŠC .€DÑ WÚBÐôˆØ ”kÑ ! eÐ/@Ñ&@Ø × $Ñ $ UÔ +Ü �L‰LÐ0°#Ô 6Ø ”kÑ ! eÐ/@Ñ&@Ø × $Ñ $ UÔ +Ü �L‰LÐ0°#Ô 6Ø ”kÑ ! eÐ/@Ñ&@Ø × $Ñ $ UÔ +Ü �L‰LÐ0°#Ô 6Ø ”kÑ ! eÐ/@Ñ&@Ø × $Ñ $ UÔ +Ü �L‰LÐ0°#Ô 6Ø ”kÑ ! eÐ/@Ñ&@Ø�mÒ#Ø!×(Ñ(¨Ô/Ü— ‘ Ð4°cÔ:Ø ”kÓ ! eÐ/@Ó&@Ø × $Ñ $ UÔ +Ü �L‰LÐ0°#Ö 6ð'ô2 Ð Ó Ò"Ø  Ñ#Ð#Ü Ð Ó  1Ò $Ü� ‰ Ð@À&ÔIÜ#Ð$:Ó;Ð;ðÐ'Ð 'Ò K©K¸¼lÓ,K€FØ Ð'Ð 'Ò K©K¸¼lÓ,K€FØ Ð'Ð 'Ò K©K¸¼lÓ,K€Fà Ð'Ð 'Ò K©K¸¼lÓ,K€FÜ ˆ6ƒ{”S˜“[Ñ ¤3 v£;Ñ.´°V³Ñ<¸qÒ@Ü#Ð$RÓSÐSñ ™&©¹ä %Ð):Ñ :Ü-Ð -Ù ØÙ ØÙ Øð ùó Xs —I!§I!Ú-Ú_)r<r9r;)r=)r()r)r2r4r6r5r9r;r<r>r:r1rArCrBrF)r:)r,)r.r7r*r+z[^A-Za-z0-9.]+cóŒ—|rÓ?ˆÚ™GÐ $Ð$rcóÔ—eZdZdZ d d„Zd„Zd„Zd„Zd„Zd„Z d „Z d „Z d „Z d „Z d „Zd!d„Zd„Zd„Zd„Zd„Zd!d„Zd!d„Zd"d„Zd„Zefd„Zd!d„Zd!d„Zd„Zd„Zd„Zd„Zd„Z d„Z!y)#ÚLegacyMetadataaoThe 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 Ncó—|||gjd«dkr td«‚i|_g|_d|_||_|�|j |«y|�|j|«y|�"|j|«|j«yy)Néú'path, fileobj and mapping are exclusive) ÚcountÚ TypeErrorÚ_fieldsÚrequires_filesÚ _dependenciesÚschemeÚreadÚ read_fileÚupdateÚset_metadata_version)ÚselfÚpathÚfileobjÚmappingr�s rÚ__init__zLegacyMetadata.__init__sŒ€à �'˜7Ð #× )Ñ )¨$Ó /°!Ò 3ÜÐEÓFÐ F؈Œ Ø ˆÔØ!ˆÔ؈Œ Ø Ð Ø �I‰I�d�OØ Ð Ø �N‰N˜7Õ #Ø Ð Ø �K‰K˜Ô Ø × %Ñ %Õ 'ð!rcóH—t|j«|jd<y©Nr&)rwrŠ©r’s rr‘z#LegacyMetadata.set_metadata_versions€Ü+8¸¿¹Ó+Fˆ� ‰ Ð'Ò(rcó2—|j|›d|›d�«y)Nz: Ú )Úwrite)r’r”r€rqs rÚ _write_fieldzLegacyMetadata._write_fields€Ø� ‰ ¢Dª%Ð0Õ1rcó$—|j|«SrM)Úget©r’r€s rÚ __getitem__zLegacyMetadata.__getitem__s€Ø�x‰x˜‹~Ðrcó&—|j||«SrM)Úset)r’r€rqs rÚ __setitem__zLegacyMetadata.__setitem__s€Ø�x‰x˜˜eÓ$Ð$rcór—|j|«} |j|=y#t$r t|«‚wxYwrM)Ú _convert_namerŠÚKeyError)r’r€Ú field_names rÚ __delitem__zLegacyMetadata.__delitem__s<€Ø×'Ñ'¨Ó-ˆ ð !Ø— ‘ ˜ZÑ(øÜò !ܘ4“.Ð ð !ús“ !¡6có\—||jvxs|j|«|jvSrM)rŠr¦r s rÚ __contains__zLegacyMetadata.__contains__$s/€Ø˜Ÿ ™ Ð$ò9Ø×"Ñ" 4Ó(¨D¯L©LÐ8ð :rcó‚—|tvr|S|jdd«j«}tj ||«S)Nrxry)Ú _ALL_FIELDSrÚlowerÚ _ATTR2FIELDrŸr s rr¦zLegacyMetadata._convert_name(s9€Ø ”;Ñ ØˆKØ�|‰|˜C Ó%×+Ñ+Ó-ˆÜ�‰˜t TÓ*Ð*rcó(—|tvs|tvrgSy)Nrd)Ú _LISTFIELDSÚ_ELEMENTSFIELDr s rÚ_default_valuezLegacyMetadata._default_value.s€Ø ”;Ñ  $¬.Ñ"8؈IØrcóv—|jdvrtjd|«Stjd|«S)N©rHr$r›)Úmetadata_versionÚ_LINE_PREFIX_PRE_1_2r~Ú_LINE_PREFIX_1_2©r’rqs rÚ_remove_line_prefixz"LegacyMetadata._remove_line_prefix3s6€Ø × Ñ  NÑ 2Ü'×+Ñ+¨D°%Ó8Ð 8ä#×'Ñ'¨¨eÓ4Ð 4rcó2—|tvr||St|«‚rM)r¯ÚAttributeErrorr s rÚ __getattr__zLegacyMetadata.__getattr__9s€Ø ”;Ñ Ø˜‘:РܘTÓ"Ð"rcó(—t|d|d|«S)zhReturn the distribution name with version. If filesafe is true, return a filename-escaped form.r'r()r‚)r’Úfilesafes rÚ get_fullnamezLegacyMetadata.get_fullnameDs€ô% T¨&¡\°4¸ ±?ÀHÓMÐMrcó4—|j|«}|tvS)z+return True if name is a valid metadata key)r¦r­r s rÚis_fieldzLegacyMetadata.is_fieldJs€à×!Ñ! $Ó'ˆØ”{Ð"Ð"rcó4—|j|«}|tvSrM)r¦r±r s rÚis_multi_fieldzLegacyMetadata.is_multi_fieldOs€Ø×!Ñ! $Ó'ˆØ”{Ð"Ð"rcó¢—tj|dd¬«} |j|«|j«y#|j«wxYw)z*Read the metadata values from a file path.Úrr#©ÚencodingN)ÚcodecsÚopenr�Úclose)r’ÚfilepathÚfps rrŽzLegacyMetadata.readSs8€ä �[‰[˜ 3°Ô 9ˆð Ø �N‰N˜2Ô à �H‰H�JøˆB�H‰H�Jús š<¼Ac ó¢—t|«}|d|jd<tD]„}||vrŒ|tvrU|j |«}|t vr)|�'|D�cgc]}t |jd««‘Œ}}|j||«Œe||}|€Œm|dk7sŒs|j||«Œ†|j«}|r||d<y|d|d<ycc}w)z,Read the metadata values from a file object.zmetadata-versionr&NÚ,rdr+) rrŠr­r±Úget_allÚ_LISTTUPLEFIELDSrVÚsplitr£Ú get_payload)r’ÚfileobÚmsgÚfieldÚvaluesrqÚbodys rr�zLegacyMetadata.read_file[sà€ä Ó'ˆØ+.Ð/AÑ+Bˆ� ‰ Ð'Ñ(÷!ˆEؘCÑØØœ Ñ#àŸ™ UÓ+�ØÔ,Ñ,°Ð1CÙCIÓJÁ6¸%œe E§K¡K°Ó$4Õ5À6�FÐJØ—‘˜ Õ'ð˜E™ �ØÑ$¨°)Ó);Ø—H‘H˜U EÕ*ð!ð"�‰Ó ˆÙ&*˜dˆˆ]Ò°°]Ñ0Cˆˆ]ÒùòKsÁ!C có¤—tj|dd¬«} |j||«|j«y#|j«wxYw)z&Write the metadata fields to filepath.Úwr#rÇN)rÉrÊÚ write_filerË)r’rÌÚ skip_unknownrÍs rrœzLegacyMetadata.writews:€ä �[‰[˜ 3°Ô 9ˆð Ø �O‰O˜B  Ô -à �H‰H�JøˆB�H‰H�Jús š=½Acóè—|j«t|d«D]Ì}|j|«}|r |dgdgfvrŒ|tvr#|j ||dj |««ŒJ|t vr;|dk(r3|jdvr|jdd«}n|jdd«}|g}|tvr|D�cgc]}dj |«‘Œ}}|D]}|j |||«ŒŒÎy cc}w) z0Write the PKG-INFO format data to a file object.r&rdrÏr+rµr›r%z |N) r‘r[rŸr²r�Újoinr±r¶rrÑ)r’Ú fileobjectrÜrÖr×rqs rrÛzLegacyMetadata.write_filesø€à ×!Ñ!Ô#ä'¨Ð-?Ñ(@ÖAˆEØ—X‘X˜e“_ˆFÙ ¨9°b¸9¸+Ð*FÑ FØØœÑ&Ø×!Ñ! *¨e°S·X±X¸fÓ5EÔFØØœKÑ'ؘMÒ)Ø×,Ñ,°Ñ>Ø!'§¡°°lÓ!C™à!'§¡°°lÓ!C˜Ø ˜�àÔ(Ñ(Ù7=Ó>±v¨e˜#Ÿ(™( 5�/°v�Ð>ã�Ø×!Ñ! *¨e°UÕ;ñ ñ%Bùò ?sÂ8C/c óà‡—ˆfd„}|snAt|d«r"|j«D]}||||«Œn|D]\}}|||«Œ|r"|j«D]\}}|||«Œyy)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. có`•—|tvr%|r"‰j‰j|«|«yyyrM)r¯r£r¦)rprqr’s €rÚ_setz#LegacyMetadata.update.._set¢s.ø€Ø”kÑ!¡eØ—‘˜×+Ñ+¨CÓ0°%Õ8ð',Ð!rr`N)Úhasattrr`re)r’ÚotherÚkwargsrâÚkÚvs` rr�zLegacyMetadata.update˜sxø€ô 9ñà Ü �U˜FÔ #Ø—Z‘Z–\�Ù�Q˜˜a™Õ!ñ"ó‘��1Ù�Q˜• ðñ ØŸ ™ ž‘��1Ù�Q˜• ñ'ð rcóœ—|j|«}|tvs|dk(rVt|ttf«s@t|t «r-|j d«D�cgc]}|j«‘Œ}}n7g}n4|tvr,t|ttf«st|t «r|g}ng}tjtj«rÏ|d}t|j«}|tvrF|�D|D]>}|j!|j d«d«rŒ'tj#d|||«Œ@ng|t$vr,|�*|j'|«sLtj#d|||«n3|t(vr+|�)|j+|«stj#d|||«|t,vr|d k(r|j/|«}||j0|<ycc}w) z"Control then set a metadata field.r)rÏr'NÚ;rz$'%s': '%s' is not valid (field '%s')z.'%s': '%s' is not a valid version (field '%s')r+)r¦r²Ú isinstanceÚlistrVr rÒÚstripr±rgÚ isEnabledForÚloggingÚWARNINGrr�Ú_PREDICATE_FIELDSÚis_valid_matcherÚwarningÚ_VERSIONS_FIELDSÚis_valid_constraint_listÚ_VERSION_FIELDSÚis_valid_versionÚ_UNICODEFIELDSrºrŠ)r’r€rqrçÚ project_namer�s rr£zLegacyMetadata.set´s›€à×!Ñ! $Ó'ˆà ”^Ñ # t¨zÒ'9ܘ5¤4¬ -Ô0ܘ%¤Ô.Ø,1¯K©K¸Ô,<Ó=Ñ,< q˜Ÿ™�Ð,<�Ñ=à‘Ø”kÑ!ܘU¤T¬5 MÔ2ܘ%¤Ô.ؘ‘à�ä × Ñ œwŸ™Ô /Ø ™<ˆLä § ¡ Ó,ˆFØÔ(Ñ(¨UÐ->Û�Aà!×2Ñ2°1·7±7¸3³<À±?ÕCÜŸ™ØBØ(¨!¨Tõ3ñðÔ)Ñ)¨eÐ.?Ø×6Ñ6°uÔ=Ü—N‘NÐ#SØ#/°¸õ>àœÑ(¨UÐ->Ø×.Ñ.¨uÔ5Ü—N‘NÐ#SØ#/°¸ô>ð ”>Ñ !Ø�}Ò$Ø×0Ñ0°Ó7�à"ˆ� ‰ �TÒùòG>sÁG cóè—|j|«}||jvr|tur|j|«}|S|tvr|j|}|S|t vrQ|j|}|€gSg}|D]5}|t vr|j|«Œ|j|d|df«Œ7|S|tvr0|j|}t|t«r|jd«S|j|S)zGet a metadata field.rrrÏ) r¦rŠÚ_MISSINGr³r÷r±rÑÚappendr²rêr rÒ)r’r€ÚdefaultrqÚresÚvals rrŸzLegacyMetadata.getàsù€à×!Ñ! $Ó'ˆØ �t—|‘|Ñ #Øœ(Ñ"Ø×-Ñ-¨dÓ3�؈NØ ”>Ñ !Ø—L‘L Ñ&ˆE؈LØ ”[Ñ Ø—L‘L Ñ&ˆE؈}Ø� ؈CÛ�ØÔ/Ñ/Ø—J‘J˜s•Oð—J‘J  A¡¨¨A©Ð/Õ0ð ð ˆJà ”^Ñ #Ø—L‘L Ñ&ˆEܘ%¤Ô.Ø—{‘{ 3Ó'Ð'Ø�|‰|˜DÑ!Ð!rcó‡ —|j«gg}}dD]}||vsŒ|j|«Œ|r$|gk7rddj|«z}t|«‚dD]}||vsŒ|j|«Œ|ddk7r||fSt |j «Š ˆ fd„}t |ft‰ jft‰ jffD]A\}}|D]7} |j| d«} | €Œ|| «rŒ!|jd | ›d | ›�«Œ9ŒC||fS) zkCheck if the metadata is compliant. If strict is True then raise if no Name or Version are provided)r'r(zmissing required metadata: %sú, )r-r.r&rIcó^•—|D]'}‰j|jd«d«rŒ'yy)NrérFT)rñrÒ)rqrçr�s €rÚare_valid_constraintsz3LegacyMetadata.check..are_valid_constraintss/ø€Û�Ø×.Ñ.¨q¯w©w°s«|¸A©Õ?Ù ððrNzWrong value for 'z': ) r‘rûrÞrrr�rðrórôrõrörŸ) r’ÚstrictÚmissingÚwarningsÚattrrÕrroÚ controllerrÖrqr�s @rÚcheckzLegacyMetadata.checkýs5ø€ð ×!Ñ!Ô#ð �ˆã'ˆDؘ4ÒØ—‘˜tÕ$ð(ñ �g ’mØ1°D·I±I¸gÓ4FÑFˆCÜ& sÓ+Ð +ã+ˆDؘ4ÒØ—‘˜tÕ$ð,ð Ð"Ñ # uÒ ,ؘHÐ$Ð $ä˜DŸK™KÓ(ˆô ô %6Ð7LÐ#MÜ$4Ø$*×$CÑ$Cð$Eä$3Ø$*×$;Ñ$;ð$=ó#>Ñ ˆF�Jó  �ØŸ™ ¨Ó-�ØÑ$©Z¸Õ->Ø—O’OÂ%ÉÐ$OÕPñ ð #>ð˜Ð Ð rcóø—|j«t|d«}i}|D]O}|r||jvsŒt|}|dk7r ||||<Œ+||D�cgc]}dj |«‘Œc}||<ŒQ|Scc}w)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. r&Ú project_urlrÏ)r‘r[rŠÚ _FIELD2ATTRrÞ)r’Ú skip_missingroÚdatar¨rpÚus rÚtodictzLegacyMetadata.todict)s‘€ð ×!Ñ!Ô#ä# DÐ);Ñ$<Ó=ˆàˆã ˆJÙ :°·±Ò#=Ü! *Ñ-�ؘ-Ò'Ø $ ZÑ 0�D˜’Ià6:¸:Ò6FÓ GÑ6F° §¡¨!¥Ð6FÑ G�D˜’Ið !ðˆ ùò!HsÁA7cóL—|ddk(rdD] }||vsŒ||=Œ |dxx|z cc<y)Nr&r$)r4r6r5r<r)r’Ú requirementsrÖs rÚadd_requirementszLegacyMetadata.add_requirements@s:€Ø Ð"Ñ # uÒ ,ã>�ؘD’=ؘU™ ð?ð ˆ_Ó Ñ-Ôrcó0—tt|d««Sr˜)rër[r™s rr`zLegacyMetadata.keysKs€ÜÔ& tÐ,>Ñ'?Ó@ÓAÐArc#ó>K—|j«D]}|–—Œy­wrM©r`©r’rps rÚ__iter__zLegacyMetadata.__iter__Nsèø€Ø—9‘9–;ˆCØ‹Iñùs‚cóN—|j«D�cgc]}||‘Œ c}Scc}wrMrrs rr×zLegacyMetadata.valuesRs$€Ø%)§Y¡Y¤[Ó1¡[˜c��S“  [Ñ1Ð1ùÒ1s“ "cóR—|j«D�cgc] }|||f‘Œ c}Scc}wrMrrs rrezLegacyMetadata.itemsUs)€Ø,0¯I©I¬KÓ8©K S��d˜3‘iÒ ¨KÑ8Ð8ùÒ8s“$cój—d|jj›d|j›d|j›d�S)NÚ)Ú __class__rr€rZr™s rÚ__repr__zLegacyMetadata.__repr__Xs&�Ø#Ÿ~™~×6Ó6¸¿ » Ø#Ÿ|›|ð-ð -r©NNNrü©FrM)"rrrrr–r‘r�r¡r¤r©r«r¦r³rºr½rÀrÂrÄrŽr�rœrÛr�r£rúrŸrrrr`rr×rerrrrr„r„õs«„ñð9=Ø!ó(ò Gò2òò%ò!ò:ò+ò ò 5ò #óNò #ò #òòDó8ó<ó2ò8*#ðX!)ó"ó:*!óXò..òBòò2ò9ó-rr„z pydist.jsonz metadata.jsonÚMETADATAcój—eZdZdZej d«Zej dej«Zej dej«Z e Z ej d«Z dZ dezZddd d œZd Zd Zedfed fe d fe d fe d fd œZdZ d5d„Zed«ZdefZdefZdefdefeeedefeeeedefdddœ Z[[d„Zd6d„Zd„Ze d„«Z!e d„«Z"e"jFd„«Z"d7d„Z$e d „«Z%e d!„«Z&e&jFd"„«Z&d#„Z'd$„Z(d%„Z)d&„Z*d'd(d)d*d+d,d-d.d/dd0œ Z+d1„Z,d8d2„Z-d3„Z.d4„Z/y)9r zà 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}rRz distlib (%s)r)Úlegacy)r€rZÚsummaryzqname 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)r¶r€rZr$Údynamic)Ú_legacyÚ_datar�Ncó—|||gjd«dkr td«‚d|_d|_||_|� |j ||«||_yd}|r&t|d«5}|j«}ddd«n|r|j«}|€|j|jdœ|_yt|t«s|jd«} t!j"|«|_|j |j|«y#t $r%t||¬«|_|j«YywxYw#1swYŒ´xYw#t$$r.tt'|«|¬«|_|j«YywxYw)Nr†r‡)r•r�Úrb©r¶Ú generatorr#)r”r�)rˆr‰r&r'r�Ú_validate_mappingrr„ÚvalidaterÊrŽÚMETADATA_VERSIONÚ GENERATORrêr ÚdecodeÚjsonÚloadsrXr)r’r“r”r•r�r rPs rr–zMetadata.__init__�s[€à �'˜7Ð #× )Ñ )¨$Ó /°!Ò 3ÜÐEÓFÐ F؈Œ ؈Œ ؈Œ à Ð ð Ø×&Ñ& w°Ô7Ø$�• ð ˆDÙܘ$ Ô%¨ØŸ6™6›8�D÷&Ð%áØ—|‘|“~�؈|ð)-×(=Ñ(=Ø!%§¡ñ�• ô " $¬ Ô2ØŸ;™; wÓ/�Dð $Ü!%§¡¨DÓ!1�D”JØ×*Ñ*¨4¯:©:°vÕ>øô+4ò Ü-°gÀfÔM�” Ø— ‘ –ð ú÷ &Ð%ûô "ò $ô$2¼(À4».Ø9?ô$A�D”Là—M‘M–Oð $ús/»D Á%D<Ã6EÄ +D9Ä8D9Ä<EÅ4E?Å>E?)r€rZÚlicenseÚkeywordsr$r<rArCr2)r3N)r&N) Ú run_requiresÚbuild_requiresÚ dev_requiresÚ test_requiresÚ meta_requiresÚextrasÚmodulesÚ namespacesÚexportsÚcommandsÚ classifiersÚ source_urlr¶cón—tj|d«}tj|d«}||v�r#||\}}|jr,|€ |€dn|«}|S|jj|«}|S|€dn|«}|dvr|jj||«}|St«}|}|jjd«} | r…|dk(r| jd|«}nm|dk(r&| jd«} | rU| j||«}nB| jd «} | s|jjd «} | r| j||«}||ur|}|S||vrtj||«}|S|jr|jj|«}|S|jj|«}|S) NÚ common_keysÚ mapped_keys©r>r=r;r<r?Ú extensionsr>úpython.commandsr?úpython.detailsúpython.exports)ÚobjectÚ__getattribute__r&rŸr') r’rpÚcommonÚmappedÚlkÚmakerÚresultrqÚsentinelÚds rrJzMetadata.__getattribute__ÓsÀÜ×(Ñ(¨¨}Ó=ˆÜ×(Ñ(¨¨}Ó=ˆØ �&Š=ؘs™ ‰IˆB�Ø�|Š|Ø�:Ø%* ]™T¹»�FðDˆ ðA"Ÿ\™\×-Ñ-¨bÓ1�Fð@ˆ ð=!&  ™±5³7�Øð.ñ.à!ŸZ™ZŸ^™^¨C°Ó7�Fð6ˆ ô1 &›x�HØ%�FØŸ ™ Ÿ™ |Ó4�AÙØ *Ò,Ø%&§U¡UÐ+<¸eÓ%D™FØ  MÒ1Ø !§¡Ð&6Ó 7˜AÙ Ø)*¯©¨s°EÓ):¡à !§¡Ð&6Ó 7˜AÙ#$Ø$(§J¡J§N¡NÐ3CÓ$D Ù Ø)*¯©¨s°EÓ): Ø Ñ)Ø!&˜ðˆ ð ˜Ñ Ü×,Ñ,¨T°3Ó7ˆFð ˆ ð �\Š\Ø—\‘\×%Ñ% cÓ*ˆFðˆ ð—Z‘Z—^‘^ CÓ(ˆF؈ rcó¶—||jvrK|j|\}}|xs |j|vr&|j|«}|std|›d|›d�«‚yyy)NÚ'z' is an invalid value for the 'z ' property)ÚSYNTAX_VALIDATORSr�Úmatchr)r’rprqr�ÚpatternÚ exclusionsÚms rÚ_validate_valuezMetadata._validate_valueþsq€Ø �$×(Ñ(Ñ (Ø"&×"8Ñ"8¸Ñ"=Ñ ˆG�ZØÒ%˜$Ÿ+™+¨jÑ8Ø—M‘M %Ó(�ÙÝ.ÚFKÚDGð0IóJðJðð9ð )rcó—|j||«tj|d«}tj|d«}||vrœ||\}}|jr|€t‚||j|<y|dvr||j |<y|j j di«}|dk(r||d<y|dk(r|j di«}|||<y|j d i«}|||<y||vrtj|||«y|d k(r5t|t«r%|j«}|r|j«}ng}|jr||j|<y||j |<y) NrBrCrDrEr>rFr?rGrHr4) rYrIrJr&ÚNotImplementedErrorr'Ú setdefaultÚ __setattr__rêr rìrÒ)r’rprqrKrLrMryrQs rr]zMetadata.__setattr__sW€Ø ×јS %Ô(Ü×(Ñ(¨¨}Ó=ˆÜ×(Ñ(¨¨}Ó=ˆØ �&‰=ؘ3‘K‰EˆB�Ø�|Š|Ø�:Ü-Ð-Ø#(�— ‘ ˜RÒ Øð,ñ,à"'�— ‘ ˜3’ð—J‘J×)Ñ)¨,¸Ó;�ؘ*Ò$Ø+0�AÐ'Ò(ؘMÒ)ØŸ ™ Ð%5°rÓ:�AØ"�A�c’FàŸ ™ Ð%5°rÓ:�AØ"�A�c’FØ ˜Ñ Ü × Ñ ˜t S¨%Õ 0à�jÒ Ü˜e¤\Ô2Ø!ŸK™K›M�EÙØ %§ ¡ £ ™à "˜Ø�|Š|Ø$)�— ‘ ˜SÒ!à"'�— ‘ ˜3’rcóD—t|j|jd«S©NT)r‚r€rZr™s rÚname_and_versionzMetadata.name_and_version/s€ä$ T§Y¡Y°· ± ¸dÓCÐCrcóØ—|jr|jd}n|jjdg«}|j›d|j›d�}||vr|j |«|S)Nr;Úprovidesú (Ú))r&r'r\r€rZrû)r’rOÚss rrbzMetadata.provides3sW€à �<Š<Ø—\‘\ /Ñ2‰Fà—Z‘Z×*Ñ*¨:°rÓ:ˆFØŸ› D§L£LÐ 1ˆØ �F‰?Ø �M‰M˜!Ô Øˆ rcóZ—|jr||jd<y||jd<y)Nr;rb)r&r'r¹s rrbzMetadata.provides>s%€à �<Š<Ø,1ˆD�L‰L˜Ò )à%*ˆD�J‰J�zÒ "rcóî—|jr|}|Sg}t|xsg|j«}|D]_}d|vrd|vrd}n;d|vrd}n|jd«|v}|r|jd«}|r t ||«}|sŒL|j |d«ŒadD]_}d|z} | |vsŒ |j | «|jjd|zg«}|j |j|||¬««Œa|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Ú environmentTÚrequires)ÚbuildÚdevÚtestz:%s:z %s_requires)r:Úenv) r&r r:rŸr Úextendrfr'Úget_requirements) r’Úreqtsr:rnrOrQÚincluder_rpÚes rrpzMetadata.get_requirementsEs€ð �<Š<؈Fð<ˆ ð9ˆFÜ ¢ ¨"¨d¯k©kÓ:ˆFÛ�Ø !Ñ#¨ ¸QÑ(>à"‘Gà aÑ'à"&™à"#§%¡%¨£.°FÐ":˜Ùà!"§¡ }Ó!5˜Ù!Ü&/°¸Ó&<˜GÚØ—M‘M ! J¡-Õ0ð!ó"0�ؘS‘L�ؘ’;Ø—M‘M !Ô$ð!ŸJ™JŸN™N¨=¸3Ñ+>ÀÓC�EØ—M‘M $×"7Ñ"7¸ÀfØ||j|jz«} ||j|jz«} |jrt|j«|d<t| «|d<t| «|d<|S#ttf$rd}YŒžwxYw)Ncó$—t«}|D]€}|jd«}|jd«}|d}|D]R}|s|s|j|«Œd}|rd|z}|r |r d|›d|›�}n|}|jdj||f««ŒTŒ‚|S) Nrhrirjrƒz extra == "%s"Ú(z) and ré)r£rŸÚaddrÞ)ÚentriesrqrsrhrnÚrlistrÆr_s rÚprocess_entriesz,Metadata._to_legacy..process_entriesÌs˜€Ü“EˆEÛ�ØŸ™˜g›�Ø—e‘e˜MÓ*�ؘ*™ �Û�AÙ¡uØŸ ™  !� à!#˜Ù Ø%4°uÑ%<˜FÙÚ%Ú:=¹vÐ)F¡à), ØŸ ™  #§(¡(¨A¨v¨;Ó"7Õ8ñð ð"ˆLrTFrCr<rA)r'r&r„ÚLEGACY_MAPPINGrerêrVr§Ú IndexErrorr5r9r6r7r:Úsorted) r’r—rOÚnmdr‡r‰rQÚfoundræÚr1Úr2s rÚ _to_legacyzMetadata._to_legacyËs+€ò ð*�zŠz $§,¢,Ð.Ð.ÜÓ!ˆØ�j‰jˆà×)Ñ)×/Ñ/Ö1‰FˆB�ܘb¤%Ô(ؘ’9Ø!$ R¡�F˜2’Jà�Ø�Û�Aðؘa™D™ðò Ø!"�F˜2’Jð2ñ˜T×.Ñ.°×1CÑ1CÑCÓ DˆÙ ˜T×0Ñ0°4×3DÑ3DÑDÓ EˆØ �;Š;Ü'-¨d¯k©kÓ':ˆFÐ#Ñ $Ü"(¨£*ˆˆÑÜ(.¨r« ˆÐ$Ñ%àˆ øô%¤jÐ1òØ %˜ÚðúsÁ<D Ä D"Ä!D"có(—||gjd«dk7r td«‚|j«|rS|jr |j}n|j «}|r|j ||¬«y|j ||¬«y|jr|j«}n |j}|rtj||ddd¬«ytj|dd«5}tj||ddd¬«ddd«y#1swYyxYw) Nrz)Exactly one of path and fileobj is needed)rÜTr†)Ú ensure_asciiÚindentÚ sort_keysrÚr#) rˆrXr-r&rŸrœrÛrur'r1ÚdumprÉrÊ)r’r“r”r#rÜÚ legacy_mdrQrPs rrœzMetadata.writeýsâ€Ø �'ˆ?× Ñ  Ó &¨!Ò +ÜÐHÓIÐ IØ � ‰ ŒÙ Ø�|Š|Ø ŸL™L‘ à ŸO™OÓ-� ÙØ—‘ °<�Õ@à×$Ñ$ W¸<Ð$ÕHà�|Š|Ø×%Ñ%Ó'‘à—J‘J�ÙÜ— ‘ ˜!˜W°4ÀØ$(ö*ô—[‘[  s¨GÔ4¸Ü—I‘I˜a °¸aØ(,õ.÷5×4Ñ4ús Ã$DÄDcó:—|jr|jj|«y|jjdg«}d}|D]}d|vsŒd|vsŒ |}n|€d|i}|j d|«yt |d«t |«z}t |«|d<y)Nr5rirhrjr)r&rr'r\Úinsertr£rš)r’rr5ÚalwaysÚentryÚrsets rrzMetadata.add_requirementssŸ€Ø �<Š<Ø �L‰L× )Ñ )¨,Õ 7àŸ:™:×0Ñ0°ÀÓDˆL؈FÛ%�Ø ¨Ò-°'ÀÒ2FØ"�FÙð&ðˆ~Ø% |Ð5�Ø×#Ñ# A vÕ.ä˜6 *Ñ-Ó.´°\Ó1BÑB�Ü%+¨D£\��zÒ"rc óœ—|jxsd}|jxsd}d|jj›d|j›d|›d|›d� S)Nz (no name)z no versionrr{rcz)>)r€rZrrr¶)r’r€rZs rrzMetadata.__repr__(sD€Ø�y‰yÒ'˜KˆØ—,‘,Ò. ,‰Ø$(§N¡N×$;Ó$;Ø$(×$9Ó$9º4ÂðJð JrrrM)NN)NNFT)0rrrrÚreÚcompileÚMETADATA_VERSION_MATCHERÚIÚ NAME_MATCHERÚFIELDNAME_MATCHERrÚVERSION_MATCHERÚSUMMARY_MATCHERr.rr/r|rrxrTÚ __slots__r–r£rBrëÚ none_listÚdictÚ none_dictrCrJrYr]Úpropertyr`rbÚsetterrprvryr,r-rrur˜rŸrœrrrrrr r bs-„ñð *˜rŸz™zÐ*:Ó;Ðà�2—:‘:ÐAÀ2Ç4Á4ÓH€Là"˜Ÿ ™ Ð#AÀ2Ç4Á4ÓHÐà'€Oà �b—j‘j Ó-€OàÐà Ñ,€IðØØñ€Nð !€Jð/€Oð 6°rÐ:ؘ{Ð+Ø# [Ð1Ø# [Ð1Ø% {Ð3ñ Ðð/€Ià8<Ø!ó+$ñZÐKÓL€Kà�t� €IØ�t� €Ið)¨$Ð/Ø0°$Ð7Ø!Ø"Ø"Ø# TÐ*ØØØØØ$ dÐ+Ø,Ø6ñ€Kð �9ò)óVJò%(ðNñDóðDðñóðð‡_�_ñ+óð+ó (ðTñóðð ñDóðDð ×Ññ%óð%ò /ò<òòð<ØØ5>ØØ$ØBMØAIØBPØ$Ø9Eñ €Nò0ód.ò42ó"Jrr r )KrÚ __future__rrÉr�rr1rîr¬rƒrrÚcompatrr r rbr Úutilr r rZrrÚ getLoggerrrgrrrrÚ__all__r!r"r­r¸r·rTrUrjrNrkÚ _426_FIELDSÚ _426_MARKERSrWrlrmrYr£r­r�ÚEXTRA_REr[rwr®rr¯rer rðrórõr±rÑr²r÷rIrúr}r‚r„ÚMETADATA_FILENAMEÚWHEEL_METADATA_FILENAMEÚLEGACY_METADATA_FILENAMEr )r€rrÖs000rÚrÅsiðñ õ(ã Ý#Û ÛÛ ÷,ß5Ñ5Ýß,ß2à ˆ× Ñ ˜8Ó $€ô)Ð+ô)ôIÐ,ôIô+Ð'7ô+ô&Ð+ô&ò J€ðÐð#Ðà�2—:‘:˜nÓ-ÐØ!�r—z‘z ,Ó/Ðð€ ð '€ ð  € ð7€ ð3€ ð!€ ð4€ ððBñB€ ð-€ à*€ à˜LÑ(€ á‹e€ Ø ×Ñ�;ÔØ ×Ñ�;ÔØ ×Ñ�;ÔØ ×Ñ�;ÔØ ×Ñ�;ÔØ ×Ñ�;Ôà ˆ2�:‰:Ð?Ó @€ò4ò$DñR6AóÙ5@¨T€D‡J�JƒL×ј˜cÓ" DÑ(°[ñ€ ð/:×.?Ñ.?Ô.AÔBÑ.A™{˜t Uˆu�d‰{Ð.AÒB€ àHÐØ'ÐØ€ð>€ ð $Ðà€àC€á ‹8€à ˆB�J‰JÐ'Ó (€ ó %ôe-�Vôe-ðP "ÐØ)ÐØ%ÐôJJˆvõJJùòe ùóCs Å(G-Æ G2