U .e @ sB d Z ddlZddlZddlZddlZddlZzddlmZ W n e k rX ddl ZY nX zddlmZ W n e k r ddl mZ Y nX ddlmZ ddlmZmZ ddlmZmZmZ ddlmZmZmZ eeZd d Zddd ZefddZdd Z e! Z"e"j#ddd e"j#dddd dd Z$edkr>e$ dS )z2Build metadata for a project using PEP 517 hooks. N)Path )BuildEnvironment)Pep517HookCallerquiet_subprocess_runner)tempdirmkdir_pdir_to_zipfile)validate_systemload_system compat_systemc C s | i }td| || td t J}td| | |i }tj||}t |tj|tj| W 5 Q R X d S )NzGot build requires: %sz$Installed dynamic build dependencieszTrying to build metadata in %s)Zget_requires_for_build_wheelloginfopip_installr Z prepare_metadata_for_build_wheelospathjoinshutilZmovebasename)hooksenvdestZreqsZtdfilenamesource r ;/usr/lib/python3.8/site-packages/pip/_vendor/pep517/meta.py _prep_meta s r .c C s |p t | }tj| |pd}t| t| t| |d |d}|t 2 t }||d t||| W 5 Q R X W 5 Q R X d S )NZdistz build-backendzbackend-pathZrequires) r r r r r r r getZsubprocess_runnerr r r r ) source_dirr systemr r r r r build) s r! c C s0 t }| |d t|W 5 Q R S Q R X d S )N)r )r r )builderout_dirr r r build_as_zip8 s r$ c C s: t j| } 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. )r r )r r expanduserr functoolspartialr! r r$ imp_metaZPathDistribution)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 } t| j| j d S )N)parser parse_argsr! r r# )argsr r r mainV s r/ __main__)r NN)%__doc__argparseZloggingr r r&