Remodel/packages/api/pyproject.toml
Mannu e6dc39aa33 [S1-T12/T13] P&L revenue breakdown + collapsible rows + UI polish
- Engine: Add ppa_revenue_cr, mcp_revenue_cr, tariff, units to PnLRow
- Engine: Split PPA vs MCP revenue in P&L computation
- Web: Collapsible rows for PPA/MCP Revenue and Opex
- Web: Highlighted rows (Total Revenue, EBITDA, EBIT, PBT, PAT)
- Web: Units above Tariff in breakdown, bg-blue-50 highlight
- Fix sticky column z-index for horizontal scroll
- CLAUDE.md: Add project documentation

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-13 10:42:36 +05:30

78 lines
1.8 KiB
TOML

[tool.poetry]
name = "remodel-api"
version = "0.1.0"
description = "FastAPI + Arq async API for the REmodel calculation engine"
authors = ["Manohar <manohar6839@gmail.com>"]
readme = "README.md"
packages = [{include = "remodel_api", from = "src"}]
[tool.poetry.dependencies]
python = "^3.12"
fastapi = "^0.111"
uvicorn = {extras = ["standard"], version = "^0.30"}
arq = "^0.26"
redis = "^5.0"
sqlalchemy = {extras = ["asyncio"], version = "^2.0"}
aiosqlite = "^0.20"
alembic = "^1.13"
pydantic = "^2.7"
pydantic-settings = "^2.3"
remodel-engine = {path = "../engine", develop = true}
sse-starlette = "^2.1"
greenlet = "^3.5.0"
[tool.poetry.group.dev.dependencies]
ruff = "^0.4"
mypy = "^1.10"
pytest = "^8.2"
pytest-cov = "^5.0"
pytest-asyncio = "^0.23"
httpx = "^0.27"
anyio = "^4.4"
[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 = ["arq.*", "sse_starlette.*", "redis.*"]
ignore_missing_imports = true
[[tool.mypy.overrides]]
module = ["remodel_engine.*"]
ignore_missing_imports = true
[tool.pytest.ini_options]
testpaths = ["tests"]
asyncio_mode = "auto"
addopts = "--cov=remodel_api --cov-report=term-missing --cov-fail-under=85"
[tool.coverage.run]
source = ["remodel_api"]
branch = true
[tool.coverage.report]
exclude_lines = ["pragma: no cover", "if TYPE_CHECKING:"]