pyasic-umhost 0.0.1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (601) hide show
  1. pyasic/__init__.py +28 -0
  2. pyasic/config/__init__.py +348 -0
  3. pyasic/config/base.py +150 -0
  4. pyasic/config/fans.py +421 -0
  5. pyasic/config/mining/__init__.py +821 -0
  6. pyasic/config/mining/algo.py +66 -0
  7. pyasic/config/mining/presets.py +54 -0
  8. pyasic/config/mining/scaling.py +129 -0
  9. pyasic/config/pools.py +691 -0
  10. pyasic/config/temperature.py +155 -0
  11. pyasic/data/__init__.py +427 -0
  12. pyasic/data/boards.py +67 -0
  13. pyasic/data/device.py +31 -0
  14. pyasic/data/error_codes/X19.py +28 -0
  15. pyasic/data/error_codes/__init__.py +32 -0
  16. pyasic/data/error_codes/base.py +18 -0
  17. pyasic/data/error_codes/bos.py +29 -0
  18. pyasic/data/error_codes/innosilicon.py +62 -0
  19. pyasic/data/error_codes/vnish.py +28 -0
  20. pyasic/data/error_codes/whatsminer.py +526 -0
  21. pyasic/data/fans.py +44 -0
  22. pyasic/data/pools.py +91 -0
  23. pyasic/device/__init__.py +4 -0
  24. pyasic/device/algorithm/__init__.py +26 -0
  25. pyasic/device/algorithm/base.py +23 -0
  26. pyasic/device/algorithm/blake256.py +13 -0
  27. pyasic/device/algorithm/eaglesong.py +13 -0
  28. pyasic/device/algorithm/equihash.py +13 -0
  29. pyasic/device/algorithm/ethash.py +12 -0
  30. pyasic/device/algorithm/handshake.py +13 -0
  31. pyasic/device/algorithm/hashrate/__init__.py +24 -0
  32. pyasic/device/algorithm/hashrate/base.py +95 -0
  33. pyasic/device/algorithm/hashrate/blake256.py +18 -0
  34. pyasic/device/algorithm/hashrate/eaglesong.py +18 -0
  35. pyasic/device/algorithm/hashrate/equihash.py +18 -0
  36. pyasic/device/algorithm/hashrate/ethash.py +18 -0
  37. pyasic/device/algorithm/hashrate/handshake.py +18 -0
  38. pyasic/device/algorithm/hashrate/kadena.py +18 -0
  39. pyasic/device/algorithm/hashrate/kheavyhash.py +18 -0
  40. pyasic/device/algorithm/hashrate/scrypt.py +18 -0
  41. pyasic/device/algorithm/hashrate/sha256.py +18 -0
  42. pyasic/device/algorithm/hashrate/unit/__init__.py +23 -0
  43. pyasic/device/algorithm/hashrate/unit/base.py +71 -0
  44. pyasic/device/algorithm/hashrate/unit/blake256.py +16 -0
  45. pyasic/device/algorithm/hashrate/unit/eaglesong.py +16 -0
  46. pyasic/device/algorithm/hashrate/unit/equihash.py +34 -0
  47. pyasic/device/algorithm/hashrate/unit/ethash.py +16 -0
  48. pyasic/device/algorithm/hashrate/unit/handshake.py +16 -0
  49. pyasic/device/algorithm/hashrate/unit/kadena.py +16 -0
  50. pyasic/device/algorithm/hashrate/unit/kheavyhash.py +16 -0
  51. pyasic/device/algorithm/hashrate/unit/scrypt.py +16 -0
  52. pyasic/device/algorithm/hashrate/unit/sha256.py +16 -0
  53. pyasic/device/algorithm/hashrate/unit/x11.py +16 -0
  54. pyasic/device/algorithm/hashrate/x11.py +18 -0
  55. pyasic/device/algorithm/kadena.py +13 -0
  56. pyasic/device/algorithm/kheavyhash.py +13 -0
  57. pyasic/device/algorithm/scrypt.py +12 -0
  58. pyasic/device/algorithm/sha256.py +13 -0
  59. pyasic/device/algorithm/x11.py +13 -0
  60. pyasic/device/firmware.py +30 -0
  61. pyasic/device/makes.py +37 -0
  62. pyasic/device/models.py +572 -0
  63. pyasic/errors/__init__.py +59 -0
  64. pyasic/load/__init__.py +352 -0
  65. pyasic/logger/__init__.py +46 -0
  66. pyasic/miners/__init__.py +20 -0
  67. pyasic/miners/antminer/__init__.py +25 -0
  68. pyasic/miners/antminer/bmminer/X15/Z15.py +22 -0
  69. pyasic/miners/antminer/bmminer/X15/__init__.py +16 -0
  70. pyasic/miners/antminer/bmminer/X17/S17.py +34 -0
  71. pyasic/miners/antminer/bmminer/X17/T17.py +30 -0
  72. pyasic/miners/antminer/bmminer/X17/__init__.py +18 -0
  73. pyasic/miners/antminer/bmminer/X19/S19.py +104 -0
  74. pyasic/miners/antminer/bmminer/X19/T19.py +22 -0
  75. pyasic/miners/antminer/bmminer/X19/__init__.py +36 -0
  76. pyasic/miners/antminer/bmminer/X21/S21.py +30 -0
  77. pyasic/miners/antminer/bmminer/X21/T21.py +22 -0
  78. pyasic/miners/antminer/bmminer/X21/__init__.py +17 -0
  79. pyasic/miners/antminer/bmminer/X3/HS3.py +22 -0
  80. pyasic/miners/antminer/bmminer/X3/KA3.py +22 -0
  81. pyasic/miners/antminer/bmminer/X3/KS3.py +22 -0
  82. pyasic/miners/antminer/bmminer/X3/L3.py +22 -0
  83. pyasic/miners/antminer/bmminer/X3/__init__.py +19 -0
  84. pyasic/miners/antminer/bmminer/X5/KS5.py +25 -0
  85. pyasic/miners/antminer/bmminer/X5/__init__.py +16 -0
  86. pyasic/miners/antminer/bmminer/X7/D7.py +21 -0
  87. pyasic/miners/antminer/bmminer/X7/K7.py +21 -0
  88. pyasic/miners/antminer/bmminer/X7/L7.py +21 -0
  89. pyasic/miners/antminer/bmminer/X7/__init__.py +18 -0
  90. pyasic/miners/antminer/bmminer/X9/D9.py +22 -0
  91. pyasic/miners/antminer/bmminer/X9/E9.py +22 -0
  92. pyasic/miners/antminer/bmminer/X9/L9.py +22 -0
  93. pyasic/miners/antminer/bmminer/X9/S9.py +30 -0
  94. pyasic/miners/antminer/bmminer/X9/T9.py +22 -0
  95. pyasic/miners/antminer/bmminer/X9/__init__.py +21 -0
  96. pyasic/miners/antminer/bmminer/__init__.py +23 -0
  97. pyasic/miners/antminer/bosminer/X17/S17.py +34 -0
  98. pyasic/miners/antminer/bosminer/X17/T17.py +30 -0
  99. pyasic/miners/antminer/bosminer/X17/__init__.py +18 -0
  100. pyasic/miners/antminer/bosminer/X19/S19.py +89 -0
  101. pyasic/miners/antminer/bosminer/X19/T19.py +22 -0
  102. pyasic/miners/antminer/bosminer/X19/__init__.py +33 -0
  103. pyasic/miners/antminer/bosminer/X21/S21.py +26 -0
  104. pyasic/miners/antminer/bosminer/X21/T21.py +22 -0
  105. pyasic/miners/antminer/bosminer/X21/__init__.py +18 -0
  106. pyasic/miners/antminer/bosminer/X9/S9.py +22 -0
  107. pyasic/miners/antminer/bosminer/X9/__init__.py +17 -0
  108. pyasic/miners/antminer/bosminer/__init__.py +20 -0
  109. pyasic/miners/antminer/cgminer/X15/Z15.py +22 -0
  110. pyasic/miners/antminer/cgminer/X15/__init__.py +16 -0
  111. pyasic/miners/antminer/cgminer/X3/D3.py +21 -0
  112. pyasic/miners/antminer/cgminer/X3/__init__.py +17 -0
  113. pyasic/miners/antminer/cgminer/X5/DR5.py +22 -0
  114. pyasic/miners/antminer/cgminer/X5/__init__.py +16 -0
  115. pyasic/miners/antminer/cgminer/__init__.py +19 -0
  116. pyasic/miners/antminer/epic/X19/S19.py +61 -0
  117. pyasic/miners/antminer/epic/X19/__init__.py +26 -0
  118. pyasic/miners/antminer/epic/X21/S21.py +26 -0
  119. pyasic/miners/antminer/epic/X21/T21.py +22 -0
  120. pyasic/miners/antminer/epic/X21/__init__.py +18 -0
  121. pyasic/miners/antminer/epic/__init__.py +18 -0
  122. pyasic/miners/antminer/hiveon/X19/S19.py +104 -0
  123. pyasic/miners/antminer/hiveon/X19/T19.py +22 -0
  124. pyasic/miners/antminer/hiveon/X19/__init__.py +36 -0
  125. pyasic/miners/antminer/hiveon/X9/T9.py +146 -0
  126. pyasic/miners/antminer/hiveon/X9/__init__.py +17 -0
  127. pyasic/miners/antminer/hiveon/__init__.py +18 -0
  128. pyasic/miners/antminer/luxos/X19/S19.py +49 -0
  129. pyasic/miners/antminer/luxos/X19/T19.py +22 -0
  130. pyasic/miners/antminer/luxos/X19/__init__.py +25 -0
  131. pyasic/miners/antminer/luxos/X21/S21.py +22 -0
  132. pyasic/miners/antminer/luxos/X21/__init__.py +17 -0
  133. pyasic/miners/antminer/luxos/X9/S9.py +22 -0
  134. pyasic/miners/antminer/luxos/X9/__init__.py +17 -0
  135. pyasic/miners/antminer/luxos/__init__.py +19 -0
  136. pyasic/miners/antminer/marathon/X19/S19.py +54 -0
  137. pyasic/miners/antminer/marathon/X19/__init__.py +9 -0
  138. pyasic/miners/antminer/marathon/X21/S21.py +22 -0
  139. pyasic/miners/antminer/marathon/X21/T21.py +22 -0
  140. pyasic/miners/antminer/marathon/X21/__init__.py +2 -0
  141. pyasic/miners/antminer/marathon/__init__.py +2 -0
  142. pyasic/miners/antminer/mskminer/X19/S19.py +24 -0
  143. pyasic/miners/antminer/mskminer/X19/__init__.py +17 -0
  144. pyasic/miners/antminer/mskminer/__init__.py +17 -0
  145. pyasic/miners/antminer/vnish/X17/S17.py +25 -0
  146. pyasic/miners/antminer/vnish/X17/__init__.py +16 -0
  147. pyasic/miners/antminer/vnish/X19/S19.py +74 -0
  148. pyasic/miners/antminer/vnish/X19/T19.py +22 -0
  149. pyasic/miners/antminer/vnish/X19/__init__.py +30 -0
  150. pyasic/miners/antminer/vnish/X21/S21.py +22 -0
  151. pyasic/miners/antminer/vnish/X21/T21.py +22 -0
  152. pyasic/miners/antminer/vnish/X21/__init__.py +18 -0
  153. pyasic/miners/antminer/vnish/X3/L3.py +22 -0
  154. pyasic/miners/antminer/vnish/X3/__init__.py +17 -0
  155. pyasic/miners/antminer/vnish/X7/L7.py +22 -0
  156. pyasic/miners/antminer/vnish/X7/__init__.py +17 -0
  157. pyasic/miners/antminer/vnish/__init__.py +21 -0
  158. pyasic/miners/auradine/__init__.py +1 -0
  159. pyasic/miners/auradine/flux/AD/AT1.py +6 -0
  160. pyasic/miners/auradine/flux/AD/AT2.py +10 -0
  161. pyasic/miners/auradine/flux/AD/__init__.py +2 -0
  162. pyasic/miners/auradine/flux/AI/AI2.py +6 -0
  163. pyasic/miners/auradine/flux/AI/AI3.py +6 -0
  164. pyasic/miners/auradine/flux/AI/__init__.py +2 -0
  165. pyasic/miners/auradine/flux/AT/AD2.py +6 -0
  166. pyasic/miners/auradine/flux/AT/AD3.py +6 -0
  167. pyasic/miners/auradine/flux/AT/__init__.py +2 -0
  168. pyasic/miners/auradine/flux/__init__.py +3 -0
  169. pyasic/miners/avalonminer/__init__.py +17 -0
  170. pyasic/miners/avalonminer/cgminer/A10X/A1026.py +22 -0
  171. pyasic/miners/avalonminer/cgminer/A10X/A1047.py +22 -0
  172. pyasic/miners/avalonminer/cgminer/A10X/A1066.py +22 -0
  173. pyasic/miners/avalonminer/cgminer/A10X/__init__.py +19 -0
  174. pyasic/miners/avalonminer/cgminer/A11X/A1126.py +22 -0
  175. pyasic/miners/avalonminer/cgminer/A11X/A1166.py +22 -0
  176. pyasic/miners/avalonminer/cgminer/A11X/__init__.py +18 -0
  177. pyasic/miners/avalonminer/cgminer/A12X/A1246.py +22 -0
  178. pyasic/miners/avalonminer/cgminer/A12X/__init__.py +17 -0
  179. pyasic/miners/avalonminer/cgminer/A15X/A1566.py +22 -0
  180. pyasic/miners/avalonminer/cgminer/A15X/__init__.py +17 -0
  181. pyasic/miners/avalonminer/cgminer/A7X/A721.py +22 -0
  182. pyasic/miners/avalonminer/cgminer/A7X/A741.py +22 -0
  183. pyasic/miners/avalonminer/cgminer/A7X/A761.py +22 -0
  184. pyasic/miners/avalonminer/cgminer/A7X/__init__.py +19 -0
  185. pyasic/miners/avalonminer/cgminer/A8X/A821.py +22 -0
  186. pyasic/miners/avalonminer/cgminer/A8X/A841.py +22 -0
  187. pyasic/miners/avalonminer/cgminer/A8X/A851.py +22 -0
  188. pyasic/miners/avalonminer/cgminer/A8X/__init__.py +19 -0
  189. pyasic/miners/avalonminer/cgminer/A9X/A921.py +22 -0
  190. pyasic/miners/avalonminer/cgminer/A9X/__init__.py +17 -0
  191. pyasic/miners/avalonminer/cgminer/__init__.py +24 -0
  192. pyasic/miners/avalonminer/cgminer/nano/__init__.py +17 -0
  193. pyasic/miners/avalonminer/cgminer/nano/nano3.py +107 -0
  194. pyasic/miners/backends/__init__.py +38 -0
  195. pyasic/miners/backends/antminer.py +690 -0
  196. pyasic/miners/backends/auradine.py +437 -0
  197. pyasic/miners/backends/avalonminer.py +360 -0
  198. pyasic/miners/backends/bfgminer.py +268 -0
  199. pyasic/miners/backends/bitaxe.py +7 -0
  200. pyasic/miners/backends/bmminer.py +308 -0
  201. pyasic/miners/backends/braiins_os.py +1116 -0
  202. pyasic/miners/backends/btminer.py +738 -0
  203. pyasic/miners/backends/cgminer.py +174 -0
  204. pyasic/miners/backends/elphapex.py +374 -0
  205. pyasic/miners/backends/epic.py +475 -0
  206. pyasic/miners/backends/espminer.py +235 -0
  207. pyasic/miners/backends/goldshell.py +215 -0
  208. pyasic/miners/backends/hammer.py +472 -0
  209. pyasic/miners/backends/hiveon.py +280 -0
  210. pyasic/miners/backends/iceriver.py +251 -0
  211. pyasic/miners/backends/innosilicon.py +405 -0
  212. pyasic/miners/backends/luckyminer.py +7 -0
  213. pyasic/miners/backends/luxminer.py +430 -0
  214. pyasic/miners/backends/marathon.py +353 -0
  215. pyasic/miners/backends/mskminer.py +110 -0
  216. pyasic/miners/backends/unknown.py +124 -0
  217. pyasic/miners/backends/vnish.py +323 -0
  218. pyasic/miners/backends/whatsminer.py +36 -0
  219. pyasic/miners/base.py +597 -0
  220. pyasic/miners/bitaxe/__init__.py +1 -0
  221. pyasic/miners/bitaxe/espminer/BM/BM1366.py +6 -0
  222. pyasic/miners/bitaxe/espminer/BM/BM1368.py +6 -0
  223. pyasic/miners/bitaxe/espminer/BM/BM1370.py +6 -0
  224. pyasic/miners/bitaxe/espminer/BM/BM1397.py +6 -0
  225. pyasic/miners/bitaxe/espminer/BM/__init__.py +4 -0
  226. pyasic/miners/bitaxe/espminer/__init__.py +1 -0
  227. pyasic/miners/blockminer/__init__.py +17 -0
  228. pyasic/miners/blockminer/epic/__init__.py +17 -0
  229. pyasic/miners/blockminer/epic/blockminer/__init__.py +17 -0
  230. pyasic/miners/blockminer/epic/blockminer/blockminer.py +26 -0
  231. pyasic/miners/braiins/__init__.py +17 -0
  232. pyasic/miners/braiins/braiins/BMM/BMM.py +26 -0
  233. pyasic/miners/braiins/braiins/BMM/__init__.py +17 -0
  234. pyasic/miners/braiins/braiins/__init__.py +17 -0
  235. pyasic/miners/data.py +85 -0
  236. pyasic/miners/device/__init__.py +0 -0
  237. pyasic/miners/device/firmware.py +46 -0
  238. pyasic/miners/device/makes.py +74 -0
  239. pyasic/miners/device/models/__init__.py +28 -0
  240. pyasic/miners/device/models/antminer/X15/Z15.py +36 -0
  241. pyasic/miners/device/models/antminer/X15/__init__.py +16 -0
  242. pyasic/miners/device/models/antminer/X17/S17.py +54 -0
  243. pyasic/miners/device/models/antminer/X17/T17.py +45 -0
  244. pyasic/miners/device/models/antminer/X17/__init__.py +18 -0
  245. pyasic/miners/device/models/antminer/X19/S19.py +225 -0
  246. pyasic/miners/device/models/antminer/X19/T19.py +27 -0
  247. pyasic/miners/device/models/antminer/X19/__init__.py +42 -0
  248. pyasic/miners/device/models/antminer/X21/S21.py +45 -0
  249. pyasic/miners/device/models/antminer/X21/T21.py +27 -0
  250. pyasic/miners/device/models/antminer/X21/__init__.py +18 -0
  251. pyasic/miners/device/models/antminer/X3/D3.py +27 -0
  252. pyasic/miners/device/models/antminer/X3/HS3.py +27 -0
  253. pyasic/miners/device/models/antminer/X3/KA3.py +27 -0
  254. pyasic/miners/device/models/antminer/X3/KS3.py +27 -0
  255. pyasic/miners/device/models/antminer/X3/L3.py +27 -0
  256. pyasic/miners/device/models/antminer/X3/__init__.py +20 -0
  257. pyasic/miners/device/models/antminer/X5/DR5.py +27 -0
  258. pyasic/miners/device/models/antminer/X5/KS5.py +36 -0
  259. pyasic/miners/device/models/antminer/X5/__init__.py +17 -0
  260. pyasic/miners/device/models/antminer/X7/D7.py +27 -0
  261. pyasic/miners/device/models/antminer/X7/K7.py +27 -0
  262. pyasic/miners/device/models/antminer/X7/L7.py +27 -0
  263. pyasic/miners/device/models/antminer/X7/__init__.py +18 -0
  264. pyasic/miners/device/models/antminer/X9/D9.py +27 -0
  265. pyasic/miners/device/models/antminer/X9/E9.py +27 -0
  266. pyasic/miners/device/models/antminer/X9/L9.py +27 -0
  267. pyasic/miners/device/models/antminer/X9/S9.py +45 -0
  268. pyasic/miners/device/models/antminer/X9/T9.py +27 -0
  269. pyasic/miners/device/models/antminer/X9/__init__.py +21 -0
  270. pyasic/miners/device/models/antminer/__init__.py +23 -0
  271. pyasic/miners/device/models/auradine/AD/AD2.py +11 -0
  272. pyasic/miners/device/models/auradine/AD/AD3.py +11 -0
  273. pyasic/miners/device/models/auradine/AD/__init__.py +2 -0
  274. pyasic/miners/device/models/auradine/AI/AI2.py +11 -0
  275. pyasic/miners/device/models/auradine/AI/AI3.py +11 -0
  276. pyasic/miners/device/models/auradine/AI/__init__.py +2 -0
  277. pyasic/miners/device/models/auradine/AT/AT1.py +12 -0
  278. pyasic/miners/device/models/auradine/AT/AT2.py +19 -0
  279. pyasic/miners/device/models/auradine/AT/__init__.py +2 -0
  280. pyasic/miners/device/models/auradine/__init__.py +3 -0
  281. pyasic/miners/device/models/avalonminer/A10X/A1026.py +27 -0
  282. pyasic/miners/device/models/avalonminer/A10X/A1047.py +27 -0
  283. pyasic/miners/device/models/avalonminer/A10X/A1066.py +26 -0
  284. pyasic/miners/device/models/avalonminer/A10X/__init__.py +19 -0
  285. pyasic/miners/device/models/avalonminer/A11X/A1126.py +27 -0
  286. pyasic/miners/device/models/avalonminer/A11X/A1166.py +27 -0
  287. pyasic/miners/device/models/avalonminer/A11X/__init__.py +19 -0
  288. pyasic/miners/device/models/avalonminer/A12X/A1246.py +27 -0
  289. pyasic/miners/device/models/avalonminer/A12X/__init__.py +17 -0
  290. pyasic/miners/device/models/avalonminer/A15X/A1566.py +27 -0
  291. pyasic/miners/device/models/avalonminer/A15X/__init__.py +17 -0
  292. pyasic/miners/device/models/avalonminer/A7X/A721.py +27 -0
  293. pyasic/miners/device/models/avalonminer/A7X/A741.py +27 -0
  294. pyasic/miners/device/models/avalonminer/A7X/A761.py +27 -0
  295. pyasic/miners/device/models/avalonminer/A7X/__init__.py +19 -0
  296. pyasic/miners/device/models/avalonminer/A8X/A821.py +27 -0
  297. pyasic/miners/device/models/avalonminer/A8X/A841.py +27 -0
  298. pyasic/miners/device/models/avalonminer/A8X/A851.py +27 -0
  299. pyasic/miners/device/models/avalonminer/A8X/__init__.py +19 -0
  300. pyasic/miners/device/models/avalonminer/A9X/A921.py +27 -0
  301. pyasic/miners/device/models/avalonminer/A9X/__init__.py +17 -0
  302. pyasic/miners/device/models/avalonminer/__init__.py +24 -0
  303. pyasic/miners/device/models/avalonminer/nano/__init__.py +1 -0
  304. pyasic/miners/device/models/avalonminer/nano/nano3.py +12 -0
  305. pyasic/miners/device/models/bitaxe/BM/BM1366.py +12 -0
  306. pyasic/miners/device/models/bitaxe/BM/BM1368.py +12 -0
  307. pyasic/miners/device/models/bitaxe/BM/BM1370.py +12 -0
  308. pyasic/miners/device/models/bitaxe/BM/BM1397.py +12 -0
  309. pyasic/miners/device/models/bitaxe/BM/__init__.py +4 -0
  310. pyasic/miners/device/models/bitaxe/__init__.py +1 -0
  311. pyasic/miners/device/models/braiins/BMM/BMM1.py +19 -0
  312. pyasic/miners/device/models/braiins/BMM/__init__.py +1 -0
  313. pyasic/miners/device/models/braiins/__init__.py +1 -0
  314. pyasic/miners/device/models/elphapex/DGX/DG1.py +27 -0
  315. pyasic/miners/device/models/elphapex/DGX/__init__.py +1 -0
  316. pyasic/miners/device/models/elphapex/__init__.py +1 -0
  317. pyasic/miners/device/models/epic/__init__.py +1 -0
  318. pyasic/miners/device/models/epic/blockminer/__init__.py +1 -0
  319. pyasic/miners/device/models/epic/blockminer/blockminer.py +21 -0
  320. pyasic/miners/device/models/goldshell/X5/CK5.py +27 -0
  321. pyasic/miners/device/models/goldshell/X5/HS5.py +27 -0
  322. pyasic/miners/device/models/goldshell/X5/KD5.py +27 -0
  323. pyasic/miners/device/models/goldshell/X5/__init__.py +18 -0
  324. pyasic/miners/device/models/goldshell/XBox/KDBox.py +36 -0
  325. pyasic/miners/device/models/goldshell/XBox/__init__.py +1 -0
  326. pyasic/miners/device/models/goldshell/XMax/KDMax.py +27 -0
  327. pyasic/miners/device/models/goldshell/XMax/__init__.py +16 -0
  328. pyasic/miners/device/models/goldshell/__init__.py +18 -0
  329. pyasic/miners/device/models/hammer/DX/D10.py +27 -0
  330. pyasic/miners/device/models/hammer/DX/__init__.py +1 -0
  331. pyasic/miners/device/models/hammer/__init__.py +1 -0
  332. pyasic/miners/device/models/iceriver/KSX/KS0.py +26 -0
  333. pyasic/miners/device/models/iceriver/KSX/KS1.py +26 -0
  334. pyasic/miners/device/models/iceriver/KSX/KS2.py +27 -0
  335. pyasic/miners/device/models/iceriver/KSX/KS3.py +43 -0
  336. pyasic/miners/device/models/iceriver/KSX/KS5.py +44 -0
  337. pyasic/miners/device/models/iceriver/KSX/__init__.py +5 -0
  338. pyasic/miners/device/models/iceriver/__init__.py +1 -0
  339. pyasic/miners/device/models/innosilicon/A10X/A10X.py +26 -0
  340. pyasic/miners/device/models/innosilicon/A10X/__init__.py +16 -0
  341. pyasic/miners/device/models/innosilicon/A11X/A11.py +27 -0
  342. pyasic/miners/device/models/innosilicon/A11X/A11M.py +27 -0
  343. pyasic/miners/device/models/innosilicon/A11X/__init__.py +17 -0
  344. pyasic/miners/device/models/innosilicon/T3X/T3H.py +27 -0
  345. pyasic/miners/device/models/innosilicon/T3X/__init__.py +17 -0
  346. pyasic/miners/device/models/innosilicon/__init__.py +19 -0
  347. pyasic/miners/device/models/luckyminer/LV/LV07.py +12 -0
  348. pyasic/miners/device/models/luckyminer/LV/LV08.py +12 -0
  349. pyasic/miners/device/models/luckyminer/LV/__init__.py +2 -0
  350. pyasic/miners/device/models/luckyminer/__init__.py +1 -0
  351. pyasic/miners/device/models/volcminer/DX/D1.py +27 -0
  352. pyasic/miners/device/models/volcminer/DX/__init__.py +1 -0
  353. pyasic/miners/device/models/volcminer/__init__.py +1 -0
  354. pyasic/miners/device/models/whatsminer/M2X/M20.py +12 -0
  355. pyasic/miners/device/models/whatsminer/M2X/M20P.py +21 -0
  356. pyasic/miners/device/models/whatsminer/M2X/M20S.py +30 -0
  357. pyasic/miners/device/models/whatsminer/M2X/M20S_Plus.py +12 -0
  358. pyasic/miners/device/models/whatsminer/M2X/M21.py +12 -0
  359. pyasic/miners/device/models/whatsminer/M2X/M21S.py +30 -0
  360. pyasic/miners/device/models/whatsminer/M2X/M21S_Plus.py +12 -0
  361. pyasic/miners/device/models/whatsminer/M2X/M29.py +12 -0
  362. pyasic/miners/device/models/whatsminer/M2X/__init__.py +8 -0
  363. pyasic/miners/device/models/whatsminer/M3X/M30.py +21 -0
  364. pyasic/miners/device/models/whatsminer/M3X/M30K.py +12 -0
  365. pyasic/miners/device/models/whatsminer/M3X/M30L.py +12 -0
  366. pyasic/miners/device/models/whatsminer/M3X/M30S.py +273 -0
  367. pyasic/miners/device/models/whatsminer/M3X/M30S_Plus.py +318 -0
  368. pyasic/miners/device/models/whatsminer/M3X/M30S_Plus_Plus.py +255 -0
  369. pyasic/miners/device/models/whatsminer/M3X/M31.py +21 -0
  370. pyasic/miners/device/models/whatsminer/M3X/M31H.py +21 -0
  371. pyasic/miners/device/models/whatsminer/M3X/M31L.py +12 -0
  372. pyasic/miners/device/models/whatsminer/M3X/M31S.py +111 -0
  373. pyasic/miners/device/models/whatsminer/M3X/M31SE.py +30 -0
  374. pyasic/miners/device/models/whatsminer/M3X/M31S_Plus.py +183 -0
  375. pyasic/miners/device/models/whatsminer/M3X/M32.py +21 -0
  376. pyasic/miners/device/models/whatsminer/M3X/M32S.py +27 -0
  377. pyasic/miners/device/models/whatsminer/M3X/M33.py +30 -0
  378. pyasic/miners/device/models/whatsminer/M3X/M33S.py +12 -0
  379. pyasic/miners/device/models/whatsminer/M3X/M33S_Plus.py +39 -0
  380. pyasic/miners/device/models/whatsminer/M3X/M33S_Plus_Plus.py +30 -0
  381. pyasic/miners/device/models/whatsminer/M3X/M34S_Plus.py +12 -0
  382. pyasic/miners/device/models/whatsminer/M3X/M36S.py +12 -0
  383. pyasic/miners/device/models/whatsminer/M3X/M36S_Plus.py +12 -0
  384. pyasic/miners/device/models/whatsminer/M3X/M36S_Plus_Plus.py +12 -0
  385. pyasic/miners/device/models/whatsminer/M3X/M39.py +30 -0
  386. pyasic/miners/device/models/whatsminer/M3X/__init__.py +152 -0
  387. pyasic/miners/device/models/whatsminer/M5X/M50.py +165 -0
  388. pyasic/miners/device/models/whatsminer/M5X/M50S.py +174 -0
  389. pyasic/miners/device/models/whatsminer/M5X/M50S_Plus.py +102 -0
  390. pyasic/miners/device/models/whatsminer/M5X/M50S_Plus_Plus.py +102 -0
  391. pyasic/miners/device/models/whatsminer/M5X/M52S.py +12 -0
  392. pyasic/miners/device/models/whatsminer/M5X/M52S_Plus_Plus.py +12 -0
  393. pyasic/miners/device/models/whatsminer/M5X/M53.py +48 -0
  394. pyasic/miners/device/models/whatsminer/M5X/M53H.py +12 -0
  395. pyasic/miners/device/models/whatsminer/M5X/M53S.py +48 -0
  396. pyasic/miners/device/models/whatsminer/M5X/M53S_Plus.py +39 -0
  397. pyasic/miners/device/models/whatsminer/M5X/M53S_Plus_Plus.py +57 -0
  398. pyasic/miners/device/models/whatsminer/M5X/M54S_Plus_Plus.py +30 -0
  399. pyasic/miners/device/models/whatsminer/M5X/M56.py +12 -0
  400. pyasic/miners/device/models/whatsminer/M5X/M56S.py +30 -0
  401. pyasic/miners/device/models/whatsminer/M5X/M56S_Plus.py +39 -0
  402. pyasic/miners/device/models/whatsminer/M5X/M56S_Plus_Plus.py +39 -0
  403. pyasic/miners/device/models/whatsminer/M5X/M59.py +12 -0
  404. pyasic/miners/device/models/whatsminer/M5X/__init__.py +92 -0
  405. pyasic/miners/device/models/whatsminer/M6X/M60.py +93 -0
  406. pyasic/miners/device/models/whatsminer/M6X/M60S.py +102 -0
  407. pyasic/miners/device/models/whatsminer/M6X/M60S_Plus.py +93 -0
  408. pyasic/miners/device/models/whatsminer/M6X/M60S_Plus_Plus.py +21 -0
  409. pyasic/miners/device/models/whatsminer/M6X/M61.py +84 -0
  410. pyasic/miners/device/models/whatsminer/M6X/M61S.py +30 -0
  411. pyasic/miners/device/models/whatsminer/M6X/M61S_Plus.py +12 -0
  412. pyasic/miners/device/models/whatsminer/M6X/M62S_Plus.py +12 -0
  413. pyasic/miners/device/models/whatsminer/M6X/M63.py +48 -0
  414. pyasic/miners/device/models/whatsminer/M6X/M63S.py +66 -0
  415. pyasic/miners/device/models/whatsminer/M6X/M63S_Plus.py +48 -0
  416. pyasic/miners/device/models/whatsminer/M6X/M63S_Plus_Plus.py +12 -0
  417. pyasic/miners/device/models/whatsminer/M6X/M64.py +21 -0
  418. pyasic/miners/device/models/whatsminer/M6X/M64S.py +12 -0
  419. pyasic/miners/device/models/whatsminer/M6X/M65S.py +21 -0
  420. pyasic/miners/device/models/whatsminer/M6X/M65S_Plus.py +12 -0
  421. pyasic/miners/device/models/whatsminer/M6X/M66.py +39 -0
  422. pyasic/miners/device/models/whatsminer/M6X/M66S.py +93 -0
  423. pyasic/miners/device/models/whatsminer/M6X/M66S_Plus.py +57 -0
  424. pyasic/miners/device/models/whatsminer/M6X/M66S_Plus_Plus.py +12 -0
  425. pyasic/miners/device/models/whatsminer/M6X/M67S.py +12 -0
  426. pyasic/miners/device/models/whatsminer/M6X/__init__.py +89 -0
  427. pyasic/miners/device/models/whatsminer/M7X/M70.py +12 -0
  428. pyasic/miners/device/models/whatsminer/M7X/__init__.py +1 -0
  429. pyasic/miners/device/models/whatsminer/__init__.py +5 -0
  430. pyasic/miners/elphapex/__init__.py +1 -0
  431. pyasic/miners/elphapex/daoge/DGX/DG1.py +6 -0
  432. pyasic/miners/elphapex/daoge/DGX/__init__.py +1 -0
  433. pyasic/miners/elphapex/daoge/__init__.py +1 -0
  434. pyasic/miners/factory.py +1439 -0
  435. pyasic/miners/goldshell/__init__.py +16 -0
  436. pyasic/miners/goldshell/bfgminer/X5/CK5.py +21 -0
  437. pyasic/miners/goldshell/bfgminer/X5/HS5.py +21 -0
  438. pyasic/miners/goldshell/bfgminer/X5/KD5.py +21 -0
  439. pyasic/miners/goldshell/bfgminer/X5/__init__.py +18 -0
  440. pyasic/miners/goldshell/bfgminer/XBox/KDBox.py +25 -0
  441. pyasic/miners/goldshell/bfgminer/XBox/__init__.py +16 -0
  442. pyasic/miners/goldshell/bfgminer/XMax/KDMax.py +21 -0
  443. pyasic/miners/goldshell/bfgminer/XMax/__init__.py +16 -0
  444. pyasic/miners/goldshell/bfgminer/__init__.py +18 -0
  445. pyasic/miners/hammer/__init__.py +1 -0
  446. pyasic/miners/hammer/blackminer/DX/D10.py +8 -0
  447. pyasic/miners/hammer/blackminer/DX/__init__.py +1 -0
  448. pyasic/miners/hammer/blackminer/__init__.py +1 -0
  449. pyasic/miners/iceriver/__init__.py +1 -0
  450. pyasic/miners/iceriver/iceminer/KSX/KS0.py +6 -0
  451. pyasic/miners/iceriver/iceminer/KSX/KS1.py +6 -0
  452. pyasic/miners/iceriver/iceminer/KSX/KS2.py +6 -0
  453. pyasic/miners/iceriver/iceminer/KSX/KS3.py +14 -0
  454. pyasic/miners/iceriver/iceminer/KSX/KS5.py +14 -0
  455. pyasic/miners/iceriver/iceminer/KSX/__init__.py +5 -0
  456. pyasic/miners/iceriver/iceminer/__init__.py +1 -0
  457. pyasic/miners/innosilicon/__init__.py +17 -0
  458. pyasic/miners/innosilicon/cgminer/A10X/A10X.py +22 -0
  459. pyasic/miners/innosilicon/cgminer/A10X/__init__.py +17 -0
  460. pyasic/miners/innosilicon/cgminer/A11X/A11.py +22 -0
  461. pyasic/miners/innosilicon/cgminer/A11X/A11M.py +22 -0
  462. pyasic/miners/innosilicon/cgminer/A11X/__init__.py +2 -0
  463. pyasic/miners/innosilicon/cgminer/T3X/T3H.py +22 -0
  464. pyasic/miners/innosilicon/cgminer/T3X/__init__.py +17 -0
  465. pyasic/miners/innosilicon/cgminer/__init__.py +19 -0
  466. pyasic/miners/listener.py +87 -0
  467. pyasic/miners/luckyminer/__init__.py +1 -0
  468. pyasic/miners/luckyminer/espminer/LV/LV07.py +6 -0
  469. pyasic/miners/luckyminer/espminer/LV/LV08.py +6 -0
  470. pyasic/miners/luckyminer/espminer/LV/__init__.py +2 -0
  471. pyasic/miners/luckyminer/espminer/__init__.py +1 -0
  472. pyasic/miners/volcminer/__init__.py +1 -0
  473. pyasic/miners/volcminer/blackminer/DX/D1.py +8 -0
  474. pyasic/miners/volcminer/blackminer/DX/__init__.py +1 -0
  475. pyasic/miners/volcminer/blackminer/__init__.py +1 -0
  476. pyasic/miners/whatsminer/__init__.py +17 -0
  477. pyasic/miners/whatsminer/btminer/M2X/M20.py +6 -0
  478. pyasic/miners/whatsminer/btminer/M2X/M20P.py +13 -0
  479. pyasic/miners/whatsminer/btminer/M2X/M20S.py +20 -0
  480. pyasic/miners/whatsminer/btminer/M2X/M20S_Plus.py +6 -0
  481. pyasic/miners/whatsminer/btminer/M2X/M21.py +6 -0
  482. pyasic/miners/whatsminer/btminer/M2X/M21S.py +20 -0
  483. pyasic/miners/whatsminer/btminer/M2X/M21S_Plus.py +6 -0
  484. pyasic/miners/whatsminer/btminer/M2X/M29.py +6 -0
  485. pyasic/miners/whatsminer/btminer/M2X/__init__.py +8 -0
  486. pyasic/miners/whatsminer/btminer/M3X/M30.py +13 -0
  487. pyasic/miners/whatsminer/btminer/M3X/M30K.py +6 -0
  488. pyasic/miners/whatsminer/btminer/M3X/M30L.py +6 -0
  489. pyasic/miners/whatsminer/btminer/M3X/M30S.py +209 -0
  490. pyasic/miners/whatsminer/btminer/M3X/M30S_Plus.py +244 -0
  491. pyasic/miners/whatsminer/btminer/M3X/M30S_Plus_Plus.py +195 -0
  492. pyasic/miners/whatsminer/btminer/M3X/M31.py +13 -0
  493. pyasic/miners/whatsminer/btminer/M3X/M31H.py +13 -0
  494. pyasic/miners/whatsminer/btminer/M3X/M31L.py +6 -0
  495. pyasic/miners/whatsminer/btminer/M3X/M31S.py +83 -0
  496. pyasic/miners/whatsminer/btminer/M3X/M31SE.py +20 -0
  497. pyasic/miners/whatsminer/btminer/M3X/M31S_Plus.py +139 -0
  498. pyasic/miners/whatsminer/btminer/M3X/M32.py +13 -0
  499. pyasic/miners/whatsminer/btminer/M3X/M32S.py +22 -0
  500. pyasic/miners/whatsminer/btminer/M3X/M33.py +20 -0
  501. pyasic/miners/whatsminer/btminer/M3X/M33S.py +6 -0
  502. pyasic/miners/whatsminer/btminer/M3X/M33S_Plus.py +27 -0
  503. pyasic/miners/whatsminer/btminer/M3X/M33S_Plus_Plus.py +20 -0
  504. pyasic/miners/whatsminer/btminer/M3X/M34S_Plus.py +6 -0
  505. pyasic/miners/whatsminer/btminer/M3X/M36S.py +6 -0
  506. pyasic/miners/whatsminer/btminer/M3X/M36S_Plus.py +6 -0
  507. pyasic/miners/whatsminer/btminer/M3X/M36S_Plus_Plus.py +6 -0
  508. pyasic/miners/whatsminer/btminer/M3X/M39.py +20 -0
  509. pyasic/miners/whatsminer/btminer/M3X/__init__.py +161 -0
  510. pyasic/miners/whatsminer/btminer/M5X/M50.py +125 -0
  511. pyasic/miners/whatsminer/btminer/M5X/M50S.py +132 -0
  512. pyasic/miners/whatsminer/btminer/M5X/M50S_Plus.py +76 -0
  513. pyasic/miners/whatsminer/btminer/M5X/M50S_Plus_Plus.py +76 -0
  514. pyasic/miners/whatsminer/btminer/M5X/M52S.py +6 -0
  515. pyasic/miners/whatsminer/btminer/M5X/M52S_Plus_Plus.py +6 -0
  516. pyasic/miners/whatsminer/btminer/M5X/M53.py +34 -0
  517. pyasic/miners/whatsminer/btminer/M5X/M53H.py +6 -0
  518. pyasic/miners/whatsminer/btminer/M5X/M53S.py +34 -0
  519. pyasic/miners/whatsminer/btminer/M5X/M53S_Plus.py +27 -0
  520. pyasic/miners/whatsminer/btminer/M5X/M53S_Plus_Plus.py +41 -0
  521. pyasic/miners/whatsminer/btminer/M5X/M54S_Plus_Plus.py +20 -0
  522. pyasic/miners/whatsminer/btminer/M5X/M56.py +6 -0
  523. pyasic/miners/whatsminer/btminer/M5X/M56S.py +20 -0
  524. pyasic/miners/whatsminer/btminer/M5X/M56S_Plus.py +27 -0
  525. pyasic/miners/whatsminer/btminer/M5X/M56S_Plus_Plus.py +27 -0
  526. pyasic/miners/whatsminer/btminer/M5X/M59.py +6 -0
  527. pyasic/miners/whatsminer/btminer/M5X/__init__.py +118 -0
  528. pyasic/miners/whatsminer/btminer/M6X/M60.py +69 -0
  529. pyasic/miners/whatsminer/btminer/M6X/M60S.py +76 -0
  530. pyasic/miners/whatsminer/btminer/M6X/M60S_Plus.py +69 -0
  531. pyasic/miners/whatsminer/btminer/M6X/M60S_Plus_Plus.py +13 -0
  532. pyasic/miners/whatsminer/btminer/M6X/M61.py +62 -0
  533. pyasic/miners/whatsminer/btminer/M6X/M61S.py +20 -0
  534. pyasic/miners/whatsminer/btminer/M6X/M61S_Plus.py +6 -0
  535. pyasic/miners/whatsminer/btminer/M6X/M62S_Plus.py +6 -0
  536. pyasic/miners/whatsminer/btminer/M6X/M63.py +34 -0
  537. pyasic/miners/whatsminer/btminer/M6X/M63S.py +48 -0
  538. pyasic/miners/whatsminer/btminer/M6X/M63S_Plus.py +34 -0
  539. pyasic/miners/whatsminer/btminer/M6X/M63S_Plus_Plus.py +6 -0
  540. pyasic/miners/whatsminer/btminer/M6X/M64.py +13 -0
  541. pyasic/miners/whatsminer/btminer/M6X/M64S.py +6 -0
  542. pyasic/miners/whatsminer/btminer/M6X/M65S.py +13 -0
  543. pyasic/miners/whatsminer/btminer/M6X/M65S_Plus.py +6 -0
  544. pyasic/miners/whatsminer/btminer/M6X/M66.py +27 -0
  545. pyasic/miners/whatsminer/btminer/M6X/M66S.py +69 -0
  546. pyasic/miners/whatsminer/btminer/M6X/M66S_Plus.py +41 -0
  547. pyasic/miners/whatsminer/btminer/M6X/M66S_Plus_Plus.py +6 -0
  548. pyasic/miners/whatsminer/btminer/M6X/M67S.py +6 -0
  549. pyasic/miners/whatsminer/btminer/M6X/__init__.py +103 -0
  550. pyasic/miners/whatsminer/btminer/M7X/M70.py +6 -0
  551. pyasic/miners/whatsminer/btminer/M7X/__init__.py +1 -0
  552. pyasic/miners/whatsminer/btminer/__init__.py +5 -0
  553. pyasic/misc/__init__.py +110 -0
  554. pyasic/network/__init__.py +216 -0
  555. pyasic/rpc/__init__.py +24 -0
  556. pyasic/rpc/antminer.py +36 -0
  557. pyasic/rpc/base.py +291 -0
  558. pyasic/rpc/bfgminer.py +181 -0
  559. pyasic/rpc/bmminer.py +32 -0
  560. pyasic/rpc/bosminer.py +270 -0
  561. pyasic/rpc/btminer.py +1102 -0
  562. pyasic/rpc/ccminer.py +34 -0
  563. pyasic/rpc/cgminer.py +690 -0
  564. pyasic/rpc/gcminer.py +178 -0
  565. pyasic/rpc/luxminer.py +851 -0
  566. pyasic/rpc/marathon.py +33 -0
  567. pyasic/rpc/unknown.py +51 -0
  568. pyasic/settings/__init__.py +64 -0
  569. pyasic/ssh/__init__.py +17 -0
  570. pyasic/ssh/antminer.py +16 -0
  571. pyasic/ssh/base.py +47 -0
  572. pyasic/ssh/braiins_os.py +95 -0
  573. pyasic/web/__init__.py +25 -0
  574. pyasic/web/antminer.py +421 -0
  575. pyasic/web/auradine.py +442 -0
  576. pyasic/web/avalonminer.py +108 -0
  577. pyasic/web/base.py +98 -0
  578. pyasic/web/braiins_os/__init__.py +2 -0
  579. pyasic/web/braiins_os/better_monkey.py +93 -0
  580. pyasic/web/braiins_os/boser.py +498 -0
  581. pyasic/web/braiins_os/bosminer.py +101 -0
  582. pyasic/web/braiins_os/proto/__init__.py +0 -0
  583. pyasic/web/braiins_os/proto/braiins/__init__.py +0 -0
  584. pyasic/web/braiins_os/proto/braiins/bos/__init__.py +76 -0
  585. pyasic/web/braiins_os/proto/braiins/bos/v1/__init__.py +3388 -0
  586. pyasic/web/elphapex.py +224 -0
  587. pyasic/web/epic.py +167 -0
  588. pyasic/web/espminer.py +96 -0
  589. pyasic/web/goldshell.py +145 -0
  590. pyasic/web/hammer.py +240 -0
  591. pyasic/web/hiveon.py +213 -0
  592. pyasic/web/iceriver.py +77 -0
  593. pyasic/web/innosilicon.py +140 -0
  594. pyasic/web/luckyminer.py +7 -0
  595. pyasic/web/marathon.py +147 -0
  596. pyasic/web/mskminer.py +72 -0
  597. pyasic/web/vnish.py +157 -0
  598. pyasic_umhost-0.0.1.dist-info/LICENSE.txt +176 -0
  599. pyasic_umhost-0.0.1.dist-info/METADATA +325 -0
  600. pyasic_umhost-0.0.1.dist-info/RECORD +601 -0
  601. pyasic_umhost-0.0.1.dist-info/WHEEL +4 -0
pyasic/__init__.py ADDED
@@ -0,0 +1,28 @@
1
+ # ------------------------------------------------------------------------------
2
+ # Copyright 2022 Upstream Data Inc -
3
+ # -
4
+ # Licensed under the Apache License, Version 2.0 (the "License"); -
5
+ # you may not use this file except in compliance with the License. -
6
+ # You may obtain a copy of the License at -
7
+ # -
8
+ # http://www.apache.org/licenses/LICENSE-2.0 -
9
+ # -
10
+ # Unless required by applicable law or agreed to in writing, software -
11
+ # distributed under the License is distributed on an "AS IS" BASIS, -
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -
13
+ # See the License for the specific language governing permissions and -
14
+ # limitations under the License. -
15
+ # ------------------------------------------------------------------------------
16
+ import importlib.metadata
17
+
18
+ from pyasic import settings
19
+ from pyasic.config import MinerConfig
20
+ from pyasic.data import MinerData
21
+ from pyasic.errors import APIError, APIWarning
22
+ from pyasic.miners import *
23
+ from pyasic.network import MinerNetwork
24
+ from pyasic.rpc import *
25
+ from pyasic.ssh import *
26
+ from pyasic.web import *
27
+
28
+ __version__ = importlib.metadata.version("pyasic-umhost")
@@ -0,0 +1,348 @@
1
+ # ------------------------------------------------------------------------------
2
+ # Copyright 2022 Upstream Data Inc -
3
+ # -
4
+ # Licensed under the Apache License, Version 2.0 (the "License"); -
5
+ # you may not use this file except in compliance with the License. -
6
+ # You may obtain a copy of the License at -
7
+ # -
8
+ # http://www.apache.org/licenses/LICENSE-2.0 -
9
+ # -
10
+ # Unless required by applicable law or agreed to in writing, software -
11
+ # distributed under the License is distributed on an "AS IS" BASIS, -
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -
13
+ # See the License for the specific language governing permissions and -
14
+ # limitations under the License. -
15
+ # ------------------------------------------------------------------------------
16
+
17
+ from pydantic import BaseModel, Field
18
+
19
+ from pyasic.config.fans import FanMode, FanModeConfig, FanModeNormal
20
+ from pyasic.config.mining import MiningMode, MiningModeConfig
21
+ from pyasic.config.mining.scaling import ScalingConfig
22
+ from pyasic.config.pools import PoolConfig
23
+ from pyasic.config.temperature import TemperatureConfig
24
+ from pyasic.misc import merge_dicts
25
+
26
+
27
+ class MinerConfig(BaseModel):
28
+ """Represents the configuration for a miner including pool configuration,
29
+ fan mode, temperature settings, mining mode, and power scaling."""
30
+
31
+ class Config:
32
+ arbitrary_types_allowed = True
33
+
34
+ pools: PoolConfig = Field(default_factory=PoolConfig.default)
35
+ fan_mode: FanMode = Field(default_factory=FanModeConfig.default)
36
+ temperature: TemperatureConfig = Field(default_factory=TemperatureConfig.default)
37
+ mining_mode: MiningMode = Field(default_factory=MiningModeConfig.default)
38
+
39
+ def __getitem__(self, item):
40
+ try:
41
+ return getattr(self, item)
42
+ except AttributeError:
43
+ raise KeyError
44
+
45
+ def as_dict(self) -> dict:
46
+ """Converts the MinerConfig object to a dictionary."""
47
+ return self.model_dump()
48
+
49
+ def as_am_modern(self, user_suffix: str | None = None) -> dict:
50
+ """Generates the configuration in the format suitable for modern Antminers."""
51
+ return {
52
+ **self.fan_mode.as_am_modern(),
53
+ "freq-level": "100",
54
+ **self.mining_mode.as_am_modern(),
55
+ **self.pools.as_am_modern(user_suffix=user_suffix),
56
+ **self.temperature.as_am_modern(),
57
+ }
58
+
59
+ def as_hiveon_modern(self, user_suffix: str | None = None) -> dict:
60
+ """Generates the configuration in the format suitable for modern Hiveon."""
61
+ return {
62
+ **self.fan_mode.as_hiveon_modern(),
63
+ "freq-level": "100",
64
+ **self.mining_mode.as_hiveon_modern(),
65
+ **self.pools.as_hiveon_modern(user_suffix=user_suffix),
66
+ **self.temperature.as_hiveon_modern(),
67
+ }
68
+
69
+ def as_elphapex(self, user_suffix: str | None = None) -> dict:
70
+ """Generates the configuration in the format suitable for modern Elphapex."""
71
+ return {
72
+ **self.fan_mode.as_elphapex(),
73
+ "fc-freq-level": "100",
74
+ **self.mining_mode.as_elphapex(),
75
+ **self.pools.as_elphapex(user_suffix=user_suffix),
76
+ **self.temperature.as_elphapex(),
77
+ }
78
+
79
+ def as_wm(self, user_suffix: str | None = None) -> dict:
80
+ """Generates the configuration in the format suitable for Whatsminers."""
81
+ return {
82
+ **self.fan_mode.as_wm(),
83
+ **self.mining_mode.as_wm(),
84
+ **self.pools.as_wm(user_suffix=user_suffix),
85
+ **self.temperature.as_wm(),
86
+ }
87
+
88
+ def as_am_old(self, user_suffix: str | None = None) -> dict:
89
+ """Generates the configuration in the format suitable for old versions of Antminers."""
90
+ return {
91
+ **self.fan_mode.as_am_old(),
92
+ **self.mining_mode.as_am_old(),
93
+ **self.pools.as_am_old(user_suffix=user_suffix),
94
+ **self.temperature.as_am_old(),
95
+ }
96
+
97
+ def as_goldshell(self, user_suffix: str | None = None) -> dict:
98
+ """Generates the configuration in the format suitable for Goldshell miners."""
99
+ return {
100
+ **self.fan_mode.as_goldshell(),
101
+ **self.mining_mode.as_goldshell(),
102
+ **self.pools.as_goldshell(user_suffix=user_suffix),
103
+ **self.temperature.as_goldshell(),
104
+ }
105
+
106
+ def as_avalon(self, user_suffix: str | None = None) -> dict:
107
+ """Generates the configuration in the format suitable for Avalonminers."""
108
+ return {
109
+ **self.fan_mode.as_avalon(),
110
+ **self.mining_mode.as_avalon(),
111
+ **self.pools.as_avalon(user_suffix=user_suffix),
112
+ **self.temperature.as_avalon(),
113
+ }
114
+
115
+ def as_inno(self, user_suffix: str | None = None) -> dict:
116
+ """Generates the configuration in the format suitable for Innosilicon miners."""
117
+ return {
118
+ **self.fan_mode.as_inno(),
119
+ **self.mining_mode.as_inno(),
120
+ **self.pools.as_inno(user_suffix=user_suffix),
121
+ **self.temperature.as_inno(),
122
+ }
123
+
124
+ def as_bosminer(self, user_suffix: str | None = None) -> dict:
125
+ """Generates the configuration in the bosminer.toml format."""
126
+ return {
127
+ **merge_dicts(self.fan_mode.as_bosminer(), self.temperature.as_bosminer()),
128
+ **self.mining_mode.as_bosminer(),
129
+ **self.pools.as_bosminer(user_suffix=user_suffix),
130
+ }
131
+
132
+ def as_boser(self, user_suffix: str | None = None) -> dict:
133
+ """Generates the configuration in the format suitable for BOSer."""
134
+ return {
135
+ **self.fan_mode.as_boser(),
136
+ **self.temperature.as_boser(),
137
+ **self.mining_mode.as_boser(),
138
+ **self.pools.as_boser(user_suffix=user_suffix),
139
+ }
140
+
141
+ def as_epic(self, user_suffix: str | None = None) -> dict:
142
+ """Generates the configuration in the format suitable for ePIC miners."""
143
+ return {
144
+ **merge_dicts(self.fan_mode.as_epic(), self.temperature.as_epic()),
145
+ **self.mining_mode.as_epic(),
146
+ **self.pools.as_epic(user_suffix=user_suffix),
147
+ }
148
+
149
+ def as_auradine(self, user_suffix: str | None = None) -> dict:
150
+ """Generates the configuration in the format suitable for Auradine miners."""
151
+ return {
152
+ **self.fan_mode.as_auradine(),
153
+ **self.temperature.as_auradine(),
154
+ **self.mining_mode.as_auradine(),
155
+ **self.pools.as_auradine(user_suffix=user_suffix),
156
+ }
157
+
158
+ def as_mara(self, user_suffix: str | None = None) -> dict:
159
+ return {
160
+ **self.fan_mode.as_mara(),
161
+ **self.temperature.as_mara(),
162
+ **self.mining_mode.as_mara(),
163
+ **self.pools.as_mara(user_suffix=user_suffix),
164
+ }
165
+
166
+ def as_espminer(self, user_suffix: str | None = None) -> dict:
167
+ return {
168
+ **self.fan_mode.as_espminer(),
169
+ **self.temperature.as_espminer(),
170
+ **self.mining_mode.as_espminer(),
171
+ **self.pools.as_espminer(user_suffix=user_suffix),
172
+ }
173
+
174
+ def as_luxos(self, user_suffix: str | None = None) -> dict:
175
+ return {
176
+ **self.fan_mode.as_luxos(),
177
+ **self.temperature.as_luxos(),
178
+ **self.mining_mode.as_luxos(),
179
+ **self.pools.as_luxos(user_suffix=user_suffix),
180
+ }
181
+
182
+ def as_vnish(self, user_suffix: str | None = None) -> dict:
183
+ main_cfg = {
184
+ "miner": {
185
+ **self.fan_mode.as_vnish(),
186
+ **self.temperature.as_vnish(),
187
+ **self.mining_mode.as_vnish(),
188
+ **self.pools.as_vnish(user_suffix=user_suffix),
189
+ }
190
+ }
191
+ if isinstance(self.fan_mode, FanModeNormal):
192
+ main_cfg["miner"]["cooling"]["mode"]["param"] = self.temperature.target
193
+ return main_cfg
194
+
195
+ def as_hammer(self, *args, **kwargs) -> dict:
196
+ return self.as_am_modern(*args, **kwargs)
197
+
198
+ @classmethod
199
+ def from_dict(cls, dict_conf: dict) -> "MinerConfig":
200
+ """Constructs a MinerConfig object from a dictionary."""
201
+ return cls(
202
+ pools=PoolConfig.from_dict(dict_conf.get("pools")),
203
+ mining_mode=MiningModeConfig.from_dict(dict_conf.get("mining_mode")),
204
+ fan_mode=FanModeConfig.from_dict(dict_conf.get("fan_mode")),
205
+ temperature=TemperatureConfig.from_dict(dict_conf.get("temperature")),
206
+ )
207
+
208
+ @classmethod
209
+ def from_api(cls, api_pools: dict) -> "MinerConfig":
210
+ """Constructs a MinerConfig object from API pool data."""
211
+ return cls(pools=PoolConfig.from_api(api_pools))
212
+
213
+ @classmethod
214
+ def from_am_modern(cls, web_conf: dict) -> "MinerConfig":
215
+ """Constructs a MinerConfig object from web configuration for modern Antminers."""
216
+ return cls(
217
+ pools=PoolConfig.from_am_modern(web_conf),
218
+ mining_mode=MiningModeConfig.from_am_modern(web_conf),
219
+ fan_mode=FanModeConfig.from_am_modern(web_conf),
220
+ )
221
+
222
+ @classmethod
223
+ def from_hiveon_modern(cls, web_conf: dict) -> "MinerConfig":
224
+ """Constructs a MinerConfig object from web configuration for Hiveon."""
225
+ return cls(
226
+ pools=PoolConfig.from_hiveon_modern(web_conf),
227
+ mining_mode=MiningModeConfig.from_hiveon_modern(web_conf),
228
+ fan_mode=FanModeConfig.from_hiveon_modern(web_conf),
229
+ )
230
+
231
+ @classmethod
232
+ def from_elphapex(cls, web_conf: dict) -> "MinerConfig":
233
+ """Constructs a MinerConfig object from web configuration for modern Antminers."""
234
+ return cls(
235
+ pools=PoolConfig.from_elphapex(web_conf),
236
+ mining_mode=MiningModeConfig.from_elphapex(web_conf),
237
+ fan_mode=FanModeConfig.from_elphapex(web_conf),
238
+ )
239
+
240
+ @classmethod
241
+ def from_am_old(cls, web_conf: dict) -> "MinerConfig":
242
+ """Constructs a MinerConfig object from web configuration for old versions of Antminers."""
243
+ return cls.from_am_modern(web_conf)
244
+
245
+ @classmethod
246
+ def from_goldshell(cls, web_conf: dict) -> "MinerConfig":
247
+ """Constructs a MinerConfig object from web configuration for Goldshell miners."""
248
+ return cls(pools=PoolConfig.from_am_modern(web_conf))
249
+
250
+ @classmethod
251
+ def from_inno(cls, web_pools: list) -> "MinerConfig":
252
+ """Constructs a MinerConfig object from web configuration for Innosilicon miners."""
253
+ return cls(pools=PoolConfig.from_inno(web_pools))
254
+
255
+ @classmethod
256
+ def from_bosminer(cls, toml_conf: dict) -> "MinerConfig":
257
+ """Constructs a MinerConfig object from the bosminer.toml file, same as the `as_bosminer` dumps a dict for writing to that file as toml."""
258
+ return cls(
259
+ pools=PoolConfig.from_bosminer(toml_conf),
260
+ mining_mode=MiningModeConfig.from_bosminer(toml_conf),
261
+ fan_mode=FanModeConfig.from_bosminer(toml_conf),
262
+ temperature=TemperatureConfig.from_bosminer(toml_conf),
263
+ )
264
+
265
+ @classmethod
266
+ def from_boser(cls, grpc_miner_conf: dict) -> "MinerConfig":
267
+ """Constructs a MinerConfig object from gRPC configuration for BOSer."""
268
+ return cls(
269
+ pools=PoolConfig.from_boser(grpc_miner_conf),
270
+ mining_mode=MiningModeConfig.from_boser(grpc_miner_conf),
271
+ fan_mode=FanModeConfig.from_boser(grpc_miner_conf),
272
+ temperature=TemperatureConfig.from_boser(grpc_miner_conf),
273
+ )
274
+
275
+ @classmethod
276
+ def from_epic(cls, web_conf: dict) -> "MinerConfig":
277
+ """Constructs a MinerConfig object from web configuration for ePIC miners."""
278
+ return cls(
279
+ pools=PoolConfig.from_epic(web_conf),
280
+ fan_mode=FanModeConfig.from_epic(web_conf),
281
+ temperature=TemperatureConfig.from_epic(web_conf),
282
+ mining_mode=MiningModeConfig.from_epic(web_conf),
283
+ )
284
+
285
+ @classmethod
286
+ def from_vnish(cls, web_settings: dict, web_presets: list[dict]) -> "MinerConfig":
287
+ """Constructs a MinerConfig object from web settings for VNish miners."""
288
+ return cls(
289
+ pools=PoolConfig.from_vnish(web_settings),
290
+ fan_mode=FanModeConfig.from_vnish(web_settings),
291
+ temperature=TemperatureConfig.from_vnish(web_settings),
292
+ mining_mode=MiningModeConfig.from_vnish(web_settings, web_presets),
293
+ )
294
+
295
+ @classmethod
296
+ def from_auradine(cls, web_conf: dict) -> "MinerConfig":
297
+ """Constructs a MinerConfig object from web configuration for Auradine miners."""
298
+ return cls(
299
+ pools=PoolConfig.from_api(web_conf["pools"]),
300
+ fan_mode=FanModeConfig.from_auradine(web_conf["fan"]),
301
+ mining_mode=MiningModeConfig.from_auradine(web_conf["mode"]),
302
+ )
303
+
304
+ @classmethod
305
+ def from_mara(cls, web_miner_config: dict) -> "MinerConfig":
306
+ return cls(
307
+ pools=PoolConfig.from_mara(web_miner_config),
308
+ fan_mode=FanModeConfig.from_mara(web_miner_config),
309
+ mining_mode=MiningModeConfig.from_mara(web_miner_config),
310
+ )
311
+
312
+ @classmethod
313
+ def from_espminer(cls, web_system_info: dict) -> "MinerConfig":
314
+ return cls(
315
+ pools=PoolConfig.from_espminer(web_system_info),
316
+ fan_mode=FanModeConfig.from_espminer(web_system_info),
317
+ )
318
+
319
+ @classmethod
320
+ def from_iceriver(cls, web_userpanel: dict) -> "MinerConfig":
321
+ return cls(
322
+ pools=PoolConfig.from_iceriver(web_userpanel),
323
+ )
324
+
325
+ @classmethod
326
+ def from_luxos(
327
+ cls,
328
+ rpc_tempctrl: dict,
329
+ rpc_fans: dict,
330
+ rpc_pools: dict,
331
+ rpc_groups: dict,
332
+ rpc_config: dict,
333
+ rpc_profiles: dict,
334
+ ) -> "MinerConfig":
335
+ return cls(
336
+ temperature=TemperatureConfig.from_luxos(rpc_tempctrl=rpc_tempctrl),
337
+ fan_mode=FanModeConfig.from_luxos(
338
+ rpc_tempctrl=rpc_tempctrl, rpc_fans=rpc_fans
339
+ ),
340
+ pools=PoolConfig.from_luxos(rpc_pools=rpc_pools, rpc_groups=rpc_groups),
341
+ mining_mode=MiningModeConfig.from_luxos(
342
+ rpc_config=rpc_config, rpc_profiles=rpc_profiles
343
+ ),
344
+ )
345
+
346
+ @classmethod
347
+ def from_hammer(cls, *args, **kwargs) -> "MinerConfig":
348
+ return cls.from_am_modern(*args, **kwargs)
pyasic/config/base.py ADDED
@@ -0,0 +1,150 @@
1
+ # ------------------------------------------------------------------------------
2
+ # Copyright 2022 Upstream Data Inc -
3
+ # -
4
+ # Licensed under the Apache License, Version 2.0 (the "License"); -
5
+ # you may not use this file except in compliance with the License. -
6
+ # You may obtain a copy of the License at -
7
+ # -
8
+ # http://www.apache.org/licenses/LICENSE-2.0 -
9
+ # -
10
+ # Unless required by applicable law or agreed to in writing, software -
11
+ # distributed under the License is distributed on an "AS IS" BASIS, -
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -
13
+ # See the License for the specific language governing permissions and -
14
+ # limitations under the License. -
15
+ # ------------------------------------------------------------------------------
16
+ from __future__ import annotations
17
+
18
+ from enum import Enum
19
+
20
+ from pydantic import BaseModel
21
+
22
+
23
+ class MinerConfigOption(Enum):
24
+ @classmethod
25
+ def from_dict(cls, dict_conf: dict | None):
26
+ return cls.default()
27
+
28
+ def as_am_modern(self) -> dict:
29
+ return self.value.as_am_modern()
30
+
31
+ def as_hiveon_modern(self) -> dict:
32
+ return self.value.as_hiveon_modern()
33
+
34
+ def as_am_old(self) -> dict:
35
+ return self.value.as_am_old()
36
+
37
+ def as_wm(self) -> dict:
38
+ return self.value.as_wm()
39
+
40
+ def as_inno(self) -> dict:
41
+ return self.value.as_inno()
42
+
43
+ def as_goldshell(self) -> dict:
44
+ return self.value.as_goldshell()
45
+
46
+ def as_avalon(self) -> dict:
47
+ return self.value.as_avalon()
48
+
49
+ def as_bosminer(self) -> dict:
50
+ return self.value.as_bosminer()
51
+
52
+ def as_boser(self) -> dict:
53
+ return self.value.as_boser
54
+
55
+ def as_epic(self) -> dict:
56
+ return self.value.as_epic()
57
+
58
+ def as_vnish(self) -> dict:
59
+ return self.value.as_vnish()
60
+
61
+ def as_auradine(self) -> dict:
62
+ return self.value.as_auradine()
63
+
64
+ def as_mara(self) -> dict:
65
+ return self.value.as_mara()
66
+
67
+ def as_espminer(self) -> dict:
68
+ return self.value.as_espminer()
69
+
70
+ def as_luxos(self) -> dict:
71
+ return self.value.as_luxos()
72
+
73
+ def as_elphapex(self) -> dict:
74
+ return self.value.as_elphapex()
75
+
76
+ def __call__(self, *args, **kwargs):
77
+ return self.value(*args, **kwargs)
78
+
79
+ @classmethod
80
+ def default(cls):
81
+ pass
82
+
83
+ def __getitem__(self, item):
84
+ try:
85
+ return getattr(self, item)
86
+ except AttributeError:
87
+ raise KeyError
88
+
89
+
90
+ class MinerConfigValue(BaseModel):
91
+ @classmethod
92
+ def from_dict(cls, dict_conf: dict | None):
93
+ return cls()
94
+
95
+ def as_dict(self) -> dict:
96
+ return self.model_dump()
97
+
98
+ def as_am_modern(self) -> dict:
99
+ return {}
100
+
101
+ def as_hiveon_modern(self) -> dict:
102
+ return {}
103
+
104
+ def as_am_old(self) -> dict:
105
+ return {}
106
+
107
+ def as_wm(self) -> dict:
108
+ return {}
109
+
110
+ def as_inno(self) -> dict:
111
+ return {}
112
+
113
+ def as_goldshell(self) -> dict:
114
+ return {}
115
+
116
+ def as_avalon(self) -> dict:
117
+ return {}
118
+
119
+ def as_bosminer(self) -> dict:
120
+ return {}
121
+
122
+ def as_boser(self) -> dict:
123
+ return {}
124
+
125
+ def as_epic(self) -> dict:
126
+ return {}
127
+
128
+ def as_vnish(self) -> dict:
129
+ return {}
130
+
131
+ def as_auradine(self) -> dict:
132
+ return {}
133
+
134
+ def as_mara(self) -> dict:
135
+ return {}
136
+
137
+ def as_espminer(self) -> dict:
138
+ return {}
139
+
140
+ def as_luxos(self) -> dict:
141
+ return {}
142
+
143
+ def as_elphapex(self) -> dict:
144
+ return {}
145
+
146
+ def __getitem__(self, item):
147
+ try:
148
+ return getattr(self, item)
149
+ except AttributeError:
150
+ raise KeyError