o 7]h @s@dZddlZddlZddlZddlZddlZzddlmZWn e y+ddl ZYnwzddl m Z Wne yCddl m Z YnwddlmZddlmZmZddlmZmZmZddlmZmZmZeeZd d Zdd d ZefddZddZ e!Z"e"j#ddde"j#ddddddZ$edkre$dSdS)z2Build metadata for a project using PEP 517 hooks. N)Path)BuildEnvironment)Pep517HookCallerquiet_subprocess_runner)tempdirmkdir_pdir_to_zipfile)validate_system load_system compat_systemc Cs|i}td|||tdt+}td|||i}tj||}t |tj|tj |WddS1sFwYdS)NzGot build requires: %sz$Installed dynamic build dependencieszTrying to build metadata in %s) get_requires_for_build_wheelloginfo pip_installr prepare_metadata_for_build_wheelospathjoinshutilmovebasename)hooksenvdestreqstdfilenamesourcer9/usr/lib/python3/dist-packages/pip/_vendor/pep517/meta.py _prep_metas       "r!.c Cs|pt|}tj||p d}t|t|t||d|d}|t 1t }| |dt |||Wdn1sCwYWddSWddS1s[wYdS)Ndistz build-backendz backend-pathrequires) r rrrrr rgetsubprocess_runnerrrrr!) source_dirrsystemrrrrr build)s  "r)cCs<t}||dt|WdS1swYdS)N)r)rr )builderout_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. )r'r() rr expanduserr functoolspartialr)rr,imp_metaPathDistribution)rootr(r*rrrr load>s   r3r'z%A directory containing pyproject.toml)helpz --out-dirz-oz>Destination in which to save the builds relative to source dircCst}t|j|jdS)N)parser parse_argsr)r'r+)argsrrr mainVsr8__main__)r"NN)%__doc__argparseloggingrrr.importlib.metadatametadatar0 ImportErrorimportlib_metadatazipfilerzippenvbuildrwrappersrrdirtoolsrrr r)r r r getLogger__name__rr!r,r3ArgumentParserr5 add_argumentr8rrrr sL