Skip to content

Commit e7c66cd

Browse files
committed
Guard PackageFinder imports under TYPE_CHECKING in distributions
So freeze doesn't need to import the index/network modules.
1 parent a7b6ba6 commit e7c66cd

File tree

3 files changed

+17
-11
lines changed

3 files changed

+17
-11
lines changed

src/pip/_internal/distributions/base.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
import abc
2-
from typing import Optional
2+
from typing import TYPE_CHECKING, Optional
33

4-
from pip._internal.index.package_finder import PackageFinder
54
from pip._internal.metadata.base import BaseDistribution
65
from pip._internal.req import InstallRequirement
76

7+
if TYPE_CHECKING:
8+
from pip._internal.index.package_finder import PackageFinder
9+
810

911
class AbstractDistribution(metaclass=abc.ABCMeta):
1012
"""A base class for handling installable artifacts.
@@ -44,7 +46,7 @@ def get_metadata_distribution(self) -> BaseDistribution:
4446
@abc.abstractmethod
4547
def prepare_distribution_metadata(
4648
self,
47-
finder: PackageFinder,
49+
finder: "PackageFinder",
4850
build_isolation: bool,
4951
check_build_deps: bool,
5052
) -> None:

src/pip/_internal/distributions/sdist.py

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
11
import logging
2-
from typing import Iterable, Optional, Set, Tuple
2+
from typing import TYPE_CHECKING, Iterable, Optional, Set, Tuple
33

44
from pip._internal.build_env import BuildEnvironment
55
from pip._internal.distributions.base import AbstractDistribution
66
from pip._internal.exceptions import InstallationError
7-
from pip._internal.index.package_finder import PackageFinder
87
from pip._internal.metadata import BaseDistribution
98
from pip._internal.utils.subprocess import runner_with_spinner_message
109

10+
if TYPE_CHECKING:
11+
from pip._internal.index.package_finder import PackageFinder
12+
1113
logger = logging.getLogger(__name__)
1214

1315

@@ -29,7 +31,7 @@ def get_metadata_distribution(self) -> BaseDistribution:
2931

3032
def prepare_distribution_metadata(
3133
self,
32-
finder: PackageFinder,
34+
finder: "PackageFinder",
3335
build_isolation: bool,
3436
check_build_deps: bool,
3537
) -> None:
@@ -66,7 +68,7 @@ def prepare_distribution_metadata(
6668
self._raise_missing_reqs(missing)
6769
self.req.prepare_metadata()
6870

69-
def _prepare_build_backend(self, finder: PackageFinder) -> None:
71+
def _prepare_build_backend(self, finder: "PackageFinder") -> None:
7072
# Isolate in a BuildEnvironment and install the build-time
7173
# requirements.
7274
pyproject_requires = self.req.pyproject_requires
@@ -110,7 +112,7 @@ def _get_build_requires_editable(self) -> Iterable[str]:
110112
with backend.subprocess_runner(runner):
111113
return backend.get_requires_for_build_editable()
112114

113-
def _install_build_reqs(self, finder: PackageFinder) -> None:
115+
def _install_build_reqs(self, finder: "PackageFinder") -> None:
114116
# Install any extra build dependencies that the backend requests.
115117
# This must be done in a second pass, as the pyproject.toml
116118
# dependencies must be installed before we can call the backend.

src/pip/_internal/distributions/wheel.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,17 @@
1-
from typing import Optional
1+
from typing import TYPE_CHECKING, Optional
22

33
from pip._vendor.packaging.utils import canonicalize_name
44

55
from pip._internal.distributions.base import AbstractDistribution
6-
from pip._internal.index.package_finder import PackageFinder
76
from pip._internal.metadata import (
87
BaseDistribution,
98
FilesystemWheel,
109
get_wheel_distribution,
1110
)
1211

12+
if TYPE_CHECKING:
13+
from pip._internal.index.package_finder import PackageFinder
14+
1315

1416
class WheelDistribution(AbstractDistribution):
1517
"""Represents a wheel distribution.
@@ -33,7 +35,7 @@ def get_metadata_distribution(self) -> BaseDistribution:
3335

3436
def prepare_distribution_metadata(
3537
self,
36-
finder: PackageFinder,
38+
finder: "PackageFinder",
3739
build_isolation: bool,
3840
check_build_deps: bool,
3941
) -> None:

0 commit comments

Comments
 (0)