o
    Mf                     @   s   d 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Zddlm	Z	 ddl
mZ ddlmZ ddlmZmZ eeZd	d
 ZG dd deZdddZdddZdS )zIBuild wheels/sdists by installing build deps to a temporary environment.
    N)
check_call)	get_paths)mkdtemp   )	toml_load)Pep517HookCallerLoggerWrapperc                 C   s^   t tj| dd}t|}W d    n1 sw   Y  |d }|d |d |dfS )Nzpyproject.tomlrbzbuild-systemrequireszbuild-backendzbackend-path)ioopenospathjoinr   get)
source_dirfpyproject_databuildsys r   ]/var/www/html/analyze/labelStudio/lib/python3.10/site-packages/pip/_vendor/pep517/envbuild.py_load_pyproject   s   
r   c                   @   s6   e Zd ZdZdZdddZdd Zdd	 Zd
d ZdS )BuildEnvironmentzContext manager to install build deps in a simple temporary environment

    Based on code I wrote for pip, which is MIT licensed.
    NTc                 C   s
   || _ d S N)_cleanup)selfcleanupr   r   r   __init__=   s   
zBuildEnvironment.__init__c                 C   s   t dd| _td| j tjdd | _tjdd | _tj	dkr$dnd}t
|| j| jdd	}|d
 }| jrD|tj | j tjd< n|tj tj tjd< |d |d kr\|d }n|d tj |d  }| jrw|tj | j tjd< | S |tjd< | S )Nzpep517-build-env-)prefixzTemporary build environment: %sPATH
PYTHONPATHntposix_prefix)baseplatbase)varsscriptspurelibplatlib)r   r   loginfor   environr   	save_pathsave_pythonpathnamer   pathsepdefpath)r   install_schemeinstall_dirsr&   lib_dirsr   r   r   	__enter__@   s2   



zBuildEnvironment.__enter__c                 C   sT   |sdS t d| tjddddd| jgt| }t|tt tj	tt tj
d dS )	zAInstall dependencies into this env by calling pip in a subprocessNzCalling pip to install %sz-mpipinstallz--ignore-installedz--prefix)stdoutstderr)r)   r*   sys
executabler   listr   r   loggingINFOERROR)r   reqscmdr   r   r   pip_install`   s   


zBuildEnvironment.pip_installc                 C   s   | j o| jd uotj| j}|rt| j | jd u r$tjdd  n| jtjd< | j	d u r8tjdd  d S | j	tjd< d S )Nr   r    )
r   r   r   isdirshutilrmtreer,   r+   popr-   )r   exc_typeexc_valexc_tbneeds_cleanupr   r   r   __exit__n   s   

zBuildEnvironment.__exit__)T)	__name__
__module____qualname____doc__r   r   r4   rA   rJ   r   r   r   r   r   !   s    
 r   c           	      C   z   |du ri }t | \}}}t| ||}t }|| ||}|| |||W  d   S 1 s6w   Y  dS )am  Build a wheel from a source directory using PEP 517 hooks.

    :param str source_dir: Source directory containing pyproject.toml
    :param str wheel_dir: Target directory to create wheel in
    :param dict config_settings: Options to pass to build backend

    This is a blocking function which will run pip in a subprocess to install
    build requirements.
    N)r   r   r   rA   get_requires_for_build_wheelbuild_wheel)	r   	wheel_dirconfig_settingsr
   backendbackend_pathhooksenvr?   r   r   r   rQ         




$rQ   c           	      C   rO   )am  Build an sdist from a source directory using PEP 517 hooks.

    :param str source_dir: Source directory containing pyproject.toml
    :param str sdist_dir: Target directory to place sdist in
    :param dict config_settings: Options to pass to build backend

    This is a blocking function which will run pip in a subprocess to install
    build requirements.
    N)r   r   r   rA   get_requires_for_build_sdistbuild_sdist)	r   	sdist_dirrS   r
   rT   rU   rV   rW   r?   r   r   r   rZ      rX   rZ   r   )rN   r   r   r<   rC   
subprocessr   r9   	sysconfigr   tempfiler   compatr   wrappersr   r   	getLoggerrK   r)   r   objectr   rQ   rZ   r   r   r   r   <module>   s     

a