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.

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-4.0.0.tar.gz (1.6 MB view details)

Uploaded Source

Built Distribution

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

core_framework-4.0.0-py3-none-any.whl (627.5 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: core_framework-4.0.0.tar.gz
  • Upload date:
  • Size: 1.6 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.7.9

File hashes

Hashes for core_framework-4.0.0.tar.gz
Algorithm Hash digest
SHA256 8a4d777515f6e874583fea360fab22c1550d0eddff46873a9f56b111af7e15d8
MD5 3718647e3584be607304117bcf90cf9e
BLAKE2b-256 0a3eb5a14242b823e4c1712fec911fcd7930b7d04997667d860cc8550a4a42f7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for core_framework-4.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 1081df5d4748e893430d8088099f963b395415981dc9bfd484a3285fd012e63f
MD5 286de73f1ddc029dec9354b66cfc8000
BLAKE2b-256 667cfe21ef8db069b6e85155a3fc49b92b771c30331fc220e4963dd2ffd412ed

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

4.0.0 This release

2 files

3.3.0

2 files

3.2.0

2 files

3.1.0

2 files

3.0.0

2 files

2.3.3

2 files

2.3.2

2 files

2.3.1

2 files

2.3.0

2 files

2.2.0

2 files

2.1.0

2 files

2.0.0

2 files

1.8.1

2 files

1.8.0

2 files

1.7.0

2 files

1.6.0

2 files

1.5.0

2 files

1.4.0

2 files

1.3.0

2 files

1.2.0

2 files

1.0.0

2 files

0.3.0

2 files

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