• Joined on 2026-05-04

uais-lib (0.2.0)

Published 2026-06-11 18:07:08 +00:00 by admin

Installation

pip install --index-url  --extra-index-url https://pypi.org/simple uais-lib

About this package

UAIS paylaşılan kütüphane — Stripe billing + Workspace + Auth wrapper'ları

uais-lib (Python)

PyPI paketi: uais-lib Modül: uais_lib

UAIS ekosisteminin Python backend ortak katmanı. Studio, VIP, WAI, Content (kısmi) bu paketi import eder.


Kurulum (Phase 1 başında geçerli)

# Tüketici proje pyproject.toml
[project]
dependencies = [
    "uais-lib==0.1.0",   # production: exact pin
]

veya geliştirme için:

pip install uais-lib
# ya da
uv add uais-lib

Sub-modüller

Modül İçerik Phase
auth/ Zitadel OIDC, JWT, API key 1
billing/ Stripe Customer + Subscription + Metered + Webhook 1
db/ SQLAlchemy + CNPG + RLS 1
queue/ NATS JetStream producer + consumer 1
storage/ MinIO presigned URL (workspace-scoped) 1
workspace/ Workspace + Member + Tier + Quota + Guard 1
audit/ Append-only audit log writer 1
webhooks/ HMAC sign/verify + idempotency + replay protect 1
errors/ UaisError + alt sınıflar 1
observability/ Prometheus + Loki helpers 1
personas/ Karakter persona profilleri (Sermin, Marcus, …) 2
testing/ pytest fixtures (mock_stripe, mock_zitadel, mock_nats) 1

Geliştirme (Phase 1 başında geçerli)

cd python/
uv sync
uv run pytest
uv run ruff check
uv run mypy src/

Phase 0'da kod yok. Phase 1 başında pyproject.toml.examplepyproject.toml rename + içerik doldurulur.


Test

  • Unit testler tests/ altında, modül-paralel yapı (tests/billing/test_stripe_client.py)
  • Fixture'lar uais_lib.testing modülünde (tüketici de import edip kullanabilir)
  • Coverage hedefi: %80+
  • CI matrix: Python 3.12 + 3.13, OS Ubuntu

Yayın

uv build ile wheel + sdist oluşur. GitHub Actions tag (v0.x.x) basıldığında PyPI'ya push eder.


Tüketici örneği

from uais_lib.auth import require_workspace
from uais_lib.billing import StripeClient
from uais_lib.workspace import WorkspaceGuard, QuotaError

stripe = StripeClient(api_key=settings.STRIPE_KEY)
guard = WorkspaceGuard(db=session, redis=redis)

@router.post("/api/v1/jobs")
async def create_job(workspace = Depends(require_workspace)):
    try:
        await guard.consume(workspace, kind="image_gen", count=1)
    except QuotaError:
        raise HTTPException(402)
    # ... job submit

Requirements

Requires Python: >=3.12
Details
PyPI
2026-06-11 18:07:08 +00:00
4
Proprietary
113 KiB
Assets (1)
Versions (1) View all
0.2.0 2026-06-11