a Re@sddlZddlmZmZmZddlmZddlmZddl m Z ddl m Z ddl mZddlmZeeZGd d d eZdS) N)IterableSetTuple)BuildEnvironment)AbstractDistribution)InstallationError) PackageFinder)BaseDistribution)runner_with_spinner_messagec@seZdZdZedddZeeddddZedd d d Z e e dd d Z e e dddZ edd ddZe eee e fddddZdS)SourceDistributionzRepresents a source distribution. The preparation step for these needs metadata for the packages to be generated, either using PEP 517 or using the legacy `setup.py egg_info`. )returncCsddlm}||jS)Nr) Distribution)$pip._internal.metadata.pkg_resourcesr reqget_dist)self_Distr/builddir/build/BUILDROOT/alt-python39-pip-21.3.1-2.el8.x86_64/opt/alt/python39/lib/python3.9/site-packages/pip/_internal/distributions/sdist.pyget_metadata_distributions z,SourceDistribution.get_metadata_distributionN)finderbuild_isolationr cCsF|j|jjo|}|r8|||j|||jdS)N)rload_pyproject_toml use_pep517_prepare_build_backendisolated_editable_sanity_check_install_build_reqsprepare_metadata)rrrshould_isolaterrrprepare_distribution_metadatas     z0SourceDistribution.prepare_distribution_metadata)rr c Cs|jj}|dusJt|j_|jj||dd|jj|jj\}}|rX|d||rt d|jt dd t t t |dS)NoverlayzInstalling build dependenciesz"PEP 517/518 supported requirementsz4Missing build requirements in pyproject.toml for %s.z`The project does not specify a build backend, and pip cannot fall back to setuptools without %s.z and )rpyproject_requiresr build_envinstall_requirementscheck_requirementsrequirements_to_check_raise_conflictsloggerwarningjoinmapreprsorted)rrr! conflictingmissingrrrr3s(   z)SourceDistribution._prepare_build_backendc Cs|jjltd}|jj}|dus&J||&|WdWdS1s\0YWdn1sz0YdS)Nz#Getting requirements to build wheel)rr"r pep517_backendsubprocess_runnerget_requires_for_build_wheelrrunnerbackendrrr_get_build_requires_wheelMs    z,SourceDistribution._get_build_requires_wheelc Cs|jjltd}|jj}|dus&J||&|WdWdS1s\0YWdn1sz0YdS)Nz&Getting requirements to build editable)rr"r r/r0get_requires_for_build_editabler2rrr_get_build_requires_editableUs   z/SourceDistribution._get_build_requires_editablecCsf|jjr$|jjr$|jr$|}n|}|jj|\}}|rN|d||jj ||dddS)Nzthe backend dependenciesnormalzInstalling backend dependencies) reditablepermit_editable_wheelssupports_pyproject_editabler7r5r"r$r&r#)rr build_reqsr-r.rrrr_s  z&SourceDistribution._install_build_reqs)conflicting_withconflicting_reqsr cCs6d}|j|j|dddt|Dd}t|dS)NzZSome build dependencies for {requirement} conflict with {conflicting_with}: {description}.z, css |]\}}|d|VqdS)z is incompatible with Nr).0 installedwantedrrr |sz6SourceDistribution._raise_conflicts..) requirementr= description)formatrr)r,r)rr=r> format_string error_messagerrrr&rs z#SourceDistribution._raise_conflicts)__name__ __module__ __qualname____doc__r rrboolrrrstrr5r7rrrr&rrrrr s  r )loggingtypingrrrpip._internal.build_envr pip._internal.distributions.baserpip._internal.exceptionsr"pip._internal.index.package_finderrpip._internal.metadatar pip._internal.utils.subprocessr getLoggerrHr'r rrrrs