feature: save datetime object as private in MinerData, and parse datetime in ISO format along with a timestamp.
This commit is contained in:
@@ -67,7 +67,9 @@ class MinerData:
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
ip: str
|
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
|
uptime: int = None
|
||||||
mac: str = None
|
mac: str = None
|
||||||
model: str = None
|
model: str = None
|
||||||
@@ -115,7 +117,7 @@ class MinerData:
|
|||||||
return {k: v for (k, v) in x if not k.startswith("_")}
|
return {k: v for (k, v) in x if not k.startswith("_")}
|
||||||
|
|
||||||
def __post_init__(self):
|
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):
|
def get(self, __key: str, default: Any = None):
|
||||||
try:
|
try:
|
||||||
@@ -290,6 +292,22 @@ class MinerData:
|
|||||||
def efficiency(self, val):
|
def efficiency(self, val):
|
||||||
pass
|
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:
|
def asdict(self) -> dict:
|
||||||
return asdict(self, dict_factory=self.dict_factory)
|
return asdict(self, dict_factory=self.dict_factory)
|
||||||
|
|
||||||
@@ -307,9 +325,7 @@ class MinerData:
|
|||||||
Returns:
|
Returns:
|
||||||
A JSON version of this class.
|
A JSON version of this class.
|
||||||
"""
|
"""
|
||||||
data = self.asdict()
|
return json.dumps(self.as_dict())
|
||||||
data["datetime"] = str(int(time.mktime(data["datetime"].timetuple())))
|
|
||||||
return json.dumps(data)
|
|
||||||
|
|
||||||
def as_csv(self) -> str:
|
def as_csv(self) -> str:
|
||||||
"""Get this dataclass as CSV.
|
"""Get this dataclass as CSV.
|
||||||
@@ -318,7 +334,6 @@ class MinerData:
|
|||||||
A CSV version of this class with no headers.
|
A CSV version of this class with no headers.
|
||||||
"""
|
"""
|
||||||
data = self.asdict()
|
data = self.asdict()
|
||||||
data["datetime"] = str(int(time.mktime(data["datetime"].timetuple())))
|
|
||||||
errs = []
|
errs = []
|
||||||
for error in data["errors"]:
|
for error in data["errors"]:
|
||||||
errs.append(error["error_message"])
|
errs.append(error["error_message"])
|
||||||
|
|||||||
Reference in New Issue
Block a user