From 5c9a5a62cbb969c03125a0f6fba7fd0e9f863c43 Mon Sep 17 00:00:00 2001 From: Damian Shaw Date: Sun, 23 Feb 2025 21:59:50 -0500 Subject: [PATCH] Lazily prepare distribution for candidate --- src/pip/_internal/resolution/resolvelib/candidates.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/pip/_internal/resolution/resolvelib/candidates.py b/src/pip/_internal/resolution/resolvelib/candidates.py index 1d21ede72cc..722e31c1bc0 100644 --- a/src/pip/_internal/resolution/resolvelib/candidates.py +++ b/src/pip/_internal/resolution/resolvelib/candidates.py @@ -138,7 +138,6 @@ class exposes appropriate information to the resolver. found remote link (e.g. from pypi.org). """ - dist: BaseDistribution is_installed = False def __init__( @@ -156,9 +155,17 @@ def __init__( self._ireq = ireq self._name = name self._version = version - self.dist = self._prepare() + self._dist: Optional[BaseDistribution] = None self._hash: Optional[int] = None + @property + def dist(self) -> BaseDistribution: + if self._dist is not None: + return self._dist + + self._dist = self._prepare() + return self._dist + def __str__(self) -> str: return f"{self.name} {self.version}"