Skip to main content

praxicraft-shared

Stateless Python utilities shared by Praxicraft backends (Practice, auth, notifications, billing, support, Tutor, LLM clients). Products pin a PyPI version. No Django ORM, settings, or product business logic lives here.

PyPI https://pypi.org/project/praxicraft-shared/
Current version 0.7.4 (see pyproject.toml)
Python 3.11+

Contents

  1. About
  2. Install in a product
  3. Local development
  4. What’s in the package
  5. Release
  6. Docs and deeper integrations

About

Hard rules:

  1. Stateless — no Django models, ORM, Celery, or package-owned Redis singletons
  2. No django.conf.settings — callers inject URLs and keys
  3. No product logic (XP, Assess scoring, Tutor mastery)
  4. Semver via git tags + PyPI — breaking JWT/auth contracts = major bump

Planning history: Practice shared docs.


Install in a product

Published on PyPI:

pip install praxicraft-shared==0.7.4

Docker / CI need no GitHub token — public index only.

Local editable (sibling checkout):

pip install -e ~/Desktop/praxicraft-shared

Local development

cd ~/Desktop/praxicraft-shared
pip install -e ".[dev]"
ruff check src tests
pytest

What’s in the package

Module Role
jwt_utils Validate RS256 access JWTs (JWKS / PEM)
auth_client HTTP client for praxicraft-auth
org_client Auth organisation directory
billing_client Entitlements, checkout, cancel/resume
notifications_client Send, events, prefs, push, inbox
support_client Support tickets API
ai_service Thin client for praxicraft-llm
s3_client Injectable MinIO/S3 helpers
service_token Parse product:token / JSON maps
error_envelope Standard success/error shapes
events Event envelope helpers
email/ Shared HTML/text email templates (rendered by notifications)
secret_crypto Fernet encrypt/decrypt (inject key)
work_email / hibp Email helpers / HIBP check

Release

  1. Bump version in pyproject.toml and __version__ in src/praxicraft_shared/__init__.py.
  2. Merge to main.
  3. Tag vX.Y.Z and push the tag (triggers Publish), or Actions → Publish → Run workflow with that existing tag.
  4. GitHub Actions publishes to PyPI via Trusted Publishing and creates a GitHub Release.

Pushing main alone runs CI only — it does not publish to PyPI until a v* tag exists.


Docs and deeper integrations

Link Topic
notifications PRODUCT-INTEGRATION How products call notifications_client
support PRODUCT-INTEGRATION How products call support_client
auth README Application registry + JWT
billing README Entitlements client
Tutor README End-to-end product wiring
praxicraft-llm Gateway tokens for ai_service

Release files for praxicraft-shared 0.7.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for praxicraft-shared 0.7.4
File Size Uploaded
praxicraft_shared-0.7.4.tar.gz 68.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for praxicraft-shared 0.7.4
File Interpreter ABI Platform
praxicraft_shared-0.7.4-py3-none-any.whl Python 3 none any Details

Total release size: 196.1 kB

Release files / praxicraft_shared-0.7.4.tar.gz

Download URL praxicraft_shared-0.7.4.tar.gz
Size 68.8 kB
Tags Source
SHA-256 checksum
How to use checksums
18a2ee6a7a4a2e5ec0665db19170125bde56566e57e0e473255767d9801e2ae0
BLAKE2b-256 checksum
How to use checksums
35358b1a09d21f2cdce31591a5efa69a979c46f934faed320d43e5bf21f2c92b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 24, 2026.

Transparency log

Release files / praxicraft_shared-0.7.4-py3-none-any.whl

Download URL praxicraft_shared-0.7.4-py3-none-any.whl
Size 127.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
ae81cecf76052e7c8bf7e18f30dd4f3aeb164170700ab179b078ab48acbb3f62
BLAKE2b-256 checksum
How to use checksums
5ad0260d62cfce95c285b08303200bf41b9d7556010a6758281c073e6eeae064
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 24, 2026.

Transparency log

Release history Release notifications | RSS feed

0.8.1

2 release files

0.8.0

2 release files

This release

0.7.4 This release

2 release files

0.7.3

2 release files

0.7.2

2 release files

0.7.1

2 release files

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