Skip to content

pydantable.engine

Execution engine protocols and default engine accessors.

pydantable.engine

Execution engine abstraction (native engine lives in pydantable-native).

native_engine_capabilities

native_engine_capabilities()

Capabilities for the current native extension load, if any.

Source code in python/pydantable/engine/protocols.py
def native_engine_capabilities() -> EngineCapabilities:
    """Capabilities for the current native extension load, if any."""
    try:
        from pydantable_native.capabilities import (  # type: ignore[import-not-found]
            native_engine_capabilities as _native_engine_capabilities,
        )
    except (ImportError, ModuleNotFoundError):
        return EngineCapabilities(
            backend="native",
            extension_loaded=False,
            has_execute_plan=False,
            has_async_execute_plan=False,
            has_async_collect_plan_batches=False,
            has_sink_parquet=False,
            has_sink_csv=False,
            has_sink_ipc=False,
            has_sink_ndjson=False,
            has_collect_plan_batches=False,
            has_execute_join=False,
            has_execute_groupby_agg=False,
        )
    return _native_engine_capabilities()

get_default_engine

get_default_engine()

Return the process-wide default engine (lazily constructed).

Source code in python/pydantable/engine/__init__.py
def get_default_engine() -> ExecutionEngine:
    """Return the process-wide default engine (lazily constructed)."""
    global _default_engine
    if _default_engine is None:
        if NativePolarsEngine is None:
            raise MissingRustExtensionError(
                "Native execution is not installed. Reinstall `pydantable` "
                "(it should pull `pydantable-native`) or call "
                "set_default_engine(...) with a custom backend."
            )
        _default_engine = cast("ExecutionEngine", NativePolarsEngine())
    return _default_engine

set_default_engine

set_default_engine(engine)

Replace the default engine (primarily for tests).

Source code in python/pydantable/engine/__init__.py
def set_default_engine(engine: ExecutionEngine | None) -> None:
    """Replace the default engine (primarily for tests)."""
    global _default_engine
    _default_engine = engine

get_expression_runtime

get_expression_runtime()

Return the object used to build :class:~pydantable.expressions.Expr trees.

Defaults to :attr:NativePolarsEngine.rust_core (native extension) when the default engine is native. Non-native defaults must call :func:set_expression_runtime or operations that build expressions will raise :exc:~pydantable.errors.UnsupportedEngineOperationError.

Source code in python/pydantable/engine/__init__.py
def get_expression_runtime() -> Any:
    """Return the object used to build :class:`~pydantable.expressions.Expr` trees.

    Defaults to :attr:`NativePolarsEngine.rust_core` (native extension) when the
    default engine is native. Non-native defaults must call
    :func:`set_expression_runtime` or operations that build expressions will raise
    :exc:`~pydantable.errors.UnsupportedEngineOperationError`.
    """
    if _expression_runtime_supplier is not None:
        return _expression_runtime_supplier()
    eng = get_default_engine()
    if NativePolarsEngine is not None and isinstance(eng, NativePolarsEngine):
        return eng.rust_core  # type: ignore[attr-defined]
    raise unsupported_engine_operation(
        backend=type(eng).__name__,
        operation="expression_runtime",
        required_capability="rust_expression_runtime",
        hint=(
            "Expression building requires the native engine (pydantable-native) or "
            "set_expression_runtime(...)."
        ),
    )

set_expression_runtime

set_expression_runtime(supplier)

Override expression construction (tests or alternate front-ends).

Source code in python/pydantable/engine/__init__.py
def set_expression_runtime(supplier: Callable[[], Any] | None) -> None:
    """Override expression construction (tests or alternate front-ends)."""
    global _expression_runtime_supplier
    _expression_runtime_supplier = supplier