
    
_d!                     ^   d 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
 ddlZddlmZ ddlmZ ddlmZ ddlmZmZ ddlmZ  ej0                  d	ej2                        j4                  Zd
Z ej:                  d      d        Zd Zej@                  d        Z! G d d      Z"y)zWheels support.    N)get_platform)Version)sys_tags)canonicalize_name)write_requirements_egg_basename)_unpack_zipfile_objz^(?P<project_name>.+?)-(?P<version>\d.*?)
    ((-(?P<build>\d.*?))?-(?P<py_version>.+?)-(?P<abi>.+?)-(?P<platform>.+?)
    )\.whl$z8__import__('pkg_resources').declare_namespace(__name__)
)maxsizec                  ~    t               D  ch c]%  } | j                  | j                  | j                  f' c} S c c} w N)r   interpreterabiplatform)ts    2/usr/lib/python3/dist-packages/setuptools/wheel.py_get_supported_tagsr       s.    
 9A
C1Q]]AEE1::.CCCs   *:c                    t        j                  |       D ]$  \  }}}t         j                  j                  ||       }|D ]Y  }t         j                  j	                  ||      }t         j                  j	                  |||      }t        j
                  ||       [ t        t        t        |                  D ]  \  }	}
t         j                  j	                  ||
      }t         j                  j	                  |||
      }t         j                  j                  |      rgt        j
                  ||       ||	=  ' t        j                  | d      D ]  \  }}}|rJ t        j                  |       ! y)zDMove everything under `src_dir` to `dst_dir`, and delete the former.T)topdownN)oswalkpathrelpathjoinrenamesreversedlist	enumerateexistsrmdir)src_dirdst_dirdirpathdirnames	filenamessubdirfsrcdstnds              r   unpackr+   (   s(   (*(8  $9'2 	!A'',,w*C'',,w2CJJsC 	! T)H"567 	 DAq'',,w*C'',,w2C77>>#& 

3$QK	   )+(F $9}
    c               #      K   ddl m}  | j                  | j                        }	 d | j                  |       y# | j                  |       w xY ww)z*
    Temporarily disable info traces.
    r   )logN)	distutilsr.   set_thresholdWARN)r.   saveds     r   disable_info_tracesr3   >   sC     
 chh'E!% % s   "A; AAAc                   f    e Zd Zd Zd Zd Zd Zd Zd Zd Z	e
d        Ze
d	        Ze
d
        Zy)Wheelc                     t        t        j                  j                  |            }|t	        d|z        || _        |j                         j                         D ]  \  }}t        | ||        y )Nzinvalid wheel name: %r)	
WHEEL_NAMEr   r   basename
ValueErrorfilename	groupdictitemssetattr)selfr:   matchkvs        r   __init__zWheel.__init__M   sg    277++H56=5@AA OO%++- 	 DAqD!Q	 r,   c                     t        j                  | j                  j                  d      | j                  j                  d      | j
                  j                  d            S )z>List tags (py_version, abi, platform) supported by this wheel..)	itertoolsproduct
py_versionsplitr   r   r>   s    r   tagsz
Wheel.tagsU   sI      OO!!#&HHNN3MM$
 	
r,   c                 D    t        d | j                         D        d      S )z2Is the wheel compatible with the current platform?c              3   :   K   | ]  }|t               v sd   yw)TN)r   ).0r   s     r   	<genexpr>z&Wheel.is_compatible.<locals>.<genexpr>_   s     Ma!7J7L2LTMs   F)nextrJ   rI   s    r   is_compatiblezWheel.is_compatible]   s    M499;MuUUr,   c                 ~    t        | j                  | j                  | j                  dk(  rd n	t	                     dz   S )Nany)r   z.egg)r   project_nameversionr   r   rI   s    r   egg_namezWheel.egg_namea   s;    !!"&--5"8$ln
 	
r,   c                     |j                         D ]Z  }t        j                  |      }|j                  d      s*t	        |      j                  t	        | j                              sX|c S  t        d      )Nz
.dist-infoz.unsupported wheel format. .dist-info not found)namelist	posixpathdirnameendswithr   
startswithrS   r9   )r>   zfmemberrY   s       r   get_dist_infozWheel.get_dist_infok   sk    kkm 	F''/G-2CG2L2W2W!$"3"343 	 IJJr,   c                     t        j                  | j                        5 }| j                  ||       ddd       y# 1 sw Y   yxY w)z"Install wheel as an egg directory.N)zipfileZipFiler:   _install_as_egg)r>   destination_eggdirr\   s      r   install_as_eggzWheel.install_as_eggu   s:    __T]]+ 	9r  !3R8	9 	9 	9s	   <Ac                    | j                   d| j                  }| j                  |      }d|z  }t        j                  j                  |d      }| j                  ||||       | j                  ||       | j                  ||       y )N-z%s.dataEGG-INFO)	rS   rT   r^   r   r   r   _convert_metadata_move_data_entries_fix_namespace_packages)r>   rc   r\   dist_basename	dist_info	dist_dataegg_infos          r   rb   zWheel._install_as_eggz   s|    #'#4#4dllC&&r*	-	77<< 2J?r#5y(K 2I>$$X/ABr,   c                 .    dd l } fd} |d      }t        |j                  d            }t        d      |cxk  xr t        d      k  nc }|st        d|z        t	         |       t
        j                  j                  |      |j                  j                  ||j                  |            }	d	 }
t        t        |
|	j                                     }|	j                  D ci c]1  }|t        |
|	j                  |f            D cg c]  }||vr|
 c}3 }}}t        j                  |       t        j                  t
        j                  j                  |d
      t
        j                  j                  |d             t!        j                  t#        ||            }t%               5  t'        |j)                  d      d t
        j                  j                  |d             d d d        y c c}w c c}}w # 1 sw Y   y xY w)Nr   c                    j                  t        j                  |             5 }|j                         j	                  d      }t
        j                  j                         j                  |      cd d d        S # 1 sw Y   y xY w)Nzutf-8)	openrX   r   readdecodeemailparserParserparsestr)namefpvaluerl   r\   s      r   get_metadataz-Wheel._convert_metadata.<locals>.get_metadata   sb    	489 =R	((1||**,55e<= = =s   AA==BWHEELzWheel-Versionz1.0z2.0dev0z$unsupported wheel format version: %s)metadatac                 &    d | _         t        |       S r   )markerstr)reqs    r   raw_reqz(Wheel._convert_metadata.<locals>.raw_req   s    CJs8Or,   METADATAzPKG-INFO)install_requiresextras_require)attrsrn   zrequires.txt)pkg_resourcesparse_versiongetr9   r	   r   r   r   Distributionfrom_locationPathMetadatar   maprequiresextrasrename
setuptoolsdictr3   r   get_command_obj)r\   rc   rl   rn   r   r{   wheel_metadatawheel_versionwheel_v1distr   r   extrar   r   
setup_dists   ` `             r   rh   zWheel._convert_metadata   s   	=
 &g.%n&8&8&IJ '=S=;SSCmSTTB 23GGLL!3Y?	))77"//0BIN 8 
	  GT]]_ => 
  wuh(?@..  
 
 			)X&
		GGLL:.GGLL:.	
  ,,!1-

 !" 	**:6X~6	 	%
&	 	s$   0$HH !H<;H HHc                    t         j                  j                  |       t         j                  j                  d      }t         j                  j                  |      rt         j                  j                  | dd      }t        j                  |       t        j
                  |      D ]  }|j                  d      r4t        j                  t         j                  j                  ||             Ht        j                  t         j                  j                  ||      t         j                  j                  ||              t        j                  |       t        t         j                  j                  fddD              D ]  }t        ||         t         j                  j                        rt        j                         yy)z,Move data entries to their correct location.scriptsrg   z.pycc              3   ^   K   | ]$  }t         j                  j                  |       & y wr   )r   r   r   )rM   r*   rm   s     r   rN   z+Wheel._move_data_entries.<locals>.<genexpr>   s(       Y*s   *-)dataheaderspurelibplatlibN)r   r   r   r   mkdirlistdirrZ   unlinkr   r   filterr+   )rc   rm   dist_data_scriptsegg_info_scriptsentryr%   s    `    r   ri   zWheel._move_data_entries   sE    GGLL!3Y?	GGLLI>77>>+,!ww||,>
IVHH%&$56 	 >>&)IIbggll+<eDEII%6>%5u=	 HH&'GGNNB
 	/F 6-.	/ 77>>)$HHY %r,   c                    t         j                  j                  | d      }t         j                  j                  |      rt	        |      5 }|j                         j                         }d d d        |D ]  }t        j                  j                  |g|j                  d       }t         j                  j                  |d      }t         j                  j                  |      st        j                  |       t         j                  j                  |      rt	        |d      5 }|j                  t               d d d         y y # 1 sw Y   xY w# 1 sw Y   xY w)Nznamespace_packages.txtrD   z__init__.pyw)
r   r   r   r   rq   rr   rH   r   writeNAMESPACE_PACKAGE_INIT)rn   rc   namespace_packagesry   modmod_dirmod_inits          r   rj   zWheel._fix_namespace_packages   s   WW\\(4LM77>>,-() 7R%'WWY__%6"7) 9'',,'9KCIIcNK77<<?ww~~g.HHW%ww~~h/h, 9!789 99 .7 79 9s   E	'E	EE	N)__name__
__module____qualname__rB   rJ   rP   rU   r^   rd   rb   staticmethodrh   ri   rj    r,   r   r5   r5   L   se     
V
K9
C 8 8t    : 9 9r,   r5   )#__doc__rt   rE   	functoolsr   rX   rer`   
contextlibdistutils.utilr   r   #setuptools.extern.packaging.versionr   r    setuptools.extern.packaging.tagsr   !setuptools.extern.packaging.utilsr   setuptools.command.egg_infor   r   setuptools.archive_utilr	   compileVERBOSEr?   r7   r   	lru_cacher   r+   contextmanagerr3   r5   r   r,   r   <module>r      s        	  	   '  H 5 ? I 7 RZZ JJ	
 %  U  T"D #D, 
! 
!^9 ^9r,   