Ë
    äØjjÊ ã                   ó&  — 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/  e
j`                  e1«      Z2 ejf                  d«      Z4 ejf                  d«      Z5 ejf                  d	«      Z6 ejf                  d
«      Z7 ejf                  d«      Z8 ejf                  d«      Z9 ejf                  d«      Z: ejf                  d«      Z;d„ Z<d„ Z=d„ Z>d„ Z?d„ Z@did„ZAd„ ZBd„ ZCd„ ZDejŠ                  d„ «       ZFejŠ                  d„ «       ZGejŠ                  djd„«       ZH G d„ deI«      ZJd„ ZK G d„ deI«      ZLd „ ZM G d!„ d"eI«      ZN ejf                  d#ejž                  «      ZPd$„ ZQdkd%„ZRd&„ ZSd'„ ZTd(„ ZUd)„ ZVd*„ ZW ejf                  d+ej°                  «      ZY ejf                  d,«      ZZdkd-„Z[ ejf                  d.«      Z\d/„ Z]d0„ Z^d1„ Z_d2Z`d3„ Zad4„ Zb G d5„ d6eI«      Zc G d7„ d8eI«      Zd G d9„ d:eI«      Zed;Zfdld<„Zgd=„ Zhd>Zi G d?„ d@eI«      Zj ejf                  dA«      Zk ejf                  dB«      Zl ejf                  dC«      ZmdD„ ZdE„ Zner6ddFlmoZpmqZqmrZr  G dG„ dHe$jæ                  «      Zs G dI„ dJep«      Zo G dK„ dLeoe&«      Zt G dM„ dNe%jê                  «      Zuer G dO„ dPe%jì                  «      Zv G dQ„ dRe%jî                  «      ZwdS„ Zx G dT„ dUeI«      Zy G dV„ dWey«      Zz G dX„ dYey«      Z{ G dZ„ d[e'«      Z| G d\„ d]eI«      Z}d^„ Z~ G d_„ d`eI«      Zda„ Z€db„ Z�dc„ Z‚dddedfdgœZƒdh„ Z„y# e$ r dZY �ŒEw 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Ú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          úZ/opt/eval-harness/bench_task/venv/lib/python3.12/site-packages/pip/_vendor/distlib/util.pyÚ
marker_varz parse_marker.<locals>.marker_varB   s{  € ä×Ñ˜YÓ'ˆÙØ—X‘X“Z ‘]ˆFØ! !§%¡%£' (Ð+ˆIð< �yÐ Ð ñ; ÜÐ7Ó8Ð8à˜!‘ˆAØ˜‰~Ü!Ð":¸YÑ"FÓGÐGØ—‘˜q "Ó%ˆBØ! ! "˜ˆIØ�CˆEÙà˜Q‘< 1Ò$ØØ˜q‘\ RÒ'Ø—L‘L Ô$Ø )¨!¨" ‘Iä$×*Ñ*¨9Ó5�AÙÜ)Ð*GØ*3ñ+4ó 5ð 5à—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*   r8   r)   r7   r9   Úmarkerr0   s         €€r/   Úmarker_exprz!parse_marker.<locals>.marker_exprg   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Ð Ð r1   c                 ó¬   •—  ‰| «      \  }} | rCt         j                  | «      }|s	 || fS | |j                  «       d  }  ‰| «      \  }} d||dœ}| rŒC|| fS )NÚandr6   )ÚANDr   r!   )r(   r8   r)   r9   r<   s       €r/   Ú
marker_andz parse_marker.<locals>.marker_andz   ss   ø€ Ù$ YÓ/‰ˆˆYÙÜ—	‘	˜)Ó$ˆAÙØð �Iˆ~Ðð " !§%¡%£' (Ð+ˆIÙ(¨Ó3‰NˆC�Ø s°3Ñ7ˆCò ð �Iˆ~Ðr1   c                 ó¬   •—  ‰| «      \  }} | rCt         j                  | «      }|s	 || fS | |j                  «       d  }  ‰| «      \  }} d||dœ}| rŒC|| fS )NÚorr6   )ÚORr   r!   )r(   r8   r)   r9   r@   s       €r/   r;   zparse_marker.<locals>.marker…   ss   ø€ Ù# IÓ.‰ˆˆYÙÜ—‘˜Ó#ˆAÙØð �Iˆ~Ðð " !§%¡%£' (Ð+ˆIÙ'¨	Ó2‰NˆC�Ø c°#Ñ6ˆCò ð �Iˆ~Ðr1   © )Úmarker_stringr;   r@   r<   r0   s    @@@@r/   Úparse_markerrF   8   s%   û€ ò#!õJ!ô&	ô	ñ �-Ó Ð r1   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: %srK   r   úinvalid constraint: %s)Ú
COMPARE_OPr   r    r!   ÚVERSION_IDENTIFIERr"   r$   r'   )Úver_remainingr)   Úversionsr7   Úvs        r/   Úget_versionsz'parse_requirement.<locals>.get_versionsÇ   s  € ô
 ×$Ñ$ ]Ó3�Ø�ÙØ!�HØØŸX™X›Z¨™]˜Ø(5°a·e±e³g°hÐ(?˜Ü.×4Ñ4°]ÓC˜Ù Ü"-Ð.CØ.;ñ/<ó #=ð =àŸH™H›J q™M˜Ø Ÿ™¨¨Q¨Ô0Ø(5°a·e±e³g°hÐ(?˜Ù,°¸aÑ0@ÀCÒ0GØ!Ø(5°a°bÐ(9×(@Ñ(@Ó(B˜ñ  -Ø!Ü&×,Ñ,¨]Ó;˜Ù Ü"-Ð.FØ.;ñ/<ó #=ð =ð' ñ* $Ø#'˜Ø Ð.Ð.r1   r3   r4   r5   rN   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ÚnetlocrO   rP   rF   r&   r   )Úreqr(   r)   ÚdistnamerY   Ú	mark_exprrR   ÚuriÚir.   ÚtrT   Ú_rS   ÚrsÚcons                   r/   Úparse_requirementrl   “   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ò /ðD ˜‰|˜sÒ"Ù&2°9Ó&=Ñ#�™)à—N‘N 3¨Ó*�Ø�q’5Ü%Ð&DØ&/ñ'0ó 1ð 1à˜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áØ‰â  $§)¡)Ø&.Ö/˜sˆW�s‹]Ò/ô#1ð 2ˆä˜(Ø"Ø!)Ø%ØØ!#ô%ð %ùò 0s   Í
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'   )Úrootrr   s     r/   Ú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Ó+Ð+r1   Nrp   )rq   rr   r&   r   Úpopr#   rs   Úrstrip)Úresources_rootÚrulesrv   ÚdestinationsÚbaseÚsuffixÚdestÚprefixÚabs_baseÚabs_globÚabs_pathÚresource_fileÚrel_pathÚrel_dests                 r/   Ú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ð Ðr1   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    r/   Úin_venvrŽ   2  s:   € ÜŒs�MÔ"àˆð €Mô —‘œw¤s¨M¼3¿:¹:ÓFÑFˆØ€Mr1   c                  ó\   — t         j                  } t        | t        «      st	        | «      } | S ©N)r‹   Ú
executableÚ
isinstancer   r   r�   s    r/   Úget_executabler“   <  s&   € ô �^‰^€FÜ�fœiÔ(Ü˜&Ó!ˆØ€Mr1   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          r/   Úproceedrœ   N  sa   € Ø€AØ
Ü�a‹LˆØˆÙ‘WØˆAÙØ�!‘—
‘
“ˆAØ�MÑ!Øð €Hñ Ø  A |°VÐ#<Ñ<�ð r1   c                 ór   — t        |t        «      r|j                  «       }i }|D ]  }|| v sŒ| |   ||<   Œ |S r�   )r’   r   Úsplit)ÚdÚkeysr*   Úkeys       r/   Úextract_by_keyr¢   ^  sF   € Ü�$œÔ%Ø�z‰z‹|ˆØ€FØò !ˆØ�!Š8Ø˜C™&ˆF�3ŠKð!ð €Mr1   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     r/   Úread_streamz!read_exports.<locals>.read_stream|  s$   € Ü�2�{Ô#Ø�L‰L˜Õ à�I‰I�fÕr1   )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ÚkrS   r.   Úentryr®   r¬   r¡   rX   Úvalues                  r/   Úread_exportsrÆ   h  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 [rW   rJ   )r‹   r¯   r°   Ú	getwriterr   r¹   rµ   Úadd_sectionÚvaluesr}   r   Úflagsr&   ÚsetrX   Úwrite)r§   r­   r¬   rÃ   rS   rÄ   r.   s          r/   Ú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Õr1   c               #   óœ   K  — t        j                  «       } 	 | –— t        j                  | «       y # t        j                  | «       w xY w­wr�   )ÚtempfileÚmkdtempr	   Úrmtree)Útds    r/   Ú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�   )rq   ÚgetcwdÚchdir)rŸ   Úcwds     r/   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     r/   Úsocket_timeoutrá   ½  sF   è ø€ ä
×
"Ñ
"Ó
$€Cð&Ü× Ñ  Ô)Ûä× Ñ  Õ%øŒ× Ñ  Õ%ürÚ   c                   ó   — e Zd Zd„ Zdd„Zy)Úcached_propertyc                 ó   — || _         y r�   )Úfunc)Úselfrå   s     r/   Ú__init__zcached_property.__init__É  s	   € Øˆ�	r1   Nc                 ó†   — |€| S | j                  |«      }t        j                  || j                   j                  |«       |S r�   )rå   ÚobjectÚ__setattr__Ú__name__)ræ   ÚobjÚclsrÅ   s       r/   Ú__get__zcached_property.__get__Î  s:   € Øˆ;ØˆKØ—	‘	˜#“ˆÜ×Ñ˜3 §	¡	× 2Ñ 2°EÔ:àˆr1   r�   )rë   Ú
__module__Ú__qualname__rç   rî   rD   r1   r/   rã   rã   Ç  s   „ òô
r1   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.
    rp   r   zpath '%s' cannot be absoluteéÿÿÿÿzpath '%s' cannot end with '/')rq   rs   Ú
ValueErrorrž   ÚcurdirÚremoverr   r&   )ÚpathnameÚpathss     r/   Ú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�<‰<˜ÐÐr1   c                   ó|   — 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     r/   rç   zFileOperator.__init__ô  s   € ØˆŒÜ“uˆŒØ×ÑÕr1   c                 óN   — d| _         t        «       | _        t        «       | _        y ©NF)ÚrecordrÍ   Úfiles_writtenÚdirs_created©ræ   s    r/   rþ   zFileOperator._init_recordù  s   € ØˆŒÜ ›UˆÔÜ›EˆÕr1   c                 óT   — | j                   r| j                  j                  |«       y y r�   )r  r  Úadd)ræ   rr   s     r/   Úrecord_as_writtenzFileOperator.record_as_writtenþ  s"   € Ø�;Š;Ø×Ñ×"Ñ" 4Õ(ð r1   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)rq   rr   Úexistsr   ÚabspathÚstatÚst_mtime)ræ   ÚsourceÚtargets      r/   ÚnewerzFileOperator.newer  ss   € ô �w‰w�~‰~˜fÔ%Ü"Ð#=Ü#%§7¡7§?¡?°6Ó#:ñ$;ó <ð <ä�w‰w�~‰~˜fÔ%Øä�w‰w�v‹×'Ñ'¬"¯'©'°&«/×*BÑ*BÑBÐBr1   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_dirrq   rr   ÚdirnameÚloggerÚinforü   Úislinkr	  Úisfileró   r	   Úcopyfiler  )ræ   ÚinfileÚoutfileÚcheckÚmsgs        r/   Ú	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Õ'r1   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)rq   rr   Úisdirr  r  r  r  rü   Úopenr°   r	   Úcopyfileobjr»   r  )ræ   Úinstreamr  r!  Ú	outstreams        r/   Ú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  rq   rr   r  rü   r	  rõ   r#  rÎ   r  )ræ   rr   r¿   Úfs       r/   Úwrite_binary_filezFileOperator.write_binary_file6  sw   € Ø�‰œŸ™Ÿ™¨Ó-Ô.Ø�|Š|Ü�w‰w�~‰~˜dÔ#Ü—	‘	˜$”Ü�d˜DÓ!ð  QØ—‘˜”÷à×Ñ˜tÕ$÷ð ús   Á;B'Â'B0c                 óF   — | j                  ||j                  |«      «       y r�   )r*  Úencode)ræ   rr   r¿   r!  s       r/   Úwrite_text_filezFileOperator.write_text_file?  s   € Ø×Ñ˜t T§[¡[°Ó%:Õ;r1   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)	rq   rX   Ú_namerü   r  r  r  Úst_modeÚchmod)ræ   ÚbitsÚmaskÚfilesr)  Úmodes         r/   Úset_modezFileOperator.set_modeB  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Ð"3r1   c                 ó(   — | j                  dd|«      S )Nim  iÿ  )r8  )r.   r)  s     r/   ú<lambda>zFileOperator.<lambda>N  s   €  q§z¡z°%¸ÀÓ'C€ r1   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)rq   rr   r
  rý   r	  r  rž   r  r  r  rü   Úmkdirr  r  )ræ   rr   rŸ   r)  s       r/   r  zFileOperator.ensure_dirP  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Ð#r1   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^   rt   rŠ   Ú
py_compiler>  ÚCHECKED_HASHÚcompiler  )	ræ   rr   ÚoptimizeÚforcer   Úhashed_invalidationÚdpathÚdiagpathÚcompile_kwargss	            r/   Úbyte_compilezFileOperator.byte_compile\  sÈ   € ô " $¨H¨Ó5ˆÜ�‰Ð-¨t°UÔ;Ø�|Š|Ù˜Ÿ
™
 4¨Ô/ÙØ#‘HàŸ?™?¨6Ô2Ð2Ð2Ø#¤C¨£K LÐ1�HØˆNÙ"¤w¬zØ/Dô(Fô ,6×+IÑ+I×+VÑ+Vð Ø'ñ)ä×Ñ˜t U¨H°dñ 1Ø!/ò1à×Ñ˜uÔ%Øˆr1   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)rq   rr   r	  r"  r  r  Údebugrü   r	   rÓ   r  r  rõ   r  )ræ   rr   r.   s      r/   Úensure_removedzFileOperator.ensure_removedu  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ð ð!  r1   c                 óò   — d}|srt         j                  j                  |«      r't        j                  |t         j                  «      }	 |S t         j                  j                  |«      }||k(  r	 |S |}|sŒr|S r   )rq   rr   r	  ÚaccessÚW_OKr  )ræ   rr   r*   Úparents       r/   Úis_writablezFileOperator.is_writableŠ  sn   € ØˆÙÜ�w‰w�~‰~˜dÔ#ÜŸ™ 4¬¯©Ó1�Øð
 ˆô	 —W‘W—_‘_ TÓ*ˆFØ˜Š~Øàˆð ˆDò ð ˆr1   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     r/   ÚcommitzFileOperator.commit–  s7   € ð
 �{Š{Ðˆ{Ø×#Ñ# T×%6Ñ%6Ð6ˆØ×ÑÔØˆr1   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  rq   rr   r	  rõ   Úsortedr  Úlistdirr&   Úrmdirrþ   )ræ   r)  ÚdirsrŸ   ÚflistÚsds         r/   ÚrollbackzFileOperator.rollback   s½   € Ø�|Š|Ü˜$×,Ñ,Ó-ò !�Ü—7‘7—>‘> !Õ$Ü—I‘I˜a•Lð!ô ˜$×+Ñ+°TÔ:ˆDØò �ÜŸ
™
 1›�ÙØ  ] OÒ3Ð3Ð3ÜŸ™Ÿ™ a¨¨q©Ó2�BÜ—H‘H˜R”LÜ—‘˜•ðð 	×ÑÕr1   ©F©Tr�   )FFNF)rë   rï   rð   rç   rþ   r  r  r  r'  r*  r-  r8  Úset_executable_moder  rI  rN  rS  rU  r`  rD   r1   r/   rú   rú   ò  se   „ óò
"ò
)òCó((ó"(ò%ò<ò
&ñ DÐò
,ð $Ø Ø Ø).óò28ò*
òór1   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Œ   rw   )Úmodule_nameÚdotted_pathÚmodr*   r-   rš   s         r/   Úresolverk  ³  s~   € Ø”c—k‘kÑ!Ü�k‰k˜+Ñ&‰ä˜Ó%ˆØÐØˆð €Mð	 ×!Ñ! #Ó&ˆÜ˜˜eŸi™i¨›lÓ+ˆØò 	(ˆAÜ˜V QÓ'‰Fð	(à€Mr1   c                   óF   — e Zd Zd„ Zed„ «       Zd„ Zd„ Zej                  Z	y)ÚExportEntryc                 ó<   — || _         || _        || _        || _        y r�   ©rX   r   r}   rÌ   )ræ   rX   r   r}   rÌ   s        r/   rç   zExportEntry.__init__Ä  s   € ØˆŒ	ØˆŒØˆŒØˆ�
r1   c                 óB   — t        | j                  | j                  «      S r�   )rk  r   r}   r  s    r/   rÅ   zExportEntry.valueÊ  s   € ä�t—{‘{ D§K¡KÓ0Ð0r1   c           	      óp   — d| j                   ›d| j                  ›d| j                  ›d| j                  ›d�	S )Nz<ExportEntry r¨   rÈ   rV   ú>ro  r  s    r/   Ú__repr__zExportEntry.__repr__Î  s(   � Ø04·	³	¸4¿;»;Ø04·³¸T¿Z»ZðIð 	Ir1   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’   rm  rX   r   r}   rÌ   )ræ   Úotherr*   s      r/   Ú__eq__zExportEntry.__eq__Ò  st   € Ü˜%¤Ô-ØˆFð
 ˆð —i‘i 5§:¡:Ñ-ò 4°$·+±+ÀÇÁÑ2Mò 4ØŸ+™+¨¯©Ñ5ò4àŸ*™*¨¯©Ñ3ð ð ˆr1   N)
rë   rï   rð   rç   rã   rÅ   rs  rv  ré   Ú__hash__rD   r1   r/   rm  rm  Â  s1   „ òð ñ1ó ð1òIòð �‰�Hr1   rm  z·(?P<name>([^\[]\S*))
                      \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 )NrI   rJ   zInvalid specification '%s'rX   ÚcallablerÈ   r   r   rÌ   rK   )ÚENTRY_REÚsearchr   Ú	groupdictÚcountrž   r]   rm  )Úspecificationr)   r*   rŸ   rX   rr   Úcolonsr   r}   rÌ   r)  s              r/   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)rq   rX   Úenvironrr   Ú
expandvarsÚ
expanduserr"  rP  rQ  r  ÚwarningÚmakedirsÚOSErrorrÑ   rÒ   r&   )r}   r*   Úusables      r/   Ú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)rq   rr   Ú
splitdriver
  r#   rs   )rr   rŸ   rš   s      r/   Ú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ÑÐr1   c                 ó2   — | j                  d«      s| dz   S | S ro   )Úendswith)r.   s    r/   Úensure_slashr’  >  s   € Ø�:‰:�cŒ?Ø�3‰wˆØ€Hr1   c                 ó²   — d x}}d| v r1| j                  dd«      \  }} d|vr|}n|j                  dd«      \  }}|rt        |«      }|rt        |«      }||| fS )NrL   r   rÈ   )Úrsplitrž   r   )rb   ÚusernameÚpasswordr   s       r/   Úparse_credentialsr—  D  sp   € ØÐ€HˆxØ
ˆf�}ØŸ™ s¨AÓ.‰ˆ�Ø�fÑØ‰Hà!'§¡¨c°1Ó!5ÑˆH�hÙÜ˜8Ó$ˆÙÜ˜8Ó$ˆØ�X˜vÐ%Ð%r1   c                  óZ   — t        j                  d«      } t        j                  | «       | S )Né   )rq   Úumaskr�   s    r/   Úget_process_umaskr›  S  s    € Ü�X‰X�d‹^€FÜ‡H�HˆVÔØ€Mr1   c                 ód   — d}d }t        | «      D ]  \  }}t        |t        «      rŒd} n |€J ‚|S )NTF)Ú	enumerater’   r   )Úseqr*   rg   r.   s       r/   Úis_string_sequencerŸ  Y  sF   € Ø€FØ€AÜ˜#“ò ‰ˆˆ1Ü˜!œ\Õ*ØˆFÙðð ˆ=Ðˆ=Ø€Mr1   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
    NrV   ú-r   z\br¤   )r   r#   ÚPYTHON_VERSIONr{  rÁ   Ústartrt   Úrer   Úescaper!   ÚPROJECT_NAME_AND_VERSION)ÚfilenameÚproject_namer*   Úpyverr)   Úns         r/   Úsplit_filenamer«  j  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Ø€Mr1   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'rX   Úver)ÚNAME_VERSION_REr   r   r|  r]   r•   )rš   r)   rŸ   s      r/   Úparse_name_and_versionr¯  ˆ  sV   € ô 	×Ñ˜aÓ €AÙÜÐGÈ!ÑKÓLÐLØ	�‰‹€AØˆV‰9�?‰?Ó×"Ñ"Ó$ a¨¡hÐ.Ð.r1   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        r/   Ú
get_extrasr¶  ˜  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ðð €Mr1   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  rM  r°   r±   r³   r´   r·   Ú	exception)r[   r*   ÚrespÚheadersÚctÚreaderÚes          r/   Ú_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   rp   z/project.json©Úupperr   Ú_external_data_base_urlr¿  )rX   r[   r*   s      r/   Úget_project_datarÄ  Ì  s2   € Ø"& q¡'§-¡-¥/²4Ð
8€CÜ
Ô)¨3Ó
/€CÜ Ó$€FØ€Mr1   c                 óp   — | d   j                  «       ›d| ›d|›d�}t        t        |«      }t        |«      S )Nr   rp   z	/package-z.jsonrÁ  )rX   Úversionr[   s      r/   Úget_package_datarÇ  Ó  s0   € Ø%)¨!¡W§]¡]¥_²dºGÐ
D€CÜ
Ô)¨3Ó
/€CÜ˜cÓ"Ð"r1   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)rq   rr   r"  r‰  r  r2  r  rˆ  r
  Únormpathr|   )ræ   r|   s     r/   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Ó$:Ó;ˆ�	r1   c                 ó   — t        |«      S )zN
        Converts a resource prefix to a directory name in the cache.
        )r�  )ræ   r   s     r/   Úprefix_to_dirzCache.prefix_to_dirî  s   € ô ! Ó(Ð(r1   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.
        )rq   r[  r|   rr   r&   r  r  rõ   r"  r	   rÓ   r·   r$   )ræ   Únot_removedÚfns      r/   Ú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Ò  rD   r1   r/   rÉ  rÉ  Ù  s   „ ñò<ò)ór1   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    r/   rç   zEventMixin.__init__
  s
   € ØˆÕr1   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         r/   r  zEventMixin.add  sK   € ð × Ñ ˆØ˜ÑÜ  Ó-ˆD�ŠKà�e‘ˆBÙØ—	‘	˜*Õ%à—‘˜jÕ)r1   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       r/   rõ   zEventMixin.remove!  s:   € ð × Ñ ˆØ˜ÑÜÐ1°EÑ9Ó:Ð:ØˆU‰×Ñ˜:Õ&r1   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.
        rD   )Úiterr×  r¸  )ræ   rÚ  s     r/   Úget_subscriberszEventMixin.get_subscribers-  s"   € ô
 �D×%Ñ%×)Ñ)¨%°Ó4Ó5Ð5r1   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$   rM  )ræ   rÚ  ÚargsÚkwargsr*   rÛ  rÅ   s          r/   ÚpublishzEventMixin.publish4  sŽ   € ð ˆØ×.Ñ.¨uÓ5ò 	!ˆJðÙ" 5Ð:¨4Ò:°6Ñ:�ð �M‰M˜%Õ ð	!ô 	�‰ÐFÈØ˜6 6ô	+àˆøô ò Ü× Ñ Ð!EÔFØ’ðús   ˜AÁ A5Á4A5Nrb  )	rë   rï   rð   rÓ  rç   r  rõ   rá  rå  rD   r1   r/   rÕ  rÕ    s    „ ñòó*ò(
'ò6ór1   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    r/   rç   zSequencer.__init__Q  s   € ØˆŒØˆŒÜ“eˆ�r1   c                 ó:   — | j                   j                  |«       y r�   )rë  r  )ræ   Únodes     r/   Úadd_nodezSequencer.add_nodeV  s   € Ø�‰�‰˜Õr1   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 )NrD   )rë  rõ   rÍ   ré  r¸  rê  rY  rµ   )ræ   rí  Úedgesrš   r.   rÃ   rS   s          r/   Úremove_nodezSequencer.remove_nodeY  sô   € Ø�4—;‘;ÑØ�K‰K×Ñ˜tÔ$ÙÜ˜Ÿ™Ÿ™¨¨rÓ2Ó3ò %�Ø—‘˜A˜tÕ$ð%ä˜Ÿ™Ÿ™¨¨rÓ2Ó3ò %�Ø—‘˜D !Õ$ð%ô ˜TŸ[™[×.Ñ.Ó0Ó1ò '‘��1ÚØŸ™ A™ð'ô ˜TŸ[™[×.Ñ.Ó0Ó1ò '‘��1ÚØŸ™ A™ñ'ð r1   c                 óÞ   — ||k7  sJ ‚| j                   j                  |t        «       «      j                  |«       | j                  j                  |t        «       «      j                  |«       y r�   )ré  Ú
setdefaultrÍ   r  rê  )ræ   ÚpredÚsuccs      r/   r  zSequencer.addi  sP   € Ø�tŠ|Ðˆ|Ø�‰×Ñ˜t¤S£UÓ+×/Ñ/°Ô5Ø�‰×Ñ˜t¤S£UÓ+×/Ñ/°Õ5r1   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        r/   rõ   zSequencer.removen  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     r/   Úis_stepzSequencer.is_step{  s4   € Ø˜Ÿ™Ð#ò ' t¨t¯{©{Ð':ò 'Ø˜4Ÿ;™;Ð&ð	(r1   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   rD   )rü  ró   rÍ   r$   rw   rõ   r  ré  r¸  ÚextendÚreversed)ræ   Úfinalr*   ÚtodoÚseenrû  rø  s          r/   Ú	get_stepszSequencer.get_steps  s¼   € Ø�|‰|˜EÔ"Ü˜]¨UÑ2Ó3Ð3ØˆØˆÜ‹uˆØ�‰�EÔÙØ—8‘8˜A“;ˆDØ�t‰|ð ˜5’=Ø—M‘M $Ô'Ø—M‘M $Õ'à—‘˜”Ø—‘˜dÔ#ØŸ™Ÿ™¨¨bÓ1�Ø—‘˜EÔ"ò ô  ˜ÓÐr1   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·   Úminrw   Útuple)rí  Ú
successorsÚ	successorÚconnected_componentÚ	componentÚgraphÚindexÚindex_counterÚlowlinksr*   ÚstackÚstrongconnects        €€€€€€€r/   r  z3Sequencer.strong_connections.<locals>.strongconnect£  s   ø€ à'¨Ñ*ˆE�$‰KØ*¨1Ñ-ˆH�T‰NØ˜!Ó Ñ!ÓØ�L‰L˜Ôð Ø" 4™[�
ð (ò K�	Ø HÑ,á! )Ô,Ü%(¨°$©¸À)Ñ9LÓ%M�H˜T’NØ %Ò'ô &)¨°$©¸¸yÑ9IÓ%J�H˜T’NðKð ˜‰~  t¡Ò,Ø&(Ð#àØ %§	¡	£�IØ'×.Ñ.¨yÔ9Ø  DÒ(Øð	 ô
 "Ð"5Ó6�	à—‘˜iÕ(ð -øô ò  Ø’
ð ús   ±C ÃCÃC)rê  )	ræ   rí  r  r  r  r  r*   r  r  s	     @@@@@@@r/   Ústrong_connectionszSequencer.strong_connections˜  s\   þ€ ð ˜ˆØˆØˆØˆØˆà—‘ˆ÷!	)ò !	)ðF ò 	$ˆDØ˜8Ò#Ù˜dÕ#ð	$ð ˆr1   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 -> rU   z  %s;ú}ú
)ré  r$   rë  r&   )ræ   r*   rõ  rø  rô  rí  s         r/   ÚdotzSequencer.dotÌ  sŠ   € à�ˆØ—K‘Kò 	<ˆDØ—K‘K Ñ%ˆEØò <�Ø—’ªt²TÐ:Õ;ñ<ð	<ð —K‘Kò 	*ˆDØ�M‰M˜' D™.Õ)ð	*à�‰�cÔØ�y‰y˜Ó Ð r1   Nra  )rë   rï   rð   rç   rî  rñ  r  rõ   rü  r  Úpropertyr  r  rD   r1   r/   rç  rç  O  sO   „ òò
ó'ò 6ò
Hò(ò ð2 ñ1ó ð1ðf ñ	!ó ñ	!r1   rç  )ú.tar.gzú.tar.bz2ú.tarú.zipú.tgzú.tbzú.whlc                 óp  ‡‡— ˆˆ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«      |	_        Œ? 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   Údecoderq   rr   r
  r&   r^   rs   ró   )rr   rš   Údest_dirÚplens     €€r/   Ú
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Ñ?Ó@Ð@ð *;r1   )r  r  Úzip)r  r  Útgzzr:gz)r  r  Útbzzr:bz2r  Útarr´  zUnknown format for %rr   r¤   r¥   c                 óŽ   — 	 t        j                  | |«      S # t         j                  $ r}t        t	        |«      «      ‚d}~ww xY w)z9Run tarfile.tar_filter, but raise the expected ValueErrorN)ÚtarfileÚ
tar_filterÚFilterErrorró   Ústr)Úmemberrr   Úexcs      r/   Úextraction_filterz$unarchive.<locals>.extraction_filter  s?   € ð+Ü×)Ñ)¨&°$Ó7Ð7øÜ×&Ñ&ò +Ü ¤ S£Ó*Ð*ûð+ús   ‚ ˜A«?¿A)rq   rr   r
  rt   r‘  ró   r   Únamelistr+  r#  Úgetnamesr‹   r¯   Ú
getmembersr’   rX   r   r"  r1  Ú
extractallr»   )Úarchive_filenamer#  Úformatr  r%  Úarchiver7  ÚnamesrX   Útarinfor1  r$  s    `         @r/   Ú	unarchiver;  á  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ð@ò	+ð %6ˆÔ!à×Ñ˜8Ô$ñ Ø�M‰M�Oð ø‰7Ø�M‰M�Oð ús   ÂB2F  Å=F  Æ F5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ÚBytesIOrt   r   rq   Úwalkrr   r&   rÎ   )Ú	directoryr*   ÚdlenÚzfru   r]  r6  rX   ÚfullÚrelr~   s              r/   Úzip_dirrE  %  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      r/   rç   zProgress.__init__=  s>   € Øˆ~ ¨6Ò!1Ð1Ð1Ø$Ð$ˆŒ�4”8ØˆŒØˆŒØˆŒØˆ�	r1   c                 óæ   — | j                   |k  sJ ‚| j                  �|| j                  k  sJ ‚|| _        t        j                  «       }| j                  €|| _        y || j                  z
  | _        y r�   )r  rP  rO  ÚtimerQ  rR  )ræ   ÚcurvalÚnows      r/   ÚupdatezProgress.updateE  sb   € Ø�x‰x˜6Ò!Ð!Ð!Ø�x‰xÐ 6¨T¯X©XÒ#5Ð5Ð5ØˆŒÜ�i‰i‹kˆØ�<‰<ÐØˆD�Là §¡Ñ-ˆD�Lr1   c                 óN   — |dk\  sJ ‚| j                  | j                  |z   «       y )Nr   )rZ  rO  )ræ   Úincrs     r/   Ú	incrementzProgress.incrementO  s"   € Ø�qŠyÐˆyØ�‰�D—H‘H˜t‘OÕ$r1   c                 ó<   — | j                  | j                  «       | S r�   )rZ  r  r  s    r/   r£  zProgress.startS  s   € Ø�‰�D—H‘HÔØˆr1   c                 ó`   — | j                   �| j                  | j                   «       d| _        y ©NT)rP  rZ  rS  r  s    r/   ÚstopzProgress.stopW  s#   € Ø�8‰8ÐØ�K‰K˜Ÿ™Ô!Øˆ�	r1   c                 óJ   — | j                   €| j                  S | j                   S r�   )rP  Úunknownr  s    r/   ÚmaximumzProgress.maximum\  s   € à#Ÿx™xÐ/ˆt�|‰|Ð=°T·X±XÐ=r1   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 %%)rS  rP  rO  r  )ræ   r*   rS   s      r/   Ú
percentagezProgress.percentage`  sf   € à�9Š9ØˆFð ˆð �X‰XÐØˆFð ˆð ˜Ÿ™ D§H¡HÑ,Ñ-°·±¸D¿H¹HÑ1DÑEˆAØ ‘\ˆFØˆr1   c                 ó´   — |dk  r| j                   �| j                  | j                  k(  rd}|S t        j                  dt        j
                  |«      «      }|S )Nr   z??:??:??z%H:%M:%S)rP  rO  r  rW  ÚstrftimeÚgmtime)ræ   Údurationr*   s      r/   Úformat_durationzProgress.format_durationk  sM   € Ø˜ŠM˜tŸx™xÐ/°4·8±8¸t¿x¹xÒ3GØˆFð
 ˆô —]‘] :¬t¯{©{¸8Ó/DÓEˆFØˆr1   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: )rS  rR  rP  rO  r  Úfloatrk  )ræ   r   rh   s      r/   ÚETAzProgress.ETAt  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¸Ô#:Ð;Ð;r1   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)rR  rO  r  ÚUNITS)ræ   r*   Úunits      r/   ÚspeedzProgress.speed‡  sb   € à�<‰<˜1ÒØ‰Fà—h‘h §¡Ñ)¨T¯\©\Ñ9ˆFÜò 	ˆDØ˜Š}ÙØ�fÑ‰Fð	ð ˜V T˜NÑ*Ð*r1   N)r   éd   )rë   rï   rð   rc  rç   rZ  r]  r£  ra  r  rd  rf  rk  ro  rs  rD   r1   r/   rL  rL  :  su   „ Ø€Góò.ò%òòð
 ñ>ó ð>ð ñó ðòð ñ<ó ð<ð$ ñ	+ó ñ	+r1   rL  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     r/   r   r   �  sQ   € ä×#Ñ# IÔ.ØKˆÜ˜˜y™Ó)Ð)Ü×!Ñ! )Ô,ØFˆÜ˜˜y™Ó)Ð)Ü�)ÓÐr1   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¤   rK   r   z**re  r±  rp   ú\)Ú	RICH_GLOBrž   rt   rx  r&   Ú	std_iglobr'   rq   r?  rr   rÌ  )ry  Úrich_path_globr   rÍ   r}   Úitemrr   ÚradicalÚdirr6  rÑ  s              r/   rx  rx  ¨  sP  è ø€ Ü—_‘_ 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_        t        | dd «      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Ú	cert_file)ÚcafileÚHAS_SNIÚserver_hostnamezHost verified: %s)rÜ   Úcreate_connectionÚhostÚportÚtimeoutrŒ   ÚsockÚ_tunnelÚsslÚ
SSLContextÚPROTOCOL_SSLv23rŠ   Úoptionsr‰  Úload_cert_chainrŠ  Úkey_fileÚca_certsÚCERT_REQUIREDÚverify_modeÚload_verify_locationsÚwrap_socketÚcheck_domainrƒ  Úgetpeercertr  rM  r„  ÚshutdownÚ	SHUT_RDWRr»   )ræ   r’  Úcontexträ  s       r/   ÚconnectzHTTPSConnection.connectÑ  s~  € Ü×+Ñ+¨T¯Y©Y¸¿	¹	Ð,BØ,0¯L©Ló:ˆDä�t˜^¨UÔ3Ø �”	Ø—‘”ä—n‘n¤S×%8Ñ%8Ó9ˆGÜ”s˜MÔ*Ø—’¤3§?¡?Ñ2•Ü�t˜[¨$Ô/Ø×'Ñ'¨¯©¸¿¹Ô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   Å4AG ÇAH)rë   rï   rð   rš  rŸ  r¤  rD   r1   r/   r†  r†  Ì  s   „ ØˆØˆó	r1   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      r/   rç   zHTTPSHandler.__init__ð  s   € Ü×%Ñ% dÔ+Ø$ˆDŒMØ ,ˆDÕr1   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       r/   Ú_conn_makerzHTTPSHandler._conn_makerõ  s8   € ô % dÐ5¨fÑ5ˆFØ�}Š}Ø"&§-¡-�”Ø&*×&7Ñ&7�Ô#ØˆMr1   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   r.  Úreasonr„  r�  )ræ   rc   r¾  s      r/   Ú
https_openzHTTPSHandler.https_open  sa   € ðØ—|‘| D×$4Ñ$4°cÓ:Ð:øÜò Ø.´#°a·h±h³-Ñ?Ü*ð!Ø#&§8¡8ñ,ó-ð -ð ûðús   ‚ ž	A§0AÁANrb  )rë   rï   rð   rç   r©  r­  rD   r1   r/   r‚  r‚  î  s   „ ó	-ò
	ó 		r1   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æ   rc   s     r/   Ú	http_openzHTTPSOnlyHandler.http_open  s   € Üð!Ø#&ñ'ó(ð (r1   N)rë   rï   rð   r±  rD   r1   r/   r¯  r¯    s   „ ó	(r1   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      r/   rç   zTransport.__init__&  s   € ØˆŒÜ×Ñ×$Ñ$ T¨<Õ8r1   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        r/   Úmake_connectionzTransport.make_connection*  sd   € Ø×(Ñ(¨Ó.‰ˆˆ2ˆtØ×Ò 4¨4×+;Ñ+;¸AÑ+>Ò#>Ø"$ˆDÔØ#¤W×%;Ñ%;¸AÓ%>Ð>ˆDÔØ×Ñ Ñ"Ð"r1   N©r   ©rë   rï   rð   rç   r¿  rD   r1   r/   r³  r³  $  s   „ ó9ó#r1   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      r/   rç   zSafeTransport.__init__6  s   € Ø"ˆDŒLÜ×#Ñ#×,Ñ,¨T°<Õ@r1   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        r/   r¿  zSafeTransport.make_connection:  s‰   € Ø ×.Ñ.¨tÓ4‰MˆAˆr�6ÙØ�Ø $§¡ˆF�9ÑØ×#Ò# t¨t×/?Ñ/?ÀÑ/BÒ'BØ&(�Ô#Ø#'¬×)@Ñ)@Ø�tñ*'Ø%ñ*'ð $'�Ô à×#Ñ# AÑ&Ð&r1   NrÀ  rÁ  rD   r1   r/   rÃ  rÃ  4  s   „ ó	Aó		'r1   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)
rw   r‘  r   r¸  rÃ  r³  rÊ  r   rÇ  rç   )ræ   rf   rä  r‘  ra   r¶  Útclsrh   s           r/   rç   zServerProxy.__init__H  s‰   € Ø!'§¡¨I°tÓ!<Ð<ˆŒ�wð Ðä˜c“] 1Ñ%ˆFØ!Ÿ:™: n°aÓ8ˆLØ˜Ò Ü$‘ä �Ù&*¨7ÀÔ&NÐNˆF�;Ñ !ØˆDŒNÜ×Ñ×&Ñ& t¨SÑ;°FÓ;r1   N)rë   rï   rð   rç   rD   r1   r/   rÇ  rÇ  F  s   „ ó<r1   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Ñ  r7  rä  s      r/   Ú	_csv_openrÏ  _  sF   € Ü
×Ñ˜Ñ˜QÒØ�‰‰àˆˆyÑð %ˆˆzÑÜ��DÑ#˜FÑ#Ð#r1   c                   óH   — e Zd Z ed«       ed«       ed«      dœZd„ Zd„ Zy)ÚCSVBaserK   ú"r  )Ú	delimiterÚ	quotecharÚlineterminatorc                 ó   — | S r�   rD   r  s    r/   Ú	__enter__zCSVBase.__enter__q  ó   € Øˆr1   c                 ó8   — | j                   j                  «        y r�   )r­   r»   )ræ   r„  s     r/   Ú__exit__zCSVBase.__exit__t  s   € Ø�‰×ÑÕr1   N)rë   rï   rð   r.  Údefaultsr×  rÚ  rD   r1   r/   rÑ  rÑ  j  s(   „ á˜“XÙ˜“XÙ˜d›)ñ€Hòór1   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¥   rr   r´  )	r‹   r¯   r°   r±   r­   rÏ  Úcsvr½  rÛ  )ræ   rä  r­   s      r/   rç   zCSVReader.__init__z  st   € Ø�vÑØ˜HÑ%ˆFÜ×Ñ Ñ" aÒ'à2œ×)Ñ)¨'Ó2°6Ó:�Ø ˆD�Kä# F¨6¡N°CÓ8ˆDŒKÜ—j‘j §¡Ñ>°·±Ñ>ˆ�r1   c                 ó   — | S r�   rD   r  s    r/   Ú__iter__zCSVReader.__iter__…  rØ  r1   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*   rg   r  s       r/   rä  zCSVReader.nextˆ  s^   € Ü�d—k‘kÓ"ˆÜ×Ñ˜AÑ Ò"Ü$ VÓ,ò 5‘��4Ü! $¬	Õ2Ø $§¡¨GÓ 4�F˜1’Ið5ð ˆr1   N)rë   rï   rð   rç   rá  rä  Ú__next__rD   r1   r/   rÝ  rÝ  x  s   „ ò	?òòð �Hr1   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      r/   rç   zCSVWriter.__init__•  s-   € Ü  CÓ(ˆŒÜ—j‘j §¡Ñ>°·±Ñ>ˆ�r1   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´  r  s       r/   rë  zCSVWriter.writerow™  se   € Ü×Ñ˜AÑ Ò"ØˆAØò �Ü˜d¤IÔ.ØŸ;™; wÓ/�DØ—‘˜•ðð ˆCØ�‰×Ñ˜SÕ!r1   N)rë   rï   rð   rç   rë  rD   r1   r/   rç  rç  “  s   „ ò?ó"r1   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ç   rq   r×   r|   )ræ   Úconfigr|   Ú	__class__s      €r/   rç   zConfigurator.__init__®  s$   ø€ ÜŒl˜DÑ*¨6Ô2ØÒ'œBŸI™I›Kˆ�	r1   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’   rY  r  ÚtypeÚdictÚconfigure_customÚconvert)Úorg   r*   rÃ   rü  ræ   s       €€r/   rü  z.Configurator.configure_custom.<locals>.convert´  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ø  re  z[]rD   )rw   ry  rk  r  r   rú  rµ   Úsetattr)ræ   ró  r›   Úpropsrã  rý  rÃ   rµ   rä  r*   rª  rS   rü  s   `           @r/   rû  zConfigurator.configure_custom²  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      r/   Ú__getitem__zConfigurator.__getitem__Ò  sC   € Ø—‘˜SÑ!ˆÜ�fœdÔ#¨°©Ø(,×(=Ñ(=¸fÓ(EÐEˆD�K‰K˜Ñ˜vØˆr1   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)	rq   rr   Úisabsr&   r|   r°   r#  r³   r´   )ræ   rÅ   r)  r*   s       r/   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   @r/   rî  rî  ©  s5   ø„ áÐ,×=Ñ=Ó>ÐØ+Ð�UÑõ(òò@ör1   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      r/   rç   zSubprocessMixin.__init__æ  s   € ØˆŒØ ˆ�r1   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.
        Nre  r¥   )	r
  r	  Úreadliner‹   ÚstderrrÎ   r"  Úflushr»   )ræ   r­   r£  r
  r	  r.   s         r/   r½  zSubprocessMixin.readerê  s‹   € ð
 —=‘=ˆØ—,‘,ˆØØ—‘Ó!ˆAÙØØÐ#Ù˜˜GÕ$áÜ—J‘J×$Ñ$ SÕ)ä—J‘J×$Ñ$ Q§X¡X¨gÓ%6Ô7Ü—
‘
× Ñ Ô"ð ð 	�‰�r1   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         r/   Úrun_commandzSubprocessMixin.run_commandÿ  sÝ   € Ü×Ñ˜Sð 'Ü$.§O¡OÜ$.§O¡Oñ'ð  &ñ'ˆô ×Ñ T§[¡[¸¿¹À(Ð7KÔLˆØ
�‰Œ
Ü×Ñ T§[¡[¸¿¹À(Ð7KÔLˆØ
�‰Œ
Ø	�‰ŒØ
�‰Œ	Ø
�‰Œ	Ø�=‰=Ð$Ø�M‰M˜' 6Ô*ð ˆð �\Š\Ü�J‰J×Ñ˜YÔ'Øˆr1   )FN)rë   rï   rð   rÓ  rç   r½  r  rD   r1   r/   r  r  á  s   „ ñó!òó*r1   r  c                 óL   — t        j                  dd| «      j                  «       S )z,Normalize a python package name a la PEP 503z[-_.]+r¡  )r¤  Úsubr•   )rX   s    r/   Únormalize_namer    s    € ô �6‰6�(˜C Ó&×,Ñ,Ó.Ð.r1   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)rq   rr   r&   r‡  r§  r[   )ræ   rÑ  r[   s      r/   rç   zPyPIRCFile.__init__(  s8   € Øˆ:Ü—‘—‘œbŸg™g×0Ñ0°Ó5°yÓAˆBØˆŒØˆ�r1   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'  )rq   rr   r	  r§  r[   ÚDEFAULT_REPOSITORYr   ÚRawConfigParserr²   r¾   r¸  rž   r]   ÚDEFAULT_REALMÚ
has_option)
ræ   r*   r&  ró  r¾   Úindex_serversr%  Ú_serversr¡   r™   s
             r/   r²   zPyPIRCFile.read.  s8  € Øˆä�7‰7�>‰>˜$Ÿ-™-Õ(ØŸ™Ò< T×%<Ñ%<ˆJä!×1Ñ1Ó3ˆFØ�K‰K˜Ÿ™Ô&Ø—‘Ó(ˆHØ˜hÒ&à &§
¡
¨;¸Ó H�à1>×1DÑ1DÀTÓ1JöØ'-Ø—|‘|“~¨Ò+ð —L‘L•Nð�ð ð ˜r’>à Ñ)Ø$* 8˜ðN ˆðK #+ò (˜Ø"*¨FÐ!3˜Ø-3¯Z©Z¸À
Ó-K˜˜zÑ*ð /;Ø.2×.EÑ.Eð.Gà.5°t×7IÑ7IÐ-JØ-?ð-Aò 6™L˜C ð  &×0Ñ0°¸Ô=Ø.4¯j©j¸ÀÓ.E  s¢à.5  s¢ð6ð # fÒ,°Ø$(×$;Ñ$;¸VÐ#Dñ2Eà37×3JÑ3J˜F <Ò0Ø$ XÑ.°*Ó<Ø"(¨Ñ"6¸*Ó"DØ%'™Fð-(ðJ ˆð   8Ñ+à'�Ø×$Ñ$ V¨\Ô:Ø!'§¡¨F°LÓ!A‘Jà!%×!8Ñ!8�Jà &§
¡
¨6°:Ó >Ø &§
¡
¨6°:Ó >Ø",Ø$Ø!×/Ñ/ñ�ð ˆùò]s   Â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         r/   rZ  zPyPIRCFile.updatej  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²   rZ  rD   r1   r/   r   r   #  s   „ à:ÐØ€Móò:óx
r1   r   c                 óJ   — t        | j                  ¬«      j                  «       S )zG
    Read the PyPI access configuration as supported by distutils.
    )r[   )r   r[   r²   ©r  s    r/   Ú_load_pypircr3  w  s   € ô ˜%Ÿ)™)Ô$×)Ñ)Ó+Ð+r1   c                 ó`   — t        «       j                  | j                  | j                  «       y r�   )r   rZ  r•  r–  r2  s    r/   Ú_store_pypircr5  ~  s   € ÜƒL×Ñ˜Ÿ™¨¯©Õ7r1   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#                  |«      }|rJ|j%                  «       }n9| dd  d#k(  r1ddl}		 dd$lm}
 |	j/                  |
j1                  «       | ||«      \  } }}| ›d|›d|›�S # t,        $ r ddl}
Y Œ?w xY w)%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_PLATFORMr/  Úunamerp   r   rV   ri   r¡  Né   ÚlinuxÚsunosr   Ú5Úsolarisz%d.%sr¤   é   Ú32bitÚ64bit)iÿÿÿl   ÿÿÿÿ z.%sÚaix)Úaix_platformé   Úcygwinz[\d.]+Údarwin)Ú	sysconfig)rq   rX   r‹   rÆ  r•   Úplatformr…  rŠ   r;  r#   ÚintÚmaxsizeÚ_aix_supportrE  r¤  rB  ÚASCIIr   rÁ   Ú_osx_supportr$  rI  ÚImportErrorÚget_platform_osxÚget_config_vars)Úosnamer�  ÚreleaserÆ  ÚmachineÚbitnessrE  Úrel_rer)   rO  rI  s              r/   Úget_host_platformrX  ˆ  s3  € ô( 
‡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Òò !¡'Ð*Ð*à	��ˆ�wÒ	Ø�1‰:˜ÒØˆFØ¤ W¨Q¡Z£°1Ñ!4°g¸a¸b°kÐ BÑBˆGð $+ÀÑIˆGØ�u˜w¤s§{¡{Ñ3Ñ3Ñ3‰Gà	��ˆ�uÒ	Ý-Ù‹~ÐØ	��ˆ�xÒ	ØˆÜ—‘˜I¤r§x¡xÓ0ˆØ�L‰L˜Ó!ˆÙØ—g‘g“i‰GØ	��ˆ�xÒ	Ûð	Ý+ð $0×#@Ñ#@Ø×%Ñ%Ó'¨°¸'ó$CÑ ˆ�˜ò  ¢©'Ð2Ð2øô ò 	Ýð	ús   ÈH> È>IÉIÚwin32r8  r9  )Ú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)rq   rX   rX  r…  r¸  Ú_TARGET_TO_PLAT)Úcross_compilation_targets    r/   Úget_platformra  ã  sG   € Ü	‡w�w�$‚Ü Ó"Ð"Ü!Ÿz™zŸ~™~Ð.BÓCÐØ¤Ñ6Ü Ó"Ð"ÜÐ3Ñ4Ð4r1   r0  )é   r�   r`  )…r°   Úcollectionsr   Ú
contextlibrß  Úglobr   r}  r=  r³   Úloggingrq   r@  r¤  rÜ   r”  rP  r  r‹   r+  rÑ   r¼   r  Údummy_threadingrW  r   r   Úcompatr   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   Ú	getLoggerrë   r  rB  r   rP   rO   r:   rC   r?   r`   r%   rF   rl   r†   rŽ   r“   rœ   r¢   rÆ   rÏ   ÚcontextmanagerrÕ   rØ   rá   ré   rã   rø   rú   rk  rm  ÚVERBOSErz  r¶   rŒ  r�  r’  r—  r›  rŸ  ÚIr¦  r¢  r«  r®  r¯  r¶  r¿  rÃ  rÄ  rÇ  rÉ  rÕ  rç  ÚARCHIVE_EXTENSIONSr;  rE  rq  rL  r|  rv  rw  rx  r‚  r§  rƒ  r„  r†  r¯  r³  rÃ  rÇ  rÏ  rÑ  rÝ  rç  rî  r  r  r   r3  r5  rX  r_  ra  rD   r1   r/   ú<module>rn     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€òX!òvB%òJò4òó$ò ò,ò^ð& ×Ññó ðð ×Ññó ðð ×Ñò&ó ð&ô�fô ò  ô6~�6ô ~òBô�&ô ð8 ˆ2�:‰:ðð Ÿ:™:ó	'€òó>&(òRò"ò&òòð &˜2Ÿ:™:ðØ—t‘tóÐ ð �—‘Ð,Ó-€óð4 �"—*‘*ð 9ó :€ò/ò ò8ð* DÐ òò#ô)ˆFô )ôXD�ô DôTG!�ô G!ð\Ð óAòHð$ 	&€ôW+ˆvô W+ð| ˆB�J‰J�~Ó&€	Ø"˜Ÿ
™
Ð#?Ó@Ð Ø �b—j‘jÐ!5Ó6Ð òòñ8 ÷+ñ +ô ˜'×1Ñ1ô  ôD Ð'ô  ôV(˜<¨ô (ô#�	×#Ñ#ô #ñ ô'˜	×/Ñ/ô 'ô$<�)×'Ñ'ô <ò2$ôˆfô ô�ô ô6"�ô "ô,5Ð#ô 5ôp.�fô .òb/ô"Q�ô Qòh,ò8òQ3ðj ØØñ€ó5øða> ò Ø
ƒCðûð ò (Þ'ð(ús#   ¶M5 ÁN Í5N Í?N Î	NÎN