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).
This commit is contained in:
+24
-20
@@ -2,13 +2,19 @@
|
||||
# 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 --no-index --output-file=requirements.txt pyproject.toml
|
||||
# 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 (pyproject.toml)
|
||||
# via tavolo-app (pyproject.toml)
|
||||
aiosqlite==0.22.1
|
||||
# via tortoise-orm
|
||||
anyio==4.15.1
|
||||
@@ -19,7 +25,7 @@ anyio==4.15.1
|
||||
asyncclick==8.4.2.1
|
||||
# via aerich
|
||||
asyncpg==0.31.0
|
||||
# via tavolo (pyproject.toml)
|
||||
# via tavolo-app (pyproject.toml)
|
||||
certifi==2026.7.22
|
||||
# via
|
||||
# httpcore
|
||||
@@ -35,7 +41,7 @@ dictdiffer==0.10.0
|
||||
granian==2.8.3
|
||||
# via
|
||||
# kaya-rsgi
|
||||
# tavolo (pyproject.toml)
|
||||
# tavolo-app (pyproject.toml)
|
||||
h11==0.16.0
|
||||
# via httpcore
|
||||
httpcore==1.0.9
|
||||
@@ -43,8 +49,8 @@ httpcore==1.0.9
|
||||
httpx==0.28.1
|
||||
# via
|
||||
# kaya-oidc
|
||||
# tavolo (pyproject.toml)
|
||||
idna==3.19
|
||||
# tavolo-app (pyproject.toml)
|
||||
idna==3.20
|
||||
# via
|
||||
# anyio
|
||||
# httpx
|
||||
@@ -57,46 +63,44 @@ kaya-core==0.0.4
|
||||
# kaya-openapi
|
||||
# kaya-rsgi
|
||||
# kaya-session
|
||||
# tavolo (pyproject.toml)
|
||||
# tavolo-app (pyproject.toml)
|
||||
kaya-cors==0.0.4
|
||||
# via tavolo (pyproject.toml)
|
||||
# via tavolo-app (pyproject.toml)
|
||||
kaya-oidc==0.0.4
|
||||
# via tavolo (pyproject.toml)
|
||||
# via tavolo-app (pyproject.toml)
|
||||
kaya-openapi==0.0.4
|
||||
# via tavolo (pyproject.toml)
|
||||
# via tavolo-app (pyproject.toml)
|
||||
kaya-rsgi==0.0.4
|
||||
# via tavolo (pyproject.toml)
|
||||
# via tavolo-app (pyproject.toml)
|
||||
kaya-session==0.0.4
|
||||
# via
|
||||
# kaya-oidc
|
||||
# kaya-session-redis
|
||||
# tavolo (pyproject.toml)
|
||||
# tavolo-app (pyproject.toml)
|
||||
kaya-session-redis==0.0.4
|
||||
# via tavolo (pyproject.toml)
|
||||
# via tavolo-app (pyproject.toml)
|
||||
pwo==0.1.2
|
||||
# via
|
||||
# kaya-core
|
||||
# kaya-rsgi
|
||||
# kaya-session
|
||||
# tavolo (pyproject.toml)
|
||||
# tavolo-app (pyproject.toml)
|
||||
pycparser==3.0
|
||||
# via cffi
|
||||
pyjwt[crypto]==2.14.0
|
||||
# via
|
||||
# kaya-oidc
|
||||
# tavolo (pyproject.toml)
|
||||
# tavolo-app (pyproject.toml)
|
||||
pypika-tortoise==0.6.5
|
||||
# via tortoise-orm
|
||||
pyyaml==6.0.3
|
||||
# via tavolo (pyproject.toml)
|
||||
# via tavolo-app (pyproject.toml)
|
||||
redis==8.1.0
|
||||
# via
|
||||
# kaya-session-redis
|
||||
# tavolo (pyproject.toml)
|
||||
# tavolo-app (pyproject.toml)
|
||||
tortoise-orm==1.1.8
|
||||
# via
|
||||
# aerich
|
||||
# tavolo (pyproject.toml)
|
||||
# via aerich
|
||||
typing-extensions==4.16.0
|
||||
# via
|
||||
# anyio
|
||||
|
||||
Reference in New Issue
Block a user