diff --git a/changelogs/unreleased/fix-pkgresources-import.yml b/changelogs/unreleased/fix-pkgresources-import.yml new file mode 100644 index 0000000000..be4b9e3f03 --- /dev/null +++ b/changelogs/unreleased/fix-pkgresources-import.yml @@ -0,0 +1,8 @@ +description: Fixed dropped import from pkg_resources +change-type: patch +sections: + bugfix: "Addressed breaking change in setuptools (core Python library)" + upgrade-note: "If you had previously constrained `setuptools<71` in your project's `requirements.txt`, you may now drop the constraint" +destination-branches: + - master + - iso7 diff --git a/src/inmanta/env.py b/src/inmanta/env.py index 89b719af2d..f4d4cd73ac 100644 --- a/src/inmanta/env.py +++ b/src/inmanta/env.py @@ -878,6 +878,8 @@ def is_owned_by(self, owners: abc.Set[str]) -> bool: installed_constraints: abc.Set[OwnedRequirement] = frozenset( OwnedRequirement(requirement, dist_info.key) for dist_info in pkg_resources.working_set + # pypa/setuptools#4482. May be removed when we migrate away from pkg_resources + if not dist_info.location.endswith("setuptools/_vendor") for requirement in dist_info.requires() ) inmanta_constraints: abc.Set[OwnedRequirement] = frozenset( @@ -973,6 +975,8 @@ def check_legacy(cls, in_scope: Pattern[str], constraints: Optional[list[Require requirement for dist_info in working_set if in_scope.fullmatch(dist_info.key) + # pypa/setuptools#4482. May be removed when we migrate away from pkg_resources + if not dist_info.location.endswith("setuptools/_vendor") for requirement in dist_info.requires() ) diff --git a/src/inmanta/moduletool.py b/src/inmanta/moduletool.py index 403191db99..fd97ada02b 100644 --- a/src/inmanta/moduletool.py +++ b/src/inmanta/moduletool.py @@ -38,7 +38,7 @@ from configparser import ConfigParser from functools import total_ordering from re import Pattern -from typing import IO, TYPE_CHECKING, Any, Optional +from typing import IO, Any, Optional import click import more_itertools @@ -76,13 +76,9 @@ gitprovider, ) from inmanta.stable_api import stable_api +from packaging.requirements import InvalidRequirement from packaging.version import Version -if TYPE_CHECKING: - from packaging.requirements import InvalidRequirement -else: - from pkg_resources.extern.packaging.requirements import InvalidRequirement - LOGGER = logging.getLogger(__name__)