Files
Multi_Swarm_Coevolutive/pyproject.toml
T
Adriano Dal Pastro f55e4f00c5 fix(deploy): rimuovi PYTHONPATH, member come runtime deps, StripPrefix per NiceGUI subpath
Tre fix di deploy emersi al primo build/up del nuovo compose:

1. Dockerfile: rimosso PYTHONPATH=/app/src
   Con layout uv workspace doppio-nest, PYTHONPATH=/app/src faceva ombra
   alla venv risolvendo le member-dir (multi_swarm_core/, strategy_crypto/)
   come namespace packages PEP 420 senza i sub-package del codice
   (cerbero, persistence, frontend, ecc.). I package sono installati come
   editable dal `uv sync --frozen` nella venv: niente PYTHONPATH necessario.

2. pyproject root: aggiunto [project] dependencies = [multi-swarm-core, strategy-crypto]
   I due member workspace erano in [dependency-groups.dev], escluse da
   `uv sync --frozen --no-dev` del builder Docker -> "ModuleNotFoundError:
   No module named multi_swarm_core". Spostati come dipendenze runtime del
   deployable app root; dev group ora contiene solo pytest/ruff/mypy.
   uv.lock rigenerato.

3. docker-compose.yml: aggiunto Traefik middleware StripPrefix
   NiceGUI con root_path="/strategy_crypto_gui" assume che il proxy
   strippi il prefix prima di girare al container (FastAPI route restano
   "/", "/paper", ecc.). Senza StripPrefix, NiceGUI riceveva
   "/strategy_crypto_gui/" e rispondeva 404. Aggiunte 2 label:
   - strategy-crypto-stripprefix middleware
   - router.middlewares = strategy-crypto-stripprefix

Verifica end-to-end:
- https://swarm.tielogic.xyz/strategy_crypto_gui/ -> HTTP 200 (31KB)
- https://swarm.tielogic.xyz/ -> HTTP 404 (root libera, atteso)
- paper run phase3-baseline-001 (fcf271d0...) tick=1 OK, $1000 equity
- state/strategy_crypto.db creato con 5 tabelle paper_trading_*

NB: permission fix per `src/strategy_crypto/strategy_crypto/strategies/`
fatto manualmente (chown 1000:1000) — i JSON migrati da git mv erano
root:root, container gira come uid 1000. Annotare per future strategies.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-15 18:59:14 +00:00

51 lines
1.3 KiB
TOML

[project]
name = "multi-swarm-coevolutive"
version = "0.1.0"
description = "Multi-Swarm Coevolutive: monorepo workspace (core + strategie)"
authors = [{ name = "Adriano Dal Pastro", email = "adrianodalpastro@tielogic.com" }]
requires-python = ">=3.13"
# I due workspace member sono dipendenze runtime del deployable app root.
# Cosi' `uv sync --frozen --no-dev` (nel builder Docker) li installa entrambi
# come editable nella venv senza tirare pytest/ruff/mypy.
dependencies = [
"multi-swarm-core",
"strategy-crypto",
]
[tool.uv.workspace]
members = ["src/multi_swarm_core", "src/strategy_crypto"]
[tool.uv.sources]
multi-swarm-core = { workspace = true }
strategy-crypto = { workspace = true }
[dependency-groups]
dev = [
"pytest>=8.3",
"pytest-mock>=3.14",
"pytest-asyncio>=0.24",
"responses>=0.25",
"ruff>=0.7",
"mypy>=1.13",
"types-requests>=2.32",
]
[tool.ruff]
line-length = 100
target-version = "py313"
[tool.ruff.lint]
select = ["E", "F", "W", "I", "N", "UP", "B", "RUF"]
[tool.mypy]
python_version = "3.13"
strict = true
[tool.pytest.ini_options]
testpaths = ["src/multi_swarm_core/tests", "src/strategy_crypto/tests"]
addopts = "-v --tb=short --import-mode=importlib"
markers = [
"integration: tests that require external services (Cerbero, LLM API)",
"slow: tests that take more than 5 seconds",
]