from __future__ import annotations from dataclasses import dataclass, field from typing import Optional @dataclass class SparkConfig: num_records: int = 100 replication: str = "key_varied" key_field: str = "" edge_cases: list[str] = field(default_factory=list) @dataclass class TestCase: id: str fields: dict = field(default_factory=dict) coverage_targets: list[str] = field(default_factory=list) @dataclass class TestSuite: schema: Optional[dict] = None test_cases: list[TestCase] = field(default_factory=list) spark_config: Optional[SparkConfig] = None @property def has_spark(self) -> bool: return self.spark_config is not None _tc = TestCase(id="TC-001", fields={"BR-AMT": 1500000}) assert _tc.id == "TC-001" assert _tc.fields["BR-AMT"] == 1500000 _ts = TestSuite(test_cases=[_tc], spark_config=SparkConfig(num_records=1000)) assert _ts.spark_config.num_records == 1000