
^Wc           @@  s`  d  d l  m Z d  d l Z d  d l Z d  d l Z e j d  d k  rd  d l m Z e f Z e	 Z
 d  d l m Z d  d l Z d  d l Z d d l m Z d  d l m Z m Z m Z m Z m Z d  d	 l m Z m Z m Z m Z m Z m  Z  m! Z! d
   Z d  d l" Z" d  d l" m# Z# m$ Z$ m% Z% m& Z& m' Z' m( Z( m) Z) m* Z* m+ Z+ m, Z, d  d l- Z- d  d l. Z. d  d l/ Z0 d  d l1 m1 Z1 d  d l2 Z2 e3 Z3 d  d l4 m5 Z6 d  d l4 m7 Z8 d a: d   Z; nod  d l< m Z e= f Z e= Z
 d  d l< m> Z d  d l Z d  d l Z d  d l Z d  d l? m Z m Z m Z m; Z; m Z m Z m Z m Z 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, d  d lA m& Z& m% Z% m  Z  d  d lB jC Z- d  d l@ jD Z" d  d lE jC Z. d  d l0 Z0 d  d lF m1 Z1 d  d lG jH Z2 eI Z3 d  d l4 m8 Z8 e6 Z6 y d  d lJ mK ZK mL ZL Wn< eM k
 rd eN f d     YZL d d  ZO d   ZK n Xy d  d l mP ZQ Wn' eM k
 rd eR f d     YZQ n Xy d  d l mS ZS Wn* eM k
 re jT e jU Bd d  ZS n Xd  d lV mW ZX eY eX d   r<eX ZW n< d  d! lV mZ Z[ d" e[ f d#     YZZ d$ eX f d%     YZW y d  d& l\ m] Z] Wn eM k
 rd'   Z] n Xy d  d l^ Z^ Wn! eM k
 rd d( l m^ Z^ n Xy
 e_ Z_ Wn* e` k
 rd  d) la mb Zb d*   Z_ n Xy e jc Zc e jd Zd WnJ ee k
 rve jf   Zg eg d+ k r[d, Zh n d- Zh d.   Zc d/   Zd n Xy d  d0 li mj Zj WnT eM k
 rd  d1 lk ml Zl mm Zm d  d l Z e jn d2  Zo d3   Zp d4   Zj n Xy d  d5 lq mr Zr Wn! eM k
 rd  d5 ls mr Zr n Xe j d6  dS k  r<e1   jt Zt n d  d8 lq mt Zt y d  d9 la mu Zu Wnk eM k
 rd  d: la mv Zv y d  d; lw mx Zy Wn eM k
 rd< d=  Zy n Xd> ev f d?     YZu n Xy d  d@ lz m{ Z{ Wn eM k
 rd dA  Z{ n Xy d  dB la m| Z| Wn eM k
 ry d  dC l} m~ Z Wn! eM k
 r]d  dC l m~ Z n Xy  d  dD l m Z m Z m Z Wn eM k
 rn XdE e f dF     YZ| n Xy d  dG l m Z m Z Wn eM k
 r[e jn dH e j  Z dI   Z dJ e f dK     YZ d dL  Z dM e f dN     YZ dO e f dP     YZ dQ eR f dR     YZ n Xd S(T   i    (   t   absolute_importNi   (   t   StringIO(   t   FileTypei   (   t   shutil(   t   urlparset
   urlunparset   urljoint   urlsplitt
   urlunsplit(   t   urlretrievet   quotet   unquotet   url2pathnamet   pathname2urlt   ContentTooShortErrort	   splittypec         C@  s+   t  |  t  r! |  j d  }  n  t |   S(   Ns   utf-8(   t
   isinstancet   unicodet   encodet   _quote(   t   s(    (    sk   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/compat.pyR
      s    (
   t   Requestt   urlopent   URLErrort	   HTTPErrort   HTTPBasicAuthHandlert   HTTPPasswordMgrt   HTTPSHandlert   HTTPHandlert   HTTPRedirectHandlert   build_opener(   t
   HTMLParser(   t   ifilter(   t   ifilterfalsec         C@  sY   t  d k r* d d l } | j d  a  n  t  j |   } | rO | j d d  Sd |  f S(   sJ   splituser('user[:passwd]@host[:port]') --> 'user[:passwd]', 'host[:port]'.i    Ns   ^(.*)@(.*)$i   i   (   t	   _userprogt   Nonet   ret   compilet   matcht   group(   t   hostR$   R&   (    (    sk   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/compat.pyt	   splituser-   s     (   t   TextIOWrapper(	   R   R   R   R)   R
   R   R   R   R   (   R   R	   R   R   R   R   R   R   R   R   R   (   R   R   R   (   t   filterfalse(   t   match_hostnamet   CertificateErrorR-   c           B@  s   e  Z RS(    (   t   __name__t
   __module__(    (    (    sk   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/compat.pyR-   U   s   c   
      C@  sS  g  } |  s t  S|  j d  } | d | d } } | j d  } | | k rh t d t |     n  | s |  j   | j   k S| d k r | j d  nY | j d  s | j d  r | j t j	 |   n" | j t j	 |  j
 d d	   x$ | D] } | j t j	 |   q Wt j d
 d j |  d t j  }	 |	 j |  S(   sp   Matching according to RFC 6125, section 6.4.3

        http://tools.ietf.org/html/rfc6125#section-6.4.3
        t   .i    i   t   *s,   too many wildcards in certificate DNS name: s   [^.]+s   xn--s   \*s   [^.]*s   \As   \.s   \Z(   t   Falset   splitt   countR-   t   reprt   lowert   appendt
   startswithR$   t   escapet   replaceR%   t   joint
   IGNORECASER&   (
   t   dnt   hostnamet   max_wildcardst   patst   partst   leftmostt	   remaindert	   wildcardst   fragt   pat(    (    sk   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/compat.pyt   _dnsname_matchY   s(    "&c         C@  s[  |  s t  d   n  g  } |  j d d  } xC | D]; \ } } | d k r4 t | |  r_ d S| j |  q4 q4 W| s xc |  j d d  D]L } xC | D]; \ } } | d k r t | |  r d S| j |  q q Wq Wn  t |  d k rt d | d	 j t t |   f   n; t |  d k rKt d
 | | d f   n t d   d S(   s=  Verify that *cert* (in decoded format as returned by
        SSLSocket.getpeercert()) matches the *hostname*.  RFC 2818 and RFC 6125
        rules are followed, but IP addresses are not accepted for *hostname*.

        CertificateError is raised on failure. On success, the function
        returns nothing.
        st   empty or no certificate, match_hostname needs a SSL socket or SSL context with either CERT_OPTIONAL or CERT_REQUIREDt   subjectAltNamet   DNSNt   subjectt
   commonNamei   s&   hostname %r doesn't match either of %ss   , s   hostname %r doesn't match %ri    s=   no appropriate commonName or subjectAltName fields were found(    (    (	   t
   ValueErrort   getRG   R7   t   lenR-   R;   t   mapR5   (   t   certR>   t   dnsnamest   sant   keyt   valuet   sub(    (    sk   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/compat.pyR,      s.    %(   t   SimpleNamespacet	   Containerc           B@  s   e  Z d  Z d   Z RS(   sR   
        A generic container for when multiple values need to be returned
        c         K@  s   |  j  j |  d  S(   N(   t   __dict__t   update(   t   selft   kwargs(    (    sk   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/compat.pyt   __init__   s    (   R.   R/   t   __doc__R\   (    (    (    sk   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/compat.pyRW      s   (   t   whichc         @  s  d   } t  j j    r2 |   |  r.   Sd S| d k rY t  j j d t  j  } n  | sc d S| j t  j  } t	 j
 d k rt  j | k r | j d t  j  n  t  j j d d  j t  j  } t   f d   | D  r   g } qg  | D] }   | ^ q } n	   g } t   } xu | D]m } t  j j |  }	 |	 | k r+| j |	  x9 | D]. }
 t  j j | |
  } | | |  rc| SqcWq+q+Wd S(	   sK  Given a command, mode, and a PATH string, return the path which
        conforms to the given mode on the PATH, or None if there is no such
        file.

        `mode` defaults to os.F_OK | os.X_OK. `path` defaults to the result
        of os.environ.get("PATH"), or can be overridden with a custom search
        path.

        c         S@  s5   t  j j |   o4 t  j |  |  o4 t  j j |   S(   N(   t   ost   patht   existst   accesst   isdir(   t   fnt   mode(    (    sk   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/compat.pyt   _access_check   s    $t   PATHt   win32i    t   PATHEXTt    c         3@  s*   |  ]  }   j    j | j     Vq d  S(   N(   R6   t   endswith(   t   .0t   ext(   t   cmd(    sk   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/compat.pys	   <genexpr>   s    N(   R_   R`   t   dirnameR#   t   environRM   t   defpathR3   t   pathsept   syst   platformt   curdirt   insertt   anyt   sett   normcaset   addR;   (   Rn   Re   R`   Rf   t   pathextt   filesRm   t   seent   dirt   normdirt   thefilet   name(    (   Rn   sk   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/compat.pyR^      s8    	! 		(   t   ZipFilet	   __enter__(   t
   ZipExtFileR   c           B@  s#   e  Z d    Z d   Z d   Z RS(   c         C@  s   |  j  j | j   d  S(   N(   RX   RY   (   RZ   t   base(    (    sk   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/compat.pyR\     s    c         C@  s   |  S(   N(    (   RZ   (    (    sk   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/compat.pyR     s    c         G@  s   |  j    d  S(   N(   t   close(   RZ   t   exc_info(    (    sk   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/compat.pyt   __exit__  s    (   R.   R/   R\   R   R   (    (    (    sk   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/compat.pyR     s   		R   c           B@  s#   e  Z d    Z d   Z d   Z RS(   c         C@  s   |  S(   N(    (   RZ   (    (    sk   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/compat.pyR     s    c         G@  s   |  j    d  S(   N(   R   (   RZ   R   (    (    sk   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/compat.pyR     s    c         O@  s   t  j |  | |  } t |  S(   N(   t   BaseZipFilet   openR   (   RZ   t   argsR[   R   (    (    sk   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/compat.pyR      s    (   R.   R/   R   R   R   (    (    (    sk   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/compat.pyR     s   		(   t   python_implementationc           C@  s@   d t  j k r d St j d k r& d St  j j d  r< d Sd S(   s6   Return a string identifying the Python implementation.t   PyPyt   javat   Jythont
   IronPythont   CPython(   Rs   t   versionR_   R   R8   (    (    (    sk   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/compat.pyR   '  s    (   t	   sysconfig(   t   Callablec         C@  s   t  |  t  S(   N(   R   R   (   t   obj(    (    sk   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/compat.pyt   callable;  s    t   mbcst   strictt   surrogateescapec         C@  sO   t  |  t  r |  St  |  t  r2 |  j t t  St d t |   j   d  S(   Ns   expect bytes or str, not %s(	   R   t   bytest	   text_typeR   t   _fsencodingt	   _fserrorst	   TypeErrort   typeR.   (   t   filename(    (    sk   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/compat.pyt   fsencodeI  s    c         C@  sO   t  |  t  r |  St  |  t  r2 |  j t t  St d t |   j   d  S(   Ns   expect bytes or str, not %s(	   R   R   R   t   decodeR   R   R   R   R.   (   R   (    (    sk   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/compat.pyt   fsdecodeR  s    (   t   detect_encoding(   t   BOM_UTF8t   lookups   coding[:=]\s*([-\w.]+)c         C@  s^   |  d  j    j d d  } | d k s7 | j d  r; d S| d k sV | j d  rZ d S|  S(   s(   Imitates get_normal_name in tokenizer.c.i   t   _t   -s   utf-8s   utf-8-s   latin-1s
   iso-8859-1s   iso-latin-1s   latin-1-s   iso-8859-1-s   iso-latin-1-(   s   latin-1s
   iso-8859-1s   iso-latin-1(   s   latin-1-s   iso-8859-1-s   iso-latin-1-(   R6   R:   R8   (   t   orig_enct   enc(    (    sk   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/compat.pyt   _get_normal_namec  s    c         @  s  y  j  j  Wn t k
 r) d  n Xt   d } d }  f d   }    f d   } |   } | j t  r t   | d } d } n  | s | g  f S| |  } | r | | g f S|   } | s | | g f S| |  } | r | | | g f S| | | g f S(   s>  
        The detect_encoding() function is used to detect the encoding that should
        be used to decode a Python source file.  It requires one argment, readline,
        in the same way as the tokenize() generator.

        It will call readline a maximum of twice, and return the encoding used
        (as a string) and a list of any lines (left as bytes) it has read in.

        It detects the encoding from the presence of a utf-8 bom or an encoding
        cookie as specified in pep-0263.  If both a bom and a cookie are present,
        but disagree, a SyntaxError will be raised.  If the encoding cookie is an
        invalid charset, raise a SyntaxError.  Note that if a utf-8 bom is found,
        'utf-8-sig' is returned.

        If no encoding is specified, then the default of 'utf-8' will be returned.
        s   utf-8c           @  s$   y     SWn t  k
 r d SXd  S(   NRj   (   t   StopIteration(    (   t   readline(    sk   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/compat.pyt   read_or_stop  s    c         @  s7  y |  j  d  } WnD t k
 rY d }  d  k	 rJ d j |   } n  t |   n Xt j |  } | ss d  St | d  } y t |  } WnH t	 k
 r  d  k r d | } n d j  |  } t |   n X  r3| j
 d k r& d  k rd } n d j   } t |   n  | d	 7} n  | S(
   Ns   utf-8s'   invalid or missing encoding declarations   {} for {!r}i    s   unknown encoding: s   unknown encoding for {!r}: {}s   encoding problem: utf-8s    encoding problem for {!r}: utf-8s   -sig(   R   t   UnicodeDecodeErrorR#   t   formatt   SyntaxErrort	   cookie_ret   findallR   R   t   LookupErrorR   (   t   linet   line_stringt   msgt   matchest   encodingt   codec(   t	   bom_foundR   (    sk   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/compat.pyt   find_cookie  s6    			i   s	   utf-8-sigN(   t   __self__R   t   AttributeErrorR#   R2   R8   R   t   True(   R   R   t   defaultR   R   t   firstt   second(    (   R   R   R   sk   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/compat.pyR   n  s4    
&	
	
	(   R9   i   i   (   t   unescape(   t   ChainMap(   t   MutableMapping(   t   recursive_reprs   ...c         @  s     f d   } | S(   sm   
            Decorator to make a repr function return fillvalue for a recursive
            call
            c         @  sm   t          f d   } t  d  | _ t  d  | _ t  d  | _ t  d i   | _ | S(   Nc         @  sW   t  |   t   f } |  k r%   S j |  z  |   } Wd   j |  X| S(   N(   t   idt	   get_identRz   t   discard(   RZ   RS   t   result(   t	   fillvaluet   repr_runningt   user_function(    sk   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/compat.pyt   wrapper  s    R/   R]   R.   t   __annotations__(   Rx   t   getattrR/   R]   R.   R   (   R   R   (   R   (   R   R   sk   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/compat.pyt   decorating_function  s    	(    (   R   R   (    (   R   sk   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/compat.pyt   _recursive_repr  s    R   c           B@  s   e  Z d  Z d   Z d   Z d   Z d d  Z d   Z d   Z	 d   Z
 d   Z e   d	    Z e d
    Z d   Z e Z d   Z e d    Z d   Z d   Z d   Z d   Z d   Z RS(   s   A ChainMap groups multiple dicts (or other mappings) together
        to create a single, updateable view.

        The underlying mappings are stored in a list.  That list is public and can
        accessed or updated using the *maps* attribute.  There is no other state.

        Lookups search the underlying mappings successively until a key is found.
        In contrast, writes, updates, and deletions only operate on the first
        mapping.

        c         G@  s   t  |  p i  g |  _ d S(   s   Initialize a ChainMap by setting *maps* to the given mappings.
            If no mappings are provided, a single empty dictionary is used.

            N(   t   listt   maps(   RZ   R   (    (    sk   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/compat.pyR\     s    c         C@  s   t  |   d  S(   N(   t   KeyError(   RZ   RS   (    (    sk   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/compat.pyt   __missing__  s    c         C@  sA   x1 |  j  D]& } y | | SWq
 t k
 r/ q
 Xq
 W|  j |  S(   N(   R   R   R   (   RZ   RS   t   mapping(    (    sk   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/compat.pyt   __getitem__  s    c         C@  s   | |  k r |  | S| S(   N(    (   RZ   RS   R   (    (    sk   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/compat.pyRM     s    c         C@  s   t  t   j |  j    S(   N(   RN   Rx   t   unionR   (   RZ   (    (    sk   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/compat.pyt   __len__  s    c         C@  s   t  t   j |  j    S(   N(   t   iterRx   R   R   (   RZ   (    (    sk   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/compat.pyt   __iter__  s    c         @  s   t    f d   |  j D  S(   Nc         3@  s   |  ] }   | k Vq d  S(   N(    (   Rl   t   m(   RS   (    sk   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/compat.pys	   <genexpr>   s    (   Rw   R   (   RZ   RS   (    (   RS   sk   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/compat.pyt   __contains__  s    c         C@  s   t  |  j  S(   N(   Rw   R   (   RZ   (    (    sk   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/compat.pyt   __bool__"  s    c         C@  s%   d j  |  d j t t |  j    S(   Ns   {0.__class__.__name__}({1})s   , (   R   R;   RO   R5   R   (   RZ   (    (    sk   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/compat.pyt   __repr__%  s    c         G@  s   |  t  j | |   S(   s?   Create a ChainMap with a single dict created from the iterable.(   t   dictt   fromkeys(   t   clst   iterableR   (    (    sk   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/compat.pyR   *  s    c         C@  s$   |  j  |  j d j   |  j d  S(   sH   New ChainMap or subclass with a new copy of maps[0] and refs to maps[1:]i    i   (   t	   __class__R   t   copy(   RZ   (    (    sk   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/compat.pyR   /  s    c         C@  s   |  j  i  |  j  S(   s;   New ChainMap with a new dict followed by all previous maps.(   R   R   (   RZ   (    (    sk   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/compat.pyt	   new_child5  s    c         C@  s   |  j  |  j d   S(   s   New ChainMap from maps[1:].i   (   R   R   (   RZ   (    (    sk   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/compat.pyt   parents9  s    c         C@  s   | |  j  d | <d  S(   Ni    (   R   (   RZ   RS   RT   (    (    sk   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/compat.pyt   __setitem__>  s    c         C@  s?   y |  j  d | =Wn& t k
 r: t d j |    n Xd  S(   Ni    s(   Key not found in the first mapping: {!r}(   R   R   R   (   RZ   RS   (    (    sk   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/compat.pyt   __delitem__A  s    c         C@  s9   y |  j  d j   SWn t k
 r4 t d   n Xd S(   sP   Remove and return an item pair from maps[0]. Raise KeyError is maps[0] is empty.i    s#   No keys found in the first mapping.N(   R   t   popitemR   (   RZ   (    (    sk   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/compat.pyR   G  s    c         G@  sH   y |  j  d j | |  SWn& t k
 rC t d j |    n Xd S(   sW   Remove *key* from maps[0] and return its value. Raise KeyError if *key* not in maps[0].i    s(   Key not found in the first mapping: {!r}N(   R   t   popR   R   (   RZ   RS   R   (    (    sk   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/compat.pyR   N  s    c         C@  s   |  j  d j   d S(   s'   Clear maps[0], leaving maps[1:] intact.i    N(   R   t   clear(   RZ   (    (    sk   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/compat.pyR   U  s    N(   R.   R/   R]   R\   R   R   R#   RM   R   R   R   R   R   R   t   classmethodR   R   t   __copy__R   t   propertyR   R   R   R   R   R   (    (    (    sk   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/compat.pyR     s(   													(   t   cache_from_sourcec         C@  sG   |  j  d  s t  | d  k r* t } n  | r9 d } n d } |  | S(   Ns   .pyt   ct   o(   Rk   t   AssertionErrorR#   t	   __debug__(   R`   t   debug_overridet   suffix(    (    sk   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/compat.pyR   \  s    		(   t   OrderedDict(   R   (   t   KeysViewt
   ValuesViewt	   ItemsViewR   c           B@  s  e  Z d  Z d   Z e j d  Z e j d  Z d   Z d   Z d   Z	 e
 d  Z d   Z d	   Z d
   Z d   Z d   Z d   Z d   Z e Z e   Z e d  Z d d  Z d d  Z d   Z d   Z e d d   Z d   Z d   Z d   Z  d   Z! d   Z" RS(   s)   Dictionary that remembers insertion orderc         O@  s   t  |  d k r+ t d t  |    n  y |  j Wn7 t k
 ro g  |  _ } | | d g | (i  |  _ n X|  j | |   d S(   s   Initialize an ordered dictionary.  Signature is the same as for
            regular dictionaries, but keyword arguments are not recommended
            because their insertion order is arbitrary.

            i   s$   expected at most 1 arguments, got %dN(   RN   R   t   _OrderedDict__rootR   R#   t   _OrderedDict__mapt   _OrderedDict__update(   RZ   R   t   kwdst   root(    (    sk   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/compat.pyR\     s    c         C@  s\   | |  k rH |  j  } | d } | | | g | d <| d <|  j | <n  | |  | |  d S(   s!   od.__setitem__(i, y) <==> od[i]=yi    i   N(   R   R   (   RZ   RS   RT   t   dict_setitemR   t   last(    (    sk   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/compat.pyR     s
    	
)c         C@  s@   | |  |  |  j  j |  \ } } } | | d <| | d <d S(   s    od.__delitem__(y) <==> del od[y]i   i    N(   R   R   (   RZ   RS   t   dict_delitemt	   link_prevt	   link_next(    (    sk   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/compat.pyR     s    
c         c@  s=   |  j  } | d } x# | | k	 r8 | d V| d } q Wd S(   s   od.__iter__() <==> iter(od)i   i   N(   R   (   RZ   R   t   curr(    (    sk   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/compat.pyR     s
    	
	c         c@  s=   |  j  } | d } x# | | k	 r8 | d V| d } q Wd S(   s#   od.__reversed__() <==> reversed(od)i    i   N(   R   (   RZ   R   R  (    (    sk   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/compat.pyt   __reversed__  s
    	
	c         C@  sm   yH x |  j  j   D]
 } | 2q W|  j } | | d g | (|  j  j   Wn t k
 r[ n Xt j |   d S(   s.   od.clear() -> None.  Remove all items from od.N(   R   t
   itervaluesR   R#   R   R   R   (   RZ   t   nodeR   (    (    sk   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/compat.pyR     s    	c         C@  s   |  s t  d   n  |  j } | rO | d } | d } | | d <| | d <n( | d } | d } | | d <| | d <| d } |  j | =t j |  |  } | | f S(   s   od.popitem() -> (k, v), return and remove a (key, value) pair.
            Pairs are returned in LIFO order if last is true or FIFO order if false.

            s   dictionary is emptyi    i   i   (   R   R   R   R   R   (   RZ   R  R   t   linkR  R  RS   RT   (    (    sk   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/compat.pyR     s     	








c         C@  s
   t  |   S(   s   od.keys() -> list of keys in od(   R   (   RZ   (    (    sk   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/compat.pyt   keys  s    c         C@  s   g  |  D] } |  | ^ q S(   s#   od.values() -> list of values in od(    (   RZ   RS   (    (    sk   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/compat.pyt   values  s    c         C@  s!   g  |  D] } | |  | f ^ q S(   s.   od.items() -> list of (key, value) pairs in od(    (   RZ   RS   (    (    sk   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/compat.pyt   items  s    c         C@  s
   t  |   S(   s0   od.iterkeys() -> an iterator over the keys in od(   R   (   RZ   (    (    sk   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/compat.pyt   iterkeys  s    c         c@  s   x |  D] } |  | Vq Wd S(   s2   od.itervalues -> an iterator over the values in odN(    (   RZ   t   k(    (    sk   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/compat.pyR    s    c         c@  s$   x |  D] } | |  | f Vq Wd S(   s=   od.iteritems -> an iterator over the (key, value) items in odN(    (   RZ   R  (    (    sk   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/compat.pyt	   iteritems  s    c          O@  s&  t  |   d k r. t d t  |   f   n |  sC t d   n  |  d } d } t  |   d k rr |  d } n  t | t  r xw | D] } | | | | <q WnX t | d  r xF | j   D] } | | | | <q Wn! x | D] \ } } | | | <q Wx$ | j   D] \ } } | | | <qWd S(	   s  od.update(E, **F) -> None.  Update od from dict/iterable E and F.

            If E is a dict instance, does:           for k in E: od[k] = E[k]
            If E has a .keys() method, does:         for k in E.keys(): od[k] = E[k]
            Or if E is an iterable of items, does:   for k, v in E: od[k] = v
            In either case, this is followed by:     for k, v in F.items(): od[k] = v

            i   s8   update() takes at most 2 positional arguments (%d given)s,   update() takes at least 1 argument (0 given)i    i   R  N(    (   RN   R   R   R   t   hasattrR  R  (   R   R   RZ   t   otherRS   RT   (    (    sk   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/compat.pyRY     s&    	
c         C@  sC   | |  k r! |  | } |  | =| S| |  j  k r? t |   n  | S(   s   od.pop(k[,d]) -> v, remove specified key and return the corresponding value.
            If key is not found, d is returned if given, otherwise KeyError is raised.

            (   t   _OrderedDict__markerR   (   RZ   RS   R   R   (    (    sk   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/compat.pyR     s    
c         C@  s"   | |  k r |  | S| |  | <| S(   sD   od.setdefault(k[,d]) -> od.get(k,d), also set od[k]=d if k not in od(    (   RZ   RS   R   (    (    sk   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/compat.pyt
   setdefault%  s    
c         C@  s   | s i  } n  t  |   t   f } | | k r4 d Sd | | <z5 |  sX d |  j j f Sd |  j j |  j   f SWd | | =Xd S(   s   od.__repr__() <==> repr(od)s   ...i   s   %s()s   %s(%r)N(   R   t
   _get_identR   R.   R  (   RZ   t   _repr_runningt   call_key(    (    sk   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/compat.pyR   ,  s     	
c         C@  s   g  |  D] } | |  | g ^ q } t  |   j   } x' t  t    D] } | j | d  qE W| rx |  j | f | f S|  j | f f S(   s%   Return state information for picklingN(   t   varsR   R   R   R#   R   (   RZ   R  R  t	   inst_dict(    (    sk   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/compat.pyt
   __reduce__:  s    #c         C@  s   |  j  |   S(   s!   od.copy() -> a shallow copy of od(   R   (   RZ   (    (    sk   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/compat.pyR   D  s    c         C@  s(   |    } x | D] } | | | <q W| S(   s   OD.fromkeys(S[, v]) -> New ordered dictionary with keys from S
            and values equal to v (which defaults to None).

            (    (   R   R   RT   t   dRS   (    (    sk   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/compat.pyR   H  s    	c         C@  sM   t  | t  r= t |   t |  k o< |  j   | j   k St j |  |  S(   s   od.__eq__(y) <==> od==y.  Comparison to another OD is order-sensitive
            while comparison to a regular mapping is order-insensitive.

            (   R   R   RN   R  R   t   __eq__(   RZ   R  (    (    sk   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/compat.pyR  S  s    .c         C@  s   |  | k S(   N(    (   RZ   R  (    (    sk   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/compat.pyt   __ne__\  s    c         C@  s
   t  |   S(   s@   od.viewkeys() -> a set-like object providing a view on od's keys(   R   (   RZ   (    (    sk   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/compat.pyt   viewkeysa  s    c         C@  s
   t  |   S(   s<   od.viewvalues() -> an object providing a view on od's values(   R   (   RZ   (    (    sk   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/compat.pyt
   viewvaluese  s    c         C@  s
   t  |   S(   sB   od.viewitems() -> a set-like object providing a view on od's items(   R   (   RZ   (    (    sk   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/compat.pyt	   viewitemsi  s    N(#   R.   R/   R]   R\   R   R   R   R   R  R   R   R   R  R  R  R  R  R  RY   R   t   objectR  R   R#   R  R   R  R   R   R   R  R  R  R  R   (    (    (    sk   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/compat.pyR   w  s:   	
													
	
					(   t   BaseConfiguratort   valid_idents   ^[a-z_][a-z0-9_]*$c         C@  s,   t  j |   } | s( t d |    n  t S(   Ns!   Not a valid Python identifier: %r(   t
   IDENTIFIERR&   RL   R   (   R   R   (    (    sk   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/compat.pyR#  s  s    t   ConvertingDictc           B@  s#   e  Z d  Z d   Z d d  Z RS(   s    A converting dictionary wrapper.c         C@  sq   t  j |  |  } |  j j |  } | | k	 rm | |  | <t |  t t t f k rm |  | _ | | _	 qm n  | S(   N(
   R   R   t   configuratort   convertR   R%  t   ConvertingListt   ConvertingTuplet   parentRS   (   RZ   RS   RT   R   (    (    sk   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/compat.pyR     s    
	c         C@  st   t  j |  | |  } |  j j |  } | | k	 rp | |  | <t |  t t t f k rp |  | _ | | _	 qp n  | S(   N(
   R   RM   R&  R'  R   R%  R(  R)  R*  RS   (   RZ   RS   R   RT   R   (    (    sk   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/compat.pyRM     s    
	N(   R.   R/   R]   R   R#   RM   (    (    (    sk   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/compat.pyR%    s   	c         C@  sj   t  j |  | |  } |  j j |  } | | k	 rf t |  t t t f k rf |  | _ | | _	 qf n  | S(   N(
   R   R   R&  R'  R   R%  R(  R)  R*  RS   (   RZ   RS   R   RT   R   (    (    sk   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/compat.pyR     s    	R(  c           B@  s#   e  Z d  Z d   Z d d  Z RS(   s   A converting list wrapper.c         C@  sq   t  j |  |  } |  j j |  } | | k	 rm | |  | <t |  t t t f k rm |  | _ | | _	 qm n  | S(   N(
   R   R   R&  R'  R   R%  R(  R)  R*  RS   (   RZ   RS   RT   R   (    (    sk   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/compat.pyR     s    
	ic         C@  s^   t  j |  |  } |  j j |  } | | k	 rZ t |  t t t f k rZ |  | _ qZ n  | S(   N(	   R   R   R&  R'  R   R%  R(  R)  R*  (   RZ   t   idxRT   R   (    (    sk   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/compat.pyR     s    (   R.   R/   R]   R   R   (    (    (    sk   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/compat.pyR(    s   	R)  c           B@  s   e  Z d  Z d   Z RS(   s   A converting tuple wrapper.c         C@  sg   t  j |  |  } |  j j |  } | | k	 rc t |  t t t f k rc |  | _ | | _	 qc n  | S(   N(
   t   tupleR   R&  R'  R   R%  R(  R)  R*  RS   (   RZ   RS   RT   R   (    (    sk   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/compat.pyR     s    	(   R.   R/   R]   R   (    (    (    sk   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/compat.pyR)    s   R"  c           B@  s   e  Z d  Z e j d  Z e j d  Z e j d  Z e j d  Z e j d  Z	 i d d 6d d	 6Z
 e e  Z d
   Z d   Z d   Z d   Z d   Z d   Z d   Z RS(   sQ   
        The configurator base class which defines some useful defaults.
        s%   ^(?P<prefix>[a-z]+)://(?P<suffix>.*)$s   ^\s*(\w+)\s*s   ^\.\s*(\w+)\s*s   ^\[\s*(\w+)\s*\]\s*s   ^\d+$t   ext_convertRm   t   cfg_convertt   cfgc         C@  s   t  |  |  _ |  |  j _ d  S(   N(   R%  t   configR&  (   RZ   R0  (    (    sk   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/compat.pyR\     s    c   	      C@  s   | j  d  } | j d  } yy |  j |  } x_ | D]W } | d | 7} y t | |  } Wq7 t k
 r |  j |  t | |  } q7 Xq7 W| SWnV t k
 r t j   d \ } } t d | | f  } | | | _	 | _
 |  n Xd S(   sl   
            Resolve strings to objects using standard import and attribute
            syntax.
            R0   i    i   s   Cannot resolve %r: %sN(   R3   R   t   importerR   R   t   ImportErrorRs   R   RL   t	   __cause__t   __traceback__(	   RZ   R   R   t   usedt   foundRE   t   et   tbt   v(    (    sk   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/compat.pyt   resolve  s"    c         C@  s   |  j  |  S(   s*   Default converter for the ext:// protocol.(   R:  (   RZ   RT   (    (    sk   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/compat.pyR-    s    c         C@  sO  | } |  j  j |  } | d k r7 t d |   n| | j   } |  j | j   d } x | rJ|  j j |  } | r | | j   d } n |  j j |  } | r| j   d } |  j	 j |  s | | } qy t
 |  } | | } Wqt k
 r| | } qXn  | r1| | j   } qa t d | | f   qa W| S(   s*   Default converter for the cfg:// protocol.s   Unable to convert %ri    s   Unable to convert %r at %rN(   t   WORD_PATTERNR&   R#   RL   t   endR0  t   groupst   DOT_PATTERNt   INDEX_PATTERNt   DIGIT_PATTERNt   intR   (   RZ   RT   t   restR   R  R+  t   n(    (    sk   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/compat.pyR.    s2    	c         C@  s/  t  | t  r7 t  | t  r7 t |  } |  | _ n t  | t  rn t  | t  rn t |  } |  | _ n t  | t  r t  | t  r t |  } |  | _ n t  | t  r+|  j	 j
 |  } | r+| j   } | d } |  j j | d  } | r(| d } t |  |  } | |  } q(q+n  | S(   s   
            Convert values to an appropriate type. dicts, lists and tuples are
            replaced by their converting alternatives. Strings are checked to
            see if they have a conversion format and are converted if they do.
            t   prefixR   N(   R   R%  R   R&  R(  R   R)  R,  t   string_typest   CONVERT_PATTERNR&   t	   groupdictt   value_convertersRM   R#   R   (   RZ   RT   R   R  RD  t	   converterR   (    (    sk   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/compat.pyR'     s*    

c   	      C@  s   | j  d  } t |  s- |  j |  } n  | j  d d  } t g  | D]" } t |  rI | | | f ^ qI  } | |   } | r x- | j   D] \ } } t | | |  q Wn  | S(   s1   Configure an object with a user-supplied factory.s   ()R0   N(   R   R   R:  R#   R   R#  R  t   setattr(	   RZ   R0  R   t   propsR  R[   R   R   RT   (    (    sk   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/compat.pyt   configure_custom<  s    5c         C@  s"   t  | t  r t |  } n  | S(   s0   Utility function which converts lists to tuples.(   R   R   R,  (   RZ   RT   (    (    sk   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/compat.pyt   as_tupleJ  s    (   R.   R/   R]   R$   R%   RF  R;  R>  R?  R@  RH  t   staticmethodt
   __import__R1  R\   R:  R-  R.  R'  RL  RM  (    (    (    sk   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/compat.pyR"    s"   
				"		(   i   i   (   t
   __future__R    R_   R$   Rs   t   version_infoR   t
   basestringRE  R   R   t   typesR   t	   file_typet   __builtin__t   builtinst   ConfigParsert   configparsert	   _backportR   R   R   R   R   R   t   urllibR	   R
   R   R   R   R   R   R   t   urllib2R   R   R   R   R   R   R   R   R   R   t   httplibt	   xmlrpclibt   Queuet   queueR   t   htmlentitydefst	   raw_inputt	   itertoolsR    t   filterR!   R+   R#   R"   R)   t   iot   strR*   t   urllib.parset   urllib.requestt   urllib.errort   http.clientt   clientt   requestt   xmlrpc.clientt   html.parsert   html.entitiest   entitiest   inputt   sslR,   R-   R2  RL   RG   RV   RW   R!  R^   t   F_OKt   X_OKt   zipfileR   R   R  R   t   BaseZipExtFileRt   R   R   R   t	   NameErrort   collectionsR   R   R   R   t   getfilesystemencodingR   R   t   tokenizeR   t   codecsR   R   R%   R   R   t   htmlR9   t   cgiR   R   R   t   reprlibR   R   t   impR   R   t   threadR   R  t   dummy_threadt   _abcollR   R   R   R   t   logging.configR"  R#  t   IR$  R%  R   R   R(  R,  R)  (    (    (    sk   /private/var/folders/3n/6h2rwf155rn1m71wwyxn79n80000gn/T/pip-build-IcAT_k/pip/pip/_vendor/distlib/compat.pyt   <module>   s  	(4	F	@L2+A	

						[b
 	
