diff --git a/src/pip/_internal/resolution/resolvelib/base.py b/src/pip/_internal/resolution/resolvelib/base.py index 57013b7b2..03d297ba2 100644 --- a/src/pip/_internal/resolution/resolvelib/base.py +++ b/src/pip/_internal/resolution/resolvelib/base.py @@ -55,7 +55,7 @@ class Candidate(object): raise NotImplementedError("Override in subclass") def iter_dependencies(self): - # type: () -> Iterable[Requirement] + # type: () -> Iterable[Optional[Requirement]] raise NotImplementedError("Override in subclass") def get_install_requirement(self): diff --git a/src/pip/_internal/resolution/resolvelib/candidates.py b/src/pip/_internal/resolution/resolvelib/candidates.py index 695b42a96..58684e832 100644 --- a/src/pip/_internal/resolution/resolvelib/candidates.py +++ b/src/pip/_internal/resolution/resolvelib/candidates.py @@ -217,7 +217,7 @@ class _InstallRequirementBackedCandidate(Candidate): return spec def iter_dependencies(self): - # type: () -> Iterable[Requirement] + # type: () -> Iterable[Optional[Requirement]] for r in self.dist.requires(): yield self._factory.make_requirement_from_spec(str(r), self._ireq) python_dep = self._factory.make_requires_python_requirement( @@ -343,7 +343,7 @@ class AlreadyInstalledCandidate(Candidate): return self.dist.parsed_version def iter_dependencies(self): - # type: () -> Iterable[Requirement] + # type: () -> Iterable[Optional[Requirement]] for r in self.dist.requires(): yield self._factory.make_requirement_from_spec(str(r), self._ireq) @@ -425,7 +425,7 @@ class ExtrasCandidate(Candidate): return self.base.is_installed def iter_dependencies(self): - # type: () -> Iterable[Requirement] + # type: () -> Iterable[Optional[Requirement]] factory = self.base._factory # The user may have specified extras that the candidate doesn't @@ -486,7 +486,7 @@ class RequiresPythonCandidate(Candidate): return self._version def iter_dependencies(self): - # type: () -> Iterable[Requirement] + # type: () -> Iterable[Optional[Requirement]] return () def get_install_requirement(self): diff --git a/src/pip/_internal/resolution/resolvelib/provider.py b/src/pip/_internal/resolution/resolvelib/provider.py index 98b9f9420..72f162059 100644 --- a/src/pip/_internal/resolution/resolvelib/provider.py +++ b/src/pip/_internal/resolution/resolvelib/provider.py @@ -147,4 +147,4 @@ class PipProvider(AbstractProvider): # type: (Candidate) -> Sequence[Requirement] if self._ignore_dependencies: return [] - return list(candidate.iter_dependencies()) + return [r for r in candidate.iter_dependencies() if r is not None]