£Á°èZ¨Ä…–K§‚«“ô4“ÒÙ´dîfUÙÃÅ WKbyÊ¦•êŽ…È®FÒ¿ÊÎóCozá¬S@6{Í:›œêZÌ:Š•_%:¢¾¾~;‘Ã~èŠ©ÊÇí`ÔÑ©úë™µ'5I¿fš×WO%ø9¾«¾DK|€ùÍD”Ýs]nHÕ¶ê×Ó¼ãžªéUWŸÈË%DÒÕ¬ï‘]/Åcx  ‰ï2ß]ä6G[]S£ÔÏ¯rs{úëóµmÒï#UQxo·õÞCe]"±/aÙ&Eã4ú9Jé_ÞåëdãöKë)AÞ                  ¯¹ægƒÛowÐø^d™ý½ßB7áyMä9ÜÖUã
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
<html>

7Re  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]!*)	: