o
    b	                     @   s@  d 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zddlmZ	 W n e
y/   ddlZ	Y nw zddlmZ W n e
yG   ddlmZ Y nw ddlmZmZ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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re#  dS dS )z2Build metadata for a project using PEP 517 hooks.
    N)Path   )compat_systemload_systemvalidate_system)dir_to_zipfile)BuildEnvironment)Pep517HookCallerquiet_subprocess_runnerc              
   C   s   |  i }td| || td t +}td| | |i }tj	||}t
|tj	|tj| W d    d S 1 sGw   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_installtempfileTemporaryDirectory prepare_metadata_for_build_wheelospathjoinshutilmovebasename)hooksenvdestreqstdfilenamesource r   /usr/lib/python3.10/site-packages/pep517/meta.py
_prep_meta   s   



 "r!   .c              	   C   s   |pt | }tj| |pd}tj|dd t| t| |d |d}|t	1 t
 }||d  t||| W d    n1 sFw   Y  W d    d S W d    d S 1 s^w   Y  d S )NdistT)exist_okzbuild-backendzbackend-pathrequires)r   r   r   r   makedirsr   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w   Y  d S )N)r   )r   r   r   )builderout_dirr   r   r    build_as_zip9   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_metaPathDistribution)rootr*   r,   r   r   r   r    load?   s
   
r5   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    mainW   s   r:   __main__)r"   NN)$__doc__argparser0   loggingr   r   r   importlib.metadatametadatar2   ImportErrorimportlib_metadatazipfiler   zippr+   r   r   r   Zdirtoolsr   Zenvbuildr   wrappersr	   r
   	getLogger__name__r   r!   r.   r5   ArgumentParserr7   add_argumentr:   r   r   r   r    <module>   sN    


