Shared base logic used across AldanDev projects.
Project description
notora
Shared base logic used across AldanDev projects.
- v1 (legacy):
notora.v1 - v2 (next-gen toolkit):
notora.v2
v2 quickstart
from notora.v2.repositories import Repository, RepoConfig
from notora.v2.services import RepositoryService, ServiceConfig
repo = Repository(
User,
config=RepoConfig(default_limit=50),
)
service = RepositoryService(
repo,
config=ServiceConfig(detail_schema=UserSchema, list_schema=UserListSchema),
)
v2 docs
docs/v2/index.mddocs/v2/models.mddocs/v2/repositories.mddocs/v2/services.mddocs/v2/query-dsl.mddocs/v2/pagination.mddocs/v2/m2m.mddocs/v2/recipes.md
Listing and pagination
from notora.v2.repositories import QueryParams, PaginationParams
rows = await service.list_raw(
session,
limit=None, # no limit
)
params = QueryParams(filters=[...], ordering=[...], limit=None)
rows = await service.list_raw_params(session, params)
page = await service.paginate_params(
session,
PaginationParams(limit=20, offset=0, filters=[...]),
)
Repository/service factories
from notora.v2.repositories import build_repository, RepoConfig
from notora.v2.services import build_service, ServiceConfig
repo = build_repository(User, config=RepoConfig(default_limit=25))
service = build_service(User, repo=repo, service_config=ServiceConfig(detail_schema=UserSchema))
Query DSL (FastAPI-friendly)
from fastapi import Depends
from notora.v2.repositories import (
FilterField,
QueryParams,
QueryInput,
SortField,
build_query_params,
make_query_params_dependency,
)
filter_fields = {
'name': FilterField(resolver=lambda m: m.name, value_type=str),
'age': FilterField(resolver=lambda m: m.age, value_type=int, operators={'eq', 'gte', 'lte'}),
}
sort_fields = {
'name': SortField(resolver=lambda m: m.name),
'created_at': SortField(resolver=lambda m: m.created_at),
}
def query_params(query: QueryInput = Depends()) -> QueryParams[User]:
return build_query_params(
query,
model=User,
filter_fields=filter_fields,
sort_fields=sort_fields,
)
query_params_dep = make_query_params_dependency(
model=User,
filter_fields=filter_fields,
sort_fields=sort_fields,
)
# Example request:
# /users?filter=name:eq:john&filter=age:gte:18&sort=-created_at&limit=20&offset=0
Supported operators: eq, ne, lt, lte, gt, gte, in, ilike, isnull.
M2M sync modes
from notora.v2.services import M2MSyncMode
class UserService(RepositoryService[UUID, User, UserSchema]):
m2m_sync_mode: M2MSyncMode = M2MSyncMode.ADD
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
notora-0.10.0.tar.gz
(99.2 kB
view details)
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
notora-0.10.0-py3-none-any.whl
(48.0 kB
view details)
File details
Details for the file notora-0.10.0.tar.gz.
File metadata
- Download URL: notora-0.10.0.tar.gz
- Upload date:
- Size: 99.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.3 {"installer":{"name":"uv","version":"0.10.3","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":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3f0fa87a4acf440b02fe317959417f002ea5a9fef00ce5846233006ec97387bf
|
|
| MD5 |
0cd865d4b1b4441ae08db1ab8baa4c14
|
|
| BLAKE2b-256 |
4660ac9f07ffdd9fc44647b655f9d43b8cf04d9aed02fa4d70262cb9cd9c4d25
|
File details
Details for the file notora-0.10.0-py3-none-any.whl.
File metadata
- Download URL: notora-0.10.0-py3-none-any.whl
- Upload date:
- Size: 48.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.3 {"installer":{"name":"uv","version":"0.10.3","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":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fba808e66b1a0258c6e7b3b22bdf9668cd3f8fb6cfa3a07e8a46679f8712785d
|
|
| MD5 |
9079c17cabed20d53e5673244d769719
|
|
| BLAKE2b-256 |
15ec99834b0442e4c897421a97bed63918735f5bdbe88a6dae8b3f52d94263d2
|