pyasic-umhost 0.0.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- pyasic/__init__.py +28 -0
- pyasic/config/__init__.py +348 -0
- pyasic/config/base.py +150 -0
- pyasic/config/fans.py +421 -0
- pyasic/config/mining/__init__.py +821 -0
- pyasic/config/mining/algo.py +66 -0
- pyasic/config/mining/presets.py +54 -0
- pyasic/config/mining/scaling.py +129 -0
- pyasic/config/pools.py +691 -0
- pyasic/config/temperature.py +155 -0
- pyasic/data/__init__.py +427 -0
- pyasic/data/boards.py +67 -0
- pyasic/data/device.py +31 -0
- pyasic/data/error_codes/X19.py +28 -0
- pyasic/data/error_codes/__init__.py +32 -0
- pyasic/data/error_codes/base.py +18 -0
- pyasic/data/error_codes/bos.py +29 -0
- pyasic/data/error_codes/innosilicon.py +62 -0
- pyasic/data/error_codes/vnish.py +28 -0
- pyasic/data/error_codes/whatsminer.py +526 -0
- pyasic/data/fans.py +44 -0
- pyasic/data/pools.py +91 -0
- pyasic/device/__init__.py +4 -0
- pyasic/device/algorithm/__init__.py +26 -0
- pyasic/device/algorithm/base.py +23 -0
- pyasic/device/algorithm/blake256.py +13 -0
- pyasic/device/algorithm/eaglesong.py +13 -0
- pyasic/device/algorithm/equihash.py +13 -0
- pyasic/device/algorithm/ethash.py +12 -0
- pyasic/device/algorithm/handshake.py +13 -0
- pyasic/device/algorithm/hashrate/__init__.py +24 -0
- pyasic/device/algorithm/hashrate/base.py +95 -0
- pyasic/device/algorithm/hashrate/blake256.py +18 -0
- pyasic/device/algorithm/hashrate/eaglesong.py +18 -0
- pyasic/device/algorithm/hashrate/equihash.py +18 -0
- pyasic/device/algorithm/hashrate/ethash.py +18 -0
- pyasic/device/algorithm/hashrate/handshake.py +18 -0
- pyasic/device/algorithm/hashrate/kadena.py +18 -0
- pyasic/device/algorithm/hashrate/kheavyhash.py +18 -0
- pyasic/device/algorithm/hashrate/scrypt.py +18 -0
- pyasic/device/algorithm/hashrate/sha256.py +18 -0
- pyasic/device/algorithm/hashrate/unit/__init__.py +23 -0
- pyasic/device/algorithm/hashrate/unit/base.py +71 -0
- pyasic/device/algorithm/hashrate/unit/blake256.py +16 -0
- pyasic/device/algorithm/hashrate/unit/eaglesong.py +16 -0
- pyasic/device/algorithm/hashrate/unit/equihash.py +34 -0
- pyasic/device/algorithm/hashrate/unit/ethash.py +16 -0
- pyasic/device/algorithm/hashrate/unit/handshake.py +16 -0
- pyasic/device/algorithm/hashrate/unit/kadena.py +16 -0
- pyasic/device/algorithm/hashrate/unit/kheavyhash.py +16 -0
- pyasic/device/algorithm/hashrate/unit/scrypt.py +16 -0
- pyasic/device/algorithm/hashrate/unit/sha256.py +16 -0
- pyasic/device/algorithm/hashrate/unit/x11.py +16 -0
- pyasic/device/algorithm/hashrate/x11.py +18 -0
- pyasic/device/algorithm/kadena.py +13 -0
- pyasic/device/algorithm/kheavyhash.py +13 -0
- pyasic/device/algorithm/scrypt.py +12 -0
- pyasic/device/algorithm/sha256.py +13 -0
- pyasic/device/algorithm/x11.py +13 -0
- pyasic/device/firmware.py +30 -0
- pyasic/device/makes.py +37 -0
- pyasic/device/models.py +572 -0
- pyasic/errors/__init__.py +59 -0
- pyasic/load/__init__.py +352 -0
- pyasic/logger/__init__.py +46 -0
- pyasic/miners/__init__.py +20 -0
- pyasic/miners/antminer/__init__.py +25 -0
- pyasic/miners/antminer/bmminer/X15/Z15.py +22 -0
- pyasic/miners/antminer/bmminer/X15/__init__.py +16 -0
- pyasic/miners/antminer/bmminer/X17/S17.py +34 -0
- pyasic/miners/antminer/bmminer/X17/T17.py +30 -0
- pyasic/miners/antminer/bmminer/X17/__init__.py +18 -0
- pyasic/miners/antminer/bmminer/X19/S19.py +104 -0
- pyasic/miners/antminer/bmminer/X19/T19.py +22 -0
- pyasic/miners/antminer/bmminer/X19/__init__.py +36 -0
- pyasic/miners/antminer/bmminer/X21/S21.py +30 -0
- pyasic/miners/antminer/bmminer/X21/T21.py +22 -0
- pyasic/miners/antminer/bmminer/X21/__init__.py +17 -0
- pyasic/miners/antminer/bmminer/X3/HS3.py +22 -0
- pyasic/miners/antminer/bmminer/X3/KA3.py +22 -0
- pyasic/miners/antminer/bmminer/X3/KS3.py +22 -0
- pyasic/miners/antminer/bmminer/X3/L3.py +22 -0
- pyasic/miners/antminer/bmminer/X3/__init__.py +19 -0
- pyasic/miners/antminer/bmminer/X5/KS5.py +25 -0
- pyasic/miners/antminer/bmminer/X5/__init__.py +16 -0
- pyasic/miners/antminer/bmminer/X7/D7.py +21 -0
- pyasic/miners/antminer/bmminer/X7/K7.py +21 -0
- pyasic/miners/antminer/bmminer/X7/L7.py +21 -0
- pyasic/miners/antminer/bmminer/X7/__init__.py +18 -0
- pyasic/miners/antminer/bmminer/X9/D9.py +22 -0
- pyasic/miners/antminer/bmminer/X9/E9.py +22 -0
- pyasic/miners/antminer/bmminer/X9/L9.py +22 -0
- pyasic/miners/antminer/bmminer/X9/S9.py +30 -0
- pyasic/miners/antminer/bmminer/X9/T9.py +22 -0
- pyasic/miners/antminer/bmminer/X9/__init__.py +21 -0
- pyasic/miners/antminer/bmminer/__init__.py +23 -0
- pyasic/miners/antminer/bosminer/X17/S17.py +34 -0
- pyasic/miners/antminer/bosminer/X17/T17.py +30 -0
- pyasic/miners/antminer/bosminer/X17/__init__.py +18 -0
- pyasic/miners/antminer/bosminer/X19/S19.py +89 -0
- pyasic/miners/antminer/bosminer/X19/T19.py +22 -0
- pyasic/miners/antminer/bosminer/X19/__init__.py +33 -0
- pyasic/miners/antminer/bosminer/X21/S21.py +26 -0
- pyasic/miners/antminer/bosminer/X21/T21.py +22 -0
- pyasic/miners/antminer/bosminer/X21/__init__.py +18 -0
- pyasic/miners/antminer/bosminer/X9/S9.py +22 -0
- pyasic/miners/antminer/bosminer/X9/__init__.py +17 -0
- pyasic/miners/antminer/bosminer/__init__.py +20 -0
- pyasic/miners/antminer/cgminer/X15/Z15.py +22 -0
- pyasic/miners/antminer/cgminer/X15/__init__.py +16 -0
- pyasic/miners/antminer/cgminer/X3/D3.py +21 -0
- pyasic/miners/antminer/cgminer/X3/__init__.py +17 -0
- pyasic/miners/antminer/cgminer/X5/DR5.py +22 -0
- pyasic/miners/antminer/cgminer/X5/__init__.py +16 -0
- pyasic/miners/antminer/cgminer/__init__.py +19 -0
- pyasic/miners/antminer/epic/X19/S19.py +61 -0
- pyasic/miners/antminer/epic/X19/__init__.py +26 -0
- pyasic/miners/antminer/epic/X21/S21.py +26 -0
- pyasic/miners/antminer/epic/X21/T21.py +22 -0
- pyasic/miners/antminer/epic/X21/__init__.py +18 -0
- pyasic/miners/antminer/epic/__init__.py +18 -0
- pyasic/miners/antminer/hiveon/X19/S19.py +104 -0
- pyasic/miners/antminer/hiveon/X19/T19.py +22 -0
- pyasic/miners/antminer/hiveon/X19/__init__.py +36 -0
- pyasic/miners/antminer/hiveon/X9/T9.py +146 -0
- pyasic/miners/antminer/hiveon/X9/__init__.py +17 -0
- pyasic/miners/antminer/hiveon/__init__.py +18 -0
- pyasic/miners/antminer/luxos/X19/S19.py +49 -0
- pyasic/miners/antminer/luxos/X19/T19.py +22 -0
- pyasic/miners/antminer/luxos/X19/__init__.py +25 -0
- pyasic/miners/antminer/luxos/X21/S21.py +22 -0
- pyasic/miners/antminer/luxos/X21/__init__.py +17 -0
- pyasic/miners/antminer/luxos/X9/S9.py +22 -0
- pyasic/miners/antminer/luxos/X9/__init__.py +17 -0
- pyasic/miners/antminer/luxos/__init__.py +19 -0
- pyasic/miners/antminer/marathon/X19/S19.py +54 -0
- pyasic/miners/antminer/marathon/X19/__init__.py +9 -0
- pyasic/miners/antminer/marathon/X21/S21.py +22 -0
- pyasic/miners/antminer/marathon/X21/T21.py +22 -0
- pyasic/miners/antminer/marathon/X21/__init__.py +2 -0
- pyasic/miners/antminer/marathon/__init__.py +2 -0
- pyasic/miners/antminer/mskminer/X19/S19.py +24 -0
- pyasic/miners/antminer/mskminer/X19/__init__.py +17 -0
- pyasic/miners/antminer/mskminer/__init__.py +17 -0
- pyasic/miners/antminer/vnish/X17/S17.py +25 -0
- pyasic/miners/antminer/vnish/X17/__init__.py +16 -0
- pyasic/miners/antminer/vnish/X19/S19.py +74 -0
- pyasic/miners/antminer/vnish/X19/T19.py +22 -0
- pyasic/miners/antminer/vnish/X19/__init__.py +30 -0
- pyasic/miners/antminer/vnish/X21/S21.py +22 -0
- pyasic/miners/antminer/vnish/X21/T21.py +22 -0
- pyasic/miners/antminer/vnish/X21/__init__.py +18 -0
- pyasic/miners/antminer/vnish/X3/L3.py +22 -0
- pyasic/miners/antminer/vnish/X3/__init__.py +17 -0
- pyasic/miners/antminer/vnish/X7/L7.py +22 -0
- pyasic/miners/antminer/vnish/X7/__init__.py +17 -0
- pyasic/miners/antminer/vnish/__init__.py +21 -0
- pyasic/miners/auradine/__init__.py +1 -0
- pyasic/miners/auradine/flux/AD/AT1.py +6 -0
- pyasic/miners/auradine/flux/AD/AT2.py +10 -0
- pyasic/miners/auradine/flux/AD/__init__.py +2 -0
- pyasic/miners/auradine/flux/AI/AI2.py +6 -0
- pyasic/miners/auradine/flux/AI/AI3.py +6 -0
- pyasic/miners/auradine/flux/AI/__init__.py +2 -0
- pyasic/miners/auradine/flux/AT/AD2.py +6 -0
- pyasic/miners/auradine/flux/AT/AD3.py +6 -0
- pyasic/miners/auradine/flux/AT/__init__.py +2 -0
- pyasic/miners/auradine/flux/__init__.py +3 -0
- pyasic/miners/avalonminer/__init__.py +17 -0
- pyasic/miners/avalonminer/cgminer/A10X/A1026.py +22 -0
- pyasic/miners/avalonminer/cgminer/A10X/A1047.py +22 -0
- pyasic/miners/avalonminer/cgminer/A10X/A1066.py +22 -0
- pyasic/miners/avalonminer/cgminer/A10X/__init__.py +19 -0
- pyasic/miners/avalonminer/cgminer/A11X/A1126.py +22 -0
- pyasic/miners/avalonminer/cgminer/A11X/A1166.py +22 -0
- pyasic/miners/avalonminer/cgminer/A11X/__init__.py +18 -0
- pyasic/miners/avalonminer/cgminer/A12X/A1246.py +22 -0
- pyasic/miners/avalonminer/cgminer/A12X/__init__.py +17 -0
- pyasic/miners/avalonminer/cgminer/A15X/A1566.py +22 -0
- pyasic/miners/avalonminer/cgminer/A15X/__init__.py +17 -0
- pyasic/miners/avalonminer/cgminer/A7X/A721.py +22 -0
- pyasic/miners/avalonminer/cgminer/A7X/A741.py +22 -0
- pyasic/miners/avalonminer/cgminer/A7X/A761.py +22 -0
- pyasic/miners/avalonminer/cgminer/A7X/__init__.py +19 -0
- pyasic/miners/avalonminer/cgminer/A8X/A821.py +22 -0
- pyasic/miners/avalonminer/cgminer/A8X/A841.py +22 -0
- pyasic/miners/avalonminer/cgminer/A8X/A851.py +22 -0
- pyasic/miners/avalonminer/cgminer/A8X/__init__.py +19 -0
- pyasic/miners/avalonminer/cgminer/A9X/A921.py +22 -0
- pyasic/miners/avalonminer/cgminer/A9X/__init__.py +17 -0
- pyasic/miners/avalonminer/cgminer/__init__.py +24 -0
- pyasic/miners/avalonminer/cgminer/nano/__init__.py +17 -0
- pyasic/miners/avalonminer/cgminer/nano/nano3.py +107 -0
- pyasic/miners/backends/__init__.py +38 -0
- pyasic/miners/backends/antminer.py +690 -0
- pyasic/miners/backends/auradine.py +437 -0
- pyasic/miners/backends/avalonminer.py +360 -0
- pyasic/miners/backends/bfgminer.py +268 -0
- pyasic/miners/backends/bitaxe.py +7 -0
- pyasic/miners/backends/bmminer.py +308 -0
- pyasic/miners/backends/braiins_os.py +1116 -0
- pyasic/miners/backends/btminer.py +738 -0
- pyasic/miners/backends/cgminer.py +174 -0
- pyasic/miners/backends/elphapex.py +374 -0
- pyasic/miners/backends/epic.py +475 -0
- pyasic/miners/backends/espminer.py +235 -0
- pyasic/miners/backends/goldshell.py +215 -0
- pyasic/miners/backends/hammer.py +472 -0
- pyasic/miners/backends/hiveon.py +280 -0
- pyasic/miners/backends/iceriver.py +251 -0
- pyasic/miners/backends/innosilicon.py +405 -0
- pyasic/miners/backends/luckyminer.py +7 -0
- pyasic/miners/backends/luxminer.py +430 -0
- pyasic/miners/backends/marathon.py +353 -0
- pyasic/miners/backends/mskminer.py +110 -0
- pyasic/miners/backends/unknown.py +124 -0
- pyasic/miners/backends/vnish.py +323 -0
- pyasic/miners/backends/whatsminer.py +36 -0
- pyasic/miners/base.py +597 -0
- pyasic/miners/bitaxe/__init__.py +1 -0
- pyasic/miners/bitaxe/espminer/BM/BM1366.py +6 -0
- pyasic/miners/bitaxe/espminer/BM/BM1368.py +6 -0
- pyasic/miners/bitaxe/espminer/BM/BM1370.py +6 -0
- pyasic/miners/bitaxe/espminer/BM/BM1397.py +6 -0
- pyasic/miners/bitaxe/espminer/BM/__init__.py +4 -0
- pyasic/miners/bitaxe/espminer/__init__.py +1 -0
- pyasic/miners/blockminer/__init__.py +17 -0
- pyasic/miners/blockminer/epic/__init__.py +17 -0
- pyasic/miners/blockminer/epic/blockminer/__init__.py +17 -0
- pyasic/miners/blockminer/epic/blockminer/blockminer.py +26 -0
- pyasic/miners/braiins/__init__.py +17 -0
- pyasic/miners/braiins/braiins/BMM/BMM.py +26 -0
- pyasic/miners/braiins/braiins/BMM/__init__.py +17 -0
- pyasic/miners/braiins/braiins/__init__.py +17 -0
- pyasic/miners/data.py +85 -0
- pyasic/miners/device/__init__.py +0 -0
- pyasic/miners/device/firmware.py +46 -0
- pyasic/miners/device/makes.py +74 -0
- pyasic/miners/device/models/__init__.py +28 -0
- pyasic/miners/device/models/antminer/X15/Z15.py +36 -0
- pyasic/miners/device/models/antminer/X15/__init__.py +16 -0
- pyasic/miners/device/models/antminer/X17/S17.py +54 -0
- pyasic/miners/device/models/antminer/X17/T17.py +45 -0
- pyasic/miners/device/models/antminer/X17/__init__.py +18 -0
- pyasic/miners/device/models/antminer/X19/S19.py +225 -0
- pyasic/miners/device/models/antminer/X19/T19.py +27 -0
- pyasic/miners/device/models/antminer/X19/__init__.py +42 -0
- pyasic/miners/device/models/antminer/X21/S21.py +45 -0
- pyasic/miners/device/models/antminer/X21/T21.py +27 -0
- pyasic/miners/device/models/antminer/X21/__init__.py +18 -0
- pyasic/miners/device/models/antminer/X3/D3.py +27 -0
- pyasic/miners/device/models/antminer/X3/HS3.py +27 -0
- pyasic/miners/device/models/antminer/X3/KA3.py +27 -0
- pyasic/miners/device/models/antminer/X3/KS3.py +27 -0
- pyasic/miners/device/models/antminer/X3/L3.py +27 -0
- pyasic/miners/device/models/antminer/X3/__init__.py +20 -0
- pyasic/miners/device/models/antminer/X5/DR5.py +27 -0
- pyasic/miners/device/models/antminer/X5/KS5.py +36 -0
- pyasic/miners/device/models/antminer/X5/__init__.py +17 -0
- pyasic/miners/device/models/antminer/X7/D7.py +27 -0
- pyasic/miners/device/models/antminer/X7/K7.py +27 -0
- pyasic/miners/device/models/antminer/X7/L7.py +27 -0
- pyasic/miners/device/models/antminer/X7/__init__.py +18 -0
- pyasic/miners/device/models/antminer/X9/D9.py +27 -0
- pyasic/miners/device/models/antminer/X9/E9.py +27 -0
- pyasic/miners/device/models/antminer/X9/L9.py +27 -0
- pyasic/miners/device/models/antminer/X9/S9.py +45 -0
- pyasic/miners/device/models/antminer/X9/T9.py +27 -0
- pyasic/miners/device/models/antminer/X9/__init__.py +21 -0
- pyasic/miners/device/models/antminer/__init__.py +23 -0
- pyasic/miners/device/models/auradine/AD/AD2.py +11 -0
- pyasic/miners/device/models/auradine/AD/AD3.py +11 -0
- pyasic/miners/device/models/auradine/AD/__init__.py +2 -0
- pyasic/miners/device/models/auradine/AI/AI2.py +11 -0
- pyasic/miners/device/models/auradine/AI/AI3.py +11 -0
- pyasic/miners/device/models/auradine/AI/__init__.py +2 -0
- pyasic/miners/device/models/auradine/AT/AT1.py +12 -0
- pyasic/miners/device/models/auradine/AT/AT2.py +19 -0
- pyasic/miners/device/models/auradine/AT/__init__.py +2 -0
- pyasic/miners/device/models/auradine/__init__.py +3 -0
- pyasic/miners/device/models/avalonminer/A10X/A1026.py +27 -0
- pyasic/miners/device/models/avalonminer/A10X/A1047.py +27 -0
- pyasic/miners/device/models/avalonminer/A10X/A1066.py +26 -0
- pyasic/miners/device/models/avalonminer/A10X/__init__.py +19 -0
- pyasic/miners/device/models/avalonminer/A11X/A1126.py +27 -0
- pyasic/miners/device/models/avalonminer/A11X/A1166.py +27 -0
- pyasic/miners/device/models/avalonminer/A11X/__init__.py +19 -0
- pyasic/miners/device/models/avalonminer/A12X/A1246.py +27 -0
- pyasic/miners/device/models/avalonminer/A12X/__init__.py +17 -0
- pyasic/miners/device/models/avalonminer/A15X/A1566.py +27 -0
- pyasic/miners/device/models/avalonminer/A15X/__init__.py +17 -0
- pyasic/miners/device/models/avalonminer/A7X/A721.py +27 -0
- pyasic/miners/device/models/avalonminer/A7X/A741.py +27 -0
- pyasic/miners/device/models/avalonminer/A7X/A761.py +27 -0
- pyasic/miners/device/models/avalonminer/A7X/__init__.py +19 -0
- pyasic/miners/device/models/avalonminer/A8X/A821.py +27 -0
- pyasic/miners/device/models/avalonminer/A8X/A841.py +27 -0
- pyasic/miners/device/models/avalonminer/A8X/A851.py +27 -0
- pyasic/miners/device/models/avalonminer/A8X/__init__.py +19 -0
- pyasic/miners/device/models/avalonminer/A9X/A921.py +27 -0
- pyasic/miners/device/models/avalonminer/A9X/__init__.py +17 -0
- pyasic/miners/device/models/avalonminer/__init__.py +24 -0
- pyasic/miners/device/models/avalonminer/nano/__init__.py +1 -0
- pyasic/miners/device/models/avalonminer/nano/nano3.py +12 -0
- pyasic/miners/device/models/bitaxe/BM/BM1366.py +12 -0
- pyasic/miners/device/models/bitaxe/BM/BM1368.py +12 -0
- pyasic/miners/device/models/bitaxe/BM/BM1370.py +12 -0
- pyasic/miners/device/models/bitaxe/BM/BM1397.py +12 -0
- pyasic/miners/device/models/bitaxe/BM/__init__.py +4 -0
- pyasic/miners/device/models/bitaxe/__init__.py +1 -0
- pyasic/miners/device/models/braiins/BMM/BMM1.py +19 -0
- pyasic/miners/device/models/braiins/BMM/__init__.py +1 -0
- pyasic/miners/device/models/braiins/__init__.py +1 -0
- pyasic/miners/device/models/elphapex/DGX/DG1.py +27 -0
- pyasic/miners/device/models/elphapex/DGX/__init__.py +1 -0
- pyasic/miners/device/models/elphapex/__init__.py +1 -0
- pyasic/miners/device/models/epic/__init__.py +1 -0
- pyasic/miners/device/models/epic/blockminer/__init__.py +1 -0
- pyasic/miners/device/models/epic/blockminer/blockminer.py +21 -0
- pyasic/miners/device/models/goldshell/X5/CK5.py +27 -0
- pyasic/miners/device/models/goldshell/X5/HS5.py +27 -0
- pyasic/miners/device/models/goldshell/X5/KD5.py +27 -0
- pyasic/miners/device/models/goldshell/X5/__init__.py +18 -0
- pyasic/miners/device/models/goldshell/XBox/KDBox.py +36 -0
- pyasic/miners/device/models/goldshell/XBox/__init__.py +1 -0
- pyasic/miners/device/models/goldshell/XMax/KDMax.py +27 -0
- pyasic/miners/device/models/goldshell/XMax/__init__.py +16 -0
- pyasic/miners/device/models/goldshell/__init__.py +18 -0
- pyasic/miners/device/models/hammer/DX/D10.py +27 -0
- pyasic/miners/device/models/hammer/DX/__init__.py +1 -0
- pyasic/miners/device/models/hammer/__init__.py +1 -0
- pyasic/miners/device/models/iceriver/KSX/KS0.py +26 -0
- pyasic/miners/device/models/iceriver/KSX/KS1.py +26 -0
- pyasic/miners/device/models/iceriver/KSX/KS2.py +27 -0
- pyasic/miners/device/models/iceriver/KSX/KS3.py +43 -0
- pyasic/miners/device/models/iceriver/KSX/KS5.py +44 -0
- pyasic/miners/device/models/iceriver/KSX/__init__.py +5 -0
- pyasic/miners/device/models/iceriver/__init__.py +1 -0
- pyasic/miners/device/models/innosilicon/A10X/A10X.py +26 -0
- pyasic/miners/device/models/innosilicon/A10X/__init__.py +16 -0
- pyasic/miners/device/models/innosilicon/A11X/A11.py +27 -0
- pyasic/miners/device/models/innosilicon/A11X/A11M.py +27 -0
- pyasic/miners/device/models/innosilicon/A11X/__init__.py +17 -0
- pyasic/miners/device/models/innosilicon/T3X/T3H.py +27 -0
- pyasic/miners/device/models/innosilicon/T3X/__init__.py +17 -0
- pyasic/miners/device/models/innosilicon/__init__.py +19 -0
- pyasic/miners/device/models/luckyminer/LV/LV07.py +12 -0
- pyasic/miners/device/models/luckyminer/LV/LV08.py +12 -0
- pyasic/miners/device/models/luckyminer/LV/__init__.py +2 -0
- pyasic/miners/device/models/luckyminer/__init__.py +1 -0
- pyasic/miners/device/models/volcminer/DX/D1.py +27 -0
- pyasic/miners/device/models/volcminer/DX/__init__.py +1 -0
- pyasic/miners/device/models/volcminer/__init__.py +1 -0
- pyasic/miners/device/models/whatsminer/M2X/M20.py +12 -0
- pyasic/miners/device/models/whatsminer/M2X/M20P.py +21 -0
- pyasic/miners/device/models/whatsminer/M2X/M20S.py +30 -0
- pyasic/miners/device/models/whatsminer/M2X/M20S_Plus.py +12 -0
- pyasic/miners/device/models/whatsminer/M2X/M21.py +12 -0
- pyasic/miners/device/models/whatsminer/M2X/M21S.py +30 -0
- pyasic/miners/device/models/whatsminer/M2X/M21S_Plus.py +12 -0
- pyasic/miners/device/models/whatsminer/M2X/M29.py +12 -0
- pyasic/miners/device/models/whatsminer/M2X/__init__.py +8 -0
- pyasic/miners/device/models/whatsminer/M3X/M30.py +21 -0
- pyasic/miners/device/models/whatsminer/M3X/M30K.py +12 -0
- pyasic/miners/device/models/whatsminer/M3X/M30L.py +12 -0
- pyasic/miners/device/models/whatsminer/M3X/M30S.py +273 -0
- pyasic/miners/device/models/whatsminer/M3X/M30S_Plus.py +318 -0
- pyasic/miners/device/models/whatsminer/M3X/M30S_Plus_Plus.py +255 -0
- pyasic/miners/device/models/whatsminer/M3X/M31.py +21 -0
- pyasic/miners/device/models/whatsminer/M3X/M31H.py +21 -0
- pyasic/miners/device/models/whatsminer/M3X/M31L.py +12 -0
- pyasic/miners/device/models/whatsminer/M3X/M31S.py +111 -0
- pyasic/miners/device/models/whatsminer/M3X/M31SE.py +30 -0
- pyasic/miners/device/models/whatsminer/M3X/M31S_Plus.py +183 -0
- pyasic/miners/device/models/whatsminer/M3X/M32.py +21 -0
- pyasic/miners/device/models/whatsminer/M3X/M32S.py +27 -0
- pyasic/miners/device/models/whatsminer/M3X/M33.py +30 -0
- pyasic/miners/device/models/whatsminer/M3X/M33S.py +12 -0
- pyasic/miners/device/models/whatsminer/M3X/M33S_Plus.py +39 -0
- pyasic/miners/device/models/whatsminer/M3X/M33S_Plus_Plus.py +30 -0
- pyasic/miners/device/models/whatsminer/M3X/M34S_Plus.py +12 -0
- pyasic/miners/device/models/whatsminer/M3X/M36S.py +12 -0
- pyasic/miners/device/models/whatsminer/M3X/M36S_Plus.py +12 -0
- pyasic/miners/device/models/whatsminer/M3X/M36S_Plus_Plus.py +12 -0
- pyasic/miners/device/models/whatsminer/M3X/M39.py +30 -0
- pyasic/miners/device/models/whatsminer/M3X/__init__.py +152 -0
- pyasic/miners/device/models/whatsminer/M5X/M50.py +165 -0
- pyasic/miners/device/models/whatsminer/M5X/M50S.py +174 -0
- pyasic/miners/device/models/whatsminer/M5X/M50S_Plus.py +102 -0
- pyasic/miners/device/models/whatsminer/M5X/M50S_Plus_Plus.py +102 -0
- pyasic/miners/device/models/whatsminer/M5X/M52S.py +12 -0
- pyasic/miners/device/models/whatsminer/M5X/M52S_Plus_Plus.py +12 -0
- pyasic/miners/device/models/whatsminer/M5X/M53.py +48 -0
- pyasic/miners/device/models/whatsminer/M5X/M53H.py +12 -0
- pyasic/miners/device/models/whatsminer/M5X/M53S.py +48 -0
- pyasic/miners/device/models/whatsminer/M5X/M53S_Plus.py +39 -0
- pyasic/miners/device/models/whatsminer/M5X/M53S_Plus_Plus.py +57 -0
- pyasic/miners/device/models/whatsminer/M5X/M54S_Plus_Plus.py +30 -0
- pyasic/miners/device/models/whatsminer/M5X/M56.py +12 -0
- pyasic/miners/device/models/whatsminer/M5X/M56S.py +30 -0
- pyasic/miners/device/models/whatsminer/M5X/M56S_Plus.py +39 -0
- pyasic/miners/device/models/whatsminer/M5X/M56S_Plus_Plus.py +39 -0
- pyasic/miners/device/models/whatsminer/M5X/M59.py +12 -0
- pyasic/miners/device/models/whatsminer/M5X/__init__.py +92 -0
- pyasic/miners/device/models/whatsminer/M6X/M60.py +93 -0
- pyasic/miners/device/models/whatsminer/M6X/M60S.py +102 -0
- pyasic/miners/device/models/whatsminer/M6X/M60S_Plus.py +93 -0
- pyasic/miners/device/models/whatsminer/M6X/M60S_Plus_Plus.py +21 -0
- pyasic/miners/device/models/whatsminer/M6X/M61.py +84 -0
- pyasic/miners/device/models/whatsminer/M6X/M61S.py +30 -0
- pyasic/miners/device/models/whatsminer/M6X/M61S_Plus.py +12 -0
- pyasic/miners/device/models/whatsminer/M6X/M62S_Plus.py +12 -0
- pyasic/miners/device/models/whatsminer/M6X/M63.py +48 -0
- pyasic/miners/device/models/whatsminer/M6X/M63S.py +66 -0
- pyasic/miners/device/models/whatsminer/M6X/M63S_Plus.py +48 -0
- pyasic/miners/device/models/whatsminer/M6X/M63S_Plus_Plus.py +12 -0
- pyasic/miners/device/models/whatsminer/M6X/M64.py +21 -0
- pyasic/miners/device/models/whatsminer/M6X/M64S.py +12 -0
- pyasic/miners/device/models/whatsminer/M6X/M65S.py +21 -0
- pyasic/miners/device/models/whatsminer/M6X/M65S_Plus.py +12 -0
- pyasic/miners/device/models/whatsminer/M6X/M66.py +39 -0
- pyasic/miners/device/models/whatsminer/M6X/M66S.py +93 -0
- pyasic/miners/device/models/whatsminer/M6X/M66S_Plus.py +57 -0
- pyasic/miners/device/models/whatsminer/M6X/M66S_Plus_Plus.py +12 -0
- pyasic/miners/device/models/whatsminer/M6X/M67S.py +12 -0
- pyasic/miners/device/models/whatsminer/M6X/__init__.py +89 -0
- pyasic/miners/device/models/whatsminer/M7X/M70.py +12 -0
- pyasic/miners/device/models/whatsminer/M7X/__init__.py +1 -0
- pyasic/miners/device/models/whatsminer/__init__.py +5 -0
- pyasic/miners/elphapex/__init__.py +1 -0
- pyasic/miners/elphapex/daoge/DGX/DG1.py +6 -0
- pyasic/miners/elphapex/daoge/DGX/__init__.py +1 -0
- pyasic/miners/elphapex/daoge/__init__.py +1 -0
- pyasic/miners/factory.py +1439 -0
- pyasic/miners/goldshell/__init__.py +16 -0
- pyasic/miners/goldshell/bfgminer/X5/CK5.py +21 -0
- pyasic/miners/goldshell/bfgminer/X5/HS5.py +21 -0
- pyasic/miners/goldshell/bfgminer/X5/KD5.py +21 -0
- pyasic/miners/goldshell/bfgminer/X5/__init__.py +18 -0
- pyasic/miners/goldshell/bfgminer/XBox/KDBox.py +25 -0
- pyasic/miners/goldshell/bfgminer/XBox/__init__.py +16 -0
- pyasic/miners/goldshell/bfgminer/XMax/KDMax.py +21 -0
- pyasic/miners/goldshell/bfgminer/XMax/__init__.py +16 -0
- pyasic/miners/goldshell/bfgminer/__init__.py +18 -0
- pyasic/miners/hammer/__init__.py +1 -0
- pyasic/miners/hammer/blackminer/DX/D10.py +8 -0
- pyasic/miners/hammer/blackminer/DX/__init__.py +1 -0
- pyasic/miners/hammer/blackminer/__init__.py +1 -0
- pyasic/miners/iceriver/__init__.py +1 -0
- pyasic/miners/iceriver/iceminer/KSX/KS0.py +6 -0
- pyasic/miners/iceriver/iceminer/KSX/KS1.py +6 -0
- pyasic/miners/iceriver/iceminer/KSX/KS2.py +6 -0
- pyasic/miners/iceriver/iceminer/KSX/KS3.py +14 -0
- pyasic/miners/iceriver/iceminer/KSX/KS5.py +14 -0
- pyasic/miners/iceriver/iceminer/KSX/__init__.py +5 -0
- pyasic/miners/iceriver/iceminer/__init__.py +1 -0
- pyasic/miners/innosilicon/__init__.py +17 -0
- pyasic/miners/innosilicon/cgminer/A10X/A10X.py +22 -0
- pyasic/miners/innosilicon/cgminer/A10X/__init__.py +17 -0
- pyasic/miners/innosilicon/cgminer/A11X/A11.py +22 -0
- pyasic/miners/innosilicon/cgminer/A11X/A11M.py +22 -0
- pyasic/miners/innosilicon/cgminer/A11X/__init__.py +2 -0
- pyasic/miners/innosilicon/cgminer/T3X/T3H.py +22 -0
- pyasic/miners/innosilicon/cgminer/T3X/__init__.py +17 -0
- pyasic/miners/innosilicon/cgminer/__init__.py +19 -0
- pyasic/miners/listener.py +87 -0
- pyasic/miners/luckyminer/__init__.py +1 -0
- pyasic/miners/luckyminer/espminer/LV/LV07.py +6 -0
- pyasic/miners/luckyminer/espminer/LV/LV08.py +6 -0
- pyasic/miners/luckyminer/espminer/LV/__init__.py +2 -0
- pyasic/miners/luckyminer/espminer/__init__.py +1 -0
- pyasic/miners/volcminer/__init__.py +1 -0
- pyasic/miners/volcminer/blackminer/DX/D1.py +8 -0
- pyasic/miners/volcminer/blackminer/DX/__init__.py +1 -0
- pyasic/miners/volcminer/blackminer/__init__.py +1 -0
- pyasic/miners/whatsminer/__init__.py +17 -0
- pyasic/miners/whatsminer/btminer/M2X/M20.py +6 -0
- pyasic/miners/whatsminer/btminer/M2X/M20P.py +13 -0
- pyasic/miners/whatsminer/btminer/M2X/M20S.py +20 -0
- pyasic/miners/whatsminer/btminer/M2X/M20S_Plus.py +6 -0
- pyasic/miners/whatsminer/btminer/M2X/M21.py +6 -0
- pyasic/miners/whatsminer/btminer/M2X/M21S.py +20 -0
- pyasic/miners/whatsminer/btminer/M2X/M21S_Plus.py +6 -0
- pyasic/miners/whatsminer/btminer/M2X/M29.py +6 -0
- pyasic/miners/whatsminer/btminer/M2X/__init__.py +8 -0
- pyasic/miners/whatsminer/btminer/M3X/M30.py +13 -0
- pyasic/miners/whatsminer/btminer/M3X/M30K.py +6 -0
- pyasic/miners/whatsminer/btminer/M3X/M30L.py +6 -0
- pyasic/miners/whatsminer/btminer/M3X/M30S.py +209 -0
- pyasic/miners/whatsminer/btminer/M3X/M30S_Plus.py +244 -0
- pyasic/miners/whatsminer/btminer/M3X/M30S_Plus_Plus.py +195 -0
- pyasic/miners/whatsminer/btminer/M3X/M31.py +13 -0
- pyasic/miners/whatsminer/btminer/M3X/M31H.py +13 -0
- pyasic/miners/whatsminer/btminer/M3X/M31L.py +6 -0
- pyasic/miners/whatsminer/btminer/M3X/M31S.py +83 -0
- pyasic/miners/whatsminer/btminer/M3X/M31SE.py +20 -0
- pyasic/miners/whatsminer/btminer/M3X/M31S_Plus.py +139 -0
- pyasic/miners/whatsminer/btminer/M3X/M32.py +13 -0
- pyasic/miners/whatsminer/btminer/M3X/M32S.py +22 -0
- pyasic/miners/whatsminer/btminer/M3X/M33.py +20 -0
- pyasic/miners/whatsminer/btminer/M3X/M33S.py +6 -0
- pyasic/miners/whatsminer/btminer/M3X/M33S_Plus.py +27 -0
- pyasic/miners/whatsminer/btminer/M3X/M33S_Plus_Plus.py +20 -0
- pyasic/miners/whatsminer/btminer/M3X/M34S_Plus.py +6 -0
- pyasic/miners/whatsminer/btminer/M3X/M36S.py +6 -0
- pyasic/miners/whatsminer/btminer/M3X/M36S_Plus.py +6 -0
- pyasic/miners/whatsminer/btminer/M3X/M36S_Plus_Plus.py +6 -0
- pyasic/miners/whatsminer/btminer/M3X/M39.py +20 -0
- pyasic/miners/whatsminer/btminer/M3X/__init__.py +161 -0
- pyasic/miners/whatsminer/btminer/M5X/M50.py +125 -0
- pyasic/miners/whatsminer/btminer/M5X/M50S.py +132 -0
- pyasic/miners/whatsminer/btminer/M5X/M50S_Plus.py +76 -0
- pyasic/miners/whatsminer/btminer/M5X/M50S_Plus_Plus.py +76 -0
- pyasic/miners/whatsminer/btminer/M5X/M52S.py +6 -0
- pyasic/miners/whatsminer/btminer/M5X/M52S_Plus_Plus.py +6 -0
- pyasic/miners/whatsminer/btminer/M5X/M53.py +34 -0
- pyasic/miners/whatsminer/btminer/M5X/M53H.py +6 -0
- pyasic/miners/whatsminer/btminer/M5X/M53S.py +34 -0
- pyasic/miners/whatsminer/btminer/M5X/M53S_Plus.py +27 -0
- pyasic/miners/whatsminer/btminer/M5X/M53S_Plus_Plus.py +41 -0
- pyasic/miners/whatsminer/btminer/M5X/M54S_Plus_Plus.py +20 -0
- pyasic/miners/whatsminer/btminer/M5X/M56.py +6 -0
- pyasic/miners/whatsminer/btminer/M5X/M56S.py +20 -0
- pyasic/miners/whatsminer/btminer/M5X/M56S_Plus.py +27 -0
- pyasic/miners/whatsminer/btminer/M5X/M56S_Plus_Plus.py +27 -0
- pyasic/miners/whatsminer/btminer/M5X/M59.py +6 -0
- pyasic/miners/whatsminer/btminer/M5X/__init__.py +118 -0
- pyasic/miners/whatsminer/btminer/M6X/M60.py +69 -0
- pyasic/miners/whatsminer/btminer/M6X/M60S.py +76 -0
- pyasic/miners/whatsminer/btminer/M6X/M60S_Plus.py +69 -0
- pyasic/miners/whatsminer/btminer/M6X/M60S_Plus_Plus.py +13 -0
- pyasic/miners/whatsminer/btminer/M6X/M61.py +62 -0
- pyasic/miners/whatsminer/btminer/M6X/M61S.py +20 -0
- pyasic/miners/whatsminer/btminer/M6X/M61S_Plus.py +6 -0
- pyasic/miners/whatsminer/btminer/M6X/M62S_Plus.py +6 -0
- pyasic/miners/whatsminer/btminer/M6X/M63.py +34 -0
- pyasic/miners/whatsminer/btminer/M6X/M63S.py +48 -0
- pyasic/miners/whatsminer/btminer/M6X/M63S_Plus.py +34 -0
- pyasic/miners/whatsminer/btminer/M6X/M63S_Plus_Plus.py +6 -0
- pyasic/miners/whatsminer/btminer/M6X/M64.py +13 -0
- pyasic/miners/whatsminer/btminer/M6X/M64S.py +6 -0
- pyasic/miners/whatsminer/btminer/M6X/M65S.py +13 -0
- pyasic/miners/whatsminer/btminer/M6X/M65S_Plus.py +6 -0
- pyasic/miners/whatsminer/btminer/M6X/M66.py +27 -0
- pyasic/miners/whatsminer/btminer/M6X/M66S.py +69 -0
- pyasic/miners/whatsminer/btminer/M6X/M66S_Plus.py +41 -0
- pyasic/miners/whatsminer/btminer/M6X/M66S_Plus_Plus.py +6 -0
- pyasic/miners/whatsminer/btminer/M6X/M67S.py +6 -0
- pyasic/miners/whatsminer/btminer/M6X/__init__.py +103 -0
- pyasic/miners/whatsminer/btminer/M7X/M70.py +6 -0
- pyasic/miners/whatsminer/btminer/M7X/__init__.py +1 -0
- pyasic/miners/whatsminer/btminer/__init__.py +5 -0
- pyasic/misc/__init__.py +110 -0
- pyasic/network/__init__.py +216 -0
- pyasic/rpc/__init__.py +24 -0
- pyasic/rpc/antminer.py +36 -0
- pyasic/rpc/base.py +291 -0
- pyasic/rpc/bfgminer.py +181 -0
- pyasic/rpc/bmminer.py +32 -0
- pyasic/rpc/bosminer.py +270 -0
- pyasic/rpc/btminer.py +1102 -0
- pyasic/rpc/ccminer.py +34 -0
- pyasic/rpc/cgminer.py +690 -0
- pyasic/rpc/gcminer.py +178 -0
- pyasic/rpc/luxminer.py +851 -0
- pyasic/rpc/marathon.py +33 -0
- pyasic/rpc/unknown.py +51 -0
- pyasic/settings/__init__.py +64 -0
- pyasic/ssh/__init__.py +17 -0
- pyasic/ssh/antminer.py +16 -0
- pyasic/ssh/base.py +47 -0
- pyasic/ssh/braiins_os.py +95 -0
- pyasic/web/__init__.py +25 -0
- pyasic/web/antminer.py +421 -0
- pyasic/web/auradine.py +442 -0
- pyasic/web/avalonminer.py +108 -0
- pyasic/web/base.py +98 -0
- pyasic/web/braiins_os/__init__.py +2 -0
- pyasic/web/braiins_os/better_monkey.py +93 -0
- pyasic/web/braiins_os/boser.py +498 -0
- pyasic/web/braiins_os/bosminer.py +101 -0
- pyasic/web/braiins_os/proto/__init__.py +0 -0
- pyasic/web/braiins_os/proto/braiins/__init__.py +0 -0
- pyasic/web/braiins_os/proto/braiins/bos/__init__.py +76 -0
- pyasic/web/braiins_os/proto/braiins/bos/v1/__init__.py +3388 -0
- pyasic/web/elphapex.py +224 -0
- pyasic/web/epic.py +167 -0
- pyasic/web/espminer.py +96 -0
- pyasic/web/goldshell.py +145 -0
- pyasic/web/hammer.py +240 -0
- pyasic/web/hiveon.py +213 -0
- pyasic/web/iceriver.py +77 -0
- pyasic/web/innosilicon.py +140 -0
- pyasic/web/luckyminer.py +7 -0
- pyasic/web/marathon.py +147 -0
- pyasic/web/mskminer.py +72 -0
- pyasic/web/vnish.py +157 -0
- pyasic_umhost-0.0.1.dist-info/LICENSE.txt +176 -0
- pyasic_umhost-0.0.1.dist-info/METADATA +325 -0
- pyasic_umhost-0.0.1.dist-info/RECORD +601 -0
- pyasic_umhost-0.0.1.dist-info/WHEEL +4 -0
pyasic/__init__.py
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# ------------------------------------------------------------------------------
|
|
2
|
+
# Copyright 2022 Upstream Data Inc -
|
|
3
|
+
# -
|
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License"); -
|
|
5
|
+
# you may not use this file except in compliance with the License. -
|
|
6
|
+
# You may obtain a copy of the License at -
|
|
7
|
+
# -
|
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0 -
|
|
9
|
+
# -
|
|
10
|
+
# Unless required by applicable law or agreed to in writing, software -
|
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS, -
|
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -
|
|
13
|
+
# See the License for the specific language governing permissions and -
|
|
14
|
+
# limitations under the License. -
|
|
15
|
+
# ------------------------------------------------------------------------------
|
|
16
|
+
import importlib.metadata
|
|
17
|
+
|
|
18
|
+
from pyasic import settings
|
|
19
|
+
from pyasic.config import MinerConfig
|
|
20
|
+
from pyasic.data import MinerData
|
|
21
|
+
from pyasic.errors import APIError, APIWarning
|
|
22
|
+
from pyasic.miners import *
|
|
23
|
+
from pyasic.network import MinerNetwork
|
|
24
|
+
from pyasic.rpc import *
|
|
25
|
+
from pyasic.ssh import *
|
|
26
|
+
from pyasic.web import *
|
|
27
|
+
|
|
28
|
+
__version__ = importlib.metadata.version("pyasic-umhost")
|
|
@@ -0,0 +1,348 @@
|
|
|
1
|
+
# ------------------------------------------------------------------------------
|
|
2
|
+
# Copyright 2022 Upstream Data Inc -
|
|
3
|
+
# -
|
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License"); -
|
|
5
|
+
# you may not use this file except in compliance with the License. -
|
|
6
|
+
# You may obtain a copy of the License at -
|
|
7
|
+
# -
|
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0 -
|
|
9
|
+
# -
|
|
10
|
+
# Unless required by applicable law or agreed to in writing, software -
|
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS, -
|
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -
|
|
13
|
+
# See the License for the specific language governing permissions and -
|
|
14
|
+
# limitations under the License. -
|
|
15
|
+
# ------------------------------------------------------------------------------
|
|
16
|
+
|
|
17
|
+
from pydantic import BaseModel, Field
|
|
18
|
+
|
|
19
|
+
from pyasic.config.fans import FanMode, FanModeConfig, FanModeNormal
|
|
20
|
+
from pyasic.config.mining import MiningMode, MiningModeConfig
|
|
21
|
+
from pyasic.config.mining.scaling import ScalingConfig
|
|
22
|
+
from pyasic.config.pools import PoolConfig
|
|
23
|
+
from pyasic.config.temperature import TemperatureConfig
|
|
24
|
+
from pyasic.misc import merge_dicts
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
class MinerConfig(BaseModel):
|
|
28
|
+
"""Represents the configuration for a miner including pool configuration,
|
|
29
|
+
fan mode, temperature settings, mining mode, and power scaling."""
|
|
30
|
+
|
|
31
|
+
class Config:
|
|
32
|
+
arbitrary_types_allowed = True
|
|
33
|
+
|
|
34
|
+
pools: PoolConfig = Field(default_factory=PoolConfig.default)
|
|
35
|
+
fan_mode: FanMode = Field(default_factory=FanModeConfig.default)
|
|
36
|
+
temperature: TemperatureConfig = Field(default_factory=TemperatureConfig.default)
|
|
37
|
+
mining_mode: MiningMode = Field(default_factory=MiningModeConfig.default)
|
|
38
|
+
|
|
39
|
+
def __getitem__(self, item):
|
|
40
|
+
try:
|
|
41
|
+
return getattr(self, item)
|
|
42
|
+
except AttributeError:
|
|
43
|
+
raise KeyError
|
|
44
|
+
|
|
45
|
+
def as_dict(self) -> dict:
|
|
46
|
+
"""Converts the MinerConfig object to a dictionary."""
|
|
47
|
+
return self.model_dump()
|
|
48
|
+
|
|
49
|
+
def as_am_modern(self, user_suffix: str | None = None) -> dict:
|
|
50
|
+
"""Generates the configuration in the format suitable for modern Antminers."""
|
|
51
|
+
return {
|
|
52
|
+
**self.fan_mode.as_am_modern(),
|
|
53
|
+
"freq-level": "100",
|
|
54
|
+
**self.mining_mode.as_am_modern(),
|
|
55
|
+
**self.pools.as_am_modern(user_suffix=user_suffix),
|
|
56
|
+
**self.temperature.as_am_modern(),
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
def as_hiveon_modern(self, user_suffix: str | None = None) -> dict:
|
|
60
|
+
"""Generates the configuration in the format suitable for modern Hiveon."""
|
|
61
|
+
return {
|
|
62
|
+
**self.fan_mode.as_hiveon_modern(),
|
|
63
|
+
"freq-level": "100",
|
|
64
|
+
**self.mining_mode.as_hiveon_modern(),
|
|
65
|
+
**self.pools.as_hiveon_modern(user_suffix=user_suffix),
|
|
66
|
+
**self.temperature.as_hiveon_modern(),
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
def as_elphapex(self, user_suffix: str | None = None) -> dict:
|
|
70
|
+
"""Generates the configuration in the format suitable for modern Elphapex."""
|
|
71
|
+
return {
|
|
72
|
+
**self.fan_mode.as_elphapex(),
|
|
73
|
+
"fc-freq-level": "100",
|
|
74
|
+
**self.mining_mode.as_elphapex(),
|
|
75
|
+
**self.pools.as_elphapex(user_suffix=user_suffix),
|
|
76
|
+
**self.temperature.as_elphapex(),
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
def as_wm(self, user_suffix: str | None = None) -> dict:
|
|
80
|
+
"""Generates the configuration in the format suitable for Whatsminers."""
|
|
81
|
+
return {
|
|
82
|
+
**self.fan_mode.as_wm(),
|
|
83
|
+
**self.mining_mode.as_wm(),
|
|
84
|
+
**self.pools.as_wm(user_suffix=user_suffix),
|
|
85
|
+
**self.temperature.as_wm(),
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
def as_am_old(self, user_suffix: str | None = None) -> dict:
|
|
89
|
+
"""Generates the configuration in the format suitable for old versions of Antminers."""
|
|
90
|
+
return {
|
|
91
|
+
**self.fan_mode.as_am_old(),
|
|
92
|
+
**self.mining_mode.as_am_old(),
|
|
93
|
+
**self.pools.as_am_old(user_suffix=user_suffix),
|
|
94
|
+
**self.temperature.as_am_old(),
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
def as_goldshell(self, user_suffix: str | None = None) -> dict:
|
|
98
|
+
"""Generates the configuration in the format suitable for Goldshell miners."""
|
|
99
|
+
return {
|
|
100
|
+
**self.fan_mode.as_goldshell(),
|
|
101
|
+
**self.mining_mode.as_goldshell(),
|
|
102
|
+
**self.pools.as_goldshell(user_suffix=user_suffix),
|
|
103
|
+
**self.temperature.as_goldshell(),
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
def as_avalon(self, user_suffix: str | None = None) -> dict:
|
|
107
|
+
"""Generates the configuration in the format suitable for Avalonminers."""
|
|
108
|
+
return {
|
|
109
|
+
**self.fan_mode.as_avalon(),
|
|
110
|
+
**self.mining_mode.as_avalon(),
|
|
111
|
+
**self.pools.as_avalon(user_suffix=user_suffix),
|
|
112
|
+
**self.temperature.as_avalon(),
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
def as_inno(self, user_suffix: str | None = None) -> dict:
|
|
116
|
+
"""Generates the configuration in the format suitable for Innosilicon miners."""
|
|
117
|
+
return {
|
|
118
|
+
**self.fan_mode.as_inno(),
|
|
119
|
+
**self.mining_mode.as_inno(),
|
|
120
|
+
**self.pools.as_inno(user_suffix=user_suffix),
|
|
121
|
+
**self.temperature.as_inno(),
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
def as_bosminer(self, user_suffix: str | None = None) -> dict:
|
|
125
|
+
"""Generates the configuration in the bosminer.toml format."""
|
|
126
|
+
return {
|
|
127
|
+
**merge_dicts(self.fan_mode.as_bosminer(), self.temperature.as_bosminer()),
|
|
128
|
+
**self.mining_mode.as_bosminer(),
|
|
129
|
+
**self.pools.as_bosminer(user_suffix=user_suffix),
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
def as_boser(self, user_suffix: str | None = None) -> dict:
|
|
133
|
+
"""Generates the configuration in the format suitable for BOSer."""
|
|
134
|
+
return {
|
|
135
|
+
**self.fan_mode.as_boser(),
|
|
136
|
+
**self.temperature.as_boser(),
|
|
137
|
+
**self.mining_mode.as_boser(),
|
|
138
|
+
**self.pools.as_boser(user_suffix=user_suffix),
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
def as_epic(self, user_suffix: str | None = None) -> dict:
|
|
142
|
+
"""Generates the configuration in the format suitable for ePIC miners."""
|
|
143
|
+
return {
|
|
144
|
+
**merge_dicts(self.fan_mode.as_epic(), self.temperature.as_epic()),
|
|
145
|
+
**self.mining_mode.as_epic(),
|
|
146
|
+
**self.pools.as_epic(user_suffix=user_suffix),
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
def as_auradine(self, user_suffix: str | None = None) -> dict:
|
|
150
|
+
"""Generates the configuration in the format suitable for Auradine miners."""
|
|
151
|
+
return {
|
|
152
|
+
**self.fan_mode.as_auradine(),
|
|
153
|
+
**self.temperature.as_auradine(),
|
|
154
|
+
**self.mining_mode.as_auradine(),
|
|
155
|
+
**self.pools.as_auradine(user_suffix=user_suffix),
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
def as_mara(self, user_suffix: str | None = None) -> dict:
|
|
159
|
+
return {
|
|
160
|
+
**self.fan_mode.as_mara(),
|
|
161
|
+
**self.temperature.as_mara(),
|
|
162
|
+
**self.mining_mode.as_mara(),
|
|
163
|
+
**self.pools.as_mara(user_suffix=user_suffix),
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
def as_espminer(self, user_suffix: str | None = None) -> dict:
|
|
167
|
+
return {
|
|
168
|
+
**self.fan_mode.as_espminer(),
|
|
169
|
+
**self.temperature.as_espminer(),
|
|
170
|
+
**self.mining_mode.as_espminer(),
|
|
171
|
+
**self.pools.as_espminer(user_suffix=user_suffix),
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
def as_luxos(self, user_suffix: str | None = None) -> dict:
|
|
175
|
+
return {
|
|
176
|
+
**self.fan_mode.as_luxos(),
|
|
177
|
+
**self.temperature.as_luxos(),
|
|
178
|
+
**self.mining_mode.as_luxos(),
|
|
179
|
+
**self.pools.as_luxos(user_suffix=user_suffix),
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
def as_vnish(self, user_suffix: str | None = None) -> dict:
|
|
183
|
+
main_cfg = {
|
|
184
|
+
"miner": {
|
|
185
|
+
**self.fan_mode.as_vnish(),
|
|
186
|
+
**self.temperature.as_vnish(),
|
|
187
|
+
**self.mining_mode.as_vnish(),
|
|
188
|
+
**self.pools.as_vnish(user_suffix=user_suffix),
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
if isinstance(self.fan_mode, FanModeNormal):
|
|
192
|
+
main_cfg["miner"]["cooling"]["mode"]["param"] = self.temperature.target
|
|
193
|
+
return main_cfg
|
|
194
|
+
|
|
195
|
+
def as_hammer(self, *args, **kwargs) -> dict:
|
|
196
|
+
return self.as_am_modern(*args, **kwargs)
|
|
197
|
+
|
|
198
|
+
@classmethod
|
|
199
|
+
def from_dict(cls, dict_conf: dict) -> "MinerConfig":
|
|
200
|
+
"""Constructs a MinerConfig object from a dictionary."""
|
|
201
|
+
return cls(
|
|
202
|
+
pools=PoolConfig.from_dict(dict_conf.get("pools")),
|
|
203
|
+
mining_mode=MiningModeConfig.from_dict(dict_conf.get("mining_mode")),
|
|
204
|
+
fan_mode=FanModeConfig.from_dict(dict_conf.get("fan_mode")),
|
|
205
|
+
temperature=TemperatureConfig.from_dict(dict_conf.get("temperature")),
|
|
206
|
+
)
|
|
207
|
+
|
|
208
|
+
@classmethod
|
|
209
|
+
def from_api(cls, api_pools: dict) -> "MinerConfig":
|
|
210
|
+
"""Constructs a MinerConfig object from API pool data."""
|
|
211
|
+
return cls(pools=PoolConfig.from_api(api_pools))
|
|
212
|
+
|
|
213
|
+
@classmethod
|
|
214
|
+
def from_am_modern(cls, web_conf: dict) -> "MinerConfig":
|
|
215
|
+
"""Constructs a MinerConfig object from web configuration for modern Antminers."""
|
|
216
|
+
return cls(
|
|
217
|
+
pools=PoolConfig.from_am_modern(web_conf),
|
|
218
|
+
mining_mode=MiningModeConfig.from_am_modern(web_conf),
|
|
219
|
+
fan_mode=FanModeConfig.from_am_modern(web_conf),
|
|
220
|
+
)
|
|
221
|
+
|
|
222
|
+
@classmethod
|
|
223
|
+
def from_hiveon_modern(cls, web_conf: dict) -> "MinerConfig":
|
|
224
|
+
"""Constructs a MinerConfig object from web configuration for Hiveon."""
|
|
225
|
+
return cls(
|
|
226
|
+
pools=PoolConfig.from_hiveon_modern(web_conf),
|
|
227
|
+
mining_mode=MiningModeConfig.from_hiveon_modern(web_conf),
|
|
228
|
+
fan_mode=FanModeConfig.from_hiveon_modern(web_conf),
|
|
229
|
+
)
|
|
230
|
+
|
|
231
|
+
@classmethod
|
|
232
|
+
def from_elphapex(cls, web_conf: dict) -> "MinerConfig":
|
|
233
|
+
"""Constructs a MinerConfig object from web configuration for modern Antminers."""
|
|
234
|
+
return cls(
|
|
235
|
+
pools=PoolConfig.from_elphapex(web_conf),
|
|
236
|
+
mining_mode=MiningModeConfig.from_elphapex(web_conf),
|
|
237
|
+
fan_mode=FanModeConfig.from_elphapex(web_conf),
|
|
238
|
+
)
|
|
239
|
+
|
|
240
|
+
@classmethod
|
|
241
|
+
def from_am_old(cls, web_conf: dict) -> "MinerConfig":
|
|
242
|
+
"""Constructs a MinerConfig object from web configuration for old versions of Antminers."""
|
|
243
|
+
return cls.from_am_modern(web_conf)
|
|
244
|
+
|
|
245
|
+
@classmethod
|
|
246
|
+
def from_goldshell(cls, web_conf: dict) -> "MinerConfig":
|
|
247
|
+
"""Constructs a MinerConfig object from web configuration for Goldshell miners."""
|
|
248
|
+
return cls(pools=PoolConfig.from_am_modern(web_conf))
|
|
249
|
+
|
|
250
|
+
@classmethod
|
|
251
|
+
def from_inno(cls, web_pools: list) -> "MinerConfig":
|
|
252
|
+
"""Constructs a MinerConfig object from web configuration for Innosilicon miners."""
|
|
253
|
+
return cls(pools=PoolConfig.from_inno(web_pools))
|
|
254
|
+
|
|
255
|
+
@classmethod
|
|
256
|
+
def from_bosminer(cls, toml_conf: dict) -> "MinerConfig":
|
|
257
|
+
"""Constructs a MinerConfig object from the bosminer.toml file, same as the `as_bosminer` dumps a dict for writing to that file as toml."""
|
|
258
|
+
return cls(
|
|
259
|
+
pools=PoolConfig.from_bosminer(toml_conf),
|
|
260
|
+
mining_mode=MiningModeConfig.from_bosminer(toml_conf),
|
|
261
|
+
fan_mode=FanModeConfig.from_bosminer(toml_conf),
|
|
262
|
+
temperature=TemperatureConfig.from_bosminer(toml_conf),
|
|
263
|
+
)
|
|
264
|
+
|
|
265
|
+
@classmethod
|
|
266
|
+
def from_boser(cls, grpc_miner_conf: dict) -> "MinerConfig":
|
|
267
|
+
"""Constructs a MinerConfig object from gRPC configuration for BOSer."""
|
|
268
|
+
return cls(
|
|
269
|
+
pools=PoolConfig.from_boser(grpc_miner_conf),
|
|
270
|
+
mining_mode=MiningModeConfig.from_boser(grpc_miner_conf),
|
|
271
|
+
fan_mode=FanModeConfig.from_boser(grpc_miner_conf),
|
|
272
|
+
temperature=TemperatureConfig.from_boser(grpc_miner_conf),
|
|
273
|
+
)
|
|
274
|
+
|
|
275
|
+
@classmethod
|
|
276
|
+
def from_epic(cls, web_conf: dict) -> "MinerConfig":
|
|
277
|
+
"""Constructs a MinerConfig object from web configuration for ePIC miners."""
|
|
278
|
+
return cls(
|
|
279
|
+
pools=PoolConfig.from_epic(web_conf),
|
|
280
|
+
fan_mode=FanModeConfig.from_epic(web_conf),
|
|
281
|
+
temperature=TemperatureConfig.from_epic(web_conf),
|
|
282
|
+
mining_mode=MiningModeConfig.from_epic(web_conf),
|
|
283
|
+
)
|
|
284
|
+
|
|
285
|
+
@classmethod
|
|
286
|
+
def from_vnish(cls, web_settings: dict, web_presets: list[dict]) -> "MinerConfig":
|
|
287
|
+
"""Constructs a MinerConfig object from web settings for VNish miners."""
|
|
288
|
+
return cls(
|
|
289
|
+
pools=PoolConfig.from_vnish(web_settings),
|
|
290
|
+
fan_mode=FanModeConfig.from_vnish(web_settings),
|
|
291
|
+
temperature=TemperatureConfig.from_vnish(web_settings),
|
|
292
|
+
mining_mode=MiningModeConfig.from_vnish(web_settings, web_presets),
|
|
293
|
+
)
|
|
294
|
+
|
|
295
|
+
@classmethod
|
|
296
|
+
def from_auradine(cls, web_conf: dict) -> "MinerConfig":
|
|
297
|
+
"""Constructs a MinerConfig object from web configuration for Auradine miners."""
|
|
298
|
+
return cls(
|
|
299
|
+
pools=PoolConfig.from_api(web_conf["pools"]),
|
|
300
|
+
fan_mode=FanModeConfig.from_auradine(web_conf["fan"]),
|
|
301
|
+
mining_mode=MiningModeConfig.from_auradine(web_conf["mode"]),
|
|
302
|
+
)
|
|
303
|
+
|
|
304
|
+
@classmethod
|
|
305
|
+
def from_mara(cls, web_miner_config: dict) -> "MinerConfig":
|
|
306
|
+
return cls(
|
|
307
|
+
pools=PoolConfig.from_mara(web_miner_config),
|
|
308
|
+
fan_mode=FanModeConfig.from_mara(web_miner_config),
|
|
309
|
+
mining_mode=MiningModeConfig.from_mara(web_miner_config),
|
|
310
|
+
)
|
|
311
|
+
|
|
312
|
+
@classmethod
|
|
313
|
+
def from_espminer(cls, web_system_info: dict) -> "MinerConfig":
|
|
314
|
+
return cls(
|
|
315
|
+
pools=PoolConfig.from_espminer(web_system_info),
|
|
316
|
+
fan_mode=FanModeConfig.from_espminer(web_system_info),
|
|
317
|
+
)
|
|
318
|
+
|
|
319
|
+
@classmethod
|
|
320
|
+
def from_iceriver(cls, web_userpanel: dict) -> "MinerConfig":
|
|
321
|
+
return cls(
|
|
322
|
+
pools=PoolConfig.from_iceriver(web_userpanel),
|
|
323
|
+
)
|
|
324
|
+
|
|
325
|
+
@classmethod
|
|
326
|
+
def from_luxos(
|
|
327
|
+
cls,
|
|
328
|
+
rpc_tempctrl: dict,
|
|
329
|
+
rpc_fans: dict,
|
|
330
|
+
rpc_pools: dict,
|
|
331
|
+
rpc_groups: dict,
|
|
332
|
+
rpc_config: dict,
|
|
333
|
+
rpc_profiles: dict,
|
|
334
|
+
) -> "MinerConfig":
|
|
335
|
+
return cls(
|
|
336
|
+
temperature=TemperatureConfig.from_luxos(rpc_tempctrl=rpc_tempctrl),
|
|
337
|
+
fan_mode=FanModeConfig.from_luxos(
|
|
338
|
+
rpc_tempctrl=rpc_tempctrl, rpc_fans=rpc_fans
|
|
339
|
+
),
|
|
340
|
+
pools=PoolConfig.from_luxos(rpc_pools=rpc_pools, rpc_groups=rpc_groups),
|
|
341
|
+
mining_mode=MiningModeConfig.from_luxos(
|
|
342
|
+
rpc_config=rpc_config, rpc_profiles=rpc_profiles
|
|
343
|
+
),
|
|
344
|
+
)
|
|
345
|
+
|
|
346
|
+
@classmethod
|
|
347
|
+
def from_hammer(cls, *args, **kwargs) -> "MinerConfig":
|
|
348
|
+
return cls.from_am_modern(*args, **kwargs)
|
pyasic/config/base.py
ADDED
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
# ------------------------------------------------------------------------------
|
|
2
|
+
# Copyright 2022 Upstream Data Inc -
|
|
3
|
+
# -
|
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License"); -
|
|
5
|
+
# you may not use this file except in compliance with the License. -
|
|
6
|
+
# You may obtain a copy of the License at -
|
|
7
|
+
# -
|
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0 -
|
|
9
|
+
# -
|
|
10
|
+
# Unless required by applicable law or agreed to in writing, software -
|
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS, -
|
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -
|
|
13
|
+
# See the License for the specific language governing permissions and -
|
|
14
|
+
# limitations under the License. -
|
|
15
|
+
# ------------------------------------------------------------------------------
|
|
16
|
+
from __future__ import annotations
|
|
17
|
+
|
|
18
|
+
from enum import Enum
|
|
19
|
+
|
|
20
|
+
from pydantic import BaseModel
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
class MinerConfigOption(Enum):
|
|
24
|
+
@classmethod
|
|
25
|
+
def from_dict(cls, dict_conf: dict | None):
|
|
26
|
+
return cls.default()
|
|
27
|
+
|
|
28
|
+
def as_am_modern(self) -> dict:
|
|
29
|
+
return self.value.as_am_modern()
|
|
30
|
+
|
|
31
|
+
def as_hiveon_modern(self) -> dict:
|
|
32
|
+
return self.value.as_hiveon_modern()
|
|
33
|
+
|
|
34
|
+
def as_am_old(self) -> dict:
|
|
35
|
+
return self.value.as_am_old()
|
|
36
|
+
|
|
37
|
+
def as_wm(self) -> dict:
|
|
38
|
+
return self.value.as_wm()
|
|
39
|
+
|
|
40
|
+
def as_inno(self) -> dict:
|
|
41
|
+
return self.value.as_inno()
|
|
42
|
+
|
|
43
|
+
def as_goldshell(self) -> dict:
|
|
44
|
+
return self.value.as_goldshell()
|
|
45
|
+
|
|
46
|
+
def as_avalon(self) -> dict:
|
|
47
|
+
return self.value.as_avalon()
|
|
48
|
+
|
|
49
|
+
def as_bosminer(self) -> dict:
|
|
50
|
+
return self.value.as_bosminer()
|
|
51
|
+
|
|
52
|
+
def as_boser(self) -> dict:
|
|
53
|
+
return self.value.as_boser
|
|
54
|
+
|
|
55
|
+
def as_epic(self) -> dict:
|
|
56
|
+
return self.value.as_epic()
|
|
57
|
+
|
|
58
|
+
def as_vnish(self) -> dict:
|
|
59
|
+
return self.value.as_vnish()
|
|
60
|
+
|
|
61
|
+
def as_auradine(self) -> dict:
|
|
62
|
+
return self.value.as_auradine()
|
|
63
|
+
|
|
64
|
+
def as_mara(self) -> dict:
|
|
65
|
+
return self.value.as_mara()
|
|
66
|
+
|
|
67
|
+
def as_espminer(self) -> dict:
|
|
68
|
+
return self.value.as_espminer()
|
|
69
|
+
|
|
70
|
+
def as_luxos(self) -> dict:
|
|
71
|
+
return self.value.as_luxos()
|
|
72
|
+
|
|
73
|
+
def as_elphapex(self) -> dict:
|
|
74
|
+
return self.value.as_elphapex()
|
|
75
|
+
|
|
76
|
+
def __call__(self, *args, **kwargs):
|
|
77
|
+
return self.value(*args, **kwargs)
|
|
78
|
+
|
|
79
|
+
@classmethod
|
|
80
|
+
def default(cls):
|
|
81
|
+
pass
|
|
82
|
+
|
|
83
|
+
def __getitem__(self, item):
|
|
84
|
+
try:
|
|
85
|
+
return getattr(self, item)
|
|
86
|
+
except AttributeError:
|
|
87
|
+
raise KeyError
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
class MinerConfigValue(BaseModel):
|
|
91
|
+
@classmethod
|
|
92
|
+
def from_dict(cls, dict_conf: dict | None):
|
|
93
|
+
return cls()
|
|
94
|
+
|
|
95
|
+
def as_dict(self) -> dict:
|
|
96
|
+
return self.model_dump()
|
|
97
|
+
|
|
98
|
+
def as_am_modern(self) -> dict:
|
|
99
|
+
return {}
|
|
100
|
+
|
|
101
|
+
def as_hiveon_modern(self) -> dict:
|
|
102
|
+
return {}
|
|
103
|
+
|
|
104
|
+
def as_am_old(self) -> dict:
|
|
105
|
+
return {}
|
|
106
|
+
|
|
107
|
+
def as_wm(self) -> dict:
|
|
108
|
+
return {}
|
|
109
|
+
|
|
110
|
+
def as_inno(self) -> dict:
|
|
111
|
+
return {}
|
|
112
|
+
|
|
113
|
+
def as_goldshell(self) -> dict:
|
|
114
|
+
return {}
|
|
115
|
+
|
|
116
|
+
def as_avalon(self) -> dict:
|
|
117
|
+
return {}
|
|
118
|
+
|
|
119
|
+
def as_bosminer(self) -> dict:
|
|
120
|
+
return {}
|
|
121
|
+
|
|
122
|
+
def as_boser(self) -> dict:
|
|
123
|
+
return {}
|
|
124
|
+
|
|
125
|
+
def as_epic(self) -> dict:
|
|
126
|
+
return {}
|
|
127
|
+
|
|
128
|
+
def as_vnish(self) -> dict:
|
|
129
|
+
return {}
|
|
130
|
+
|
|
131
|
+
def as_auradine(self) -> dict:
|
|
132
|
+
return {}
|
|
133
|
+
|
|
134
|
+
def as_mara(self) -> dict:
|
|
135
|
+
return {}
|
|
136
|
+
|
|
137
|
+
def as_espminer(self) -> dict:
|
|
138
|
+
return {}
|
|
139
|
+
|
|
140
|
+
def as_luxos(self) -> dict:
|
|
141
|
+
return {}
|
|
142
|
+
|
|
143
|
+
def as_elphapex(self) -> dict:
|
|
144
|
+
return {}
|
|
145
|
+
|
|
146
|
+
def __getitem__(self, item):
|
|
147
|
+
try:
|
|
148
|
+
return getattr(self, item)
|
|
149
|
+
except AttributeError:
|
|
150
|
+
raise KeyError
|