"""Data fetchers para AR-House.

Obtiene datos reales de fuentes oficiales ANTES de pasar el deal a los agentes Ollama.
Asi los agentes razonan sobre datos verificados (FEMA, HUD, NOAA, Census ACS) en vez de inventar.

Uso principal:
    from data_fetchers.runner import fetch_all
    data = fetch_all(deal, status_cb=...)
    # data = {"geocode": {...}, "flood": {...}, "fmr": {...},
    #         "hurricanes": [...], "neighborhood": {...}, "fetch_errors": [...]}

Fail-soft: si algun fetcher falla, devuelve dict vacio en su campo y agrega a fetch_errors.
El pipeline NO se aborta.

Compliance: la clasificacion de vecindarios usa SOLO indicadores economicos objetivos
(income, owner-occupancy, education, vacancy, crime, days-on-market). NUNCA demografia
racial. Esto cumple con Fair Housing Act federal.
"""

# Cargar .env ANTES de los imports — buscando desde este archivo upwards.
# Asi los fetchers (Census, HUD, FBI) encuentran las API keys aunque el caller
# este corriendo desde otro CWD.
import os
from pathlib import Path
from dotenv import load_dotenv

_here = Path(__file__).resolve().parent  # .../data_fetchers/
for _parent in [_here.parent] + list(_here.parents):
    _candidate = _parent / ".env"
    if _candidate.exists():
        load_dotenv(_candidate)
        break

from .runner import fetch_all
from .price_validator import validate_price

__all__ = ["fetch_all", "validate_price"]
