Skip to main content

Module-system primitives for the simple_module framework — ModuleBase, discovery, diagnostics, events

Project description

simple_module_core

Module-system primitives for the simple_module framework — a modular-monolith for Python/FastAPI where each feature is a plugin package discovered at boot.

This package defines ModuleBase, the ModuleMeta descriptor, the discover_modules() entry-point loader, topological dependency sorting, event bus primitives, and the diagnostic codes (SM001SM021) used by make doctor.

Install

pip install simple_module_core

You usually don't install this directly — it's pulled in by simple_module_hosting and every simple_module_* module.

What it provides

  • ModuleBase — the subclass every module extends to opt into lifecycle hooks.
  • ModuleMeta — required meta = ModuleMeta(name=..., depends_on=...) attribute on each module.
  • discover_modules() — loads all [project.entry-points.simple_module] modules, topologically sorts by depends_on.
  • Diagnostic registry — SM001 missing meta, SM003 orphan page, SM008 duplicate name, SM009 framework→plugin coupling violation, and the rest of the SM0xx set through SM021.
  • Tiny event-bus (pyee) for decoupled module-to-module communication.

Usage

# modules/orders/orders/module.py
from simple_module_core import ModuleBase, ModuleMeta


class OrdersModule(ModuleBase):
    meta = ModuleMeta(name="orders", depends_on=["users"])

    def register_routes(self, api_router, view_router):
        from .endpoints import api, views
        api_router.include_router(api.router)
        view_router.include_router(views.router)

And in pyproject.toml:

[project.entry-points.simple_module]
orders = "orders.module:OrdersModule"

The host's discover_modules() call picks this up automatically at boot.

Depends on

  • fastapi, pydantic, pydantic-settings, pyee, babel, packaging

License

MIT — see LICENSE.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

simple_module_core-0.0.24.tar.gz (47.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

simple_module_core-0.0.24-py3-none-any.whl (42.5 kB view details)

Uploaded Python 3

File details

Details for the file simple_module_core-0.0.24.tar.gz.

File metadata

  • Download URL: simple_module_core-0.0.24.tar.gz
  • Upload date:
  • Size: 47.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for simple_module_core-0.0.24.tar.gz
Algorithm Hash digest
SHA256 3ca0d6af27c5c16d7c4f924d801b38101c8b523f89f93b29e3f6b9127eeb9ee0
MD5 12c323cc76b79b25cc46400f5125f3ae
BLAKE2b-256 760f59d21b0f9dd031a03192da337df700823b442f309fea3ebc90b35b79a1c4

See more details on using hashes here.

Provenance

The following attestation bundles were made for simple_module_core-0.0.24.tar.gz:

Publisher: release.yml on antosubash/simple_module_python

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file simple_module_core-0.0.24-py3-none-any.whl.

File metadata

File hashes

Hashes for simple_module_core-0.0.24-py3-none-any.whl
Algorithm Hash digest
SHA256 91c56a7c7f98847e120315b88a7dbb7708c9265e02c3f52b6ba56b182a4b228b
MD5 64f39d5807c76b8733b1ddb9f80a5ba4
BLAKE2b-256 9bdb10d14d6fce575aa5faa7b9d3afc0fa3757f770838992b8c4748f4d1a479c

See more details on using hashes here.

Provenance

The following attestation bundles were made for simple_module_core-0.0.24-py3-none-any.whl:

Publisher: release.yml on antosubash/simple_module_python

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page