
from __future__ import annotations

import csv
from pathlib import Path
from typing import Any

BASE_DIR = Path(__file__).resolve().parents[2]
DEFAULT_CACHE = BASE_DIR / "data" / "cache" / "sitadel_communes.csv"


def status() -> dict[str, Any]:
    return {
        "configured": DEFAULT_CACHE.exists(),
        "mode": "dido_api_or_cached_csv",
        "cache_file": str(DEFAULT_CACHE.relative_to(BASE_DIR)),
        "planned_indicators": [
            "logements autorises par commune et par an",
            "logements crees par transformation ou rehabilitation si disponible",
            "locaux non residentiels autorises",
            "surfaces autorisees",
        ],
    }


def load_cached_rows(code_insee: str | None = None) -> list[dict[str, Any]]:
    if not DEFAULT_CACHE.exists():
        return []
    with DEFAULT_CACHE.open("r", encoding="utf-8-sig", newline="") as f:
        rows = list(csv.DictReader(f))
    if code_insee:
        return [r for r in rows if str(r.get("code_insee") or r.get("CODGEO") or r.get("code_commune") or "") == str(code_insee)]
    return rows
