diff --git a/pyasic/API/__init__.py b/pyasic/API/__init__.py index 10abbae6..f9b2a26c 100644 --- a/pyasic/API/__init__.py +++ b/pyasic/API/__init__.py @@ -72,11 +72,12 @@ If you are sure you want to use this command please use API.send_command("{comma ) return return_commands - async def multicommand(self, *commands: str) -> dict: + async def multicommand(self, *commands: str, allow_warning: bool = True) -> dict: """Creates and sends multiple commands as one command to the miner. Parameters: *commands: The commands to send as a multicommand to the miner. + allow_warning: A boolean to supress APIWarnings. """ logging.debug(f"{self.ip}: Sending multicommand: {[*commands]}") # make sure we can actually run each command, otherwise they will fail @@ -85,7 +86,7 @@ If you are sure you want to use this command please use API.send_command("{comma # doesn't work for S19 which uses the backup _x19_multicommand command = "+".join(commands) try: - data = await self.send_command(command) + data = await self.send_command(command, allow_warning=allow_warning) except APIError: return {} logging.debug(f"{self.ip}: Received multicommand data.") diff --git a/pyasic/API/bmminer.py b/pyasic/API/bmminer.py index d02e3072..bead3b9a 100644 --- a/pyasic/API/bmminer.py +++ b/pyasic/API/bmminer.py @@ -39,7 +39,7 @@ class BMMinerAPI(BaseMinerAPI): super().__init__(ip, port) async def multicommand( - self, *commands: str, ignore_x19_error: bool = False + self, *commands: str, allow_warning: bool = True ) -> dict: logging.debug(f"{self.ip}: Sending multicommand: {[*commands]}") # make sure we can actually run each command, otherwise they will fail @@ -48,7 +48,7 @@ class BMMinerAPI(BaseMinerAPI): # doesn't work for S19 which uses the backup _x19_multicommand command = "+".join(commands) try: - data = await self.send_command(command, allow_warning=not ignore_x19_error) + data = await self.send_command(command, allow_warning=allow_warning) except APIError: logging.debug(f"{self.ip}: Handling X19 multicommand.") data = await self._x19_multicommand(*command.split("+")) diff --git a/pyasic/API/cgminer.py b/pyasic/API/cgminer.py index cac318d6..bb5eefab 100644 --- a/pyasic/API/cgminer.py +++ b/pyasic/API/cgminer.py @@ -39,7 +39,7 @@ class CGMinerAPI(BaseMinerAPI): super().__init__(ip, port) async def multicommand( - self, *commands: str, ignore_x19_error: bool = False + self, *commands: str, allow_warning: bool = True ) -> dict: logging.debug(f"{self.ip}: Sending multicommand: {[*commands]}") # make sure we can actually run each command, otherwise they will fail @@ -48,7 +48,7 @@ class CGMinerAPI(BaseMinerAPI): # doesnt work for S19 which uses the backup _x19_multicommand command = "+".join(commands) try: - data = await self.send_command(command, allow_warning=ignore_x19_error) + data = await self.send_command(command, allow_warning=allow_warning) except APIError: logging.debug(f"{self.ip}: Handling X19 multicommand.") data = await self._x19_multicommand(*command.split("+")) diff --git a/pyasic/miners/_backends/bmminer.py b/pyasic/miners/_backends/bmminer.py index 1b8d29da..17d64879 100644 --- a/pyasic/miners/_backends/bmminer.py +++ b/pyasic/miners/_backends/bmminer.py @@ -185,7 +185,7 @@ class BMMiner(BaseMiner): async def resume_mining(self) -> bool: return False - async def get_data(self) -> MinerData: + async def get_data(self, allow_warning: bool = False) -> MinerData: """Get data from the miner. Returns: @@ -223,7 +223,7 @@ class BMMiner(BaseMiner): miner_data = None for i in range(PyasicSettings().miner_get_data_retries): miner_data = await self.api.multicommand( - "summary", "pools", "stats", ignore_x19_error=True + "summary", "pools", "stats", allow_warning=allow_warning ) if miner_data: break diff --git a/pyasic/miners/_backends/bosminer.py b/pyasic/miners/_backends/bosminer.py index 9a4916be..4522e396 100644 --- a/pyasic/miners/_backends/bosminer.py +++ b/pyasic/miners/_backends/bosminer.py @@ -297,7 +297,7 @@ class BOSMiner(BaseMiner): ) return errors - async def get_data(self) -> MinerData: + async def get_data(self, allow_warning: bool = True) -> MinerData: """Get data from the miner. Returns: @@ -342,6 +342,7 @@ class BOSMiner(BaseMiner): "devdetails", "fans", "devs", + allow_warning=allow_warning ) except APIError as e: if str(e.message) == "Not ready": diff --git a/pyasic/miners/_backends/btminer.py b/pyasic/miners/_backends/btminer.py index b2a419a5..008a1f6b 100644 --- a/pyasic/miners/_backends/btminer.py +++ b/pyasic/miners/_backends/btminer.py @@ -241,7 +241,7 @@ class BTMiner(BaseMiner): cfg = cfg.from_api(pools["POOLS"]) return cfg - async def get_data(self) -> MinerData: + async def get_data(self, allow_warning: bool = True) -> MinerData: """Get data from the miner. Returns: @@ -280,7 +280,7 @@ class BTMiner(BaseMiner): miner_data = None for i in range(PyasicSettings().miner_get_data_retries): try: - miner_data = await self.api.multicommand("summary", "devs", "pools") + miner_data = await self.api.multicommand("summary", "devs", "pools", allow_warning=allow_warning) if miner_data: break except APIError: diff --git a/pyasic/miners/_backends/cgminer.py b/pyasic/miners/_backends/cgminer.py index 22df1b4f..8e5cc01e 100644 --- a/pyasic/miners/_backends/cgminer.py +++ b/pyasic/miners/_backends/cgminer.py @@ -173,7 +173,7 @@ class CGMiner(BaseMiner): async def get_mac(self) -> str: return "00:00:00:00:00:00" - async def get_data(self) -> MinerData: + async def get_data(self, allow_warning: bool = False) -> MinerData: """Get data from the miner. Returns: @@ -206,7 +206,7 @@ class CGMiner(BaseMiner): miner_data = None for i in range(PyasicSettings().miner_get_data_retries): miner_data = await self.api.multicommand( - "summary", "pools", "stats", + "summary", "pools", "stats", allow_warning=allow_warning ) if miner_data: break diff --git a/pyasic/miners/antminer/hiveon/X9/T9.py b/pyasic/miners/antminer/hiveon/X9/T9.py index f2cd256e..416d1c5d 100644 --- a/pyasic/miners/antminer/hiveon/X9/T9.py +++ b/pyasic/miners/antminer/hiveon/X9/T9.py @@ -33,7 +33,7 @@ class HiveonT9(Hiveon, T9): ) return mac - async def get_data(self) -> MinerData: + async def get_data(self, allow_warning: bool = False) -> MinerData: """Get data from the miner. Returns: @@ -71,7 +71,7 @@ class HiveonT9(Hiveon, T9): miner_data = None for i in range(PyasicSettings().miner_get_data_retries): miner_data = await self.api.multicommand( - "summary", "pools", "stats", ignore_x19_error=True + "summary", "pools", "stats", allow_warning=allow_warning ) if miner_data: break diff --git a/pyasic/miners/avalonminer/cgminer/A10X/A10X.py b/pyasic/miners/avalonminer/cgminer/A10X/A10X.py index 1fafb72d..6be3744b 100644 --- a/pyasic/miners/avalonminer/cgminer/A10X/A10X.py +++ b/pyasic/miners/avalonminer/cgminer/A10X/A10X.py @@ -14,7 +14,7 @@ from pyasic.miners._backends import CGMiner # noqa - Ignore access to _module -from pyasic.data import MinerData +from pyasic.data import MinerData, HashBoard from pyasic.settings import PyasicSettings import re from pyasic.config import MinerConfig @@ -80,7 +80,7 @@ class CGMinerA10X(CGMiner): ) return mac - async def get_data(self): + async def get_data(self, allow_warning: bool = True): data = MinerData( ip=str(self.ip), ideal_chips=self.nominal_chips * self.ideal_hashboards, @@ -100,7 +100,7 @@ class CGMinerA10X(CGMiner): miner_data = None for i in range(PyasicSettings().miner_get_data_retries): miner_data = await self.api.multicommand( - "version", "summary", "pools", "stats" + "version", "summary", "pools", "stats", allow_warning=allow_warning ) if miner_data: break diff --git a/pyasic/miners/avalonminer/cgminer/A7X/A7X.py b/pyasic/miners/avalonminer/cgminer/A7X/A7X.py index 0802aa46..c712c91f 100644 --- a/pyasic/miners/avalonminer/cgminer/A7X/A7X.py +++ b/pyasic/miners/avalonminer/cgminer/A7X/A7X.py @@ -80,7 +80,7 @@ class CGMinerA7X(CGMiner): ) return mac - async def get_data(self): + async def get_data(self, allow_warning: bool = True): data = MinerData( ip=str(self.ip), ideal_chips=self.nominal_chips * self.ideal_hashboards, @@ -100,7 +100,7 @@ class CGMinerA7X(CGMiner): miner_data = None for i in range(PyasicSettings().miner_get_data_retries): miner_data = await self.api.multicommand( - "version", "summary", "pools", "stats" + "version", "summary", "pools", "stats", allow_warning=allow_warning ) if miner_data: break diff --git a/pyasic/miners/avalonminer/cgminer/A8X/A8X.py b/pyasic/miners/avalonminer/cgminer/A8X/A8X.py index 1c01c185..bc9f220b 100644 --- a/pyasic/miners/avalonminer/cgminer/A8X/A8X.py +++ b/pyasic/miners/avalonminer/cgminer/A8X/A8X.py @@ -80,7 +80,7 @@ class CGMinerA8X(CGMiner): ) return mac - async def get_data(self): + async def get_data(self, allow_warning: bool = True): data = MinerData( ip=str(self.ip), ideal_chips=self.nominal_chips * self.ideal_hashboards, @@ -100,7 +100,7 @@ class CGMinerA8X(CGMiner): miner_data = None for i in range(PyasicSettings().miner_get_data_retries): miner_data = await self.api.multicommand( - "version", "summary", "pools", "stats" + "version", "summary", "pools", "stats", allow_warning=allow_warning ) if miner_data: break diff --git a/pyasic/miners/avalonminer/cgminer/A9X/A921.py b/pyasic/miners/avalonminer/cgminer/A9X/A921.py index 79e984d8..aa3e2452 100644 --- a/pyasic/miners/avalonminer/cgminer/A9X/A921.py +++ b/pyasic/miners/avalonminer/cgminer/A9X/A921.py @@ -81,7 +81,7 @@ class CGMinerAvalon921(CGMiner, Avalon921): ) return mac - async def get_data(self): + async def get_data(self, allow_warning: bool = True): data = MinerData( ip=str(self.ip), ideal_chips=self.nominal_chips * self.ideal_hashboards, @@ -103,7 +103,7 @@ class CGMinerAvalon921(CGMiner, Avalon921): miner_data = None for i in range(PyasicSettings().miner_get_data_retries): miner_data = await self.api.multicommand( - "version", "summary", "pools", "stats" + "version", "summary", "pools", "stats", allow_warning=allow_warning ) if miner_data: break diff --git a/pyasic/miners/base.py b/pyasic/miners/base.py index c945faaf..915c27f8 100644 --- a/pyasic/miners/base.py +++ b/pyasic/miners/base.py @@ -192,7 +192,7 @@ class BaseMiner(ABC): pass @abstractmethod - async def get_data(self) -> MinerData: + async def get_data(self, allow_warning: bool = True) -> MinerData: """Get data from the miner in the form of [`MinerData`][pyasic.data.MinerData]. Returns: diff --git a/pyasic/miners/innosilicon/cgminer/T3X/T3H_Plus.py b/pyasic/miners/innosilicon/cgminer/T3X/T3H_Plus.py index 50340daa..b2e20c8c 100644 --- a/pyasic/miners/innosilicon/cgminer/T3X/T3H_Plus.py +++ b/pyasic/miners/innosilicon/cgminer/T3X/T3H_Plus.py @@ -157,7 +157,7 @@ class CGMinerInnosiliconT3HPlus(CGMiner, InnosiliconT3HPlus): errors.append(InnosiliconError(error_code=err)) return errors - async def get_data(self) -> MinerData: + async def get_data(self, allow_warning: bool = False) -> MinerData: data = MinerData( ip=str(self.ip), ideal_chips=self.nominal_chips * self.ideal_hashboards, @@ -187,7 +187,7 @@ class CGMinerInnosiliconT3HPlus(CGMiner, InnosiliconT3HPlus): all_data = None for i in range(PyasicSettings().miner_get_data_retries): miner_data = await self.api.multicommand( - "summary", "pools", "stats", ignore_x19_error=True + "summary", "pools", "stats", allow_warning=allow_warning ) if miner_data: diff --git a/pyasic/miners/unknown.py b/pyasic/miners/unknown.py index 4d8e1feb..20f41556 100644 --- a/pyasic/miners/unknown.py +++ b/pyasic/miners/unknown.py @@ -72,5 +72,5 @@ class UnknownMiner(BaseMiner): async def send_config(self, config: MinerConfig, user_suffix: str = None) -> None: return None - async def get_data(self) -> MinerData: + async def get_data(self, _) -> MinerData: return MinerData(ip=str(self.ip))