Skip to main content

PyPI - Python Version PyPI version

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.md
  • docs/v2/models.md
  • docs/v2/repositories.md
  • docs/v2/services.md
  • docs/v2/query-dsl.md
  • docs/v2/pagination.md
  • docs/v2/m2m.md
  • docs/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

Metadata

Release files for notora 0.18.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 notora 0.18.0
File Size Uploaded
notora-0.18.0.tar.gz 145.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for notora 0.18.0
File Interpreter ABI Platform
notora-0.18.0-py3-none-any.whl Python 3 none any Details

Total release size: 200.2 kB

Release files / notora-0.18.0.tar.gz

Download URL notora-0.18.0.tar.gz
Size 145.2 kB
Tags Source
SHA-256 checksum
How to use checksums
f4aaed1013cd0eaa8ca91a14e12bf751cad86ff2f53bb20a0c65c415b75e9b3d
BLAKE2b-256 checksum
How to use checksums
afa54ee6c0ec5616acda717df61e4cd5ba381167c1f60311244902ec3b5e9176
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.22 {"installer":{"name":"uv","version":"0.12.22","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}

Release files / notora-0.18.0-py3-none-any.whl

Download URL notora-0.18.0-py3-none-any.whl
Size 55.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
f595ba4f539947f14da2e3b308f2a6a4f309d1b97739c47ea25c517493b5fa1f
BLAKE2b-256 checksum
How to use checksums
a405d31a0c1749b336c5dfb74b6dc5927371a1dee399ffa2c27b0d43f65a137e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.22 {"installer":{"name":"uv","version":"0.12.22","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}

Release history Release notifications | RSS feed

This release

0.18.0 This release

2 release files

0.17.0

2 release files

0.15.0

2 release files

0.12.0

2 release files

0.11.0

2 release files

0.10.0

2 release files

0.9.0

2 release files

0.8.0

2 release files

0.7.0

2 release files

0.6.0

2 release files

0.5.0

2 release files

0.4.0

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.0

2 release files

0.0.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