
    5h%                     j   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mZ ddlmZ ddlmZ ddlZddlmZ ddlmZmZ d	d
lmZ d	dlmZ d	dlmZ ddlmZ  ej         dej!                  j"        Z#dZ$ej%        d             Z&ddZ'ej(        d             Z) G d d          Z*dS )zWheels support.    N)Requirementsys_tags)canonicalize_name)Version)_unpack_zipfile_obj)_egg_basenamewrite_requirements   )extras_from_deps)metadata)_read_utf8_with_fallback)get_platformz^(?P<project_name>.+?)-(?P<version>\d.*?)
    ((-(?P<build>\d.*?))?-(?P<py_version>.+?)-(?P<abi>.+?)-(?P<platform>.+?)
    )\.whl$z8__import__('pkg_resources').declare_namespace(__name__)
c                  2    d t                      D             S )Nc                 6    h | ]}|j         |j        |j        fS  )interpreterabiplatform.0ts     0lib/python3.11/site-packages/setuptools/wheel.py	<setcomp>z&_get_supported_tags.<locals>.<setcomp>*   s%    CCC1Q]AE1:.CCC    r   r   r   r   _get_supported_tagsr   %   s    
 DC

CCCCr   returnc                    t          j        |           D ])\  }}}t           j                            ||           }|D ]X}t           j                            ||          }t           j                            |||          }t          j        ||           Yt          t          t          |                              D ]}\  }	}
t           j                            ||
          }t           j                            |||
          }t           j        	                    |          st          j        ||           ||	= ~+t          j        | d          D ]\  }}}|rJ t          j
        |           dS )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   unpackr6   -   sd   (*(8(8    $9'22 	! 	!A',,w**C',,w22CJsC    T)H"5"56677 	  	 DAq',,w**C',,w22C7>>#&&   
3$$$QK	  )+(F(F(F  $9}
 r   c               #      K   ddl m}  |                     | j                  }	 dV  |                     |           dS # |                     |           w xY w)z*
    Temporarily disable info traces.
    r   )logN)	distutilsr8   set_thresholdWARN)r8   saveds     r   disable_info_tracesr=   C   sq      
 ch''E!%     %    s	   ? Ac                       e Zd ZddZd Zd Zd Zd ZddZd	 Z	e
d
             Ze
d             Ze
d             Ze
d             ZdS )Wheelr   Nc                    t          t          j                            |                    }|t	          d|          || _        |                                                                D ]\  }}t          | ||           d S )Nzinvalid wheel name: )	
WHEEL_NAMEr    r"   basename
ValueErrorfilename	groupdictitemssetattr)selfrD   matchkvs        r   __init__zWheel.__init__R   s    27++H5566=@H@@AAA OO%%++-- 	  	 DAqD!Q	  	 r   c                     t          j        | j                            d          | j                            d          | j                            d                    S )z>List tags (py_version, abi, platform) supported by this wheel..)	itertoolsproduct
py_versionsplitr   r   rH   s    r   tagsz
Wheel.tagsZ   sN     O!!#&&HNN3M$$
 
 	
r   c                 Z    t          d |                                 D             d          S )z2Is the wheel compatible with the current platform?c              3   :   K   | ]}|t                      v d V  dS )TN)r   r   s     r   	<genexpr>z&Wheel.is_compatible.<locals>.<genexpr>d   s3      MMa!7J7L7L2L2LT2L2L2L2LMMr   F)nextrT   rS   s    r   is_compatiblezWheel.is_compatibleb   s)    MM499;;MMMuUUUr   c                 r    t          | j        | j        | j        dk    rd nt	                                dz   S )Nany)r   z.egg)r	   project_nameversionr   r   rS   s    r   egg_namezWheel.egg_namef   sE    !"&-5"8"8$$lnn  
 	
r   c                    |                                 D ]c}t          j        |          }|                    d          r8t	          |                              t	          | j                            r|c S dt          d          )Nz
.dist-infoz.unsupported wheel format. .dist-info not found)namelist	posixpathdirnameendswithr   
startswithr\   rC   )rH   zfmemberrb   s       r   get_dist_infozWheel.get_dist_infop   s    kkmm 	 	F'//G-- 2CG2L2L2W2W!$"3443 3  IJJJr   c                     t          j        | j                  5 }|                     ||           ddd           dS # 1 swxY w Y   dS )z"Install wheel as an egg directory.N)zipfileZipFilerD   _install_as_egg)rH   destination_eggdirre   s      r   install_as_eggzWheel.install_as_eggz   s    _T]++ 	9r  !3R888	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9s   >AAc                 $   | j          d| j         }|                     |          }| d}t          j                            |d          }|                     ||||           |                     ||           |                     ||           d S )N-z.dataEGG-INFO)	r\   r]   rg   r    r"   r$   _convert_metadata_move_data_entries_fix_namespace_packages)rH   rl   re   dist_basename	dist_info	dist_dataegg_infos          r   rk   zWheel._install_as_egg   s    ,==t|==&&r**	$+++	7<< 2J??r#5y(KKK 2I>>>$$X/ABBBBBr   c           	      n     fd} |d          }t          |                    d                    }t          d          |cxk    ot          d          k     nc }|st          d|           t           |           t          j                            |          t                              |          \  }}	t	          j	        |           t	          j	        t          j                            |d          t          j                            |d                     t          j        t          ||		          
          }
t                      5  t          |
                    d          d t          j                            |d                     d d d            d S # 1 swxY w Y   d S )Nc                 8                        t          j        |                     5 }|                                                    d          }t
          j                                                            |          cd d d            S # 1 swxY w Y   d S )Nutf-8)	openra   r$   readdecodeemailparserParserparsestr)namefpvalueru   re   s      r   get_metadataz-Wheel._convert_metadata.<locals>.get_metadata   s    	48899 =R		((11|**,,55e<<= = = = = = = = = = = = = = = = = =s   ABBBWHEELzWheel-Versionz1.0z2.0dev0z"unsupported wheel format version: METADATAzPKG-INFO)install_requiresextras_require)attrsrw   zrequires.txt)parse_versiongetrC   r   r    r"   r$   r?   _convert_requiresrename
setuptoolsDistributiondictr=   r
   get_command_obj)re   rl   ru   rw   r   wheel_metadatawheel_versionwheel_v1r   r   
setup_dists   ` `        r   rq   zWheel._convert_metadata   s   	= 	= 	= 	= 	= 	=
 &g..%n&8&8&I&IJJ ''=SSSS=;S;SSSSS 	SQ-QQRRRB 2333GLL!3Y??	+0+B+B	,
 ,
(. 		)X&&&
	GLL:..GLL:..	
 	
 	
  ,!1-  
 
 

 !"" 	 	**:66X~66  	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   AF**F.1F.c                   	
 t           j                            |          j         }|                    d          pg }t	          t          t          |                    
t          |          }d 	d d t	          t          	t          t          j
        
                                        }	
fd|D             }||fS )NzRequires-Distc                 f    t          t          |                     } d | _        t          |           S N)r   strmarker)reqs    r   raw_reqz(Wheel._convert_requires.<locals>.raw_req   s'    c#hh''CCJs88Or   c                 F    | j          p| j                             |          S r   )r   evaluate)r   envs     r   evalz%Wheel._convert_requires.<locals>.eval   s!    z>=SZ%8%8%=%==r   c                 t    	 | j         j        }n# t          $ r d}Y nw xY wt          d |D                       S )Nr   c              3   |   K   | ]7}t          |t                    r |d          j        dk    (|d         j        V  8dS )r   extra   N)
isinstancetupler   )r   r   s     r   rW   z=Wheel._convert_requires.<locals>.for_extra.<locals>.<genexpr>   sY        fe,, 28G1K1K q	1K1K1K1K r   )r   _markersAttributeErrorset)r   markerss     r   	for_extraz*Wheel._convert_requires.<locals>.for_extra   se    *-!     %     s    c                 j    i | ].t          t          fd D                                 /S )c              3   L   K   | ]} |           |           |V  dS ))r   Nr   )r   r   r   r   r   s     r   rW   z5Wheel._convert_requires.<locals>.<dictcomp>.<genexpr>   sD      VVSIIcNNVttCu?U?U?UVSVVVVVVr   )r'   map)r   r   r   r   r   reqss    @r   
<dictcomp>z+Wheel._convert_requires.<locals>.<dictcomp>   se     
 
 
  4VVVVVVDVVV  
 
 
r   )r   r   atget_allr'   r   r   r   filterrO   filterfalse)rl   ru   mddepsextrasr   r   r   r   r   r   s          @@@@r   r   zWheel._convert_requires   s   "%%i009zz/**0bCT**++!$''
	 	 	
	> 	> 	>		 		 		  i&;It&L&LMMNN
 

 
 
 
 
 
 
  
 
 
  //r   c                    t           j                            |           t           j                            d          }t           j                            |          rt           j                            | dd          }t          j        |           t          j        |          D ]}|                    d          r3t          j        t           j                            ||                     Jt          j        t           j                            ||          t           j                            ||                     t          j	        |           t          t           j        j        fddD                       D ]}t          ||            t           j                                      rt          j	                   dS dS )z,Move data entries to their correct location.scriptsrp   z.pycc              3   X   K   | ]$}t           j                            |          V  %d S r   )r    r"   r$   )r   r5   rv   s     r   rW   z+Wheel._move_data_entries.<locals>.<genexpr>   sG         Y**     r   )dataheaderspurelibplatlibN)r    r"   r$   r)   mkdirlistdirrc   unlinkr   r*   r   r6   )rl   rv   dist_data_scriptsegg_info_scriptsentryr0   s    `    r   rr   zWheel._move_data_entries   s    GLL!3Y??	GLLI>>7>>+,, 	(!w||,>
IVVH%&&&$566 	 	 >>&)) Ibgll+<eDDEEEEI%6>>%5u==    H&'''GN   B  
 
 	/ 	/F 6-....7>>)$$ 	 HY	  	 r   c                    t           j                            | d          }t           j                            |          rt	          |                                          }|D ]}t          j        j        |g|                    d          R  }t           j                            |d          }t           j                            |          st          j        |           t           j                            |          sDt          |dd          5 }|                    t                     d d d            n# 1 swxY w Y   d S d S )Nznamespace_packages.txtrN   z__init__.pywrz   )encoding)
r    r"   r$   r)   r   rR   r   r{   writeNAMESPACE_PACKAGE_INIT)rw   rl   namespace_packagesmodmod_dirmod_initr   s          r   rs   zWheel._fix_namespace_packages   s^   W\\(4LMM7>>,-- 
	9!9:L!M!M!S!S!U!U) 9 9','9KCIIcNNKKK7<<??w~~g.. &HW%%%w~~h// 9hg>>> 9"!78889 9 9 9 9 9 9 9 9 9 9 9 9 9 9
	9 
	99 9s   D;;D?	D?	r   N)__name__
__module____qualname__rL   rT   rY   r^   rg   rm   rk   staticmethodrq   r   rr   rs   r   r   r   r?   r?   Q   s               
 
 
V V V
 
 
K K K9 9 9 9
C C C " " \"H )0 )0 \)0V     \ : 9 9 \9 9 9r   r?   r   )+__doc__
contextlibr~   	functoolsrO   r    ra   reri   packaging.requirementsr   packaging.tagsr   packaging.utilsr   packaging.versionr   r   r   setuptools.archive_utilr   setuptools.command.egg_infor	   r
   
_discoveryr   
_importlibr   unicode_utilsr   distutils.utilr   compileVERBOSErI   rA   r   cacher   r6   contextmanagerr=   r?   r   r   r   <module>r      s                  				     				  . . . . . . # # # # # # - - - - - - 6 6 6 6 6 6     7 7 7 7 7 7 I I I I I I I I ( ( ( ( ( (             3 3 3 3 3 3 ' ' ' ' ' 'RZ J	 
   U  D D D   , 
! 
! 
!t9 t9 t9 t9 t9 t9 t9 t9 t9 t9r   