Ë
    <i¯eÖ ã                   ó*  — d dl Z d dlmZ d dlZd dlZd dlmZ d dlZd dl	Z	d dl
Z
d dlZd dlZd dlZd dlZ	 d dlZd dlZd dlZd dlZd dlZd dlZ	 d dlZd dlZddlmZ ddlmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0  e
jb                  e2«      Z3 ejh                  d«      Z5 ejh                  d«      Z6 ejh                  d	«      Z7 ejh                  d
«      Z8 ejh                  d«      Z9 ejh                  d«      Z: ejh                  d«      Z; ejh                  d«      Z<d„ Z=d„ Z>d„ Z?d„ Z@d„ ZAdid„ZBd„ ZCd„ ZDd„ ZEejŒ                  d„ «       ZGejŒ                  d„ «       ZHejŒ                  djd„«       ZI G d„ deJ«      ZKd„ ZL G d„ deJ«      ZMd „ ZN G d!„ d"eJ«      ZO ejh                  d#ej                   «      ZQd$„ ZRdkd%„ZSd&„ ZTd'„ ZUd(„ ZVd)„ ZWd*„ ZX ejh                  d+ej²                  «      ZZ ejh                  d,«      Z[dkd-„Z\ ejh                  d.«      Z]d/„ Z^d0„ Z_d1„ Z`d2Zad3„ Zbd4„ Zc G d5„ d6eJ«      Zd G d7„ d8eJ«      Ze G d9„ d:eJ«      Zfd;Zgdld<„Zhd=„ Zid>Zj G d?„ d@eJ«      Zk ejh                  dA«      Zl ejh                  dB«      Zm ejh                  dC«      ZndD„ ZdE„ Zoer6ddFlmpZqmrZrmsZs  G dG„ dHe$jè                  «      Zt G dI„ dJeq«      Zp G dK„ dLepe'«      Zu G dM„ dNe%jì                  «      Zver G dO„ dPe%jî                  «      Zw G dQ„ dRe%jð                  «      ZxdS„ Zy G dT„ dUeJ«      Zz G dV„ dWez«      Z{ G dX„ dYez«      Z| G dZ„ d[e(«      Z} G d\„ d]eJ«      Z~d^„ Z G d_„ d`eJ«      Z€da„ Z�db„ Z‚dc„ ZƒdddedfdgœZ„dh„ Z…y# e$ r dZY �ŒGw xY w# e$ r d dlZY �Œ>w xY w)mé    N)Údeque)Úiglobé   )ÚDistlibException)Ústring_typesÚ	text_typeÚshutilÚ	raw_inputÚStringIOÚcache_from_sourceÚurlopenÚurljoinÚhttplibÚ	xmlrpclibÚ	splittypeÚHTTPHandlerÚBaseConfiguratorÚvalid_identÚ	ContainerÚconfigparserÚURLErrorÚZipFileÚfsdecodeÚunquoteÚurlparsez^([\w\.-]+)\s*z^([\w\.*+-]+)\s*z^(<=?|>=?|={2,3}|[~!]=)\s*z*^((<=?)|(>=?)|={2,3}|[~!]=|in|not\s+in)\s*z^or\b\s*z	^and\b\s*z(\S+)\s*z(([\s\w\.{}()*+#:;,/?!~`@$%^&=|<>\[\]-]+)c                 ó@   ‡‡‡‡— d„ Šˆˆfd„Šˆfd„Šˆfd„Š ‰| «      S )ae  
    Parse a marker string and return a dictionary containing a marker expression.

    The dictionary will contain keys "op", "lhs" and "rhs" for non-terminals in
    the expression grammar, or strings. A string contained in quotes is to be
    interpreted as a literal string, and a string not contained in quotes is a
    variable (such as os_name).
    c                 ó¾  — t         j                  | «      }|r*|j                  «       d   }| |j                  «       d  } || fS | st	        d«      ‚| d   }|dvrt	        d| z  «      ‚dj                  |d«      }| dd  } |g}| r…| d   |k(  rn›| d   |k(  r|j                  |«       | dd  } nZt        j                  | «      }|st	        d| z  «      ‚|j                  |j                  «       d   «       | |j                  «       d  } | rŒ…dj                  |«      }t	        d|z  «      ‚|j                  |«       dj                  |«      }| dd  j                  «       } || fS )	Nr   zunexpected end of inputz'"zinvalid expression: %sÚ r   zerror in string literal: %szunterminated string: %s)
Ú
IDENTIFIERÚmatchÚgroupsÚendÚSyntaxErrorÚreplaceÚappendÚSTRING_CHUNKÚjoinÚlstrip)Ú	remainingÚmÚresultÚqÚoqÚpartsÚss          úAE:\TRUCKING_PROJECT\Lib\site-packages\pip\_vendor\distlib\util.pyÚ
marker_varz parse_marker.<locals>.marker_varA   st  € ä×Ñ˜YÓ'ˆÙØ—X‘X“Z ‘]ˆFØ! !§%¡%£' (Ð+ˆIð: �yÐ Ð ñ9 ÜÐ7Ó8Ð8à˜!‘ˆAØ˜‰~Ü!Ð":¸YÑ"FÓGÐGØ—‘˜q "Ó%ˆBØ! ! "˜ˆIØ�CˆEÙà˜Q‘< 1Ò$ØØ˜q‘\ RÒ'Ø—L‘L Ô$Ø )¨!¨" ‘Iä$×*Ñ*¨9Ó5�AÙÜ)Ð*GÈ)Ñ*SÓTÐTØ—L‘L §¡£¨A¡Ô/Ø )¨!¯%©%«'¨(Ð 3�Iò ð —G‘G˜E“N�Ü!Ð";¸aÑ"?Ó@Ð@Ø�L‰L˜ŒOØ—W‘W˜U“^ˆFØ! ! "˜×,Ñ,Ó.ˆIØ�yÐ Ð ó    c                 ót  •— | rQ| d   dk(  rI ‰| dd  j                  «       «      \  }} | d   dk7  rt        d| z  «      ‚| dd  j                  «       } || fS  ‰| «      \  }} | rRt        j                  | «      }|sn:|j	                  «       d   }| |j                  «       d  }  ‰| «      \  }} |||dœ}| rŒR|}|| fS )Nr   ú(r   ú)úunterminated parenthesis: %s©ÚopÚlhsÚrhs)r(   r#   Ú	MARKER_OPr    r!   r"   )r)   r+   r9   r*   r8   r:   Úmarkerr1   s         €€r0   Úmarker_exprz!parse_marker.<locals>.marker_expre   sæ   ø€ Ù˜ 1™¨Ò,Ù & y°° }×';Ñ';Ó'=Ó >ÑˆF�IØ˜‰|˜sÒ"Ü!Ð"@À9Ñ"LÓMÐMØ! ! "˜×,Ñ,Ó.ˆIð �yÐ Ð ñ (¨	Ó2‰NˆC�ÙÜ—O‘O IÓ.�ÙØØ—X‘X“Z ‘]�Ø% a§e¡e£g hÐ/�	Ù!+¨IÓ!6‘��YØ¨°CÑ8�ò ð ˆFØ�yÐ Ð r2   c                 ó¬   •—  ‰| «      \  }} | rCt         j                  | «      }|s	 || fS | |j                  «       d  }  ‰| «      \  }} d||dœ}| rŒC|| fS )NÚandr7   )ÚANDr    r"   )r)   r9   r*   r:   r=   s       €r0   Ú
marker_andz parse_marker.<locals>.marker_andx   ss   ø€ Ù$ YÓ/‰ˆˆYÙÜ—	‘	˜)Ó$ˆAÙØð �Iˆ~Ðð " !§%¡%£' (Ð+ˆIÙ(¨Ó3‰NˆC�Ø s°3Ñ7ˆCò ð �Iˆ~Ðr2   c                 ó¬   •—  ‰| «      \  }} | rCt         j                  | «      }|s	 || fS | |j                  «       d  }  ‰| «      \  }} d||dœ}| rŒC|| fS )NÚorr7   )ÚORr    r"   )r)   r9   r*   r:   rA   s       €r0   r<   zparse_marker.<locals>.markerƒ   ss   ø€ Ù# IÓ.‰ˆˆYÙÜ—‘˜Ó#ˆAÙØð �Iˆ~Ðð " !§%¡%£' (Ð+ˆIÙ'¨	Ó2‰NˆC�Ø c°#Ñ6ˆCò ð �Iˆ~Ðr2   © )Úmarker_stringr<   rA   r=   r1   s    @@@@r0   Úparse_markerrG   8   s%   û€ ò"!õH!ô&	ô	ñ �-Ó Ð r2   c           	      óê  — | j                  «       }|r|j                  d«      ryt        j                  |«      }|st	        d|z  «      ‚|j                  «       d   }||j                  «       d }dx}x}x}}|rÙ|d   dk(  rÑ|j                  dd«      }|dk  rt	        d|z  «      ‚|d| }	||dz   d j                  «       }g }|	r‰t        j                  |	«      }|st	        d	|	z  «      ‚|j                  |j                  «       d   «       |	|j                  «       d }	|	sn,|	d   d
k7  rt	        d|	z  «      ‚|	dd j                  «       }	|	rŒ‰|sd}|�rŒ|d   dk(  rž|dd j                  «       }t        j                  |«      }|st	        d|z  «      ‚|j                  «       d   }t        |«      }
|
j                  r|
j                  st	        d|z  «      ‚||j                  «       d j                  «       }næd„ }|d   dk7  r ||«      \  }}nÏ|j                  dd«      }|dk  rt	        d|z  «      ‚|d| }	||dz   d j                  «       }t        j                  |	«      r ||	«      \  }}nnt        j                  |	«      }|st	        d|	z  «      ‚|j                  «       d   }|	|j                  «       d j                  «       }	|	rt	        d|	z  «      ‚d|fg}|r7|d   dk7  rt	        d|z  «      ‚|dd j                  «       }t!        |«      \  }}|r|d   dk7  rt	        d|z  «      ‚|s|}n'|›ddj#                  |D �cg c]  }d|z  ‘Œ	 c}«      ›�}t%        ||||||¬«      S c c}w )zŠ
    Parse a requirement passed in as a string. Return a Container
    whose attributes contain the various parts of the requirement.
    ú#Nzname expected: %sr   ú[ú]r   zunterminated extra: %szmalformed extra: %sú,zcomma expected in extras: %sú@zinvalid URI: %szInvalid URL: %sc                 óà  — t         j                  | «      }d}|rÒg }	 |j                  «       d   }| |j                  «       d } t        j                  | «      }|st        d| z  «      ‚|j                  «       d   }|j                  ||f«       | |j                  «       d } | r| d   dk7  rn<| dd j                  «       } | sn&t         j                  | «      }|st        d| z  «      ‚ŒË|sd}|| fS )z|
                Return a list of operator, version tuples if any are
                specified, else None.
                Nr   zinvalid version: %srL   r   úinvalid constraint: %s)Ú
COMPARE_OPr    r!   r"   ÚVERSION_IDENTIFIERr#   r%   r(   )Úver_remainingr*   Úversionsr8   Úvs        r0   Úget_versionsz'parse_requirement.<locals>.get_versionsÅ   s  € ô
 ×$Ñ$ ]Ó3�Ø�ÙØ!�HØØŸX™X›Z¨™]˜Ø(5°a·e±e³g°hÐ(?˜Ü.×4Ñ4°]ÓC˜Ù Ü"-Ð.CÀmÑ.SÓ"TÐTØŸH™H›J q™M˜Ø Ÿ™¨¨Q¨Ô0Ø(5°a·e±e³g°hÐ(?˜Ù,°¸aÑ0@ÀCÒ0GØ!Ø(5°a°bÐ(9×(@Ñ(@Ó(B˜ñ  -Ø!Ü&×,Ñ,¨]Ó;˜Ù Ü"-Ð.FÈÑ.VÓ"WÐWð% ñ& $Ø#'˜Ø Ð.Ð.r2   r4   r5   r6   rO   z~=ú;zinvalid requirement: %szunexpected trailing data: %sú ú, z%s %s)ÚnameÚextrasÚconstraintsr<   ÚurlÚrequirement)ÚstripÚ
startswithr   r    r#   r!   r"   Úfindr(   r%   Ú	NON_SPACEr   ÚschemeÚnetlocrP   rQ   rG   r'   r   )Úreqr)   r*   ÚdistnamerZ   Ú	mark_exprrS   ÚuriÚir/   ÚtrU   Ú_rT   ÚrsÚcons                   r0   Úparse_requirementrm   ‘   s¨  € ð
 —	‘	“€IÙ˜	×,Ñ,¨SÔ1ØÜ×Ñ˜Ó#€AÙÜÐ-°	Ñ9Ó:Ð:Ø�x‰x‹z˜!‰}€HØ˜!Ÿ%™%›'˜(Ð#€IØ*.Ð.€FÐ.ˆYÐ.˜ CÙ�Y˜q‘\ SÒ(Ø�N‰N˜3 Ó"ˆØˆqŠ5ÜÐ6¸ÑBÓCÐCØ�a˜ˆNˆØ˜a !™e˜fÐ%×,Ñ,Ó.ˆ	ØˆÙÜ× Ñ  Ó#ˆAÙÜ!Ð"7¸!Ñ";Ó<Ð<Ø�M‰M˜!Ÿ(™(›* Q™-Ô(Ø�!—%‘%“'�(�ˆAÙØØ�‰t�sŠ{Ü!Ð"@À1Ñ"DÓEÐEØ�!�"�—‘“ˆAò ñ ØˆFÚØ�Q‰<˜3Òà! ! "˜×,Ñ,Ó.ˆIÜ—‘ 	Ó*ˆAÙÜ!Ð"3°iÑ"?Ó@Ð@Ø—(‘(“*˜Q‘-ˆCÜ˜“ˆAð
 —H’H §¢Ü!Ð"3°cÑ"9Ó:Ð:Ø! !§%¡%£' (Ð+×2Ñ2Ó4‰Iò/ð@ ˜‰|˜sÒ"Ù&2°9Ó&=Ñ#�™)à—N‘N 3¨Ó*�Ø�q’5Ü%Ð&DÀyÑ&PÓQÐQØ˜a �N�Ø% a¨!¡e fÐ-×4Ñ4Ó6�	ô ×#Ñ# AÔ&Ù".¨q£/‘K�H™aä*×0Ñ0°Ó3�AÙÜ)Ð*BÀQÑ*FÓGÐGØŸ™›
 1™�AØ˜!Ÿ%™%›'˜(˜×*Ñ*Ó,�AÙÜ)Ð*BÀQÑ*FÓGÐGØ!% q 	˜{�HáØ�Q‰<˜3ÒÜÐ7¸)ÑCÓDÐDØ˜a˜b�M×(Ñ(Ó*ˆ	ä+¨IÓ6Ñˆ	�9á�Y˜q‘\ SÒ(ÜÐ8¸9ÑDÓEÐEáØ‰â  $§)¡)ÀhÖ,O¸s¨W°s«]Ò,OÔ"PÐQˆÜ˜(¨6¸xØ%¨3¸Bô@ð @ùò -Ps   Í
M0c                 ó¼  — d„ }i }|D ]Ñ  \  }}}t         j                  j                  | |«      }t        |«      D ]�  }t         j                  j                  ||«      }	t        |	«      D ]m  }
 || |
«      }|€|j	                  |d«       Œ! |||
«      }|j                  t         j                  j                  d«      j                  d«      }|dz   |z   ||<   Œo ŒŸ ŒÓ |S )z%Find destinations for resources filesc                 ó
  — | j                  t        j                  j                  d«      } |j                  t        j                  j                  d«      }|j	                  | «      sJ ‚|t        | «      d  j                  d«      S ©Nú/)r$   ÚosÚpathÚsepr_   Úlenr(   )Úrootrs   s     r0   Úget_rel_pathz)get_resources_dests.<locals>.get_rel_path  s]   € à�|‰|œBŸG™GŸK™K¨Ó-ˆØ�|‰|œBŸG™GŸK™K¨Ó-ˆØ�‰˜tÔ$Ñ$Ø”C˜“I�JÐ×&Ñ& sÓ+Ð+r2   Nrq   )rr   rs   r'   r   Úpopr$   rt   Úrstrip)Úresources_rootÚrulesrw   ÚdestinationsÚbaseÚsuffixÚdestÚprefixÚabs_baseÚabs_globÚabs_pathÚresource_fileÚrel_pathÚrel_dests                 r0   Úget_resources_destsr‡     sã   € ò,ð €LØ#ò LÑˆˆf�dÜ—‘—‘˜n¨dÓ3ˆÜ˜f›ò 		LˆHÜ—w‘w—|‘| H¨fÓ5ˆHÜ! (›Oò L�Ù ,¨^¸XÓ F�Ø�<Ø ×$Ñ$ ]°DÕ9á+¨H°hÓ?�HØ#Ÿ|™|¬B¯G©G¯K©K¸Ó=×DÑDÀSÓI�HØ2:¸S±.À8Ñ2K�L Ò/ñLñ		LðLð Ðr2   c                  óŽ   — t        t        d«      rd} | S t        j                  t        t        dt        j                  «      k7  } | S )NÚreal_prefixTÚbase_prefix)ÚhasattrÚsysr€   Úgetattr©r+   s    r0   Úin_venvr�   (  s:   € ÜŒs�MÔ"àˆð €Mô —‘œw¤s¨M¼3¿:¹:ÓFÑFˆØ€Mr2   c                  ó\   — t         j                  } t        | t        «      st	        | «      } | S ©N)rŒ   Ú
executableÚ
isinstancer   r   rŽ   s    r0   Úget_executabler”   2  s&   € ô �^‰^€FÜ�fœiÔ(Ü˜&Ó!ˆØ€Mr2   c                 ó|   — | }	 t        |«      }| }|s|r|}|r$|d   j                  «       }||v r	 |S |rd||| fz  }Œ:)Nr   z	%c: %s
%s)r
   Úlower)ÚpromptÚallowed_charsÚerror_promptÚdefaultÚpr/   Úcs          r0   Úproceedr�   D  sa   € Ø€AØ
Ü�a‹LˆØˆÙ‘WØˆAÙØ�!‘—
‘
“ˆAØ�MÑ!Øð €Hñ Ø  A |°VÐ#<Ñ<�ð r2   c                 ór   — t        |t        «      r|j                  «       }i }|D ]  }|| v sŒ| |   ||<   Œ |S r‘   )r“   r   Úsplit)ÚdÚkeysr+   Úkeys       r0   Úextract_by_keyr£   T  sF   € Ü�$œÔ%Ø�z‰z‹|ˆØ€FØò !ˆØ�!Š8Ø˜C™&ˆF�3ŠKð!ð €Mr2   c                 óH  — t         j                  d   dk\  r t        j                  d«      | «      } | j	                  «       }t        |«      } 	 t        j                  | «      }|d   d   d   }|j                  «       D ]8  \  }}|j                  «       D ]   \  }}|›d|›�}t        |«      }	|	€J ‚|	||<   Œ" Œ: |S # t        $ r | j                  dd«       Y nw xY wd„ }
t        j                  «       }	  |
|| «       nR# t        j                  $ r< | j                  «        t!        j"                  |«      }t        |«      }  |
|| «       Y nw xY wi }|j%                  «       D ]=  }i x||<   }|j                  |«      D ]   \  }}|›d|›�}t        |«      }	|	€J ‚|	||<   Œ" Œ? |S )	Nr   é   úutf-8Ú
extensionszpython.exportsÚexportsú = c                 ób   — t        | d«      r| j                  |«       y | j                  |«       y )NÚ	read_file)r‹   r«   Úreadfp)ÚcpÚstreams     r0   Úread_streamz!read_exports.<locals>.read_streamq  s$   € Ü�2�{Ô#Ø�L‰L˜Õ à�I‰I�fÕr2   )rŒ   Úversion_infoÚcodecsÚ	getreaderÚreadr   ÚjsonÚloadÚitemsÚget_export_entryÚ	ExceptionÚseekr   ÚConfigParserÚMissingSectionHeaderErrorÚcloseÚtextwrapÚdedentÚsections)r®   ÚdataÚjdatar+   ÚgroupÚentriesÚkrT   r/   Úentryr¯   r­   r¢   rY   Úvalues                  r0   Úread_exportsrÇ   ]  s¹  € Ü
×Ñ˜Ñ˜aÒà*”×!Ñ! 'Ó*¨6Ó2ˆà�;‰;‹=€DÜ�d‹^€FðÜ—	‘	˜&Ó!ˆØ�|Ñ$Ð%5Ñ6°yÑAˆØ$Ÿl™l›nò 	#‰NˆE�7ØŸ™›ò #‘��1Ú!"¡AÐ&�Ü(¨Ó+�ØÐ(Ñ(Ø"�˜’
ñ	#ð	#ð ˆøÜò Ø�‰�A�qÖðúòô 
×	"Ñ	"Ó	$€Bð Ù�B˜ÕøÜ×1Ñ1ò  Ø�‰ŒÜ�‰˜tÓ$ˆÜ˜$“ˆÙ�B˜Öð	 úð €FØ�{‰{‹}ò "ˆØ "Ð"ˆˆs‰�gØŸ8™8 C›=ò 	"‰KˆD�%Ú!¡5Ð)ˆAÜ$ QÓ'ˆEØÐ$Ñ$à!ˆG�DŠMñ	"ð"ð €Ms&   ÁA,B; Â;CÃCÃ4	C> Ã>AEÅEc                 ó(  — t         j                  d   dk\  r t        j                  d«      |«      }t	        j
                  «       }| j                  «       D ]©  \  }}|j                  |«       |j                  «       D ]€  }|j                  €|j                  }n|j                  ›d|j                  ›�}|j                  r!|›ddj                  |j                  «      ›d�}|j                  ||j                  |«       Œ‚ Œ« |j                  |«       y )Nr   r¥   r¦   ú:z [rX   rK   )rŒ   r°   r±   Ú	getwriterr   rº   r¶   Úadd_sectionÚvaluesr~   r€   Úflagsr'   ÚsetrY   Úwrite)r¨   r®   r­   rÄ   rT   rÅ   r/   s          r0   Úwrite_exportsrÐ   Œ  sÙ   € Ü
×Ñ˜Ñ˜aÒà*”×!Ñ! 'Ó*¨6Ó2ˆÜ	×	"Ñ	"Ó	$€BØ—‘“ò 
%‰ˆˆ1à
�‰�qÔØ—X‘X“Zò 	%ˆEØ�|‰|Ð#Ø—L‘L‘à$Ÿ|›|¨U¯\ª\Ð:�Ø�{Š{Ú!" D§I¡I¨e¯k©kÕ$:Ð;�Ø�F‰F�1�e—j‘j !Õ$ñ	%ð
%ð ‡H�HˆVÕr2   c               #   óœ   K  — t        j                  «       } 	 | –— t        j                  | «       y # t        j                  | «       w xY w­wr‘   )ÚtempfileÚmkdtempr	   Úrmtree)Útds    r0   ÚtempdirrÖ   Ÿ  s6   è ø€ ä	×	Ñ	Ó	€BðØŠä�‰�bÕøŒ�‰�bÕüs   ‚A˜2 œA²A	Á	Ac              #   óÆ   K  — t        j                  «       }	 t        j                  | «       d –— t        j                  |«       y # t        j                  |«       w xY w­wr‘   )rr   ÚgetcwdÚchdir)r    Úcwds     r0   rÙ   rÙ   §  s:   è ø€ ä
�)‰)‹+€CðÜ
�‰�ŒÛä
�‰��øŒ�‰��üó   ‚A!˜A ±A!ÁAÁA!c              #   óÆ   K  — t        j                  «       }	 t        j                  | «       d –— t        j                  |«       y # t        j                  |«       w xY w­wr‘   )ÚsocketÚgetdefaulttimeoutÚsetdefaulttimeout)ÚsecondsÚctos     r0   Úsocket_timeoutrâ   ±  sF   è ø€ ä
×
"Ñ
"Ó
$€Cð&Ü× Ñ  Ô)Ûä× Ñ  Õ%øŒ× Ñ  Õ%ürÛ   c                   ó   — e Zd Zd„ Zdd„Zy)Úcached_propertyc                 ó   — || _         y r‘   )Úfunc)Úselfræ   s     r0   Ú__init__zcached_property.__init__¼  s	   € Øˆ�	r2   Nc                 ó†   — |€| S | j                  |«      }t        j                  || j                   j                  |«       |S r‘   )ræ   ÚobjectÚ__setattr__Ú__name__)rç   ÚobjÚclsrÆ   s       r0   Ú__get__zcached_property.__get__Á  s:   € Øˆ;ØˆKØ—	‘	˜#“ˆÜ×Ñ˜3 §	¡	× 2Ñ 2°EÔ:àˆr2   r‘   )rì   Ú
__module__Ú__qualname__rè   rï   rE   r2   r0   rä   rä   »  s   „ òô
r2   rä   c                 ó’  — t         j                  dk(  r| S | s| S | d   dk(  rt        d| z  «      ‚| d   dk(  rt        d| z  «      ‚| j                  d«      }t         j                  |v r2|j                  t         j                  «       t         j                  |v rŒ2|st         j                  S t        j                  j                  |Ž S )aÐ  Return 'pathname' as a name that will work on the native filesystem.

    The path is split on '/' and put back together again using the current
    directory separator.  Needed because filenames in the setup script are
    always supplied in Unix style, and have to be converted to the local
    convention before we can actually use them in the filesystem.  Raises
    ValueError on non-Unix-ish systems if 'pathname' either starts or
    ends with a slash.
    rq   r   zpath '%s' cannot be absoluteéÿÿÿÿzpath '%s' cannot end with '/')rr   rt   Ú
ValueErrorrŸ   ÚcurdirÚremovers   r'   )ÚpathnameÚpathss     r0   Úconvert_pathrù   É  s®   € ô 
‡v�v�‚}ØˆÙØˆØ��{�cÒÜÐ7¸(ÑBÓCÐCØ��|�sÒÜÐ8¸8ÑCÓDÐDà�N‰N˜3Ó€EÜ
�)‰)�uÑ
Ø�‰”R—Y‘YÔô �)‰)�uÒ
áÜ�y‰yÐÜ�7‰7�<‰<˜ÐÐr2   c                   ót   — e Zd Zdd„Zd„ Zd„ Zd„ Zdd„Zdd„Zd„ Z	d	„ Z
d
„ Zd„ Zd„ Zdd„Zd„ Zd„ Zd„ Zd„ Zy)ÚFileOperatorc                 óP   — || _         t        «       | _        | j                  «        y r‘   )Údry_runrÎ   ÚensuredÚ_init_record)rç   rý   s     r0   rè   zFileOperator.__init__å  s   € ØˆŒÜ“uˆŒØ×ÑÕr2   c                 óN   — d| _         t        «       | _        t        «       | _        y ©NF)ÚrecordrÎ   Úfiles_writtenÚdirs_created©rç   s    r0   rÿ   zFileOperator._init_recordê  s   € ØˆŒÜ ›UˆÔÜ›EˆÕr2   c                 óT   — | j                   r| j                  j                  |«       y y r‘   )r  r  Úadd)rç   rs   s     r0   Úrecord_as_writtenzFileOperator.record_as_writtenï  s"   € Ø�;Š;Ø×Ñ×"Ñ" 4Õ(ð r2   c                 óT  — t         j                  j                  |«      s+t        dt         j                  j	                  |«      z  «      ‚t         j                  j                  |«      syt        j
                  |«      j                  t        j
                  |«      j                  kD  S )aÎ  Tell if the target is newer than the source.

        Returns true if 'source' exists and is more recently modified than
        'target', or if 'source' exists and 'target' doesn't.

        Returns false if both exist and 'target' is the same age or younger
        than 'source'. Raise PackagingFileError if 'source' does not exist.

        Note that this test is not very accurate: files created in the same
        second will have the same "age".
        zfile '%r' does not existT)rr   rs   Úexistsr   ÚabspathÚstatÚst_mtime)rç   ÚsourceÚtargets      r0   ÚnewerzFileOperator.neweró  ss   € ô �w‰w�~‰~˜fÔ%Ü"Ð#=Ü#%§7¡7§?¡?°6Ó#:ñ$;ó <ð <ä�w‰w�~‰~˜fÔ%Øä�w‰w�v‹×'Ñ'¬"¯'©'°&«/×*BÑ*BÑBÐBr2   c                 óì  — | j                  t        j                  j                  |«      «       t        j                  d||«       | j                  s’d}|rht        j                  j                  |«      rd|z  }nCt        j                  j                  |«      r$t        j                  j                  |«      sd|z  }|rt        |dz   «      ‚t        j                  ||«       | j                  |«       y)z8Copy a file respecting dry-run and force flags.
        zCopying %s to %sNz%s is a symlinkz%s is a non-regular filez which would be overwritten)Ú
ensure_dirrr   rs   ÚdirnameÚloggerÚinforý   Úislinkr
  Úisfilerô   r	   Úcopyfiler  )rç   ÚinfileÚoutfileÚcheckÚmsgs        r0   Ú	copy_filezFileOperator.copy_file  s°   € ð 	�‰œŸ™Ÿ™¨Ó0Ô1Ü�‰Ð&¨°Ô8Ø�|Š|ØˆCÙÜ—7‘7—>‘> 'Ô*Ø+¨gÑ5‘CÜ—W‘W—^‘^ GÔ,´R·W±W·^±^ÀGÔ5LØ4°wÑ>�CÙÜ  Ð'DÑ!DÓEÐEÜ�O‰O˜F GÔ,Ø×Ñ˜wÕ'r2   Nc                 óÐ  — t         j                  j                  |«      rJ ‚| j                  t         j                  j	                  |«      «       t
        j                  d||«       | j                  sN|€t        |d«      }nt        j                  |d|¬«      }	 t        j                  ||«       |j                  «        | j                  |«       y # |j                  «        w xY w)NzCopying stream %s to %sÚwbÚw©Úencoding)rr   rs   Úisdirr  r  r  r  rý   Úopenr±   r	   Úcopyfileobjr¼   r  )rç   Úinstreamr  r"  Ú	outstreams        r0   Úcopy_streamzFileOperator.copy_stream  s¥   € Ü—7‘7—=‘= Ô)Ñ)Ø�‰œŸ™Ÿ™¨Ó0Ô1Ü�‰Ð-¨x¸ÔAØ�|Š|ØÐÜ  ¨$Ó/‘	ä"ŸK™K¨°¸xÔH�	ð"Ü×"Ñ" 8¨YÔ7à—‘Ô!Ø×Ñ˜wÕ'øð —‘Õ!ús   ÂC ÃC%c                 óf  — | j                  t        j                  j                  |«      «       | j                  sZt        j                  j                  |«      rt        j                  |«       t        |d«      5 }|j                  |«       d d d «       | j                  |«       y # 1 sw Y   ŒxY w)Nr  )
r  rr   rs   r  rý   r
  rö   r$  rÏ   r  )rç   rs   rÀ   Úfs       r0   Úwrite_binary_filezFileOperator.write_binary_file'  sw   € Ø�‰œŸ™Ÿ™¨Ó-Ô.Ø�|Š|Ü�w‰w�~‰~˜dÔ#Ü—	‘	˜$”Ü�d˜DÓ!ð  QØ—‘˜”÷à×Ñ˜tÕ$÷ð ús   Á;B'Â'B0c                 óF   — | j                  ||j                  |«      «       y r‘   )r+  Úencode)rç   rs   rÀ   r"  s       r0   Úwrite_text_filezFileOperator.write_text_file0  s   € Ø×Ñ˜t T§[¡[°Ó%:Õ;r2   c                 ór  — t         j                  dk(  s&t         j                  dk(  r‘t         j                  dk(  r}|D ]w  }| j                  rt        j                  d|«       Œ&t        j                  |«      j                  |z  |z  }t        j                  d||«       t        j                  ||«       Œy y y y )NÚposixÚjavazchanging mode of %szchanging mode of %s to %o)	rr   rY   Ú_namerý   r  r  r  Úst_modeÚchmod)rç   ÚbitsÚmaskÚfilesr*  Úmodes         r0   Úset_modezFileOperator.set_mode3  s�   € Ü�7‰7�gÒ¤"§'¡'¨VÒ"3¼¿¹ÀGÒ8Kð ò &�Ø—<’<Ü—K‘KÐ 5°qÕ9äŸG™G A›J×.Ñ.°Ñ5¸Ñ=�DÜ—K‘KÐ ;¸QÀÔEÜ—H‘H˜Q Õ%ñ&ð 9LÐ"3r2   c                 ó(   — | j                  dd|«      S )Nim  iÿ  )r9  )r/   r*  s     r0   ú<lambda>zFileOperator.<lambda>?  s   €  q§z¡z°%¸ÀÓ'C€ r2   c                 óþ  — t         j                  j                  |«      }|| j                  vrÐt         j                  j	                  |«      s°| j                  j                  |«       t         j                  j                  |«      \  }}| j                  |«       t        j                  d|z  «       | j                  st        j                  |«       | j                  r| j                  j                  |«       y y y y )NzCreating %s)rr   rs   r  rþ   r
  r  rŸ   r  r  r  rý   Úmkdirr  r  )rç   rs   r    r*  s       r0   r  zFileOperator.ensure_dirA  s¯   € Ü�w‰w�‰˜tÓ$ˆØ�t—|‘|Ñ#¬B¯G©G¯N©N¸4Ô,@Ø�L‰L×Ñ˜TÔ"Ü—7‘7—=‘= Ó&‰DˆAˆqØ�O‰O˜AÔÜ�K‰K˜¨Ñ,Ô-Ø—<’<Ü—‘˜”Ø�{Š{Ø×!Ñ!×%Ñ% dÕ+ð ð -AÐ#r2   c                 ó�  — t        || «      }t        j                  d||«       | j                  s„|s| j	                  ||«      r&|sd }n!|j                  |«      sJ ‚|t        |«      d  }i }|r-t        t        d«      rt        j                  j                  |d<   t        j                  ||dfi |¤Ž | j                  |«       |S )NzByte-compiling %s to %sÚPycInvalidationModeÚinvalidation_modeT)r   r  r  rý   r  r_   ru   r‹   Ú
py_compiler?  ÚCHECKED_HASHÚcompiler  )	rç   rs   ÚoptimizeÚforcer€   Úhashed_invalidationÚdpathÚdiagpathÚcompile_kwargss	            r0   Úbyte_compilezFileOperator.byte_compileM  s´   € Ü! $¨H¨Ó5ˆÜ�‰Ð-¨t°UÔ;Ø�|Š|Ù˜Ÿ
™
 4¨Ô/ÙØ#‘HàŸ?™?¨6Ô2Ñ2Ø#¤C¨£K LÐ1�HØˆNÙ"¤w¬zÐ;PÔ'QÜ6@×6TÑ6T×6aÑ6a�Ð2Ñ3Ü×Ñ˜t U¨H°dÑM¸nÒMØ×Ñ˜uÔ%Øˆr2   c                 óÆ  — t         j                  j                  |«      �rAt         j                  j                  |«      rŽt         j                  j	                  |«      sot
        j                  d|«       | j                  st        j                  |«       | j                  r+|| j                  v r| j                  j                  |«       y y y t         j                  j	                  |«      rd}nd}t
        j                  d||«       | j                  st        j                  |«       | j                  r+|| j                  v r| j                  j                  |«       y y y y )NzRemoving directory tree at %sÚlinkÚfilezRemoving %s %s)rr   rs   r
  r#  r  r  Údebugrý   r	   rÔ   r  r  rö   r  )rç   rs   r/   s      r0   Úensure_removedzFileOperator.ensure_removed^  sý   € Ü�7‰7�>‰>˜$ÕÜ�w‰w�}‰}˜TÔ"¬2¯7©7¯>©>¸$Ô+?Ü—‘Ð<¸dÔCØ—|’|Ü—M‘M $Ô'Ø—;’;Ø˜t×0Ñ0Ñ0Ø×)Ñ)×0Ñ0°Õ6ð 1ð ô —7‘7—>‘> $Ô'Ø‘Aà�AÜ—‘Ð-¨q°$Ô7Ø—|’|Ü—I‘I˜d”OØ—;’;Ø˜t×1Ñ1Ñ1Ø×*Ñ*×1Ñ1°$Õ7ð 2ð ð!  r2   c                 óò   — d}|srt         j                  j                  |«      r't        j                  |t         j                  «      }	 |S t         j                  j                  |«      }||k(  r	 |S |}|sŒr|S r  )rr   rs   r
  ÚaccessÚW_OKr  )rç   rs   r+   Úparents       r0   Úis_writablezFileOperator.is_writables  sn   € ØˆÙÜ�w‰w�~‰~˜dÔ#ÜŸ™ 4¬¯©Ó1�Øð
 ˆô	 —W‘W—_‘_ TÓ*ˆFØ˜Š~Øàˆð ˆDò ð ˆr2   c                 ór   — | j                   sJ ‚| j                  | j                  f}| j                  «        |S )zV
        Commit recorded changes, turn off recording, return
        changes.
        )r  r  r  rÿ   )rç   r+   s     r0   ÚcommitzFileOperator.commit  s5   € ð
 �{Š{ÑØ×#Ñ# T×%6Ñ%6Ð6ˆØ×ÑÔØˆr2   c                 óî  — | j                   sÙt        | j                  «      D ]7  }t        j                  j                  |«      sŒ#t        j                  |«       Œ9 t        | j                  d¬«      }|D ]n  }t        j                  |«      }|r@|dgk(  sJ ‚t        j                  j                  ||d   «      }t        j                  |«       t        j                  |«       Œp | j                  «        y )NT)ÚreverseÚ__pycache__r   )rý   Úlistr  rr   rs   r
  rö   Úsortedr  Úlistdirr'   Úrmdirrÿ   )rç   r*  Údirsr    ÚflistÚsds         r0   ÚrollbackzFileOperator.rollback‰  sº   € Ø�|Š|Ü˜$×,Ñ,Ó-ò !�Ü—7‘7—>‘> !Õ$Ü—I‘I˜a•Lð!ô ˜$×+Ñ+°TÔ:ˆDØò �ÜŸ
™
 1›�ÙØ  ] OÒ3Ñ3ÜŸ™Ÿ™ a¨¨q©Ó2�BÜ—H‘H˜R”LÜ—‘˜•ðð 	×ÑÕr2   ©F©Tr‘   )FFNF)rì   rð   rñ   rè   rÿ   r  r  r  r(  r+  r.  r9  Úset_executable_moder  rJ  rO  rT  rV  ra  rE   r2   r0   rû   rû   ä  sW   „ óò
"ò
)òCó((ó"(ò%ò<ò
&ñ DÐò
,óò"8ò*
òór2   rû   c                 óò   — | t         j                  v rt         j                  |    }nt        | «      }|€|}|S |j                  d«      }t	        ||j                  d«      «      }|D ]  }t	        ||«      }Œ |S )Nú.r   )rŒ   ÚmodulesÚ
__import__rŸ   r�   rx   )Úmodule_nameÚdotted_pathÚmodr+   r.   r›   s         r0   Úresolverl  ›  s~   € Ø”c—k‘kÑ!Ü�k‰k˜+Ñ&‰ä˜Ó%ˆØÐØˆð €Mð	 ×!Ñ! #Ó&ˆÜ˜˜eŸi™i¨›lÓ+ˆØò 	(ˆAÜ˜V QÓ'‰Fð	(à€Mr2   c                   óF   — e Zd Zd„ Zed„ «       Zd„ Zd„ Zej                  Z	y)ÚExportEntryc                 ó<   — || _         || _        || _        || _        y r‘   ©rY   r€   r~   rÍ   )rç   rY   r€   r~   rÍ   s        r0   rè   zExportEntry.__init__«  s   € ØˆŒ	ØˆŒØˆŒØˆ�
r2   c                 óB   — t        | j                  | j                  «      S r‘   )rl  r€   r~   r  s    r0   rÆ   zExportEntry.value±  s   € ä�t—{‘{ D§K¡KÓ0Ð0r2   c           	      óp   — d| j                   ›d| j                  ›d| j                  ›d| j                  ›d�	S )Nz<ExportEntry r©   rÉ   rW   ú>rp  r  s    r0   Ú__repr__zExportEntry.__repr__µ  s(   � Ø04·	³	¸4¿;»;Ø04·³¸T¿Z»ZðIð 	Ir2   c                 ó  — t        |t        «      sd}|S | j                  |j                  k(  xrO | j                  |j                  k(  xr4 | j                  |j                  k(  xr | j
                  |j
                  k(  }|S r  )r“   rn  rY   r€   r~   rÍ   )rç   Úotherr+   s      r0   Ú__eq__zExportEntry.__eq__¹  sw   € Ü˜%¤Ô-ØˆFð ˆð	 —i‘i 5§:¡:Ñ-ò 0Ø—k‘k U§\¡\Ñ1ò0à—k‘k U§\¡\Ñ1ò0ð —j‘j E§K¡KÑ/ð ð ˆr2   N)
rì   rð   rñ   rè   rä   rÆ   rt  rw  rê   Ú__hash__rE   r2   r0   rn  rn  ª  s1   „ òð ñ1ó ð1òIòð �‰�Hr2   rn  z¸(?P<name>(\w|[-.+])+)
                      \s*=\s*(?P<callable>(\w+)([:\.]\w+)*)
                      \s*(\[\s*(?P<flags>[\w-]+(=\w+)?(,\s*\w+(=\w+)?)*)\s*\])?
                      c                 óÞ  — t         j                  | «      }|sd }d| v sd| v rt        d| z  «      ‚|S |j                  «       }|d   }|d   }|j	                  d«      }|dk(  r|d }}n'|dk7  rt        d| z  «      ‚|j                  d«      \  }}|d	   }	|	€d| v sd| v rt        d| z  «      ‚g }	n,|	j                  d
«      D �
cg c]  }
|
j                  «       ‘Œ }	}
t        ||||	«      }|S c c}
w )NrJ   rK   zInvalid specification '%s'rY   ÚcallablerÉ   r   r   rÍ   rL   )ÚENTRY_REÚsearchr   Ú	groupdictÚcountrŸ   r^   rn  )Úspecificationr*   r+   r    rY   rs   Úcolonsr€   r~   rÍ   r*  s              r0   r·   r·   Ë  s.  € Ü�‰˜Ó&€AÙØˆØ�-Ñ 3¨-Ñ#7Ü"ð $*Ø,9ñ$:ó ;ð ;ð. €Mð) �K‰K‹MˆØ�‰yˆØ�‰}ˆØ—‘˜C“ˆØ�QŠ;Ø! 4�F‰Fà˜Š{Ü&ð (.Ø0=ñ(>ó ?ð ?à!ŸZ™Z¨›_‰NˆF�FØ�'‘
ˆØˆ=Ø�mÑ# s¨mÑ';Ü&ð (.Ø0=ñ(>ó ?ð ?à‰Eà(-¯©°CÓ(8Ö9 1�Q—W‘W•YÐ9ˆEÐ9Ü˜T 6¨6°5Ó9ˆØ€Mùò :s   ÃC*c                 ó¤  — | €d} t         j                  dk(  r2dt         j                  v r t         j                  j	                  d«      }nt         j                  j                  d«      }t         j                  j                  |«      r=t        j                  |t         j                  «      }|s/t        j                  d|«       n	 t        j                  |«       d}|s*t        j                  «       }t        j                  d|«       t         j                  j                  || «      S # t        $ r t        j                  d|d¬	«       d
}Y Œqw xY w)a¦  
    Return the default base location for distlib caches. If the directory does
    not exist, it is created. Use the suffix provided for the base directory,
    and default to '.distlib' if it isn't provided.

    On Windows, if LOCALAPPDATA is defined in the environment, then it is
    assumed to be a directory, and will be the parent directory of the result.
    On POSIX, and on Windows if LOCALAPPDATA is not defined, the user's home
    directory - using os.expanduser('~') - will be the parent directory of
    the result.

    The result is just the directory '.distlib' in the parent directory as
    determined above, or with the name specified with ``suffix``.
    z.distlibÚntÚLOCALAPPDATAz$localappdataú~z(Directory exists but is not writable: %sTzUnable to create %s)Úexc_infoFz#Default location unusable, using %s)rr   rY   Úenvironrs   Ú
expandvarsÚ
expanduserr#  rQ  rR  r  ÚwarningÚmakedirsÚOSErrorrÒ   rÓ   r'   )r~   r+   Úusables      r0   Úget_cache_baser�  ê  sü   € ð €~ØˆÜ	‡w�w�$‚˜>¬R¯Z©ZÑ7Ü—‘×#Ñ# OÓ4‰ô —‘×#Ñ# CÓ(ˆô 
‡w�w‡}�}�VÔÜ—‘˜6¤2§7¡7Ó+ˆÙÜ�N‰NÐEÀvÕNð	Ü�K‰K˜ÔØˆFñ Ü×!Ñ!Ó#ˆÜ�‰Ð<¸fÔEÜ�7‰7�<‰<˜ Ó'Ð'øô ò 	Ü�N‰NÐ0°&À4ˆNÔHØŠFð	ús   ÃD) Ä)#EÅEc                 óø   — t         j                  j                  t         j                  j                  | «      «      \  }}|r|j	                  dd«      }|j	                  t         j
                  d«      }||z   dz   S )a  
    Convert an absolute path to a directory name for use in a cache.

    The algorithm used is:

    #. On Windows, any ``':'`` in the drive is replaced with ``'---'``.
    #. Any occurrence of ``os.sep`` is replaced with ``'--'``.
    #. ``'.cache'`` is appended.
    rÉ   z---z--z.cache)rr   rs   Ú
splitdriver  r$   rt   )rs   r    r›   s      r0   Úpath_to_cache_dirr�    s_   € ô �7‰7×ÑœbŸg™gŸo™o¨dÓ3Ó4�D€A€qÙØ�I‰I�c˜5Ó!ˆØ	�	‰	”"—&‘&˜$Ó€AØˆq‰5�8ÑÐr2   c                 ó2   — | j                  d«      s| dz   S | S rp   )Úendswith)r/   s    r0   Úensure_slashr“  $  s   € Ø�:‰:�cŒ?Ø�3‰wˆØ€Hr2   c                 ó²   — d x}}d| v r1| j                  dd«      \  }} d|vr|}n|j                  dd«      \  }}|rt        |«      }|rt        |«      }||| fS )NrM   r   rÉ   )ÚrsplitrŸ   r   )rc   ÚusernameÚpasswordr€   s       r0   Úparse_credentialsr˜  *  sp   € ØÐ€HˆxØ
ˆf�}ØŸ™ s¨AÓ.‰ˆ�Ø�fÑØ‰Hà!'§¡¨c°1Ó!5ÑˆH�hÙÜ˜8Ó$ˆÙÜ˜8Ó$ˆØ�X˜vÐ%Ð%r2   c                  óZ   — t        j                  d«      } t        j                  | «       | S )Né   )rr   ÚumaskrŽ   s    r0   Úget_process_umaskrœ  9  s    € Ü�X‰X�d‹^€FÜ‡H�HˆVÔØ€Mr2   c                 ód   — d}d }t        | «      D ]  \  }}t        |t        «      rŒd} n |€J ‚|S )NTF)Ú	enumerater“   r   )Úseqr+   rh   r/   s       r0   Úis_string_sequencer   >  sD   € Ø€FØ€AÜ˜#“ò ‰ˆˆ1Ü˜!œ\Õ*ØˆFÙðð ˆ=ÑØ€Mr2   z3([a-z0-9_]+([.-][a-z_][a-z0-9_]*)*)-([a-z0-9_.+-]+)z-py(\d\.?\d?)c                 ó  — d}d}t        | «      j                  dd«      } t        j                  | «      }|r$|j	                  d«      }| d|j                  «        } |rft        | «      t        |«      dz   kD  rLt        j                  t        j                  |«      dz   | «      }|r|j                  «       }| d| | |dz   d |f}|€:t        j                  | «      }|r#|j	                  d«      |j	                  d«      |f}|S )zw
    Extract name, version, python version from a filename (no extension)

    Return name, version, pyver or None
    NrW   ú-r   z\br¥   )r   r$   ÚPYTHON_VERSIONr|  rÂ   Ústartru   Úrer    Úescaper"   ÚPROJECT_NAME_AND_VERSION)ÚfilenameÚproject_namer+   Úpyverr*   Úns         r0   Úsplit_filenamer¬  M  sñ   € ð €FØ€EÜ�xÓ ×(Ñ(¨¨cÓ2€HÜ×Ñ˜hÓ'€AÙØ—‘˜“
ˆØ˜J˜QŸW™W›YÐ'ˆÙœ˜H›¬¨LÓ(9¸AÑ(=Ò=Ü�H‰H”R—Y‘Y˜|Ó,¨uÑ4°hÓ?ˆÙØ—‘“ˆAØ˜b˜q�\ 8¨A°©E¨FÐ#3°UÐ:ˆFØ€~Ü$×*Ñ*¨8Ó4ˆÙØ—W‘W˜Q“Z §¡¨£¨UÐ2ˆFØ€Mr2   z-(?P<name>[\w .-]+)\s*\(\s*(?P<ver>[^\s)]+)\)$c                 ó¸   — t         j                  | «      }|st        d| z  «      ‚|j                  «       }|d   j	                  «       j                  «       |d   fS )zÇ
    A utility method used to get name and version from a string.

    From e.g. a Provides-Dist value.

    :param p: A value in a form 'foo (1.0)'
    :return: The name and version as a tuple.
    z$Ill-formed name/version string: '%s'rY   Úver)ÚNAME_VERSION_REr    r   r}  r^   r–   )r›   r*   r    s      r0   Úparse_name_and_versionr°  i  sV   € ô 	×Ñ˜aÓ €AÙÜÐGÈ!ÑKÓLÐLØ	�‰‹€AØˆV‰9�?‰?Ó×"Ñ"Ó$ a¨¡hÐ.Ð.r2   c                 ó²  — t        «       }t        | xs g «      } t        |xs g «      }d| v r| j                  d«       ||z  }| D ]�  }|dk(  r|j                  |«       Œ|j                  d«      r8|dd  }||vrt        j                  d|z  «       ||v sŒQ|j                  |«       Œc||vrt        j                  d|z  «       |j                  |«       Œ‘ |S )NÚ*r¢  r   zundeclared extra: %s)rÎ   rö   r  r_   r  r‰  )Ú	requestedÚ	availabler+   ÚrÚunwanteds        r0   Ú
get_extrasr·  x  s×   € Ü‹U€FÜ�I’O Ó$€IÜ�I’O Ó$€IØ
ˆiÑØ×Ñ˜ÔØ�)ÑˆØò ˆØ�Š8Ø�J‰J�q�MØ�\‰\˜#ÔØ˜˜�uˆHØ˜yÑ(Ü—‘Ð5¸Ñ@ÔAØ˜6Ò!Ø—‘˜hÕ'à˜	Ñ!Ü—‘Ð5¸Ñ9Ô:Ø�J‰J�q�Mðð €Mr2   c                 ót  — i }	 t        | «      }|j                  «       }|j                  d«      }|j                  d«      st        j                  d|«       |S  t        j                  d«      |«      }t        j                  |«      }	 |S # t        $ r"}t        j                  d| |«       Y d }~|S d }~ww xY w)NzContent-Typezapplication/jsonz(Unexpected response for JSON request: %sr¦   z&Failed to get external data for %s: %s)r   r  Úgetr_   r  rN  r±   r²   r´   rµ   r¸   Ú	exception)r\   r+   ÚrespÚheadersÚctÚreaderÚes          r0   Ú_get_external_datarÀ  ‘  s³   € Ø€FðKô �s‹|ˆØ—)‘)“+ˆØ�[‰[˜Ó(ˆØ�}‰}Ð/Ô0Ü�L‰LÐCÀRÔHð €Mð /”V×%Ñ% gÓ.¨tÓ4ˆFô —Y‘Y˜vÓ&‰Fð €Møô ò KÜ×ÑÐAÀ3È×JÐJØ€MûðKús   „AB Á0B Â	B7ÂB2Â2B7z'https://www.red-dove.com/pypi/projects/c                 ón   — | d   j                  «       ›d| ›d�}t        t        |«      }t        |«      }|S )Nr   rq   z/project.json©Úupperr   Ú_external_data_base_urlrÀ  )rY   r\   r+   s      r0   Úget_project_datarÅ  §  s2   € Ø"& q¡'§-¡-¥/²4Ð
8€CÜ
Ô)¨3Ó
/€CÜ Ó$€FØ€Mr2   c                 óp   — | d   j                  «       ›d| ›d|›d�}t        t        |«      }t        |«      S )Nr   rq   z	/package-z.jsonrÂ  )rY   Úversionr\   s      r0   Úget_package_datarÈ  ­  s0   € Ø%)¨!¡W§]¡]¥_²dºGÐ
D€CÜ
Ô)¨3Ó
/€CÜ˜cÓ"Ð"r2   c                   ó"   — e Zd ZdZd„ Zd„ Zd„ Zy)ÚCachezæ
    A class implementing a cache for resources that need to live in the file system
    e.g. shared libraries. This class was moved from resources to here because it
    could be used by other modules, e.g. the wheel module.
    c                 ód  — t         j                  j                  |«      st        j                  |«       t        j                  |«      j
                  dz  dk7  rt        j                  d|«       t         j                  j                  t         j                  j                  |«      «      | _
        y)zu
        Initialise an instance.

        :param base: The base directory where the cache should be located.
        é?   r   zDirectory '%s' is not privateN)rr   rs   r#  rŠ  r  r3  r  r‰  r  Únormpathr}   )rç   r}   s     r0   rè   zCache.__init__º  sm   € ô �w‰w�}‰}˜TÔ"Ü�K‰K˜ÔÜ�G‰G�D‹M×!Ñ! DÑ(¨QÒ.Ü�N‰NÐ<¸dÔCÜ—G‘G—O‘O¤B§G¡G×$4Ñ$4°TÓ$:Ó;ˆ�	r2   c                 ó   — t        |«      S )zN
        Converts a resource prefix to a directory name in the cache.
        )r�  )rç   r€   s     r0   Úprefix_to_dirzCache.prefix_to_dirÈ  s   € ô ! Ó(Ð(r2   c                 óø  — g }t        j                  | j                  «      D ]µ  }t         j                  j	                  | j                  |«      }	 t         j                  j                  |«      st         j                  j                  |«      rt        j                  |«       n4t         j                  j                  |«      rt        j                  |«       Œ· |S # t        $ r |j                  |«       Y ŒÖw xY w)z"
        Clear the cache.
        )rr   r\  r}   rs   r'   r  r  rö   r#  r	   rÔ   r¸   r%   )rç   Únot_removedÚfns      r0   ÚclearzCache.clearÎ  s°   € ð ˆÜ—*‘*˜TŸY™YÓ'ò 	'ˆBÜ—‘—‘˜dŸi™i¨Ó,ˆBð'Ü—7‘7—>‘> "Ô%¬¯©¯©¸Ô);Ü—I‘I˜b•MÜ—W‘W—]‘] 2Ô&Ü—M‘M "Ô%øð	'ð Ðøô ò 'Ø×"Ñ" 2Ö&ð'ús   ÁBCÃC9Ã8C9N)rì   rð   rñ   Ú__doc__rè   rÏ  rÓ  rE   r2   r0   rÊ  rÊ  ³  s   „ ñò<ò)ór2   rÊ  c                   ó0   — e Zd ZdZd„ Zdd„Zd„ Zd„ Zd„ Zy)	Ú
EventMixinz1
    A very simple publish/subscribe system.
    c                 ó   — i | _         y r‘   )Ú_subscribersr  s    r0   rè   zEventMixin.__init__ã  s
   € ØˆÕr2   c                 ó˜   — | j                   }||vrt        |g«      ||<   y||   }|r|j                  |«       y|j                  |«       y)a`  
        Add a subscriber for an event.

        :param event: The name of an event.
        :param subscriber: The subscriber to be added (and called when the
                           event is published).
        :param append: Whether to append or prepend the subscriber to an
                       existing subscriber list for the event.
        N)rØ  r   r%   Ú
appendleft)rç   ÚeventÚ
subscriberr%   ÚsubsÚsqs         r0   r  zEventMixin.addæ  sK   € ð × Ñ ˆØ˜ÑÜ  Ó-ˆD�ŠKà�e‘ˆBÙØ—	‘	˜*Õ%à—‘˜jÕ)r2   c                 óh   — | j                   }||vrt        d|z  «      ‚||   j                  |«       y)z™
        Remove a subscriber for an event.

        :param event: The name of an event.
        :param subscriber: The subscriber to be removed.
        zNo subscribers: %rN)rØ  rô   rö   )rç   rÛ  rÜ  rÝ  s       r0   rö   zEventMixin.removeú  s:   € ð × Ñ ˆØ˜ÑÜÐ1°EÑ9Ó:Ð:ØˆU‰×Ñ˜:Õ&r2   c                 óL   — t        | j                  j                  |d«      «      S )z�
        Return an iterator for the subscribers for an event.
        :param event: The event to return subscribers for.
        rE   )ÚiterrØ  r¹  )rç   rÛ  s     r0   Úget_subscriberszEventMixin.get_subscribers  s"   € ô
 �D×%Ñ%×)Ñ)¨%°Ó4Ó5Ð5r2   c                 óð   — g }| j                  |«      D ]   }	  ||g|¢­i |¤Ž}|j	                  |«       Œ" t        j                  d||||«       |S # t        $ r t        j                  d«       d}Y ŒPw xY w)a^  
        Publish a event and return a list of values returned by its
        subscribers.

        :param event: The event to publish.
        :param args: The positional arguments to pass to the event's
                     subscribers.
        :param kwargs: The keyword arguments to pass to the event's
                       subscribers.
        z"Exception during event publicationNz/publish %s: args = %s, kwargs = %s, result = %s)râ  r¸   r  rº  r%   rN  )rç   rÛ  ÚargsÚkwargsr+   rÜ  rÆ   s          r0   ÚpublishzEventMixin.publish  sŽ   € ð ˆØ×.Ñ.¨uÓ5ò 	!ˆJðÙ" 5Ð:¨4Ò:°6Ñ:�ð �M‰M˜%Õ ð	!ô 	�‰ÐFØ˜D &¨&ô	2àˆøô ò Ü× Ñ Ð!EÔFØ’ðús   ˜AÁ A5Á4A5Nrc  )	rì   rð   rñ   rÔ  rè   r  rö   râ  ræ  rE   r2   r0   rÖ  rÖ  ß  s    „ ñòó*ò(
'ò6ór2   rÖ  c                   óX   — e Zd Zd„ Zd„ Zdd„Zd„ Zd„ Zd„ Zd„ Z	e
d„ «       Ze
d	„ «       Zy
)Ú	Sequencerc                 ó>   — i | _         i | _        t        «       | _        y r‘   )Ú_predsÚ_succsrÎ   Ú_nodesr  s    r0   rè   zSequencer.__init__(  s   € ØˆŒØˆŒÜ“eˆ�r2   c                 ó:   — | j                   j                  |«       y r‘   )rì  r  )rç   Únodes     r0   Úadd_nodezSequencer.add_node-  s   € Ø�‰�‰˜Õr2   c                 ó8  — || j                   v r| j                   j                  |«       |rït        | j                  j	                  |d«      «      D ]  }| j                  ||«       Œ t        | j
                  j	                  |d«      «      D ]  }| j                  ||«       Œ t        | j                  j                  «       «      D ]  \  }}|rŒ	| j                  |= Œ t        | j
                  j                  «       «      D ]  \  }}|rŒ	| j
                  |= Œ y y )NrE   )rì  rö   rÎ   rê  r¹  rë  rZ  r¶   )rç   rî  Úedgesr›   r/   rÄ   rT   s          r0   Úremove_nodezSequencer.remove_node0  sô   € Ø�4—;‘;ÑØ�K‰K×Ñ˜tÔ$ÙÜ˜Ÿ™Ÿ™¨¨rÓ2Ó3ò %�Ø—‘˜A˜tÕ$ð%ä˜Ÿ™Ÿ™¨¨rÓ2Ó3ò %�Ø—‘˜D !Õ$ð%ô ˜TŸ[™[×.Ñ.Ó0Ó1ò '‘��1ÚØŸ™ A™ð'ô ˜TŸ[™[×.Ñ.Ó0Ó1ò '‘��1ÚØŸ™ A™ñ'ð r2   c                 óÞ   — ||k7  sJ ‚| j                   j                  |t        «       «      j                  |«       | j                  j                  |t        «       «      j                  |«       y r‘   )rê  Ú
setdefaultrÎ   r  rë  )rç   ÚpredÚsuccs      r0   r  zSequencer.add@  sN   € Ø�tŠ|ÑØ�‰×Ñ˜t¤S£UÓ+×/Ñ/°Ô5Ø�‰×Ñ˜t¤S£UÓ+×/Ñ/°Õ5r2   c                 ó  — ||k7  sJ ‚	 | j                   |   }| j                  |   }	 |j	                  |«       |j	                  |«       y # t        $ r t        d|z  «      ‚w xY w# t        $ r t        |›d|›�«      ‚w xY w)Nz%r not a successor of anythingz not a successor of )rê  rë  ÚKeyErrorrô   rö   )rç   rõ  rö  ÚpredsÚsuccss        r0   rö   zSequencer.removeE  s’   € Ø�tŠ|Ñð	FØ—K‘K Ñ%ˆEØ—K‘K Ñ%ˆEð	HØ�L‰L˜ÔØ�L‰L˜Õøô	 ò 	FÜÐ=ÀÑDÓEÐEð	Fûô
 ò 	HÜº4ÁÐFÓGÐGð	Hús   ‰A ¨"A& ÁA#Á&B c                 ó^   — || j                   v xs || j                  v xs || j                  v S r‘   )rê  rë  rì  )rç   Ústeps     r0   Úis_stepzSequencer.is_stepR  s4   € Ø˜Ÿ™Ð#ò $ t¨t¯{©{Ð':ò $Ø˜Ÿ™Ð#ð	%r2   c                 ó¶  — | j                  |«      st        d|z  «      ‚g }g }t        «       }|j                  |«       |r�|j	                  d«      }||v r(||k7  rr|j                  |«       |j                  |«       nO|j                  |«       |j                  |«       | j                  j                  |d«      }|j                  |«       |rŒ�t        |«      S )NzUnknown: %rr   rE   )rý  rô   rÎ   r%   rx   rö   r  rê  r¹  ÚextendÚreversed)rç   Úfinalr+   ÚtodoÚseenrü  rù  s          r0   Ú	get_stepszSequencer.get_stepsV  s¼   € Ø�|‰|˜EÔ"Ü˜]¨UÑ2Ó3Ð3ØˆØˆÜ‹uˆØ�‰�EÔÙØ—8‘8˜A“;ˆDØ�t‰|ð ˜5’=Ø—M‘M $Ô'Ø—M‘M $Õ'à—‘˜”Ø—‘˜dÔ#ØŸ™Ÿ™¨¨bÓ1�Ø—‘˜EÔ"ò ô  ˜ÓÐr2   c                 ó€   ‡‡‡‡‡‡‡— dgŠg Ši Ši Šg Š| j                   Šˆˆˆˆˆˆˆfd„Š‰D ]  }|‰vsŒ ‰|«       Œ ‰S )Nr   c                 ó¼  •— ‰d   ‰| <   ‰d   ‰| <   ‰dxx   dz  cc<   ‰
j                  | «       	 ‰|    }|D ]>  }|‰vr ‰|«       t        ‰|    ‰|   «      ‰| <   Œ%|‰
v sŒ*t        ‰|    ‰|   «      ‰| <   Œ@ ‰|    ‰|    k(  rHg }	 ‰
j                  «       }|j                  |«       || k(  rnŒ(t	        |«      }‰	j                  |«       y y # t        $ r g }Y Œ¤w xY w©Nr   r   )r%   r¸   Úminrx   Útuple)rî  Ú
successorsÚ	successorÚconnected_componentÚ	componentÚgraphÚindexÚindex_counterÚlowlinksr+   ÚstackÚstrongconnects        €€€€€€€r0   r  z3Sequencer.strong_connections.<locals>.strongconnectz  s  ø€ à'¨Ñ*ˆE�$‰KØ*¨1Ñ-ˆH�T‰NØ˜!Ó Ñ!ÓØ�L‰L˜Ôð Ø" 4™[�
ð (ò J�	Ø HÑ,á! )Ô,Ü%(¨°$©¸ÀÑ8KÓ%L�H˜T’NØ %Ò'ô &)¨°$©¸¸iÑ8HÓ%I�H˜T’NðJð ˜‰~  t¡Ò,Ø&(Ð#àØ %§	¡	£�IØ'×.Ñ.¨yÔ9Ø  DÒ(¨%ð ô "Ð"5Ó6�	à—‘˜iÕ(ð -øô ò  Ø’
ð ús   ±C ÃCÃC)rë  )	rç   rî  r  r  r  r  r+   r  r  s	     @@@@@@@r0   Ústrong_connectionszSequencer.strong_connectionso  s\   þ€ ð ˜ˆØˆØˆØˆØˆà—‘ˆ÷ 	)ò  	)ðD ò 	$ˆDØ˜8Ò#Ù˜dÕ#ð	$ð ˆr2   c           	      ó  — dg}| j                   D ]0  }| j                   |   }|D ]  }|j                  d|›d|›d�«       Œ Œ2 | j                  D ]  }|j                  d|z  «       Œ |j                  d«       dj                  |«      S )Nzdigraph G {z  z -> rV   z  %s;ú}ú
)rê  r%   rì  r'   )rç   r+   rö  rù  rõ  rî  s         r0   ÚdotzSequencer.dot¢  sŠ   € à�ˆØ—K‘Kò 	<ˆDØ—K‘K Ñ%ˆEØò <�Ø—’ªt²TÐ:Õ;ñ<ð	<ð —K‘Kò 	*ˆDØ�M‰M˜' D™.Õ)ð	*à�‰�cÔØ�y‰y˜Ó Ð r2   Nrb  )rì   rð   rñ   rè   rï  rò  r  rö   rý  r  Úpropertyr  r  rE   r2   r0   rè  rè  '  sO   „ òò
ó'ò 6ò
Hò%ò ð2 ñ0ó ð0ðd ñ	!ó ñ	!r2   rè  )ú.tar.gzú.tar.bz2ú.tarú.zipú.tgzú.tbzú.whlc                 ó\  ‡‡
— ˆˆ
fd„}t         j                  j                  ‰«      Št        ‰«      Š
d }|€d| j	                  d«      rd}nP| j	                  d«      rd}d}n:| j	                  d«      rd}d	}n$| j	                  d
«      rd}d}nt        d| z  «      ‚	 |dk(  r.t        | d«      }|rW|j                  «       }|D ]
  } ||«       Œ n7t        j                  | «      }|r|j                  «       }|D ]
  } ||«       Œ |dk7  rft        j                  d   dk  rP|j                  «       D ]=  }	t        |	j                  t         «      rŒ|	j                  j#                  d«      |	_        Œ? |j%                  ‰«       |r|j'                  «        y y # |r|j'                  «        w w xY w)Nc                 ó,  •— t        | t        «      s| j                  d«      } t        j                  j                  t        j                  j                  ‰| «      «      }|j                  ‰«      r|‰   t        j                  k7  rt        d|z  «      ‚y )Nr¦   zpath outside destination: %r)
r“   r   Údecoderr   rs   r  r'   r_   rt   rô   )rs   r›   Údest_dirÚplens     €€r0   Ú
check_pathzunarchive.<locals>.check_path·  sm   ø€ Ü˜$¤	Ô*Ø—;‘;˜wÓ'ˆDÜ�G‰G�O‰OœBŸG™GŸL™L¨°4Ó8Ó9ˆØ�|‰|˜HÔ%¨¨4©´B·F±FÒ):ÜÐ;¸aÑ?Ó@Ð@ð *;r2   )r  r   Úzip)r  r  Útgzzr:gz)r  r  Útbzzr:bz2r  Útarrµ  zUnknown format for %rr   r¥   r¦   )rr   rs   r  ru   r’  rô   r   ÚnamelistÚtarfiler$  ÚgetnamesrŒ   r°   Ú
getmembersr“   rY   r   r#  Ú
extractallr¼   )Úarchive_filenamer$  Úformatr  r&  Úarchiver8  ÚnamesrY   Útarinfor%  s    `        @r0   Ú	unarchiver5  µ  sª  ù€ õAô �w‰w�‰˜xÓ(€HÜˆx‹=€DØ€GØ€~Ø×$Ñ$Ð%5Ô6Ø‰FØ×&Ñ&Ð':Ô;ØˆFØ‰DØ×&Ñ&Ð';Ô<ØˆFØ‰DØ×&Ñ& vÔ.ØˆFØ‰DäÐ4Ð7GÑGÓHÐHðØ�UŠ?ÜÐ.°Ó4ˆGÙØ×(Ñ(Ó*�Ø!ò %�DÙ˜tÕ$ñ%ô —l‘lÐ#3°TÓ:ˆGÙØ×(Ñ(Ó*�Ø!ò %�DÙ˜tÕ$ð%à�UŠ?œs×/Ñ/°Ñ2°QÒ6ð
 #×-Ñ-Ó/ò @�Ü! '§,¡,´	Õ:Ø#*§<¡<×#6Ñ#6°wÓ#?�G•Lð@ð 	×Ñ˜8Ô$ñ Ø�M‰M�Oð ø‰7Ø�M‰M�Oð ús   ÂB2F Å3F ÆF+c                 ó‚  — t        j                  «       }t        | «      }t        |d«      5 }t	        j
                  | «      D ]d  \  }}}|D ]Y  }t        j                  j                  ||«      }||d }	t        j                  j                  |	|«      }
|j                  ||
«       Œ[ Œf 	 ddd«       |S # 1 sw Y   |S xY w)z*zip a directory tree into a BytesIO objectr   N)	ÚioÚBytesIOru   r   rr   Úwalkrs   r'   rÏ   )Ú	directoryr+   ÚdlenÚzfrv   r^  r7  rY   ÚfullÚrelr   s              r0   Úzip_dirr?  ë  s¯   € ä�Z‰Z‹\€FÜˆy‹>€DÜ	�˜Ó	ð % Ü!#§¡¨Ó!3ò 	%ÑˆD�$˜Øò %�Ü—w‘w—|‘| D¨$Ó/�Ø˜4˜5�k�Ü—w‘w—|‘| C¨Ó.�Ø—‘˜˜tÕ$ñ	%ñ	%÷%ð €M÷%ð €Mús   ¬A=B4Â4B>)r   ÚKÚMÚGÚTÚPc                   óv   — e Zd ZdZdd„Zd„ Zd„ Zd„ Zd„ Ze	d„ «       Z
e	d„ «       Zd	„ Ze	d
„ «       Ze	d„ «       Zy)ÚProgressÚUNKNOWNc                 ój   — |�||k\  sJ ‚|x| _         | _        || _        d | _        d| _        d| _        y )Nr   F)r  ÚcurÚmaxÚstartedÚelapsedÚdone)rç   ÚminvalÚmaxvals      r0   rè   zProgress.__init__  s;   € Øˆ~ ¨6Ò!1Ñ1Ø$Ð$ˆŒ�4”8ØˆŒØˆŒØˆŒØˆ�	r2   c                 óæ   — | j                   |k  sJ ‚| j                  �|| j                  k  sJ ‚|| _        t        j                  «       }| j                  €|| _        y || j                  z
  | _        y r‘   )r  rJ  rI  ÚtimerK  rL  )rç   ÚcurvalÚnows      r0   ÚupdatezProgress.update
  s\   € Ø�x‰x˜6Ò!Ñ!Ø�x‰xÐ 6¨T¯X©XÒ#5Ñ5ØˆŒÜ�i‰i‹kˆØ�<‰<ÐØˆD�Là §¡Ñ-ˆD�Lr2   c                 óN   — |dk\  sJ ‚| j                  | j                  |z   «       y )Nr   )rT  rI  )rç   Úincrs     r0   Ú	incrementzProgress.increment  s    € Ø�qŠyÑØ�‰�D—H‘H˜t‘OÕ$r2   c                 ó<   — | j                  | j                  «       | S r‘   )rT  r  r  s    r0   r¤  zProgress.start  s   € Ø�‰�D—H‘HÔØˆr2   c                 ó`   — | j                   �| j                  | j                   «       d| _        y ©NT)rJ  rT  rM  r  s    r0   ÚstopzProgress.stop  s#   € Ø�8‰8ÐØ�K‰K˜Ÿ™Ô!Øˆ�	r2   c                 óJ   — | j                   €| j                  S | j                   S r‘   )rJ  Úunknownr  s    r0   ÚmaximumzProgress.maximum!  s   € à#Ÿx™xÐ/ˆt�|‰|Ð=°T·X±XÐ=r2   c                 ó¼   — | j                   rd}|S | j                  €d}|S d| j                  | j                  z
  z  | j                  | j                  z
  z  }d|z  }|S )Nz100 %z ?? %g      Y@z%3d %%)rM  rJ  rI  r  )rç   r+   rT   s      r0   Ú
percentagezProgress.percentage%  sf   € à�9Š9ØˆFð ˆð �X‰XÐØˆFð ˆð ˜Ÿ™ D§H¡HÑ,Ñ-°·±¸D¿H¹HÑ1DÑEˆAØ ‘\ˆFØˆr2   c                 ó´   — |dk  r| j                   �| j                  | j                  k(  rd}|S t        j                  dt        j
                  |«      «      }|S )Nr   z??:??:??z%H:%M:%S)rJ  rI  r  rQ  ÚstrftimeÚgmtime)rç   Údurationr+   s      r0   Úformat_durationzProgress.format_duration0  sM   € Ø˜ŠM˜tŸx™xÐ/°4·8±8¸t¿x¹xÒ3GØˆFð
 ˆô —]‘] :¬t¯{©{¸8Ó/DÓEˆFØˆr2   c                 ó|  — | j                   rd}| j                  }nŒd}| j                  €d}n{| j                  dk(  s| j                  | j                  k(  rd}nPt        | j                  | j                  z
  «      }|| j                  | j                  z
  z  }|dz
  | j                  z  }|›d| j                  |«      ›�S )NÚDonezETA ró   r   r   z: )rM  rL  rJ  rI  r  Úfloatre  )rç   r€   ri   s      r0   ÚETAzProgress.ETA9  s¥   € à�9Š9ØˆFØ—‘‰Að ˆFØ�x‰xÐØ‘Ø—‘ Ò" t§x¡x°4·8±8Ò';Ø‘ô ˜$Ÿ(™( T§X¡XÑ-Ó.�Ø�T—X‘X §¡Ñ(Ñ(�Ø˜‘U˜dŸl™lÑ*�Ú! 4×#7Ñ#7¸Ô#:Ð;Ð;r2   c                 ó®   — | j                   dk(  rd}n&| j                  | j                  z
  | j                   z  }t        D ]  }|dk  r n|dz  }Œ d|fz  S )Nr   g        iè  g     @�@z%d %sB/s)rL  rI  r  ÚUNITS)rç   r+   Úunits      r0   ÚspeedzProgress.speedL  sb   € à�<‰<˜1ÒØ‰Fà—h‘h §¡Ñ)¨T¯\©\Ñ9ˆFÜò 	ˆDØ˜Š}ÙØ�fÑ‰Fð	ð ˜V T˜NÑ*Ð*r2   N)r   éd   )rì   rð   rñ   r]  rè   rT  rW  r¤  r[  r  r^  r`  re  ri  rm  rE   r2   r0   rF  rF  ÿ  su   „ Ø€Góò.ò%òòð
 ñ>ó ð>ð ñó ðòð ñ<ó ð<ð$ ñ	+ó ñ	+r2   rF  z\{([^}]*)\}z[^/\\,{]\*\*|\*\*[^/\\,}]z^[^{]*\}|\{[^}]*$c                 ó¬   — t         j                  | «      rd}t        || z  «      ‚t        j                  | «      rd}t        || z  «      ‚t	        | «      S )zAExtended globbing function that supports ** and {opt1,opt2,opt3}.z7invalid glob %r: recursive glob "**" must be used alonez2invalid glob %r: mismatching set marker '{' or '}')Ú_CHECK_RECURSIVE_GLOBr|  rô   Ú_CHECK_MISMATCH_SETÚ_iglob)Ú	path_globr  s     r0   r   r   a  sQ   € ä×#Ñ# IÔ.ØKˆÜ˜˜y™Ó)Ð)Ü×!Ñ! )Ô,ØFˆÜ˜˜y™Ó)Ð)Ü�)ÓÐr2   c              #   ó   K  — t         j                  | d«      }t        |«      dkD  rXt        |«      dk(  sJ |«       ‚|\  }}}|j                  d«      D ](  }t        dj	                  |||f«      «      D ]  }|–— Œ Œ* y d| vrt        | «      D ]  }|–— Œ y | j                  dd«      \  }}|dk(  rd}|dk(  rd}n"|j                  d«      }|j                  d	«      }t        j                  |«      D ]W  \  }}}	t        j                  j                  |«      }t        t        j                  j	                  ||«      «      D ]  }
|
–— Œ ŒY y ­w)
Nr   r¥   rL   r   z**rf  r²  rq   ú\)Ú	RICH_GLOBrŸ   ru   rr  r'   Ú	std_iglobr(   rr   r9  rs   rÍ  )rs  Úrich_path_globr€   rÎ   r~   Úitemrs   ÚradicalÚdirr7  rÒ  s              r0   rr  rr  l  sM  è ø€ Ü—_‘_ Y°Ó2€NÜ
ˆ>Ó˜QÒÜ�>Ó" aÒ'Ð7¨Ô7Ø,Ñˆ��VØ—I‘I˜c“Nò 	ˆDÜ˜rŸw™w¨°°fÐ'=Ó>Ó?ò �Ø“
ññ	ð �yÑ Ü! )Ó,ò �Ø“
ñð (Ÿo™o¨d°AÓ6‰OˆF�GØ˜Š|Ø�Ø˜"Š}Ø‘ð "Ÿ.™.¨Ó-�Ø!Ÿ.™.¨Ó.�Ü$&§G¡G¨F£Oò Ñ ��c˜5Ü—w‘w×'Ñ'¨Ó-�Ü ¤§¡§¡¨d°GÓ!<Ó=ò �BØ“Hññùs   ‚EE)ÚHTTPSHandlerÚmatch_hostnameÚCertificateErrorc                   ó   — e Zd ZdZdZd„ Zy)ÚHTTPSConnectionNTc                 ó*  — t        j                  | j                  | j                  f| j                  «      }t        | dd«      r|| _        | j                  «        t        j                  t        j                  «      }t        t        d«      r#|xj                  t        j                  z  c_        | j                  r&|j                  | j                  | j                   «       i }| j"                  rQt        j$                  |_        |j)                  | j"                  ¬«       t        t        dd«      r| j                  |d<    |j*                  |fi |¤Ž| _        | j"                  r]| j,                  rP	 t/        | j                  j1                  «       | j                  «       t2        j5                  d| j                  «       y y y # t6        $ rE | j                  j9                  t         j:                  «       | j                  j=                  «        ‚ w xY w)NÚ_tunnel_hostFÚOP_NO_SSLv2)ÚcafileÚHAS_SNIÚserver_hostnamezHost verified: %s)rÝ   Úcreate_connectionÚhostÚportÚtimeoutr�   ÚsockÚ_tunnelÚsslÚ
SSLContextÚPROTOCOL_SSLv23r‹   Úoptionsrƒ  Ú	cert_fileÚload_cert_chainÚkey_fileÚca_certsÚCERT_REQUIREDÚverify_modeÚload_verify_locationsÚwrap_socketÚcheck_domainr}  Úgetpeercertr  rN  r~  ÚshutdownÚ	SHUT_RDWRr¼   )rç   r‹  Úcontextrå  s       r0   ÚconnectzHTTPSConnection.connect•  sv  € Ü×+Ñ+¨T¯Y©Y¸¿	¹	Ð,BÀDÇLÁLÓQˆDÜ�t˜^¨UÔ3Ø �”	Ø—‘”ä—n‘n¤S×%8Ñ%8Ó9ˆGÜ”s˜MÔ*Ø—’¤3§?¡?Ñ2•Ø�~Š~Ø×'Ñ'¨¯©¸¿¹ÔFØˆFØ�}Š}Ü&)×&7Ñ&7�Ô#Ø×-Ñ-°T·]±]Ð-ÔCÜœ3 	¨5Ô1Ø04·	±	�FÐ,Ñ-à+˜×+Ñ+¨DÑ;°FÑ;ˆDŒIØ�}Š} ×!2Ò!2ðÜ" 4§9¡9×#8Ñ#8Ó#:¸D¿I¹IÔFÜ—L‘LÐ!4°d·i±iÕ@ð "3ˆ}øô (ò Ø—I‘I×&Ñ&¤v×'7Ñ'7Ô8Ø—I‘I—O‘OÔ%Øðús   Å3AG ÇAH)rì   rð   rñ   r”  r™  rž  rE   r2   r0   r€  r€  �  s   „ ØˆØˆó	r2   r€  c                   ó    — e Zd Zdd„Zd„ Zd„ Zy)r|  c                 óJ   — t        j                  | «       || _        || _        y r‘   )ÚBaseHTTPSHandlerrè   r”  r™  )rç   r”  r™  s      r0   rè   zHTTPSHandler.__init__²  s   € Ü×%Ñ% dÔ+Ø$ˆDŒMØ ,ˆDÕr2   c                 óx   — t        |i |¤Ž}| j                  r"| j                  |_        | j                  |_        |S )a  
            This is called to create a connection instance. Normally you'd
            pass a connection class to do_open, but it doesn't actually check for
            a class, and just expects a callable. As long as we behave just as a
            constructor would have, we should be OK. If it ever changes so that
            we *must* pass a class, we'll create an UnsafeHTTPSConnection class
            which just sets check_domain to False in the class definition, and
            choose which one to pass to do_open.
            )r€  r”  r™  )rç   rä  rå  r+   s       r0   Ú_conn_makerzHTTPSHandler._conn_maker·  s8   € ô % dÐ5¨fÑ5ˆFØ�}Š}Ø"&§-¡-�”Ø&*×&7Ñ&7�Ô#ØˆMr2   c                 ó¾   — 	 | j                  | j                  |«      S # t        $ r5}dt        |j                  «      v rt        d|j                  z  «      ‚‚ d }~ww xY w)Nzcertificate verify failedz*Unable to verify server certificate for %s)Údo_openr£  r   ÚstrÚreasonr~  rˆ  )rç   rd   r¿  s      r0   Ú
https_openzHTTPSHandler.https_openÇ  sc   € ðØ—|‘| D×$4Ñ$4°cÓ:Ð:øÜò Ø.´#°a·h±h³-Ñ?Ü*ð ,4Ø69·h±hñ,?ó @ð @ð ûðús   ‚ ž	A§0AÁANrc  )rì   rð   rñ   rè   r£  r¨  rE   r2   r0   r|  r|  ±  s   „ ó	-ò
	ó 	r2   r|  c                   ó   — e Zd Zd„ Zy)ÚHTTPSOnlyHandlerc                 ó   — t        d|z  «      ‚)NzAUnexpected HTTP request on what should be a secure connection: %s)r   )rç   rd   s     r0   Ú	http_openzHTTPSOnlyHandler.http_openÛ  s   € Üð ,Ø.1ñ2ó 3ð 3r2   N)rì   rð   rñ   r¬  rE   r2   r0   rª  rª  Ú  s   „ ó	3r2   rª  c                   ó   — e Zd Zdd„Zd„ Zy)Ú	Transportc                 óR   — || _         t        j                  j                  | |«       y r‘   )rŠ  r   r®  rè   ©rç   rŠ  Úuse_datetimes      r0   rè   zTransport.__init__ã  s   € ØˆŒÜ×Ñ×$Ñ$ T¨<Õ8r2   c                 óÌ   — | j                  |«      \  }}}| j                  r|| j                  d   k7  r#|| _        |t        j                  |«      f| _        | j                  d   S r  )Úget_host_infoÚ_connectionÚ_extra_headersr   ÚHTTPConnection)rç   rˆ  ÚhÚehÚx509s        r0   Úmake_connectionzTransport.make_connectionç  sd   € Ø×(Ñ(¨Ó.‰ˆˆ2ˆtØ×Ò 4¨4×+;Ñ+;¸AÑ+>Ò#>Ø"$ˆDÔØ#¤W×%;Ñ%;¸AÓ%>Ð>ˆDÔØ×Ñ Ñ"Ð"r2   N©r   ©rì   rð   rñ   rè   rº  rE   r2   r0   r®  r®  â  s   „ ó9ó#r2   r®  c                   ó   — e Zd Zdd„Zd„ Zy)ÚSafeTransportc                 óR   — || _         t        j                  j                  | |«       y r‘   )rŠ  r   r¾  rè   r°  s      r0   rè   zSafeTransport.__init__ð  s   € Ø"ˆDŒLÜ×#Ñ#×,Ñ,¨T°<Õ@r2   c                 óö   — | j                  |«      \  }}}|si }| j                  |d<   | j                  r|| j                  d   k7  r%|| _        |t	        j
                  |d fi |¤Žf| _        | j                  d   S )NrŠ  r   r   )r³  rŠ  r´  rµ  r   r€  )rç   rˆ  r·  r¸  rå  s        r0   rº  zSafeTransport.make_connectionô  s‹   € Ø ×.Ñ.¨tÓ4‰MˆAˆr�6ÙØ�Ø $§¡ˆF�9ÑØ×#Ò# t¨t×/?Ñ/?ÀÑ/BÒ'BØ&(�Ô#Ø#'¬×)@Ñ)@ÀÀDñ *KØCIñ*Kð $K�Ô à×#Ñ# AÑ&Ð&r2   Nr»  r¼  rE   r2   r0   r¾  r¾  ï  s   „ ó	Aó		'r2   r¾  c                   ó   — e Zd Zd„ Zy)ÚServerProxyc                 ó  — |j                  dd «      x| _        }|�Ht        |«      d   }|j                  dd«      }|dk(  rt        }nt
        } |||¬«      x|d<   }|| _        t        j                  j                  | |fi |¤Ž y )NrŠ  r   r±  Úhttps)r±  Ú	transport)
rx   rŠ  r   r¹  r¾  r®  rÅ  r   rÂ  rè   )rç   rg   rå  rŠ  rb   r±  Útclsri   s           r0   rè   zServerProxy.__init__  s‰   € Ø!'§¡¨I°tÓ!<Ð<ˆŒ�wð Ðä˜c“] 1Ñ%ˆFØ!Ÿ:™: n°aÓ8ˆLØ˜Ò Ü$‘ä �Ù&*¨7ÀÔ&NÐNˆF�;Ñ !ØˆDŒNÜ×Ñ×&Ñ& t¨SÑ;°FÓ;r2   N)rì   rð   rñ   rè   rE   r2   r0   rÂ  rÂ     s   „ ó<r2   rÂ  c                 óh   — t         j                  d   dk  r|dz  }n
d|d<   d|d<   t        | |fi |¤ŽS )Nr   r¥   Úbr   Únewliner¦   r"  )rŒ   r°   r$  )rÒ  r8  rå  s      r0   Ú	_csv_openrÊ    sF   € Ü
×Ñ˜Ñ˜QÒØ�‰‰àˆˆyÑð %ˆˆzÑÜ��DÑ#˜FÑ#Ð#r2   c                   óH   — e Zd Z ed«       ed«       ed«      dœZd„ Zd„ Zy)ÚCSVBaserL   ú"r  )Ú	delimiterÚ	quotecharÚlineterminatorc                 ó   — | S r‘   rE   r  s    r0   Ú	__enter__zCSVBase.__enter__(  ó   € Øˆr2   c                 ó8   — | j                   j                  «        y r‘   )r®   r¼   )rç   r…  s     r0   Ú__exit__zCSVBase.__exit__+  s   € Ø�‰×ÑÕr2   N)rì   rð   rñ   r¦  ÚdefaultsrÒ  rÕ  rE   r2   r0   rÌ  rÌ  !  s(   „ á˜“XÙ˜“XÙ˜d›)ñ€Hòór2   rÌ  c                   ó"   — e Zd Zd„ Zd„ Zd„ ZeZy)Ú	CSVReaderc                 ó  — d|v r>|d   }t         j                  d   dk\  r t        j                  d«      |«      }|| _        nt        |d   d«      | _        t        j                  | j                  fi | j                  ¤Ž| _        y )Nr®   r   r¥   r¦   rs   rµ  )	rŒ   r°   r±   r²   r®   rÊ  Úcsvr¾  rÖ  )rç   rå  r®   s      r0   rè   zCSVReader.__init__0  st   € Ø�vÑØ˜HÑ%ˆFÜ×Ñ Ñ" aÒ'à2œ×)Ñ)¨'Ó2°6Ó:�Ø ˆD�Kä# F¨6¡N°CÓ8ˆDŒKÜ—j‘j §¡Ñ>°·±Ñ>ˆ�r2   c                 ó   — | S r‘   rE   r  s    r0   Ú__iter__zCSVReader.__iter__;  rÓ  r2   c                 óÌ   — t        | j                  «      }t        j                  d   dk  r8t	        |«      D ]*  \  }}t        |t        «      rŒ|j                  d«      ||<   Œ, |S ©Nr   r¥   r¦   )Únextr¾  rŒ   r°   rž  r“   r   r#  )rç   r+   rh   ry  s       r0   rß  zCSVReader.next>  s^   € Ü�d—k‘kÓ"ˆÜ×Ñ˜AÑ Ò"Ü$ VÓ,ò 5‘��4Ü! $¬	Õ2Ø $§¡¨GÓ 4�F˜1’Ið5ð ˆr2   N)rì   rð   rñ   rè   rÜ  rß  Ú__next__rE   r2   r0   rØ  rØ  /  s   „ ò	?òòð �Hr2   rØ  c                   ó   — e Zd Zd„ Zd„ Zy)Ú	CSVWriterc                 ó„   — t        |d«      | _        t        j                  | j                  fi | j                  ¤Ž| _        y )Nr   )rÊ  r®   rÚ  ÚwriterrÖ  )rç   rÒ  rå  s      r0   rè   zCSVWriter.__init__I  s-   € Ü  CÓ(ˆŒÜ—j‘j §¡Ñ>°·±Ñ>ˆ�r2   c                 óà   — t         j                  d   dk  r=g }|D ]4  }t        |t        «      r|j	                  d«      }|j                  |«       Œ6 |}| j                  j                  |«       y rÞ  )rŒ   r°   r“   r   r-  r%   rä  Úwriterow)rç   Úrowrµ  ry  s       r0   ræ  zCSVWriter.writerowM  se   € Ü×Ñ˜AÑ Ò"ØˆAØò �Ü˜d¤IÔ.ØŸ;™; wÓ/�DØ—‘˜•ðð ˆCØ�‰×Ñ˜SÕ!r2   N)rì   rð   rñ   rè   ræ  rE   r2   r0   râ  râ  H  s   „ ò?ó"r2   râ  c                   ó`   ‡ — e Zd Z eej
                  «      Zded<   dˆ fd„	Zd„ Zd„ Zd„ Z	ˆ xZ
S )ÚConfiguratorÚinc_convertÚincc                 óf   •— t         t        | �  |«       |xs t        j                  «       | _        y r‘   )Úsuperré  rè   rr   rØ   r}   )rç   Úconfigr}   Ú	__class__s      €r0   rè   zConfigurator.__init__`  s$   ø€ ÜŒl˜DÑ*¨6Ô2ØÒ'œBŸI™I›Kˆ�	r2   c                 óÚ  ‡ ‡— ˆˆ fd„Š|j                  d«      }t        |«      s‰ j                  |«      }|j                  dd «      }|j                  dd«      }|rt        |D �cg c]
  } ‰|«      ‘Œ c}«      }|D �cg c]  }t	        |«      sŒ| ‰||   «      f‘Œ }}t        |«      } ||i |¤Ž}	|r+|j                  «       D ]  \  }
}t        |	|
 ‰|«      «       Œ |	S c c}w c c}w )Nc                 ó.  •— t        | t        t        f«      r' t        | «      | D �cg c]
  } ‰|«      ‘Œ c}«      }|S t        | t        «      r0d| v r‰j                  | «      }|S i }| D ]  } ‰| |   «      ||<   Œ |S ‰j                  | «      }|S c c}w ©Nú())r“   rZ  r	  ÚtypeÚdictÚconfigure_customÚconvert)Úorh   r+   rÄ   r÷  rç   s       €€r0   r÷  z.Configurator.configure_custom.<locals>.converte  s¨   ø€ Ü˜!œd¤E˜]Ô+Ø œ˜a›°aÖ!8°¡'¨!¥*Ò!8Ó9�ð ˆMô ˜AœtÔ$Ø˜1‘9Ø!×2Ñ2°1Ó5�Fð ˆMð  �FØò 2˜Ù$+¨A¨a©D£M˜˜qš	ð2ð ˆMð Ÿ™ a›�ØˆMùò "9s   §Bró  rf  z[]rE   )rx   rz  rl  r	  r   rõ  r¶   Úsetattr)rç   rî  rœ   Úpropsrä  rø  rÄ   r¶   rå  r+   r«  rT   r÷  s   `           @r0   rö  zConfigurator.configure_customd  sà   ù€ õ	ð �J‰J�tÓˆÜ˜Œ{Ø—‘˜Q“ˆAØ—
‘
˜3 Ó%ˆà�z‰z˜$ Ó#ˆÙÜ¨dÖ3¨™' !�*Ò3Ó4ˆDØ28ÖK¨Q¼KÈ½N�!‘W˜V A™YÓ'Ò(ÐKˆÐKÜ�e“ˆÙ�DÐ#˜FÑ#ˆÙØŸ™›ò /‘��1Ü˜ ¡7¨1£:Õ.ð/àˆùò 4ùÚKs   Á%C#Á?C(ÂC(c                 óŒ   — | j                   |   }t        |t        «      r$d|v r | j                  |«      x| j                   |<   }|S rò  )rî  r“   rõ  rö  )rç   r¢   r+   s      r0   Ú__getitem__zConfigurator.__getitem__ƒ  sC   € Ø—‘˜SÑ!ˆÜ�fœdÔ#¨°©Ø(,×(=Ñ(=¸fÓ(EÐEˆD�K‰K˜Ñ˜vØˆr2   c                 ó  — t         j                  j                  |«      s*t         j                  j                  | j                  |«      }t        j                  |dd¬«      5 }t        j                  |«      }ddd«       |S # 1 sw Y   S xY w)z*Default converter for the inc:// protocol.rµ  r¦   r!  N)	rr   rs   Úisabsr'   r}   r±   r$  r´   rµ   )rç   rÆ   r*  r+   s       r0   rê  zConfigurator.inc_convert‰  sc   € ä�w‰w�}‰}˜UÔ#Ü—G‘G—L‘L §¡¨EÓ2ˆEÜ�[‰[˜ ¨gÔ6ð 	"¸!Ü—Y‘Y˜q“\ˆF÷	"àˆ÷	"àˆús   Á"BÂBr‘   )rì   rð   rñ   rõ  r   Úvalue_convertersrè   rö  rü  rê  Ú__classcell__)rï  s   @r0   ré  ré  [  s4   ø„ áÐ,×=Ñ=Ó>ÐØ+Ð�UÑõ(òò>ör2   ré  c                   ó$   — e Zd ZdZdd„Zd„ Zd„ Zy)ÚSubprocessMixinzC
    Mixin for running subprocesses and capturing their output
    Nc                 ó    — || _         || _        y r‘   )ÚverboseÚprogress)rç   r  r  s      r0   rè   zSubprocessMixin.__init__–  s   € ØˆŒØ ˆ�r2   c                 ór  — | j                   }| j                  }	 |j                  «       }|sn{|�
 |||«       nn|s t        j                  j                  d«       n.t        j                  j                  |j                  d«      «       t        j                  j                  «        ŒŽ|j                  «        y)z¨
        Read lines from a subprocess' output stream and either pass to a progress
        callable (if specified) or write progress information to sys.stderr.
        Nrf  r¦   )	r  r  ÚreadlinerŒ   ÚstderrrÏ   r#  Úflushr¼   )rç   r®   r�  r  r  r/   s         r0   r¾  zSubprocessMixin.readerš  s‹   € ð
 —=‘=ˆØ—,‘,ˆØØ—‘Ó!ˆAÙØØÐ#Ù˜˜GÕ$áÜ—J‘J×$Ñ$ SÕ)ä—J‘J×$Ñ$ Q§X¡X¨gÓ%6Ô7Ü—
‘
× Ñ Ô"ð ð 	�‰�r2   c                 óZ  — t        j                  |ft         j                  t         j                  dœ|¤Ž}t        j                  | j
                  |j                  df¬«      }|j                  «        t        j                  | j
                  |j                  df¬«      }|j                  «        |j                  «        |j                  «        |j                  «        | j                  �| j                  dd«       |S | j                  rt        j                  j                  d«       |S )N)Ústdoutr  r  )r  rä  r  zdone.Úmainzdone.
)Ú
subprocessÚPopenÚPIPEÚ	threadingÚThreadr¾  r  r¤  r  Úwaitr'   r  r  rŒ   rÏ   )rç   Úcmdrå  r›   Út1Út2s         r0   Úrun_commandzSubprocessMixin.run_command¯  sØ   € Ü×Ñ˜Sð ?¬¯©Ü$.§O¡Oñ?Ø7=ñ?ˆä×Ñ T§[¡[¸¿¹À(Ð7KÔLˆØ
�‰Œ
Ü×Ñ T§[¡[¸¿¹À(Ð7KÔLˆØ
�‰Œ
Ø	�‰ŒØ
�‰Œ	Ø
�‰Œ	Ø�=‰=Ð$Ø�M‰M˜' 6Ô*ð ˆð �\Š\Ü�J‰J×Ñ˜YÔ'Øˆr2   )FN)rì   rð   rñ   rÔ  rè   r¾  r  rE   r2   r0   r  r  ’  s   „ ñó!òó*r2   r  c                 óL   — t        j                  dd| «      j                  «       S )z,Normalize a python package name a la PEP 503z[-_.]+r¢  )r¥  Úsubr–   )rY   s    r0   Únormalize_namer  À  s    € ô �6‰6�(˜C Ó&×,Ñ,Ó.Ð.r2   c                   ó(   — e Zd ZdZdZdd„Zd„ Zd„ Zy)Ú
PyPIRCFilezhttps://upload.pypi.org/legacy/ÚpypiNc                 óž   — |€=t         j                  j                  t         j                  j                  d«      d«      }|| _        || _        y )Nr„  z.pypirc)rr   rs   r'   rˆ  r¨  r\   )rç   rÒ  r\   s      r0   rè   zPyPIRCFile.__init__Ô  s8   € Øˆ:Ü—‘—‘œbŸg™g×0Ñ0°Ó5°yÓAˆBØˆŒØˆ�r2   c                 ó  — i }t         j                  j                  | j                  «      �rÓ| j                  xs | j
                  }t        j                  «       }|j                  | j                  «       |j                  «       }d|v �r|j                  dd«      }|j                  d«      D �cg c]%  }|j                  «       dk7  r|j                  «       ‘Œ' }}|g k(  r	d|v r°dg}|S |D ]¦  }d|i}|j                  |d«      |d<   d| j
                  fd	| j                  fd
fD ]2  \  }}	|j                  ||«      r|j                  ||«      ||<   Œ.|	||<   Œ4 |dk(  r || j
                  dfv r| j
                  |d<   Œ“|d   |k7  sŒœ|d   |k7  sŒ¥i }Œ¨ |S d|v red}|j                  |d«      r|j                  |d«      }n| j
                  }|j                  |d«      |j                  |d«      ||| j                  dœ}|S c c}w )NÚ	distutilszindex-serversr  r   r  Úserverr–  Ú
repositoryÚrealm)r—  Nzserver-loginr—  )r–  r—  r!  r   r"  )rr   rs   r
  r¨  r\   ÚDEFAULT_REPOSITORYr   ÚRawConfigParserr³   r¿   r¹  rŸ   r^   ÚDEFAULT_REALMÚ
has_option)
rç   r+   r!  rî  r¿   Úindex_serversr   Ú_serversr¢   rš   s
             r0   r³   zPyPIRCFile.readÚ  s0  € Øˆä�7‰7�>‰>˜$Ÿ-™-Õ(ØŸ™Ò< T×%<Ñ%<ˆJä!×1Ñ1Ó3ˆFØ�K‰K˜Ÿ™Ô&Ø—‘Ó(ˆHØ˜hÒ&à &§
¡
¨;¸Ó H�à)×/Ñ/°Ó5ö5¨và%Ÿ|™|›~°Ò3ð #ŸL™L�Nð 5�ð 5ð ˜r’>à Ñ)Ø$* 8˜ðL ˆðI #+ò (˜Ø"*¨FÐ!3˜Ø-3¯Z©Z¸À
Ó-K˜˜zÑ*ð /;¸D×<SÑ<SÐ-TØ.5°t×7IÑ7IÐ-JØ-?ð-Aò 6™L˜C ð  &×0Ñ0°¸Ô=Ø.4¯j©j¸ÀÓ.E  s¢à.5  s¢ð6ð # fÒ,Ø&¨4×+BÑ+BÀFÐ*KÑKØ37×3JÑ3J˜F <Ò0Ø$ XÑ.°*Ó<Ø$ \Ñ2°jÓ@Ø%'™Fð+(ðH ˆð   8Ñ+à'�Ø×$Ñ$ V¨\Ô:Ø!'§¡¨F°LÓ!A‘Jà!%×!8Ñ!8�Jà &§
¡
¨6°:Ó >Ø &§
¡
¨6°:Ó >Ø",Ø$Ø!×/Ñ/ñ�ð ˆùòY5s   Â0*Hc                 óZ  — t        j                  «       }| j                  }|j                  |«       |j	                  d«      s|j                  d«       |j                  dd|«       |j                  dd|«       t        |d«      5 }|j                  |«       d d d «       y # 1 sw Y   y xY w)Nr  r–  r—  r   )	r   r$  r¨  r³   Úhas_sectionrË   rÎ   r$  rÏ   )rç   r–  r—  rî  rÒ  r*  s         r0   rT  zPyPIRCFile.update  s‹   € ä×-Ñ-Ó/ˆØ�]‰]ˆØ�‰�BŒØ×!Ñ! &Ô)Ø×Ñ˜vÔ&Ø�
‰
�6˜: xÔ0Ø�
‰
�6˜: xÔ0Ü�"�c‹]ð 	˜aØ�L‰L˜ŒO÷	÷ 	ñ 	ús   ÂB!Â!B*©NN)rì   rð   rñ   r#  r%  rè   r³   rT  rE   r2   r0   r  r  Ï  s   „ à:ÐØ€Móò8ót
r2   r  c                 óJ   — t        | j                  ¬«      j                  «       S )zG
    Read the PyPI access configuration as supported by distutils.
    )r\   )r  r\   r³   ©r  s    r0   Ú_load_pypircr.     s   € ô ˜%Ÿ)™)Ô$×)Ñ)Ó+Ð+r2   c                 ó`   — t        «       j                  | j                  | j                  «       y r‘   )r  rT  r–  r—  r-  s    r0   Ú_store_pypircr0  &  s   € ÜƒL×Ñ˜Ÿ™¨¯©Õ7r2   c                  óŠ  — t         j                  dk(  rsdt        j                  j	                  «       v rydt        j                  j	                  «       v rydt        j                  j	                  «       v ryt        j
                  S dt         j                  v rt         j                  d   S t         j                  d	k7  st        t         d
«      st        j
                  S t        j                  «       \  } }}}}| j	                  «       j                  dd«      } |j                  dd«      j                  dd«      }| dd dk(  r| ›d|›�S | dd dk(  rB|d   dk\  rád} dt        |d   «      dz
  |dd fz  }dddœ}|d|t        j                     z  z  }n§| dd dk(  rddlm}  |«       S | dd  d!k(  rJd!} t        j                  d"t        j                   «      }|j#                  |«      }|rQ|j%                  «       }n@| dd  d#k(  r8ddl}	ddl}
|	j+                  |
j,                  j/                  «       | ||«      \  } }}| ›d|›d|›�S )$aú  Return a string that identifies the current platform.  This is used mainly to
    distinguish platform-specific build directories and platform-specific built
    distributions.  Typically includes the OS name and version and the
    architecture (as supplied by 'os.uname()'), although the exact information
    included depends on the OS; eg. on Linux, the kernel version isn't
    particularly important.

    Examples of returned values:
       linux-i586
       linux-alpha (?)
       solaris-2.6-sun4u

    Windows will return one of:
       win-amd64 (64bit Windows on AMD64 (aka x86_64, Intel64, EM64T, etc)
       win32 (all others - specifically, sys.platform is returned)

    For other non-POSIX platforms, currently just returns 'sys.platform'.

    r‚  Úamd64ú	win-amd64z(arm)ú	win-arm32z(arm64)z	win-arm64Ú_PYTHON_HOST_PLATFORMr0  Úunamerq   r   rW   rj   r¢  Né   ÚlinuxÚsunosr   Ú5Úsolarisz%d.%sr¥   é   Ú32bitÚ64bit)iÿÿÿl   ÿÿÿÿ z.%sÚaix)Úaix_platformé   Úcygwinz[\d.]+Údarwin)rr   rY   rŒ   rÇ  r–   Úplatformr†  r‹   r6  r$   ÚintÚmaxsizeÚ_aix_supportr@  r¥  rC  ÚASCIIr    rÂ   Ú_osx_supportÚdistutils.sysconfigÚget_platform_osxÚ	sysconfigÚget_config_vars)Úosnamerˆ  ÚreleaserÇ  ÚmachineÚbitnessr@  Úrel_rer*   rI  r  s              r0   Úget_host_platformrS  .  s  € ô( 
‡w�w�$‚Ø”c—k‘k×'Ñ'Ó)Ñ)ØØ”c—k‘k×'Ñ'Ó)Ñ)ØØœŸ™×)Ñ)Ó+Ñ+ØÜ�|‰|Ðð ¤"§*¡*Ñ,Ü�z‰zÐ1Ñ2Ð2ä	‡w�w�'Ò¤¬¨WÔ!5ô �|‰|Ðô 13·±³
Ñ-€VˆT�7˜G Wð �\‰\‹^×#Ñ# C¨Ó,€FØ�o‰o˜c 3Ó'×/Ñ/°°SÓ9€Gàˆbˆq€z�WÒò "¡7Ð+Ð+à	��ˆ�wÒ	Ø�1‰:˜ÒØˆFØ¤ W¨Q¡Z£°1Ñ!4°g¸a¸b°kÐ BÑBˆGð #*¸wÑGˆGØ�u˜w¤s§{¡{Ñ3Ñ3Ñ3‰Gà	��ˆ�uÒ	Ý-Ù‹~ÐØ	��ˆ�xÒ	ØˆÜ—‘˜Y¬¯©Ó1ˆØ�L‰L˜Ó!ˆÙØ—g‘g“i‰GØ	��ˆ�xÒ	ß0Ø#/×#@Ñ#@Ø(1×(;Ñ(;×(KÑ(KÓ(MØ(.°¸ó$BÑ ˆ�˜ò  ¢©'Ð2Ð2r2   Úwin32r3  r4  )Úx86Úx64Úarmc                  ó°   — t         j                  dk7  r
t        «       S t         j                  j	                  d«      } | t
        vr
t        «       S t
        |    S )Nr‚  ÚVSCMD_ARG_TGT_ARCH)rr   rY   rS  r†  r¹  Ú_TARGET_TO_PLAT)Úcross_compilation_targets    r0   Úget_platformr\  †  sG   € Ü	‡w�w�$‚Ü Ó"Ð"Ü!Ÿz™zŸ~™~Ð.BÓCÐØ¤Ñ6Ü Ó"Ð"ÜÐ3Ñ4Ð4r2   r+  )é   r‘   rZ  )†r±   Úcollectionsr   Ú
contextlibrÚ  Úglobr   rw  r7  r´   Úloggingrr   rA  r¥  rÝ   r�  ÚImportErrorr  rŒ   r,  rÒ   r½   r  Údummy_threadingrQ  r   r   Úcompatr   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   Ú	getLoggerrì   r  rC  r   rQ   rP   r;   rD   r@   ra   r&   rG   rm   r‡   r�   r”   r�   r£   rÇ   rÐ   ÚcontextmanagerrÖ   rÙ   râ   rê   rä   rù   rû   rl  rn  ÚVERBOSEr{  r·   r�  r�  r“  r˜  rœ  r   ÚIr§  r£  r¬  r¯  r°  r·  rÀ  rÄ  rÅ  rÈ  rÊ  rÖ  rè  ÚARCHIVE_EXTENSIONSr5  r?  rk  rF  rv  rp  rq  rr  r|  r¡  r}  r~  r€  rª  r®  r¾  rÂ  rÊ  rÌ  rØ  râ  ré  r  r  r  r.  r0  rS  rZ  r\  rE   r2   r0   ú<module>rj     s)  ðó
 Ý Û Û 
Ý #Û 	Û Û Û 	Û Û 	Û ðÛó Û 
Û Û Û ð(Ûó å ÷(÷ (÷ (÷ (÷ (õ (ð 
ˆ×	Ñ	˜8Ó	$€ð ˆR�Z‰ZÐ)Ó*€
Ø�R—Z‘ZÐ 3Ó4Ð ØˆR�Z‰ZÐ5Ó6€
ØˆB�J‰JÐDÓE€	Ø€R‡Z�Z�Ó€Ø€b‡j�j�Ó€ØˆB�J‰J�{Ó#€	Øˆr�z‰zÐEÓF€òV!òrz@òzò4òó$ò ò,ò^ð& ×Ññó ðð ×Ññó ðð ×Ñò&ó ð&ô�fô ò ô6u�6ô uònô�&ô ð8 ˆ2�:‰:ð ð Ÿ:™:ó'€ò
ó>&(òRò"ò&òò
ð &˜2Ÿ:™:ð '8Ø9;¿¹ó?Ð à�—‘Ð,Ó-€óð2 �"—*‘*ð 9ó :€ò/òò2ð( DÐ òò#ô)ˆFô )ôXC�ô CôPE!�ô E!ðV.Ð ó3òlð" 	$€ôW+ˆvô W+ðz ˆB�J‰J�~Ó&€	Ø"˜Ÿ
™
Ð#?Ó@Ð Ø �b—j‘jÐ!5Ó6Ð òòñ6 ÷+ñ +ô˜'×1Ñ1ô ôBÐ'ô ôR3˜<¨ô 3ô
#�	×#Ñ#ô 
#ñ ô'˜	×/Ñ/ô 'ô"<�)×'Ñ'ô <ò,$ôˆfô ô�ô ô2"�ô "ô&4Ð#ô 4ôn+�fô +ò\/ôO�ô Oòb,ò8òN3ðd ØØñ€ó5øðg; ò Ø
ƒCðûð ò (Þ'ð(ús#   ¶M7 ÁN Í7NÎNÎ	NÎN