Skip to main content

Core framework package (import as core_framework)

Project description

Core framework

Install from PyPI as core-framework, import core_framework. MIT — LICENSE. Repository, PyPI.

Install

uv add core-framework

Local development

Use Python 3.14. Install uv and Docker.

docker compose -f docker-compose.dev.yaml up -d
uv sync --locked --all-extras --dev
uv run cf-alembic
make run

Firebase: copy firebase_config.example.json to firebase_config.json at the repo root and replace with your Firebase project’s service account JSON from the console.

For make test, use the Firebase CLI (Auth emulator). Stop DB/Redis: docker compose -f docker-compose.dev.yaml down.

Pre-commit: uv sync --dev installs pre-commit. Enable hooks with uv run pre-commit install (ruff, mdformat, uv-lock, and other checks in .pre-commit-config.yaml).

Hosts

In your host app, load Settings or a Settings subclass from core_framework.core.settings, pass it to init_app from core_framework.main, then wire host-specific dependencies, exception handlers, and routers.

from core_framework.main import init_app
from fastapi import FastAPI

from myapp.settings import HostSettings, load_default_settings


def build_app(settings: HostSettings | None = None) -> FastAPI:
    resolved = settings if settings is not None else load_default_settings()
    app = init_app(resolved)

    from myapp.bootstrap import configure_dependencies
    from myapp.exception_handlers import setup_exception_handlers

    configure_dependencies(runtime=app.state.core_runtime)
    setup_exception_handlers(app)

    from myapp.api.router import router

    app.include_router(router)
    return app

From the host repository root, run uv run cf-alembic. See core-framework-migration.

Host pytest

In your host repository, add the core-framework[testing] extra to dev or test dependencies. In tests/conftest.py, register pytest_core_framework_config (returns TestConfig) and a session-scoped anyio_backend fixture that returns "asyncio".

import pytest

from core_framework.testing import TestConfig

from myapp.settings import load_default_settings


def pytest_core_framework_config() -> TestConfig:
    from myapp.main import build_app

    return TestConfig(
        settings_loader=load_default_settings,
        app_factory=build_app,
    )


@pytest.fixture(scope="session")
def anyio_backend() -> str:
    return "asyncio"

See Package API — Testing and testing plugin design.

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

core_framework-2.3.3.tar.gz (821.1 kB view details)

Uploaded Source

Built Distribution

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

core_framework-2.3.3-py3-none-any.whl (436.5 kB view details)

Uploaded Python 3

File details

Details for the file core_framework-2.3.3.tar.gz.

File metadata

  • Download URL: core_framework-2.3.3.tar.gz
  • Upload date:
  • Size: 821.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.7.9

File hashes

Hashes for core_framework-2.3.3.tar.gz
Algorithm Hash digest
SHA256 0faddf3bb3ab7df6ac7799a94d3b277f4253c297a31d4fa1d7f44c3c8329ec40
MD5 fdf941a2da89e2308d680d851f5ef54b
BLAKE2b-256 7f826ef54b12b6e1698631fa345f5e0fba4672d05113eab38d7edbdf556b14d1

See more details on using hashes here.

File details

Details for the file core_framework-2.3.3-py3-none-any.whl.

File metadata

File hashes

Hashes for core_framework-2.3.3-py3-none-any.whl
Algorithm Hash digest
SHA256 e2ef6bde855fd642f1e28dd1cce4e2bf68b6f54ddf527459ed772821379dbd26
MD5 86a71a85188e13768a044f941afbf031
BLAKE2b-256 07ccad0b862e3a97354159278dd6f8f6b3a48521949b758f9665d3e97201faf8

See more details on using hashes here.

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