Source code for nisystemlink.clients.spec.models._specification

from datetime import datetime
from enum import Enum
from typing import Dict, List, Optional

from nisystemlink.clients.core._uplink._json_model import JsonModel

from ._condition import Condition


[docs]class SpecificationLimit(JsonModel): """A limit for a specification. The limit is the value that a measurement should be compared against during analysis to determine the health or pass/fail status of that measurement. """ min: Optional[float] = None """Minimum limit of the specification. All measurements that map to this specification should be > this limit. """ typical: Optional[float] = None """Typical value of the specification.""" max: Optional[float] = None """Maximum value of the specification. All measurements that map to this specification should be < this limit. """
[docs]class SpecificationType(Enum): """The overall type of the specification.""" PARAMETRIC = "PARAMETRIC" """Parametric specs have limits.""" FUNCTIONAL = "FUNCTIONAL" """Functional specs only have pass/fail status."""
[docs]class SpecificationUserManaged(JsonModel): product_id: str """Id of the product to which the specification will be associated.""" spec_id: str """User provided value using which the specification will be identified. This should be unique for a product and workspace combination. """ workspace: Optional[str] = None """Id of the workspace to which the specification will be associated. Default workspace will be taken if the value is not given. """
[docs]class SpecificationServerManaged(JsonModel): id: str """The global Id of the specification.""" version: int """ Current version of the specification. When an update is applied, the version is automatically incremented. """
[docs]class SpecificationDefinition(SpecificationUserManaged): name: Optional[str] = None """Name of the specification.""" category: Optional[str] = None """Category of the specification.""" type: SpecificationType """Type of the specification.""" symbol: Optional[str] = None """Short form identifier of the specification.""" block: Optional[str] = None """Block name of the specification. Typically a block is one of the subsystems of the overall product being specified. """ limit: Optional[SpecificationLimit] = None """The limits for this spec.""" unit: Optional[str] = None """Unit of the specification.""" conditions: Optional[List[Condition]] = None """Conditions associated with the specification.""" keywords: Optional[List[str]] = None """Keywords or phrases associated with the specification.""" properties: Optional[Dict[str, str]] = None """Additional properties associated with the specification."""
[docs]class Specification(SpecificationDefinition, SpecificationServerManaged): """The complete definition of a specification."""
[docs]class SpecificationCreation(JsonModel): """When the spec was created and when.""" created_at: Optional[datetime] = None """ISO-8601 formatted timestamp indicating when the specification was created.""" created_by: Optional[str] = None """Id of the user who created the specification."""
[docs]class SpecificationUpdated(JsonModel): """When the spec was updated and when.""" updated_at: Optional[datetime] = None """ISO-8601 formatted timestamp indicating when the specification was last updated.""" updated_by: Optional[str] = None """Id of the user who last updated the specification."""
[docs]class SpecificationWithHistory( Specification, SpecificationCreation, SpecificationUpdated ): """A full specification with update and create history."""