From 53f545ba1350f58d918e587a5d1a84bb30631e3e Mon Sep 17 00:00:00 2001 From: Upstream Data Date: Wed, 1 May 2024 08:57:02 -0600 Subject: [PATCH] feature: save datetime object as private in MinerData, and parse datetime in ISO format along with a timestamp. --- pyasic/data/__init__.py | 27 +++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/pyasic/data/__init__.py b/pyasic/data/__init__.py index 6499ede1..00713aaf 100644 --- a/pyasic/data/__init__.py +++ b/pyasic/data/__init__.py @@ -68,7 +68,9 @@ class MinerData: """ ip: str - datetime: datetime = None + _datetime: datetime = field(repr=False, default=None) + datetime: str = field(init=False) + timestamp: int = field(init=False) uptime: int = None mac: str = None model: str = None @@ -117,7 +119,7 @@ class MinerData: return {k: v for (k, v) in x if not k.startswith("_")} def __post_init__(self): - self.datetime = datetime.now(timezone.utc).astimezone() + self._datetime = datetime.now(timezone.utc).astimezone() def get(self, __key: str, default: Any = None): try: @@ -292,6 +294,22 @@ class MinerData: def efficiency(self, val): pass + @property + def datetime(self): # noqa - Skip PyCharm inspection + return self._datetime.isoformat() + + @datetime.setter + def datetime(self, val): + pass + + @property + def timestamp(self): # noqa - Skip PyCharm inspection + return int(time.mktime(self._datetime.timetuple())) + + @timestamp.setter + def timestamp(self, val): + pass + def asdict(self) -> dict: return asdict(self, dict_factory=self.dict_factory) @@ -309,9 +327,7 @@ class MinerData: Returns: A JSON version of this class. """ - data = self.asdict() - data["datetime"] = str(int(time.mktime(data["datetime"].timetuple()))) - return json.dumps(data) + return json.dumps(self.as_dict()) def as_csv(self) -> str: """Get this dataclass as CSV. @@ -320,7 +336,6 @@ class MinerData: A CSV version of this class with no headers. """ data = self.asdict() - data["datetime"] = str(int(time.mktime(data["datetime"].timetuple()))) errs = [] for error in data["errors"]: errs.append(error["error_message"])