Async MongoDB with vanilla Pydantic v2+ - made easy.
Project description
Source code: https://github.com/volfpeter/motorhead
Documentation and examples: https://volfpeter.github.io/motorhead
Motorhead
Async MongoDB with vanilla Pydantic v2+ - made easy.
Key features:
- Database model and API design with vanilla
Pydanticv2+. - Relationship support and validation using async validators and delete rules with a declarative, decorator-based syntax.
- ODM-like query builder for convenient, typed, and Pythonic query construction.
- Declarative index specification.
- Typed utilities for convenient model and API creation.
- Ready to use, customizable async service layer with transaction support that integrates all the above to keep your API and business logic clean, flexible, and easy to understand.
- Simplicity: by not being a classic ODM, the codebase is very simple and easy to understand (even contribute to) even for relative beginners.
By providing a convenient, declarative middle layer between MongoDB and your API, motorhead is halfway between an object document mapper (based on vanilla Pydantic) and a database driver (by wrapping the official, async motor driver). What's missing is the built-in ODM performance and memory overhead, whose benefits are rarely felt when working with document databases.
See the full documentation here.
Installation
The library is available on PyPI and can be installed with:
$ pip install motorhead
Examples
See the documentation for usage and application examples.
Requirements
The project depends on motor (the official asyncio MongoDB driver, which is built on top of pymongo and bson) and pydantic v2+.
Development
Use black for code formatting, mypy for static code analysis, ruff for linting, and pytest (with pytest-asyncio and pytest-docker) for testing.
The documentation is built with mkdocs-material and mkdocstrings.
Contributing
All contributions are welcome.
Notes
This project is the continuation of fastapi-motor-oil with support for Pydantic v2, among other improvements. Migration from fastapi-motor-oil should be easy, but if you need help, just create an issue in the issue tracker.
License - MIT
The library is open-sourced under the conditions of the MIT license.
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 motorhead-0.2501.2.tar.gz.
File metadata
- Download URL: motorhead-0.2501.2.tar.gz
- Upload date:
- Size: 18.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.0.1 CPython/3.12.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
583b9c063086bf5f90ebb31204d08044eb4f49fbd1c50c7031147e9e08b806bd
|
|
| MD5 |
c7f595ff82b8f14f618e0d47b8c965e2
|
|
| BLAKE2b-256 |
1d677b0bb81410cd8353db454ee2983a2d058b81cce7f7b1e6b788884c5f2b2c
|
Provenance
The following attestation bundles were made for motorhead-0.2501.2.tar.gz:
Publisher:
publish.yml on volfpeter/motorhead
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
motorhead-0.2501.2.tar.gz -
Subject digest:
583b9c063086bf5f90ebb31204d08044eb4f49fbd1c50c7031147e9e08b806bd - Sigstore transparency entry: 163503780
- Sigstore integration time:
-
Permalink:
volfpeter/motorhead@7f7a77e9b9b95d050646cf035fedffcb4110a04d -
Branch / Tag:
refs/tags/v0.2501.2 - Owner: https://github.com/volfpeter
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@7f7a77e9b9b95d050646cf035fedffcb4110a04d -
Trigger Event:
release
-
Statement type:
File details
Details for the file motorhead-0.2501.2-py3-none-any.whl.
File metadata
- Download URL: motorhead-0.2501.2-py3-none-any.whl
- Upload date:
- Size: 21.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.0.1 CPython/3.12.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e22ce3e9490eabb4d9df52d9abf842d9e0f3febeb58e2ab1d6c115f4db55b6ea
|
|
| MD5 |
60fbdb5e92c80b576562ded9a3df8ed7
|
|
| BLAKE2b-256 |
f893fccc25af3d871c10451c79e71a7cbe6b00062ccee42d349b9f818931ebc7
|
Provenance
The following attestation bundles were made for motorhead-0.2501.2-py3-none-any.whl:
Publisher:
publish.yml on volfpeter/motorhead
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
motorhead-0.2501.2-py3-none-any.whl -
Subject digest:
e22ce3e9490eabb4d9df52d9abf842d9e0f3febeb58e2ab1d6c115f4db55b6ea - Sigstore transparency entry: 163503781
- Sigstore integration time:
-
Permalink:
volfpeter/motorhead@7f7a77e9b9b95d050646cf035fedffcb4110a04d -
Branch / Tag:
refs/tags/v0.2501.2 - Owner: https://github.com/volfpeter
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@7f7a77e9b9b95d050646cf035fedffcb4110a04d -
Trigger Event:
release
-
Statement type: