22 lines
521 B
Python
22 lines
521 B
Python
from abc import ABC, abstractmethod
|
|
import polars as pl
|
|
|
|
|
|
class DataSource(ABC):
|
|
"""Base class for all data sources."""
|
|
|
|
@property
|
|
@abstractmethod
|
|
def name(self) -> str:
|
|
"""Unique identifier for this data source."""
|
|
pass
|
|
|
|
@abstractmethod
|
|
def load(self) -> pl.LazyFrame:
|
|
"""Load raw data as LazyFrame."""
|
|
pass
|
|
|
|
@abstractmethod
|
|
def process(self, postcodes: pl.LazyFrame) -> pl.LazyFrame:
|
|
"""Process and join with postcode coordinates."""
|
|
pass
|