diff --git a/last_commit.txt b/last_commit.txt index 6f14e63c67..80f35d017a 100644 --- a/last_commit.txt +++ b/last_commit.txt @@ -1,70 +1,50 @@ -Repository: plone.api +Repository: plone.app.contentmenu -Branch: refs/heads/main -Date: 2025-02-28T22:08:58+01:00 +Branch: refs/heads/master +Date: 2025-02-28T20:02:34+01:00 Author: Gil Forcada Codinachs (gforcada) -Commit: https://github.com/plone/plone.api/commit/aca634c9f1826b87d77ab4aa896bec6a49b07de6 +Commit: https://github.com/plone/plone.app.contentmenu/commit/0a3497d0847dd19575fbc05fef6c491c7cb884a5 fix: replace pkg_resources with importlib -Files changed: -M src/plone/api/env.py -M src/plone/api/relation.py -M src/plone/api/tests/test_doctests.py -M src/plone/api/tests/test_portal.py - -b'diff --git a/src/plone/api/env.py b/src/plone/api/env.py\nindex 5eb5506a..3d5cee33 100644\n--- a/src/plone/api/env.py\n+++ b/src/plone/api/env.py\n@@ -6,7 +6,7 @@\n from App.config import getConfiguration\n from contextlib import closing\n from contextlib import contextmanager\n-from pkg_resources import get_distribution\n+from importlib.metadata import version\n from plone.api import portal\n from plone.api.exc import InvalidParameterError\n from plone.api.exc import UserNotFoundError\n@@ -222,7 +222,7 @@ def plone_version():\n :returns: string denoting what release of Plone this distribution contains\n :Example: :ref:`env-plone-version-example`\n """\n- return get_distribution("Products.CMFPlone").version\n+ return version("Products.CMFPlone")\n \n \n def zope_version():\n@@ -231,4 +231,4 @@ def zope_version():\n :returns: string denoting what release of Zope2 this distribution contains\n :Example: :ref:`env-zope-version-example`\n """\n- return get_distribution("Zope").version\n+ return version("Zope")\ndiff --git a/src/plone/api/relation.py b/src/plone/api/relation.py\nindex a01f8b9f..10a0fa10 100644\n--- a/src/plone/api/relation.py\n+++ b/src/plone/api/relation.py\n@@ -5,6 +5,8 @@\n \n from AccessControl.SecurityManagement import getSecurityManager\n from collections import defaultdict\n+from importlib.metadata import distribution\n+from importlib.metadata import PackageNotFoundError\n from plone.api.exc import InvalidParameterError\n from plone.api.validation import at_least_one_of\n from plone.api.validation import required_parameters\n@@ -23,12 +25,11 @@\n from zope.lifecycleevent import modified\n \n import logging\n-import pkg_resources\n \n \n try:\n- pkg_resources.get_distribution("plone.app.iterate")\n-except pkg_resources.DistributionNotFound:\n+ distribution("plone.app.iterate")\n+except PackageNotFoundError:\n ITERATE_RELATION_NAME = None\n StagingRelationValue = None\n else:\ndiff --git a/src/plone/api/tests/test_doctests.py b/src/plone/api/tests/test_doctests.py\nindex c7446127..5a94579e 100644\n--- a/src/plone/api/tests/test_doctests.py\n+++ b/src/plone/api/tests/test_doctests.py\n@@ -1,5 +1,7 @@\n """Boilerplate for doctest functional tests."""\n \n+from importlib.metadata import distribution\n+from importlib.metadata import PackageNotFoundError\n from logging import getLogger\n from plone.app.testing import applyProfile\n from plone.app.testing import PLONE_INTEGRATION_TESTING\n@@ -16,7 +18,6 @@\n import manuel.myst.codeblock\n import manuel.testing\n import os\n-import pkg_resources\n import re\n import unittest\n \n@@ -24,11 +25,10 @@\n logger = getLogger(__name__)\n \n try:\n- pkg_resources.get_distribution("plone.app.contenttypes")\n-except pkg_resources.DistributionNotFound:\n- HAS_PA_CONTENTTYPES = False\n-else:\n+ distribution("plone.app.contenttypes")\n HAS_PA_CONTENTTYPES = True\n+except PackageNotFoundError:\n+ HAS_PA_CONTENTTYPES = False\n \n FLAGS = (\n doctest.NORMALIZE_WHITESPACE\ndiff --git a/src/plone/api/tests/test_portal.py b/src/plone/api/tests/test_portal.py\nindex 7d71bd31..a822aab5 100644\n--- a/src/plone/api/tests/test_portal.py\n+++ b/src/plone/api/tests/test_portal.py\n@@ -2,7 +2,7 @@\n \n from datetime import date\n from datetime import datetime\n-from pkg_resources import parse_version\n+from packaging import version\n from plone.api import content\n from plone.api import env\n from plone.api import portal\n@@ -34,7 +34,7 @@\n from email import message_from_string as message_from_bytes\n \n \n-HAS_PLONE5 = parse_version(env.plone_version()) >= parse_version("5.0b2")\n+HAS_PLONE5 = version.parse(env.plone_version()) >= version.parse("5.0b2")\n \n \n class IMyRegistrySettings(Interface):\n' - -Repository: plone.api - - -Branch: refs/heads/main -Date: 2025-02-28T22:14:48+01:00 -Author: Gil Forcada Codinachs (gforcada) -Commit: https://github.com/plone/plone.api/commit/3707b0b08938877fb0141a7ef1b39e5b6eb40cb6 - -chore: adjust dependencies +See https://github.com/plone/Products.CMFPlone/issues/4126 Files changed: -M setup.py +M plone/app/contentmenu/menu.py -b'diff --git a/setup.py b/setup.py\nindex 206e94a0..ee4ff0e8 100644\n--- a/setup.py\n+++ b/setup.py\n@@ -54,6 +54,7 @@\n "test": [\n "borg.localrole",\n "manuel>=1.11.2",\n+ "packaging",\n "plone.app.contenttypes",\n "plone.app.textfield",\n "plone.app.testing",\n' +b'diff --git a/plone/app/contentmenu/menu.py b/plone/app/contentmenu/menu.py\nindex ce626e4..efeb91b 100644\n--- a/plone/app/contentmenu/menu.py\n+++ b/plone/app/contentmenu/menu.py\n@@ -3,6 +3,8 @@\n from Acquisition import aq_inner\n from Acquisition import aq_parent\n from html import escape\n+from importlib.metadata import distribution\n+from importlib.metadata import PackageNotFoundError\n from operator import itemgetter\n from plone.app.content.browser.folderfactories import _allowedTypes\n from plone.app.contentmenu import PloneMessageFactory as _\n@@ -37,16 +39,15 @@\n from zope.interface import implementer\n \n import json\n-import pkg_resources\n import plone.locking # noqa: F401\n \n \n PMF = _ # used for dynamic messages we don\'t want to extract\n \n try:\n- pkg_resources.get_distribution("Products.CMFPlacefulWorkflow")\n+ distribution("Products.CMFPlacefulWorkflow")\n from Products.CMFPlacefulWorkflow.permissions import ManageWorkflowPolicies\n-except pkg_resources.DistributionNotFound:\n+except PackageNotFoundError:\n from Products.CMFCore.permissions import ManagePortal as ManageWorkflowPolicies\n \n \n' -Repository: plone.api +Repository: plone.app.contentmenu -Branch: refs/heads/main -Date: 2025-02-28T22:14:48+01:00 +Branch: refs/heads/master +Date: 2025-02-28T20:02:35+01:00 Author: Gil Forcada Codinachs (gforcada) -Commit: https://github.com/plone/plone.api/commit/50b913c072a84af29007849aacd66b92851d5046 +Commit: https://github.com/plone/plone.app.contentmenu/commit/eeeec82a131c735bc0097f5f9696c7d4f4eb0c7e Add news entry Files changed: A news/4126.bugfix -b'diff --git a/news/4126.bugfix b/news/4126.bugfix\nnew file mode 100644\nindex 00000000..cdd0a8cc\n--- /dev/null\n+++ b/news/4126.bugfix\n@@ -0,0 +1 @@\n+Replace `pkg_resources` with `importlib.metadata` @gforcada\n' +b'diff --git a/news/4126.bugfix b/news/4126.bugfix\nnew file mode 100644\nindex 0000000..cdd0a8c\n--- /dev/null\n+++ b/news/4126.bugfix\n@@ -0,0 +1 @@\n+Replace `pkg_resources` with `importlib.metadata` @gforcada\n' -Repository: plone.api +Repository: plone.app.contentmenu -Branch: refs/heads/main -Date: 2025-03-01T22:13:55+01:00 +Branch: refs/heads/master +Date: 2025-03-01T22:14:11+01:00 Author: Gil Forcada Codinachs (gforcada) -Commit: https://github.com/plone/plone.api/commit/74eb9d346a0a38376164004aca1a546362018710 +Commit: https://github.com/plone/plone.app.contentmenu/commit/e56317072966cba80cc26f0c9e498189fd95595a -Merge pull request #567 from plone/4126-replace-pkg-resources +Merge pull request #75 from plone/4126-replace-pkg-resources Replace pkg_resources Files changed: A news/4126.bugfix -M setup.py -M src/plone/api/env.py -M src/plone/api/relation.py -M src/plone/api/tests/test_doctests.py -M src/plone/api/tests/test_portal.py +M plone/app/contentmenu/menu.py -b'diff --git a/news/4126.bugfix b/news/4126.bugfix\nnew file mode 100644\nindex 00000000..cdd0a8cc\n--- /dev/null\n+++ b/news/4126.bugfix\n@@ -0,0 +1 @@\n+Replace `pkg_resources` with `importlib.metadata` @gforcada\ndiff --git a/setup.py b/setup.py\nindex 206e94a0..ee4ff0e8 100644\n--- a/setup.py\n+++ b/setup.py\n@@ -54,6 +54,7 @@\n "test": [\n "borg.localrole",\n "manuel>=1.11.2",\n+ "packaging",\n "plone.app.contenttypes",\n "plone.app.textfield",\n "plone.app.testing",\ndiff --git a/src/plone/api/env.py b/src/plone/api/env.py\nindex 5eb5506a..3d5cee33 100644\n--- a/src/plone/api/env.py\n+++ b/src/plone/api/env.py\n@@ -6,7 +6,7 @@\n from App.config import getConfiguration\n from contextlib import closing\n from contextlib import contextmanager\n-from pkg_resources import get_distribution\n+from importlib.metadata import version\n from plone.api import portal\n from plone.api.exc import InvalidParameterError\n from plone.api.exc import UserNotFoundError\n@@ -222,7 +222,7 @@ def plone_version():\n :returns: string denoting what release of Plone this distribution contains\n :Example: :ref:`env-plone-version-example`\n """\n- return get_distribution("Products.CMFPlone").version\n+ return version("Products.CMFPlone")\n \n \n def zope_version():\n@@ -231,4 +231,4 @@ def zope_version():\n :returns: string denoting what release of Zope2 this distribution contains\n :Example: :ref:`env-zope-version-example`\n """\n- return get_distribution("Zope").version\n+ return version("Zope")\ndiff --git a/src/plone/api/relation.py b/src/plone/api/relation.py\nindex a01f8b9f..10a0fa10 100644\n--- a/src/plone/api/relation.py\n+++ b/src/plone/api/relation.py\n@@ -5,6 +5,8 @@\n \n from AccessControl.SecurityManagement import getSecurityManager\n from collections import defaultdict\n+from importlib.metadata import distribution\n+from importlib.metadata import PackageNotFoundError\n from plone.api.exc import InvalidParameterError\n from plone.api.validation import at_least_one_of\n from plone.api.validation import required_parameters\n@@ -23,12 +25,11 @@\n from zope.lifecycleevent import modified\n \n import logging\n-import pkg_resources\n \n \n try:\n- pkg_resources.get_distribution("plone.app.iterate")\n-except pkg_resources.DistributionNotFound:\n+ distribution("plone.app.iterate")\n+except PackageNotFoundError:\n ITERATE_RELATION_NAME = None\n StagingRelationValue = None\n else:\ndiff --git a/src/plone/api/tests/test_doctests.py b/src/plone/api/tests/test_doctests.py\nindex c7446127..5a94579e 100644\n--- a/src/plone/api/tests/test_doctests.py\n+++ b/src/plone/api/tests/test_doctests.py\n@@ -1,5 +1,7 @@\n """Boilerplate for doctest functional tests."""\n \n+from importlib.metadata import distribution\n+from importlib.metadata import PackageNotFoundError\n from logging import getLogger\n from plone.app.testing import applyProfile\n from plone.app.testing import PLONE_INTEGRATION_TESTING\n@@ -16,7 +18,6 @@\n import manuel.myst.codeblock\n import manuel.testing\n import os\n-import pkg_resources\n import re\n import unittest\n \n@@ -24,11 +25,10 @@\n logger = getLogger(__name__)\n \n try:\n- pkg_resources.get_distribution("plone.app.contenttypes")\n-except pkg_resources.DistributionNotFound:\n- HAS_PA_CONTENTTYPES = False\n-else:\n+ distribution("plone.app.contenttypes")\n HAS_PA_CONTENTTYPES = True\n+except PackageNotFoundError:\n+ HAS_PA_CONTENTTYPES = False\n \n FLAGS = (\n doctest.NORMALIZE_WHITESPACE\ndiff --git a/src/plone/api/tests/test_portal.py b/src/plone/api/tests/test_portal.py\nindex 7d71bd31..a822aab5 100644\n--- a/src/plone/api/tests/test_portal.py\n+++ b/src/plone/api/tests/test_portal.py\n@@ -2,7 +2,7 @@\n \n from datetime import date\n from datetime import datetime\n-from pkg_resources import parse_version\n+from packaging import version\n from plone.api import content\n from plone.api import env\n from plone.api import portal\n@@ -34,7 +34,7 @@\n from email import message_from_string as message_from_bytes\n \n \n-HAS_PLONE5 = parse_version(env.plone_version()) >= parse_version("5.0b2")\n+HAS_PLONE5 = version.parse(env.plone_version()) >= version.parse("5.0b2")\n \n \n class IMyRegistrySettings(Interface):\n' +b'diff --git a/news/4126.bugfix b/news/4126.bugfix\nnew file mode 100644\nindex 0000000..cdd0a8c\n--- /dev/null\n+++ b/news/4126.bugfix\n@@ -0,0 +1 @@\n+Replace `pkg_resources` with `importlib.metadata` @gforcada\ndiff --git a/plone/app/contentmenu/menu.py b/plone/app/contentmenu/menu.py\nindex ce626e4..efeb91b 100644\n--- a/plone/app/contentmenu/menu.py\n+++ b/plone/app/contentmenu/menu.py\n@@ -3,6 +3,8 @@\n from Acquisition import aq_inner\n from Acquisition import aq_parent\n from html import escape\n+from importlib.metadata import distribution\n+from importlib.metadata import PackageNotFoundError\n from operator import itemgetter\n from plone.app.content.browser.folderfactories import _allowedTypes\n from plone.app.contentmenu import PloneMessageFactory as _\n@@ -37,16 +39,15 @@\n from zope.interface import implementer\n \n import json\n-import pkg_resources\n import plone.locking # noqa: F401\n \n \n PMF = _ # used for dynamic messages we don\'t want to extract\n \n try:\n- pkg_resources.get_distribution("Products.CMFPlacefulWorkflow")\n+ distribution("Products.CMFPlacefulWorkflow")\n from Products.CMFPlacefulWorkflow.permissions import ManageWorkflowPolicies\n-except pkg_resources.DistributionNotFound:\n+except PackageNotFoundError:\n from Products.CMFCore.permissions import ManagePortal as ManageWorkflowPolicies\n \n \n'