"""
Carga y guardado de meta (tenant_id, company_id) para imports CSV.
"""
import json
import os
from typing import Dict, Any, Tuple


def load_meta(file_path: str) -> Dict[str, Any]:
    """Carga meta desde archivo .meta.json asociado al CSV. Devuelve dict vacío si no existe o falla."""
    meta_path = file_path.replace(".csv", ".meta.json")
    if not os.path.exists(meta_path):
        return {}
    try:
        with open(meta_path, "r", encoding="utf-8") as f:
            return json.load(f) or {}
    except Exception:
        return {}


def require_tenant_context(file_path: str) -> Tuple[int, int]:
    """
    Obtiene tenant_id y company_id del meta. Lanza ValueError si faltan.
    """
    meta = load_meta(file_path)
    tenant_id = meta.get("tenant_id")
    company_id = meta.get("company_id")
    if not tenant_id or not company_id:
        raise ValueError("Falta contexto (tenant/company)")
    return int(tenant_id), int(company_id)


def get_meta_path(file_path: str) -> str:
    """Ruta del archivo .meta.json para un CSV."""
    return file_path.replace(".csv", ".meta.json")
