Files
tavolo/server/requirements.txt
T
woggioni 5a73601ddf Split backend into tavolo-platform, tavolo-scopone and tavolo-app packages
Move the game-independent machinery (lobby, live-game store, websocket,
deadline scheduler, match history, leaderboards) into a new
tavolo-platform distribution behind a GameEngine contract, the scopone
scientifico rules plus a platform adapter into tavolo-scopone, and keep
only the composition root in tavolo-app. The three distributions share
the tavolo namespace (PEP 420, kaya-style monorepo).

Match history becomes fully generic: Match carries the engine's result
JSON and MatchPlayer points/details instead of scopone-shaped team
columns (migration 3 backfills existing rows). Lobby creation takes an
opaque per-game options object and websocket actions dispatch to the
session's engine.

Tests: platform suite runs against a DummyEngine toy game, scopone
keeps the rules tests plus new adapter tests, server/tests covers the
wired stack end to end (194 tests, was 143).
2026-09-19 07:28:58 +00:00

109 lines
2.5 KiB
Plaintext

#
# This file is autogenerated by pip-compile with Python 3.14
# by the following command:
#
# pip-compile --allow-unsafe --extra-index-url=https://pypi.org/simple --index-url=https://gitea.woggioni.net/api/packages/woggioni/pypi/simple --output-file=requirements.txt pyproject.toml
#
# NOTE: the tavolo-platform and tavolo-scopone sibling packages are NOT
# pinned here: they are installed from ./packages in the Dockerfile and in
# development (pip install -e ./packages/* -e .). All of their third-party
# dependencies are direct dependencies of tavolo-app, so this lock covers
# the full closure.
#
--index-url https://gitea.woggioni.net/api/packages/woggioni/pypi/simple
--extra-index-url https://pypi.org/simple
aerich==0.10.1
# via tavolo-app (pyproject.toml)
aiosqlite==0.22.1
# via tortoise-orm
anyio==4.15.1
# via
# aerich
# httpx
# tortoise-orm
asyncclick==8.4.2.1
# via aerich
asyncpg==0.31.0
# via tavolo-app (pyproject.toml)
certifi==2026.7.22
# via
# httpcore
# httpx
cffi==2.1.1
# via cryptography
click==8.5.0
# via granian
cryptography==50.0.1
# via pyjwt
dictdiffer==0.10.0
# via aerich
granian==2.8.3
# via
# kaya-rsgi
# tavolo-app (pyproject.toml)
h11==0.16.0
# via httpcore
httpcore==1.0.9
# via httpx
httpx==0.28.1
# via
# kaya-oidc
# tavolo-app (pyproject.toml)
idna==3.20
# via
# anyio
# httpx
iso8601==2.1.0
# via tortoise-orm
kaya-core==0.0.4
# via
# kaya-cors
# kaya-oidc
# kaya-openapi
# kaya-rsgi
# kaya-session
# tavolo-app (pyproject.toml)
kaya-cors==0.0.4
# via tavolo-app (pyproject.toml)
kaya-oidc==0.0.4
# via tavolo-app (pyproject.toml)
kaya-openapi==0.0.4
# via tavolo-app (pyproject.toml)
kaya-rsgi==0.0.4
# via tavolo-app (pyproject.toml)
kaya-session==0.0.4
# via
# kaya-oidc
# kaya-session-redis
# tavolo-app (pyproject.toml)
kaya-session-redis==0.0.4
# via tavolo-app (pyproject.toml)
pwo==0.1.2
# via
# kaya-core
# kaya-rsgi
# kaya-session
# tavolo-app (pyproject.toml)
pycparser==3.0
# via cffi
pyjwt[crypto]==2.14.0
# via
# kaya-oidc
# tavolo-app (pyproject.toml)
pypika-tortoise==0.6.5
# via tortoise-orm
pyyaml==6.0.3
# via tavolo-app (pyproject.toml)
redis==8.1.0
# via
# kaya-session-redis
# tavolo-app (pyproject.toml)
tortoise-orm==1.1.8
# via aerich
typing-extensions==4.16.0
# via
# anyio
# kaya-core
# pwo