o
    h`                      @   s   d Z ddlm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mZ ddlmZ ddlmZ ddlmZ e	d	e	jjZd
Zdd ZG dd dZdS )zWheels support.    )get_platform)logN)parse_version)sys_tags)canonicalize_name)write_requirementsz^(?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                 C   s   t | D ]Q\}}}t j|| }|D ]}t j||}t j|||}t || qttt|D ]"\}	}
t j||
}t j|||
}t j	|sUt || ||	= q3qt j| ddD ]\}}}|rgJ t 
| q^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_dirZdst_dirdirpathdirnames	filenamessubdirfsrcdstnd r   V/home/www/facesmatcher.com/frenv_dlib/lib/python3.10/site-packages/setuptools/wheel.pyunpack   s$   	r    c                   @   sh   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	e
dd Ze
dd Ze
dd ZdS )Wheelc                 C   sP   t tj|}|d u rtd| || _|  D ]
\}}t| || qd S )Nzinvalid wheel name: %r)	
WHEEL_NAMEr	   r   basename
ValueErrorfilename	groupdictitemssetattr)selfr%   matchkvr   r   r   __init__6   s   zWheel.__init__c                 C   s&   t | jd| jd| jdS )z>List tags (py_version, abi, platform) supported by this wheel..)	itertoolsproduct
py_versionsplitabiplatformr)   r   r   r   tags>   s
   


z
Wheel.tagsc                    s0   t dd t D  t fdd|  D dS )z5Is the wheel is compatible with the current platform?c                 s   s     | ]}|j |j|jfV  qd S N)interpreterr3   r4   .0tr   r   r   	<genexpr>H   s    
z&Wheel.is_compatible.<locals>.<genexpr>c                 3   s    | ]	}| v rd V  qdS )TNr   r9   supported_tagsr   r   r<   J   s    F)setr   nextr6   r5   r   r=   r   is_compatibleF   s   zWheel.is_compatiblec                 C   s,   t j| j| j| jdkrd nt d d S )Nany)project_nameversionr4   z.egg)pkg_resourcesDistributionrC   rD   r4   r   egg_namer5   r   r   r   rG   L   s   zWheel.egg_namec                 C   sF   |  D ]}t|}|drt|t| jr|  S qtd)Nz
.dist-infoz.unsupported wheel format. .dist-info not found)namelist	posixpathdirnameendswithr   
startswithrC   r$   )r)   zfmemberrJ   r   r   r   get_dist_infoR   s   

zWheel.get_dist_infoc                 C   s>   t | j}| || W d   dS 1 sw   Y  dS )z"Install wheel as an egg directory.N)zipfileZipFiler%   _install_as_egg)r)   destination_eggdirrM   r   r   r   install_as_egg\   s   "zWheel.install_as_eggc                 C   s\   d| j | jf }| |}d| }tj|d}| |||| | || | || d S )Nz%s-%sz%s.dataEGG-INFO)	rC   rD   rO   r	   r   r   _convert_metadata_move_data_entries_fix_namespace_packages)r)   rS   rM   Zdist_basename	dist_info	dist_dataegg_infor   r   r   rR   a   s   
zWheel._install_as_eggc              	      sT  fdd}|d}t |d}t d|  kot dk n  }|s*td| t| | tj|tj	j
|t|d d	d
 ttt   fdd jD }t| ttj|dtj|d tj	t|dd}	tjj}
ttj zt|	dd tj|d W t|
 d S t|
 w )Nc                    sT    t | }| d}tj |W  d    S 1 s#w   Y  d S )Nzutf-8)	openrI   r   readdecodeemailparserParserparsestr)namefpvalue)rY   rM   r   r   get_metadatam   s   $z-Wheel._convert_metadata.<locals>.get_metadataZWHEELzWheel-Versionz1.0z2.0dev0z$unsupported wheel format version: %s)metadatac                 S   s   d | _ t| S r7   )markerstr)reqr   r   r   raw_req   s   z(Wheel._convert_metadata.<locals>.raw_reqc              
      s2   i | ]}|t fd dt |fD qS )c                 3   s    | ]	}| vr|V  qd S r7   r   )r:   rj   )install_requiresr   r   r<      s    
z5Wheel._convert_metadata.<locals>.<dictcomp>.<genexpr>)sortedmaprequires)r:   extra)distrl   rk   r   r   
<dictcomp>   s    z+Wheel._convert_metadata.<locals>.<dictcomp>METADATAzPKG-INFO)rl   extras_require)attrsr[   zrequires.txt)r   getr$   r	   mkdir
extractallr   r   rE   rF   from_locationPathMetadatar   rm   rn   ro   extrasrename
setuptoolsdictr   _global_log	thresholdset_thresholdWARNr   get_command_obj)rM   rS   rY   r[   rf   wheel_metadatawheel_versionZwheel_v1rt   Z
setup_distZlog_thresholdr   )rq   rY   rl   rk   rM   r   rV   k   sR   


zWheel._convert_metadatac                    s   t j|   t j d}t j|rNt j| dd}t | t |D ]"}|dr8t t j|| q&t t j||t j|| q&t 	| t
t jj fdddD D ]}t||  q\t j rqt 	  dS dS )z,Move data entries to their correct location.scriptsrU   z.pycc                 3   s    | ]
}t j |V  qd S r7   )r	   r   r   )r:   r   rZ   r   r   r<      s
    
z+Wheel._move_data_entries.<locals>.<genexpr>)dataheaderspurelibplatlibN)r	   r   r   r   rw   listdirrK   unlinkr|   r   filterr    )rS   rZ   Zdist_data_scriptsZegg_info_scriptsentryr   r   r   r   rW      s,   


zWheel._move_data_entriesc              	   C   s   t j| d}t j|rkt|}|  }W d    n1 s"w   Y  |D ]C}t jj|g|dR  }t j|d}t j|sJt | t j|sjt|d}|t	 W d    n1 sew   Y  q)d S d S )Nznamespace_packages.txtr.   z__init__.pyw)
r	   r   r   r   r\   r]   r2   rw   writeNAMESPACE_PACKAGE_INIT)r[   rS   Znamespace_packagesrd   modZmod_dirZmod_initr   r   r   rX      s&   

zWheel._fix_namespace_packagesN)__name__
__module____qualname__r-   r6   rA   rG   rO   rT   rR   staticmethodrV   rW   rX   r   r   r   r   r!   4   s    


?
r!   )__doc__distutils.utilr   	distutilsr   r_   r/   r	   rI   rerP   rE   r}   r   Z setuptools.extern.packaging.tagsr   Z!setuptools.extern.packaging.utilsr   Zsetuptools.command.egg_infor   compileVERBOSEr*   r"   r   r    r!   r   r   r   r   <module>   s2    