Skip to main content

Core framework

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

Documentation

Doc Purpose
docs/README.md Doc map (platform, design, library, domains, deployments)
docs/library/package-api.md Host import surface and upgrade tables
CHANGELOG.md Release notes (SemVer)

Install

uv add core-framework

Pin hosts to a locked version. On each bump, read CHANGELOG.md and the host-upgrade tables in package-api.md.

Local development

Use Python 3.14. Install uv and Docker.

Tracked config.toml at the repo root is the local-dev settings file (dummy values; no production secrets). Production renders from config.toml.template via deploy envsubst — see architecture decisions.

docker compose -f deploy/app/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 deploy/app/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 and routers. init_app already runs core exception handlers; host-only types use register_exception_handler.

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

    configure_dependencies(runtime=app.state.core_runtime)

    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.

Worker: production also runs the ARQ worker (arq core_framework.worker.main.WorkerSettings, or a host composition that calls the same startup path). Schedules and tasks: workers.md. Composition details: package-api.md (Default deployment entrypoints).

Observability: OpenTelemetry OTLP (not Logfire). Under [observability], set enabled and otlp_endpoint (required when enabled outside local); drop logfire_token / LOGFIRE_TOKEN. Same-host Grafana LGTM stack: deploy/observability/ and observability-lgtm-setup.md. Host upgrade table: package-api.md — observability OTLP.

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". The extra also wraps tests with Blockbuster so core_framework cannot perform stdlib blocking I/O on the asyncio loop.

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.

Metadata

Release files for core-framework 4.3.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for core-framework 4.3.0
File Size Uploaded Provenance Actions
core_framework-4.3.0.tar.gz 1.9 MB Without provenance Details for core_framework-4.3.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for core-framework 4.3.0
File Interpreter ABI Platform Actions
core_framework-4.3.0-py3-none-any.whl Python 3 none any Details for core_framework-4.3.0-py3-none-any.whl

Total release size: 2.6 MB

Release files / core_framework-4.3.0.tar.gz

Download URL core_framework-4.3.0.tar.gz
Size 1.9 MB
Tags Source
SHA-256 checksum
How to use checksums
fc4e642bc4c0fe8713d81c4756fc84aa3cae0dd507556e0d76bdc4b997dc43f6
BLAKE2b-256 checksum
How to use checksums
9a789b77d8f0186e1c46c835afbba2f275d70798075082ec9840c495bb13e5f5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.7.9

Release files / core_framework-4.3.0-py3-none-any.whl

Download URL core_framework-4.3.0-py3-none-any.whl
Size 691.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
63d32ca8f1dba65cecf152b3a182aac1a035f18c2ad8a4c8961420b6a9862891
BLAKE2b-256 checksum
How to use checksums
88d2c9654aab5804780ed64a996a41fccf628d06b603131570cac2bd44ab0c04
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.7.9

Security for core-framework 4.3.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page