f55e4f00c5
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>
51 lines
1.3 KiB
TOML
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",
|
|
]
|