satorbis_kit.backends module

class satorbis_kit.backends.Backend[source]

Bases: ABC

Abstract 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

abstractmethod close()[source]

Clean up resources.

abstractmethod compute(tasks: Iterable, show_progress: bool = True)[source]

Execute delayed tasks and return results.

abstractmethod delayed(fn)[source]

Mark a function as a delayed task for parallel execution.

class satorbis_kit.backends.BackendFactory[source]

Bases: object

Factory 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.

list_backends() list[str][source]

List all registered backend names.

register_backend(name: str, backend_class: type) None[source]

Register a new backend type.

Parameters:
  • name – Backend name

  • backend_class – Backend class that subclasses Backend

Raises:

TypeError – If backend_class doesn’t subclass Backend

class satorbis_kit.backends.ComputeStrategy(*args, **kwargs)[source]

Bases: Protocol

Protocol defining the compute strategy interface (Strategy Pattern)

close() None[source]

Clean up resources.

compute(tasks: Iterable, show_progress: bool = True) Any[source]

Execute delayed tasks and return results.

delayed(fn) Any[source]

Mark a function as a delayed task for parallel execution.

class satorbis_kit.backends.DaskBackend(client)[source]

Bases: Backend

Dask-based backend for parallel computation.

close()[source]

Close the Dask client.

compute(tasks: Iterable, show_progress: bool = True)[source]

Execute Dask tasks with optional progress bar.

delayed(fn)[source]

Create a Dask delayed task.

class satorbis_kit.backends.DaskConfig(scheduler_address: str | None = None, n_workers: int = 4, threads_per_worker: int = 1, processes: bool = True)[source]

Bases: object

Configuration 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: Backend

Apache Sedona-based backend for geospatial processing.

close()[source]

Close the Spark session.

compute(tasks: Iterable, show_progress: bool = True)[source]

Execute Sedona tasks (to be implemented).

delayed(fn)[source]

Create a Sedona task (to be implemented).

class satorbis_kit.backends.SedonaConfig(spark_master: str = 'local[*]', app_name: str = 'SatorbisKit')[source]

Bases: object

Configuration 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