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.
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"
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file core_framework-2.3.1.tar.gz.
File metadata
- Download URL: core_framework-2.3.1.tar.gz
- Upload date:
- Size: 776.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.7.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f2883c9a94b1755761fafd59f04f971cc40ca2272ad7510acbfa17741617ab08
|
|
| MD5 |
ee2bed235b0d52fc4a3f106af2aafb92
|
|
| BLAKE2b-256 |
c083622880778d8300e3fbe82950821d2931e6a4ef9c7214755d7c3fa7fd5b33
|
File details
Details for the file core_framework-2.3.1-py3-none-any.whl.
File metadata
- Download URL: core_framework-2.3.1-py3-none-any.whl
- Upload date:
- Size: 426.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.7.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b1dad60cb54a3416bc5db2c21ef78253470a24efda88925c78db2d86374a31d9
|
|
| MD5 |
c8b298ff70e2d1a301dbd69d4741c297
|
|
| BLAKE2b-256 |
24c337a562e283c93f13c422ab42fcb5361ea904cc85bf35f2f055def1aa9ec3
|