U .e @sBdZddlZddlZddlZddlZddlZzddlmZWne k rXddl ZYnXzddl m Z Wn e k rddl m Z YnXddlmZddlmZmZddlmZmZmZddlmZmZmZeeZd d Zdd d ZefddZddZ e!Z"e"j#ddde"j#ddddddZ$edkr>e$dS)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|||tdtJ}td|||i}tj||}t |tj|tj |W5QRXdS)NzGot build requires: %sz$Installed dynamic build dependencieszTrying to build metadata in %s) Zget_requires_for_build_wheelloginfo pip_installrZ prepare_metadata_for_build_wheelospathjoinshutilZmovebasename)hooksenvdestZreqsZtdfilenamesourcer;/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 }| |dt |||W5QRXW5QRXdS)NZdistz build-backendz backend-pathZrequires) r rrrrr rgetZsubprocess_runnerrrrr) source_dirrsystemrrrrrbuild)s  r!c Cs0t }||dt|W5QRSQRXdS)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. )rr ) rr expanduserr functoolspartialr!rr$imp_metaZPathDistribution)rootr r"rrrrload>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|jdS)N)parser parse_argsr!rr#)argsrrrmainVsr/__main__)rNN)%__doc__argparseZloggingrrr&importlib.metadataZmetadatar( ImportErrorZimportlib_metadataZzipfilerZzippZenvbuildrZwrappersrrZdirtoolsrrr r!r r r Z getLogger__name__r rr$r*ArgumentParserr, add_argumentr/rrrrsF