feature: add custom hashrate types and conversion.
This commit is contained in:
@@ -1,3 +1,4 @@
|
||||
from .algorithm import MinerAlgo
|
||||
from .firmware import MinerFirmware
|
||||
from .makes import MinerMake
|
||||
from .models import MinerModel
|
||||
|
||||
5
pyasic/device/algorithm/__init__.py
Normal file
5
pyasic/device/algorithm/__init__.py
Normal file
@@ -0,0 +1,5 @@
|
||||
from pyasic.device.algorithm.sha256 import SHA256Algo
|
||||
|
||||
|
||||
class MinerAlgo:
|
||||
SHA256 = SHA256Algo
|
||||
69
pyasic/device/algorithm/sha256.py
Normal file
69
pyasic/device/algorithm/sha256.py
Normal file
@@ -0,0 +1,69 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from dataclasses import dataclass
|
||||
from enum import IntEnum
|
||||
|
||||
|
||||
class SHA256Unit(IntEnum):
|
||||
H = 1
|
||||
KH = int(H) * 1000
|
||||
MH = int(KH) * 1000
|
||||
GH = int(MH) * 1000
|
||||
TH = int(GH) * 1000
|
||||
PH = int(TH) * 1000
|
||||
EH = int(PH) * 1000
|
||||
ZH = int(EH) * 1000
|
||||
|
||||
default = TH
|
||||
|
||||
def __str__(self):
|
||||
if self.value == self.H:
|
||||
return "H/s"
|
||||
if self.value == self.KH:
|
||||
return "KH/s"
|
||||
if self.value == self.MH:
|
||||
return "MH/s"
|
||||
if self.value == self.GH:
|
||||
return "GH/s"
|
||||
if self.value == self.TH:
|
||||
return "TH/s"
|
||||
if self.value == self.PH:
|
||||
return "PH/s"
|
||||
if self.value == self.EH:
|
||||
return "EH/s"
|
||||
if self.value == self.ZH:
|
||||
return "ZH/s"
|
||||
|
||||
@classmethod
|
||||
def from_str(cls, value: str):
|
||||
if value == "H":
|
||||
return cls.H
|
||||
elif value == "KH":
|
||||
return cls.KH
|
||||
elif value == "MH":
|
||||
return cls.MH
|
||||
elif value == "GH":
|
||||
return cls.GH
|
||||
elif value == "TH":
|
||||
return cls.TH
|
||||
elif value == "PH":
|
||||
return cls.PH
|
||||
elif value == "EH":
|
||||
return cls.EH
|
||||
elif value == "ZH":
|
||||
return cls.ZH
|
||||
return cls.default
|
||||
|
||||
def __repr__(self):
|
||||
return str(self)
|
||||
|
||||
|
||||
# make this json serializable
|
||||
class _SHA256Algo(str):
|
||||
unit = SHA256Unit
|
||||
|
||||
def __repr__(self):
|
||||
return "SHA256Algo"
|
||||
|
||||
|
||||
SHA256Algo = _SHA256Algo("SHA256")
|
||||
Reference in New Issue
Block a user