encadre

Encadre, petit framework web Python (Flask) : contrôleurs en greffons, validation, tests
git clone https://git.schurger.org/encadre.git
Log | Files | Refs

commit 920c1d3bb4c73ece4f2433cb911454e0d3e857bc
parent 29d5f7c338af1ab93ccf2549835b03bdebc8dade
Author: Jean Schurger <jean@schurger.org>
Date:   Fri, 26 Dec 2025 12:38:35 -0500

Converted to pyproject.

Diffstat:
Mencadre/controllers.py | 25+++++++++++--------------
Mencadre/framework.py | 15++++++++-------
Apyproject.toml | 40++++++++++++++++++++++++++++++++++++++++
Dsetup.cfg | 3---
Dsetup.py | 24------------------------
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')