From 31d18d66d9755e1061d4c725b96a35d9c6a0bcf9 Mon Sep 17 00:00:00 2001 From: Christian Klinger Date: Thu, 26 Mar 2026 16:42:14 +0100 Subject: [PATCH 1/2] remove pkg_resources unpin setuptools --- deform/renderer.py | 5 +++-- deform/template.py | 8 ++++---- deform/tests/test_field.py | 4 ++-- deform/tests/test_template.py | 4 ++-- pyproject.toml | 2 +- setup.py | 1 - tox.ini | 6 +++--- 7 files changed, 15 insertions(+), 15 deletions(-) diff --git a/deform/renderer.py b/deform/renderer.py index b8cb6926..0dfa5ab2 100644 --- a/deform/renderer.py +++ b/deform/renderer.py @@ -1,6 +1,7 @@ """Renderer.""" -from pkg_resources import resource_filename +# Standard Library +from importlib.resources import files # Deform import deform @@ -44,7 +45,7 @@ def translator(term): paths = [] for path in search_path: pkg, resource_name = path.split(":") - paths.append(resource_filename(pkg, resource_name)) + paths.append(str(files(pkg).joinpath(resource_name))) deform.form.Form.default_renderer = deform.ZPTRendererFactory( tuple(paths) + default_paths, translator=translator diff --git a/deform/template.py b/deform/template.py index 7a82b4d0..30bec7a3 100644 --- a/deform/template.py +++ b/deform/template.py @@ -2,9 +2,9 @@ # Standard Library import os.path +from importlib.resources import files from chameleon.zpt.loader import TemplateLoader -from pkg_resources import resource_filename from translationstring import ChameleonTranslate from .exception import TemplateError @@ -39,7 +39,7 @@ def __init__(self, *args, **kwargs): def load(self, filename, *args, **kwargs): if ":" in filename: pkg_name, fn = filename.split(":", 1) - filename = resource_filename(pkg_name, fn) + filename = str(files(pkg_name).joinpath(fn)) else: path, ext = os.path.splitext(filename) if not ext: @@ -58,7 +58,7 @@ class ZPTRendererFactory(object): If the template name is an asset spec (has a colon in it, e.g. ``mypackage:subdir/subdir2/mytemplate.pt``), use - ``pkg_resources.resource_filename`` to resolve it. + ``importlib.resources`` to resolve it. Otherwise, fall back to search-path-based machinery to resolve it. Allowing an asset spec allows users to specify templates without the @@ -122,5 +122,5 @@ def load(self, template_name): return self.loader.load(template_name) -default_dir = resource_filename("deform", "templates/") +default_dir = str(files("deform").joinpath("templates")) default_renderer = ZPTRendererFactory((default_dir,)) diff --git a/deform/tests/test_field.py b/deform/tests/test_field.py index 84e811e0..092b5b35 100644 --- a/deform/tests/test_field.py +++ b/deform/tests/test_field.py @@ -154,9 +154,9 @@ def test_set_default_resource_registry(self): def test_set_zpt_renderer(self): cls = self._getTargetClass() old = cls.default_renderer - from pkg_resources import resource_filename + from importlib.resources import files - template_dir = resource_filename("deform", "templates/") + template_dir = str(files("deform").joinpath("templates")) class Field: oid = None diff --git a/deform/tests/test_template.py b/deform/tests/test_template.py index d7435229..4c2c9e41 100644 --- a/deform/tests/test_template.py +++ b/deform/tests/test_template.py @@ -119,9 +119,9 @@ def _makeOne(self, dirs, **kw): return ZPTRendererFactory(dirs, **kw) def test_functional(self): - from pkg_resources import resource_filename + from importlib.resources import files - default_dir = resource_filename("deform", "tests/fixtures/") + default_dir = str(files("deform").joinpath("tests/fixtures")) renderer = self._makeOne((default_dir,)) result = renderer("test") self.assertEqual(result.strip(), str("
Test
")) diff --git a/pyproject.toml b/pyproject.toml index 0196deba..d0c00fae 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,5 +1,5 @@ [build-system] -requires = ["setuptools<81.0.0", "wheel"] +requires = ["setuptools", "wheel"] [tool.black] line-length = 79 diff --git a/setup.py b/setup.py index 043482e7..a644fc31 100644 --- a/setup.py +++ b/setup.py @@ -31,7 +31,6 @@ def readfile(name): "peppercorn>=0.3", # rename operation type "translationstring>=1.0", # add format mapping with % "zope.deprecation", - "setuptools<81.0.0", ] lint_extras = [ diff --git a/tox.ini b/tox.ini index 27cbf2a3..0829b308 100644 --- a/tox.ini +++ b/tox.ini @@ -14,14 +14,14 @@ commands = python --version pytest {posargs:} deps = - setuptools<81.0.0 + setuptools [testenv:py311-cover] commands = python --version pytest --cov {posargs:} deps = - setuptools<81.0.0 + setuptools [testenv:lint] commands = @@ -92,5 +92,5 @@ commands = # build wheel from sdist pip wheel -v --no-deps --no-index --no-build-isolation --wheel-dir {toxinidir}/dist --find-links {toxinidir}/dist deform deps = - setuptools<81.0.0 + setuptools wheel From b600d5a241e6f6219d0c69a52e00746e2cd5ca91 Mon Sep 17 00:00:00 2001 From: Christian Klinger Date: Thu, 26 Mar 2026 17:05:42 +0100 Subject: [PATCH 2/2] fix lint --- deform/template.py | 2 +- deform/tests/test_field.py | 1 + deform/tests/test_template.py | 1 + 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/deform/template.py b/deform/template.py index 30bec7a3..9351701c 100644 --- a/deform/template.py +++ b/deform/template.py @@ -1,8 +1,8 @@ """Template.""" # Standard Library -import os.path from importlib.resources import files +import os.path from chameleon.zpt.loader import TemplateLoader from translationstring import ChameleonTranslate diff --git a/deform/tests/test_field.py b/deform/tests/test_field.py index 092b5b35..aed123c5 100644 --- a/deform/tests/test_field.py +++ b/deform/tests/test_field.py @@ -154,6 +154,7 @@ def test_set_default_resource_registry(self): def test_set_zpt_renderer(self): cls = self._getTargetClass() old = cls.default_renderer + # Standard Library from importlib.resources import files template_dir = str(files("deform").joinpath("templates")) diff --git a/deform/tests/test_template.py b/deform/tests/test_template.py index 4c2c9e41..bf605886 100644 --- a/deform/tests/test_template.py +++ b/deform/tests/test_template.py @@ -119,6 +119,7 @@ def _makeOne(self, dirs, **kw): return ZPTRendererFactory(dirs, **kw) def test_functional(self): + # Standard Library from importlib.resources import files default_dir = str(files("deform").joinpath("tests/fixtures"))