pyasic-umhost 0.2.3.dev16__tar.gz → 0.2.4.dev2__tar.gz

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.
Files changed (640) hide show
  1. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/PKG-INFO +3 -4
  2. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/backends/antminer.py +8 -1
  3. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/backends/avalonminer.py +13 -18
  4. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/backends/btminer.py +60 -9
  5. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/backends/vnish.py +291 -29
  6. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/rpc/btminer.py +17 -1
  7. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/web/vnish.py +23 -10
  8. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyproject.toml +2 -7
  9. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/LICENSE.txt +0 -0
  10. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/README.md +0 -0
  11. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/MinerData.md +0 -0
  12. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/__init__.py +0 -0
  13. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/config/__init__.py +0 -0
  14. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/config/base.py +0 -0
  15. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/config/fans.py +0 -0
  16. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/config/frequency.py +0 -0
  17. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/config/mining/__init__.py +0 -0
  18. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/config/mining/algo.py +0 -0
  19. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/config/mining/presets.py +0 -0
  20. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/config/mining/scaling.py +0 -0
  21. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/config/pools.py +0 -0
  22. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/config/temperature.py +0 -0
  23. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/data/__init__.py +0 -0
  24. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/data/boards.py +0 -0
  25. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/data/device.py +0 -0
  26. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/data/error_codes/X19.py +0 -0
  27. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/data/error_codes/__init__.py +0 -0
  28. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/data/error_codes/base.py +0 -0
  29. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/data/error_codes/bos.py +0 -0
  30. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/data/error_codes/innosilicon.py +0 -0
  31. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/data/error_codes/vnish.py +0 -0
  32. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/data/error_codes/whatsminer.py +0 -0
  33. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/data/fans.py +0 -0
  34. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/data/pools.py +0 -0
  35. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/device/__init__.py +0 -0
  36. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/device/algorithm/__init__.py +0 -0
  37. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/device/algorithm/base.py +0 -0
  38. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/device/algorithm/blake256.py +0 -0
  39. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/device/algorithm/blockflow.py +0 -0
  40. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/device/algorithm/eaglesong.py +0 -0
  41. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/device/algorithm/equihash.py +0 -0
  42. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/device/algorithm/ethash.py +0 -0
  43. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/device/algorithm/handshake.py +0 -0
  44. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/device/algorithm/hashrate/__init__.py +0 -0
  45. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/device/algorithm/hashrate/base.py +0 -0
  46. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/device/algorithm/hashrate/blake256.py +0 -0
  47. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/device/algorithm/hashrate/blockflow.py +0 -0
  48. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/device/algorithm/hashrate/eaglesong.py +0 -0
  49. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/device/algorithm/hashrate/equihash.py +0 -0
  50. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/device/algorithm/hashrate/ethash.py +0 -0
  51. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/device/algorithm/hashrate/handshake.py +0 -0
  52. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/device/algorithm/hashrate/kadena.py +0 -0
  53. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/device/algorithm/hashrate/kheavyhash.py +0 -0
  54. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/device/algorithm/hashrate/scrypt.py +0 -0
  55. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/device/algorithm/hashrate/sha256.py +0 -0
  56. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/device/algorithm/hashrate/unit/__init__.py +0 -0
  57. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/device/algorithm/hashrate/unit/base.py +0 -0
  58. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/device/algorithm/hashrate/unit/blake256.py +0 -0
  59. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/device/algorithm/hashrate/unit/blockflow.py +0 -0
  60. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/device/algorithm/hashrate/unit/eaglesong.py +0 -0
  61. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/device/algorithm/hashrate/unit/equihash.py +0 -0
  62. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/device/algorithm/hashrate/unit/ethash.py +0 -0
  63. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/device/algorithm/hashrate/unit/handshake.py +0 -0
  64. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/device/algorithm/hashrate/unit/kadena.py +0 -0
  65. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/device/algorithm/hashrate/unit/kheavyhash.py +0 -0
  66. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/device/algorithm/hashrate/unit/scrypt.py +0 -0
  67. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/device/algorithm/hashrate/unit/sha256.py +0 -0
  68. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/device/algorithm/hashrate/unit/x11.py +0 -0
  69. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/device/algorithm/hashrate/unit/zksnark.py +0 -0
  70. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/device/algorithm/hashrate/x11.py +0 -0
  71. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/device/algorithm/hashrate/zksnark.py +0 -0
  72. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/device/algorithm/kadena.py +0 -0
  73. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/device/algorithm/kheavyhash.py +0 -0
  74. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/device/algorithm/scrypt.py +0 -0
  75. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/device/algorithm/sha256.py +0 -0
  76. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/device/algorithm/x11.py +0 -0
  77. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/device/algorithm/zksnark.py +0 -0
  78. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/device/firmware.py +0 -0
  79. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/device/makes.py +0 -0
  80. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/device/models.py +0 -0
  81. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/errors/__init__.py +0 -0
  82. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/load/__init__.py +0 -0
  83. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/logger/__init__.py +0 -0
  84. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/__init__.py +0 -0
  85. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/antminer/__init__.py +0 -0
  86. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/antminer/bmminer/X15/Z15.py +0 -0
  87. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/antminer/bmminer/X15/__init__.py +0 -0
  88. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/antminer/bmminer/X17/S17.py +0 -0
  89. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/antminer/bmminer/X17/T17.py +0 -0
  90. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/antminer/bmminer/X17/__init__.py +0 -0
  91. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/antminer/bmminer/X19/S19.py +0 -0
  92. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/antminer/bmminer/X19/T19.py +0 -0
  93. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/antminer/bmminer/X19/__init__.py +0 -0
  94. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/antminer/bmminer/X21/S21.py +0 -0
  95. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/antminer/bmminer/X21/T21.py +0 -0
  96. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/antminer/bmminer/X21/__init__.py +0 -0
  97. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/antminer/bmminer/X3/HS3.py +0 -0
  98. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/antminer/bmminer/X3/KA3.py +0 -0
  99. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/antminer/bmminer/X3/KS3.py +0 -0
  100. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/antminer/bmminer/X3/L3.py +0 -0
  101. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/antminer/bmminer/X3/__init__.py +0 -0
  102. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/antminer/bmminer/X5/KS5.py +0 -0
  103. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/antminer/bmminer/X5/__init__.py +0 -0
  104. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/antminer/bmminer/X7/D7.py +0 -0
  105. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/antminer/bmminer/X7/K7.py +0 -0
  106. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/antminer/bmminer/X7/L7.py +0 -0
  107. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/antminer/bmminer/X7/__init__.py +0 -0
  108. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/antminer/bmminer/X9/D9.py +0 -0
  109. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/antminer/bmminer/X9/E9.py +0 -0
  110. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/antminer/bmminer/X9/L9.py +0 -0
  111. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/antminer/bmminer/X9/S9.py +0 -0
  112. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/antminer/bmminer/X9/T9.py +0 -0
  113. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/antminer/bmminer/X9/__init__.py +0 -0
  114. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/antminer/bmminer/__init__.py +0 -0
  115. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/antminer/bosminer/X17/S17.py +0 -0
  116. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/antminer/bosminer/X17/T17.py +0 -0
  117. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/antminer/bosminer/X17/__init__.py +0 -0
  118. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/antminer/bosminer/X19/S19.py +0 -0
  119. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/antminer/bosminer/X19/T19.py +0 -0
  120. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/antminer/bosminer/X19/__init__.py +0 -0
  121. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/antminer/bosminer/X21/S21.py +0 -0
  122. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/antminer/bosminer/X21/T21.py +0 -0
  123. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/antminer/bosminer/X21/__init__.py +0 -0
  124. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/antminer/bosminer/X9/S9.py +0 -0
  125. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/antminer/bosminer/X9/__init__.py +0 -0
  126. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/antminer/bosminer/__init__.py +0 -0
  127. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/antminer/cgminer/X15/Z15.py +0 -0
  128. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/antminer/cgminer/X15/__init__.py +0 -0
  129. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/antminer/cgminer/X3/D3.py +0 -0
  130. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/antminer/cgminer/X3/__init__.py +0 -0
  131. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/antminer/cgminer/X5/DR5.py +0 -0
  132. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/antminer/cgminer/X5/__init__.py +0 -0
  133. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/antminer/cgminer/__init__.py +0 -0
  134. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/antminer/epic/X19/S19.py +0 -0
  135. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/antminer/epic/X19/__init__.py +0 -0
  136. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/antminer/epic/X21/S21.py +0 -0
  137. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/antminer/epic/X21/T21.py +0 -0
  138. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/antminer/epic/X21/__init__.py +0 -0
  139. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/antminer/epic/__init__.py +0 -0
  140. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/antminer/hiveon/X19/S19.py +0 -0
  141. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/antminer/hiveon/X19/T19.py +0 -0
  142. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/antminer/hiveon/X19/__init__.py +0 -0
  143. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/antminer/hiveon/X9/T9.py +0 -0
  144. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/antminer/hiveon/X9/__init__.py +0 -0
  145. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/antminer/hiveon/__init__.py +0 -0
  146. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/antminer/luxos/X19/S19.py +0 -0
  147. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/antminer/luxos/X19/T19.py +0 -0
  148. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/antminer/luxos/X19/__init__.py +0 -0
  149. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/antminer/luxos/X21/S21.py +0 -0
  150. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/antminer/luxos/X21/T21.py +0 -0
  151. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/antminer/luxos/X21/__init__.py +0 -0
  152. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/antminer/luxos/X9/S9.py +0 -0
  153. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/antminer/luxos/X9/__init__.py +0 -0
  154. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/antminer/luxos/__init__.py +0 -0
  155. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/antminer/marathon/X19/S19.py +0 -0
  156. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/antminer/marathon/X19/__init__.py +0 -0
  157. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/antminer/marathon/X21/S21.py +0 -0
  158. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/antminer/marathon/X21/T21.py +0 -0
  159. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/antminer/marathon/X21/__init__.py +0 -0
  160. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/antminer/marathon/__init__.py +0 -0
  161. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/antminer/mskminer/X19/S19.py +0 -0
  162. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/antminer/mskminer/X19/__init__.py +0 -0
  163. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/antminer/mskminer/__init__.py +0 -0
  164. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/antminer/vnish/X17/S17.py +0 -0
  165. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/antminer/vnish/X17/__init__.py +0 -0
  166. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/antminer/vnish/X19/S19.py +0 -0
  167. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/antminer/vnish/X19/T19.py +0 -0
  168. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/antminer/vnish/X19/__init__.py +0 -0
  169. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/antminer/vnish/X21/S21.py +0 -0
  170. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/antminer/vnish/X21/T21.py +0 -0
  171. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/antminer/vnish/X21/__init__.py +0 -0
  172. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/antminer/vnish/X3/L3.py +0 -0
  173. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/antminer/vnish/X3/__init__.py +0 -0
  174. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/antminer/vnish/X7/L7.py +0 -0
  175. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/antminer/vnish/X7/__init__.py +0 -0
  176. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/antminer/vnish/X9/L9.py +0 -0
  177. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/antminer/vnish/X9/__init__.py +0 -0
  178. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/antminer/vnish/__init__.py +0 -0
  179. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/auradine/__init__.py +0 -0
  180. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/auradine/flux/AD/AT1.py +0 -0
  181. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/auradine/flux/AD/AT2.py +0 -0
  182. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/auradine/flux/AD/__init__.py +0 -0
  183. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/auradine/flux/AI/AI2.py +0 -0
  184. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/auradine/flux/AI/AI3.py +0 -0
  185. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/auradine/flux/AI/__init__.py +0 -0
  186. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/auradine/flux/AT/AD2.py +0 -0
  187. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/auradine/flux/AT/AD3.py +0 -0
  188. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/auradine/flux/AT/__init__.py +0 -0
  189. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/auradine/flux/__init__.py +0 -0
  190. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/avalonminer/__init__.py +0 -0
  191. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/avalonminer/cgminer/A10X/A1026.py +0 -0
  192. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/avalonminer/cgminer/A10X/A1047.py +0 -0
  193. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/avalonminer/cgminer/A10X/A1066.py +0 -0
  194. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/avalonminer/cgminer/A10X/__init__.py +0 -0
  195. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/avalonminer/cgminer/A11X/A1126.py +0 -0
  196. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/avalonminer/cgminer/A11X/A1166.py +0 -0
  197. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/avalonminer/cgminer/A11X/__init__.py +0 -0
  198. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/avalonminer/cgminer/A12X/A1246.py +0 -0
  199. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/avalonminer/cgminer/A12X/__init__.py +0 -0
  200. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/avalonminer/cgminer/A13X/A1326.py +0 -0
  201. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/avalonminer/cgminer/A13X/A1346.py +0 -0
  202. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/avalonminer/cgminer/A13X/__init__.py +0 -0
  203. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/avalonminer/cgminer/A15X/A1566.py +0 -0
  204. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/avalonminer/cgminer/A15X/__init__.py +0 -0
  205. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/avalonminer/cgminer/A7X/A721.py +0 -0
  206. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/avalonminer/cgminer/A7X/A741.py +0 -0
  207. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/avalonminer/cgminer/A7X/A761.py +0 -0
  208. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/avalonminer/cgminer/A7X/__init__.py +0 -0
  209. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/avalonminer/cgminer/A8X/A821.py +0 -0
  210. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/avalonminer/cgminer/A8X/A841.py +0 -0
  211. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/avalonminer/cgminer/A8X/A851.py +0 -0
  212. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/avalonminer/cgminer/A8X/__init__.py +0 -0
  213. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/avalonminer/cgminer/A9X/A921.py +0 -0
  214. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/avalonminer/cgminer/A9X/__init__.py +0 -0
  215. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/avalonminer/cgminer/Q/Q.py +0 -0
  216. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/avalonminer/cgminer/Q/__init__.py +0 -0
  217. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/avalonminer/cgminer/__init__.py +0 -0
  218. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/avalonminer/cgminer/mini/__init__.py +0 -0
  219. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/avalonminer/cgminer/mini/mini3.py +0 -0
  220. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/avalonminer/cgminer/nano/__init__.py +0 -0
  221. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/avalonminer/cgminer/nano/nano3.py +0 -0
  222. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/backends/__init__.py +0 -0
  223. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/backends/auradine.py +0 -0
  224. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/backends/bfgminer.py +0 -0
  225. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/backends/bitaxe.py +0 -0
  226. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/backends/bmminer.py +0 -0
  227. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/backends/braiins_os.py +0 -0
  228. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/backends/cgminer.py +0 -0
  229. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/backends/elphapex.py +0 -0
  230. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/backends/epic.py +0 -0
  231. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/backends/espminer.py +0 -0
  232. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/backends/goldshell.py +0 -0
  233. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/backends/hammer.py +0 -0
  234. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/backends/hiveon.py +0 -0
  235. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/backends/iceriver.py +0 -0
  236. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/backends/innosilicon.py +0 -0
  237. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/backends/luckyminer.py +0 -0
  238. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/backends/luxminer.py +0 -0
  239. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/backends/marathon.py +0 -0
  240. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/backends/mskminer.py +0 -0
  241. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/backends/unknown.py +0 -0
  242. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/backends/whatsminer.py +0 -0
  243. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/base.py +0 -0
  244. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/bitaxe/__init__.py +0 -0
  245. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/bitaxe/espminer/BM/BM1366.py +0 -0
  246. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/bitaxe/espminer/BM/BM1368.py +0 -0
  247. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/bitaxe/espminer/BM/BM1370.py +0 -0
  248. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/bitaxe/espminer/BM/BM1397.py +0 -0
  249. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/bitaxe/espminer/BM/__init__.py +0 -0
  250. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/bitaxe/espminer/__init__.py +0 -0
  251. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/blockminer/__init__.py +0 -0
  252. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/blockminer/epic/__init__.py +0 -0
  253. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/blockminer/epic/blockminer/__init__.py +0 -0
  254. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/blockminer/epic/blockminer/blockminer.py +0 -0
  255. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/braiins/__init__.py +0 -0
  256. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/braiins/braiins/BMM/BMM.py +0 -0
  257. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/braiins/braiins/BMM/__init__.py +0 -0
  258. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/braiins/braiins/__init__.py +0 -0
  259. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/data.py +0 -0
  260. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/__init__.py +0 -0
  261. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/firmware.py +0 -0
  262. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/makes.py +0 -0
  263. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/__init__.py +0 -0
  264. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/antminer/X15/Z15.py +0 -0
  265. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/antminer/X15/__init__.py +0 -0
  266. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/antminer/X17/S17.py +0 -0
  267. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/antminer/X17/T17.py +0 -0
  268. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/antminer/X17/__init__.py +0 -0
  269. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/antminer/X19/S19.py +0 -0
  270. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/antminer/X19/T19.py +0 -0
  271. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/antminer/X19/__init__.py +0 -0
  272. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/antminer/X21/S21.py +0 -0
  273. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/antminer/X21/T21.py +0 -0
  274. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/antminer/X21/__init__.py +0 -0
  275. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/antminer/X3/D3.py +0 -0
  276. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/antminer/X3/HS3.py +0 -0
  277. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/antminer/X3/KA3.py +0 -0
  278. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/antminer/X3/KS3.py +0 -0
  279. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/antminer/X3/L3.py +0 -0
  280. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/antminer/X3/__init__.py +0 -0
  281. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/antminer/X5/DR5.py +0 -0
  282. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/antminer/X5/KS5.py +0 -0
  283. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/antminer/X5/__init__.py +0 -0
  284. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/antminer/X7/D7.py +0 -0
  285. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/antminer/X7/K7.py +0 -0
  286. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/antminer/X7/L7.py +0 -0
  287. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/antminer/X7/__init__.py +0 -0
  288. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/antminer/X9/D9.py +0 -0
  289. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/antminer/X9/E9.py +0 -0
  290. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/antminer/X9/L9.py +0 -0
  291. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/antminer/X9/S9.py +0 -0
  292. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/antminer/X9/T9.py +0 -0
  293. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/antminer/X9/__init__.py +0 -0
  294. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/antminer/__init__.py +0 -0
  295. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/auradine/AD/AD2.py +0 -0
  296. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/auradine/AD/AD3.py +0 -0
  297. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/auradine/AD/__init__.py +0 -0
  298. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/auradine/AI/AI2.py +0 -0
  299. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/auradine/AI/AI3.py +0 -0
  300. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/auradine/AI/__init__.py +0 -0
  301. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/auradine/AT/AT1.py +0 -0
  302. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/auradine/AT/AT2.py +0 -0
  303. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/auradine/AT/__init__.py +0 -0
  304. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/auradine/__init__.py +0 -0
  305. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/avalonminer/A10X/A1026.py +0 -0
  306. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/avalonminer/A10X/A1047.py +0 -0
  307. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/avalonminer/A10X/A1066.py +0 -0
  308. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/avalonminer/A10X/__init__.py +0 -0
  309. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/avalonminer/A11X/A1126.py +0 -0
  310. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/avalonminer/A11X/A1166.py +0 -0
  311. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/avalonminer/A11X/__init__.py +0 -0
  312. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/avalonminer/A12X/A1246.py +0 -0
  313. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/avalonminer/A12X/__init__.py +0 -0
  314. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/avalonminer/A13X/A1326.py +0 -0
  315. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/avalonminer/A13X/A1346.py +0 -0
  316. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/avalonminer/A13X/__init__.py +0 -0
  317. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/avalonminer/A15X/A1566.py +0 -0
  318. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/avalonminer/A15X/__init__.py +0 -0
  319. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/avalonminer/A7X/A721.py +0 -0
  320. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/avalonminer/A7X/A741.py +0 -0
  321. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/avalonminer/A7X/A761.py +0 -0
  322. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/avalonminer/A7X/__init__.py +0 -0
  323. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/avalonminer/A8X/A821.py +0 -0
  324. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/avalonminer/A8X/A841.py +0 -0
  325. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/avalonminer/A8X/A851.py +0 -0
  326. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/avalonminer/A8X/__init__.py +0 -0
  327. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/avalonminer/A9X/A921.py +0 -0
  328. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/avalonminer/A9X/__init__.py +0 -0
  329. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/avalonminer/Q/Q.py +0 -0
  330. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/avalonminer/Q/__init__.py +0 -0
  331. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/avalonminer/__init__.py +0 -0
  332. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/avalonminer/mini/__init__.py +0 -0
  333. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/avalonminer/mini/mini3.py +0 -0
  334. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/avalonminer/nano/__init__.py +0 -0
  335. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/avalonminer/nano/nano3.py +0 -0
  336. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/bitaxe/BM/BM1366.py +0 -0
  337. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/bitaxe/BM/BM1368.py +0 -0
  338. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/bitaxe/BM/BM1370.py +0 -0
  339. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/bitaxe/BM/BM1397.py +0 -0
  340. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/bitaxe/BM/__init__.py +0 -0
  341. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/bitaxe/__init__.py +0 -0
  342. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/braiins/BMM/BMM1.py +0 -0
  343. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/braiins/BMM/__init__.py +0 -0
  344. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/braiins/__init__.py +0 -0
  345. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/elphapex/DGX/DG1.py +0 -0
  346. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/elphapex/DGX/__init__.py +0 -0
  347. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/elphapex/__init__.py +0 -0
  348. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/epic/__init__.py +0 -0
  349. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/epic/blockminer/__init__.py +0 -0
  350. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/epic/blockminer/blockminer.py +0 -0
  351. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/goldshell/X5/CK5.py +0 -0
  352. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/goldshell/X5/HS5.py +0 -0
  353. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/goldshell/X5/KD5.py +0 -0
  354. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/goldshell/X5/__init__.py +0 -0
  355. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/goldshell/XBox/KDBox.py +0 -0
  356. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/goldshell/XBox/__init__.py +0 -0
  357. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/goldshell/XMax/KDMax.py +0 -0
  358. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/goldshell/XMax/__init__.py +0 -0
  359. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/goldshell/__init__.py +0 -0
  360. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/goldshell/byte/__init__.py +0 -0
  361. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/goldshell/byte/byte.py +0 -0
  362. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/goldshell/mini_doge/__init__.py +0 -0
  363. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/goldshell/mini_doge/mini_doge.py +0 -0
  364. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/hammer/DX/D10.py +0 -0
  365. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/hammer/DX/__init__.py +0 -0
  366. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/hammer/__init__.py +0 -0
  367. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/iceriver/ALX/AL3.py +0 -0
  368. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/iceriver/ALX/__init__.py +0 -0
  369. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/iceriver/KSX/KS0.py +0 -0
  370. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/iceriver/KSX/KS1.py +0 -0
  371. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/iceriver/KSX/KS2.py +0 -0
  372. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/iceriver/KSX/KS3.py +0 -0
  373. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/iceriver/KSX/KS5.py +0 -0
  374. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/iceriver/KSX/__init__.py +0 -0
  375. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/iceriver/__init__.py +0 -0
  376. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/innosilicon/A10X/A10X.py +0 -0
  377. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/innosilicon/A10X/__init__.py +0 -0
  378. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/innosilicon/A11X/A11.py +0 -0
  379. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/innosilicon/A11X/A11M.py +0 -0
  380. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/innosilicon/A11X/__init__.py +0 -0
  381. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/innosilicon/T3X/T3H.py +0 -0
  382. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/innosilicon/T3X/__init__.py +0 -0
  383. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/innosilicon/__init__.py +0 -0
  384. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/luckyminer/LV/LV07.py +0 -0
  385. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/luckyminer/LV/LV08.py +0 -0
  386. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/luckyminer/LV/__init__.py +0 -0
  387. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/luckyminer/__init__.py +0 -0
  388. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/volcminer/DX/D1.py +0 -0
  389. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/volcminer/DX/__init__.py +0 -0
  390. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/volcminer/__init__.py +0 -0
  391. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/whatsminer/M2X/M20.py +0 -0
  392. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/whatsminer/M2X/M20P.py +0 -0
  393. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/whatsminer/M2X/M20S.py +0 -0
  394. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/whatsminer/M2X/M20S_Plus.py +0 -0
  395. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/whatsminer/M2X/M21.py +0 -0
  396. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/whatsminer/M2X/M21S.py +0 -0
  397. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/whatsminer/M2X/M21S_Plus.py +0 -0
  398. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/whatsminer/M2X/M29.py +0 -0
  399. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/whatsminer/M2X/__init__.py +0 -0
  400. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/whatsminer/M3X/M30.py +0 -0
  401. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/whatsminer/M3X/M30K.py +0 -0
  402. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/whatsminer/M3X/M30L.py +0 -0
  403. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/whatsminer/M3X/M30S.py +0 -0
  404. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/whatsminer/M3X/M30S_Plus.py +0 -0
  405. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/whatsminer/M3X/M30S_Plus_Plus.py +0 -0
  406. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/whatsminer/M3X/M31.py +0 -0
  407. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/whatsminer/M3X/M31H.py +0 -0
  408. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/whatsminer/M3X/M31L.py +0 -0
  409. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/whatsminer/M3X/M31S.py +0 -0
  410. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/whatsminer/M3X/M31SE.py +0 -0
  411. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/whatsminer/M3X/M31S_Plus.py +0 -0
  412. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/whatsminer/M3X/M32.py +0 -0
  413. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/whatsminer/M3X/M32S.py +0 -0
  414. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/whatsminer/M3X/M33.py +0 -0
  415. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/whatsminer/M3X/M33S.py +0 -0
  416. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/whatsminer/M3X/M33S_Plus.py +0 -0
  417. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/whatsminer/M3X/M33S_Plus_Plus.py +0 -0
  418. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/whatsminer/M3X/M34S_Plus.py +0 -0
  419. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/whatsminer/M3X/M36S.py +0 -0
  420. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/whatsminer/M3X/M36S_Plus.py +0 -0
  421. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/whatsminer/M3X/M36S_Plus_Plus.py +0 -0
  422. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/whatsminer/M3X/M39.py +0 -0
  423. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/whatsminer/M3X/__init__.py +0 -0
  424. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/whatsminer/M5X/M50.py +0 -0
  425. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/whatsminer/M5X/M50S.py +0 -0
  426. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/whatsminer/M5X/M50S_Plus.py +0 -0
  427. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/whatsminer/M5X/M50S_Plus_Plus.py +0 -0
  428. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/whatsminer/M5X/M52S.py +0 -0
  429. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/whatsminer/M5X/M52S_Plus_Plus.py +0 -0
  430. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/whatsminer/M5X/M53.py +0 -0
  431. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/whatsminer/M5X/M53H.py +0 -0
  432. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/whatsminer/M5X/M53S.py +0 -0
  433. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/whatsminer/M5X/M53S_Plus.py +0 -0
  434. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/whatsminer/M5X/M53S_Plus_Plus.py +0 -0
  435. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/whatsminer/M5X/M54S_Plus_Plus.py +0 -0
  436. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/whatsminer/M5X/M56.py +0 -0
  437. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/whatsminer/M5X/M56S.py +0 -0
  438. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/whatsminer/M5X/M56S_Plus.py +0 -0
  439. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/whatsminer/M5X/M56S_Plus_Plus.py +0 -0
  440. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/whatsminer/M5X/M59.py +0 -0
  441. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/whatsminer/M5X/__init__.py +0 -0
  442. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/whatsminer/M6X/M60.py +0 -0
  443. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/whatsminer/M6X/M60S.py +0 -0
  444. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/whatsminer/M6X/M60S_Plus.py +0 -0
  445. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/whatsminer/M6X/M60S_Plus_Plus.py +0 -0
  446. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/whatsminer/M6X/M61.py +0 -0
  447. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/whatsminer/M6X/M61S.py +0 -0
  448. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/whatsminer/M6X/M61S_Plus.py +0 -0
  449. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/whatsminer/M6X/M62S_Plus.py +0 -0
  450. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/whatsminer/M6X/M63.py +0 -0
  451. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/whatsminer/M6X/M63S.py +0 -0
  452. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/whatsminer/M6X/M63S_Plus.py +0 -0
  453. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/whatsminer/M6X/M63S_Plus_Plus.py +0 -0
  454. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/whatsminer/M6X/M64.py +0 -0
  455. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/whatsminer/M6X/M64S.py +0 -0
  456. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/whatsminer/M6X/M65S.py +0 -0
  457. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/whatsminer/M6X/M65S_Plus.py +0 -0
  458. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/whatsminer/M6X/M66.py +0 -0
  459. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/whatsminer/M6X/M66S.py +0 -0
  460. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/whatsminer/M6X/M66S_Plus.py +0 -0
  461. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/whatsminer/M6X/M66S_Plus_Plus.py +0 -0
  462. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/whatsminer/M6X/M67S.py +0 -0
  463. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/whatsminer/M6X/__init__.py +0 -0
  464. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/whatsminer/M7X/M70.py +0 -0
  465. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/whatsminer/M7X/__init__.py +0 -0
  466. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/device/models/whatsminer/__init__.py +0 -0
  467. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/elphapex/__init__.py +0 -0
  468. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/elphapex/daoge/DGX/DG1.py +0 -0
  469. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/elphapex/daoge/DGX/__init__.py +0 -0
  470. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/elphapex/daoge/__init__.py +0 -0
  471. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/factory.py +0 -0
  472. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/goldshell/__init__.py +0 -0
  473. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/goldshell/bfgminer/X5/CK5.py +0 -0
  474. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/goldshell/bfgminer/X5/HS5.py +0 -0
  475. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/goldshell/bfgminer/X5/KD5.py +0 -0
  476. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/goldshell/bfgminer/X5/__init__.py +0 -0
  477. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/goldshell/bfgminer/XBox/KDBox.py +0 -0
  478. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/goldshell/bfgminer/XBox/__init__.py +0 -0
  479. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/goldshell/bfgminer/XMax/KDMax.py +0 -0
  480. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/goldshell/bfgminer/XMax/__init__.py +0 -0
  481. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/goldshell/bfgminer/__init__.py +0 -0
  482. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/goldshell/bfgminer/byte/__init__.py +0 -0
  483. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/goldshell/bfgminer/byte/byte.py +0 -0
  484. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/goldshell/bfgminer/mini_doge/__init__.py +0 -0
  485. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/goldshell/bfgminer/mini_doge/mini_doge.py +0 -0
  486. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/hammer/__init__.py +0 -0
  487. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/hammer/blackminer/DX/D10.py +0 -0
  488. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/hammer/blackminer/DX/__init__.py +0 -0
  489. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/hammer/blackminer/__init__.py +0 -0
  490. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/iceriver/__init__.py +0 -0
  491. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/iceriver/iceminer/ALX/AL3.py +0 -0
  492. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/iceriver/iceminer/ALX/__init__.py +0 -0
  493. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/iceriver/iceminer/KSX/KS0.py +0 -0
  494. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/iceriver/iceminer/KSX/KS1.py +0 -0
  495. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/iceriver/iceminer/KSX/KS2.py +0 -0
  496. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/iceriver/iceminer/KSX/KS3.py +0 -0
  497. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/iceriver/iceminer/KSX/KS5.py +0 -0
  498. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/iceriver/iceminer/KSX/__init__.py +0 -0
  499. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/iceriver/iceminer/__init__.py +0 -0
  500. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/innosilicon/__init__.py +0 -0
  501. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/innosilicon/cgminer/A10X/A10X.py +0 -0
  502. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/innosilicon/cgminer/A10X/__init__.py +0 -0
  503. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/innosilicon/cgminer/A11X/A11.py +0 -0
  504. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/innosilicon/cgminer/A11X/A11M.py +0 -0
  505. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/innosilicon/cgminer/A11X/__init__.py +0 -0
  506. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/innosilicon/cgminer/T3X/T3H.py +0 -0
  507. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/innosilicon/cgminer/T3X/__init__.py +0 -0
  508. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/innosilicon/cgminer/__init__.py +0 -0
  509. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/listener.py +0 -0
  510. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/luckyminer/__init__.py +0 -0
  511. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/luckyminer/espminer/LV/LV07.py +0 -0
  512. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/luckyminer/espminer/LV/LV08.py +0 -0
  513. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/luckyminer/espminer/LV/__init__.py +0 -0
  514. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/luckyminer/espminer/__init__.py +0 -0
  515. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/volcminer/__init__.py +0 -0
  516. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/volcminer/blackminer/DX/D1.py +0 -0
  517. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/volcminer/blackminer/DX/__init__.py +0 -0
  518. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/volcminer/blackminer/__init__.py +0 -0
  519. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/whatsminer/__init__.py +0 -0
  520. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/whatsminer/btminer/M2X/M20.py +0 -0
  521. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/whatsminer/btminer/M2X/M20P.py +0 -0
  522. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/whatsminer/btminer/M2X/M20S.py +0 -0
  523. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/whatsminer/btminer/M2X/M20S_Plus.py +0 -0
  524. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/whatsminer/btminer/M2X/M21.py +0 -0
  525. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/whatsminer/btminer/M2X/M21S.py +0 -0
  526. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/whatsminer/btminer/M2X/M21S_Plus.py +0 -0
  527. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/whatsminer/btminer/M2X/M29.py +0 -0
  528. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/whatsminer/btminer/M2X/__init__.py +0 -0
  529. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/whatsminer/btminer/M3X/M30.py +0 -0
  530. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/whatsminer/btminer/M3X/M30K.py +0 -0
  531. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/whatsminer/btminer/M3X/M30L.py +0 -0
  532. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/whatsminer/btminer/M3X/M30S.py +0 -0
  533. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/whatsminer/btminer/M3X/M30S_Plus.py +0 -0
  534. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/whatsminer/btminer/M3X/M30S_Plus_Plus.py +0 -0
  535. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/whatsminer/btminer/M3X/M31.py +0 -0
  536. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/whatsminer/btminer/M3X/M31H.py +0 -0
  537. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/whatsminer/btminer/M3X/M31L.py +0 -0
  538. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/whatsminer/btminer/M3X/M31S.py +0 -0
  539. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/whatsminer/btminer/M3X/M31SE.py +0 -0
  540. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/whatsminer/btminer/M3X/M31S_Plus.py +0 -0
  541. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/whatsminer/btminer/M3X/M32.py +0 -0
  542. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/whatsminer/btminer/M3X/M32S.py +0 -0
  543. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/whatsminer/btminer/M3X/M33.py +0 -0
  544. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/whatsminer/btminer/M3X/M33S.py +0 -0
  545. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/whatsminer/btminer/M3X/M33S_Plus.py +0 -0
  546. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/whatsminer/btminer/M3X/M33S_Plus_Plus.py +0 -0
  547. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/whatsminer/btminer/M3X/M34S_Plus.py +0 -0
  548. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/whatsminer/btminer/M3X/M36S.py +0 -0
  549. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/whatsminer/btminer/M3X/M36S_Plus.py +0 -0
  550. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/whatsminer/btminer/M3X/M36S_Plus_Plus.py +0 -0
  551. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/whatsminer/btminer/M3X/M39.py +0 -0
  552. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/whatsminer/btminer/M3X/__init__.py +0 -0
  553. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/whatsminer/btminer/M5X/M50.py +0 -0
  554. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/whatsminer/btminer/M5X/M50S.py +0 -0
  555. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/whatsminer/btminer/M5X/M50S_Plus.py +0 -0
  556. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/whatsminer/btminer/M5X/M50S_Plus_Plus.py +0 -0
  557. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/whatsminer/btminer/M5X/M52S.py +0 -0
  558. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/whatsminer/btminer/M5X/M52S_Plus_Plus.py +0 -0
  559. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/whatsminer/btminer/M5X/M53.py +0 -0
  560. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/whatsminer/btminer/M5X/M53H.py +0 -0
  561. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/whatsminer/btminer/M5X/M53S.py +0 -0
  562. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/whatsminer/btminer/M5X/M53S_Plus.py +0 -0
  563. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/whatsminer/btminer/M5X/M53S_Plus_Plus.py +0 -0
  564. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/whatsminer/btminer/M5X/M54S_Plus_Plus.py +0 -0
  565. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/whatsminer/btminer/M5X/M56.py +0 -0
  566. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/whatsminer/btminer/M5X/M56S.py +0 -0
  567. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/whatsminer/btminer/M5X/M56S_Plus.py +0 -0
  568. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/whatsminer/btminer/M5X/M56S_Plus_Plus.py +0 -0
  569. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/whatsminer/btminer/M5X/M59.py +0 -0
  570. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/whatsminer/btminer/M5X/__init__.py +0 -0
  571. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/whatsminer/btminer/M6X/M60.py +0 -0
  572. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/whatsminer/btminer/M6X/M60S.py +0 -0
  573. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/whatsminer/btminer/M6X/M60S_Plus.py +0 -0
  574. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/whatsminer/btminer/M6X/M60S_Plus_Plus.py +0 -0
  575. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/whatsminer/btminer/M6X/M61.py +0 -0
  576. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/whatsminer/btminer/M6X/M61S.py +0 -0
  577. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/whatsminer/btminer/M6X/M61S_Plus.py +0 -0
  578. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/whatsminer/btminer/M6X/M62S_Plus.py +0 -0
  579. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/whatsminer/btminer/M6X/M63.py +0 -0
  580. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/whatsminer/btminer/M6X/M63S.py +0 -0
  581. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/whatsminer/btminer/M6X/M63S_Plus.py +0 -0
  582. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/whatsminer/btminer/M6X/M63S_Plus_Plus.py +0 -0
  583. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/whatsminer/btminer/M6X/M64.py +0 -0
  584. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/whatsminer/btminer/M6X/M64S.py +0 -0
  585. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/whatsminer/btminer/M6X/M65S.py +0 -0
  586. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/whatsminer/btminer/M6X/M65S_Plus.py +0 -0
  587. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/whatsminer/btminer/M6X/M66.py +0 -0
  588. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/whatsminer/btminer/M6X/M66S.py +0 -0
  589. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/whatsminer/btminer/M6X/M66S_Plus.py +0 -0
  590. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/whatsminer/btminer/M6X/M66S_Plus_Plus.py +0 -0
  591. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/whatsminer/btminer/M6X/M67S.py +0 -0
  592. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/whatsminer/btminer/M6X/__init__.py +0 -0
  593. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/whatsminer/btminer/M7X/M70.py +0 -0
  594. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/whatsminer/btminer/M7X/__init__.py +0 -0
  595. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/miners/whatsminer/btminer/__init__.py +0 -0
  596. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/misc/__init__.py +0 -0
  597. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/network/__init__.py +0 -0
  598. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/rpc/__init__.py +0 -0
  599. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/rpc/antminer.py +0 -0
  600. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/rpc/avalonminer.py +0 -0
  601. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/rpc/base.py +0 -0
  602. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/rpc/bfgminer.py +0 -0
  603. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/rpc/bmminer.py +0 -0
  604. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/rpc/bosminer.py +0 -0
  605. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/rpc/ccminer.py +0 -0
  606. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/rpc/cgminer.py +0 -0
  607. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/rpc/gcminer.py +0 -0
  608. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/rpc/luxminer.py +0 -0
  609. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/rpc/marathon.py +0 -0
  610. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/rpc/unknown.py +0 -0
  611. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/settings/__init__.py +0 -0
  612. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/ssh/__init__.py +0 -0
  613. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/ssh/antminer.py +0 -0
  614. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/ssh/base.py +0 -0
  615. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/ssh/braiins_os.py +0 -0
  616. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/test.py +0 -0
  617. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/web/__init__.py +0 -0
  618. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/web/antminer.py +0 -0
  619. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/web/auradine.py +0 -0
  620. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/web/avalonminer.py +0 -0
  621. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/web/base.py +0 -0
  622. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/web/braiins_os/__init__.py +0 -0
  623. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/web/braiins_os/better_monkey.py +0 -0
  624. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/web/braiins_os/boser.py +0 -0
  625. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/web/braiins_os/bosminer.py +0 -0
  626. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/web/braiins_os/proto/__init__.py +0 -0
  627. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/web/braiins_os/proto/braiins/__init__.py +0 -0
  628. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/web/braiins_os/proto/braiins/bos/__init__.py +0 -0
  629. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/web/braiins_os/proto/braiins/bos/v1/__init__.py +0 -0
  630. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/web/elphapex.py +0 -0
  631. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/web/epic.py +0 -0
  632. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/web/espminer.py +0 -0
  633. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/web/goldshell.py +0 -0
  634. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/web/hammer.py +0 -0
  635. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/web/hiveon.py +0 -0
  636. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/web/iceriver.py +0 -0
  637. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/web/innosilicon.py +0 -0
  638. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/web/luckyminer.py +0 -0
  639. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/web/marathon.py +0 -0
  640. {pyasic_umhost-0.2.3.dev16 → pyasic_umhost-0.2.4.dev2}/pyasic/web/mskminer.py +0 -0
@@ -1,9 +1,8 @@
1
- Metadata-Version: 2.4
1
+ Metadata-Version: 2.3
2
2
  Name: pyasic-umhost
3
- Version: 0.2.3.dev16
4
- Summary: A simplified and standardized interface for Bitcoin ASICs.
3
+ Version: 0.2.4.dev2
4
+ Summary: Fork of pyasic — a simplified and standardized interface for Bitcoin ASICs.
5
5
  License: Apache 2.0
6
- License-File: LICENSE.txt
7
6
  Keywords: python,asic,bitcoin,whatsminer,antminer,braiins-os,vnish,luxos
8
7
  Author: UpstreamData
9
8
  Author-email: brett@upstreamdata.ca
@@ -17,7 +17,7 @@
17
17
  import logging
18
18
  from pathlib import Path
19
19
 
20
- from pyasic.config import MinerConfig, MiningModeConfig, PoolConfig
20
+ from pyasic.config import MinerConfig, MiningModeConfig, MiningModeSleep, PoolConfig
21
21
  from pyasic.data import Fan, HashBoard
22
22
  from pyasic.data.error_codes import X19Error
23
23
  from pyasic.data.pools import PoolMetrics, PoolUrl
@@ -227,13 +227,20 @@ class AntminerModern(BMMiner):
227
227
  return False
228
228
 
229
229
  async def stop_mining(self) -> bool:
230
+ # send_config -> set_miner_conf.cgi на стоковой прошивке Antminer
231
+ # применяется через системный reboot. Не пушим конфиг, если режим
232
+ # уже sleep — иначе получим лишнюю перезагрузку устройства.
230
233
  cfg = await self.get_config()
234
+ if isinstance(cfg.mining_mode, MiningModeSleep):
235
+ return True
231
236
  cfg.mining_mode = MiningModeConfig.sleep()
232
237
  await self.send_config(cfg)
233
238
  return True
234
239
 
235
240
  async def resume_mining(self) -> bool:
236
241
  cfg = await self.get_config()
242
+ if not isinstance(cfg.mining_mode, MiningModeSleep):
243
+ return True
237
244
  cfg.mining_mode = MiningModeConfig.normal()
238
245
  await self.send_config(cfg)
239
246
  return True
@@ -17,7 +17,7 @@ import copy
17
17
  import re
18
18
  import time
19
19
 
20
- import requests
20
+ import httpx
21
21
 
22
22
  from pyasic.config import PoolConfig
23
23
  from pyasic.data import Fan, HashBoard
@@ -159,6 +159,11 @@ class AvalonMiner(CGMiner):
159
159
  return False
160
160
 
161
161
  async def resume_mining(self) -> bool:
162
+ # ascset(0, "reboot", 1) перезагружает MM-контроллер Avalon
163
+ # (BOOTBY = AM_BOOTBY_API). Шлём только если устройство реально
164
+ # в SoftOFF — иначе это бессмысленный ребут уже мающего майнера.
165
+ if not await self._is_sleep():
166
+ return True
162
167
  try:
163
168
  data = await self.rpc.ascset(0, f"reboot", 1)
164
169
  except APIError:
@@ -559,19 +564,14 @@ class AvalonMiner(CGMiner):
559
564
  return None
560
565
 
561
566
  async def set_pools(self, pools: PoolConfig) -> bool:
562
- """Настройка пулов на Avalon 1346 через cgconf.cgi (синхронная версия)"""
567
+ """Настройка пулов на Avalon через cgconf.cgi."""
563
568
  try:
564
- # Получаем список пулов
565
569
  all_pools = []
566
570
  for group in pools.groups:
567
571
  all_pools.extend(group.pools)
568
-
569
- # Берем первые 3 пула
570
572
  active_pools = all_pools[:3]
571
573
 
572
- # Формируем данные
573
- form_data = {}
574
-
574
+ form_data: dict[str, str] = {}
575
575
  for i in range(3):
576
576
  idx = i + 1
577
577
  if i < len(active_pools):
@@ -587,24 +587,19 @@ class AvalonMiner(CGMiner):
587
587
  form_data["mode"] = "1"
588
588
  form_data["power_level"] = "0"
589
589
 
590
- # Отправляем POST запрос
591
590
  url = f"http://{self.ip}/cgconf.cgi"
592
-
593
591
  headers = {
594
592
  "Content-Type": "application/x-www-form-urlencoded",
595
593
  "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36",
596
594
  "Origin": f"http://{self.ip}",
597
- "Referer": f"http://{self.ip}/"
595
+ "Referer": f"http://{self.ip}/",
598
596
  }
599
597
 
600
598
  try:
601
- response = requests.post(url, data=form_data, headers=headers, timeout=10)
602
-
603
- if response.status_code == 200:
604
- return True
605
- else:
606
- return False
607
- except Exception:
599
+ async with httpx.AsyncClient(timeout=10) as client:
600
+ response = await client.post(url, data=form_data, headers=headers)
601
+ return response.status_code == 200
602
+ except httpx.HTTPError:
608
603
  return False
609
604
 
610
605
  except Exception:
@@ -21,7 +21,6 @@ import semver
21
21
  from playwright.async_api import async_playwright
22
22
 
23
23
  from pyasic import settings
24
- from pyasic.rpc.cgminer import CGMinerRPCAPI
25
24
  from pyasic.config import MinerConfig, MiningModeConfig, PoolConfig
26
25
  from pyasic.data import Fan, HashBoard
27
26
  from pyasic.data.error_codes import MinerErrorData, WhatsminerError
@@ -31,6 +30,7 @@ from pyasic.errors import APIError
31
30
  from pyasic.miners.data import DataFunction, DataLocations, DataOptions, RPCAPICommand
32
31
  from pyasic.miners.device.firmware import StockFirmware
33
32
  from pyasic.rpc.btminer import BTMinerRPCAPI, BTMinerV3RPCAPI
33
+ from pyasic.rpc.cgminer import CGMinerRPCAPI
34
34
 
35
35
 
36
36
  class BTMiner(StockFirmware):
@@ -113,6 +113,13 @@ BTMINER_DATA_LOC = DataLocations(
113
113
  "_get_serial_number",
114
114
  [RPCAPICommand("rpc_get_miner_info", "get_miner_info")],
115
115
  ),
116
+ str(DataOptions.PSU_SERIAL_NUMBER): DataFunction(
117
+ "_get_psu_serial_number",
118
+ [
119
+ RPCAPICommand("rpc_get_psu", "get_psu"),
120
+ RPCAPICommand("rpc_get_miner_info", "get_miner_info"),
121
+ ],
122
+ ),
116
123
  str(DataOptions.FANS): DataFunction(
117
124
  "_get_fans",
118
125
  [
@@ -649,6 +656,40 @@ class BTMinerV2(StockFirmware):
649
656
  pass
650
657
  return None
651
658
 
659
+ async def _get_psu_serial_number(
660
+ self,
661
+ rpc_get_psu: dict | None = None,
662
+ rpc_get_miner_info: dict | None = None,
663
+ ) -> str | None:
664
+ if rpc_get_psu is None:
665
+ try:
666
+ rpc_get_psu = await self.rpc.get_psu()
667
+ except APIError:
668
+ pass
669
+
670
+ if rpc_get_psu is not None:
671
+ try:
672
+ sn = rpc_get_psu["Msg"]["serial_no"]
673
+ if sn:
674
+ return sn
675
+ except LookupError:
676
+ pass
677
+
678
+ if rpc_get_miner_info is None:
679
+ try:
680
+ rpc_get_miner_info = await self.rpc.get_miner_info()
681
+ except APIError:
682
+ pass
683
+
684
+ if rpc_get_miner_info is not None:
685
+ try:
686
+ sn = rpc_get_miner_info["Msg"]["powersn"]
687
+ if sn:
688
+ return sn
689
+ except LookupError:
690
+ pass
691
+ return None
692
+
652
693
  async def _get_expected_hashrate(
653
694
  self, rpc_summary: dict | None = None
654
695
  ) -> AlgoHashRateType | None:
@@ -894,7 +935,8 @@ BTMINERV3_DATA_LOC = DataLocations(
894
935
  [RPCAPICommand("rpc_get_miner_status_summary", "get.miner.status:summary")],
895
936
  ),
896
937
  str(DataOptions.FAN_PSU): DataFunction(
897
- "_get_psu_fans", [RPCAPICommand("rpc_get_device_info", "get.device.info")]
938
+
939
+ "_get_fan_psu", [RPCAPICommand("rpc_get_device_info", "get.device.info")]
898
940
  ),
899
941
  str(DataOptions.ERRORS): DataFunction(
900
942
  "_get_errors",
@@ -1169,16 +1211,25 @@ class BTMinerV3(StockFirmware):
1169
1211
  fans.append(Fan(speed=rpm))
1170
1212
  return fans
1171
1213
 
1172
- async def _get_psu_fans(self, rpc_get_device_info: dict | None = None) -> list[Fan]:
1214
+ async def _get_fan_psu(
1215
+ self, rpc_get_device_info: dict | None = None
1216
+ ) -> int | None:
1173
1217
  if rpc_get_device_info is None:
1174
1218
  try:
1175
1219
  rpc_get_device_info = await self.rpc.get_device_info()
1176
1220
  except APIError:
1177
- return []
1178
- if rpc_get_device_info is None:
1179
- return []
1180
- rpm = rpc_get_device_info.get("msg", {}).get("power", {}).get("fanspeed")
1181
- return [Fan(speed=rpm)] if rpm is not None else []
1221
+ return None
1222
+ if not isinstance(rpc_get_device_info, dict):
1223
+ return None
1224
+ rpm = (
1225
+ rpc_get_device_info.get("msg", {}).get("power", {}).get("fanspeed")
1226
+ )
1227
+ if rpm is None:
1228
+ return None
1229
+ try:
1230
+ return int(rpm)
1231
+ except (TypeError, ValueError):
1232
+ return None
1182
1233
 
1183
1234
  async def _get_errors(
1184
1235
  self, rpc_get_device_info: dict | None = None
@@ -1508,7 +1559,7 @@ class BTMinerV3(StockFirmware):
1508
1559
  # print("Пулы обновлены")
1509
1560
  return True
1510
1561
 
1511
- except Exception as e:
1562
+ except Exception:
1512
1563
  # print(f"Ошибка: {e}")
1513
1564
  return False
1514
1565
  finally:
@@ -14,11 +14,14 @@
14
14
  # limitations under the License. -
15
15
  # ------------------------------------------------------------------------------
16
16
 
17
+ import asyncio
17
18
  import logging
18
19
 
19
20
  from pyasic import MinerConfig
20
21
  from pyasic.config.mining import MiningModePreset
22
+ from pyasic.data import Fan, HashBoard
21
23
  from pyasic.data.error_codes import VnishError
24
+ from pyasic.data.pools import PoolMetrics, PoolUrl
22
25
  from pyasic.device.algorithm import AlgoHashRateType
23
26
  from pyasic.errors import APIError
24
27
  from pyasic.miners.backends.bmminer import BMMiner
@@ -32,8 +35,31 @@ from pyasic.miners.data import (
32
35
  from pyasic.miners.device.firmware import VNishFirmware
33
36
  from pyasic.web.vnish import VNishWebAPI
34
37
 
38
+ _POOL_ALIVE_STATUSES = {"active", "working", "rejecting"}
39
+ _HASHBOARD_ACTIVE_STATES = {"mining", "initializing"}
40
+ _VNISH_STOPPED_STATES = {"stopped", "shutting-down", "failure"}
41
+
42
+
43
+ def _parse_pool_url(url: str | None) -> PoolUrl | None:
44
+ if not url:
45
+ return None
46
+ pu = PoolUrl.from_str(url)
47
+ if pu is not None:
48
+ return pu
49
+ # VNish sometimes returns the URL без схемы
50
+ return PoolUrl.from_str(f"stratum+tcp://{url}")
51
+
52
+
35
53
  VNISH_DATA_LOC = DataLocations(
36
54
  **{
55
+ str(DataOptions.SERIAL_NUMBER): DataFunction(
56
+ "_get_serial_number",
57
+ [WebAPICommand("web_info", "info")],
58
+ ),
59
+ str(DataOptions.PSU_SERIAL_NUMBER): DataFunction(
60
+ "_get_psu_serial_number",
61
+ [WebAPICommand("web_factory_info", "chains/factory-info")],
62
+ ),
37
63
  str(DataOptions.MAC): DataFunction(
38
64
  "_get_mac",
39
65
  [WebAPICommand("web_summary", "summary")],
@@ -60,7 +86,11 @@ VNISH_DATA_LOC = DataLocations(
60
86
  ),
61
87
  str(DataOptions.HASHBOARDS): DataFunction(
62
88
  "_get_hashboards",
63
- [RPCAPICommand("rpc_stats", "stats")],
89
+ [
90
+ RPCAPICommand("rpc_stats", "stats"),
91
+ WebAPICommand("web_summary", "summary"),
92
+ WebAPICommand("web_factory_info", "chains/factory-info"),
93
+ ],
64
94
  ),
65
95
  str(DataOptions.WATTAGE): DataFunction(
66
96
  "_get_wattage",
@@ -72,7 +102,14 @@ VNISH_DATA_LOC = DataLocations(
72
102
  ),
73
103
  str(DataOptions.FANS): DataFunction(
74
104
  "_get_fans",
75
- [RPCAPICommand("rpc_stats", "stats")],
105
+ [
106
+ RPCAPICommand("rpc_stats", "stats"),
107
+ WebAPICommand("web_summary", "summary"),
108
+ ],
109
+ ),
110
+ str(DataOptions.FAULT_LIGHT): DataFunction(
111
+ "_get_fault_light",
112
+ [WebAPICommand("web_status", "status")],
76
113
  ),
77
114
  str(DataOptions.UPTIME): DataFunction(
78
115
  "_get_uptime",
@@ -88,7 +125,10 @@ VNISH_DATA_LOC = DataLocations(
88
125
  ),
89
126
  str(DataOptions.POOLS): DataFunction(
90
127
  "_get_pools",
91
- [RPCAPICommand("rpc_pools", "pools")],
128
+ [
129
+ RPCAPICommand("rpc_pools", "pools"),
130
+ WebAPICommand("web_summary", "summary"),
131
+ ],
92
132
  ),
93
133
  str(DataOptions.ERRORS): DataFunction(
94
134
  "_get_errors",
@@ -117,40 +157,78 @@ class VNish(VNishFirmware, BMMiner):
117
157
  miner_settings=config.as_vnish(user_suffix=user_suffix)
118
158
  )
119
159
 
120
- async def restart_backend(self) -> bool:
121
- data = await self.web.restart_vnish()
122
- if data:
160
+ async def _wait_for_mining_state(
161
+ self,
162
+ *,
163
+ expect_stopped: bool,
164
+ timeout: float = 8.0,
165
+ interval: float = 0.5,
166
+ ) -> bool:
167
+ """Опрашивает /status и ждёт, пока miner_state перейдёт в нужный класс.
168
+
169
+ VNish обычно отвечает 200 с пустым телом на mining/{stop,resume,...} —
170
+ одного «успеха» от send_command для подтверждения мало, нужно
171
+ дождаться, что miner_state действительно перешёл в требуемый режим.
172
+ """
173
+ iterations = max(1, int(timeout / interval) + 1)
174
+ observed_state: str | None = None
175
+ for i in range(iterations):
176
+ if i > 0:
177
+ await asyncio.sleep(interval)
123
178
  try:
124
- return data["success"]
125
- except KeyError:
126
- pass
179
+ status = await self.web.status()
180
+ except APIError:
181
+ status = None
182
+ state = status.get("miner_state") if isinstance(status, dict) else None
183
+ if isinstance(state, str):
184
+ observed_state = state
185
+ if (state in _VNISH_STOPPED_STATES) == expect_stopped:
186
+ return True
187
+ logging.warning(
188
+ "%s: ожидалось %s состояние, последнее наблюдённое: %r",
189
+ self,
190
+ "stopped" if expect_stopped else "running",
191
+ observed_state,
192
+ )
127
193
  return False
128
194
 
195
+ async def restart_backend(self) -> bool:
196
+ try:
197
+ await self.web.restart_vnish()
198
+ except APIError as exc:
199
+ logging.debug("%s restart_backend: %s — проверяю состояние", self, exc)
200
+ # restart должен в итоге вернуть майнер в работающее состояние
201
+ # (через restarting/starting → mining)
202
+ return await self._wait_for_mining_state(
203
+ expect_stopped=False, timeout=15.0, interval=1.0
204
+ )
205
+
129
206
  async def stop_mining(self) -> bool:
130
- data = await self.web.stop_mining()
131
- if data:
132
- try:
133
- return data["success"]
134
- except KeyError:
135
- pass
136
- return False
207
+ try:
208
+ await self.web.stop_mining()
209
+ except APIError as exc:
210
+ # VNish часто отвечает пустым телом — это нормально, верифицируем
211
+ logging.debug("%s stop_mining: %s — проверяю состояние", self, exc)
212
+ return await self._wait_for_mining_state(expect_stopped=True)
137
213
 
138
214
  async def resume_mining(self) -> bool:
139
- data = await self.web.resume_mining()
140
- if data:
141
- try:
142
- return data["success"]
143
- except KeyError:
144
- pass
145
- return False
215
+ try:
216
+ await self.web.resume_mining()
217
+ except APIError as exc:
218
+ logging.debug("%s resume_mining: %s — проверяю состояние", self, exc)
219
+ return await self._wait_for_mining_state(expect_stopped=False)
146
220
 
147
221
  async def reboot(self) -> bool:
148
- data = await self.web.reboot()
149
- if data:
150
- try:
151
- return data["success"]
152
- except KeyError:
153
- pass
222
+ try:
223
+ data = await self.web.reboot()
224
+ except APIError as exc:
225
+ # /system/reboot часто рвёт соединение до отправки ответа — это норма
226
+ logging.debug("%s reboot: соединение оборвано: %s", self, exc)
227
+ return True
228
+ if isinstance(data, dict):
229
+ # ответ либо {"after": int} (по спеке), либо {"success": True} (наш фоллбэк
230
+ # для пустого тела). Оба варианта — успех.
231
+ return bool(data.get("success", True) or "after" in data)
154
232
  return False
155
233
 
156
234
  async def _get_mac(self, web_summary: dict | None = None) -> str | None:
@@ -411,3 +489,187 @@ class VNish(VNishFirmware, BMMiner):
411
489
 
412
490
  async def _get_kernel_log(self) -> str | None:
413
491
  return await self.web.get_log()
492
+
493
+ async def _get_serial_number(
494
+ self, web_info: dict | None = None
495
+ ) -> str | None:
496
+ if web_info is None:
497
+ try:
498
+ web_info = await self.web.info()
499
+ except APIError:
500
+ return None
501
+ if isinstance(web_info, dict):
502
+ serial = web_info.get("serial")
503
+ if isinstance(serial, str) and serial:
504
+ return serial
505
+ return None
506
+
507
+ async def _get_psu_serial_number(
508
+ self, web_factory_info: dict | None = None
509
+ ) -> str | None:
510
+ if web_factory_info is None:
511
+ try:
512
+ web_factory_info = await self.web.factory_info()
513
+ except APIError:
514
+ return None
515
+ if isinstance(web_factory_info, dict):
516
+ psu_serial = web_factory_info.get("psu_serial")
517
+ if isinstance(psu_serial, str) and psu_serial:
518
+ return psu_serial
519
+ return None
520
+
521
+ async def _get_fault_light(
522
+ self, web_status: dict | None = None
523
+ ) -> bool | None:
524
+ if web_status is None:
525
+ try:
526
+ web_status = await self.web.status()
527
+ except APIError:
528
+ return None
529
+ if isinstance(web_status, dict):
530
+ value = web_status.get("find_miner")
531
+ if isinstance(value, bool):
532
+ return value
533
+ return None
534
+
535
+ async def _get_pools( # type: ignore[override]
536
+ self,
537
+ rpc_pools: dict | None = None,
538
+ web_summary: dict | None = None,
539
+ ) -> list[PoolMetrics]:
540
+ if web_summary is None:
541
+ try:
542
+ web_summary = await self.web.summary()
543
+ except APIError:
544
+ web_summary = None
545
+
546
+ if isinstance(web_summary, dict):
547
+ miner = web_summary.get("miner") or {}
548
+ web_pools = miner.get("pools") if isinstance(miner, dict) else None
549
+ if isinstance(web_pools, list) and web_pools:
550
+ pools: list[PoolMetrics] = []
551
+ for item in web_pools:
552
+ if not isinstance(item, dict):
553
+ continue
554
+ status = item.get("status")
555
+ pool_url = _parse_pool_url(item.get("url"))
556
+ pools.append(
557
+ PoolMetrics(
558
+ url=pool_url,
559
+ accepted=item.get("accepted"),
560
+ rejected=item.get("rejected"),
561
+ get_failures=None,
562
+ remote_failures=None,
563
+ active=status == "active",
564
+ alive=isinstance(status, str)
565
+ and status in _POOL_ALIVE_STATUSES,
566
+ index=item.get("id"),
567
+ user=item.get("user"),
568
+ )
569
+ )
570
+ return pools
571
+
572
+ # fallback to cgminer RPC (parent implementation)
573
+ return await super()._get_pools(rpc_pools=rpc_pools)
574
+
575
+ async def _get_hashboards( # type: ignore[override]
576
+ self,
577
+ rpc_stats: dict | None = None,
578
+ web_summary: dict | None = None,
579
+ web_factory_info: dict | None = None,
580
+ ) -> list[HashBoard]:
581
+ boards = await super()._get_hashboards(rpc_stats=rpc_stats)
582
+ boards_by_slot: dict[int, HashBoard] = {b.slot: b for b in boards}
583
+
584
+ # enrich from web summary (chain voltage, status, hydro temps)
585
+ if web_summary is None:
586
+ try:
587
+ web_summary = await self.web.summary()
588
+ except APIError:
589
+ web_summary = None
590
+
591
+ if isinstance(web_summary, dict):
592
+ miner = web_summary.get("miner") or {}
593
+ chains = miner.get("chains") if isinstance(miner, dict) else None
594
+ if isinstance(chains, list):
595
+ for chain in chains:
596
+ if not isinstance(chain, dict):
597
+ continue
598
+ slot = chain.get("id")
599
+ if not isinstance(slot, int):
600
+ continue
601
+ board = boards_by_slot.get(slot)
602
+ if board is None:
603
+ board = HashBoard(
604
+ slot=slot, expected_chips=self.expected_chips
605
+ )
606
+ boards.append(board)
607
+ boards_by_slot[slot] = board
608
+
609
+ voltage = chain.get("voltage")
610
+ if isinstance(voltage, (int, float)):
611
+ board.voltage = float(voltage)
612
+
613
+ state = (chain.get("status") or {}).get("state")
614
+ if isinstance(state, str):
615
+ board.active = state in _HASHBOARD_ACTIVE_STATES
616
+ if state != "disconnected":
617
+ board.missing = False
618
+
619
+ inlet = chain.get("inlet_water_temp")
620
+ if isinstance(inlet, (int, float)):
621
+ board.inlet_temp = float(inlet)
622
+ outlet = chain.get("outlet_water_temp")
623
+ if isinstance(outlet, (int, float)):
624
+ board.outlet_temp = float(outlet)
625
+
626
+ # enrich serial numbers from factory-info
627
+ if web_factory_info is None:
628
+ try:
629
+ web_factory_info = await self.web.factory_info()
630
+ except APIError:
631
+ web_factory_info = None
632
+
633
+ if isinstance(web_factory_info, dict):
634
+ fi_chains = web_factory_info.get("chains")
635
+ if isinstance(fi_chains, list):
636
+ for chain in fi_chains:
637
+ if not isinstance(chain, dict):
638
+ continue
639
+ slot = chain.get("id")
640
+ serial = chain.get("serial")
641
+ if isinstance(slot, int) and isinstance(serial, str) and serial:
642
+ board = boards_by_slot.get(slot)
643
+ if board is not None:
644
+ board.serial_number = serial
645
+
646
+ return boards
647
+
648
+ async def _get_fans( # type: ignore[override]
649
+ self,
650
+ rpc_stats: dict | None = None,
651
+ web_summary: dict | None = None,
652
+ ) -> list[Fan]:
653
+ if web_summary is None:
654
+ try:
655
+ web_summary = await self.web.summary()
656
+ except APIError:
657
+ web_summary = None
658
+
659
+ if isinstance(web_summary, dict):
660
+ miner = web_summary.get("miner") or {}
661
+ cooling = miner.get("cooling") if isinstance(miner, dict) else None
662
+ cooling_fans = (
663
+ cooling.get("fans") if isinstance(cooling, dict) else None
664
+ )
665
+ if isinstance(cooling_fans, list) and cooling_fans:
666
+ return [
667
+ Fan(
668
+ speed=f.get("rpm") if isinstance(f, dict) else None,
669
+ max_speed=f.get("max_rpm") if isinstance(f, dict) else None,
670
+ )
671
+ for f in cooling_fans
672
+ ]
673
+
674
+ # fallback to RPC stats via parent
675
+ return await super()._get_fans(rpc_stats=rpc_stats)
@@ -1211,7 +1211,23 @@ class BTMinerV3RPCAPI(BaseMinerRPCAPI):
1211
1211
  cmd_dict = cmd.model_dump()
1212
1212
  ser = json.dumps(cmd_dict).encode("utf-8")
1213
1213
  header = struct.pack("<I", len(ser))
1214
- return json.loads(await self._send_bytes(header + ser))
1214
+ raw = await self._send_bytes(header + ser)
1215
+ if not raw:
1216
+ # _send_bytes отдаёт b"" если соединение оборвалось до получения
1217
+ # ответа (RST / EOF в _read_bytes). Поднимаем APIError, чтобы
1218
+ # вызывающие _get_* методы могли отработать штатно — иначе
1219
+ # JSONDecodeError утекает наверх и ломает get_data().
1220
+ raise APIError(
1221
+ f"{self} - no data from RPC for command '{command}' "
1222
+ f"(connection reset or EOF)"
1223
+ )
1224
+ try:
1225
+ return json.loads(raw)
1226
+ except json.JSONDecodeError as exc:
1227
+ preview = raw[:80].decode("utf-8", errors="replace")
1228
+ raise APIError(
1229
+ f"{self} - bad JSON for command '{command}': {exc} (got {preview!r})"
1230
+ ) from exc
1215
1231
 
1216
1232
  async def _send_bytes(
1217
1233
  self,