o
    NZh                     @  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 Zdd Zd ddZdd Zdd Z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   C/var/www/auris/lib/python3.10/site-packages/setuptools/installer.py_fixup_find_links   s   
r   c                 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return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   Zlocate_file)r   r"   Zparsed_reqsZmissing_reqsZneeded_reqsZresolved_distsr   r+   r   _fetch_build_eggs+   s   
r4   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 |pg D ]	}|
d|f q|
|jpt| 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 sw   Y  d S )Neasy_installZallow_hostszQthe `allow-hosts` option is not supported when using pip to install requirements.Z	PIP_QUIETZPIP_VERBOSEZPIP_INDEX_URL	index_urlr   r   z/*.egg)r2   z-mpipz--disable-pip-version-checkwheelz	--no-depsz-wz--quietz--index-urlz--find-linksz*.whlr   z	/EGG-INFO)strip_markerZget_option_dictr	   osenvironr   Zdependency_linksextendr2   realpathZget_egg_cache_dirr   DistributionZdiscoverglobr   tempfileTemporaryDirectoryr1   
executableappendurlr   
subprocess
check_callCalledProcessErrorr   joinegg_nameZinstall_as_eggat)r   r   optsquietr=   r   Zeggs_dirZcached_distsr;   Ztmpdircmdlinker?   dist_locationr   r   r   r   F   sd   

"




$r   c                 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)r5   requirementsRequirementr   r(   r   r   r   r   r@      s   r@   c                 C  s6   zt d W d S  t jy   | dtj Y d S w )Nr?   z,WARNING: The wheel package is not available.)r   distributionZPackageNotFoundErrorZ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__Z_SUMMARYZ_DETAILSZ	_DUE_DATEr   r   r   r   r      s    r   )r"   r#   r$   r%   ) 
__future__r   rF   r/   rA   rL   r1   rG   Zpackaging.requirementsr5   Zpackaging.utilsr-   r   Z
_importlibr   warningsr   r?   r   	distutilsr   Zdistutils.errorsr	   r   r   r!   r4   r   r   r@   r   r   r   r   r   r   <module>   s0    	
<