| Viewing file:  metadata_legacy.py (1.96 KB)      -rw-r--r-- Select action/file-type:
 
  (+) |  (+) |  (+) | Code (+) | Session (+) |  (+) | SDB (+) |  (+) |  (+) |  (+) |  (+) |  (+) | 
 
"""Metadata generation logic for legacy source distributions."""
 
 import logging
 import os
 
 from pip._internal.exceptions import InstallationError
 from pip._internal.utils.setuptools_build import make_setuptools_egg_info_args
 from pip._internal.utils.subprocess import call_subprocess
 from pip._internal.utils.temp_dir import TempDirectory
 from pip._internal.utils.typing import MYPY_CHECK_RUNNING
 
 if MYPY_CHECK_RUNNING:
 from pip._internal.build_env import BuildEnvironment
 
 logger = logging.getLogger(__name__)
 
 
 def _find_egg_info(directory):
 # type: (str) -> str
 """Find an .egg-info subdirectory in `directory`.
 """
 filenames = [
 f for f in os.listdir(directory) if f.endswith(".egg-info")
 ]
 
 if not filenames:
 raise InstallationError(
 "No .egg-info directory found in {}".format(directory)
 )
 
 if len(filenames) > 1:
 raise InstallationError(
 "More than one .egg-info directory found in {}".format(
 directory
 )
 )
 
 return os.path.join(directory, filenames[0])
 
 
 def generate_metadata(
 build_env,  # type: BuildEnvironment
 setup_py_path,  # type: str
 source_dir,  # type: str
 isolated,  # type: bool
 details,  # type: str
 ):
 # type: (...) -> str
 """Generate metadata using setup.py-based defacto mechanisms.
 
 Returns the generated metadata directory.
 """
 logger.debug(
 'Running setup.py (path:%s) egg_info for package %s',
 setup_py_path, details,
 )
 
 egg_info_dir = TempDirectory(
 kind="pip-egg-info", globally_managed=True
 ).path
 
 args = make_setuptools_egg_info_args(
 setup_py_path,
 egg_info_dir=egg_info_dir,
 no_user_config=isolated,
 )
 
 with build_env:
 call_subprocess(
 args,
 cwd=source_dir,
 command_desc='python setup.py egg_info',
 )
 
 # Return the .egg-info directory.
 return _find_egg_info(egg_info_dir)
 
 |