from __future__ import annotations from collections.abc import Mapping from typing import Any, TypeVar, BinaryIO, TextIO, TYPE_CHECKING, Generator from attrs import define as _attrs_define from attrs import field as _attrs_field from ..types import UNSET, Unset from dateutil.parser import isoparse from typing import cast import datetime T = TypeVar("T", bound="PackTestSummary") @_attrs_define class PackTestSummary: """ Pack test summary view Attributes: duration_ms (int): failed (int): pack_id (int): pack_label (str): pack_ref (str): pack_version (str): pass_rate (float): passed (int): skipped (int): test_execution_id (int): test_time (datetime.datetime): total_tests (int): trigger_reason (str): """ duration_ms: int failed: int pack_id: int pack_label: str pack_ref: str pack_version: str pass_rate: float passed: int skipped: int test_execution_id: int test_time: datetime.datetime total_tests: int trigger_reason: str additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) def to_dict(self) -> dict[str, Any]: duration_ms = self.duration_ms failed = self.failed pack_id = self.pack_id pack_label = self.pack_label pack_ref = self.pack_ref pack_version = self.pack_version pass_rate = self.pass_rate passed = self.passed skipped = self.skipped test_execution_id = self.test_execution_id test_time = self.test_time.isoformat() total_tests = self.total_tests trigger_reason = self.trigger_reason field_dict: dict[str, Any] = {} field_dict.update(self.additional_properties) field_dict.update({ "durationMs": duration_ms, "failed": failed, "packId": pack_id, "packLabel": pack_label, "packRef": pack_ref, "packVersion": pack_version, "passRate": pass_rate, "passed": passed, "skipped": skipped, "testExecutionId": test_execution_id, "testTime": test_time, "totalTests": total_tests, "triggerReason": trigger_reason, }) return field_dict @classmethod def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: d = dict(src_dict) duration_ms = d.pop("durationMs") failed = d.pop("failed") pack_id = d.pop("packId") pack_label = d.pop("packLabel") pack_ref = d.pop("packRef") pack_version = d.pop("packVersion") pass_rate = d.pop("passRate") passed = d.pop("passed") skipped = d.pop("skipped") test_execution_id = d.pop("testExecutionId") test_time = isoparse(d.pop("testTime")) total_tests = d.pop("totalTests") trigger_reason = d.pop("triggerReason") pack_test_summary = cls( duration_ms=duration_ms, failed=failed, pack_id=pack_id, pack_label=pack_label, pack_ref=pack_ref, pack_version=pack_version, pass_rate=pass_rate, passed=passed, skipped=skipped, test_execution_id=test_execution_id, test_time=test_time, total_tests=total_tests, trigger_reason=trigger_reason, ) pack_test_summary.additional_properties = d return pack_test_summary @property def additional_keys(self) -> list[str]: return list(self.additional_properties.keys()) def __getitem__(self, key: str) -> Any: return self.additional_properties[key] def __setitem__(self, key: str, value: Any) -> None: self.additional_properties[key] = value def __delitem__(self, key: str) -> None: del self.additional_properties[key] def __contains__(self, key: str) -> bool: return key in self.additional_properties