o
    LK&h                     @  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   G/var/www/html/venv/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   locate_file)r   r"   parsed_reqsmissing_reqsneeded_reqsresolved_distsr   r+   r   _fetch_build_eggs+   s   
r9   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_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)r2   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extendr2   realpathget_egg_cache_dirr   Distributiondiscoverglobr   tempfileTemporaryDirectoryr1   
executableappendurlr   
subprocess
check_callCalledProcessErrorr   joinegg_nameinstall_as_eggat)r   r   optsquietrF   r   eggs_dircached_distsr@   tmpdircmdlinkerH   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)r:   requirementsRequirementr   r(   r   r   r   r   rI      s   rI   c                 C  s6   zt d W d S  t jy   | dtj Y d S w )NrH   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%   ) 
__future__r   rS   r/   rK   rY   r1   rT   packaging.requirementsr:   packaging.utilsr-   r   
_importlibr   warningsr   rH   r   	distutilsr   distutils.errorsr	   r   r   r!   r9   r   r   rI   r   r   r   r   r   r   <module>   s0    	
<