aip_sdk.TestPlan
aip_sdk.TestPlan
A reusable, workspace-scoped evaluation methodology — a project template, not an instrument.
version is assigned by the publish route, not the author, from the highest existing
version of the same name; it is carried on the body so a stored plan states its own version
without a join.
metrics keys and required_quality_checks name registry entries that only a
workspace-scoped lookup can resolve, so they are free strings here. recommended_dataset
names a dataset, not a dataset version.
required_columns and applicable_quality_checks are both deliberately absent: each is
derived on read, and storing either would snapshot registry state that goes stale the moment a
metric gains a column or a check is registered.
Each metric's MetricSpec.published_required_columns is stored, and is not that field
under another name — it records what the metric required at publish, so the two differing is
the drift a reader needs to see rather than a staleness to be avoided.
Not frozen: immutability of a published version is enforced on the stored row instead, so
the publish route can assign the real version and re-validate rather than using
model_copy, which skips validation.
required_quality_checks states a requirement, never a selection: it names a subset of
the derived applicable_quality_checks that must have produced a verdict before a dataset
version is promotable. It grades nothing — force, the FAIL floor and the WARN override
are the platform's, unchanged at either value of the lock.
aip_sdk.TestPlan.description
aip_sdk.TestPlan.description: str | None = Field(default=None, max_length=MAX_PLAN_DESCRIPTION_LENGTH, description="What this methodology is for, in the author's own words — the one field here that is prose rather than machinery, so a reader browsing the catalogue can tell two plans apart without reading their metric lists. Per version, not per name: an edit may change it to say what changed, and an older version keeps the description that was accurate when it was published. Author-supplied and untouched by the platform, unlike each metric's `published_version` receipt. Nothing reads it, so nothing beyond its length is validated.")
No docstring is defined in the source.
aip_sdk.TestPlan.dimensions
aip_sdk.TestPlan.dimensions: list[DimensionSpec] = Field(default_factory=list[DimensionSpec])
No docstring is defined in the source.
aip_sdk.TestPlan.is_dimensions_locked
aip_sdk.TestPlan.is_dimensions_locked: bool = Field(default=True, description='Governs the dimension contract only: `PATCH /projects` refuses a changed dimension set, and run creation rejects a dataset version whose `dimension_snapshot` diverges from the plan. Unlocked, the project owns its dimensions and may edit them freely; nothing is refused and nothing is recorded. It governs no other tier.')
No docstring is defined in the source.
aip_sdk.TestPlan.is_metrics_locked
aip_sdk.TestPlan.is_metrics_locked: bool = Field(default=True, description='Governs the evaluation tier only: the `metrics` map, meaning each metric named plus its `threshold`, `config` and `config_ref`, as filled into `run_config` at run creation. Locked, a run supplying any of extra keys is rejected, naming the key; unlocked, the plan pre-fills them and the tester may override, with nothing recorded about the choice. It governs no other tier.')
No docstring is defined in the source.
aip_sdk.TestPlan.is_quality_checks_locked
aip_sdk.TestPlan.is_quality_checks_locked: bool = Field(default=True, description="Governs the data-quality tier only: the `required_quality_checks` this plan seeds onto a project it creates. Locked, the project may not change that set — locked with an empty set therefore fixes it at no requirement, unable to add one. Unlocked, the project owns the set and may edit or clear it freely; nothing is refused and nothing is recorded. It governs no other tier, and at neither value does it reach the platform's own gate — a plan cannot make a dataset promotable that would not otherwise be.")
No docstring is defined in the source.
aip_sdk.TestPlan.metrics
aip_sdk.TestPlan.metrics: dict[str, MetricSpec] = Field(default_factory=dict[str, MetricSpec])
No docstring is defined in the source.
aip_sdk.TestPlan.model_config
aip_sdk.TestPlan.model_config = ConfigDict(extra='forbid')
No docstring is defined in the source.
aip_sdk.TestPlan.name
aip_sdk.TestPlan.name: str = Field(min_length=1, max_length=MAX_PLAN_NAME_LENGTH)
No docstring is defined in the source.
aip_sdk.TestPlan.recommended_dataset
aip_sdk.TestPlan.recommended_dataset: str | None = None
No docstring is defined in the source.
aip_sdk.TestPlan.required_quality_checks
aip_sdk.TestPlan.required_quality_checks: list[str] = Field(default_factory=list[str], description='Checks a dataset version must have produced a verdict for before it can be promoted to golden, by the bare name results are reported under (`row_count`, not `quality_check.row_count`). Must be a subset of `applicable_quality_checks`; publish refuses a name outside it. A requirement, not a selection: it changes neither which checks dispatch nor how they are graded — a required check that came back WARN is still promotable with a reasoned override, and FAIL is still fatal. It refuses only the case where a required check produced no result at all. Empty means no requirement.')
No docstring is defined in the source.
aip_sdk.TestPlan.schema_name
aip_sdk.TestPlan.schema_name: str
No docstring is defined in the source.
aip_sdk.TestPlan.task_type
aip_sdk.TestPlan.task_type: TaskType
No docstring is defined in the source.
aip_sdk.TestPlan.version
aip_sdk.TestPlan.version: int = Field(default=1, ge=1)
No docstring is defined in the source.