Querytyper
Querytyper is a Python package to query MongoDB using a fully typed syntax. It leverages the Pydantic library for defining and validating data models, providing a seamless and type-safe experience.
Features
- Construct MongoDB queries using Python's native syntax with type hints.
- Leverage Pydantic models to define your MongoDB document structure and query filters efficiently.
- Build complex queries using logical operators and comparisons in a natural and expressive way.
Using
To add and install this package as a dependency of your project, run poetry add querytyper.
A simple example:
from pydantic import BaseModel, EmailStr
from querytyper import MongoFilterMeta, MongoQuery
class User(BaseModel):
"""User database model."""
id: int
name: str
age: int
email: EmailStr
class UserFilter(User, metaclass=MongoFilterMeta):
"""User query filter."""
query = MongoQuery(
(UserFilter.name == "John")
& (UserFilter.age >= 10)
& (
UserFilter.email
in [
"john@example.com",
"john@gmail.com",
]
)
)
print(query)
{
"name": "John",
"age": {"$gte": 10},
"email": [
"john@example.com",
"john@gmail.com",
],
}
Contributing
Prerequisites
1. Set up Git to use SSH
- Generate an SSH key and add the SSH key to your GitHub account.
- Configure SSH to automatically load your SSH keys:
cat << EOF >> ~/.ssh/config Host * AddKeysToAgent yes IgnoreUnknown UseKeychain UseKeychain yes EOF
2. Install Docker
- Install Docker Desktop.
- Enable Use Docker Compose V2 in Docker Desktop's preferences window.
- Linux only:
- Export your user's user id and group id so that files created in the Dev Container are owned by your user:
cat << EOF >> ~/.bashrc export UID=$(id --user) export GID=$(id --group) EOF
- Export your user's user id and group id so that files created in the Dev Container are owned by your user:
3. Install VS Code or PyCharm
- Install VS Code and VS Code's Dev Containers extension. Alternatively, install PyCharm.
- Optional: install a Nerd Font such as FiraCode Nerd Font and configure VS Code or configure PyCharm to use it.
Development environments
The following development environments are supported:
- ⭐️ GitHub Codespaces: click on Code and select Create codespace to start a Dev Container with GitHub Codespaces.
- ⭐️ Dev Container (with container volume): click on Open in Dev Containers to clone this repository in a container volume and create a Dev Container with VS Code.
- Dev Container: clone this repository, open it with VS Code, and run Ctrl/⌘ + ⇧ + P → Dev Containers: Reopen in Container.
- PyCharm: clone this repository, open it with PyCharm, and configure Docker Compose as a remote interpreter with the
devservice. - Terminal: clone this repository, open it with your terminal, and run
docker compose up --detach devto start a Dev Container in the background, and then rundocker compose exec dev zshto open a shell prompt in the Dev Container.
Developing
- This project follows the Conventional Commits standard to automate Semantic Versioning and Keep A Changelog with Commitizen.
- Run
poefrom within the development environment to print a list of Poe the Poet tasks available to run on this project. - Run
poetry add {package}from within the development environment to install a run time dependency and add it topyproject.tomlandpoetry.lock. Add--group testor--group devto install a CI or development dependency, respectively. - Run
poetry updatefrom within the development environment to upgrade all dependencies to the latest versions allowed bypyproject.toml. - Run
cz bumpto bump the package's version, update theCHANGELOG.md, and create a git tag.
Metadata
Release files for querytyper 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| querytyper-0.1.0.tar.gz | 7.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| querytyper-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 14.4 kB
Release files / querytyper-0.1.0.tar.gz
| Download URL | querytyper-0.1.0.tar.gz |
|---|---|
| Size | 7.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
42ac91e27cf69be712e62a066b3ba69e97ce1c3cfa741a0f36298ca5cb613c4c
|
|
BLAKE2b-256 checksum How to use checksums |
ae49b217a108a6e7d2d36804c655b81a6156bcbf2308cc0a59c2cacc4aff5d15
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/1.7.1 CPython/3.8.18 Linux/6.2.0-1019-azure
|
Release files / querytyper-0.1.0-py3-none-any.whl
| Download URL | querytyper-0.1.0-py3-none-any.whl |
|---|---|
| Size | 7.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
a255af13e15e8437d33bd0f91aaa523f62434bd9cc60f0c53df50453c6b7353e
|
|
BLAKE2b-256 checksum How to use checksums |
ed13f862d1a9edde45b22fe274d8af1db7db6697b3b22a4fce2b293a56aea7fe
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/1.7.1 CPython/3.8.18 Linux/6.2.0-1019-azure
|