- 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> |
||
|---|---|---|
| .. | ||
| docs | ||
| src/remodel_engine | ||
| tests | ||
| pyproject.toml | ||
| README.md | ||
remodel-engine
UI-agnostic Python calculation library for hybrid RE (Solar + Wind + BESS) project finance.
Setup
poetry install
Common commands
poetry run pytest # run tests with coverage
poetry run ruff check . # lint
poetry run mypy src/ # type-check
poetry run remodel --help # CLI (after implementation)
Package layout
src/remodel_engine/
├── schemas/ Pydantic models (single source of truth)
├── catalog/ Default values, CostItem catalog, profiles
├── generation/ solar.py, wind.py, bess_state.py
├── dispatch/ hybrid_rtc.py, mcp_settlement.py
├── commercial/ ppa.py, dsm.py, charges.py, losses.py
├── capex/ cost_items.py, phasing.py, idc.py
├── financial/ pnl.py, cfs.py, bs.py, depreciation.py, tax.py
├── debt/ sizing.py, sculpting.py, schedule.py, compliance.py
├── irr/ metrics.py
├── solver/ tariff.py
├── scenarios/ runner.py, sweep.py
├── io/ parquet_io.py, excel_export.py
└── cli.py