Skip to main content

ulfblk-core

Core utilities for building web APIs with FastAPI: middleware, schemas, structured logging, and health checks.

Part of Bloques Reciclables - an open source ecosystem of reusable code blocks.

Installation

uv add ulfblk-core
# or
pip install ulfblk-core

Features

Middleware

RequestIDMiddleware - Distributed tracing via X-Request-ID header. Generates UUID4 if not present, propagates through contextvars for logging.

TimingMiddleware - Measures request duration and adds X-Process-Time header. Logs warnings for slow requests (>1s).

from fastapi import FastAPI
from ulfblk_core.middleware import RequestIDMiddleware, TimingMiddleware

app = FastAPI()
app.add_middleware(TimingMiddleware)
app.add_middleware(RequestIDMiddleware)

Schemas

Standardized Pydantic v2 schemas for API responses:

from ulfblk_core.schemas import PaginatedResponse, ErrorResponse, SuccessResponse, HealthResponse

# Paginated response
response = PaginatedResponse.create(
    items=my_items,
    total=100,
    page=1,
    page_size=20,
)

# Health check
health = HealthResponse.healthy(service="my-api", version="1.0.0")

Structured Logging

Structured logging with structlog, automatic request ID injection, and JSON/console output:

from ulfblk_core.logging import setup_logging, get_logger

setup_logging(level="INFO", json_format=True, service_name="my-api")

logger = get_logger(__name__)
logger.info("user.created", user_id="123", tenant="acme")
# Output: {"event": "user.created", "user_id": "123", "request_id": "abc-def", ...}

Health Check Router

Ready-to-use health check endpoint:

from ulfblk_core.health import health_router

app.include_router(health_router)
# GET /health -> {"status": "healthy", "service": "api", "version": "0.1.0", ...}

Full Example

from fastapi import FastAPI
from ulfblk_core.middleware import RequestIDMiddleware, TimingMiddleware
from ulfblk_core.health import health_router
from ulfblk_core.logging import setup_logging

app = FastAPI(title="My API")
setup_logging()
app.add_middleware(TimingMiddleware)
app.add_middleware(RequestIDMiddleware)
app.include_router(health_router)

@app.get("/")
async def root():
    return {"message": "Running with ulfblk-core"}

See the api-simple example for a runnable version.

Requirements

  • Python 3.11+
  • FastAPI 0.115+
  • Pydantic 2.0+

License

MIT

Metadata

Release files for ulfblk-core 0.1.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 ulfblk-core 0.1.0
File Size Uploaded
ulfblk_core-0.1.0.tar.gz 9.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for ulfblk-core 0.1.0
File Interpreter ABI Platform
ulfblk_core-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 19.9 kB

Release files / ulfblk_core-0.1.0.tar.gz

Download URL ulfblk_core-0.1.0.tar.gz
Size 9.2 kB
Tags Source
SHA-256 checksum
How to use checksums
69f0be3281bb2c436f9c635c596dd508cd23de6defa74d028d79c4a20c999661
BLAKE2b-256 checksum
How to use checksums
59137c276961317fcd4aa69aeeeb62dfc30f81f2af12775a56ff3cbf109b927c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.10.11 {"installer":{"name":"uv","version":"0.10.11","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / ulfblk_core-0.1.0-py3-none-any.whl

Download URL ulfblk_core-0.1.0-py3-none-any.whl
Size 10.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
5329bcafb667d2eb5ce2b247de006269db5b912318a328eecaa03b2efffe5873
BLAKE2b-256 checksum
How to use checksums
09089d1e108142c4cc523d364332e9d47559f7f55fbdf81530bcb755396d73c9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.10.11 {"installer":{"name":"uv","version":"0.10.11","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release 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