
    yd!                     L   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j        d	ej                  j        Zd
Z ej        d          d             Zd Zej         d             Z! G d d          Z"dS )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                  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   c                    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   unpackr1   (   se   (*(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)	distutilsr3   set_thresholdWARN)r3   saveds     r   disable_info_tracesr8   >   sq      
 ch''E!%     %    s	   ? Ac                   z    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dS )Wheelc                    t          t          j                            |                    }|t	          d|z            || _        |                                                                D ]\  }}t          | ||           d S )Nzinvalid wheel name: %r)	
WHEEL_NAMEr   r   basename
ValueErrorfilename	groupdictitemssetattr)selfr?   matchkvs        r   __init__zWheel.__init__M   s    27++H5566=5@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   rC   s    r   tagsz
Wheel.tagsU   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>_   s3      MMa!7J7L7L2L2LT2L2L2L2LMMr   F)nextrO   rN   s    r   is_compatiblezWheel.is_compatible]   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   rN   s    r   egg_namezWheel.egg_namea   sE    L"mu44dd,..
 
 
 	 	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   
startswithrW   r>   )rC   zfmemberr]   s       r   get_dist_infozWheel.get_dist_infoh   s    kkmm 	 	F'//G  .. %g..99)$*;<<> > 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ZipFiler?   _install_as_egg)rC   destination_eggdirr`   s      r   install_as_eggzWheel.install_as_eggr   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|z  }t          j                            |d          }|                     ||||           |                     ||           |                     ||           d S )N-z%s.dataEGG-INFO)	rW   rX   rb   r   r   r   _convert_metadata_move_data_entries_fix_namespace_packages)rC   rg   r`   dist_basename	dist_info	dist_dataegg_infos          r   rf   zWheel._install_as_eggw   s    #'#4#4#4dllC&&r**	-	7<< 2J??r#5y(KKK 2I>>>$$X/ABBBBBr   c           	      0    dd l } fd} |d          }t          |                    d                    }t          d          |cxk    ot          d          k     nc }|st          d|z            t	           |           t
          j                            |          |j        	                    ||
                    |                    d	 t          t                                                              fd
j        D             }	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 )Nr   c                 8                        t          j        |                     5 }|                                                    d          }t
          j                                                            |          cd d d            S # 1 swxY w Y   d S )Nzutf-8)	openr\   r   readdecodeemailparserParserparsestr)namefpvaluerp   r`   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: %s)metadatac                 .    d | _         t          |           S N)markerstr)reqs    r   raw_reqz(Wheel._convert_metadata.<locals>.raw_req   s    CJs88Or   c           
      r    i | ]3}|fd t                              |f                    D             4S )c                     g | ]}|v|	S r   r   )r   r   install_requiress     r   
<listcomp>z6Wheel._convert_metadata.<locals>.<dictcomp>.<listcomp>   s/       ... ...r   )maprequires)r   extradistr   r   s     r   
<dictcomp>z+Wheel._convert_metadata.<locals>.<dictcomp>   si     
 
 
      wuh(?(?@@  
 
 
r   METADATAzPKG-INFO)r   extras_require)attrsrr   zrequires.txt)pkg_resourcesparse_versiongetr>   r
   r   r   r   Distributionfrom_locationPathMetadatar"   r   r   extrasrename
setuptoolsdictr8   r   get_command_obj)r`   rg   rp   rr   r   r   wheel_metadatawheel_versionwheel_v1r   
setup_distr   r   r   s   ` `        @@@r   rl   zWheel._convert_metadata   s   	= 	= 	= 	= 	= 	=
 &g..%n&8&8&I&IJJ%  MLLLLM)4L4LLLLL 	  	H6FH H H 	B 2333GLL!3Y??	)77	"//0BINN 8 
 
	 	 	  GT]]__ = =>>
 
 
 
 
 
 
 
 
 		)X&&&
	GLL:..GLL:..	
 	
 	
  ,!1-  
 
 

 !"" 	 	**:66X~66  	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   ;AHHH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.scriptsrk   z.pycc              3   X   K   | ]$}t           j                            |          V  %d S r   )r   r   r   )r   r0   rq   s     r   rR   z+Wheel._move_data_entries.<locals>.<genexpr>   sG       .
 .
 GLLA&&.
 .
 .
 .
 .
 .
r   )dataheaderspurelibplatlibN)r   r   r   r$   mkdirlistdirr^   unlinkr   r%   filterr1   )rg   rq   dist_data_scriptsegg_info_scriptsentryr+   s    `    r   rm   zWheel._move_data_entries   s    GLL!3Y??	GLLI>>7>>+,, 	(!w||"J	 ;  ;H%&&&$566 	 	 >>&)) Ibgll+<eDDEEEEI%6>>%5u==    H&'''RW^ .
 .
 .
 .
>.
 .
 .
   	/ 	/F 6-....7>>)$$ 	 HY	  	 r   c                    t           j                            | d          }t           j                            |          r0t	          |          5 }|                                                                }d d d            n# 1 swxY w Y   |D ]}t          j        j        |g|                    d          R  }t           j                            |d          }t           j                            |          st          j        |           t           j                            |          sBt	          |d          5 }|                    t                     d d d            n# 1 swxY w Y   d S d S )Nznamespace_packages.txtrI   z__init__.pyw)
r   r   r   r$   ru   rv   rM   r   writeNAMESPACE_PACKAGE_INIT)rr   rg   namespace_packagesr}   modmod_dirmod_inits          r   rn   zWheel._fix_namespace_packages   s   W\\.0 07>>,-- 
	9()) 7R%'WWYY__%6%6"7 7 7 7 7 7 7 7 7 7 7 7 7 7 7) 9 9','9KCIIcNNKKK7<<??w~~g.. &HW%%%w~~h// 9h,, 9!78889 9 9 9 9 9 9 9 9 9 9 9 9 9 9
	9 
	99 9s$   'BB
B>E%%E)	,E)	N)__name__
__module____qualname__rG   rO   rT   rY   rb   rh   rf   staticmethodrl   rm   rn   r   r   r   r:   r:   K   s             
 
 
V V V  K K K9 9 9
C C C 9 9 \9v     \ 6 9 9 \9 9 9r   r:   )#__doc__rx   rJ   	functoolsr   r\   rerd   
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VERBOSErD   r<   r   	lru_cacher   r1   contextmanagerr8   r:   r   r   r   <module>r      s              				     				      ' ' ' ' ' '     H H H H H H 5 5 5 5 5 5 ? ? ? ? ? ? I I I I I I I I 7 7 7 7 7 7 RZ J	  	  @  T"""D D #"D  , 	! 	! 	!\9 \9 \9 \9 \9 \9 \9 \9 \9 \9r   