Skip to content

particula.execution.validation

validation

Shared fail-closed validation for execution declaration carriers.

validate_capability_matrix

validate_capability_matrix(matrix: object, field_name: str) -> None

Deeply validate a capability matrix and every declaration it retains.

Parameters:

  • matrix (object) –

    Candidate capability matrix carrier.

  • field_name (str) –

    Qualified public name used in error messages.

Raises:

  • TypeError

    If a carrier or nested declaration has an invalid type.

Source code in particula/execution/validation.py
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
def validate_capability_matrix(matrix: object, field_name: str) -> None:
    """Deeply validate a capability matrix and every declaration it retains.

    Args:
        matrix: Candidate capability matrix carrier.
        field_name: Qualified public name used in error messages.

    Raises:
        TypeError: If a carrier or nested declaration has an invalid type.
    """
    if not isinstance(matrix, CapabilityMatrix):
        raise TypeError(f"{field_name} must be a CapabilityMatrix.")
    if type(matrix.declarations) is not frozenset:
        raise TypeError(f"{field_name}.declarations must be a frozenset.")
    for declaration in matrix.declarations:
        if not isinstance(declaration, CapabilityDeclaration):
            raise TypeError(
                f"{field_name}.declarations must contain only "
                "CapabilityDeclaration instances."
            )
        _validate_device(declaration.device, f"{field_name}.declaration.device")
        _validate_process(
            declaration.process,
            f"{field_name}.declaration.process",
        )
        _validate_requirements(
            declaration.requirements,
            f"{field_name}.declaration.requirements",
        )

validate_execution_request

validate_execution_request(request: object, field_name: str) -> None

Deeply validate an execution request and its nested declarations.

Parameters:

  • request (object) –

    Candidate execution request carrier.

  • field_name (str) –

    Qualified public name used in error messages.

Raises:

  • TypeError

    If a carrier or nested declaration has an invalid type.

  • ValueError

    If a nested value violates its closed declaration contract.

Source code in particula/execution/validation.py
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
def validate_execution_request(request: object, field_name: str) -> None:
    """Deeply validate an execution request and its nested declarations.

    Args:
        request: Candidate execution request carrier.
        field_name: Qualified public name used in error messages.

    Raises:
        TypeError: If a carrier or nested declaration has an invalid type.
        ValueError: If a nested value violates its closed declaration contract.
    """
    if not isinstance(request, ExecutionRequest):
        raise TypeError(f"{field_name} must be an ExecutionRequest.")
    if not isinstance(request.backend, Backend):
        raise TypeError(f"{field_name}.backend must be a Backend.")
    _validate_device(request.device, f"{field_name}.device")
    _validate_process(request.process, f"{field_name}.process")
    _validate_requirements(request.requirements, f"{field_name}.requirements")
    if request.backend is not request.device.backend:
        raise ValueError(f"{field_name} backend must match device.backend.")