Source code for maptekblastlogic.models.blast_model

import datetime
from typing import Any, Dict, Type, TypeVar, Union, cast

from attrs import define as _attrs_define
from dateutil.parser import isoparse

from ..models.blast_status import BlastStatus
from ..types import UNSET, Unset

T = TypeVar("T", bound="BlastModel")


[docs] @_attrs_define class BlastModel: """A collection of holes designed to be detonated together. Attributes: blast_name (str): The name of this blast. blast_id (Union[Unset, int]): The unique identifier of this blast. status (Union[Unset, BlastStatus]): fired_time (Union[None, Unset, datetime.datetime]): When this blast was fired (UTC). Null indicates the blast has not been fired. abandoned_time (Union[None, Unset, datetime.datetime]): When this blast was abandoned (UTC). Null indicates the blast has not been abandoned. """ blast_name: str blast_id: Union[Unset, int] = UNSET status: Union[Unset, BlastStatus] = UNSET fired_time: Union[None, Unset, datetime.datetime] = UNSET abandoned_time: Union[None, Unset, datetime.datetime] = UNSET
[docs] def to_dict(self) -> Dict[str, Any]: blast_name = self.blast_name blast_id = self.blast_id status: Union[Unset, str] = UNSET if not isinstance(self.status, Unset): status = self.status.value fired_time: Union[None, Unset, str] if isinstance(self.fired_time, Unset): fired_time = UNSET elif isinstance(self.fired_time, datetime.datetime): fired_time = self.fired_time.isoformat() else: fired_time = self.fired_time abandoned_time: Union[None, Unset, str] if isinstance(self.abandoned_time, Unset): abandoned_time = UNSET elif isinstance(self.abandoned_time, datetime.datetime): abandoned_time = self.abandoned_time.isoformat() else: abandoned_time = self.abandoned_time field_dict: Dict[str, Any] = {} field_dict.update( { "blastName": blast_name, } ) if blast_id is not UNSET: field_dict["blastId"] = blast_id if status is not UNSET: field_dict["status"] = status if fired_time is not UNSET: field_dict["firedTime"] = fired_time if abandoned_time is not UNSET: field_dict["abandonedTime"] = abandoned_time return field_dict
[docs] @classmethod def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: d = src_dict.copy() blast_name = d.pop("blastName") blast_id = d.pop("blastId", UNSET) _status = d.pop("status", UNSET) status: Union[Unset, BlastStatus] if isinstance(_status, Unset): status = UNSET else: status = BlastStatus(_status) def _parse_fired_time(data: object) -> Union[None, Unset, datetime.datetime]: if data is None: return data if isinstance(data, Unset): return data try: if not isinstance(data, str): raise TypeError() fired_time_type_0 = isoparse(data) return fired_time_type_0 except: # noqa: E722 pass return cast(Union[None, Unset, datetime.datetime], data) fired_time = _parse_fired_time(d.pop("firedTime", UNSET)) def _parse_abandoned_time(data: object) -> Union[None, Unset, datetime.datetime]: if data is None: return data if isinstance(data, Unset): return data try: if not isinstance(data, str): raise TypeError() abandoned_time_type_0 = isoparse(data) return abandoned_time_type_0 except: # noqa: E722 pass return cast(Union[None, Unset, datetime.datetime], data) abandoned_time = _parse_abandoned_time(d.pop("abandonedTime", UNSET)) blast_model = cls( blast_name=blast_name, blast_id=blast_id, status=status, fired_time=fired_time, abandoned_time=abandoned_time, ) return blast_model