Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 1 addition & 2 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,7 @@ exclude = "(?x)(^tests/.*/fixtures | ^src/poetry/core/_vendor)"
[[tool.mypy.overrides]]
module = [
'jsonschema.*',
'lark.*',
'setuptools.*',
'tomlkit.*',
]
Expand All @@ -99,8 +100,6 @@ module = [
'poetry.core.packages.utils.utils',
'poetry.core.packages.dependency',
'poetry.core.packages.package',
'poetry.core.packages.project_package',
'poetry.core.semver.version_range',
'poetry.core.semver.version_union',
'poetry.core.toml.exceptions',
'poetry.core.toml.file',
Expand Down
4 changes: 2 additions & 2 deletions src/poetry/core/factory.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,9 @@


if TYPE_CHECKING:
from poetry.core.packages.dependency import Dependency
from poetry.core.packages.dependency_group import DependencyGroup
from poetry.core.packages.project_package import ProjectPackage
from poetry.core.packages.types import DependencyTypes
from poetry.core.poetry import Poetry
from poetry.core.spdx.license import License
from poetry.core.version.markers import BaseMarker
Expand Down Expand Up @@ -224,7 +224,7 @@ def create_dependency(
constraint: DependencyConstraint,
groups: list[str] | None = None,
root_dir: Path | None = None,
) -> DependencyTypes:
) -> Dependency:
from poetry.core.packages.constraints import (
parse_constraint as parse_generic_constraint,
)
Expand Down
8 changes: 4 additions & 4 deletions src/poetry/core/packages/dependency_group.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,27 +4,27 @@


if TYPE_CHECKING:
from poetry.core.packages.types import DependencyTypes
from poetry.core.packages.dependency import Dependency


class DependencyGroup:
def __init__(self, name: str, optional: bool = False) -> None:
self._name: str = name
self._optional: bool = optional
self._dependencies: list[DependencyTypes] = []
self._dependencies: list[Dependency] = []

@property
def name(self) -> str:
return self._name

@property
def dependencies(self) -> list[DependencyTypes]:
def dependencies(self) -> list[Dependency]:
return self._dependencies

def is_optional(self) -> bool:
return self._optional

def add_dependency(self, dependency: DependencyTypes) -> None:
def add_dependency(self, dependency: Dependency) -> None:
self._dependencies.append(dependency)

def remove_dependency(self, name: str) -> None:
Expand Down
27 changes: 14 additions & 13 deletions src/poetry/core/packages/package.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
from typing import TYPE_CHECKING
from typing import Collection
from typing import Iterable
from typing import TypeVar

from poetry.core.packages.specification import PackageSpecification
from poetry.core.packages.utils.utils import create_nested_marker
Expand All @@ -16,15 +17,17 @@


if TYPE_CHECKING:
from poetry.core.packages.dependency import Dependency
from poetry.core.packages.dependency_group import DependencyGroup
from poetry.core.packages.types import DependencyTypes
from poetry.core.semver.version import Version
from poetry.core.semver.version_constraint import VersionConstraint
from poetry.core.spdx.license import License
from poetry.core.version.markers import BaseMarker

AUTHOR_REGEX = re.compile(r"(?u)^(?P<name>[- .,\w\d'’\"()&]+)(?: <(?P<email>.+?)>)?$")

T = TypeVar("T", bound="Package")


class Package(PackageSpecification):

Expand Down Expand Up @@ -96,17 +99,17 @@ def __init__(

# For compatibility with previous version, we keep the category
self.category = "main"
self.files = []
self.files: list[dict[str, str]] = []
self.optional = False

self.classifiers = []

self._python_versions = "*"
self._python_constraint = parse_constraint("*")
self._python_marker = AnyMarker()
self._python_marker: BaseMarker = AnyMarker()

self.platform = None
self.marker = AnyMarker()
self.marker: BaseMarker = AnyMarker()

self.root_dir: Path | None = None

Expand Down Expand Up @@ -183,7 +186,7 @@ def maintainer_email(self) -> str:
return self._get_maintainer()["email"]

@property
def requires(self) -> list[DependencyTypes]:
def requires(self) -> list[Dependency]:
"""
Returns the default dependencies
"""
Expand All @@ -195,7 +198,7 @@ def requires(self) -> list[DependencyTypes]:
@property
def all_requires(
self,
) -> list[DependencyTypes]:
) -> list[Dependency]:
"""
Returns the default dependencies and group dependencies.
"""
Expand Down Expand Up @@ -389,8 +392,8 @@ def dependency_group(self, name: str) -> DependencyGroup:

def add_dependency(
self,
dependency: DependencyTypes,
) -> DependencyTypes:
dependency: Dependency,
) -> Dependency:
from poetry.core.packages.dependency_group import DependencyGroup

for group_name in dependency.groups:
Expand Down Expand Up @@ -427,8 +430,8 @@ def without_optional_dependency_groups(self) -> Package:
return package

def with_dependency_groups(
self, groups: Collection[str], only: bool = False
) -> Package:
self: T, groups: Collection[str], only: bool = False
) -> T:
"""
Returns a clone of the package with the given dependency groups opted in.

Expand All @@ -445,9 +448,7 @@ def with_dependency_groups(

return package

def to_dependency(
self,
) -> DependencyTypes:
def to_dependency(self) -> Dependency:
from pathlib import Path

from poetry.core.packages.dependency import Dependency
Expand Down
20 changes: 10 additions & 10 deletions src/poetry/core/packages/project_package.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@


if TYPE_CHECKING:
from poetry.core.packages.types import DependencyTypes
from poetry.core.semver.version_constraint import VersionConstraint
from poetry.core.packages.dependency import Dependency
from poetry.core.semver.version import Version

from poetry.core.packages.package import Package
from poetry.core.packages.utils.utils import create_nested_marker
Expand All @@ -19,16 +19,16 @@ class ProjectPackage(Package):
def __init__(
self,
name: str,
version: str | VersionConstraint,
version: str | Version,
pretty_version: str | None = None,
) -> None:
super().__init__(name, version, pretty_version)

self.build_config = {}
self.packages = []
self.include = []
self.exclude = []
self.custom_urls = {}
self.build_config: dict[str, Any] = {}
self.packages: list[dict[str, Any]] = []
self.include: list[dict[str, Any]] = []
self.exclude: list[dict[str, Any]] = []
self.custom_urls: dict[str, str] = {}

if self._python_versions == "*":
self._python_constraint = parse_constraint("~2.7 || >=3.4")
Expand All @@ -40,7 +40,7 @@ def build_script(self) -> str | None:
def is_root(self) -> bool:
return True

def to_dependency(self) -> DependencyTypes:
def to_dependency(self) -> Dependency:
dependency = super().to_dependency()

dependency.is_root = True
Expand All @@ -64,7 +64,7 @@ def python_versions(self, value: str) -> None:
)

@property
def urls(self) -> dict[str, Any]:
def urls(self) -> dict[str, str]:
urls = super().urls

urls.update(self.custom_urls)
Expand Down
16 changes: 0 additions & 16 deletions src/poetry/core/packages/types.py

This file was deleted.

Empty file added src/poetry/core/py.typed
Empty file.
3 changes: 1 addition & 2 deletions src/poetry/core/pyproject/toml.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@
from pathlib import Path

from tomlkit.container import Container
from tomlkit.items import Item
from tomlkit.toml_document import TOMLDocument

from poetry.core.pyproject.tables import BuildSystem
Expand Down Expand Up @@ -60,7 +59,7 @@ def build_system(self) -> BuildSystem:
return self._build_system

@property
def poetry_config(self) -> Item | Container:
def poetry_config(self) -> Container:
from tomlkit.exceptions import NonExistentKey

try:
Expand Down
2 changes: 1 addition & 1 deletion src/poetry/core/semver/version.py
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ def is_empty(self) -> bool:
def is_simple(self) -> bool:
return True

def allows(self, version: Version) -> bool:
def allows(self, version: Version | None) -> bool:
if version is None:
return False

Expand Down
10 changes: 7 additions & 3 deletions src/poetry/core/semver/version_range.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,15 +39,15 @@ def __init__(
self._include_max = include_max

@property
def min(self) -> Version:
def min(self) -> Version | None:
return self._min

@property
def max(self) -> Version:
def max(self) -> Version | None:
return self._max

@property
def full_max(self) -> Version:
def full_max(self) -> Version | None:
return self._full_max

@property
Expand Down Expand Up @@ -177,6 +177,7 @@ def intersect(self, other: VersionConstraint) -> VersionConstraint:
# Because we already verified that the lower range isn't strictly
# lower, there must be some overlap.
assert intersect_include_min and intersect_include_max
assert intersect_min is not None

return intersect_min

Expand Down Expand Up @@ -267,6 +268,7 @@ def difference(self, other: VersionConstraint) -> VersionConstraint:
if not self.allows_any(other):
return self

before: VersionConstraint | None
if not self.allows_lower(other):
before = None
elif self.min == other.min:
Expand All @@ -276,6 +278,7 @@ def difference(self, other: VersionConstraint) -> VersionConstraint:
self.min, other.min, self.include_min, not other.include_min
)

after: VersionConstraint | None
if not self.allows_higher(other):
after = None
elif self.max == other.max:
Expand All @@ -289,6 +292,7 @@ def difference(self, other: VersionConstraint) -> VersionConstraint:
return EmptyConstraint()

if before is None:
assert after is not None
return after

if after is None:
Expand Down
6 changes: 3 additions & 3 deletions src/poetry/core/semver/version_range_constraint.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,17 +13,17 @@
class VersionRangeConstraint(VersionConstraint):
@property
@abstractmethod
def min(self) -> Version:
def min(self) -> Version | None:
raise NotImplementedError()

@property
@abstractmethod
def max(self) -> Version:
def max(self) -> Version | None:
raise NotImplementedError()

@property
@abstractmethod
def full_max(self) -> Version:
def full_max(self) -> Version | None:
raise NotImplementedError()

@property
Expand Down