Source code for runway.config.components.runway._test_def

"""Runway config test definition."""
from __future__ import annotations

from typing import TYPE_CHECKING, Any, Dict, Generic, Tuple, TypeVar, Union

from ....variables import Variable
from ...models.runway import (
    CfnLintRunwayTestArgs,
    CfnLintRunwayTestDefinitionModel,
    RunwayTestDefinitionModel,
    ScriptRunwayTestArgs,
    ScriptRunwayTestDefinitionModel,
    ValidRunwayTestTypeValues,
    YamlLintRunwayTestDefinitionModel,
)
from .base import ConfigComponentDefinition

if TYPE_CHECKING:
    from typing_extensions import Literal

    from ...models.base import ConfigProperty


_DataModel = TypeVar(
    "_DataModel",
    CfnLintRunwayTestDefinitionModel,
    RunwayTestDefinitionModel,
    ScriptRunwayTestDefinitionModel,
    YamlLintRunwayTestDefinitionModel,
)


[docs]class RunwayTestDefinition(Generic[_DataModel], ConfigComponentDefinition): """Runway test definition.""" args: Union[Dict[str, Any], ConfigProperty] name: str required: bool type: ValidRunwayTestTypeValues _data: RunwayTestDefinitionModel _supports_vars: Tuple[str, ...] = ("args", "required")
[docs] def __init__(self, data: _DataModel) -> None: """Instantiate class.""" super().__init__(data)
# error present on python3.7
[docs] def __new__( # pylint: disable=arguments-differ cls, data: _DataModel, ) -> RunwayTestDefinition[_DataModel]: """Create a new instance of a class. Returns: Correct subclass of RunwayTestDefinition for the given data. """ if cls is not RunwayTestDefinition: return super().__new__(cls) if isinstance(data, CfnLintRunwayTestDefinitionModel): return super().__new__(CfnLintRunwayTestDefinition) if isinstance(data, ScriptRunwayTestDefinitionModel): return super().__new__(ScriptRunwayTestDefinition) if isinstance(data, YamlLintRunwayTestDefinitionModel): return super().__new__(YamlLintRunwayTestDefinition) raise TypeError( "expected data of type CfnLintRunwayTestDefinitionModel, " "ScriptRunwayTestDefinitionModel, or YamlLintRunwayTestDefinitionModel; " f"got {type(data)}" )
def _register_variable(self, var_name: str, var_value: Any) -> None: """Register a variable. Args: var_name: Name of the config field that can contain a variable lookup. var_value: Literal value supplied in the config to be resolved as a variable if it contains a lookup. """ self._vars[var_name] = Variable( name=f"{self.name}.{var_name}", value=var_value, variable_type="runway" )
[docs] @classmethod def parse_obj(cls, obj: Any) -> RunwayTestDefinition[_DataModel]: """Parse a python object into this class. Args: obj: The object to parse. """ return cls(RunwayTestDefinitionModel.parse_obj(obj))
[docs]class CfnLintRunwayTestDefinition( RunwayTestDefinition[CfnLintRunwayTestDefinitionModel] ): """Runway cfn-lint test definition.""" args: CfnLintRunwayTestArgs type: Literal["cfn-lint"] = "cfn-lint"
[docs] def __init__(self, data: CfnLintRunwayTestDefinitionModel) -> None: """Instantiate class.""" super().__init__(data)
[docs] @classmethod def parse_obj(cls, obj: Any) -> CfnLintRunwayTestDefinition: """Parse a python object into this class. Args: obj: The object to parse. """ return cls(CfnLintRunwayTestDefinitionModel.parse_obj(obj))
[docs]class ScriptRunwayTestDefinition(RunwayTestDefinition[ScriptRunwayTestDefinitionModel]): """Runway script test definition.""" args: ScriptRunwayTestArgs type: Literal["script"] = "script"
[docs] def __init__(self, data: ScriptRunwayTestDefinitionModel) -> None: """Instantiate class.""" super().__init__(data)
[docs] @classmethod def parse_obj(cls, obj: Any) -> ScriptRunwayTestDefinition: """Parse a python object into this class. Args: obj: The object to parse. """ return cls(ScriptRunwayTestDefinitionModel.parse_obj(obj))
[docs]class YamlLintRunwayTestDefinition( RunwayTestDefinition[YamlLintRunwayTestDefinitionModel] ): """Runway yamllint test definition.""" type: Literal["yamllint"] = "yamllint"
[docs] def __init__(self, data: YamlLintRunwayTestDefinitionModel) -> None: """Instantiate class.""" super().__init__(data)
[docs] @classmethod def parse_obj(cls, obj: Any) -> YamlLintRunwayTestDefinition: """Parse a python object into this class. Args: obj: The object to parse. """ return cls(YamlLintRunwayTestDefinitionModel.parse_obj(obj))