"""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