U ��.e� �@sBdZddlZddlZddlZddlZddlZzddlmZWne k rXddl ZYnXzddl m Z Wn e k r�ddl m Z YnXddlmZddlmZmZddlmZmZmZddlmZmZmZe�e�Zd d �Zdd d �Zefdd�Zdd�Z e�!�Z"e"j#ddd�e"j#dddd�dd�Z$edk�r>e$�dS)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 Cs�|�i�}t�d|�|�|�t�d�t��J}t�d|�|�|i�}tj�||�}t � |tj�|tj� |���W5QRXdS)NzGot build requires: %sz$Installed dynamic build dependencieszTrying to build metadata in %s) Zget_requires_for_build_wheel�log�info� pip_installrZ prepare_metadata_for_build_wheel�os�path�join�shutilZmove�basename)�hooks�env�destZreqsZtd�filename�source�r�;/usr/lib/python3.8/site-packages/pip/_vendor/pep517/meta.py� _prep_metas      r�.c Cs�|p t|�}tj�||pd�}t|�t|�t||d|�d��}|�t ��2t �� }|� |d�t |||�W5QRXW5QRXdS)NZdistz build-backendz backend-pathZrequires) r rrrrr r�getZsubprocess_runnerrrrr)� source_dirr�systemrrrrr�build)s � r!c Cs0t�� }||d�t|�W5QR�SQRXdS)N)r)rr )�builder�out_dirrrr� build_as_zip8s r$cCs:tj�|�}t|�}tjt||d�}tt|��}t � |�S)z� Given a source directory (root) of a package, return an importlib.metadata.Distribution object with metadata build from that package. )rr ) rr� expanduserr � functools�partialr!rr$�imp_metaZPathDistribution)�rootr r"rrrr�load>s   r*rz%A directory containing pyproject.toml)�helpz --out-dirz-oz>Destination in which to save the builds relative to source dircCst��}t|j|j�dS)N)�parser� parse_argsr!rr#)�argsrrr�mainVsr/�__main__)rNN)%�__doc__�argparseZloggingrrr&�importlib.metadataZmetadatar(� ImportErrorZimportlib_metadataZzipfilerZzippZenvbuildrZwrappersrrZdirtoolsrrr r!r r r Z getLogger�__name__r rr$r*�ArgumentParserr,� add_argumentr/rrrr�sF     ��