a
    &(a	                     @   s>  d Z ddlZddlZddlZddlZddlZzddlmZ W n e	yV   ddl
ZY n0 zddlmZ W n e	y   ddlmZ Y n0 ddlmZ ddlmZmZ ddlmZmZmZ ddlmZmZmZ eeZd	d
 ZdddZefddZdd Z e! Z"e"j#ddd e"j#dddd dd Z$edkr:e$  dS )z2Build metadata for a project using PEP 517 hooks.
    N)Path   )BuildEnvironment)Pep517HookCallerquiet_subprocess_runner)tempdirmkdir_pdir_to_zipfile)validate_systemload_systemcompat_systemc              
   C   s   |  i }td| || td t T}td| | |i }tj||}t	
|tj|tj| W d    n1 s0    Y  d S )NzGot build requires: %sz$Installed dynamic build dependencieszTrying to build metadata in %s)get_requires_for_build_wheelloginfopip_installr    prepare_metadata_for_build_wheelospathjoinshutilmovebasename)hooksenvdestreqstdfilenamesource r   o/private/var/folders/m4/wm8f9dms7t78045sws6ggdl80000gn/T/pip-unpacked-wheel-vn48x2xj/pip/_vendor/pep517/meta.py
_prep_meta   s    


r!   .c              	   C   s   |p
t | }tj| |pd}t| t| t| |d |d}|t	P t
 *}||d  t||| W d    n1 s0    Y  W d    n1 s0    Y  d S )Ndistzbuild-backendzbackend-pathrequires)r   r   r   r   r   r
   r   getsubprocess_runnerr   r   r   r!   )
source_dirr   systemr   r   r   r   r    build)   s    r)   c                 C   s<   t  "}| |d t|W  d    S 1 s.0    Y  d S )N)r   )r   r	   )builderout_dirr   r   r    build_as_zip8   s    
r,   c                 C   s:   t j| } t| }tjt| |d}tt|}t	
|S )z
    Given a source directory (root) of a package,
    return an importlib.metadata.Distribution object
    with metadata build from that package.
    )r'   r(   )r   r   
expanduserr   	functoolspartialr)   r   r,   imp_metaZPathDistribution)rootr(   r*   r   r   r   r    load>   s
    r2   r'   z%A directory containing pyproject.toml)helpz	--out-dirz-oz>Destination in which to save the builds relative to source dirc                  C   s   t  } t| j| j d S )N)parser
parse_argsr)   r'   r+   )argsr   r   r    mainV   s    r7   __main__)r"   NN)%__doc__argparseloggingr   r   r.   importlib.metadatametadatar0   ImportErrorZimportlib_metadatazipfiler   ZzippZenvbuildr   wrappersr   r   Zdirtoolsr   r   r	   r)   r
   r   r   	getLogger__name__r   r!   r,   r2   ArgumentParserr4   add_argumentr7   r   r   r   r    <module>   sD   


