o
    5‘ði@  ã                   @  sî   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 d dlmZ d d	lmZ d
d„ Zd"dd„Zdd„ Zd#dd„Zdd„ Zdd„ Zd$dd„Zdd„ ZG d d!„ d!eƒZdS )%é    )ÚannotationsNé   )Ú_reqs)Úmetadata)ÚSetuptoolsDeprecationWarning)ÚWheel)Úlog)ÚDistutilsErrorc                 C  s(   t | tƒr	|  ¡ S t | ttfƒsJ ‚| S )z8Ensure find-links option end-up being a list of strings.)Ú
isinstanceÚstrÚsplitÚtupleÚlist)Ú
find_links© r   úS/root/parts/websockify/install/lib/python3.10/site-packages/setuptools/installer.pyÚ_fixup_find_links   s   
r   Úreturnú1metadata.Distribution | metadata.PathDistributionc                 C  s   t  ¡  t| ƒ t| |ƒS )zLFetch an egg needed for building.

    Use pip/wheel to fetch/build a wheel.)Ú_DeprecatedInstallerÚemitÚ_warn_wheel_not_availableÚ_fetch_build_egg_no_warn)ÚdistÚreqr   r   r   Úfetch_build_egg   s   
r   c                   s   t ‡ fdd„t ¡ D ƒƒS )Nc                 3  s   � | ]}t |ˆ ƒV  qd S ©N)Ú_dist_matches_req)Ú.0r   ©r   r   r   Ú	<genexpr>(   s   € z_present.<locals>.<genexpr>)Úanyr   Údistributionsr   r   r   r   Ú_present'   s   r#   Úrequiresú_reqs._StrOrIterúlist[metadata.Distribution]c                   sp   t jdd� tˆ ƒ t |¡}t t|¡}dd„ |D ƒ}‡ fdd„|D ƒ}|D ]‰ tj	 
dtˆ  d¡ƒ¡ q'|S )	Né   )Ú
stacklevelc                 s  s$   � | ]}|j r|j  ¡ r|V  qd S r   )ÚmarkerÚevaluate©r   r   r   r   r   r    3   s   € ÿÿ
ÿz$_fetch_build_eggs.<locals>.<genexpr>c                   s   g | ]}t ˆ |ƒ‘qS r   )r   r+   ©r   r   r   Ú
<listcomp>6   s    z%_fetch_build_eggs.<locals>.<listcomp>r   Ú )r   r   r   r   ÚparseÚ	itertoolsÚfilterfalser#   ÚsysÚpathÚinsertr   Úlocate_file)r   r$   Úparsed_reqsÚmissing_reqsÚneeded_reqsÚresolved_distsr   r,   r   Ú_fetch_build_eggs+   s   
ÿr:   c                 C  s(   t j | j¡t j |j¡ko| j|jv S r   )Ú	packagingÚutilsÚcanonicalize_nameÚnameÚversionÚ	specifier)Úegg_distr   r   r   r   r   >   s
   ÿ
ýr   c                 C  sò  t |ƒ}|  d¡}d|v rtdƒ‚dtjvodtjv}dtjv r#d }nd|v r.|d d }nd }d	|v r@t|d	 d ƒd d … ng }| jrK| | j¡ tj 	|  
¡ ¡}tjjt |› d
�¡d�}|D ]}t||ƒrm|  S qbt ¡ �}}	tjdddddd|	g}
|r…|
 d¡ |d ur�|
 d|f¡ |p“g D ]	}|
 d|f¡ q”|
 |jp¦t|ƒ¡ zt |
¡ W n tjyÃ } ztt|ƒƒ|‚d }~ww tt tj |	d¡¡d ƒ}tj || ¡ ¡}| |¡ tj |d ¡W  d   ƒ S 1 sòw   Y  d S )NÚeasy_installÚallow_hostszQthe `allow-hosts` option is not supported when using pip to install requirements.Ú	PIP_QUIETÚPIP_VERBOSEÚPIP_INDEX_URLÚ	index_urlr   r   z/*.egg)r3   z-mÚpipz--disable-pip-version-checkÚwheelz	--no-depsz-wz--quietz--index-urlz--find-linksz*.whlr   z	/EGG-INFO)Ústrip_markerÚget_option_dictr	   ÚosÚenvironr   Údependency_linksÚextendr3   ÚrealpathÚget_egg_cache_dirr   ÚDistributionÚdiscoverÚglobr   ÚtempfileÚTemporaryDirectoryr2   Ú
executableÚappendÚurlr   Ú
subprocessÚ
check_callÚCalledProcessErrorr   ÚjoinÚegg_nameÚinstall_as_eggÚat)r   r   ÚoptsÚquietrG   r   Úeggs_dirÚcached_distsrA   ÚtmpdirÚcmdÚlinkÚerI   Údist_locationr   r   r   r   F   sd   
ÿ
"ÿ
ÿ
ø

€ÿ
$är   ú"packaging.requirements.Requirementc                 C  s   t j t| ƒ¡} d| _| S )z«
    Return a new requirement without the environment marker to avoid
    calling pip with something like `babel; extra == "i18n"`, which
    would always be ignored.
    N)r;   ÚrequirementsÚRequirementr   r)   r   r   r   r   rJ   ‚   s   rJ   c                 C  s6   zt  d¡ W d S  t jy   |  dtj¡ Y d S w )NrI   z,WARNING: The wheel package is not available.)r   ÚdistributionÚPackageNotFoundErrorÚannouncer   ÚWARNr,   r   r   r   r   Ž   s
   ÿr   c                   @  s   e Zd ZdZdZdZdS )r   z9setuptools.installer and fetch_build_eggs are deprecated.z„
    Requirements should be satisfied by a PEP 517 installer.
    If you are using pip, you can try `pip install --use-pep517`.
    )ié  é
   é   N)Ú__name__Ú
__module__Ú__qualname__Ú_SUMMARYÚ_DETAILSÚ	_DUE_DATEr   r   r   r   r   •   s    r   )r   r   )r$   r%   r   r&   )r   rj   ) Ú
__future__r   rT   r0   rL   rZ   r2   rU   Úpackaging.requirementsr;   Úpackaging.utilsr.   r   Ú
_importlibr   Úwarningsr   rI   r   Ú	distutilsr   Údistutils.errorsr	   r   r   r#   r:   r   r   rJ   r   r   r   r   r   r   Ú<module>   s0    
	

<