a
    3e                     @   s   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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 ZdS )    N)log)DistutilsError)easy_install)six)Wheel   )TemporaryDirectoryc                 C   s*   t | tjr|  S t | ttfs&J | S )z8Ensure find-links option end-up being a list of strings.)
isinstancer   string_typessplittuplelist)
find_links r   G/home/pi/bot/my_env/lib/python3.9/site-packages/setuptools/installer.py_fixup_find_links   s    r   c                 C   s   |  ddgi}|d}|  |dd | d D  | jr|| jdd }d|v rpt|d d | }d|f|d< |  }t|d	g|d
ddddd
d
dd}|	  ||S )zJFetch an egg needed for building.

    Legacy path using EasyInstall.
    script_argsr   c                 s   s"   | ]\}}|d v r||fV  qdS ))r   	site_dirs	index_urloptimizer   allow_hostsNr   ).0kvr   r   r   	<genexpr>    s   z*_legacy_fetch_build_egg.<locals>.<genexpr>Nr   r   setupxTF)
argsinstall_dirZexclude_scriptsZalways_copyZbuild_directoryeditableupgradeZmulti_versionZ	no_reportuser)
	__class__get_option_dictclearupdateitemsdependency_linksr   get_egg_cache_dirr   ensure_finalized)distreqZtmp_distoptslinksr   cmdr   r   r   _legacy_fetch_build_egg   s(    

r/   c                 C   s  zt d W n, t jy:   | dtj t| | Y S 0 zt d W n" t jyl   | dtj Y n0 t|}| d}d|v rt	ddt
jv sd	t
jv rd
}nd}dt
jv rd}nd|v r|d d }nd}d|v rt|d d dd }ng }| jr|| j t
j|  }t  }t |D ]$}||v r4||r4|  S q4t <}	tjdddddd|	g}
|r|
d |dur|
d|f |dur|D ]}|
d|f q|jr|
|j n|
t| zt|
 W n4 tjy, } zt	t|W Y d}~n
d}~0 0 ttt
j |	dd }t
j ||! }|"| t #|t
j |d}t j$j%||d} | W  d   S 1 s0    Y  dS )zLFetch an egg needed for building.

    Use pip/wheel to fetch/build a wheel.pipzWARNING: The pip package is not available, falling back to EasyInstall for handling setup_requires/test_requires; this is deprecated and will be removed in a future version.wheelz,WARNING: The wheel package is not available.r   r   zQthe `allow-hosts` option is not supported when using pip to install requirements.Z	PIP_QUIETZPIP_VERBOSEFTZPIP_INDEX_URLNr   r   r   z-mz--disable-pip-version-checkz	--no-depsz-wz--quietz--index-urlz--find-linksz*.whlr   zEGG-INFO)metadata)&pkg_resourcesget_distributionDistributionNotFoundannouncer   WARNr/   strip_markerr#   r   osenvironr   r'   extendpathrealpathr(   Environmentfind_distributionscan_addr   sys
executableappendurlstr
subprocess
check_callCalledProcessErrorr   globjoinegg_nameZinstall_as_eggPathMetadataDistributionfrom_filename)r*   r+   r,   quietr   r   Zeggs_direnvironmentZegg_disttmpdirr.   linker1   dist_locationZdist_metadatar   r   r   fetch_build_egg8   s    





"
rU   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)r3   RequirementparserE   marker)r+   r   r   r   r8      s    r8   )rI   r9   rF   rA   	distutilsr   distutils.errorsr   r3   Zsetuptools.command.easy_installr   Zsetuptools.externr   Zsetuptools.wheelr   
py31compatr   r   r/   rU   r8   r   r   r   r   <module>   s    U