ó
^\kdc           @  s5  d  d l  m Z d  d l Z d  d l Z d  d l Z d  d l Z d  d l m Z d  d l	 Z	 d  d l
 Z
 d  d l Z d  d l Z d  d l Z d  d l Z d  d l Z d  d l Z d  d l Z d  d l Z d  d l Z d d l m Z m Z d d l m Z m Z m Z m Z m Z d d l m Z d d l m  Z  m! Z! d d	 l" m# Z# m$ Z$ m% Z% m& Z& m' Z' m( Z( m) Z) e j* e+ ƒ Z, e- e d
 ƒ r“d Z. n9 e j/ j0 d ƒ r®d Z. n e j/ d k rÆd Z. n d Z. e j1 d ƒ Z2 e2 röd e j3 d  Z2 n  d e2 Z4 e. e2 Z5 e j" j6 ƒ  j7 d d ƒ j7 d d ƒ Z8 e j1 d ƒ Z9 e9 oRe9 j0 d ƒ rje9 j7 d d ƒ Z9 n d Z9 e j: d e j; e j< Bƒ Z= e j: d e j; e j< Bƒ Z> e j: d ƒ Z? e j@ d k rÒd „  ZA n	 d  „  ZA d! eB f d" „  ƒ  YZC eC ƒ  ZD d# eB f d$ „  ƒ  YZE d% „  ZF eF ƒ  ZG [F eH d& „ ZI d S('   iÿÿÿÿ(   t   unicode_literalsN(   t   message_from_filei   (   t   __version__t   DistlibException(   t	   sysconfigt   ZipFilet   fsdecodet	   text_typet   filter(   t   InstalledDistribution(   t   Metadatat   METADATA_FILENAME(   t   FileOperatort   convert_patht	   CSVReadert	   CSVWritert   cached_propertyt   get_cache_baset   read_exportsu   pypy_version_infou   ppu   javau   jyu   cliu   ipu   cpu   py_version_nodotu   %s%si   u   pyu   -u   _u   .u   SOABIu   cpython-u   noneur   
(?P<nm>[^-]+)
-(?P<vn>\d+[^-]*)
(-(?P<bn>\d+[^-]*))?
-(?P<py>\w+\d+(\.\w+\d+)*)
-(?P<bi>\w+)
-(?P<ar>\w+)
\.whl$
u7   
(?P<nm>[^-]+)
-(?P<vn>\d+[^-]*)
(-(?P<bn>\d+[^-]*))?$
s   \s*#![^\r\n]*u   /c         C  s   |  S(   N(    (   t   o(    (    s@   /var/www/testScraper/venv/build/pip/pip/_vendor/distlib/wheel.pyt   <lambda>O   s    c         C  s   |  j  t j d ƒ S(   Nu   /(   t   replacet   ost   sep(   R   (    (    s@   /var/www/testScraper/venv/build/pip/pip/_vendor/distlib/wheel.pyR   Q   s    t   Mounterc           B  s8   e  Z d  „  Z d „  Z d „  Z d d „ Z d „  Z RS(   c         C  s   i  |  _  i  |  _ d  S(   N(   t   impure_wheelst   libs(   t   self(    (    s@   /var/www/testScraper/venv/build/pip/pip/_vendor/distlib/wheel.pyt   __init__U   s    	c         C  s!   | |  j  | <|  j j | ƒ d  S(   N(   R   R   t   update(   R   t   pathnamet
   extensions(    (    s@   /var/www/testScraper/venv/build/pip/pip/_vendor/distlib/wheel.pyt   addY   s    c         C  sI   |  j  j | ƒ } x0 | D]( \ } } | |  j k r |  j | =q q Wd  S(   N(   R   t   popR   (   R   R   R   t   kt   v(    (    s@   /var/www/testScraper/venv/build/pip/pip/_vendor/distlib/wheel.pyt   remove]   s    c         C  s"   | |  j  k r |  } n d  } | S(   N(   R   t   None(   R   t   fullnamet   patht   result(    (    s@   /var/www/testScraper/venv/build/pip/pip/_vendor/distlib/wheel.pyt   find_modulec   s    	c         C  s›   | t  j k r t  j | } nx | |  j k rA t d | ƒ ‚ n  t j | |  j | ƒ } |  | _ | j d d ƒ } t | ƒ d k r— | d | _	 n  | S(   Nu   unable to find extension for %su   .i   i    (
   t   syst   modulesR   t   ImportErrort   impt   load_dynamict
   __loader__t   rsplitt   lent   __package__(   R   R&   R(   t   parts(    (    s@   /var/www/testScraper/venv/build/pip/pip/_vendor/distlib/wheel.pyt   load_modulej   s    	N(   t   __name__t
   __module__R   R    R$   R%   R)   R4   (    (    (    s@   /var/www/testScraper/venv/build/pip/pip/_vendor/distlib/wheel.pyR   T   s
   			t   Wheelc           B  sÅ   e  Z d  Z d Z d Z d e e d „ Z e d „  ƒ Z	 e d „  ƒ Z
 e d „  ƒ Z e d „  ƒ Z d „  Z d d	 „ Z d
 „  Z d d d „ Z d „  Z d „  Z d „  Z e d „ Z d „  Z RS(   u@   
    Class to build and install from Wheel files (PEP 427).
    i   u   sha256c         C  s¸  | |  _  | |  _ d |  _ t g |  _ d g |  _ d g |  _ t j ƒ  |  _	 | d k r{ d |  _ d |  _ |  j |  _ n9t j | ƒ } | rÕ | j d ƒ } | d |  _ | d |  _ | d |  _ |  j |  _ nß t j j | ƒ \ } } t j | ƒ } | st d	 | ƒ ‚ n  | r3t j j | ƒ |  _	 n  | |  _ | j d ƒ } | d |  _ | d |  _ | d |  _ | d
 j d ƒ |  _ | d j d ƒ |  _ | d j d ƒ |  _ d S(   uB   
        Initialise an instance using a (valid) filename.
        u    u   noneu   anyu   dummyu   0.1u   nmu   vnu   bnu   Invalid name or filename: %ru   pyu   .u   biu   arN(   t   signt   verifyt   buildvert   PYVERt   pyvert   abit   archR   t   getcwdt   dirnameR%   t   namet   versiont   filenamet	   _filenamet   NAME_VERSION_REt   matcht	   groupdictR'   t   splitt   FILENAME_RER   t   abspath(   R   RC   R8   R9   t   mt   infoR@   (    (    s@   /var/www/testScraper/venv/build/pip/pip/_vendor/distlib/wheel.pyR   ‚   sB    						c         C  su   |  j  r d |  j  } n d } d j |  j ƒ } d j |  j ƒ } d j |  j ƒ } d |  j |  j | | | | f S(   uJ   
        Build and return a filename from the various components.
        u   -u    u   .u   %s-%s%s-%s-%s-%s.whl(   R:   t   joinR<   R=   R>   RA   RB   (   R   R:   R<   R=   R>   (    (    s@   /var/www/testScraper/venv/build/pip/pip/_vendor/distlib/wheel.pyRC   ª   s    	c         c  sN   xG |  j  D]< } x3 |  j D]( } x |  j D] } | | | f Vq* Wq Wq
 Wd  S(   N(   R<   R=   R>   (   R   R<   R=   R>   (    (    s@   /var/www/testScraper/venv/build/pip/pip/_vendor/distlib/wheel.pyt   tags¹   s    c   
      C  sÓ   t  j j |  j |  j ƒ } d |  j |  j f } d | } t j d ƒ } t	 j | t
 ƒ } t | d ƒ �b } y7 | j | ƒ �" } | | ƒ } t d | ƒ }	 Wd  QXWn! t k
 rÈ t d t
 ƒ ‚ n XWd  QX|	 S(   Nu   %s-%su   %s.dist-infou   utf-8u   rt   fileobju$   Invalid wheel, because %s is missing(   R   R'   RM   R@   RC   RA   RB   t   codecst	   getreadert	   posixpathR   R   t   openR
   t   KeyErrort
   ValueError(
   R   R   t   name_vert   info_dirt   wrappert   metadata_filenamet   zft   bft   wfR(   (    (    s@   /var/www/testScraper/venv/build/pip/pip/_vendor/distlib/wheel.pyt   metadataÀ   s    
c      
   C  s´   t  j j |  j |  j ƒ } d |  j |  j f } d | } t j | d ƒ } t j	 d ƒ } t
 | d ƒ �C } | j | ƒ �+ } | | ƒ } t | ƒ }	 t |	 ƒ }
 Wd  QXWd  QX|
 S(   Nu   %s-%su   %s.dist-infou   WHEELu   utf-8u   r(   R   R'   RM   R@   RC   RA   RB   RR   RP   RQ   R   RS   R   t   dict(   R   R   RV   RW   RY   RX   RZ   R[   R\   t   messageR(   (    (    s@   /var/www/testScraper/venv/build/pip/pip/_vendor/distlib/wheel.pyRL   Ñ   s    
c         C  s£   t  j | ƒ } | r, d | | j ƒ  } ns | j d ƒ } | j d ƒ } | d k  sb | | k rk d } n& | | | d !d k r‹ d } n d } d | | } | S(   Ns   #!pythons   s   
i    i   s   
(   t
   SHEBANG_RERF   t   endt   find(   R   t   dataRK   t   crt   lft   term(    (    s@   /var/www/testScraper/venv/build/pip/pip/_vendor/distlib/wheel.pyt   process_shebangß   s    		c         C  sŒ   | d  k r |  j } n  y t t | ƒ } Wn! t k
 rN t d | ƒ ‚ n X| | ƒ j ƒ  } t j | ƒ j	 d ƒ j
 d ƒ } | | f S(   Nu   Unsupported hash algorithm: %rt   =u   ascii(   R%   t	   hash_kindt   getattrt   hashlibt   AttributeErrorR   t   digestt   base64t   urlsafe_b64encodet   rstript   decode(   R   Rc   Ri   t   hasherR(   (    (    s@   /var/www/testScraper/venv/build/pip/pip/_vendor/distlib/wheel.pyt   get_hashð   s    !c         C  sh   t  | ƒ �V } x | D] } | j | ƒ q Wt t j j | | ƒ ƒ } | j | d d f ƒ Wd  QXd  S(   Nu    (   R   t   writerowt   to_posixR   R'   t   relpath(   R   t   recordst   record_patht   baset   writert   rowt   p(    (    s@   /var/www/testScraper/venv/build/pip/pip/_vendor/distlib/wheel.pyt   write_recordû   s
    c   &        s  | d k r i  } n  t t ‡  f d †  d& ƒ ƒ d } | d k rg d } t g } t g } t g } n! d } t g } d g } d g } | j d	 | ƒ |  _ | j d
 | ƒ |  _	 | j d | ƒ |  _
 ˆ  | }	 d |  j |  j f }
 d |
 } d |
 } g  } xKd' D]C} | ˆ  k r qn  ˆ  | } t j j | ƒ rxt j | ƒ D]ø \ } } } xæ | D]Þ } t t j j | | ƒ ƒ } t j j | | ƒ } t t j j | | | ƒ ƒ } | j | | f ƒ | d k rb| j d ƒ rbt | d ƒ � } | j ƒ  } Wd QX|  j | ƒ } t | d ƒ � } | j | ƒ Wd QXqbqbWqLWqqW|	 } d } xt j | ƒ D]÷ \ } } } | | k róxU t | ƒ D]G \ } } t | ƒ } | j d ƒ r“t j j | | ƒ } | | =Pq“q“W| sót d ƒ ‚ n  xl | D]d } t | ƒ j d( ƒ rqún  t j j | | ƒ } t t j j | | ƒ ƒ } | j | | f ƒ qúWqkWt j | ƒ } xf | D]^ } | d) k r|t t j j | | ƒ ƒ } t t j j | | ƒ ƒ } | j | | f ƒ q|q|Wd | pí|  j d t d | g } x4 |  j  D]) \ } } } | j d  | | | f ƒ qWt j j | d! ƒ } t | d" ƒ � } | j d# j | ƒ ƒ Wd QXt t j j | d! ƒ ƒ } | j | | f ƒ g  }  t! t" |  j# ƒ }! xs | D]k \ } } t | d ƒ � } | j ƒ  } Wd QXd$ |  j$ | ƒ }" t j j% | ƒ }# |  j | |" |# f ƒ qÉWt j j | d ƒ } |  j& |  | |	 ƒ t t j j | d ƒ ƒ } | j | | f ƒ t j j |  j' |  j( ƒ }$ t) |$ d" t* j+ ƒ �A }% x7 | D]/ \ } } t, j- d% | | ƒ |% j | | ƒ qÈWWd QX|$ S(*   u‰   
        Build a wheel from files in specified paths, and use any specified tags
        when determining the name of the wheel.
        c           s
   |  ˆ  k S(   N(    (   R   (   t   paths(    s@   /var/www/testScraper/venv/build/pip/pip/_vendor/distlib/wheel.pyR   
  s    u   purelibu   platlibi    u   falseu   trueu   noneu   anyu   pyveru   abiu   archu   %s-%su   %s.datau   %s.dist-infou   datau   headersu   scriptsu   .exeu   rbNu   wbu
   .dist-infou(   .dist-info directory expected, not foundu   .pycu   .pyou   RECORDu	   INSTALLERu   SHAREDu   Wheel-Version: %d.%du   Generator: distlib %su   Root-Is-Purelib: %su   Tag: %s-%s-%su   WHEELu   wu   
u   %s=%su   Wrote %s to %s in wheel(   u   purelibu   platlib(   u   datau   headersu   scripts(   u   .pycu   .pyo(   u   RECORDu	   INSTALLERu   SHARED(.   R%   t   listR   t   IMPVERt   ABIt   ARCHR;   t   getR<   R=   R>   RA   RB   R   R'   t   isdirt   walkR   RM   Rv   Ru   t   appendt   endswithRS   t   readRg   t   writet	   enumeratet   AssertionErrort   listdirt   wheel_versionR   RN   Rj   Rk   Ri   Rs   t   getsizeR}   R@   RC   R   t   zipfilet   ZIP_DEFLATEDt   loggert   debug(&   R   R~   RN   R�   t   libkeyt   is_puret   default_pyvert   default_abit   default_archt   libdirRV   t   data_dirRW   t   archive_pathst   keyR'   t   roott   dirst   filest   fnR|   t   rpt   apt   fRc   t   distinfot   it   dnt   wheel_metadataR<   R=   R>   Rw   Rr   Rm   t   sizeR   RZ   (    (   R~   s@   /var/www/testScraper/venv/build/pip/pip/_vendor/distlib/wheel.pyt   build  s°    	"					



%c   C      K  s‡	  | j  } | j d ƒ } | j d t ƒ } t j j |  j |  j ƒ } d |  j |  j	 f } d | }	 d | }
 t
 j |
 t ƒ } t
 j |
 d ƒ } t
 j |
 d ƒ } t j d ƒ } t | d	 ƒ �¾} | j | ƒ � } | | ƒ } t | ƒ } Wd
 QX| d j d d ƒ } t g  | D] } t | ƒ ^ qƒ } | |  j k rY| rY| |  j | ƒ n  | d d k rv| d } n
 | d } i  } | j | ƒ �D } t d | ƒ �, } x" | D] } | d } | | | <q±WWd
 QXWd
 QXt
 j |	 d ƒ } t
 j |
 d ƒ } t
 j |	 d d ƒ } t d | ƒ } t | _ t j }  g  }! t j ƒ  }" |" | _ d
 | _ zyàx—| j  ƒ  D]‰}# |# j }$ t! |$ t" ƒ r”|$ }% n |$ j# d ƒ }% |% j$ d ƒ r¸qmn  | |% } | d røt% |# j& ƒ | d k røt' d |% ƒ ‚ n  | d r|| d j d d ƒ \ }& }' | j |$ ƒ � } | j( ƒ  }( Wd
 QX|  j) |( |& ƒ \ }) }* |* |' k r|t' d |$ ƒ ‚ q|n  | r­|% j* | | f ƒ r­t+ j, d |% ƒ qmn  |% j* | ƒ oÉ|% j$ d ƒ }+ |% j* | ƒ r|% j d d ƒ \ }) }, }- t j j | |, t- |- ƒ ƒ }. n3 |% | | f k r0qmn  t j j | t- |% ƒ ƒ }. |+ sW| j |$ ƒ � } | j. | |. ƒ Wd
 QX|! j/ |. ƒ | rõ| d rõt |. d ƒ �J } | j( ƒ  }( |  j) |( |& ƒ \ }) }/ |/ |* k rìt' d  |. ƒ ‚ n  Wd
 QXn  |  rö|. j$ d! ƒ röy  | j0 |. ƒ }0 |! j/ |0 ƒ WqTt1 k
 rPt+ j2 d" d# t ƒqTXqöqmt j j3 t- |$ ƒ ƒ }1 t j j |" |1 ƒ }2 | j |$ ƒ � } | j. | |2 ƒ Wd
 QXt j j |. ƒ \ }3 }1 |3 | _ | j4 |1 ƒ }4 | j5 |4 ƒ |! j6 |4 ƒ qmW| rt+ j, d$ ƒ d
 }5 n"d
 }6 |  j7 d } | d% k r0t
 j |
 d& ƒ }7 yÅ | j |7 ƒ � } t8 | ƒ }8 Wd
 QXi  }6 x” d7 D]Œ }9 d) |9 }: |: |8 k r{i  |6 d* |9 <}; x[ |8 |: j9 ƒ  D]F }< d+ |< j: |< j; f }= |< j< ró|= d, |< j< 7}= n  |= |; |< j <qºWq{q{WWq‘t1 k
 r,t+ j2 d- ƒ q‘Xna y@ | j | ƒ �+ } | | ƒ } t= j> | ƒ j d. ƒ }6 Wd
 QXWn t1 k
 r�t+ j2 d/ ƒ n X|6 r´|6 j d0 i  ƒ }> |6 j d1 i  ƒ }? |> sÇ|? r´| j d d ƒ }@ t j j? |@ ƒ sút@ d2 ƒ ‚ n  |@ | _ xF |> jA ƒ  D]8 \ }: }< d3 |: |< f }A | j4 |A ƒ }4 | j5 |4 ƒ qW|? r±i t d( 6}B xL |? jA ƒ  D]; \ }: }< d3 |: |< f }A | j4 |A |B ƒ }4 | j5 |4 ƒ qlWq±q´n  t j j | |
 ƒ } tB | ƒ }5 tC | ƒ } | d =| d =| | d4 <|5 jD | | ƒ } | r!	|! j/ | ƒ n  |5 jE |! | d5 | ƒ |5 SWn+ t1 k
 rj	t+ jF d6 ƒ | jG ƒ  ‚  n XWd
 tH jI |" ƒ XWd
 QXd
 S(8   uÁ  
        Install a wheel to the specified paths. If kwarg ``warner`` is
        specified, it should be a callable, which will be called with two
        tuples indicating the wheel version of this software and the wheel
        version in the file, if there is a discrepancy in the versions.
        This can be used to issue any warnings to raise any exceptions.
        If kwarg ``lib_only`` is True, only the purelib/platlib files are
        installed, and the headers, scripts, data and dist-info metadata are
        not written.

        The return value is a :class:`InstalledDistribution` instance unless
        ``options.lib_only`` is True, in which case the return value is ``None``.
        u   warneru   lib_onlyu   %s-%su   %s.datau   %s.dist-infou   WHEELu   RECORDu   utf-8u   rNu   Wheel-Versionu   .i   u   Root-Is-Purelibu   trueu   purelibu   platlibt   streami    u    u   scriptst   dry_runu   /RECORD.jwsi   u   size mismatch for %su   =u   digest mismatch for %su   lib_only: skipping %su   .exeu   /u   rbu   digest mismatch on write for %su   .pyu   Byte-compilation failedt   exc_infou   lib_only: returning Noneu   1.0u   entry_points.txtu   consoleu   guiu
   %s_scriptsu   wrap_%su   %s:%su    %suA   Unable to read legacy script metadata, so cannot generate scriptsu   commandsu8   Unable to read JSON metadata, so cannot generate scriptsu   wrap_consoleu   wrap_guiu   Valid script path not specifiedu   %s = %su   libu   prefixu   installation failed.(   u   consoleu   gui(J   Rª   Rƒ   t   FalseR   R'   RM   R@   RC   RA   RB   RR   R   RP   RQ   R   RS   R   RH   t   tuplet   intR�   R   R   t   Truet   recordR*   t   dont_write_bytecodet   tempfilet   mkdtempt
   source_dirR%   t
   target_dirt   infolistt
   isinstanceR   Rq   R‡   t   strt	   file_sizeR   Rˆ   Rs   t
   startswithR‘   R’   R   t   copy_streamR†   t   byte_compilet	   Exceptiont   warningt   basenamet   maket   set_executable_modet   extendRL   R   t   valuest   prefixt   suffixt   flagst   jsont   loadR„   RU   t   itemsR	   R^   t   write_shared_locationst   write_installed_filest	   exceptiont   rollbackt   shutilt   rmtree(C   R   R~   t   makert   kwargsRª   t   warnert   lib_onlyR   RV   R™   RW   t   metadata_namet   wheel_metadata_namet   record_nameRX   RZ   t   bwfR\   R_   t   wvR¤   t   file_versionR˜   Rw   R[   t   readerR{   R|   t   data_pfxt   info_pfxt
   script_pfxt   fileopt   bct   outfilest   workdirt   zinfot   arcnamet	   u_arcnamet   kindt   valueRc   t   _Rm   t	   is_scriptt   whereR    t   outfilet	   newdigestt   pycRŸ   t   worknameR¥   t	   filenamest   distt   commandst   ept   epdataR›   R"   t   dR#   t   st   console_scriptst   gui_scriptst
   script_dirt   scriptt   options(    (    s@   /var/www/testScraper/venv/build/pip/pip/_vendor/distlib/wheel.pyt   instally  s@   	

%

	
		 		
#
"		
	"	

c         C  sN   t  j j t ƒ  t d ƒ t j d  ƒ } t  j j | ƒ sJ t  j | ƒ n  | S(   Nu   dylib-cachei   (	   R   R'   RM   R   R¸   R*   RB   R„   t   makedirs(   R   R(   (    (    s@   /var/www/testScraper/venv/build/pip/pip/_vendor/distlib/wheel.pyt   _get_dylib_cache[  s    (c         C  s¥  t  j j |  j |  j ƒ } d |  j |  j f } d | } t j | d ƒ } t j	 d ƒ } g  } t
 | d ƒ �.} y| j | ƒ �þ } | | ƒ }	 t j |	 ƒ }
 |  j ƒ  } xÍ |
 j ƒ  D]¿ \ } } t  j j | t | ƒ ƒ } t  j j | ƒ sÿ t } nQ t  j | ƒ j } t j j | ƒ } | j | ƒ } t j | j Œ  } | | k } | ri| j | | ƒ n  | j | | f ƒ q½ WWd  QXWn t k
 ršn XWd  QX| S(   Nu   %s-%su   %s.dist-infou
   EXTENSIONSu   utf-8u   r(   R   R'   RM   R@   RC   RA   RB   RR   RP   RQ   R   RS   RÇ   RÈ   Rü   RÉ   R   t   existsR¯   t   statt   st_mtimet   datetimet   fromtimestampt   getinfot	   date_timet   extractR†   RT   (   R   R   RV   RW   Rã   RX   R(   RZ   R[   R\   R   t
   cache_baseRA   Rv   t   destR  t	   file_timeRL   t
   wheel_time(    (    s@   /var/www/testScraper/venv/build/pip/pip/_vendor/distlib/wheel.pyt   _get_extensionsb  s6    
	!
c         C  så   t  j j t  j j |  j |  j ƒ ƒ } t |  ƒ sL d | } t | ƒ ‚ n  | t j k rn t	 j
 d | ƒ ns | r‡ t j j | ƒ n t j j d | ƒ |  j ƒ  } | rá t t j k rÎ t j j t ƒ n  t j | | ƒ n  d  S(   Nu&   Wheel %s not mountable in this Python.u   %s already in pathi    (   R   R'   RJ   RM   R@   RC   t   is_compatibleR   R*   R‘   R’   R†   t   insertR	  t   _hookt	   meta_pathR    (   R   R†   R   t   msgR   (    (    s@   /var/www/testScraper/venv/build/pip/pip/_vendor/distlib/wheel.pyt   mount€  s    '
c         C  sª   t  j j t  j j |  j |  j ƒ ƒ } | t j k rI t j d | ƒ n] t j j	 | ƒ | t
 j k rx t
 j	 | ƒ n  t
 j s¦ t
 t j k r¦ t j j	 t
 ƒ q¦ n  d  S(   Nu   %s not in path(   R   R'   RJ   RM   R@   RC   R*   R‘   R’   R$   R  R   R  (   R   R   (    (    s@   /var/www/testScraper/venv/build/pip/pip/_vendor/distlib/wheel.pyt   unmount’  s    '	(   i   i   N(   R5   R6   t   __doc__R�   Ri   R%   R¬   R   t   propertyRC   RN   R   R]   RL   Rg   Rs   R}   R¨   Rú   Rü   R	  R  R  (    (    (    s@   /var/www/testScraper/venv/build/pip/pip/_vendor/distlib/wheel.pyR7   z   s"   (		w	â		c    
      C  s   t  g }  t  d } xG t t j d d d d ƒ D]( } |  j d j | t | ƒ g ƒ ƒ q1 Wg  } xL t j ƒ  D]> \ } } } | j	 d ƒ rp | j | j
 d d ƒ d ƒ qp qp W| j ƒ  t d k rÛ | j d t ƒ n  | j d ƒ g  } x7 | D]/ } | j d j t |  d f ƒ | t f ƒ qõ Wxw t |  ƒ D]i \ } }	 | j d j t |	 f ƒ d d	 f ƒ | d k r5| j d j t |	 d f ƒ d d	 f ƒ q5q5Wxw t |  ƒ D]i \ } }	 | j d j d
 |	 f ƒ d d	 f ƒ | d k r¯| j d j d
 |	 d f ƒ d d	 f ƒ q¯q¯W| S(   uG   
    Return (pyver, abi, arch) tuples compatible with this Python.
    i    i   iÿÿÿÿu    u   .abiu   .i   u   noneu   anyu   py(   t
   VER_SUFFIXt   rangeR*   t   version_infoR†   RM   R¸   R-   t   get_suffixesRº   RH   t   sortR�   R  t
   IMP_PREFIXR‚   RŠ   (
   t   versionst   majort   minort   abisRÅ   Rç   R(   R=   R¤   RB   (    (    s@   /var/www/testScraper/venv/build/pip/pip/_vendor/distlib/wheel.pyt   compatible_tagsŸ  s0    	
$&$
-%0%0c         C  sŽ   t  |  t ƒ s t |  ƒ }  n  t } | d  k r9 t } n  xN | D]F \ } } } | |  j k r@ | |  j k r@ | |  j k r@ t } Pq@ q@ W| S(   N(	   R·   R7   R¬   R%   t   COMPATIBLE_TAGSR<   R=   R>   R¯   (   t   wheelRN   R(   t   verR=   R>   (    (    s@   /var/www/testScraper/venv/build/pip/pip/_vendor/distlib/wheel.pyR
  É  s    	-(J   t
   __future__R    Rn   RP   R   t   distutils.utilt	   distutilst   emailR   Rk   R-   RÇ   t   loggingR   RR   t   reRÎ   R*   R²   R�   t    R   R   t   compatR   R   R   R   R   t   databaseR	   R]   R
   R   t   utilR   R   R   R   R   R   R   t	   getLoggerR5   R‘   t   hasattrR  t   platformRº   t   get_config_varR  R  R;   R€   t   get_platformR   R‚   R�   t   compilet
   IGNORECASEt   VERBOSERI   RE   R`   R   Ru   t   objectR   R  R7   R  R  R%   R
  (    (    (    s@   /var/www/testScraper/venv/build/pip/pip/_vendor/distlib/wheel.pyt   <module>   sp   (4			

'	#	ÿ ÿ '	%	