Split infrastructure/cli/: - main.py (330 LOC) → 9 files in infrastructure/cli/commands/: * init.py, forecast.py, scenario.py, whatif.py, compare.py * import_xlsx.py, export_xlsx.py, analyze.py, info.py - config.py (428 LOC) → commands/config_cmd.py (15 sub-commands) - main.py → app.py (entry point: registers all commands) - New: paths.py (MODEL_PATH, DATA_DIR) - New: services.py (composition root + helpers: load_model, save_model, build_services, resolve_currency, convert_value, fmt_amount) - cli/__init__.py (empty) удалён Each command module: <100 LOC. pyproject.toml: cf = infrastructure.cli.app:app tests/test_cli.py: import обновлён на infrastructure.cli.app CLI behavior идентично, все команды работают. Tests: 67/67 pass.
32 lines
685 B
TOML
32 lines
685 B
TOML
[build-system]
|
|
requires = ["setuptools>=68.0"]
|
|
build-backend = "setuptools.build_meta"
|
|
|
|
[project]
|
|
name = "cashflow-forecast"
|
|
version = "0.1.0"
|
|
description = "Личная финансовая модель с прогнозом денежных потоков"
|
|
requires-python = ">=3.11"
|
|
dependencies = [
|
|
"openpyxl>=3.1",
|
|
"typer>=0.9",
|
|
"rich>=13.0",
|
|
"pydantic>=2.0",
|
|
]
|
|
|
|
[project.scripts]
|
|
cf = "infrastructure.cli.app:app"
|
|
|
|
[tool.setuptools.packages.find]
|
|
include = ["domain*", "application*", "infrastructure*"]
|
|
|
|
[tool.ruff]
|
|
target-version = "py311"
|
|
line-length = 120
|
|
|
|
[tool.ruff.lint]
|
|
select = ["E", "F", "I", "N", "W"]
|
|
|
|
[tool.pytest.ini_options]
|
|
testpaths = ["tests"]
|