Source code for rook.pflow.decisions

"""Request decision values."""

from collections import OrderedDict
from dataclasses import dataclass

from rook.io.datasets import DatasetSource

from .base import RequestDecision as RequestDecisionBase


[docs] @dataclass(frozen=True) class ReturnOriginalFiles(RequestDecisionBase): """Decision to return catalog file URLs without running an operation.""" project: str search_result: object | None = None original_file_urls: OrderedDict | None = None @property def returns_original_files(self): """Return whether this request should bypass processing.""" return True @property def dataset_sources(self): """Return no prepared operation sources for original-file responses.""" return ()
[docs] @dataclass(frozen=True) class RunOperation(RequestDecisionBase): """Decision to run an operation on the requested or prepared sources.""" project: str search_result: object | None = None dataset_sources: tuple[DatasetSource, ...] = () @property def returns_original_files(self): """Return whether this request should bypass processing.""" return False @property def original_file_urls(self): """Return no original file URLs for operation responses.""" return None
[docs] @dataclass(frozen=True) class InvalidRequest(RequestDecisionBase): """Decision value reserved for explicit invalid-request outcomes.""" message: str @property def returns_original_files(self): """Return whether this request should bypass processing.""" return False
RequestDecision = InvalidRequest | ReturnOriginalFiles | RunOperation