Source code for unsprawl.adapters.base

"""Adapter interfaces.

Adapters translate local/provider data into the universal core schemas.

Anti-circular protocol
----------------------
Adapters may import from:
- `unsprawl.core` (schemas)
- `unsprawl.providers` (fetchers)

Adapters MUST NOT import from loaders.
"""

from __future__ import annotations

from abc import ABC, abstractmethod

from unsprawl.core.schemas import Asset


[docs] class CountryAdapter(ABC): """Abstract adapter for a country-level normalization layer."""
[docs] @abstractmethod def fetch(self, region_code: str) -> list[Asset]: """Fetch and normalize assets for a specific region. Parameters ---------- region_code: Hyphenated region code string (e.g., 'SG' or 'US-CA-SF'). Returns ------- list[Asset] Normalized assets. """ raise NotImplementedError