PythonExtension: fix issue where package does not extend python (#44109)

This commit is contained in:
Harmen Stoppels 2024-05-10 10:47:37 +02:00
parent f55224f161
commit 252a5bd71b

View file

@ -120,12 +120,6 @@ def skip_modules(self) -> Iterable[str]:
""" """
return [] return []
@property
def python_spec(self):
"""Get python-venv if it exists or python otherwise."""
python, *_ = self.spec.dependencies("python-venv") or self.spec.dependencies("python")
return python
def view_file_conflicts(self, view, merge_map): def view_file_conflicts(self, view, merge_map):
"""Report all file conflicts, excepting special cases for python. """Report all file conflicts, excepting special cases for python.
Specifically, this does not report errors for duplicate Specifically, this does not report errors for duplicate
@ -146,8 +140,12 @@ def view_file_conflicts(self, view, merge_map):
def add_files_to_view(self, view, merge_map, skip_if_exists=True): def add_files_to_view(self, view, merge_map, skip_if_exists=True):
# Patch up shebangs if the package extends Python and we put a Python interpreter in the # Patch up shebangs if the package extends Python and we put a Python interpreter in the
# view. # view.
python = self.python_spec if not self.extendee_spec:
if not self.extendee_spec or python.external: return super().add_files_to_view(view, merge_map, skip_if_exists)
python, *_ = self.spec.dependencies("python-venv") or self.spec.dependencies("python")
if python.external:
return super().add_files_to_view(view, merge_map, skip_if_exists) return super().add_files_to_view(view, merge_map, skip_if_exists)
# We only patch shebangs in the bin directory. # We only patch shebangs in the bin directory.
@ -368,6 +366,12 @@ def list_url(cls) -> Optional[str]: # type: ignore[override]
return f"https://pypi.org/simple/{name}/" return f"https://pypi.org/simple/{name}/"
return None return None
@property
def python_spec(self):
"""Get python-venv if it exists or python otherwise."""
python, *_ = self.spec.dependencies("python-venv") or self.spec.dependencies("python")
return python
@property @property
def headers(self) -> HeaderList: def headers(self) -> HeaderList:
"""Discover header files in platlib.""" """Discover header files in platlib."""