<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>
ž
7’ReÈ  c               @   s×  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 y d  d l Z Wn e k
 rd  d l Z Yn Xd  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
 j0 e1 ƒ Z2 d Z3 e j4 e3 ƒ Z5 d Z6 d	 e6 d
 Z7 e6 d Z8 d Z9 d e9 d e8 d e3 d e9 d e8 d Z: d Z; d e: d e; d e: d Z< e7 d e3 e7 d Z= d e= d Z> d e6 d e> d e< d Z? e j4 e? ƒ Z@ d e9 d e8 d
 ZA e j4 eA ƒ ZB d d  „  ZC d! d" „  ZD d# d$ „  ZE d% d& „  ZF d d d' d( „ ZH d) d* „  ZI d+ d, „  ZJ d- d. „  ZK e jL d/ d0 „  ƒ ZM e jL d1 d2 „  ƒ ZN e jL d3 d4 d5 „ ƒ ZO Gd6 d7 „  d7 eP ƒ ZQ d8 d9 „  ZR Gd: d; „  d; eP ƒ ZS d< d= „  ZT Gd> d? „  d? eP ƒ ZU e j4 d@ e jV ƒ ZW dA dB „  ZX d dC dD „ ZY dE dF „  ZZ dG dH „  Z[ dI dJ „  Z\ dK dL „  Z] dM dN „  Z^ e j4 dO e j_ ƒ Z` e j4 dP ƒ Za d dQ dR „ Zb e j4 dS ƒ Zc dT dU „  Zd dV dW „  Ze dX dY „  Zf dZ d[ „  Zg d\ d] „  Zh Gd^ d_ „  d_ eP ƒ Zi Gd` da „  da eP ƒ Zj Gdb dc „  dc eP ƒ Zk dœ Zl d d dk dl „ Zn dm dn „  Zo dž Zp Gdu dv „  dv eP ƒ Zq e j4 dw ƒ Zr e j4 dx ƒ Zs e j4 dy ƒ Zt dz d{ „  Z d| d} „  Zu Gd~ d „  d e" jv ƒ Zv Gd€ d „  d e' ƒ Z& Gd‚ dƒ „  dƒ e& e% ƒ Zw e jx d d„ … Zy ey dŸ k rGd† d‡ „  d‡ e" jz ƒ Zz Gdˆ d‰ „  d‰ e" j{ ƒ Z{ n  GdŠ d‹ „  d‹ e# j| ƒ Z| GdŒ d „  d e# j} ƒ Z} GdŽ d „  d e# j~ ƒ Z~ d d‘ „  Z Gd’ d“ „  d“ eP ƒ Z€ Gd” d• „  d• e€ ƒ Z Gd– d— „  d— e€ ƒ Z‚ Gd˜ d™ „  d™ e( ƒ Zƒ Gdš d› „  d› eP ƒ Z„ d S(    i    N(   u   deque(   u   iglobi   (   u   DistlibException(   u   string_typesu	   text_typeu   shutilu	   raw_inputu   StringIOu   cache_from_sourceu   urlopenu   httplibu	   xmlrpclibu	   splittypeu   HTTPHandleru   HTTPSHandleru   BaseConfiguratoru   valid_identu	   Containeru   configparseru   URLErroru   match_hostnameu   CertificateErroru   ZipFileu   \s*,\s*u
   (\w|[.-])+u   (\*|:(\*|\w+):|u   )u   \*?u   ([<>=!~]=)|[<>]u   (u   )?\s*(u   )(u   )\s*(u   ))*u   (from\s+(?P<diref>.*))u   \(\s*(?P<c1>u   |u   )\s*\)|(?P<c2>u   \s*)u   )*u   \[\s*(?P<ex>u   )?\s*\]u   (?P<dn>u	   \s*)?(\s*u   )?$u   (?P<op>u   )\s*(?P<vn>c                s^  d d „  ‰  d  } t j |  ƒ } | rZ| j ƒ  } | d } | d pN | d } | d sd d  } n d  } | d j ƒ  } | s™ d  } d } | d } nk | d d	 k r¶ d
 | } n  t j | ƒ }	 ‡  f d d †  |	 Dƒ } d | d j d d „  | Dƒ ƒ f } | d sd  }
 n t j	 | d ƒ }
 t
 d | d | d |
 d | d |  d | ƒ } n  | S(   Nc             S   s   |  j  ƒ  } | d | d f S(   Nu   opu   vn(   u	   groupdict(   u   mu   d(    (    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu   get_constraintT   s    u)   parse_requirement.<locals>.get_constraintu   dnu   c1u   c2u   direfu    i    u   <>!=u   ~=c                s   g  |  ] } ˆ  | ƒ ‘ q S(    (    (   u   .0u   m(   u   get_constraint(    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu
   <listcomp>l   s   	 u%   parse_requirement.<locals>.<listcomp>u   %s (%s)u   , c             S   s   g  |  ] } d  | ‘ q S(   u   %s %s(    (   u   .0u   con(    (    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu
   <listcomp>m   s   	 u   exu   nameu   constraintsu   extrasu   requirementu   sourceu   url(   u   Noneu   REQUIREMENT_REu   matchu	   groupdictu   stripu   RELOP_IDENT_REu   finditeru   joinu   COMMA_REu   splitu	   Container(   u   su   resultu   mu   du   nameu   consu   urlu   constru   rsu   iteratoru   extras(    (   u   get_constraintu1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu   parse_requirementR   s4    

	&
	u   parse_requirementc             C   sø   d d „  } i  } xß | D]× \ } } } t  j j |  | ƒ } x° t | ƒ D]¢ } t  j j | | ƒ }	 x„ t |	 ƒ D]v }
 | |  |
 ƒ } | d k r¦ | j | d ƒ qr | | |
 ƒ } | j t  j j d ƒ j d ƒ } | d | | | <qr WqJ Wq W| S(   u%   Find destinations for resources filesc             S   sb   |  j  t j j d ƒ }  | j  t j j d ƒ } | j |  ƒ sE t ‚ | t |  ƒ d  … j d ƒ S(   Nu   /(   u   replaceu   osu   pathu   sepu
   startswithu   AssertionErroru   lenu   lstrip(   u   baseu   path(    (    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu   get_rel_pathz   s    u)   get_resources_dests.<locals>.get_rel_pathu   /N(	   u   osu   pathu   joinu   iglobu   Noneu   popu   replaceu   sepu   rstrip(   u   resources_rootu   rulesu   get_rel_pathu   destinationsu   baseu   suffixu   destu   prefixu   abs_baseu   abs_globu   abs_pathu   resource_fileu   rel_pathu   rel_dest(    (    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu   get_resources_destsw   s    !u   get_resources_destsc              C   s:   t  t d ƒ r d }  n t j t t d t j ƒ k }  |  S(   Nu   real_prefixu   base_prefixT(   u   hasattru   sysu   Trueu   prefixu   getattr(   u   result(    (    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu   in_venv’   s    	u   in_venvc              C   s;   t  j d k r. d t j k r. t j d }  n	 t  j }  |  S(   Nu   darwinu   __PYVENV_LAUNCHER__(   u   sysu   platformu   osu   environu
   executable(   u   result(    (    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu   get_executableœ   s
    	u   get_executablec             C   s}   |  } xp t  | ƒ } |  } | r1 | r1 | } n  | r	 | d j ƒ  } | | k rW Pn  | rv d | | |  f } qv q	 q	 | S(   Ni    u	   %c: %s
%s(   u	   raw_inputu   lower(   u   promptu   allowed_charsu   error_promptu   defaultu   pu   su   c(    (    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu   proceed¥   s    	u   proceedc             C   sV   t  | t ƒ r | j ƒ  } n  i  } x+ | D]# } | |  k r+ |  | | | <q+ q+ W| S(   N(   u
   isinstanceu   string_typesu   split(   u   du   keysu   resultu   key(    (    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu   extract_by_keyµ   s    u   extract_by_keyc             C   sº  t  j d d k r+ t j d ƒ |  ƒ }  n  |  j ƒ  } t | ƒ }  y“ t j |  ƒ } | d } xo | j ƒ  D]a \ } } xR | j ƒ  D]D \ } } d | | f } t	 | ƒ } | d  k	 s¿ t ‚ | | | <q… Wql W| SWn" t k
 rú |  j d d ƒ Yn Xt j ƒ  }	 t |	 d ƒ r&|	 j |  ƒ n |	 j |  ƒ i  } xz |	 j ƒ  D]l }
 i  | |
 <} xU |	 j |
 ƒ D]D \ } } d | | f } t	 | ƒ } | d  k	 s¤t ‚ | | | <qjWqFW| S(   Ni    i   u   utf-8u   exportsu   %s = %su	   read_file(   u   sysu   version_infou   codecsu	   getreaderu   readu   StringIOu   jsonu   loadu   itemsu   get_export_entryu   Noneu   AssertionErroru	   Exceptionu   seeku   configparseru   ConfigParseru   hasattru	   read_fileu   readfpu   sections(   u   streamu   datau   resultu   groupu   entriesu   ku   vu   su   entryu   cpu   keyu   nameu   value(    (    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu   read_exports¾   s:    
u   read_exportsc             C   sø   t  j d d k r+ t j d ƒ | ƒ } n  t j ƒ  } x­ |  j ƒ  D]Ÿ \ } } | j | ƒ xƒ | j ƒ  D]u } | j	 d  k r‹ | j } n d | j | j	 f } | j rÉ d | d j | j ƒ f } n  | j | | j | ƒ qj WqD W| j | ƒ d  S(   Ni    i   u   utf-8u   %s:%su   %s [%s]u   , (   u   sysu   version_infou   codecsu	   getwriteru   configparseru   ConfigParseru   itemsu   add_sectionu   valuesu   suffixu   Noneu   prefixu   flagsu   joinu   setu   nameu   write(   u   exportsu   streamu   cpu   ku   vu   entryu   s(    (    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu   write_exportsâ   s    	u   write_exportsc              c   s*   t  j ƒ  }  z	 |  VWd  t j |  ƒ Xd  S(   N(   u   tempfileu   mkdtempu   shutilu   rmtree(   u   td(    (    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu   tempdirõ   s    	u   tempdirc             c   s7   t  j ƒ  } z t  j |  ƒ d  VWd  t  j | ƒ Xd  S(   N(   u   osu   getcwdu   chdir(   u   du   cwd(    (    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu   chdirý   s
    	u   chdiri   c             c   s7   t  j ƒ  } z t  j |  ƒ d  VWd  t  j | ƒ Xd  S(   N(   u   socketu   getdefaulttimeoutu   setdefaulttimeout(   u   secondsu   cto(    (    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu   socket_timeout  s
    	u   socket_timeoutc             B   s/   |  Ee  Z d  Z d d „  Z d d d „ Z d S(   u   cached_propertyc             C   s   | |  _  d  S(   N(   u   func(   u   selfu   func(    (    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu   __init__  s    u   cached_property.__init__c             C   s<   | d  k r |  S|  j | ƒ } t j | |  j j | ƒ | S(   N(   u   Noneu   funcu   objectu   __setattr__u   __name__(   u   selfu   obju   clsu   value(    (    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu   __get__  s
    u   cached_property.__get__N(   u   __name__u
   __module__u   __qualname__u   __init__u   Noneu   __get__(   u
   __locals__(    (    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu   cached_property  s   u   cached_propertyc             C   sµ   t  j d k r |  S|  s |  S|  d d k r@ t d |  ƒ ‚ n  |  d d k rc t d |  ƒ ‚ n  |  j d ƒ } x# t  j | k r— | j t  j ƒ qu W| s¥ t  j St  j j | Œ  S(   uÐ  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.
    u   /i    u   path '%s' cannot be absolutei   u   path '%s' cannot end with '/'iÿÿÿÿ(   u   osu   sepu
   ValueErroru   splitu   curdiru   removeu   pathu   join(   u   pathnameu   paths(    (    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu   convert_path  s    
u   convert_pathc             B   sæ   |  Ee  Z d  Z d" d d „ Z d d „  Z d d „  Z d d „  Z d# d	 d
 „ Z	 d! d d „ Z d d „  Z d d „  Z d d „  Z d d „  Z d d „  Z d" d" d! d d „ Z d d „  Z d d „  Z d d „  Z d d  „  Z d! S($   u   FileOperatorc             C   s#   | |  _  t ƒ  |  _ |  j ƒ  d  S(   N(   u   dry_runu   setu   ensuredu   _init_record(   u   selfu   dry_run(    (    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu   __init__;  s    	u   FileOperator.__init__c             C   s%   d |  _ t ƒ  |  _ t ƒ  |  _ d  S(   NF(   u   Falseu   recordu   setu   files_writtenu   dirs_created(   u   self(    (    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu   _init_record@  s    	u   FileOperator._init_recordc             C   s    |  j  r |  j j | ƒ n  d  S(   N(   u   recordu   files_writtenu   add(   u   selfu   path(    (    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu   record_as_writtenE  s    	u   FileOperator.record_as_writtenc             C   si   t  j j | ƒ s1 t d t  j j | ƒ ƒ ‚ n  t  j j | ƒ sG d St  j | ƒ j t  j | ƒ j k S(   uÎ  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".
        u   file '%r' does not existT(   u   osu   pathu   existsu   DistlibExceptionu   abspathu   Trueu   statu   st_mtime(   u   selfu   sourceu   target(    (    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu   newerI  s    u   FileOperator.newerc             C   sÒ   |  j  t j j | ƒ ƒ t j d | | ƒ |  j sÁ d } | r• t j j | ƒ r` d | } q• t j j	 | ƒ r• t j j
 | ƒ r• d | } q• n  | r® t | d ƒ ‚ n  t j | | ƒ n  |  j | ƒ d S(   u8   Copy a file respecting dry-run and force flags.
        u   Copying %s to %su   %s is a symlinku   %s is a non-regular fileu    which would be overwrittenN(   u
   ensure_diru   osu   pathu   dirnameu   loggeru   infou   dry_runu   Noneu   islinku   existsu   isfileu
   ValueErroru   shutilu   copyfileu   record_as_written(   u   selfu   infileu   outfileu   checku   msg(    (    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu	   copy_file]  s    	%u   FileOperator.copy_filec          
   C   sº   t  j j | ƒ s t ‚ |  j t  j j | ƒ ƒ t j d | | ƒ |  j s© | d  k rl t
 | d ƒ } n t j
 | d d | ƒ} z t j | | ƒ Wd  | j ƒ  Xn  |  j | ƒ d  S(   Nu   Copying stream %s to %su   wbu   wu   encoding(   u   osu   pathu   isdiru   AssertionErroru
   ensure_diru   dirnameu   loggeru   infou   dry_runu   Noneu   openu   codecsu   shutilu   copyfileobju   closeu   record_as_written(   u   selfu   instreamu   outfileu   encodingu	   outstream(    (    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu   copy_streamn  s    	u   FileOperator.copy_streamc          	   C   s[   |  j  t j j | ƒ ƒ |  j sJ t | d ƒ  } | j | ƒ Wd  QXn  |  j | ƒ d  S(   Nu   wb(   u
   ensure_diru   osu   pathu   dirnameu   dry_runu   openu   writeu   record_as_written(   u   selfu   pathu   datau   f(    (    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu   write_binary_file}  s
    	u   FileOperator.write_binary_filec          
   C   sd   |  j  t j j | ƒ ƒ |  j sS t | d ƒ  } | j | j | ƒ ƒ Wd  QXn  |  j | ƒ d  S(   Nu   wb(	   u
   ensure_diru   osu   pathu   dirnameu   dry_runu   openu   writeu   encodeu   record_as_written(   u   selfu   pathu   datau   encodingu   f(    (    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu   write_text_file„  s
    	u   FileOperator.write_text_filec             C   s€   t  j d k r| xj | D]_ } |  j r8 t j d | ƒ q t  j | ƒ j | B| @} t j d | | ƒ t  j | | ƒ q Wn  d  S(   Nu   posixu   changing mode of %su   changing mode of %s to %o(   u   osu   nameu   dry_runu   loggeru   infou   statu   st_modeu   chmod(   u   selfu   bitsu   masku   filesu   fu   mode(    (    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu   set_mode‹  s    	u   FileOperator.set_modec             C   s   |  j  d d | ƒ S(   Nim  iÿ  (   u   set_mode(   u   su   f(    (    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu   <lambda>—  s    u   FileOperator.<lambda>c             C   s¶   t  j j | ƒ } | |  j k r² t  j j | ƒ r² |  j j | ƒ t  j j | ƒ \ } } |  j | ƒ t j	 d | ƒ |  j
 s“ t  j | ƒ n  |  j r² |  j j | ƒ q² n  d  S(   Nu   Creating %s(   u   osu   pathu   abspathu   ensuredu   existsu   addu   splitu
   ensure_diru   loggeru   infou   dry_runu   mkdiru   recordu   dirs_created(   u   selfu   pathu   du   f(    (    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu
   ensure_dir™  s    "		u   FileOperator.ensure_dirc             C   s«   t  | | ƒ } t j d | | ƒ |  j sš | sD |  j | | ƒ r | sS d  } q | j | ƒ sh t ‚ | t | ƒ d  … } n  t	 j
 | | | d ƒ n  |  j | ƒ | S(   Nu   Byte-compiling %s to %sT(   u   cache_from_sourceu   loggeru   infou   dry_runu   neweru   Noneu
   startswithu   AssertionErroru   lenu
   py_compileu   compileu   Trueu   record_as_written(   u   selfu   pathu   optimizeu   forceu   prefixu   dpathu   diagpath(    (    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu   byte_compile¥  s    		u   FileOperator.byte_compilec             C   s  t  j j | ƒ rt  j j | ƒ r‘ t  j j | ƒ r‘ t j d | ƒ |  j s` t j	 | ƒ n  |  j
 r| |  j k rŽ |  j j | ƒ qŽ qqt  j j | ƒ r¬ d } n d } t j d | | ƒ |  j sÞ t  j | ƒ n  |  j
 r| |  j k r|  j j | ƒ qqn  d  S(   Nu   Removing directory tree at %su   linku   fileu   Removing %s %s(   u   osu   pathu   existsu   isdiru   islinku   loggeru   debugu   dry_runu   shutilu   rmtreeu   recordu   dirs_createdu   removeu   files_written(   u   selfu   pathu   s(    (    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu   ensure_removed³  s"    %					u   FileOperator.ensure_removedc             C   sj   d } x] | se t j j | ƒ r: t j | t j ƒ } Pn  t j j | ƒ } | | k r\ Pn  | } q	 W| S(   NF(   u   Falseu   osu   pathu   existsu   accessu   W_OKu   dirname(   u   selfu   pathu   resultu   parent(    (    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu   is_writableÈ  s    	
u   FileOperator.is_writablec             C   s/   |  j  s t ‚ |  j |  j f } |  j ƒ  | S(   uV   
        Commit recorded changes, turn off recording, return
        changes.
        (   u   recordu   AssertionErroru   files_writtenu   dirs_createdu   _init_record(   u   selfu   result(    (    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu   commitÔ  s    
u   FileOperator.commitc             C   sÜ   |  j  sÎ x9 t |  j ƒ D]( } t j j | ƒ r t j | ƒ q q Wt |  j d d ƒ} xq | D]f } t j
 | ƒ } | rº | d g k s‘ t ‚ t j j | | d ƒ } t j | ƒ n  t j | ƒ qa Wn  |  j ƒ  d  S(   Nu   reverseu   __pycache__i    T(   u   dry_runu   listu   files_writtenu   osu   pathu   existsu   removeu   sortedu   dirs_createdu   Trueu   listdiru   AssertionErroru   joinu   rmdiru   _init_record(   u   selfu   fu   dirsu   du   flistu   sd(    (    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu   rollbackÞ  s    	u   FileOperator.rollbackNFT(   u   __name__u
   __module__u   __qualname__u   Falseu   __init__u   _init_recordu   record_as_writtenu   neweru   Trueu	   copy_fileu   Noneu   copy_streamu   write_binary_fileu   write_text_fileu   set_modeu   set_executable_modeu
   ensure_diru   byte_compileu   ensure_removedu   is_writableu   commitu   rollback(   u
   __locals__(    (    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu   FileOperator:  s    
u   FileOperatorc             C   s‹   |  t  j k r t  j |  } n t |  ƒ } | d  k r@ | } nG | j d ƒ } t | | j d ƒ ƒ } x | D] } t | | ƒ } qn W| S(   Nu   .i    (   u   sysu   modulesu
   __import__u   Noneu   splitu   getattru   pop(   u   module_nameu   dotted_pathu   modu   resultu   partsu   p(    (    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu   resolveð  s    	u   resolvec             B   sS   |  Ee  Z d  Z d d „  Z e d d „  ƒ Z d d „  Z d d „  Z e j	 Z	 d	 S(
   u   ExportEntryc             C   s(   | |  _  | |  _ | |  _ | |  _ d  S(   N(   u   nameu   prefixu   suffixu   flags(   u   selfu   nameu   prefixu   suffixu   flags(    (    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu   __init__   s    			u   ExportEntry.__init__c             C   s   t  |  j |  j ƒ S(   N(   u   resolveu   prefixu   suffix(   u   self(    (    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu   value  s    u   ExportEntry.valuec             C   s    d |  j  |  j |  j |  j f S(   Nu   <ExportEntry %s = %s:%s %s>(   u   nameu   prefixu   suffixu   flags(   u   self(    (    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu   __repr__
  s    u   ExportEntry.__repr__c             C   sd   t  | t ƒ s d } nH |  j | j k o] |  j | j k o] |  j | j k o] |  j | j k } | S(   NF(   u
   isinstanceu   ExportEntryu   Falseu   nameu   prefixu   suffixu   flags(   u   selfu   otheru   result(    (    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu   __eq__  s    	u   ExportEntry.__eq__N(
   u   __name__u
   __module__u   __qualname__u   __init__u   cached_propertyu   valueu   __repr__u   __eq__u   objectu   __hash__(   u
   __locals__(    (    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu   ExportEntryÿ  s
   
u   ExportEntryu´   (?P<name>(\w|[-.])+)
                      \s*=\s*(?P<callable>(\w+)([:\.]\w+)*)
                      \s*(\[\s*(?P<flags>\w+(=\w+)?(,\s*\w+(=\w+)?)*)\s*\])?
                      c       
      C   sG  t  j |  ƒ } | sI d  } d |  k s3 d |  k rCt d |  ƒ ‚ qCnú | j ƒ  } | d } | d } | j d ƒ } | d k r” | d  } } n4 | d k r³ t d |  ƒ ‚ n  | j d ƒ \ } } | d	 }	 |	 d  k rd |  k sö d |  k r	t d |  ƒ ‚ n  g  }	 n d
 d „  |	 j d ƒ Dƒ }	 t | | | |	 ƒ } | S(   Nu   [u   ]u   Invalid specification %ru   nameu   callableu   :i    i   u   flagsc             S   s   g  |  ] } | j  ƒ  ‘ q S(    (   u   strip(   u   .0u   f(    (    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu
   <listcomp>;  s   	 u$   get_export_entry.<locals>.<listcomp>u   ,(   u   ENTRY_REu   searchu   Noneu   DistlibExceptionu	   groupdictu   countu   splitu   ExportEntry(
   u   specificationu   mu   resultu   du   nameu   pathu   colonsu   prefixu   suffixu   flags(    (    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu   get_export_entry!  s2    


	u   get_export_entryc             C   s  |  d
 k r d }  n  t j d k rH d t j k rH t j j d ƒ } n t j j d ƒ } t j j | ƒ r t j | t j	 ƒ } | så t
 j d | ƒ qå nH y t j | ƒ d } Wn. t k
 rä t
 j d | d d ƒd } Yn X| s
t j ƒ  } t
 j d	 | ƒ n  t j j | |  ƒ S(   u¦  
    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``.
    u   .distlibu   ntu   LOCALAPPDATAu   $localappdatau   ~u(   Directory exists but is not writable: %su   Unable to create %su   exc_infou#   Default location unusable, using %sNTF(   u   Noneu   osu   nameu   environu   pathu
   expandvarsu
   expanduseru   isdiru   accessu   W_OKu   loggeru   warningu   makedirsu   Trueu   OSErroru   Falseu   tempfileu   mkdtempu   join(   u   suffixu   resultu   usable(    (    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu   get_cache_base@  s&    	
u   get_cache_basec             C   s`   t  j j t  j j |  ƒ ƒ \ } } | r? | j d d ƒ } n  | j t  j d ƒ } | | d S(   u  
    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.
    u   :u   ---u   --u   .cache(   u   osu   pathu
   splitdriveu   abspathu   replaceu   sep(   u   pathu   du   p(    (    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu   path_to_cache_diri  s
    
$u   path_to_cache_dirc             C   s   |  j  d ƒ s |  d S|  S(   Nu   /(   u   endswith(   u   s(    (    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu   ensure_slashz  s    u   ensure_slashc             C   sk   d  } } d |  k r^ |  j d d ƒ \ } }  d | k rC | } q^ | j d d ƒ \ } } n  | | |  f S(   Nu   @i   u   :(   u   Noneu   split(   u   netlocu   usernameu   passwordu   prefix(    (    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu   parse_credentials€  s    
	u   parse_credentialsc              C   s    t  j d ƒ }  t  j |  ƒ |  S(   Ni   (   u   osu   umask(   u   result(    (    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu   get_process_umask‹  s    u   get_process_umaskc             C   sX   d } d  } x3 t |  ƒ D]% \ } } t | t ƒ s d } Pq q W| d  k	 sT t ‚ | S(   NTF(   u   Trueu   Noneu	   enumerateu
   isinstanceu   string_typesu   Falseu   AssertionError(   u   sequ   resultu   iu   s(    (    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu   is_string_sequence  s    u   is_string_sequenceu3   ([a-z0-9_]+([.-][a-z_][a-z0-9_]*)*)-([a-z0-9_.+-]+)u   -py(\d\.?\d?)c             C   s  d } d } t j |  ƒ } | rI | j d ƒ } |  d | j ƒ  … }  n  | rÉ t |  ƒ t | ƒ d k rÉ t j t j | ƒ d |  ƒ } | rÉ | j	 ƒ  } |  d | … |  | d d … | f } qÉ n  | d k rt
 j |  ƒ } | r| j d ƒ | j d ƒ | f } qn  | S(   uw   
    Extract name, version, python version from a filename (no extension)

    Return name, version, pyver or None
    i   Nu   \bi   (   u   Noneu   PYTHON_VERSIONu   searchu   groupu   startu   lenu   reu   matchu   escapeu   endu   PROJECT_NAME_AND_VERSION(   u   filenameu   project_nameu   resultu   pyveru   mu   n(    (    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu   split_filenameŸ  s     "-'u   split_filenameu-   (?P<name>[\w .-]+)\s*\(\s*(?P<ver>[^\s)]+)\)$c             C   sR   t  j |  ƒ } | s( t d |  ƒ ‚ n  | j ƒ  } | d j ƒ  j ƒ  | d f S(   uÇ   
    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.
    u$   Ill-formed name/version string: '%s'u   nameu   ver(   u   NAME_VERSION_REu   matchu   DistlibExceptionu	   groupdictu   stripu   lower(   u   pu   mu   d(    (    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu   parse_name_and_versionº  s
    	u   parse_name_and_versionc             C   s  t  ƒ  } t  |  p g  ƒ }  t  | p' g  ƒ } d |  k rS |  j d ƒ | | O} n  xµ |  D]­ } | d k r| | j | ƒ qZ | j d ƒ rÚ | d d  … } | | k r» t j d | ƒ n  | | k r| j | ƒ qqZ | | k rú t j d | ƒ n  | j | ƒ qZ W| S(   Nu   *u   -i   u   undeclared extra: %s(   u   setu   removeu   addu
   startswithu   loggeru   warning(   u	   requestedu	   availableu   resultu   ru   unwanted(    (    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu
   get_extrasÉ  s&    	u
   get_extrasc             C   sª   i  } ye t  |  ƒ } | j ƒ  } | j d ƒ d k rF t j d ƒ n$ t j d ƒ | ƒ } t j | ƒ } Wn8 t	 k
 r¥ } z t j
 d |  | ƒ WYd  d  } ~ Xn X| S(   Nu   Content-Typeu   application/jsonu$   Unexpected response for JSON requestu   utf-8u&   Failed to get external data for %s: %s(   u   urlopenu   infou   getu   loggeru   debugu   codecsu	   getreaderu   jsonu   loadu	   Exceptionu	   exception(   u   urlu   resultu   respu   headersu   readeru   e(    (    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu   _get_external_dataâ  s    &u   _get_external_datac             C   s*   d |  d j  ƒ  |  f } t | ƒ } | S(   Nu9   https://www.red-dove.com/pypi/projects/%s/%s/project.jsoni    (   u   upperu   _get_external_data(   u   nameu   urlu   result(    (    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu   get_project_dataö  s    u   get_project_datac             C   s'   d |  d j  ƒ  |  | f } t | ƒ S(   Nu<   https://www.red-dove.com/pypi/projects/%s/%s/package-%s.jsoni    (   u   upperu   _get_external_data(   u   nameu   versionu   url(    (    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu   get_package_dataü  s    u   get_package_datac             B   s>   |  Ee  Z d  Z d Z d d „  Z d d „  Z d d „  Z d S(	   u   Cacheuæ   
    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             C   sv   t  j j | ƒ s" t  j | ƒ n  t  j | ƒ j d @d k rQ t j d | ƒ n  t  j j t  j j	 | ƒ ƒ |  _
 d S(   uu   
        Initialise an instance.

        :param base: The base directory where the cache should be located.
        i?   i    u   Directory '%s' is not privateN(   u   osu   pathu   isdiru   makedirsu   statu   st_modeu   loggeru   warningu   abspathu   normpathu   base(   u   selfu   base(    (    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu   __init__	  s
    u   Cache.__init__c             C   s
   t  | ƒ S(   uN   
        Converts a resource prefix to a directory name in the cache.
        (   u   path_to_cache_dir(   u   selfu   prefix(    (    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu   prefix_to_dir  s    u   Cache.prefix_to_dirc             C   s»   g  } x® t  j |  j ƒ D]š } t  j j |  j | ƒ } yZ t  j j | ƒ s^ t  j j | ƒ rn t  j | ƒ n" t  j j | ƒ r t	 j
 | ƒ n  Wq t k
 r² | j | ƒ Yq Xq W| S(   u"   
        Clear the cache.
        (   u   osu   listdiru   baseu   pathu   joinu   islinku   isfileu   removeu   isdiru   shutilu   rmtreeu	   Exceptionu   append(   u   selfu   not_removedu   fn(    (    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu   clear  s    $u   Cache.clearN(   u   __name__u
   __module__u   __qualname__u   __doc__u   __init__u   prefix_to_diru   clear(   u
   __locals__(    (    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu   Cache  s   u   Cachec             B   sY   |  Ee  Z d  Z d Z d d „  Z d d d „ Z d d „  Z d d	 „  Z d
 d „  Z	 d S(   u
   EventMixinu1   
    A very simple publish/subscribe system.
    c             C   s   i  |  _  d  S(   N(   u   _subscribers(   u   self(    (    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu   __init__2  s    u   EventMixin.__init__c             C   s\   |  j  } | | k r+ t | g ƒ | | <n- | | } | rK | j | ƒ n | j | ƒ d S(   u`  
        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(   u   _subscribersu   dequeu   appendu
   appendleft(   u   selfu   eventu
   subscriberu   appendu   subsu   sq(    (    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu   add5  s    
	
u   EventMixin.addc             C   s=   |  j  } | | k r( t d | ƒ ‚ n  | | j | ƒ d S(   u™   
        Remove a subscriber for an event.

        :param event: The name of an event.
        :param subscriber: The subscriber to be removed.
        u   No subscribers: %rN(   u   _subscribersu
   ValueErroru   remove(   u   selfu   eventu
   subscriberu   subs(    (    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu   removeI  s    	u   EventMixin.removec             C   s   t  |  j j | f  ƒ ƒ S(   u   
        Return an iterator for the subscribers for an event.
        :param event: The event to return subscribers for.
        (   u   iteru   _subscribersu   get(   u   selfu   event(    (    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu   get_subscribersU  s    u   EventMixin.get_subscribersc             O   sˆ   g  } xb |  j  | ƒ D]Q } y | | | | Ž } Wn% t k
 rY t j d ƒ d } Yn X| j | ƒ q Wt j d | | | | ƒ | S(   u^  
        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.
        u"   Exception during event publicationu/   publish %s: args = %s, kwargs = %s, result = %sN(   u   get_subscribersu	   Exceptionu   loggeru	   exceptionu   Noneu   appendu   debug(   u   selfu   eventu   argsu   kwargsu   resultu
   subscriberu   value(    (    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu   publish\  s    	u   EventMixin.publishNT(
   u   __name__u
   __module__u   __qualname__u   __doc__u   __init__u   Trueu   addu   removeu   get_subscribersu   publish(   u
   __locals__(    (    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu
   EventMixin.  s   u
   EventMixinc             B   s   |  Ee  Z d  Z d d „  Z d d „  Z d d d „ Z d d „  Z d	 d
 „  Z d d „  Z	 d d „  Z
 e d d „  ƒ Z e d d „  ƒ Z d S(   u	   Sequencerc             C   s"   i  |  _  i  |  _ t ƒ  |  _ d  S(   N(   u   _predsu   _succsu   setu   _nodes(   u   self(    (    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu   __init__w  s    		u   Sequencer.__init__c             C   s   |  j  j | ƒ d  S(   N(   u   _nodesu   add(   u   selfu   node(    (    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu   add_node|  s    u   Sequencer.add_nodec             C   s  | |  j  k r" |  j  j | ƒ n  | r	x3 t |  j j | f  ƒ ƒ D] } |  j | | ƒ qD Wx3 t |  j j | f  ƒ ƒ D] } |  j | | ƒ qz Wx6 t |  j j ƒ  ƒ D] \ } } | sª |  j | =qª qª Wx9 t |  j j ƒ  ƒ D] \ } } | sã |  j | =qã qã Wn  d  S(   N(   u   _nodesu   removeu   setu   _predsu   getu   _succsu   listu   items(   u   selfu   nodeu   edgesu   pu   su   ku   v(    (    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu   remove_node  s    """"u   Sequencer.remove_nodec             C   sT   | | k s t  ‚ |  j j | t ƒ  ƒ j | ƒ |  j j | t ƒ  ƒ j | ƒ d  S(   N(   u   AssertionErroru   _predsu
   setdefaultu   setu   addu   _succs(   u   selfu   predu   succ(    (    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu   add  s    u   Sequencer.addc             C   s¢   | | k s t  ‚ y |  j | } |  j | } Wn" t k
 rT t d | ƒ ‚ Yn Xy | j | ƒ | j | ƒ Wn( t k
 r t d | | f ƒ ‚ Yn Xd  S(   Nu   %r not a successor of anythingu   %r not a successor of %r(   u   AssertionErroru   _predsu   _succsu   KeyErroru
   ValueErroru   remove(   u   selfu   predu   succu   predsu   succs(    (    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu   remove”  s    u   Sequencer.removec             C   s+   | |  j  k p* | |  j k p* | |  j k S(   N(   u   _predsu   _succsu   _nodes(   u   selfu   step(    (    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu   is_step¡  s    u   Sequencer.is_stepc             C   sÞ   |  j  | ƒ s" t d | ƒ ‚ n  g  } g  } t ƒ  } | j | ƒ x | rÓ | j d ƒ } | | k r” | | k rÐ | j | ƒ | j | ƒ qÐ qG | j | ƒ | j | ƒ |  j j | f  ƒ } | j	 | ƒ qG Wt
 | ƒ S(   Nu   Unknown: %ri    (   u   is_stepu
   ValueErroru   setu   appendu   popu   removeu   addu   _predsu   getu   extendu   reversed(   u   selfu   finalu   resultu   todou   seenu   stepu   preds(    (    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu	   get_steps¥  s"    		u   Sequencer.get_stepsc                s|   d g ‰ g  ‰ i  ‰ i  ‰ g  ‰ |  j  ‰  ‡  ‡ ‡ ‡ ‡ ‡ ‡ f d d †  ‰ x' ˆ  D] } | ˆ k rU ˆ | ƒ qU qU Wˆ S(   Ni    c                s8  ˆ d ˆ |  <ˆ d ˆ |  <ˆ d d 7<ˆ j  |  ƒ y ˆ  |  } Wn t k
 r_ g  } Yn Xxl | D]d } | ˆ k r¡ ˆ | ƒ t ˆ |  ˆ | ƒ ˆ |  <qg | ˆ k rg t ˆ |  ˆ | ƒ ˆ |  <qg qg Wˆ |  ˆ |  k r4g  } x, ˆ j ƒ  } | j  | ƒ | |  k rì Pqì qì t | ƒ } ˆ j  | ƒ n  d  S(   Ni    i   (   u   appendu	   Exceptionu   minu   popu   tuple(   u   nodeu
   successorsu	   successoru   connected_componentu	   component(   u   graphu   indexu   index_counteru   lowlinksu   resultu   stacku   strongconnect(    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu   strongconnectÉ  s.    
" u3   Sequencer.strong_connections.<locals>.strongconnect(   u   _succs(   u   selfu   node(    (   u   graphu   indexu   index_counteru   lowlinksu   resultu   stacku   strongconnectu1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu   strong_connections¾  s    		$"u   Sequencer.strong_connectionsc             C   s‘   d g } xF |  j  D]; } |  j  | } x% | D] } | j d | | f ƒ q- Wq Wx" |  j D] } | j d | ƒ q\ W| j d ƒ d j | ƒ S(   Nu   digraph G {u     %s -> %s;u     %s;u   }u   
(   u   _predsu   appendu   _nodesu   join(   u   selfu   resultu   succu   predsu   predu   node(    (    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu   dotñ  s    	u   Sequencer.dotNF(   u   __name__u
   __module__u   __qualname__u   __init__u   add_nodeu   Falseu   remove_nodeu   addu   removeu   is_stepu	   get_stepsu   propertyu   strong_connectionsu   dot(   u
   __locals__(    (    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu	   Sequencerv  s   3u	   Sequenceru   .tar.gzu   .tar.bz2u   .taru   .zipu   .tgzu   .tbzu   .whlc       
         sé  ‡  ‡ f d d †  } t  j j ˆ  ƒ ‰  t ˆ  ƒ ‰ d  } | d  k rÊ |  j d ƒ r] d } qÊ |  j d ƒ r{ d } d	 } qÊ |  j d ƒ r™ d } d } qÊ |  j d ƒ r· d } d } qÊ t d |  ƒ ‚ n  z| d k rt |  d ƒ } | r]| j ƒ  } x | D] } | | ƒ qWq]nB t	 j
 |  | ƒ } | r]| j ƒ  } x | D] } | | ƒ qFWn  | d k rÀt j d d k  rÀxA | j ƒ  D]0 }	 t |	 j t ƒ s‰|	 j j d ƒ |	 _ q‰q‰Wn  | j ˆ  ƒ Wd  | rä| j ƒ  n  Xd  S(   Nc                s|   t  |  t ƒ s! |  j d ƒ }  n  t j j t j j ˆ  |  ƒ ƒ } | j ˆ  ƒ se | ˆ t j k rx t	 d | ƒ ‚ n  d  S(   Nu   utf-8u   path outside destination: %r(
   u
   isinstanceu	   text_typeu   decodeu   osu   pathu   abspathu   joinu
   startswithu   sepu
   ValueError(   u   pathu   p(   u   dest_diru   plen(    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu
   check_path  s
    !#u   unarchive.<locals>.check_pathu   .zipu   .whlu   zipu   .tar.gzu   .tgzu   tgzu   r:gzu   .tar.bz2u   .tbzu   tbzu   r:bz2u   .taru   taru   ru   Unknown format for %ri    i   u   utf-8(   u   .zipu   .whl(   u   .tar.gzu   .tgz(   u   .tar.bz2u   .tbz(   u   osu   pathu   abspathu   lenu   Noneu   endswithu
   ValueErroru   ZipFileu   namelistu   tarfileu   openu   getnamesu   sysu   version_infou
   getmembersu
   isinstanceu   nameu	   text_typeu   decodeu
   extractallu   close(
   u   archive_filenameu   dest_diru   formatu   checku
   check_pathu   archiveu   modeu   namesu   nameu   tarinfo(    (   u   dest_diru   plenu1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu	   unarchive  sH    				u	   unarchivec             C   s²   t  j ƒ  } t |  ƒ } t | d ƒ … } x{ t j |  ƒ D]j \ } } } xX | D]P } t j j | | ƒ } | | d … }	 t j j |	 | ƒ }
 | j | |
 ƒ qP Wq: WWd QX| S(   u*   zip a directory tree into a BytesIO objectu   wN(	   u   iou   BytesIOu   lenu   ZipFileu   osu   walku   pathu   joinu   write(   u	   directoryu   resultu   dlenu   zfu   rootu   dirsu   filesu   nameu   fullu   relu   dest(    (    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu   zip_dir:  s    u   zip_diru    u   Ku   Mu   Gu   Tu   Pc             B   s°   |  Ee  Z d  Z d Z d d d d „ Z d d „  Z d d	 „  Z d
 d „  Z d d „  Z e	 d d „  ƒ Z
 e	 d d „  ƒ Z d d „  Z e	 d d „  ƒ Z e	 d d „  ƒ Z d S(   u   Progressu   UNKNOWNi    id   c             C   sV   | d  k s | | k s t ‚ | |  _ |  _ | |  _ d  |  _ d |  _ d |  _ d  S(   Ni    F(	   u   Noneu   AssertionErroru   minu   curu   maxu   startedu   elapsedu   Falseu   done(   u   selfu   minvalu   maxval(    (    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu   __init__Q  s    			u   Progress.__init__c             C   s}   |  j  | k s t ‚ |  j d  k s9 | |  j k s9 t ‚ | |  _ t j ƒ  } |  j d  k ri | |  _ n | |  j |  _ d  S(   N(   u   minu   AssertionErroru   maxu   Noneu   curu   timeu   startedu   elapsed(   u   selfu   curvalu   now(    (    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu   updateY  s    $	u   Progress.updatec             C   s*   | d k s t  ‚ |  j |  j | ƒ d  S(   Ni    (   u   AssertionErroru   updateu   cur(   u   selfu   incr(    (    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu	   incrementc  s    u   Progress.incrementc             C   s   |  j  |  j ƒ |  S(   N(   u   updateu   min(   u   self(    (    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu   startg  s    u   Progress.startc             C   s/   |  j  d  k	 r" |  j |  j  ƒ n  d |  _ d  S(   NT(   u   maxu   Noneu   updateu   Trueu   done(   u   self(    (    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu   stopk  s    u   Progress.stopc             C   s   |  j  d  k r |  j S|  j  S(   N(   u   maxu   Noneu   unknown(   u   self(    (    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu   maximump  s    u   Progress.maximumc             C   sZ   |  j  r d } nD |  j d  k r* d } n, d |  j |  j |  j |  j } d | } | S(   Nu   100 %u    ?? %g      Y@u   %3d %%(   u   doneu   maxu   Noneu   curu   min(   u   selfu   resultu   v(    (    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu
   percentaget  s    			"
u   Progress.percentagec             C   sU   | d k r |  j  d  k s- |  j |  j k r6 d } n t j d t j | ƒ ƒ } | S(   Ni    u   ??:??:??u   %H:%M:%S(   u   maxu   Noneu   curu   minu   timeu   strftimeu   gmtime(   u   selfu   durationu   result(    (    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu   format_duration  s    -	u   Progress.format_durationc             C   sµ   |  j  r d } |  j } nƒ d } |  j d  k r9 d } ne |  j d k sZ |  j |  j k rc d } n; t |  j |  j ƒ } | |  j |  j } | d |  j } d | |  j | ƒ f S(   Nu   Doneu   ETA i   i    u   %s: %siÿÿÿÿ(   u   doneu   elapsedu   maxu   Noneu   curu   minu   floatu   format_duration(   u   selfu   prefixu   t(    (    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu   ETAˆ  s    		!	u   Progress.ETAc             C   sh   |  j  d k r d } n |  j |  j |  j  } x( t D]  } | d k  rL Pn  | d } q6 Wd | | f S(   Ni    g        iè  g     @@u   %d %sB/s(   u   elapsedu   curu   minu   UNITS(   u   selfu   resultu   unit(    (    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu   speed›  s    	u   Progress.speedN(   u   __name__u
   __module__u   __qualname__u   unknownu   __init__u   updateu	   incrementu   startu   stopu   propertyu   maximumu
   percentageu   format_durationu   ETAu   speed(   u
   __locals__(    (    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu   ProgressN  s   
	u   Progressu   \{([^}]*)\}u   [^/\\,{]\*\*|\*\*[^/\\,}]u   ^[^{]*\}|\{[^}]*$c             C   sZ   t  j |  ƒ r( d } t | |  ƒ ‚ n  t j |  ƒ rP d } t | |  ƒ ‚ n  t |  ƒ S(   uA   Extended globbing function that supports ** and {opt1,opt2,opt3}.u7   invalid glob %r: recursive glob "**" must be used aloneu2   invalid glob %r: mismatching set marker '{' or '}'(   u   _CHECK_RECURSIVE_GLOBu   searchu
   ValueErroru   _CHECK_MISMATCH_SETu   _iglob(   u	   path_globu   msg(    (    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu   iglob°  s    u   iglobc             c   s‹  t  j |  d ƒ } t | ƒ d k rœ t | ƒ d k sB t | ƒ ‚ | \ } } } x3| j d ƒ D]4 } x+ t d j | | | f ƒ ƒ D] } | Vq† Wqa Wnë d |  k rÇ xÜ t |  ƒ D] } | Vqµ WnÀ |  j d d ƒ \ } } | d k rô d } n  | d k r	d } n | j d ƒ } | j d	 ƒ } x] t j	 | ƒ D]L \ } } }	 t j
 j | ƒ } x( t t j
 j | | ƒ ƒ D] }
 |
 VqtWq7Wd  S(
   Ni   i   u   ,u    u   **u   .u   *u   /u   \(   u	   RICH_GLOBu   splitu   lenu   AssertionErroru   _iglobu   joinu	   std_iglobu   lstripu   osu   walku   pathu   normpath(   u	   path_globu   rich_path_globu   prefixu   setu   suffixu   itemu   pathu   radicalu   diru   filesu   fn(    (    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu   _iglob»  s*    %		"u   _iglobc             B   s,   |  Ee  Z d  Z d Z d Z d d „  Z d S(   u   HTTPSConnectionc             C   sÞ  t  j |  j |  j f |  j ƒ } t |  d d
 ƒ rI | |  _ |  j ƒ  n  t	 t
 d ƒ s¯ |  j rm t
 j } n	 t
 j } t
 j | |  j |  j d | d t
 j d |  j ƒ|  _ n® t
 j t
 j ƒ } | j t
 j O_ |  j rõ | j |  j |  j ƒ n  i  } |  j rHt
 j | _ | j d |  j ƒ t t
 d d
 ƒ rH|  j | d <qHn  | j | |  |  _ |  j rÚ|  j rÚy0 t |  j j ƒ  |  j ƒ t j d	 |  j ƒ WqÚt k
 rÖ|  j j t  j ƒ |  j j  ƒ  ‚  YqÚXn  d  S(   Nu   _tunnel_hostu
   SSLContextu	   cert_reqsu   ssl_versionu   ca_certsu   cafileu   HAS_SNIu   server_hostnameu   Host verified: %sF(!   u   socketu   create_connectionu   hostu   portu   timeoutu   getattru   Falseu   socku   _tunnelu   hasattru   sslu   ca_certsu   CERT_REQUIREDu	   CERT_NONEu   wrap_socketu   key_fileu	   cert_fileu   PROTOCOL_SSLv23u
   SSLContextu   optionsu   OP_NO_SSLv2u   load_cert_chainu   verify_modeu   load_verify_locationsu   check_domainu   match_hostnameu   getpeercertu   loggeru   debugu   CertificateErroru   shutdownu	   SHUT_RDWRu   close(   u   selfu   socku	   cert_reqsu   contextu   kwargs(    (    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu   connectá  s>    !						u   HTTPSConnection.connectNT(   u   __name__u
   __module__u   __qualname__u   Noneu   ca_certsu   Trueu   check_domainu   connect(   u
   __locals__(    (    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu   HTTPSConnectionÜ  s   u   HTTPSConnectionc             B   s;   |  Ee  Z d  Z d d d „ Z d d „  Z d d „  Z d S(	   u   HTTPSHandlerc             C   s#   t  j |  ƒ | |  _ | |  _ d  S(   N(   u   BaseHTTPSHandleru   __init__u   ca_certsu   check_domain(   u   selfu   ca_certsu   check_domain(    (    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu   __init__  s    	u   HTTPSHandler.__init__c             O   s7   t  | | Ž  } |  j r3 |  j | _ |  j | _ n  | S(   uû  
        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.
        (   u   HTTPSConnectionu   ca_certsu   check_domain(   u   selfu   argsu   kwargsu   result(    (    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu   _conn_maker  s
    
	u   HTTPSHandler._conn_makerc             C   sq   y |  j  |  j | ƒ SWnS t k
 rl } z3 d t | j ƒ k rW t d | j ƒ ‚ n ‚  WYd  d  } ~ Xn Xd  S(   Nu   certificate verify failedu*   Unable to verify server certificate for %s(   u   do_openu   _conn_makeru   URLErroru   stru   reasonu   CertificateErroru   host(   u   selfu   requ   e(    (    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu
   https_open  s    u   HTTPSHandler.https_openNT(   u   __name__u
   __module__u   __qualname__u   Trueu   __init__u   _conn_makeru
   https_open(   u
   __locals__(    (    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu   HTTPSHandler  s   u   HTTPSHandlerc             B   s    |  Ee  Z d  Z d d „  Z d S(   u   HTTPSOnlyHandlerc             C   s   t  d | ƒ ‚ d  S(   NuA   Unexpected HTTP request on what should be a secure connection: %s(   u   URLError(   u   selfu   req(    (    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu	   http_open0  s    u   HTTPSOnlyHandler.http_openN(   u   __name__u
   __module__u   __qualname__u	   http_open(   u
   __locals__(    (    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu   HTTPSOnlyHandler/  s   u   HTTPSOnlyHandleri   i   c             B   s&   |  Ee  Z d  Z d d d d „ Z d S(   u   HTTPu    c             K   s5   | d k r d  } n  |  j |  j | | |  ƒ d  S(   Ni    (   u   Noneu   _setupu   _connection_class(   u   selfu   hostu   portu   kwargs(    (    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu   __init__<  s    	u   HTTP.__init__N(   u   __name__u
   __module__u   __qualname__u   Noneu   __init__(   u
   __locals__(    (    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu   HTTP;  s   u   HTTPc             B   s&   |  Ee  Z d  Z d d d d „ Z d S(   u   HTTPSu    c             K   s5   | d k r d  } n  |  j |  j | | |  ƒ d  S(   Ni    (   u   Noneu   _setupu   _connection_class(   u   selfu   hostu   portu   kwargs(    (    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu   __init__C  s    	u   HTTPS.__init__N(   u   __name__u
   __module__u   __qualname__u   Noneu   __init__(   u
   __locals__(    (    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu   HTTPSB  s   u   HTTPSc             B   s/   |  Ee  Z d  Z d d d „ Z d d „  Z d S(   u	   Transporti    c             C   s    | |  _  t j j |  | ƒ d  S(   N(   u   timeoutu	   xmlrpclibu	   Transportu   __init__(   u   selfu   timeoutu   use_datetime(    (    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu   __init__J  s    	u   Transport.__init__c             C   sŽ   |  j  | ƒ \ } } } t d k r< t | d |  j ƒ} nN |  j sY | |  j d k r} | |  _ | t j | ƒ f |  _ n  |  j d } | S(   Ni   i   u   timeouti    i   (   i   i   (   u   get_host_infou	   _ver_infou   HTTPu   timeoutu   _connectionu   _extra_headersu   httplibu   HTTPConnection(   u   selfu   hostu   hu   ehu   x509u   result(    (    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu   make_connectionN  s    	u   Transport.make_connectionN(   u   __name__u
   __module__u   __qualname__u   __init__u   make_connection(   u
   __locals__(    (    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu	   TransportI  s   u	   Transportc             B   s/   |  Ee  Z d  Z d d d „ Z d d „  Z d S(   u   SafeTransporti    c             C   s    | |  _  t j j |  | ƒ d  S(   N(   u   timeoutu	   xmlrpclibu   SafeTransportu   __init__(   u   selfu   timeoutu   use_datetime(    (    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu   __init__Z  s    	u   SafeTransport.__init__c             C   s­   |  j  | ƒ \ } } } | s' i  } n  |  j | d <t d k rU t | d  |  } nT |  j sr | |  j d k rœ | |  _ | t j | d  |  f |  _ n  |  j d } | S(   Nu   timeouti   i   i    i   (   i   i   (	   u   get_host_infou   timeoutu	   _ver_infou   HTTPSu   Noneu   _connectionu   _extra_headersu   httplibu   HTTPSConnection(   u   selfu   hostu   hu   ehu   kwargsu   result(    (    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu   make_connection^  s    		u   SafeTransport.make_connectionN(   u   __name__u
   __module__u   __qualname__u   __init__u   make_connection(   u
   __locals__(    (    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu   SafeTransportY  s   u   SafeTransportc             B   s    |  Ee  Z d  Z d d „  Z d S(   u   ServerProxyc       	      K   s¤   | j  d d  ƒ |  _ } | d  k	 rŠ t | ƒ \ } } | j d d ƒ } | d k r^ t } n t } | | d | ƒ| d <} | |  _ n  t j	 j
 |  | |  d  S(   Nu   timeoutu   use_datetimei    u   httpsu	   transport(   u   popu   Noneu   timeoutu	   splittypeu   getu   SafeTransportu	   Transportu	   transportu	   xmlrpclibu   ServerProxyu   __init__(	   u   selfu   uriu   kwargsu   timeoutu   schemeu   _u   use_datetimeu   tclsu   t(    (    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu   __init__o  s    	u   ServerProxy.__init__N(   u   __name__u
   __module__u   __qualname__u   __init__(   u
   __locals__(    (    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu   ServerProxyn  s   u   ServerProxyc             K   s:   t  j d d k  r  | d 7} n
 d | d <t |  | |  S(   Ni    i   u   bu    u   newline(   u   sysu   version_infou   open(   u   fnu   modeu   kwargs(    (    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu	   _csv_openƒ  s    
u	   _csv_openc             B   sY   |  Ee  Z d  Z i e d ƒ d 6e d ƒ d 6e d ƒ d 6Z d d „  Z d	 d
 „  Z d S(   u   CSVBaseu   ,u	   delimiteru   "u	   quotecharu   
u   lineterminatorc             C   s   |  S(   N(    (   u   self(    (    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu	   __enter__’  s    u   CSVBase.__enter__c             G   s   |  j  j ƒ  d  S(   N(   u   streamu   close(   u   selfu   exc_info(    (    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu   __exit__•  s    u   CSVBase.__exit__N(   u   __name__u
   __module__u   __qualname__u   stru   defaultsu	   __enter__u   __exit__(   u
   __locals__(    (    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu   CSVBase‹  s   u   CSVBasec             B   s>   |  Ee  Z d  Z d d „  Z d d „  Z d d „  Z e Z d S(   u	   CSVReaderc             K   s‚   d | k rM | d } t  j d d k rA t j d ƒ | ƒ } n  | |  _ n t | d d ƒ |  _ t j |  j |  j  |  _ d  S(   Nu   streami    i   u   utf-8u   pathu   r(	   u   sysu   version_infou   codecsu	   getreaderu   streamu	   _csv_openu   csvu   readeru   defaults(   u   selfu   kwargsu   stream(    (    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu   __init__š  s    
u   CSVReader.__init__c             C   s   |  S(   N(    (   u   self(    (    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu   __iter__¥  s    u   CSVReader.__iter__c             C   sk   t  |  j ƒ } t j d d k  rg xB t | ƒ D]1 \ } } t | t ƒ s/ | j d ƒ | | <q/ q/ Wn  | S(   Ni    i   u   utf-8(   u   nextu   readeru   sysu   version_infou	   enumerateu
   isinstanceu	   text_typeu   decode(   u   selfu   resultu   iu   item(    (    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu   next¨  s    u   CSVReader.nextN(   u   __name__u
   __module__u   __qualname__u   __init__u   __iter__u   nextu   __next__(   u
   __locals__(    (    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu	   CSVReader™  s   u	   CSVReaderc             B   s,   |  Ee  Z d  Z d d „  Z d d „  Z d S(   u	   CSVWriterc             K   s1   t  | d ƒ |  _ t j |  j |  j  |  _ d  S(   Nu   w(   u	   _csv_openu   streamu   csvu   writeru   defaults(   u   selfu   fnu   kwargs(    (    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu   __init__³  s    u   CSVWriter.__init__c             C   su   t  j d d k  ra g  } x< | D]4 } t | t ƒ rG | j d ƒ } n  | j | ƒ q  W| } n  |  j j | ƒ d  S(   Ni    i   u   utf-8(   u   sysu   version_infou
   isinstanceu	   text_typeu   encodeu   appendu   writeru   writerow(   u   selfu   rowu   ru   item(    (    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu   writerow·  s    	u   CSVWriter.writerowN(   u   __name__u
   __module__u   __qualname__u   __init__u   writerow(   u
   __locals__(    (    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu	   CSVWriter²  s   u	   CSVWriterc                sf   |  Ee  Z d  Z e e j ƒ Z d e d <d ‡  f d d † Z d d „  Z d d „  Z	 d	 d
 „  Z
 ‡  S(   u   Configuratoru   inc_convertu   incc                s/   t  t |  ƒ j | ƒ | p% t j ƒ  |  _ d  S(   N(   u   superu   Configuratoru   __init__u   osu   getcwdu   base(   u   selfu   configu   base(   u	   __class__(    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu   __init__Ê  s    u   Configurator.__init__c       
         s  ‡ ‡ f d d †  ‰ ˆ  j  d ƒ } t | ƒ sB ˆ j | ƒ } n  ˆ  j  d d  ƒ } ˆ  j  d f  ƒ } | rŽ t ‡ f d d †  | Dƒ ƒ } n  ‡  ‡ f d d †  ˆ  Dƒ } t | ƒ } | | | Ž  } | rx3 | j ƒ  D]" \ } }	 t | | ˆ |	 ƒ ƒ qØ Wn  | S(	   Nc                s«   t  |  t t f ƒ r= t |  ƒ ‡  f d d †  |  Dƒ ƒ } nj t  |  t ƒ r˜ d |  k rj ˆ j |  ƒ } q§ i  } x4 |  D] } ˆ  |  | ƒ | | <qw Wn ˆ j |  ƒ } | S(   Nc                s   g  |  ] } ˆ  | ƒ ‘ q S(    (    (   u   .0u   i(   u   convert(    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu
   <listcomp>Ñ  s   	 uB   Configurator.configure_custom.<locals>.convert.<locals>.<listcomp>u   ()(   u
   isinstanceu   listu   tupleu   typeu   dictu   configure_customu   convert(   u   ou   resultu   k(   u   convertu   self(    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu   convertÏ  s    (u.   Configurator.configure_custom.<locals>.convertu   ()u   .u   []c                s   g  |  ] } ˆ  | ƒ ‘ q S(    (    (   u   .0u   o(   u   convert(    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu
   <listcomp>ä  s   	 u1   Configurator.configure_custom.<locals>.<listcomp>c                s2   g  |  ]( } t  | ƒ r | ˆ ˆ  | ƒ f ‘ q S(    (   u   valid_ident(   u   .0u   k(   u   configu   convert(    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu
   <listcomp>å  s   	 (   u   popu   callableu   resolveu   Noneu   tupleu   dictu   itemsu   setattr(
   u   selfu   configu   cu   propsu   argsu   itemsu   kwargsu   resultu   nu   v(    (   u   configu   convertu   selfu1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu   configure_customÎ  s    "u   Configurator.configure_customc             C   sI   |  j  | } t | t ƒ rE d | k rE |  j | ƒ |  j  | <} n  | S(   Nu   ()(   u   configu
   isinstanceu   dictu   configure_custom(   u   selfu   keyu   result(    (    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu   __getitem__í  s    u   Configurator.__getitem__c          	   C   sa   t  j j | ƒ s- t  j j |  j | ƒ } n  t j | d d d ƒ } t j | ƒ } Wd QX| S(   u*   Default converter for the inc:// protocol.u   ru   encodingu   utf-8N(	   u   osu   pathu   isabsu   joinu   baseu   codecsu   openu   jsonu   load(   u   selfu   valueu   fu   result(    (    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu   inc_convertó  s
    u   Configurator.inc_convertN(   u   __name__u
   __module__u   __qualname__u   dictu   BaseConfiguratoru   value_convertersu   Noneu   __init__u   configure_customu   __getitem__u   inc_convert(   u
   __locals__(    (   u	   __class__u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu   ConfiguratorÅ  s   
u   Configuratorc             B   s>   |  Ee  Z d  Z d d d d „ Z d d „  Z d d „  Z d S(	   u   SubprocessMixinc             C   s   | |  _  | |  _ d  S(   N(   u   verboseu   progress(   u   selfu   verboseu   progress(    (    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu   __init__   s    	u   SubprocessMixin.__init__c             C   s—   |  j  } |  j } xt | j ƒ  } | s+ Pn  | d k	 rG | | | ƒ q | s` t j j d ƒ n t j j | j d ƒ ƒ t j j ƒ  q | j	 ƒ  d S(   u¨   
        Read lines from a subprocess' output stream and either pass to a progress
        callable (if specified) or write progress information to sys.stderr.
        u   .u   utf-8N(
   u   progressu   verboseu   readlineu   Noneu   sysu   stderru   writeu   decodeu   flushu   close(   u   selfu   streamu   contextu   progressu   verboseu   s(    (    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu   reader  s    		u   SubprocessMixin.readerc             K   sà   t  j | d t  j d t  j | } t j d |  j d | j d f ƒ } | j ƒ  t j d |  j d | j d f ƒ } | j ƒ  | j	 ƒ  | j
 ƒ  | j
 ƒ  |  j d  k	 rÀ |  j d d ƒ n |  j rÜ t j j d ƒ n  | S(   Nu   stdoutu   stderru   targetu   argsu   done.u   mainu   done.
(   u
   subprocessu   Popenu   PIPEu	   threadingu   Threadu   readeru   stdoutu   startu   stderru   waitu   joinu   progressu   Noneu   verboseu   sysu   write(   u   selfu   cmdu   kwargsu   pu   t1u   t2(    (    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu   run_command  s    $
$



	u   SubprocessMixin.run_commandNF(   u   __name__u
   __module__u   __qualname__u   Falseu   Noneu   __init__u   readeru   run_command(   u
   __locals__(    (    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu   SubprocessMixinÿ  s   u   SubprocessMixin(   u   .tar.gzu   .tar.bz2u   .taru   .zipu   .tgzu   .tbzu   .whlT(   u    u   Ku   Mu   Gu   Tu   P(   i   i   (…   u   codecsu   collectionsu   dequeu
   contextlibu   csvu   globu   iglobu	   std_iglobu   iou   jsonu   loggingu   osu
   py_compileu   reu   shutilu   socketu   sslu
   subprocessu   sysu   tarfileu   tempfileu	   threadingu   ImportErroru   dummy_threadingu   timeu    u   DistlibExceptionu   compatu   string_typesu	   text_typeu	   raw_inputu   StringIOu   cache_from_sourceu   urlopenu   httplibu	   xmlrpclibu	   splittypeu   HTTPHandleru   HTTPSHandleru   BaseHTTPSHandleru   BaseConfiguratoru   valid_identu	   Containeru   configparseru   URLErroru   match_hostnameu   CertificateErroru   ZipFileu	   getLoggeru   __name__u   loggeru   COMMAu   compileu   COMMA_REu   IDENTu   EXTRA_IDENTu   VERSPECu   RELOPu   BARE_CONSTRAINTSu
   DIRECT_REFu   CONSTRAINTSu
   EXTRA_LISTu   EXTRASu   REQUIREMENTu   REQUIREMENT_REu   RELOP_IDENTu   RELOP_IDENT_REu   parse_requirementu   get_resources_destsu   in_venvu   get_executableu   Noneu   proceedu   extract_by_keyu   read_exportsu   write_exportsu   contextmanageru   tempdiru   chdiru   socket_timeoutu   objectu   cached_propertyu   convert_pathu   FileOperatoru   resolveu   ExportEntryu   VERBOSEu   ENTRY_REu   get_export_entryu   get_cache_baseu   path_to_cache_diru   ensure_slashu   parse_credentialsu   get_process_umasku   is_string_sequenceu   Iu   PROJECT_NAME_AND_VERSIONu   PYTHON_VERSIONu   split_filenameu   NAME_VERSION_REu   parse_name_and_versionu
   get_extrasu   _get_external_datau   get_project_datau   get_package_datau   Cacheu
   EventMixinu	   Sequenceru   ARCHIVE_EXTENSIONSu   Trueu	   unarchiveu   zip_diru   UNITSu   Progressu	   RICH_GLOBu   _CHECK_RECURSIVE_GLOBu   _CHECK_MISMATCH_SETu   _iglobu   HTTPSConnectionu   HTTPSOnlyHandleru   version_infou	   _ver_infou   HTTPu   HTTPSu	   Transportu   SafeTransportu   ServerProxyu	   _csv_openu   CSVBaseu	   CSVReaderu	   CSVWriteru   Configuratoru   SubprocessMixin(    (    (    u1   /tmp/pip-zej_zi-build/pip/_vendor/distlib/util.pyu   <module>   sÔ   ‚
.%
		$
	¶)
	,H‹ 6]!*)	: