feature: add fields classmethod to all dataclasses to show what the fields are in each class.

This commit is contained in:
UpstreamData
2022-11-07 12:53:01 -07:00
parent 215af72a6b
commit c7847d2789
5 changed files with 38 additions and 5 deletions

View File

@@ -12,7 +12,7 @@
# See the License for the specific language governing permissions and # See the License for the specific language governing permissions and
# limitations under the License. # limitations under the License.
from dataclasses import dataclass, asdict from dataclasses import dataclass, asdict, fields
from typing import Literal, List from typing import Literal, List
import random import random
import string import string
@@ -37,6 +37,10 @@ class _Pool:
username: str = "" username: str = ""
password: str = "" password: str = ""
@classmethod
def fields(cls):
return fields(cls)
def from_dict(self, data: dict): def from_dict(self, data: dict):
"""Convert raw pool data as a dict to usable data and save it to this class. """Convert raw pool data as a dict to usable data and save it to this class.
@@ -136,6 +140,10 @@ class _PoolGroup:
group_name: str = None group_name: str = None
pools: List[_Pool] = None pools: List[_Pool] = None
@classmethod
def fields(cls):
return fields(cls)
def __post_init__(self): def __post_init__(self):
if not self.group_name: if not self.group_name:
self.group_name = "".join( self.group_name = "".join(
@@ -263,6 +271,10 @@ class MinerConfig:
dps_shutdown_enabled: bool = None dps_shutdown_enabled: bool = None
dps_shutdown_duration: float = None dps_shutdown_duration: float = None
@classmethod
def fields(cls):
return fields(cls)
def as_dict(self) -> dict: def as_dict(self) -> dict:
"""Convert the data in this class to a dict.""" """Convert the data in this class to a dict."""
data_dict = asdict(self) data_dict = asdict(self)

View File

@@ -12,7 +12,7 @@
# See the License for the specific language governing permissions and # See the License for the specific language governing permissions and
# limitations under the License. # limitations under the License.
from dataclasses import dataclass, asdict from dataclasses import dataclass, asdict, fields
@dataclass @dataclass
@@ -21,10 +21,15 @@ class X19Error:
Attributes: Attributes:
error_message: The error message as a string. error_message: The error message as a string.
error_code: The error code as an int. 0 if the message is not assigned a code.
""" """
error_message: str error_message: str
error_code: int = 0 error_code: int = 0
@classmethod
def fields(cls):
return fields(cls)
def asdict(self): def asdict(self):
return asdict(self) return asdict(self)

View File

@@ -12,7 +12,7 @@
# See the License for the specific language governing permissions and # See the License for the specific language governing permissions and
# limitations under the License. # limitations under the License.
from dataclasses import dataclass, asdict from dataclasses import dataclass, asdict, fields
@dataclass @dataclass
@@ -21,10 +21,16 @@ class BraiinsOSError:
Attributes: Attributes:
error_message: The error message as a string. error_message: The error message as a string.
error_code: The error code as an int. 0 if the message is not assigned a code.
""" """
error_message: str error_message: str
error_code: int = 0 error_code: int = 0
@classmethod
def fields(cls):
return fields(cls)
def asdict(self): def asdict(self):
return asdict(self) return asdict(self)

View File

@@ -12,7 +12,7 @@
# See the License for the specific language governing permissions and # See the License for the specific language governing permissions and
# limitations under the License. # limitations under the License.
from dataclasses import dataclass, field, asdict from dataclasses import dataclass, field, asdict, fields
@dataclass @dataclass
@@ -27,6 +27,11 @@ class InnosiliconError:
error_code: int error_code: int
error_message: str = field(init=False) error_message: str = field(init=False)
@classmethod
def fields(cls):
return fields(cls)
@property @property
def error_message(self): # noqa - Skip PyCharm inspection def error_message(self): # noqa - Skip PyCharm inspection
if self.error_code in ERROR_CODES: if self.error_code in ERROR_CODES:

View File

@@ -12,7 +12,7 @@
# See the License for the specific language governing permissions and # See the License for the specific language governing permissions and
# limitations under the License. # limitations under the License.
from dataclasses import dataclass, field, asdict from dataclasses import dataclass, field, asdict, fields
@dataclass @dataclass
@@ -27,6 +27,11 @@ class WhatsminerError:
error_code: int error_code: int
error_message: str = field(init=False) error_message: str = field(init=False)
@classmethod
def fields(cls):
return fields(cls)
@property @property
def error_message(self): # noqa - Skip PyCharm inspection def error_message(self): # noqa - Skip PyCharm inspection
if self.error_code in ERROR_CODES: if self.error_code in ERROR_CODES: