Skip to main content

csrd-models

Shared Pydantic models, settings, and parsing utilities for FastAPI microservices.

Package: csrd.models · Import: from csrd.models import BaseModel, BaseSettings

What's included

  • BaseModel / BaseSettings with camelCase alias config and populate_by_name=True
  • ModelParserMixin — response parsing mixin for delegates and repositories
  • PayloadExtractor / DefaultExtractor — pluggable payload extraction
  • UserClaims — JWT user claims dataclass
  • APIErrorResponse, ErrorMeta, Error, APIVersion — structured error response models
  • Secret / InternalToken — settings field marker that refuses to boot on empty, short or placeholder secrets

Secret settings

from typing import Annotated

from csrd.models import BaseSettings, InternalToken, Secret


class Settings(BaseSettings):
    internal_token: InternalToken = ""  # Annotated[str, Secret()] — min 32 chars
    db_password: Annotated[str, Secret(min_length=16, placeholders=("dev-password",))] = "change_me"

Secret(min_length=32, placeholders=(), markers=DEFAULT_PLACEHOLDER_MARKERS) rejects empty/whitespace values, values containing a marker (change_me, changeme, change-me, <generate; case-insensitive), any declared placeholder, and values shorter than min_length. It works on str and SecretStr; None passes through for str | None fields. Validation runs when settings load (pydantic-settings validates defaults), and a single ValidationError lists every offending field. BaseSettings sets hide_input_in_errors=True, so rejected values never appear in the error.

Installation

uv pip install "csrd-models @ git+ssh://git@github.com/csrd-api/fastapi-common.git#subdirectory=packages/models"

Dependencies

None (Tier 1 — standalone)

Metadata

Release files for csrd-models 0.7.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 csrd-models 0.7.0
File Size Uploaded
csrd_models-0.7.0.tar.gz 10.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for csrd-models 0.7.0
File Interpreter ABI Platform
csrd_models-0.7.0-py3-none-any.whl Python 3 none any Details

Total release size: 19.6 kB

Release files / csrd_models-0.7.0.tar.gz

Download URL csrd_models-0.7.0.tar.gz
Size 10.5 kB
Tags Source
SHA-256 checksum
How to use checksums
c3f2a210a72e4af2d6e298752f834bed13a11030797dcadc9cacb89d037a5e64
BLAKE2b-256 checksum
How to use checksums
fc9bcd3cb71569ea039862e784ac71620d7d88f9021cbe207c2bcfe643415d10
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 16, 2026.

Transparency log

Release files / csrd_models-0.7.0-py3-none-any.whl

Download URL csrd_models-0.7.0-py3-none-any.whl
Size 9.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
d82d4e7ce1bc1a35fdc8102b2bd8cb58ec728ca9f1681f8c05c5a6fc6a43e468
BLAKE2b-256 checksum
How to use checksums
0a9e223716f36c7c0a0fe2f8f4213b56c499dd5be1f5f964e35d48a5b46d92a3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 16, 2026.

Transparency log

Release history Release notifications | RSS feed

0.8.0

2 release files

This release

0.7.0 This release

2 release files

0.6.0

2 release files

0.5.30

2 release files

0.5.29

2 release files

0.5.28

2 release files

0.5.27

2 release files

0.5.26

2 release files

0.5.25

2 release files

0.5.24

2 release files

0.5.23

2 release files

0.5.22

2 release files

0.5.21

2 release files

0.5.9

2 release files

0.5.8

2 release files

0.5.7

2 release files

0.5.6

2 release files

0.5.5

2 release files

0.5.4

2 release files

0.5.3

2 release files

0.5.2

2 release files

0.5.1

2 release files

0.5.0

2 release files

0.4.0

2 release files

0.3.9

2 release files

0.3.8

2 release files

0.3.7

2 release files

0.3.6

2 release files

0.3.5

2 release files

0.3.4

2 release files

0.3.2

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.45

2 release files

0.1.44

2 release files

0.1.43

2 release files

0.1.42

2 release files

0.1.41

2 release files

0.1.40

2 release files

0.1.39

2 release files

0.1.38

2 release files

0.1.37

2 release files

0.1.36

2 release files

0.1.35

2 release files

0.1.34

2 release files

0.1.33

2 release files

0.1.32

2 release files

0.1.31

2 release files

0.1.30

2 release files

0.1.29

2 release files

0.1.28

2 release files

0.1.26

2 release files

0.1.25

2 release files

0.1.24

2 release files

0.1.23

2 release files

0.1.22

2 release files

0.1.21

2 release files

0.1.20

2 release files

0.1.19

2 release files

0.1.18

2 release files

0.1.17

2 release files

0.1.15

2 release files

0.1.14

2 release files

0.1.13

2 release files

0.1.11

2 release files

0.1.10

2 release files

0.1.3

2 release files

0.1.0

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