<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>
ž
7’ReÛ—  c               @   s   d  d l  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
 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 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žGd d „  d eN ƒ ZL d d „  ZO d d „  ZK Yn Xy d  d l mP ZQ Wn( eM k
 rÝGd d  „  d  eR ƒ ZQ Yn Xy d  d! l mS ZS Wn. eM k
 r"e jT e jU Bd d" d# „ ZS Yn Xd  d$ lV mW ZX eY eX d% ƒ rKeX ZW n< d  d& lV mZ Z[ Gd' d( „  d( e[ ƒ ZZ Gd) d* „  d* eX ƒ ZW y d  d+ l\ m] Z] Wn eM k
 r»d, d- „  Z] Yn Xy d  d l^ Z^ Wn" eM k
 rðd d. l m^ Z^ Yn Xy
 e_ Z_ Wn. e` k
 r+d  d/ la mb Zb d0 d1 „  Z_ Yn Xy e jc Zc e jd Zd WnQ ee k
 r•e jf ƒ  Zg eg d2 k rsd3 Zh n d4 Zh d5 d6 „  Zc d7 d8 „  Zd Yn Xy d  d9 li mj Zj Wn[ eM k
 rd  d: lk ml Zl mm Zm d  d l Z e jn d; ƒ Zo d< d= „  Zp d> d? „  Zj Yn Xy d  d@ lq mr Zr Wn" eM k
 r@d  d@ ls mr Zr Yn Xe j d dA … db k  rie1 ƒ  jt Zt n d  dC lq mt Zt y d  dD la mu Zu Wnp eM k
 rÿd  dE la mv Zv y d  dF lw mx Zy Wn! eM k
 rädG dH dI „ Zy Yn XGdJ dK „  dK ev ƒ Zu Yn Xy d  dL lz m{ Z{ Wn! eM k
 r7d dM dN „ Z{ Yn Xy d  dO la m| Z| Wn– eM k
 räy d  dP l} m~ Z Wn" eM k
 r”d  dP l€ m~ Z Yn Xy  d  dQ l m‚ Z‚ mƒ Zƒ m„ Z„ Wn eM k
 rÉYn XGdR dS „  dS e… ƒ Z| Yn Xy d  dT l† m‡ Z‡ mˆ Zˆ Wnš eM k
 r›e jn dU e j‰ ƒ ZŠ dV dW „  Zˆ GdX dY „  dY e… ƒ Z‹ d dZ d[ „ ZŒ Gd\ d] „  d] e ƒ ZŽ Gd^ d_ „  d_ e ƒ Z Gd` da „  da eR ƒ Z‡ Yn Xd S(c   i    (   u   absolute_importNi   (   u   StringIO(   u   FileTypei   (   u   shutil(   u   urlparseu
   urlunparseu   urljoinu   urlsplitu
   urlunsplit(   u   urlretrieveu   quoteu   unquoteu   url2pathnameu   pathname2urlu   ContentTooShortErroru	   splittypec             C   s+   t  |  t ƒ r! |  j d ƒ }  n  t |  ƒ S(   Nu   utf-8(   u
   isinstanceu   unicodeu   encodeu   _quote(   u   s(    (    u3   /tmp/pip-zej_zi-build/pip/_vendor/distlib/compat.pyu   quote   s    u   quote(
   u   Requestu   urlopenu   URLErroru	   HTTPErroru   HTTPBasicAuthHandleru   HTTPPasswordMgru   HTTPSHandleru   HTTPHandleru   HTTPRedirectHandleru   build_opener(   u
   HTMLParser(   u   ifilter(   u   ifilterfalsec             C   sY   t  d k r* d d l } | j d ƒ a  n  t  j |  ƒ } | rO | j d d ƒ Sd |  f S(   uJ   splituser('user[:passwd]@host[:port]') --> 'user[:passwd]', 'host[:port]'.i    Nu   ^(.*)@(.*)$i   i   (   u	   _userprogu   Noneu   reu   compileu   matchu   group(   u   hostu   reu   match(    (    u3   /tmp/pip-zej_zi-build/pip/_vendor/distlib/compat.pyu	   splituser-   s     u	   splituser(   u   TextIOWrapper(	   u   urlparseu
   urlunparseu   urljoinu	   splituseru   quoteu   unquoteu   urlsplitu
   urlunsplitu	   splittype(   u   urlopenu   urlretrieveu   Requestu   url2pathnameu   pathname2urlu   HTTPBasicAuthHandleru   HTTPPasswordMgru   HTTPSHandleru   HTTPHandleru   HTTPRedirectHandleru   build_opener(   u	   HTTPErroru   URLErroru   ContentTooShortError(   u   filterfalse(   u   match_hostnameu   CertificateErrorc             B   s   |  Ee  Z d  Z d S(   u   CertificateErrorN(   u   __name__u
   __module__u   __qualname__(   u
   __locals__(    (    u3   /tmp/pip-zej_zi-build/pip/_vendor/distlib/compat.pyu   CertificateErrorU   s   u   CertificateErrorc             C   sˆ   g  } x[ |  j  d ƒ D]J } | d k r8 | j d ƒ q t j | ƒ } | j | j d d ƒ ƒ q Wt j d d j | ƒ d t j ƒ S(	   Nu   .u   *u   [^.]+u   \*u   [^.]*u   \Au   \.u   \Z(   u   splitu   appendu   reu   escapeu   replaceu   compileu   joinu
   IGNORECASE(   u   dnu   patsu   frag(    (    u3   /tmp/pip-zej_zi-build/pip/_vendor/distlib/compat.pyu   _dnsname_to_patY   s    u   _dnsname_to_patc             C   sg  |  s t  d ƒ ‚ n  g  } |  j d f  ƒ } xI | D]A \ } } | d k r4 t | ƒ j | ƒ re d S| j | ƒ q4 q4 W| së xi |  j d f  ƒ D]R } xI | D]A \ } } | d k rŸ t | ƒ j | ƒ rÐ d S| j | ƒ qŸ qŸ Wq’ Wn  t | ƒ d k r(t d | d	 j t t	 | ƒ ƒ f ƒ ‚ n; t | ƒ d k rWt d
 | | d f ƒ ‚ n t d ƒ ‚ d S(   u7  Verify that *cert* (in decoded format as returned by
        SSLSocket.getpeercert()) matches the *hostname*.  RFC 2818 rules
        are mostly followed, but IP addresses are not accepted for *hostname*.

        CertificateError is raised on failure. On success, the function
        returns nothing.
        u   empty or no certificateu   subjectAltNameu   DNSNu   subjectu
   commonNamei   u&   hostname %r doesn't match either of %su   , u   hostname %r doesn't match %ri    u=   no appropriate commonName or subjectAltName fields were found(
   u
   ValueErroru   getu   _dnsname_to_patu   matchu   appendu   lenu   CertificateErroru   joinu   mapu   repr(   u   certu   hostnameu   dnsnamesu   sanu   keyu   valueu   sub(    (    u3   /tmp/pip-zej_zi-build/pip/_vendor/distlib/compat.pyu   match_hostnameg   s.    %u   match_hostname(   u   SimpleNamespacec             B   s&   |  Ee  Z d  Z d Z d d „  Z d S(   u	   ContaineruR   
        A generic container for when multiple values need to be returned
        c             K   s   |  j  j | ƒ d  S(   N(   u   __dict__u   update(   u   selfu   kwargs(    (    u3   /tmp/pip-zej_zi-build/pip/_vendor/distlib/compat.pyu   __init__—   s    u   Container.__init__N(   u   __name__u
   __module__u   __qualname__u   __doc__u   __init__(   u
   __locals__(    (    u3   /tmp/pip-zej_zi-build/pip/_vendor/distlib/compat.pyu	   Container“   s   u	   Container(   u   whichc                s¢  d d „  } t  j j ˆ  ƒ r5 | ˆ  | ƒ r1 ˆ  Sd S| d k r\ t  j j d t  j ƒ } n  | sf 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	 †  | Dƒ ƒ rø ˆ  g } q‡  f d
 d †  | Dƒ } n	 ˆ  g } t ƒ  } xu | D]m } t  j j | ƒ } | | k r-| j | ƒ x9 | D]. }	 t  j j | |	 ƒ }
 | |
 | ƒ re|
 SqeWq-q-Wd S(   uK  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(   u   osu   pathu   existsu   accessu   isdir(   u   fnu   mode(    (    u3   /tmp/pip-zej_zi-build/pip/_vendor/distlib/compat.pyu   _access_check¬   s    $u   which.<locals>._access_checku   PATHu   win32i    u   PATHEXTu    c             3   s*   |  ]  } ˆ  j  ƒ  j | j  ƒ  ƒ Vq d  S(   N(   u   loweru   endswith(   u   .0u   ext(   u   cmd(    u3   /tmp/pip-zej_zi-build/pip/_vendor/distlib/compat.pyu	   <genexpr>É   s    u   which.<locals>.<genexpr>c                s   g  |  ] } ˆ  | ‘ q S(    (    (   u   .0u   ext(   u   cmd(    u3   /tmp/pip-zej_zi-build/pip/_vendor/distlib/compat.pyu
   <listcomp>Ì   s   	 u   which.<locals>.<listcomp>N(   u   osu   pathu   dirnameu   Noneu   environu   getu   defpathu   splitu   pathsepu   sysu   platformu   curdiru   insertu   anyu   setu   normcaseu   addu   join(   u   cmdu   modeu   pathu   _access_checku   pathextu   filesu   seenu   diru   normdiru   thefileu   name(    (   u   cmdu3   /tmp/pip-zej_zi-build/pip/_vendor/distlib/compat.pyu   whichŸ   s8    !		u   which(   u   ZipFileu	   __enter__(   u
   ZipExtFilec             B   s8   |  Ee  Z d  Z d d „  Z d d „  Z d d „  Z d S(   u
   ZipExtFilec             C   s   |  j  j | j  ƒ d  S(   N(   u   __dict__u   update(   u   selfu   base(    (    u3   /tmp/pip-zej_zi-build/pip/_vendor/distlib/compat.pyu   __init__è   s    u   ZipExtFile.__init__c             C   s   |  S(   N(    (   u   self(    (    u3   /tmp/pip-zej_zi-build/pip/_vendor/distlib/compat.pyu	   __enter__ë   s    u   ZipExtFile.__enter__c             G   s   |  j  ƒ  d  S(   N(   u   close(   u   selfu   exc_info(    (    u3   /tmp/pip-zej_zi-build/pip/_vendor/distlib/compat.pyu   __exit__î   s    u   ZipExtFile.__exit__N(   u   __name__u
   __module__u   __qualname__u   __init__u	   __enter__u   __exit__(   u
   __locals__(    (    u3   /tmp/pip-zej_zi-build/pip/_vendor/distlib/compat.pyu
   ZipExtFileç   s   u
   ZipExtFilec             B   s8   |  Ee  Z d  Z d d „  Z d d „  Z d d „  Z d S(   u   ZipFilec             C   s   |  S(   N(    (   u   self(    (    u3   /tmp/pip-zej_zi-build/pip/_vendor/distlib/compat.pyu	   __enter__ó   s    u   ZipFile.__enter__c             G   s   |  j  ƒ  d  S(   N(   u   close(   u   selfu   exc_info(    (    u3   /tmp/pip-zej_zi-build/pip/_vendor/distlib/compat.pyu   __exit__ö   s    u   ZipFile.__exit__c             O   s   t  j |  | | Ž } t | ƒ S(   N(   u   BaseZipFileu   openu
   ZipExtFile(   u   selfu   argsu   kwargsu   base(    (    u3   /tmp/pip-zej_zi-build/pip/_vendor/distlib/compat.pyu   openú   s    u   ZipFile.openN(   u   __name__u
   __module__u   __qualname__u	   __enter__u   __exit__u   open(   u
   __locals__(    (    u3   /tmp/pip-zej_zi-build/pip/_vendor/distlib/compat.pyu   ZipFileò   s   u   ZipFile(   u   python_implementationc               C   s@   d t  j k r d St j d k r& d St  j j d ƒ r< d Sd S(   u6   Return a string identifying the Python implementation.u   PyPyu   javau   Jythonu
   IronPythonu   CPython(   u   sysu   versionu   osu   nameu
   startswith(    (    (    u3   /tmp/pip-zej_zi-build/pip/_vendor/distlib/compat.pyu   python_implementation  s    u   python_implementation(   u	   sysconfig(   u   Callablec             C   s   t  |  t ƒ S(   N(   u
   isinstanceu   Callable(   u   obj(    (    u3   /tmp/pip-zej_zi-build/pip/_vendor/distlib/compat.pyu   callable  s    u   callableu   mbcsu   strictu   surrogateescapec             C   sO   t  |  t ƒ r |  St  |  t ƒ r2 |  j t t ƒ St d t |  ƒ j ƒ ‚ d  S(   Nu   expect bytes or str, not %s(	   u
   isinstanceu   bytesu	   text_typeu   encodeu   _fsencodingu	   _fserrorsu	   TypeErroru   typeu   __name__(   u   filename(    (    u3   /tmp/pip-zej_zi-build/pip/_vendor/distlib/compat.pyu   fsencode#  s    u   fsencodec             C   sO   t  |  t ƒ r |  St  |  t ƒ r2 |  j t t ƒ St d t |  ƒ j ƒ ‚ d  S(   Nu   expect bytes or str, not %s(	   u
   isinstanceu	   text_typeu   bytesu   decodeu   _fsencodingu	   _fserrorsu	   TypeErroru   typeu   __name__(   u   filename(    (    u3   /tmp/pip-zej_zi-build/pip/_vendor/distlib/compat.pyu   fsdecode,  s    u   fsdecode(   u   detect_encoding(   u   BOM_UTF8u   lookupu   coding[:=]\s*([-\w.]+)c             C   sd   |  d d … j  ƒ  j d d ƒ } | d k s= | j d ƒ rA d S| d k s\ | j d ƒ r` d S|  S(   u(   Imitates get_normal_name in tokenizer.c.Ni   u   _u   -u   utf-8u   utf-8-u   latin-1u
   iso-8859-1u   iso-latin-1u   latin-1-u   iso-8859-1-u   iso-latin-1-(   u   latin-1u
   iso-8859-1u   iso-latin-1(   u   latin-1-u   iso-8859-1-u   iso-latin-1-(   u   loweru   replaceu
   startswith(   u   orig_encu   enc(    (    u3   /tmp/pip-zej_zi-build/pip/_vendor/distlib/compat.pyu   _get_normal_name=  s    "u   _get_normal_namec                s  y ˆ j  j ‰ Wn t k
 r* d ‰ Yn Xd	 ‰  d } d } ‡ f d d †  } ‡  ‡ f d d †  } | ƒ  } | j t ƒ r› d
 ‰  | d d … } d } n  | s« | g  f S| | ƒ } | rÊ | | g f S| ƒ  } | sæ | | g f S| | ƒ } | r| | | g f S| | | g f S(   u>  
        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.
        u   utf-8c                  s(   y ˆ  ƒ  SWn t  k
 r# d SYn Xd  S(   Ns    (   u   StopIteration(    (   u   readline(    u3   /tmp/pip-zej_zi-build/pip/_vendor/distlib/compat.pyu   read_or_stop`  s    u%   detect_encoding.<locals>.read_or_stopc                s9  y |  j  d ƒ } WnE t k
 rZ d } ˆ d  k	 rJ d j | ˆ ƒ } n  t | ƒ ‚ Yn Xt j | ƒ } | st d  St | d ƒ } y t | ƒ } WnI t	 k
 rß ˆ d  k r½ d | } n d j ˆ | ƒ } t | ƒ ‚ Yn Xˆ  r5| j
 d k r(ˆ d  k r
d } n d j ˆ ƒ } t | ƒ ‚ n  | d	 7} n  | S(
   Nu   utf-8u'   invalid or missing encoding declarationu   {} for {!r}i    u   unknown encoding: u   unknown encoding for {!r}: {}u   encoding problem: utf-8u    encoding problem for {!r}: utf-8u   -sig(   u   decodeu   UnicodeDecodeErroru   Noneu   formatu   SyntaxErroru	   cookie_reu   findallu   _get_normal_nameu   lookupu   LookupErroru   name(   u   lineu   line_stringu   msgu   matchesu   encodingu   codec(   u	   bom_foundu   filename(    u3   /tmp/pip-zej_zi-build/pip/_vendor/distlib/compat.pyu   find_cookief  s6    			u$   detect_encoding.<locals>.find_cookiei   Nu	   utf-8-sigFT(   u   __self__u   nameu   AttributeErroru   Noneu   Falseu
   startswithu   BOM_UTF8u   True(   u   readlineu   encodingu   defaultu   read_or_stopu   find_cookieu   firstu   second(    (   u	   bom_foundu   filenameu   readlineu3   /tmp/pip-zej_zi-build/pip/_vendor/distlib/compat.pyu   detect_encodingH  s4    &		
	u   detect_encoding(   u   escapei   i   (   u   unescape(   u   ChainMap(   u   MutableMapping(   u   recursive_repru   ...c                s   ‡  f d d †  } | S(   um   
            Decorator to make a repr function return fillvalue for a recursive
            call
            c                sp   t  ƒ  ‰  ‡ ‡  ‡ f d 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(   u   idu	   get_identu   addu   discard(   u   selfu   keyu   result(   u	   fillvalueu   repr_runningu   user_function(    u3   /tmp/pip-zej_zi-build/pip/_vendor/distlib/compat.pyu   wrapper½  s    u=   _recursive_repr.<locals>.decorating_function.<locals>.wrapperu
   __module__u   __doc__u   __name__u   __annotations__(   u   setu   getattru
   __module__u   __doc__u   __name__u   __annotations__(   u   user_functionu   wrapper(   u	   fillvalue(   u   repr_runningu   user_functionu3   /tmp/pip-zej_zi-build/pip/_vendor/distlib/compat.pyu   decorating_functionº  s    	u,   _recursive_repr.<locals>.decorating_function(    (   u	   fillvalueu   decorating_function(    (   u	   fillvalueu3   /tmp/pip-zej_zi-build/pip/_vendor/distlib/compat.pyu   _recursive_repr´  s    u   _recursive_reprc             B   s  |  Ee  Z d  Z d Z d 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 d „  Z e Z d d „  Z e d d „  ƒ Z d d „  Z d d „  Z d  d! „  Z d" d# „  Z d$ d% „  Z d& S('   u   ChainMapuÍ   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(   u˜   Initialize a ChainMap by setting *maps* to the given mappings.
            If no mappings are provided, a single empty dictionary is used.

            N(   u   listu   maps(   u   selfu   maps(    (    u3   /tmp/pip-zej_zi-build/pip/_vendor/distlib/compat.pyu   __init__Þ  s    u   ChainMap.__init__c             C   s   t  | ƒ ‚ d  S(   N(   u   KeyError(   u   selfu   key(    (    u3   /tmp/pip-zej_zi-build/pip/_vendor/distlib/compat.pyu   __missing__å  s    u   ChainMap.__missing__c             C   sB   x2 |  j  D]' } y | | SWq
 t k
 r0 Yq
 Xq
 W|  j | ƒ S(   N(   u   mapsu   KeyErroru   __missing__(   u   selfu   keyu   mapping(    (    u3   /tmp/pip-zej_zi-build/pip/_vendor/distlib/compat.pyu   __getitem__è  s    	u   ChainMap.__getitem__c             C   s   | |  k r |  | S| S(   N(    (   u   selfu   keyu   default(    (    u3   /tmp/pip-zej_zi-build/pip/_vendor/distlib/compat.pyu   getð  s    u   ChainMap.getc             C   s   t  t ƒ  j |  j Œ  ƒ S(   N(   u   lenu   setu   unionu   maps(   u   self(    (    u3   /tmp/pip-zej_zi-build/pip/_vendor/distlib/compat.pyu   __len__ó  s    u   ChainMap.__len__c             C   s   t  t ƒ  j |  j Œ  ƒ S(   N(   u   iteru   setu   unionu   maps(   u   self(    (    u3   /tmp/pip-zej_zi-build/pip/_vendor/distlib/compat.pyu   __iter__ö  s    u   ChainMap.__iter__c                s    t  ‡  f d d †  |  j Dƒ ƒ S(   Nc             3   s   |  ] } ˆ  | k Vq d  S(   N(    (   u   .0u   m(   u   key(    u3   /tmp/pip-zej_zi-build/pip/_vendor/distlib/compat.pyu	   <genexpr>ú  s    u(   ChainMap.__contains__.<locals>.<genexpr>(   u   anyu   maps(   u   selfu   key(    (   u   keyu3   /tmp/pip-zej_zi-build/pip/_vendor/distlib/compat.pyu   __contains__ù  s    u   ChainMap.__contains__c             C   s   t  |  j ƒ S(   N(   u   anyu   maps(   u   self(    (    u3   /tmp/pip-zej_zi-build/pip/_vendor/distlib/compat.pyu   __bool__ü  s    u   ChainMap.__bool__c             C   s%   d j  |  d j t t |  j ƒ ƒ ƒ S(   Nu   {0.__class__.__name__}({1})u   , (   u   formatu   joinu   mapu   repru   maps(   u   self(    (    u3   /tmp/pip-zej_zi-build/pip/_vendor/distlib/compat.pyu   __repr__ÿ  s    u   ChainMap.__repr__c             G   s   |  t  j | | Œ ƒ S(   u?   Create a ChainMap with a single dict created from the iterable.(   u   dictu   fromkeys(   u   clsu   iterableu   args(    (    u3   /tmp/pip-zej_zi-build/pip/_vendor/distlib/compat.pyu   fromkeys  s    u   ChainMap.fromkeysc             C   s*   |  j  |  j d j ƒ  |  j d d … Œ S(   uH   New ChainMap or subclass with a new copy of maps[0] and refs to maps[1:]i    i   N(   u	   __class__u   mapsu   copy(   u   self(    (    u3   /tmp/pip-zej_zi-build/pip/_vendor/distlib/compat.pyu   copy	  s    u   ChainMap.copyc             C   s   |  j  i  |  j Œ S(   u;   New ChainMap with a new dict followed by all previous maps.(   u	   __class__u   maps(   u   self(    (    u3   /tmp/pip-zej_zi-build/pip/_vendor/distlib/compat.pyu	   new_child  s    u   ChainMap.new_childc             C   s   |  j  |  j d d … Œ  S(   u   New ChainMap from maps[1:].i   N(   u	   __class__u   maps(   u   self(    (    u3   /tmp/pip-zej_zi-build/pip/_vendor/distlib/compat.pyu   parents  s    u   ChainMap.parentsc             C   s   | |  j  d | <d  S(   Ni    (   u   maps(   u   selfu   keyu   value(    (    u3   /tmp/pip-zej_zi-build/pip/_vendor/distlib/compat.pyu   __setitem__  s    u   ChainMap.__setitem__c             C   s@   y |  j  d | =Wn' t k
 r; t d j | ƒ ƒ ‚ Yn Xd  S(   Ni    u(   Key not found in the first mapping: {!r}(   u   mapsu   KeyErroru   format(   u   selfu   key(    (    u3   /tmp/pip-zej_zi-build/pip/_vendor/distlib/compat.pyu   __delitem__  s    u   ChainMap.__delitem__c             C   s:   y |  j  d j ƒ  SWn t k
 r5 t d ƒ ‚ Yn Xd S(   uP   Remove and return an item pair from maps[0]. Raise KeyError is maps[0] is empty.i    u#   No keys found in the first mapping.N(   u   mapsu   popitemu   KeyError(   u   self(    (    u3   /tmp/pip-zej_zi-build/pip/_vendor/distlib/compat.pyu   popitem!  s    u   ChainMap.popitemc             G   sI   y |  j  d j | | Œ SWn' t k
 rD t d j | ƒ ƒ ‚ Yn Xd S(   uW   Remove *key* from maps[0] and return its value. Raise KeyError if *key* not in maps[0].i    u(   Key not found in the first mapping: {!r}N(   u   mapsu   popu   KeyErroru   format(   u   selfu   keyu   args(    (    u3   /tmp/pip-zej_zi-build/pip/_vendor/distlib/compat.pyu   pop(  s    u   ChainMap.popc             C   s   |  j  d j ƒ  d S(   u'   Clear maps[0], leaving maps[1:] intact.i    N(   u   mapsu   clear(   u   self(    (    u3   /tmp/pip-zej_zi-build/pip/_vendor/distlib/compat.pyu   clear/  s    u   ChainMap.clearN(   u   __name__u
   __module__u   __qualname__u   __doc__u   __init__u   __missing__u   __getitem__u   Noneu   getu   __len__u   __iter__u   __contains__u   __bool__u   _recursive_repru   __repr__u   classmethodu   fromkeysu   copyu   __copy__u	   new_childu   propertyu   parentsu   __setitem__u   __delitem__u   popitemu   popu   clear(   u
   __locals__(    (    u3   /tmp/pip-zej_zi-build/pip/_vendor/distlib/compat.pyu   ChainMapÑ  s(   u   ChainMap(   u   cache_from_sourcec             C   sG   |  j  d ƒ s t ‚ | d  k r* t } n  | r9 d } n d } |  | S(   Nu   .pyu   cu   o(   u   endswithu   AssertionErroru   Noneu	   __debug__(   u   pathu   debug_overrideu   suffix(    (    u3   /tmp/pip-zej_zi-build/pip/_vendor/distlib/compat.pyu   cache_from_source6  s    		u   cache_from_source(   u   OrderedDict(   u	   get_ident(   u   KeysViewu
   ValuesViewu	   ItemsViewc             B   sv  |  Ee  Z d  Z d Z d d „  Z e j d d „ Z e j d d „ Z d d	 „  Z d
 d „  Z	 d d „  Z
 d5 d d „ Z d d „  Z d d „  Z d d „  Z d d „  Z d d „  Z d d „  Z d d „  Z e Z e ƒ  Z e d d „ Z d4 d  d! „ Z d4 d" d# „ Z d$ d% „  Z d& d' „  Z e d4 d( d) „ ƒ Z d* d+ „  Z d, d- „  Z  d. d/ „  Z! d0 d1 „  Z" d2 d3 „  Z# d4 S(6   u   OrderedDictu)   Dictionary that remembers insertion orderc             O   sŽ   t  | ƒ d k r+ t d t  | ƒ ƒ ‚ n  y |  j WnA t k
 ry g  |  _ } | | d g | d d … <i  |  _ Yn X|  j | | Ž  d S(   uÑ   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   u$   expected at most 1 arguments, got %dN(   u   lenu	   TypeErroru   _OrderedDict__rootu   AttributeErroru   Noneu   _OrderedDict__mapu   _OrderedDict__update(   u   selfu   argsu   kwdsu   root(    (    u3   /tmp/pip-zej_zi-build/pip/_vendor/distlib/compat.pyu   __init__]  s    u   OrderedDict.__init__c             C   s\   | |  k rH |  j  } | d } | | | g | d <| d <|  j | <n  | |  | | ƒ d S(   u!   od.__setitem__(i, y) <==> od[i]=yi    i   N(   u   _OrderedDict__rootu   _OrderedDict__map(   u   selfu   keyu   valueu   dict_setitemu   rootu   last(    (    u3   /tmp/pip-zej_zi-build/pip/_vendor/distlib/compat.pyu   __setitem__m  s
    	
)u   OrderedDict.__setitem__c             C   s@   | |  | ƒ |  j  j | ƒ \ } } } | | d <| | d <d S(   u    od.__delitem__(y) <==> del od[y]i   i    N(   u   _OrderedDict__mapu   pop(   u   selfu   keyu   dict_delitemu	   link_prevu	   link_next(    (    u3   /tmp/pip-zej_zi-build/pip/_vendor/distlib/compat.pyu   __delitem__w  s    
u   OrderedDict.__delitem__c             c   s=   |  j  } | d } x# | | k	 r8 | d V| d } q Wd S(   u   od.__iter__() <==> iter(od)i   i   N(   u   _OrderedDict__root(   u   selfu   rootu   curr(    (    u3   /tmp/pip-zej_zi-build/pip/_vendor/distlib/compat.pyu   __iter__€  s
    	
	u   OrderedDict.__iter__c             c   s=   |  j  } | d } x# | | k	 r8 | d V| d } q Wd S(   u#   od.__reversed__() <==> reversed(od)i    i   N(   u   _OrderedDict__root(   u   selfu   rootu   curr(    (    u3   /tmp/pip-zej_zi-build/pip/_vendor/distlib/compat.pyu   __reversed__ˆ  s
    	
	u   OrderedDict.__reversed__c             C   s€   yZ x$ |  j  j ƒ  D] } | d d … =q W|  j } | | d g | d d … <|  j  j ƒ  Wn t k
 rn Yn Xt j |  ƒ d S(   u.   od.clear() -> None.  Remove all items from od.N(   u   _OrderedDict__mapu
   itervaluesu   _OrderedDict__rootu   Noneu   clearu   AttributeErroru   dict(   u   selfu   nodeu   root(    (    u3   /tmp/pip-zej_zi-build/pip/_vendor/distlib/compat.pyu   clear  s    	u   OrderedDict.clearc             C   s§   |  s t  d ƒ ‚ n  |  j } | rO | d } | d } | | d <| | d <n( | d } | d } | | d <| | d <| d } |  j | =t j |  | ƒ } | | f S(   u¡   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.

            u   dictionary is emptyi    i   i   (   u   KeyErroru   _OrderedDict__rootu   _OrderedDict__mapu   dictu   pop(   u   selfu   lastu   rootu   linku	   link_prevu	   link_nextu   keyu   value(    (    u3   /tmp/pip-zej_zi-build/pip/_vendor/distlib/compat.pyu   popitemœ  s     	








u   OrderedDict.popitemc             C   s
   t  |  ƒ S(   u   od.keys() -> list of keys in od(   u   list(   u   self(    (    u3   /tmp/pip-zej_zi-build/pip/_vendor/distlib/compat.pyu   keysµ  s    u   OrderedDict.keysc                s   ‡  f d d †  ˆ  Dƒ S(   u#   od.values() -> list of values in odc                s   g  |  ] } ˆ  | ‘ q S(    (    (   u   .0u   key(   u   self(    u3   /tmp/pip-zej_zi-build/pip/_vendor/distlib/compat.pyu
   <listcomp>»  s   	 u&   OrderedDict.values.<locals>.<listcomp>(    (   u   self(    (   u   selfu3   /tmp/pip-zej_zi-build/pip/_vendor/distlib/compat.pyu   values¹  s    u   OrderedDict.valuesc                s   ‡  f d d †  ˆ  Dƒ S(   u.   od.items() -> list of (key, value) pairs in odc                s    g  |  ] } | ˆ  | f ‘ q S(    (    (   u   .0u   key(   u   self(    u3   /tmp/pip-zej_zi-build/pip/_vendor/distlib/compat.pyu
   <listcomp>¿  s   	 u%   OrderedDict.items.<locals>.<listcomp>(    (   u   self(    (   u   selfu3   /tmp/pip-zej_zi-build/pip/_vendor/distlib/compat.pyu   items½  s    u   OrderedDict.itemsc             C   s
   t  |  ƒ S(   u0   od.iterkeys() -> an iterator over the keys in od(   u   iter(   u   self(    (    u3   /tmp/pip-zej_zi-build/pip/_vendor/distlib/compat.pyu   iterkeysÁ  s    u   OrderedDict.iterkeysc             c   s   x |  D] } |  | Vq Wd S(   u2   od.itervalues -> an iterator over the values in odN(    (   u   selfu   k(    (    u3   /tmp/pip-zej_zi-build/pip/_vendor/distlib/compat.pyu
   itervaluesÅ  s    u   OrderedDict.itervaluesc             c   s$   x |  D] } | |  | f Vq Wd S(   u=   od.iteritems -> an iterator over the (key, value) items in odN(    (   u   selfu   k(    (    u3   /tmp/pip-zej_zi-build/pip/_vendor/distlib/compat.pyu	   iteritemsÊ  s    u   OrderedDict.iteritemsc              O   s&  t  |  ƒ d k r. t d t  |  ƒ f ƒ ‚ n |  sC t d ƒ ‚ n  |  d } f  } 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(   u—  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   u8   update() takes at most 2 positional arguments (%d given)u,   update() takes at least 1 argument (0 given)i    i   u   keysN(   u   lenu	   TypeErroru
   isinstanceu   dictu   hasattru   keysu   items(   u   argsu   kwdsu   selfu   otheru   keyu   value(    (    u3   /tmp/pip-zej_zi-build/pip/_vendor/distlib/compat.pyu   updateÏ  s&    	
u   OrderedDict.updatec             C   sC   | |  k r! |  | } |  | =| S| |  j  k r? t | ƒ ‚ n  | S(   u±   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.

            (   u   _OrderedDict__markeru   KeyError(   u   selfu   keyu   defaultu   result(    (    u3   /tmp/pip-zej_zi-build/pip/_vendor/distlib/compat.pyu   popò  s    
u   OrderedDict.popc             C   s"   | |  k r |  | S| |  | <| S(   uD   od.setdefault(k[,d]) -> od.get(k,d), also set od[k]=d if k not in od(    (   u   selfu   keyu   default(    (    u3   /tmp/pip-zej_zi-build/pip/_vendor/distlib/compat.pyu
   setdefaultÿ  s    
u   OrderedDict.setdefaultc             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(   u   od.__repr__() <==> repr(od)u   ...i   u   %s()u   %s(%r)N(   u   idu
   _get_identu	   __class__u   __name__u   items(   u   selfu   _repr_runningu   call_key(    (    u3   /tmp/pip-zej_zi-build/pip/_vendor/distlib/compat.pyu   __repr__  s     	
u   OrderedDict.__repr__c                s~   ‡  f d d †  ˆ  Dƒ } t  ˆ  ƒ j ƒ  } x' t  t ƒ  ƒ D] } | j | d ƒ q; W| rn ˆ  j | f | f Sˆ  j | f f S(   u%   Return state information for picklingc                s    g  |  ] } | ˆ  | g ‘ q S(    (    (   u   .0u   k(   u   self(    u3   /tmp/pip-zej_zi-build/pip/_vendor/distlib/compat.pyu
   <listcomp>  s   	 u*   OrderedDict.__reduce__.<locals>.<listcomp>N(   u   varsu   copyu   OrderedDictu   popu   Noneu	   __class__(   u   selfu   itemsu	   inst_dictu   k(    (   u   selfu3   /tmp/pip-zej_zi-build/pip/_vendor/distlib/compat.pyu
   __reduce__  s    u   OrderedDict.__reduce__c             C   s   |  j  |  ƒ S(   u!   od.copy() -> a shallow copy of od(   u	   __class__(   u   self(    (    u3   /tmp/pip-zej_zi-build/pip/_vendor/distlib/compat.pyu   copy  s    u   OrderedDict.copyc             C   s(   |  ƒ  } x | D] } | | | <q W| S(   uˆ   OD.fromkeys(S[, v]) -> New ordered dictionary with keys from S
            and values equal to v (which defaults to None).

            (    (   u   clsu   iterableu   valueu   du   key(    (    u3   /tmp/pip-zej_zi-build/pip/_vendor/distlib/compat.pyu   fromkeys"  s    	u   OrderedDict.fromkeysc             C   sM   t  | t ƒ r= t |  ƒ t | ƒ k o< |  j ƒ  | j ƒ  k St j |  | ƒ S(   u›   od.__eq__(y) <==> od==y.  Comparison to another OD is order-sensitive
            while comparison to a regular mapping is order-insensitive.

            (   u
   isinstanceu   OrderedDictu   lenu   itemsu   dictu   __eq__(   u   selfu   other(    (    u3   /tmp/pip-zej_zi-build/pip/_vendor/distlib/compat.pyu   __eq__-  s    .u   OrderedDict.__eq__c             C   s   |  | k S(   N(    (   u   selfu   other(    (    u3   /tmp/pip-zej_zi-build/pip/_vendor/distlib/compat.pyu   __ne__6  s    u   OrderedDict.__ne__c             C   s
   t  |  ƒ S(   u@   od.viewkeys() -> a set-like object providing a view on od's keys(   u   KeysView(   u   self(    (    u3   /tmp/pip-zej_zi-build/pip/_vendor/distlib/compat.pyu   viewkeys;  s    u   OrderedDict.viewkeysc             C   s
   t  |  ƒ S(   u<   od.viewvalues() -> an object providing a view on od's values(   u
   ValuesView(   u   self(    (    u3   /tmp/pip-zej_zi-build/pip/_vendor/distlib/compat.pyu
   viewvalues?  s    u   OrderedDict.viewvaluesc             C   s
   t  |  ƒ S(   uB   od.viewitems() -> a set-like object providing a view on od's items(   u	   ItemsView(   u   self(    (    u3   /tmp/pip-zej_zi-build/pip/_vendor/distlib/compat.pyu	   viewitemsC  s    u   OrderedDict.viewitemsNT($   u   __name__u
   __module__u   __qualname__u   __doc__u   __init__u   dictu   __setitem__u   __delitem__u   __iter__u   __reversed__u   clearu   Trueu   popitemu   keysu   valuesu   itemsu   iterkeysu
   itervaluesu	   iteritemsu   updateu   _OrderedDict__updateu   objectu   _OrderedDict__markeru   popu   Noneu
   setdefaultu   __repr__u
   __reduce__u   copyu   classmethodu   fromkeysu   __eq__u   __ne__u   viewkeysu
   viewvaluesu	   viewitems(   u
   __locals__(    (    u3   /tmp/pip-zej_zi-build/pip/_vendor/distlib/compat.pyu   OrderedDictQ  s:   
		

	u   OrderedDict(   u   BaseConfiguratoru   valid_identu   ^[a-z_][a-z0-9_]*$c             C   s,   t  j |  ƒ } | s( t d |  ƒ ‚ n  d S(   Nu!   Not a valid Python identifier: %rT(   u
   IDENTIFIERu   matchu
   ValueErroru   True(   u   su   m(    (    u3   /tmp/pip-zej_zi-build/pip/_vendor/distlib/compat.pyu   valid_identM  s    u   valid_identc             B   s5   |  Ee  Z d  Z d Z d d „  Z d d d „ Z d S(   u   ConvertingDictu    A converting dictionary wrapper.c             C   sq   t  j |  | ƒ } |  j j | ƒ } | | k	 rm | |  | <t | ƒ t t t f k rm |  | _ | | _	 qm n  | S(   N(
   u   dictu   __getitem__u   configuratoru   convertu   typeu   ConvertingDictu   ConvertingListu   ConvertingTupleu   parentu   key(   u   selfu   keyu   valueu   result(    (    u3   /tmp/pip-zej_zi-build/pip/_vendor/distlib/compat.pyu   __getitem__`  s    
	u   ConvertingDict.__getitem__c             C   st   t  j |  | | ƒ } |  j j | ƒ } | | k	 rp | |  | <t | ƒ t t t f k rp |  | _ | | _	 qp n  | S(   N(
   u   dictu   getu   configuratoru   convertu   typeu   ConvertingDictu   ConvertingListu   ConvertingTupleu   parentu   key(   u   selfu   keyu   defaultu   valueu   result(    (    u3   /tmp/pip-zej_zi-build/pip/_vendor/distlib/compat.pyu   getl  s    
	u   ConvertingDict.getN(   u   __name__u
   __module__u   __qualname__u   __doc__u   __getitem__u   Noneu   get(   u
   __locals__(    (    u3   /tmp/pip-zej_zi-build/pip/_vendor/distlib/compat.pyu   ConvertingDict]  s   u   ConvertingDictc             C   sj   t  j |  | | ƒ } |  j j | ƒ } | | k	 rf t | ƒ t t t f k rf |  | _ | | _	 qf n  | S(   N(
   u   dictu   popu   configuratoru   convertu   typeu   ConvertingDictu   ConvertingListu   ConvertingTupleu   parentu   key(   u   selfu   keyu   defaultu   valueu   result(    (    u3   /tmp/pip-zej_zi-build/pip/_vendor/distlib/compat.pyu   popx  s    	u   popc             B   s5   |  Ee  Z d  Z d Z d d „  Z d d d „ Z d S(	   u   ConvertingListu   A converting list wrapper.c             C   sq   t  j |  | ƒ } |  j j | ƒ } | | k	 rm | |  | <t | ƒ t t t f k rm |  | _ | | _	 qm n  | S(   N(
   u   listu   __getitem__u   configuratoru   convertu   typeu   ConvertingDictu   ConvertingListu   ConvertingTupleu   parentu   key(   u   selfu   keyu   valueu   result(    (    u3   /tmp/pip-zej_zi-build/pip/_vendor/distlib/compat.pyu   __getitem__„  s    
	u   ConvertingList.__getitem__i   c             C   s^   t  j |  | ƒ } |  j j | ƒ } | | k	 rZ t | ƒ t t t f k rZ |  | _ qZ n  | S(   N(	   u   listu   popu   configuratoru   convertu   typeu   ConvertingDictu   ConvertingListu   ConvertingTupleu   parent(   u   selfu   idxu   valueu   result(    (    u3   /tmp/pip-zej_zi-build/pip/_vendor/distlib/compat.pyu   pop  s    u   ConvertingList.popNiÿÿÿÿ(   u   __name__u
   __module__u   __qualname__u   __doc__u   __getitem__u   pop(   u
   __locals__(    (    u3   /tmp/pip-zej_zi-build/pip/_vendor/distlib/compat.pyu   ConvertingList‚  s   u   ConvertingListc             B   s&   |  Ee  Z d  Z d Z d d „  Z d S(   u   ConvertingTupleu   A converting tuple wrapper.c             C   sg   t  j |  | ƒ } |  j j | ƒ } | | k	 rc t | ƒ t t t f k rc |  | _ | | _	 qc n  | S(   N(
   u   tupleu   __getitem__u   configuratoru   convertu   typeu   ConvertingDictu   ConvertingListu   ConvertingTupleu   parentu   key(   u   selfu   keyu   valueu   result(    (    u3   /tmp/pip-zej_zi-build/pip/_vendor/distlib/compat.pyu   __getitem__›  s    	u   ConvertingTuple.__getitem__N(   u   __name__u
   __module__u   __qualname__u   __doc__u   __getitem__(   u
   __locals__(    (    u3   /tmp/pip-zej_zi-build/pip/_vendor/distlib/compat.pyu   ConvertingTuple™  s   u   ConvertingTuplec             B   sÙ   |  Ee  Z d  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 d „  Z d d „  Z d d „  Z d d „  Z d d „  Z d d „  Z d d „  Z d S(   u   BaseConfiguratoruQ   
        The configurator base class which defines some useful defaults.
        u%   ^(?P<prefix>[a-z]+)://(?P<suffix>.*)$u   ^\s*(\w+)\s*u   ^\.\s*(\w+)\s*u   ^\[\s*(\w+)\s*\]\s*u   ^\d+$u   ext_convertu   extu   cfg_convertu   cfgc             C   s   t  | ƒ |  _ |  |  j _ d  S(   N(   u   ConvertingDictu   configu   configurator(   u   selfu   config(    (    u3   /tmp/pip-zej_zi-build/pip/_vendor/distlib/compat.pyu   __init__¹  s    u   BaseConfigurator.__init__c       	      C   sü   | j  d ƒ } | j d ƒ } yz |  j | ƒ } x` | D]X } | d | 7} y t | | ƒ } Wq7 t k
 rŽ |  j | ƒ t | | ƒ } Yq7 Xq7 W| SWn] t k
 r÷ t j ƒ  d d … \ } } t d | | f ƒ } | | | _	 | _
 | ‚ Yn Xd S(   ul   
            Resolve strings to objects using standard import and attribute
            syntax.
            u   .i    i   Nu   Cannot resolve %r: %s(   u   splitu   popu   importeru   getattru   AttributeErroru   ImportErroru   sysu   exc_infou
   ValueErroru	   __cause__u   __traceback__(	   u   selfu   su   nameu   usedu   foundu   fragu   eu   tbu   v(    (    u3   /tmp/pip-zej_zi-build/pip/_vendor/distlib/compat.pyu   resolve½  s"    u   BaseConfigurator.resolvec             C   s   |  j  | ƒ S(   u*   Default converter for the ext:// protocol.(   u   resolve(   u   selfu   value(    (    u3   /tmp/pip-zej_zi-build/pip/_vendor/distlib/compat.pyu   ext_convertÔ  s    u   BaseConfigurator.ext_convertc             C   s\  | } |  j  j | ƒ } | d k r7 t d | ƒ ‚ n!| | j ƒ  d … } |  j | j ƒ  d } xñ | rW|  j j | ƒ } | rœ | | j ƒ  d } nƒ |  j j | ƒ } | r| j ƒ  d } |  j	 j | ƒ sã | | } qy t
 | ƒ } | | } Wqt k
 r| | } YqXn  | r>| | j ƒ  d … } qg t d | | f ƒ ‚ qg W| S(   u*   Default converter for the cfg:// protocol.u   Unable to convert %rNi    u   Unable to convert %r at %r(   u   WORD_PATTERNu   matchu   Noneu
   ValueErroru   endu   configu   groupsu   DOT_PATTERNu   INDEX_PATTERNu   DIGIT_PATTERNu   intu	   TypeError(   u   selfu   valueu   restu   mu   du   idxu   n(    (    u3   /tmp/pip-zej_zi-build/pip/_vendor/distlib/compat.pyu   cfg_convertØ  s2    	u   BaseConfigurator.cfg_convertc             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(   uù   
            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.
            u   prefixu   suffixN(   u
   isinstanceu   ConvertingDictu   dictu   configuratoru   ConvertingListu   listu   ConvertingTupleu   tupleu   string_typesu   CONVERT_PATTERNu   matchu	   groupdictu   value_convertersu   getu   Noneu   getattr(   u   selfu   valueu   mu   du   prefixu	   converteru   suffix(    (    u3   /tmp/pip-zej_zi-build/pip/_vendor/distlib/compat.pyu   convertú  s*    

u   BaseConfigurator.convertc                s¤   ˆ  j  d ƒ } t | ƒ s- |  j | ƒ } n  ˆ  j  d d ƒ } t ‡  f d d †  ˆ  Dƒ ƒ } | |   } | r  x- | j ƒ  D] \ } } t | | | ƒ q} Wn  | S(   u1   Configure an object with a user-supplied factory.u   ()u   .c                s,   g  |  ]" } t  | ƒ r | ˆ  | f ‘ q S(    (   u   valid_ident(   u   .0u   k(   u   config(    u3   /tmp/pip-zej_zi-build/pip/_vendor/distlib/compat.pyu
   <listcomp>  s   	 u5   BaseConfigurator.configure_custom.<locals>.<listcomp>N(   u   popu   callableu   resolveu   Noneu   dictu   itemsu   setattr(   u   selfu   configu   cu   propsu   kwargsu   resultu   nameu   value(    (   u   configu3   /tmp/pip-zej_zi-build/pip/_vendor/distlib/compat.pyu   configure_custom  s    u!   BaseConfigurator.configure_customc             C   s"   t  | t ƒ r t | ƒ } n  | S(   u0   Utility function which converts lists to tuples.(   u
   isinstanceu   listu   tuple(   u   selfu   value(    (    u3   /tmp/pip-zej_zi-build/pip/_vendor/distlib/compat.pyu   as_tuple$  s    u   BaseConfigurator.as_tupleN(   u   __name__u
   __module__u   __qualname__u   __doc__u   reu   compileu   CONVERT_PATTERNu   WORD_PATTERNu   DOT_PATTERNu   INDEX_PATTERNu   DIGIT_PATTERNu   value_convertersu   staticmethodu
   __import__u   importeru   __init__u   resolveu   ext_convertu   cfg_convertu   convertu   configure_customu   as_tuple(   u
   __locals__(    (    u3   /tmp/pip-zej_zi-build/pip/_vendor/distlib/compat.pyu   BaseConfigurator¥  s"   
"u   BaseConfigurator(   i   i   (‘   u
   __future__u   absolute_importu   osu   reu   sysu   version_infou   StringIOu
   basestringu   string_typesu   unicodeu	   text_typeu   typesu   FileTypeu	   file_typeu   __builtin__u   builtinsu   ConfigParseru   configparseru	   _backportu   shutilu   urlparseu
   urlunparseu   urljoinu   urlsplitu
   urlunsplitu   urllibu   urlretrieveu   quoteu   _quoteu   unquoteu   url2pathnameu   pathname2urlu   ContentTooShortErroru	   splittypeu   urllib2u   Requestu   urlopenu   URLErroru	   HTTPErroru   HTTPBasicAuthHandleru   HTTPPasswordMgru   HTTPSHandleru   HTTPHandleru   HTTPRedirectHandleru   build_openeru   httplibu	   xmlrpclibu   Queueu   queueu
   HTMLParseru   htmlentitydefsu	   raw_inputu	   itertoolsu   ifilteru   filteru   ifilterfalseu   filterfalseu   Noneu	   _userprogu	   splituseru   iou   stru   TextIOWrapperu   urllib.parseu   urllib.requestu   urllib.erroru   http.clientu   clientu   requestu   xmlrpc.clientu   html.parseru   html.entitiesu   entitiesu   inputu   sslu   match_hostnameu   CertificateErroru   ImportErroru
   ValueErroru   _dnsname_to_patu   SimpleNamespaceu	   Containeru   objectu   whichu   F_OKu   X_OKu   zipfileu   ZipFileu   BaseZipFileu   hasattru
   ZipExtFileu   BaseZipExtFileu   platformu   python_implementationu	   sysconfigu   callableu	   NameErroru   collectionsu   Callableu   fsencodeu   fsdecodeu   AttributeErroru   getfilesystemencodingu   _fsencodingu	   _fserrorsu   tokenizeu   detect_encodingu   codecsu   BOM_UTF8u   lookupu   compileu	   cookie_reu   _get_normal_nameu   htmlu   escapeu   cgiu   unescapeu   ChainMapu   MutableMappingu   reprlibu   recursive_repru   _recursive_repru   impu   cache_from_sourceu   OrderedDictu   threadu	   get_identu
   _get_identu   dummy_threadu   _abcollu   KeysViewu
   ValuesViewu	   ItemsViewu   dictu   logging.configu   BaseConfiguratoru   valid_identu   Iu
   IDENTIFIERu   ConvertingDictu   popu   listu   ConvertingListu   tupleu   ConvertingTuple(    (    (    u3   /tmp/pip-zej_zi-build/pip/_vendor/distlib/compat.pyu   <module>   s  	(4F	@L)!A	

				[b
 ö
