Skip to content

Chisanan232/abstract-backend

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Abstract Backend

Abstract Backend provides a pluggable backend layer for Python services. Applications code against shared protocols while concrete providersโ€”Redis, Kafka, AWS SQS, or your own implementationโ€”are discovered at runtime. Install a provider with pip, remove it with pip uninstall, and keep your business logic unchanged.

Status & Quality

CI/CD & Testing

CI Documentation Documentation Build Check

Code Coverage & Quality

codecov Quality Gate Status Reliability Rating Security Rating Maintainability Rating

Code Style & Standards

Code style: black linting: pylint Imports: isort Type Checked: mypy

Package Info

PyPI version Supported Versions License: MIT

Downloads

Downloads Downloads/Month Downloads/Week


Why it exists

  • ๐Ÿšซ Stop copying backend code โ€“ Extracted from real MCP server projects so multiple services can share the same queue abstraction.
  • ๐Ÿ“ Protocol-first design โ€“ Contracts live in abe/types.py, keeping providers honest with structural typing and contract tests.
  • ๐Ÿ” Runtime discovery โ€“ load_backend() selects implementations via Python entry points, driven by environment variables.
  • ๐Ÿ“Š Operational clarity โ€“ Logging helpers, contract suites, and documentation make backends observable and portable.

Features

  • ๐Ÿ“ฎ Queue provider protocols covering publish, consume, and lifecycle operations.
  • โš™๏ธ AsyncLoopConsumer helper to execute handlers against any compliant backend.
  • ๐Ÿชต Logging utilities for consistent configuration across providers and apps.
  • ๐Ÿงช Contract tests to validate third-party implementations.
  • ๐Ÿ“š Documentation & examples detailing architecture, provider lifecycle, and runtime flow.

Installation

Install the core library:

pip install abstract-backend

Then install one or more providers, for example the Redis backend:

pip install abe-redis

Set QUEUE_BACKEND=redis (the entry-point exposed by abe-redis) and load_backend() will resolve the correct provider at runtime.

Quick start โšก๏ธ

from abe.backends.message_queue.loader import load_backend
from abe.backends.message_queue.consumer import AsyncLoopConsumer


async def process(payload: dict[str, object]) -> None:
    ...


async def main() -> None:
    backend = load_backend()
    consumer = AsyncLoopConsumer(backend, group="billing")
    await consumer.run(process)

See docs/contents/development/architecture/ for diagrams explaining the flow and provider relationships.

Building providers ๐Ÿงฉ

  1. Implement the protocols from abe/types.py (especially MessageQueueBackendProtocol).
  2. Expose a from_env() constructor for runtime configuration.
  3. Register an entry point under abe.backends.message_queue in pyproject.toml.
  4. Run the contract tests in test/contract_test/backends/message_queue/ against your provider.
  5. Publish your package to PyPI; users activate it with pip install and QUEUE_BACKEND.

The showcase at /docs/src/pages/showcase.tsx highlights template and reference implementations such as abe-redis.

Development ๐Ÿ› ๏ธ

  • Install dev dependencies with uv pip install -r pyproject.toml or your preferred tool.
  • Run tests: uv run pytest.
  • Type checking: uv run mypy.
  • Linting: uv run pylint abe tests.

The project follows black formatting and pylint linting (see .pre-commit-config.yaml).

Documentation & showcase ๐Ÿ“–

  • Developer docs live under docs/contents/development/ and include architecture, provider lifecycle, and layer integration guides.
  • A Showcase page (/docs/src/pages/showcase.tsx) lists template and implementation repositories with release badges.
  • Run cd docs && pnpm start for local previews.

CI/CD & workflows ๐Ÿค–

  • GitHub Actions definitions reside in .github/workflows/.
  • Reusable workflows leverage the logging, testing, and packaging helpers of this project.
  • docusaurus.config.ts and docs/contents/development/sidebars.ts manage documentation navigation.

License

This project is licensed under the MIT License.

About

๐Ÿง‘โ€๐Ÿซ A library as an abstract layer to rule BackEnd side components and support it as Python plugin features.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •