commit 920c1d3bb4c73ece4f2433cb911454e0d3e857bc
parent 29d5f7c338af1ab93ccf2549835b03bdebc8dade
Author: Jean Schurger <jean@schurger.org>
Date: Fri, 26 Dec 2025 12:38:35 -0500
Converted to pyproject.
Diffstat:
5 files changed, 59 insertions(+), 48 deletions(-)
diff --git a/encadre/controllers.py b/encadre/controllers.py
@@ -2,7 +2,7 @@ import traceback
import types
import logging
import unittest
-import pkg_resources
+from importlib.metadata import entry_points
from encadre.framework import Framework
logger = logging.getLogger(__name__)
@@ -67,19 +67,16 @@ def setup_controllers(cls, f, level=0):
def load_controllers(f, application):
- for ep in pkg_resources.iter_entry_points('%s.controllers' % application):
- try:
- ep.load()
- logger.debug("Loaded controller '%s'" % ep)
- except ModuleNotFoundError:
- logger.error("Error importing '%s': %s" % (
- ep, traceback.format_exc()))
- for ep in pkg_resources.iter_entry_points('encadre.controllers'):
- try:
- ep.load()
- except ModuleNotFoundError:
- logger.error("Error importing '%s': %s" % (
- ep, traceback.format_exc()))
+ eps = entry_points()
+ app_group = '%s.controllers' % application
+ for group in (app_group, 'encadre.controllers'):
+ for ep in eps.get(group, []):
+ try:
+ ep.load()
+ logger.debug("Loaded controller '%s'" % ep)
+ except ModuleNotFoundError:
+ logger.error("Error importing '%s': %s" % (
+ ep, traceback.format_exc()))
setup_controllers(Controller, f)
diff --git a/encadre/framework.py b/encadre/framework.py
@@ -1,7 +1,7 @@
import sys
import logging
-import pkg_resources
import traceback
+from importlib.metadata import entry_points
from decorator import decorator
logger = logging.getLogger(__name__)
@@ -199,10 +199,11 @@ class DumpRoutes(Framework):
def framework_from_config(application, config):
fw_name = (config.get(application) or {}).get('framework')
assert fw_name, "No framework configured."
- for ep in pkg_resources.iter_entry_points('%s.frameworks' % application):
- if ep.name == fw_name:
- return ep.load()(application, config)
- for ep in pkg_resources.iter_entry_points('encadre.frameworks'):
- if ep.name == fw_name:
- return ep.load()(application, config)
+ eps = entry_points()
+ app_group = '%s.frameworks' % application
+ for group in (app_group, 'encadre.frameworks'):
+ group_eps = eps.get(group, [])
+ for ep in group_eps:
+ if ep.name == fw_name:
+ return ep.load()(application, config)
raise Exception("No framework available")
diff --git a/pyproject.toml b/pyproject.toml
@@ -0,0 +1,40 @@
+[build-system]
+requires = ["setuptools>=61.0"]
+build-backend = "setuptools.build_meta"
+
+[project]
+name = "encadre"
+version = "0.2.0"
+description = "Encadre framework"
+authors = [
+ {name = "Jean Schurger", email = "jean@schurger.org"}
+]
+license = {text = "GPLv3"}
+requires-python = ">=3.10"
+dependencies = [
+ "Flask",
+ "fastjsonschema",
+ "flask-cors",
+ "decorator",
+ "flask_jwt_extended",
+ "cryptography",
+]
+
+[project.optional-dependencies]
+test = [
+ "nose",
+ "coverage",
+]
+
+[project.scripts]
+encadre-test-app-serve = "encadre_test_app:serve"
+encadre-test-app-dump-routes = "encadre_test_app:dump_routes"
+
+[project.entry-points."encadre.frameworks"]
+flask = "encadre_flask:FlaskFramework"
+
+[project.entry-points."encadre_test_app.controllers"]
+test_controllers = "encadre_test_controllers"
+
+[tool.setuptools.packages.find]
+exclude = ["test", "test.*"]
diff --git a/setup.cfg b/setup.cfg
@@ -1,3 +0,0 @@
-[nosetests]
-verbosity=3
-with-doctest=1
diff --git a/setup.py b/setup.py
@@ -1,24 +0,0 @@
-from setuptools import setup
-
-console_scripts = """
-encadre-test-app-serve = encadre_test_app:serve
-encadre-test-app-dump-routes = encadre_test_app:dump_routes
-"""
-
-setup(name='encadre',
- version='0.1.7',
- description="Encadre framework",
- author="Jean Schurger",
- author_email='jean@schurger.org',
- packages=['encadre', 'encadre_flask'],
- install_requires=['Flask', 'fastjsonschema', 'flask-cors',
- 'decorator', 'nose', 'coverage', 'flask_jwt_extended',
- 'cryptography'],
- entry_points={
- 'console_scripts': console_scripts,
- 'encadre.frameworks':
- ['flask = encadre_flask:FlaskFramework'],
- 'encadre_test_app.controllers':
- ['test_controllers = encadre_test_controllers']
- },
- license='GPLv3')