Remodel/packages/engine/pyproject.toml
Mannu 314127effc [S1-T01 through T11] Solar, Wind, BESS generation simulation + CLI
- Pydantic schemas: SolarConfig, WindConfig, BessConfig, GenerationResult
- Catalog: synthetic 8760h profiles for RJ/KA/GJ solar and wind; LRU-cached loader
- generation/solar.py: 25yr hourly simulation (DC losses, inverter, clipping, soiling, degradation)
- generation/wind.py: power-law shear, piecewise power curve, wake/electrical losses, degradation
- generation/bess_state.py: SOH-based capacity degradation with augmentation schedule
- CLI: remodel --input scenario.json --output gen.parquet (Typer upgraded to 0.25.1 for Click 8.3 compat)
- 43 unit tests, 97.4% coverage; mypy strict + ruff clean
- S1-T10 parity gate: placeholder fixture + skipped integration tests (awaiting Nagasamudra data)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-07 10:04:21 +05:30

71 lines
1.6 KiB
TOML

[tool.poetry]
name = "remodel-engine"
version = "0.1.0"
description = "RE project finance calculation engine for hybrid solar/wind/BESS projects"
authors = ["Manohar <manohar6839@gmail.com>"]
readme = "README.md"
packages = [{include = "remodel_engine", from = "src"}]
[tool.poetry.dependencies]
python = "^3.12"
pydantic = "^2.7"
numpy = "^2.0"
pandas = "^2.2"
scipy = ">=1.13"
numpy-financial = "^1.0"
pyarrow = ">=19.0"
openpyxl = "^3.1"
typer = ">=0.25.1"
[tool.poetry.group.dev.dependencies]
ruff = "^0.4"
mypy = "^1.10"
pytest = "^8.2"
pytest-cov = "^5.0"
pre-commit = "^3.7"
pandas-stubs = "^2.2"
[tool.poetry.scripts]
remodel = "remodel_engine.cli:main"
[build-system]
requires = ["poetry-core"]
build-backend = "poetry.core.masonry.api"
[tool.ruff]
target-version = "py312"
line-length = 100
src = ["src", "tests"]
[tool.ruff.lint]
select = ["E", "F", "W", "I", "UP", "B", "SIM", "ANN", "RUF"]
ignore = ["ANN101", "ANN102", "ANN401"]
[tool.ruff.lint.per-file-ignores]
"tests/**" = ["ANN"]
[tool.mypy]
python_version = "3.12"
strict = true
warn_return_any = true
warn_unused_configs = true
disallow_untyped_defs = true
disallow_any_generics = true
check_untyped_defs = true
no_implicit_reexport = true
files = ["src"]
[[tool.mypy.overrides]]
module = ["scipy.*", "numpy_financial.*"]
ignore_missing_imports = true
[tool.pytest.ini_options]
testpaths = ["tests"]
addopts = "--cov=remodel_engine --cov-report=term-missing --cov-fail-under=85"
[tool.coverage.run]
source = ["remodel_engine"]
branch = true
[tool.coverage.report]
exclude_lines = ["pragma: no cover", "if TYPE_CHECKING:"]