diff --git a/devel/py-setuptools/Makefile b/devel/py-setuptools/Makefile index 3cd00ac478de..f8441337aa21 100644 --- a/devel/py-setuptools/Makefile +++ b/devel/py-setuptools/Makefile @@ -1,38 +1,32 @@ PORTNAME= setuptools PORTVERSION= 63.1.0 PORTREVISION= 3 CATEGORIES= devel python MASTER_SITES= PYPI PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX} DIST_SUBDIR= python PATCH_SITES= https://github.com/pypa/${PORTNAME}/commit/ PATCHFILES= 6653e747c3815b140156249205397ef3719581ee.patch:-p1 # note: before committing a new major version, contact portmgr to # arrange for an experimental ports run. Untested commits may be # backed out. MAINTAINER= python@FreeBSD.org COMMENT= Python packages installer WWW= https://github.com/pypa/setuptools \ https://pypi.org/project/setuptools/ LICENSE= MIT LICENSE_FILE= ${WRKSRC}/LICENSE BUILD_DEPENDS= ${PYTHON_PKGNAMEPREFIX}wheel044<0.46.0:devel/py-wheel044@${PY_FLAVOR} USES= cpe python USE_PYTHON= allflavors autoplist concurrent pep517 # pytest to return later CPE_VENDOR= python NO_ARCH= yes -.include - -.if ${PYTHON_REL} < 31000 -EXTRA_PATCHES+= ${PATCHDIR}/py39 -.endif - -.include +.include diff --git a/devel/py-setuptools/files/py39/patch-setuptools___vendor_importlib__metadata_____init____.py b/devel/py-setuptools/files/py39/patch-setuptools___vendor_importlib__metadata_____init____.py deleted file mode 100644 index 70368aad04ff..000000000000 --- a/devel/py-setuptools/files/py39/patch-setuptools___vendor_importlib__metadata_____init____.py +++ /dev/null @@ -1,41 +0,0 @@ ---- setuptools/_vendor/importlib_metadata/__init__.py.orig 2022-07-04 02:25:25 UTC -+++ setuptools/_vendor/importlib_metadata/__init__.py -@@ -14,7 +14,7 @@ import collections - import posixpath - import collections - --from . import _adapters, _meta -+from . import _adapters, _meta, _py39compat - from ._collections import FreezableDefaultDict, Pair - from ._compat import ( - NullFinder, -@@ -180,6 +180,10 @@ class EntryPoint(DeprecatedTuple): - following the attr, and following any extras. - """ - -+ name: str -+ value: str -+ group: str -+ - dist: Optional['Distribution'] = None - - def __init__(self, name, value, group): -@@ -350,7 +354,8 @@ class EntryPoints(DeprecatedList): - Select entry points from self that match the - given parameters (typically group and/or name). - """ -- return EntryPoints(ep for ep in self if ep.matches(**params)) -+ candidates = (_py39compat.ep_matches(ep, **params) for ep in self) -+ return EntryPoints(ep for ep, predicate in candidates if predicate) - - @property - def names(self): -@@ -991,7 +996,7 @@ def entry_points(**params) -> Union[EntryPoints, Selec - - :return: EntryPoints or SelectableGroups for all installed packages. - """ -- norm_name = operator.attrgetter('_normalized_name') -+ norm_name = _py39compat.normalized_name - unique = functools.partial(unique_everseen, key=norm_name) - eps = itertools.chain.from_iterable( - dist.entry_points for dist in unique(distributions()) diff --git a/devel/py-setuptools/files/py39/patch-setuptools___vendor_importlib__metadata___py39compat.py b/devel/py-setuptools/files/py39/patch-setuptools___vendor_importlib__metadata___py39compat.py deleted file mode 100644 index ce7b7d034c54..000000000000 --- a/devel/py-setuptools/files/py39/patch-setuptools___vendor_importlib__metadata___py39compat.py +++ /dev/null @@ -1,51 +0,0 @@ ---- setuptools/_vendor/importlib_metadata/_py39compat.py.orig 2025-04-10 14:12:41 UTC -+++ setuptools/_vendor/importlib_metadata/_py39compat.py -@@ -0,0 +1,48 @@ -+""" -+Compatibility layer with Python 3.8/3.9 -+""" -+from typing import TYPE_CHECKING, Any, Optional, Tuple -+ -+if TYPE_CHECKING: # pragma: no cover -+ # Prevent circular imports on runtime. -+ from . import Distribution, EntryPoint -+else: -+ Distribution = EntryPoint = Any -+ -+ -+def normalized_name(dist: Distribution) -> Optional[str]: -+ """ -+ Honor name normalization for distributions that don't provide ``_normalized_name``. -+ """ -+ try: -+ return dist._normalized_name -+ except AttributeError: -+ from . import Prepared # -> delay to prevent circular imports. -+ -+ return Prepared.normalize(getattr(dist, "name", None) or dist.metadata['Name']) -+ -+ -+def ep_matches(ep: EntryPoint, **params) -> Tuple[EntryPoint, bool]: -+ """ -+ Workaround for ``EntryPoint`` objects without the ``matches`` method. -+ For the sake of convenience, a tuple is returned containing not only the -+ boolean value corresponding to the predicate evalutation, but also a compatible -+ ``EntryPoint`` object that can be safely used at a later stage. -+ -+ For example, the following sequences of expressions should be compatible: -+ -+ # Sequence 1: using the compatibility layer -+ candidates = (_py39compat.ep_matches(ep, **params) for ep in entry_points) -+ [ep for ep, predicate in candidates if predicate] -+ -+ # Sequence 2: using Python 3.9+ -+ [ep for ep in entry_points if ep.matches(**params)] -+ """ -+ try: -+ return ep, ep.matches(**params) -+ except AttributeError: -+ from . import EntryPoint # -> delay to prevent circular imports. -+ -+ # Reconstruct the EntryPoint object to make sure it is compatible. -+ _ep = EntryPoint(ep.name, ep.value, ep.group) -+ return _ep, _ep.matches(**params) diff --git a/devel/py-setuptools/files/py39/patch-setuptools_dist.py b/devel/py-setuptools/files/py39/patch-setuptools_dist.py deleted file mode 100644 index d84f76b41162..000000000000 --- a/devel/py-setuptools/files/py39/patch-setuptools_dist.py +++ /dev/null @@ -1,14 +0,0 @@ ---- setuptools/dist.py.orig 2022-07-04 02:25:25 UTC -+++ setuptools/dist.py -@@ -777,8 +777,9 @@ class Distribution(_Distribution): - - def _setuptools_commands(self): - try: -- return metadata.distribution('setuptools').entry_points.names -- except metadata.PackageNotFoundError: -+ dist = pkg_resources.get_distribution('setuptools') -+ return list(dist.get_entry_map('distutils.commands')) -+ except pkg_resources.DistributionNotFound: - # during bootstrapping, distribution doesn't exist - return [] -