satorbis_kit.backends module¶
- class satorbis_kit.backends.Backend[source]¶
Bases:
ABCAbstract base class for compute backends (Dask, Sedona, etc.)
Follows SOLID principles: - Single Responsibility: Each backend handles one compute framework - Open/Closed: Open for extension via inheritance - Liskov Substitution: All backends are interchangeable - Interface Segregation: Clean, focused interface - Dependency Inversion: Depend on abstractions, not concretions
- class satorbis_kit.backends.BackendFactory[source]¶
Bases:
objectFactory for creating and managing compute backends.
Follows Factory Pattern + Singleton Pattern for managing backend registry.
- create_dask_backend(client) DaskBackend[source]¶
Create a DaskBackend instance.
- create_sedona_backend(spark_session) SedonaBackend[source]¶
Create a SedonaBackend instance.
- get_backend_class(name: str) type[source]¶
Get a backend class by name.
- Parameters:
name – Backend name
- Returns:
Backend class
- Raises:
ValueError – If backend name is unknown
- classmethod get_instance() BackendFactory[source]¶
Get the singleton instance.
- class satorbis_kit.backends.ComputeStrategy(*args, **kwargs)[source]¶
Bases:
ProtocolProtocol defining the compute strategy interface (Strategy Pattern)
- class satorbis_kit.backends.DaskBackend(client)[source]¶
Bases:
BackendDask-based backend for parallel computation.
- class satorbis_kit.backends.DaskConfig(scheduler_address: str | None = None, n_workers: int = 4, threads_per_worker: int = 1, processes: bool = True)[source]¶
Bases:
objectConfiguration for Dask backend (Single Responsibility Principle).
- n_workers: int = 4¶
- processes: bool = True¶
- scheduler_address: str | None = None¶
- threads_per_worker: int = 1¶
- class satorbis_kit.backends.SedonaBackend(spark_session)[source]¶
Bases:
BackendApache Sedona-based backend for geospatial processing.
- class satorbis_kit.backends.SedonaConfig(spark_master: str = 'local[*]', app_name: str = 'SatorbisKit')[source]¶
Bases:
objectConfiguration for Sedona backend (Single Responsibility Principle).
- app_name: str = 'SatorbisKit'¶
- spark_master: str = 'local[*]'¶
- satorbis_kit.backends.get_backend(name: str = 'dask', *, scheduler_address: str | None = None, n_workers: int = 4, threads_per_worker: int = 1, processes: bool = True, spark_master: str | None = None, **kwargs) Iterator[Backend][source]¶
Factory/context manager for creating and managing compute backends.
Uses Strategy Pattern to select appropriate backend implementation. Uses Dependency Injection for configuration.
- Parameters:
name – Backend name (‘dask’ or ‘sedona’)
scheduler_address – Dask scheduler address (for ‘dask’ backend)
n_workers – Number of workers (for ‘dask’ backend)
threads_per_worker – Threads per worker (for ‘dask’ backend)
processes – Use processes instead of threads (for ‘dask’ backend)
spark_master – Spark master URL (for ‘sedona’ backend)
**kwargs – Additional backend-specific parameters
- Yields:
Backend instance
- Raises:
ValueError – If unknown backend name
NotImplementedError – If backend not yet implemented