3
Ug	                 @   s@  d Z ddlZddlZddlZddlZddlZyddljZW n e	k
rV   ddl
ZY nX yddlmZ W n  e	k
r   ddlmZ Y nX 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jeZd	d
 ZdddZefddZdd Z ej! 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   | j i }tjd| |j| tjd t J}tjd| | j|i }tjj||}t	j
|tjj|tjj| W d Q R X 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   ;/tmp/pip-unpacked-wheel-0ht26j5g/pip/_vendor/pep517/meta.py
_prep_meta   s    


r!   .c             C   s   |p
t | }tjj| |pd}t| t| t| |d |jd}|jt	2 t
  }|j|d  t||| W d Q R X W d Q R X 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|S Q R X d S )N)r   )r   r	   )builderout_dirr   r   r    build_as_zip8   s    
r,   c             C   s:   t jj| } t| }tjt| |d}tt|}t	j
|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 j } 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.   Z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>   s@   


