Skip to main content
Archived

This project has been archived by its maintainers, and is no longer receiving any updates.

craftainer-tool-crud

A generic CRUD framework for FastAPI: router factories (JSON, XML, and a small web form/component set), a CRUD interface, storage-agnostic repositories (SQLAlchemy async and in-memory), and the model and view bases they build on. A host application keeps its own models, views and settings and builds each resource on top of the generic pieces here; this package imports nothing from the host.

It is an instance of template-python-package (so it gets the devcontainer, CI, release workflow and template sync from there); see docs/TEMPLATE.md for the conventions shared by every instance. The package's own layout and rules are in src/craftainer_tool_crud/README.md.

Install

pip install craftainer-tool-crud            # core
pip install "craftainer-tool-crud[mqtt]"    # + MQTT event sink/source (aiomqtt)
pip install "craftainer-tool-crud[xml]"     # + XML request bodies (defusedxml)

The core needs Python 3.14 or newer. Both extras are imported lazily, only where they are used (MQTTEventSink/MQTTEventSource, and the XML codec and XML router's body parsing), so the core imports without them and a missing extra surfaces as an ImportError at first use. Bring your own database driver (for example asyncpg) for SQLAlchemyRepository.

Public API overview

  • craftainer_tool_crud.config: CrudConfig, MQTTConfig, configure(config, session_factory). Call configure once at startup, before the first request.
  • craftainer_tool_crud.models: the declarative Base/IdentifiedBase, the record-lifecycle mixins (Archivable, Draftable, Schedulable, Lockable) and the shared Revision model.
  • craftainer_tool_crud.views: the Pydantic view base (ORMView), bulk, revision and stats response shapes.
  • craftainer_tool_crud.repositories: the Repository protocol, SQLAlchemyRepository, InMemoryRepository and the filter/sort clauses.
  • craftainer_tool_crud.interfaces: CRUDInterface, OwnerScope, revision and event sinks, build_repository_provider and friends.
  • craftainer_tool_crud.controllers: build_json_router, build_xml_router, build_web_router and build_resource_router.

Model changes need an app-side migration

The package ships SQLAlchemy models (Revision, the lifecycle mixins) but no migrations: the host's Alembic setup targets models.base.Base.metadata. A release that changes those models therefore needs a new migration in the host application, and the release notes say so. Migrations stay immutable once applied (NFR-0019 in the host repository).

Versioning

SemVer, starting at 0.1.0. While the major version is 0, a minor release may break the public API; pin craftainer-tool-crud>=0.x,<0.(x+1) until 1.0.0. The version lives only in the git tag release.yml computes; pyproject.toml stays at 0.0.0 and make build stamps RELEASE_VERSION into the build. Releases go to TestPyPI first, then PyPI, through trusted publishing (PYPI_PUBLISH repository variable: testpypi or pypi; unset publishes nothing).

Development

Open the repository in the devcontainer (it starts a Postgres for the integration tests), then run prek run --all-files --hook-stage manual. The pytest hook covers tests/unit and tests/integration under one 100% coverage gate; see tests/README.md.

License

Licensed under the GNU General Public License v3.0.

Metadata

Release files for craftainer-tool-crud 0.1.2

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

Source distribution (sdist)

Source distribution for craftainer-tool-crud 0.1.2
File Size Uploaded Provenance
craftainer_tool_crud-0.1.2.tar.gz 281.4 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for craftainer-tool-crud 0.1.2
File Interpreter ABI Platform
craftainer_tool_crud-0.1.2-py3-none-any.whl Python 3 none any Details

Total release size: 394.4 kB

Release files / craftainer_tool_crud-0.1.2.tar.gz

Download URL craftainer_tool_crud-0.1.2.tar.gz
Size 281.4 kB
Tags Source
SHA-256 checksum
How to use checksums
b21951867e35f52b93ae256812b3ea94ae72757c91b8374e2fbf5c4d7baad458
BLAKE2b-256 checksum
How to use checksums
d22b854ae016ac0ac3478f997889dc6a1cc189cd5a85bfbcb96d4c91e361f20d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.13.0 {"installer":{"name":"uv","version":"0.13.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / craftainer_tool_crud-0.1.2-py3-none-any.whl

Download URL craftainer_tool_crud-0.1.2-py3-none-any.whl
Size 112.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
27b7ed182202295f5624197ac9de32affd919769a36cc52a934cea748ede8728
BLAKE2b-256 checksum
How to use checksums
f27bc64aa1abd4b3a6d94ec0f4ec9d9d751dd7371126b19b89f61fc09ef19b02
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.13.0 {"installer":{"name":"uv","version":"0.13.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Security for craftainer-tool-crud 0.1.2

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.

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