3
ûâdeŸ	  ã               @   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)Zget_requires_for_build_wheelÚlogÚinfoÚpip_installr   Z prepare_metadata_for_build_wheelÚosÚpathÚjoinÚshutilÚmoveÚbasename)ÚhooksÚenvÚdestÚreqsÚtdÚfilenameÚsource© r   ú6/tmp/pip-build-red6nood/pip/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   ÚgetZ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
    r/   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    r4   Ú__main__)r    NN)%Ú__doc__ÚargparseÚloggingr   r   r+   Zimportlib.metadataÚmetadatar-   ÚImportErrorZimportlib_metadataÚzipfiler   ZzippZenvbuildr   Zwrappersr   r   Zdirtoolsr   r   r	   r&   r
   r   r   Ú	getLoggerÚ__name__r   r   r)   r/   ÚArgumentParserr1   Úadd_argumentr4   r   r   r   r   Ú<module>   s@   


