Commit 65ff74a9 by Randy Döring Committed by Bjorn Neergaard

mypy: adapt type hints to change in poetry-core#442

parent d1dbdefc
...@@ -44,7 +44,7 @@ generate-setup-file = false ...@@ -44,7 +44,7 @@ generate-setup-file = false
[tool.poetry.dependencies] [tool.poetry.dependencies]
python = "^3.7" python = "^3.7"
poetry-core = "^1.1.0b3" poetry-core = "^1.1.0rc1"
poetry-plugin-export = "^1.0.6" poetry-plugin-export = "^1.0.6"
cachecontrol = { version = "^0.12.9", extras = ["filecache"] } cachecontrol = { version = "^0.12.9", extras = ["filecache"] }
cachy = "^0.3.0" cachy = "^0.3.0"
......
...@@ -19,6 +19,7 @@ from poetry.utils.dependency_specification import parse_dependency_specification ...@@ -19,6 +19,7 @@ from poetry.utils.dependency_specification import parse_dependency_specification
if TYPE_CHECKING: if TYPE_CHECKING:
from packaging.utils import NormalizedName
from poetry.core.packages.package import Package from poetry.core.packages.package import Package
from tomlkit.items import InlineTable from tomlkit.items import InlineTable
...@@ -238,7 +239,7 @@ You can specify a package in the following forms: ...@@ -238,7 +239,7 @@ You can specify a package in the following forms:
return 0 return 0
def _generate_choice_list( def _generate_choice_list(
self, matches: list[Package], canonicalized_name: str self, matches: list[Package], canonicalized_name: NormalizedName
) -> list[str]: ) -> list[str]:
choices = [] choices = []
matches_names = [p.name for p in matches] matches_names = [p.name for p in matches]
......
...@@ -11,6 +11,7 @@ from poetry.console.commands.group_command import GroupCommand ...@@ -11,6 +11,7 @@ from poetry.console.commands.group_command import GroupCommand
if TYPE_CHECKING: if TYPE_CHECKING:
from cleo.io.io import IO from cleo.io.io import IO
from packaging.utils import NormalizedName
from poetry.core.packages.dependency import Dependency from poetry.core.packages.dependency import Dependency
from poetry.core.packages.package import Package from poetry.core.packages.package import Package
from poetry.core.packages.project_package import ProjectPackage from poetry.core.packages.project_package import ProjectPackage
...@@ -423,7 +424,7 @@ lists all packages available.""" ...@@ -423,7 +424,7 @@ lists all packages available."""
io: IO, io: IO,
dependency: Dependency, dependency: Dependency,
installed_packages: list[Package], installed_packages: list[Package],
packages_in_tree: list[str], packages_in_tree: list[NormalizedName],
previous_tree_bar: str = "├", previous_tree_bar: str = "├",
level: int = 1, level: int = 1,
) -> None: ) -> None:
......
...@@ -544,6 +544,7 @@ class Installer: ...@@ -544,6 +544,7 @@ class Installer:
Maybe we just let the solver handle it? Maybe we just let the solver handle it?
""" """
extras: dict[str, list[str]]
if self._update: if self._update:
extras = {k: [d.name for d in v] for k, v in self._package.extras.items()} extras = {k: [d.name for d in v] for k, v in self._package.extras.items()}
else: else:
......
...@@ -14,6 +14,7 @@ from poetry.repositories.link_sources.html import SimpleRepositoryPage ...@@ -14,6 +14,7 @@ from poetry.repositories.link_sources.html import SimpleRepositoryPage
if TYPE_CHECKING: if TYPE_CHECKING:
from packaging.utils import NormalizedName
from poetry.core.packages.utils.link import Link from poetry.core.packages.utils.link import Link
from poetry.core.semver.version_constraint import VersionConstraint from poetry.core.semver.version_constraint import VersionConstraint
...@@ -66,13 +67,15 @@ class LegacyRepository(HTTPRepository): ...@@ -66,13 +67,15 @@ class LegacyRepository(HTTPRepository):
return list(page.links_for_version(package.name, package.version)) return list(page.links_for_version(package.name, package.version))
def _find_packages(self, name: str, constraint: VersionConstraint) -> list[Package]: def _find_packages(
self, name: NormalizedName, constraint: VersionConstraint
) -> list[Package]:
""" """
Find packages on the remote server. Find packages on the remote server.
""" """
versions: list[Version] versions: list[Version]
key = name key: str = name
if not constraint.is_any(): if not constraint.is_any():
key = f"{key}:{constraint!s}" key = f"{key}:{constraint!s}"
......
...@@ -27,6 +27,7 @@ logger = logging.getLogger(__name__) ...@@ -27,6 +27,7 @@ logger = logging.getLogger(__name__)
if TYPE_CHECKING: if TYPE_CHECKING:
from packaging.utils import NormalizedName
from poetry.core.semver.version_constraint import VersionConstraint from poetry.core.semver.version_constraint import VersionConstraint
...@@ -90,7 +91,7 @@ class PyPiRepository(HTTPRepository): ...@@ -90,7 +91,7 @@ class PyPiRepository(HTTPRepository):
return results return results
def get_package_info(self, name: str) -> dict[str, Any]: def get_package_info(self, name: NormalizedName) -> dict[str, Any]:
""" """
Return the package information given its name. Return the package information given its name.
...@@ -105,7 +106,9 @@ class PyPiRepository(HTTPRepository): ...@@ -105,7 +106,9 @@ class PyPiRepository(HTTPRepository):
) )
return package_info return package_info
def _find_packages(self, name: str, constraint: VersionConstraint) -> list[Package]: def _find_packages(
self, name: NormalizedName, constraint: VersionConstraint
) -> list[Package]:
""" """
Find packages on the remote server. Find packages on the remote server.
""" """
...@@ -145,7 +148,7 @@ class PyPiRepository(HTTPRepository): ...@@ -145,7 +148,7 @@ class PyPiRepository(HTTPRepository):
return packages return packages
def _get_package_info(self, name: str) -> dict[str, Any]: def _get_package_info(self, name: NormalizedName) -> dict[str, Any]:
data = self._get(f"pypi/{name}/json") data = self._get(f"pypi/{name}/json")
if data is None: if data is None:
raise PackageNotFound(f"Package [{name}] not found.") raise PackageNotFound(f"Package [{name}] not found.")
......
...@@ -12,6 +12,7 @@ from poetry.repositories.exceptions import PackageNotFound ...@@ -12,6 +12,7 @@ from poetry.repositories.exceptions import PackageNotFound
if TYPE_CHECKING: if TYPE_CHECKING:
from packaging.utils import NormalizedName
from poetry.core.packages.dependency import Dependency from poetry.core.packages.dependency import Dependency
from poetry.core.packages.package import Package from poetry.core.packages.package import Package
from poetry.core.packages.utils.link import Link from poetry.core.packages.utils.link import Link
...@@ -112,7 +113,9 @@ class Repository: ...@@ -112,7 +113,9 @@ class Repository:
return constraint, allow_prereleases return constraint, allow_prereleases
def _find_packages(self, name: str, constraint: VersionConstraint) -> list[Package]: def _find_packages(
self, name: NormalizedName, constraint: VersionConstraint
) -> list[Package]:
return [ return [
package package
for package in self._packages for package in self._packages
......
...@@ -641,8 +641,9 @@ class EnvManager: ...@@ -641,8 +641,9 @@ class EnvManager:
def deactivate(self, io: IO) -> None: def deactivate(self, io: IO) -> None:
venv_path = self._poetry.config.virtualenvs_path venv_path = self._poetry.config.virtualenvs_path
name = self._poetry.package.name name = self.generate_env_name(
name = self.generate_env_name(name, str(self._poetry.file.parent)) self._poetry.package.name, str(self._poetry.file.parent)
)
envs_file = TOMLFile(venv_path / self.ENVS_FILE) envs_file = TOMLFile(venv_path / self.ENVS_FILE)
if envs_file.exists(): if envs_file.exists():
......
...@@ -9,6 +9,7 @@ if TYPE_CHECKING: ...@@ -9,6 +9,7 @@ if TYPE_CHECKING:
from collections.abc import Sequence from collections.abc import Sequence
from typing import Mapping from typing import Mapping
from packaging.utils import NormalizedName
from poetry.core.packages.package import Package from poetry.core.packages.package import Package
...@@ -43,13 +44,15 @@ def get_extra_package_names( ...@@ -43,13 +44,15 @@ def get_extra_package_names(
# keep record of packages seen during recursion in order to avoid recursion error # keep record of packages seen during recursion in order to avoid recursion error
seen_package_names = set() seen_package_names = set()
def _extra_packages(package_names: Iterable[str]) -> Iterator[str]: def _extra_packages(
package_names: Iterable[NormalizedName],
) -> Iterator[NormalizedName]:
"""Recursively find dependencies for packages names""" """Recursively find dependencies for packages names"""
# for each extra package name # for each extra package name
for package_name in package_names: for package_name in package_names:
# Find the actual Package object. A missing key indicates an implicit # Find the actual Package object. A missing key indicates an implicit
# dependency (like setuptools), which should be ignored # dependency (like setuptools), which should be ignored
package = packages_by_name.get(canonicalize_name(package_name)) package = packages_by_name.get(package_name)
if package: if package:
if package.name not in seen_package_names: if package.name not in seen_package_names:
seen_package_names.add(package.name) seen_package_names.add(package.name)
......
...@@ -63,7 +63,7 @@ def test_get_extra_package_names( ...@@ -63,7 +63,7 @@ def test_get_extra_package_names(
extras: dict[str, list[str]], extras: dict[str, list[str]],
extra_names: list[str], extra_names: list[str],
expected_extra_package_names: list[str], expected_extra_package_names: list[str],
): ) -> None:
assert ( assert (
list(get_extra_package_names(packages, extras, extra_names)) list(get_extra_package_names(packages, extras, extra_names))
== expected_extra_package_names == expected_extra_package_names
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment