Skip to content

API reference

Experiment

An Experiment is set of Specs, supporting union and product operations.

Source code in griddler/core.py
class Experiment:
    """
    An Experiment is set of Specs, supporting union and product operations.
    """

    def __init__(self, specs: Iterable[dict]):
        self.specs = list(specs)

        for spec in self.specs:
            assert isinstance(spec, dict)

    def __str__(self) -> str:
        spec_str = ", ".join(str(spec) for spec in self.specs)
        return f"Experiment([{spec_str}])"

    def union(self, other: "Experiment") -> "Experiment":
        assert isinstance(other, Experiment)
        return Experiment(self.specs + other.specs)

    def __or__(self, other: "Experiment") -> "Experiment":
        return self.union(other)

    def __mul__(self, other: "Experiment") -> "Experiment":
        assert isinstance(other, Experiment)

        return Experiment([x | y for x in self.specs for y in other.specs])

    def __iter__(self) -> Iterable[dict]:
        return iter(self.specs)

parse(griddle)

Parse a griddle into an Experiment.

Source code in griddler/__init__.py
def parse(griddle: dict) -> Experiment:
    """Parse a griddle into an Experiment."""
    assert isinstance(griddle, dict), "griddle must be a dictionary"
    assert "schema" in griddle, "griddle must have a schema"

    match griddle["schema"]:
        case "v0.4":
            return griddler.schemas.v04.parse(griddle)
        case "v0.3":
            return griddler.schemas.v03.parse(griddle)
        case _:
            raise RuntimeError(f"Unknown griddle schema: {griddle['schema']}")