bittensor-cli 8.1.1__py3-none-any.whl → 8.3.0__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.
- bittensor_cli/__init__.py +1 -1
- bittensor_cli/cli.py +352 -181
- bittensor_cli/src/__init__.py +4 -2
- bittensor_cli/src/bittensor/async_substrate_interface.py +27 -17
- bittensor_cli/src/bittensor/extrinsics/registration.py +41 -24
- bittensor_cli/src/bittensor/extrinsics/root.py +10 -6
- bittensor_cli/src/bittensor/extrinsics/transfer.py +22 -5
- bittensor_cli/src/bittensor/subtensor_interface.py +16 -14
- bittensor_cli/src/bittensor/utils.py +78 -13
- bittensor_cli/src/commands/root.py +22 -8
- bittensor_cli/src/commands/stake/children_hotkeys.py +16 -8
- bittensor_cli/src/commands/stake/stake.py +7 -2
- bittensor_cli/src/commands/subnets.py +4 -2
- bittensor_cli/src/commands/sudo.py +1 -0
- bittensor_cli/src/commands/wallets.py +75 -65
- bittensor_cli/src/commands/weights.py +48 -45
- {bittensor_cli-8.1.1.dist-info → bittensor_cli-8.3.0.dist-info}/METADATA +2 -2
- bittensor_cli-8.3.0.dist-info/RECORD +31 -0
- bittensor_cli-8.1.1.dist-info/RECORD +0 -31
- {bittensor_cli-8.1.1.dist-info → bittensor_cli-8.3.0.dist-info}/WHEEL +0 -0
- {bittensor_cli-8.1.1.dist-info → bittensor_cli-8.3.0.dist-info}/entry_points.txt +0 -0
- {bittensor_cli-8.1.1.dist-info → bittensor_cli-8.3.0.dist-info}/top_level.txt +0 -0
@@ -7,6 +7,7 @@ from bittensor_wallet import Wallet
|
|
7
7
|
import numpy as np
|
8
8
|
from numpy.typing import NDArray
|
9
9
|
from rich.prompt import Confirm
|
10
|
+
from substrateinterface.exceptions import SubstrateRequestException
|
10
11
|
|
11
12
|
from bittensor_cli.src.bittensor.utils import err_console, console, format_error_message
|
12
13
|
from bittensor_cli.src.bittensor.extrinsics.root import (
|
@@ -132,8 +133,10 @@ class SetWeightsExtrinsic:
|
|
132
133
|
# _logger.info("Commit Hash: {}".format(commit_hash))
|
133
134
|
try:
|
134
135
|
success, message = await self.do_commit_weights(commit_hash=commit_hash)
|
135
|
-
except
|
136
|
-
err_console.print(
|
136
|
+
except SubstrateRequestException as e:
|
137
|
+
err_console.print(
|
138
|
+
f"Error committing weights: {format_error_message(e, self.subtensor.substrate)}"
|
139
|
+
)
|
137
140
|
# bittensor.logging.error(f"Error committing weights: {e}")
|
138
141
|
success = False
|
139
142
|
message = "No attempt made. Perhaps it is too soon to commit weights!"
|
@@ -156,14 +159,11 @@ class SetWeightsExtrinsic:
|
|
156
159
|
salt_length = 8
|
157
160
|
self.salt = list(os.urandom(salt_length))
|
158
161
|
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
)
|
165
|
-
except Exception as e:
|
166
|
-
commit_success, commit_msg = False, str(e)
|
162
|
+
# Attempt to commit the weights to the blockchain.
|
163
|
+
commit_success, commit_msg = await self.commit_weights(
|
164
|
+
uids=weight_uids,
|
165
|
+
weights=weight_vals,
|
166
|
+
)
|
167
167
|
|
168
168
|
if commit_success:
|
169
169
|
current_time = datetime.now().astimezone().replace(microsecond=0)
|
@@ -207,11 +207,8 @@ class SetWeightsExtrinsic:
|
|
207
207
|
return False, f"Failed to commit weights hash. {commit_msg}"
|
208
208
|
|
209
209
|
async def reveal(self, weight_uids, weight_vals) -> tuple[bool, str]:
|
210
|
-
|
211
|
-
|
212
|
-
success, msg = await self.reveal_weights_extrinsic(weight_uids, weight_vals)
|
213
|
-
except Exception as e:
|
214
|
-
success, msg = False, str(e)
|
210
|
+
# Attempt to reveal the weights using the salt.
|
211
|
+
success, msg = await self.reveal_weights_extrinsic(weight_uids, weight_vals)
|
215
212
|
|
216
213
|
if success:
|
217
214
|
if not self.wait_for_finalization and not self.wait_for_inclusion:
|
@@ -253,11 +250,14 @@ class SetWeightsExtrinsic:
|
|
253
250
|
keypair=self.wallet.hotkey,
|
254
251
|
era={"period": 5},
|
255
252
|
)
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
253
|
+
try:
|
254
|
+
response = await self.subtensor.substrate.submit_extrinsic(
|
255
|
+
extrinsic,
|
256
|
+
wait_for_inclusion=self.wait_for_inclusion,
|
257
|
+
wait_for_finalization=self.wait_for_finalization,
|
258
|
+
)
|
259
|
+
except SubstrateRequestException as e:
|
260
|
+
return False, format_error_message(e, self.subtensor.substrate)
|
261
261
|
# We only wait here if we expect finalization.
|
262
262
|
if not self.wait_for_finalization and not self.wait_for_inclusion:
|
263
263
|
return True, "Not waiting for finalization or inclusion."
|
@@ -266,29 +266,25 @@ class SetWeightsExtrinsic:
|
|
266
266
|
if await response.is_success:
|
267
267
|
return True, "Successfully set weights."
|
268
268
|
else:
|
269
|
-
return False, format_error_message(
|
269
|
+
return False, format_error_message(
|
270
|
+
await response.error_message, self.subtensor.substrate
|
271
|
+
)
|
270
272
|
|
271
273
|
with console.status(
|
272
274
|
f":satellite: Setting weights on [white]{self.subtensor.network}[/white] ..."
|
273
275
|
):
|
274
|
-
|
275
|
-
success, error_message = await _do_set_weights()
|
276
|
-
|
277
|
-
if not self.wait_for_finalization and not self.wait_for_inclusion:
|
278
|
-
return True, "Not waiting for finalization or inclusion."
|
276
|
+
success, error_message = await _do_set_weights()
|
279
277
|
|
280
|
-
|
281
|
-
|
282
|
-
# bittensor.logging.success(prefix="Set weights", suffix="<green>Finalized: </green>" + str(success))
|
283
|
-
return True, "Successfully set weights and finalized."
|
284
|
-
else:
|
285
|
-
# bittensor.logging.error(msg=error_message, prefix="Set weights", suffix="<red>Failed: </red>")
|
286
|
-
return False, error_message
|
278
|
+
if not self.wait_for_finalization and not self.wait_for_inclusion:
|
279
|
+
return True, "Not waiting for finalization or inclusion."
|
287
280
|
|
288
|
-
|
289
|
-
|
290
|
-
# bittensor.logging.
|
291
|
-
return
|
281
|
+
if success:
|
282
|
+
console.print(":white_heavy_check_mark: [green]Finalized[/green]")
|
283
|
+
# bittensor.logging.success(prefix="Set weights", suffix="<green>Finalized: </green>" + str(success))
|
284
|
+
return True, "Successfully set weights and finalized."
|
285
|
+
else:
|
286
|
+
# bittensor.logging.error(msg=error_message, prefix="Set weights", suffix="<red>Failed: </red>")
|
287
|
+
return False, error_message
|
292
288
|
|
293
289
|
async def reveal_weights_extrinsic(
|
294
290
|
self, weight_uids, weight_vals
|
@@ -311,11 +307,14 @@ class SetWeightsExtrinsic:
|
|
311
307
|
call=call,
|
312
308
|
keypair=self.wallet.hotkey,
|
313
309
|
)
|
314
|
-
|
315
|
-
|
316
|
-
|
317
|
-
|
318
|
-
|
310
|
+
try:
|
311
|
+
response = await self.subtensor.substrate.submit_extrinsic(
|
312
|
+
extrinsic,
|
313
|
+
wait_for_inclusion=self.wait_for_inclusion,
|
314
|
+
wait_for_finalization=self.wait_for_finalization,
|
315
|
+
)
|
316
|
+
except SubstrateRequestException as e:
|
317
|
+
return False, format_error_message(e, self.subtensor.substrate)
|
319
318
|
|
320
319
|
if not self.wait_for_finalization and not self.wait_for_inclusion:
|
321
320
|
success, error_message = True, ""
|
@@ -327,7 +326,9 @@ class SetWeightsExtrinsic:
|
|
327
326
|
else:
|
328
327
|
success, error_message = (
|
329
328
|
False,
|
330
|
-
format_error_message(
|
329
|
+
format_error_message(
|
330
|
+
await response.error_message, self.subtensor.substrate
|
331
|
+
),
|
331
332
|
)
|
332
333
|
|
333
334
|
if success:
|
@@ -377,6 +378,7 @@ async def reveal_weights(
|
|
377
378
|
weights: list[float],
|
378
379
|
salt: list[int],
|
379
380
|
version: int,
|
381
|
+
prompt: bool = True,
|
380
382
|
) -> None:
|
381
383
|
"""Reveal weights for a specific subnet."""
|
382
384
|
uids_ = np.array(
|
@@ -396,7 +398,7 @@ async def reveal_weights(
|
|
396
398
|
)
|
397
399
|
# Call the reveal function in the module set_weights from extrinsics package
|
398
400
|
extrinsic = SetWeightsExtrinsic(
|
399
|
-
subtensor, wallet, netuid, uids_, weights_, list(salt_), version
|
401
|
+
subtensor, wallet, netuid, uids_, weights_, list(salt_), version, prompt=prompt
|
400
402
|
)
|
401
403
|
success, message = await extrinsic.reveal(weight_uids, weight_vals)
|
402
404
|
|
@@ -414,6 +416,7 @@ async def commit_weights(
|
|
414
416
|
weights: list[float],
|
415
417
|
salt: list[int],
|
416
418
|
version: int,
|
419
|
+
prompt: bool = True,
|
417
420
|
):
|
418
421
|
"""Commits weights and then reveals them for a specific subnet"""
|
419
422
|
uids_ = np.array(
|
@@ -429,7 +432,7 @@ async def commit_weights(
|
|
429
432
|
dtype=np.int64,
|
430
433
|
)
|
431
434
|
extrinsic = SetWeightsExtrinsic(
|
432
|
-
subtensor, wallet, netuid, uids_, weights_, list(salt_), version
|
435
|
+
subtensor, wallet, netuid, uids_, weights_, list(salt_), version, prompt=prompt
|
433
436
|
)
|
434
437
|
success, message = await extrinsic.set_weights_extrinsic()
|
435
438
|
if success:
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: bittensor-cli
|
3
|
-
Version: 8.
|
3
|
+
Version: 8.3.0
|
4
4
|
Summary: Bittensor CLI
|
5
5
|
Home-page: https://github.com/opentensor/btcli
|
6
6
|
Author: bittensor.com
|
@@ -41,7 +41,7 @@ Requires-Dist: scalecodec==1.2.11
|
|
41
41
|
Requires-Dist: substrate-interface~=1.7.9
|
42
42
|
Requires-Dist: typer~=0.12
|
43
43
|
Requires-Dist: websockets>=12.0
|
44
|
-
Requires-Dist: bittensor-wallet
|
44
|
+
Requires-Dist: bittensor-wallet>=2.0.2
|
45
45
|
Requires-Dist: bt-decode==0.2.0a0
|
46
46
|
Provides-Extra: cuda
|
47
47
|
Requires-Dist: cubit>=1.1.0; extra == "cuda"
|
@@ -0,0 +1,31 @@
|
|
1
|
+
bittensor_cli/__init__.py,sha256=O5T0sSkvfCnlXbdjLguIp-4w1jd6Bmb-TXgQINZD1uo,1217
|
2
|
+
bittensor_cli/cli.py,sha256=tMJBqFba9L267Ghl8Af228_MIR8h7nHfYrmN1Tz3xR8,169461
|
3
|
+
bittensor_cli/doc_generation_helper.py,sha256=GexqjEIKulWg84hpNBEchJ840oOgOi7DWpt447nsdNI,91
|
4
|
+
bittensor_cli/src/__init__.py,sha256=9hFSqapIynZbrjc9YHl2wARkPdk4pV5P5zLSvn-EbqM,11856
|
5
|
+
bittensor_cli/src/bittensor/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
6
|
+
bittensor_cli/src/bittensor/async_substrate_interface.py,sha256=EcvAoQcyDa_Sm8Ne-SNtMm8lUkZmkzDto1VUvqG0rlg,103271
|
7
|
+
bittensor_cli/src/bittensor/balances.py,sha256=102mg1iiliLSLx-EocQseWGHiWzRqcBBM-MRoObOdKo,10075
|
8
|
+
bittensor_cli/src/bittensor/chain_data.py,sha256=IsHWjmhJbTvud2i3IM1sfmBHP82VxNHC1iFDAtlLgXc,26490
|
9
|
+
bittensor_cli/src/bittensor/minigraph.py,sha256=17AjEA75MO7ez_NekOJSaAz6ARjPt99QG_7E1RJ_u_k,8891
|
10
|
+
bittensor_cli/src/bittensor/networking.py,sha256=pZLMs8YXpZzDMLXWMBb_Bj6TVkm_q9khyY-lnbwVMuE,462
|
11
|
+
bittensor_cli/src/bittensor/subtensor_interface.py,sha256=cwbRhS5qV0Jmref5Qe7rsuDy8ssrRqdObKHvaeGeoOc,43373
|
12
|
+
bittensor_cli/src/bittensor/utils.py,sha256=cvtej2aKix_EEU5FBeBCd3vIEZSt44R0dCidny7zyoA,33663
|
13
|
+
bittensor_cli/src/bittensor/extrinsics/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
14
|
+
bittensor_cli/src/bittensor/extrinsics/registration.py,sha256=xrEdN_gbL6fFNh-tZRwgB-Xpb8fUer1nSd3Xr5f7x9g,59202
|
15
|
+
bittensor_cli/src/bittensor/extrinsics/root.py,sha256=RZEQv6QVDAQDjuX_vgjOMsatYvHpA3MW8zueiL6jxlE,19376
|
16
|
+
bittensor_cli/src/bittensor/extrinsics/transfer.py,sha256=ZqbUcaGVENFP0nviLj914lJXcQ_bHpUpyudPlrmSCzw,8830
|
17
|
+
bittensor_cli/src/bittensor/templates/table.j2,sha256=P2EFiksnO1cQsB8zjK6hVJwUryHTsLslzRE0YtobAV8,10601
|
18
|
+
bittensor_cli/src/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
19
|
+
bittensor_cli/src/commands/root.py,sha256=MiNdEg2SCPYv4Q_8aSgGn_9Giotv-k5JEnwgjrDA09A,62753
|
20
|
+
bittensor_cli/src/commands/subnets.py,sha256=0tf3DhdCmvIQA_64gFTfhk9spOA9PHSn4NUsswjbY0U,33445
|
21
|
+
bittensor_cli/src/commands/sudo.py,sha256=lpmZBT2xoAcERQNjJN__6nBmFUNcbXFTdNvl3S_T5Cg,8310
|
22
|
+
bittensor_cli/src/commands/wallets.py,sha256=lHuChXL9n4esIktENZjffdVnNKaFQaBhtuIHvunqrvs,60286
|
23
|
+
bittensor_cli/src/commands/weights.py,sha256=UHakAMTNqRkg_fkiyebbZAT9T3UEf93MmdbFgPSbqUw,16520
|
24
|
+
bittensor_cli/src/commands/stake/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
25
|
+
bittensor_cli/src/commands/stake/children_hotkeys.py,sha256=3FapotpWGbE_i6RELt0Sqlk5Bvao4Sd3tQibLS13nKQ,28667
|
26
|
+
bittensor_cli/src/commands/stake/stake.py,sha256=lGLMWdE3RVmYcr57pMwKljQI8vRX3WFRltmXWHdnKy8,56622
|
27
|
+
bittensor_cli-8.3.0.dist-info/METADATA,sha256=5SilMKuTyLT2Y6r_zi1Gh3kFJWSzWUQvidQQADezkfs,6788
|
28
|
+
bittensor_cli-8.3.0.dist-info/WHEEL,sha256=eOLhNAGa2EW3wWl_TU484h7q1UNgy0JXjjoqKoxAAQc,92
|
29
|
+
bittensor_cli-8.3.0.dist-info/entry_points.txt,sha256=hBTLGLbVxmAKy69XSKaUZvjTCmyEzDGZKq4S8UOto8I,49
|
30
|
+
bittensor_cli-8.3.0.dist-info/top_level.txt,sha256=DvgvXpmTtI_Q1BbDZMlK90LFcGFCreN1daViEPV2iFw,14
|
31
|
+
bittensor_cli-8.3.0.dist-info/RECORD,,
|
@@ -1,31 +0,0 @@
|
|
1
|
-
bittensor_cli/__init__.py,sha256=cUy43I3VLh8UFu3EYWnfJXRS40anEFV4y4qK2WAD-o4,1217
|
2
|
-
bittensor_cli/cli.py,sha256=RVXKxT-p2UkFJONHjUljyDdrluQz7PM69YXn96oYESM,163901
|
3
|
-
bittensor_cli/doc_generation_helper.py,sha256=GexqjEIKulWg84hpNBEchJ840oOgOi7DWpt447nsdNI,91
|
4
|
-
bittensor_cli/src/__init__.py,sha256=6LdZwIvoSr6UomZUH_wNFeo7cNPgxl_dZhtdC5asJgA,11746
|
5
|
-
bittensor_cli/src/bittensor/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
6
|
-
bittensor_cli/src/bittensor/async_substrate_interface.py,sha256=Y_wKDS7_JJpvM2dzz6wm34o4LuxWqWY_1kYmRyVlhlg,102875
|
7
|
-
bittensor_cli/src/bittensor/balances.py,sha256=102mg1iiliLSLx-EocQseWGHiWzRqcBBM-MRoObOdKo,10075
|
8
|
-
bittensor_cli/src/bittensor/chain_data.py,sha256=IsHWjmhJbTvud2i3IM1sfmBHP82VxNHC1iFDAtlLgXc,26490
|
9
|
-
bittensor_cli/src/bittensor/minigraph.py,sha256=17AjEA75MO7ez_NekOJSaAz6ARjPt99QG_7E1RJ_u_k,8891
|
10
|
-
bittensor_cli/src/bittensor/networking.py,sha256=pZLMs8YXpZzDMLXWMBb_Bj6TVkm_q9khyY-lnbwVMuE,462
|
11
|
-
bittensor_cli/src/bittensor/subtensor_interface.py,sha256=QjOtuvDPqmITlEHPBm6iH_fcjhmEHd235onAKJypvgQ,43233
|
12
|
-
bittensor_cli/src/bittensor/utils.py,sha256=lOmMeOGFn0j0Zjoj2OsHCmS8pDkVWkvQk81IMwZ3bHg,31053
|
13
|
-
bittensor_cli/src/bittensor/extrinsics/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
14
|
-
bittensor_cli/src/bittensor/extrinsics/registration.py,sha256=aPjl9z2Kakc29cHaVPtESVE3j0IiZfHHSAK6SHbgBrc,58553
|
15
|
-
bittensor_cli/src/bittensor/extrinsics/root.py,sha256=HKxK__1gWHjCHLljHP2YmjddZXe_yW_jnSIh_r1ojb8,19030
|
16
|
-
bittensor_cli/src/bittensor/extrinsics/transfer.py,sha256=NwH5bAVAT9Yw1-pqbPgUc8ilC5KXLzZE_piwPomSHi0,8145
|
17
|
-
bittensor_cli/src/bittensor/templates/table.j2,sha256=P2EFiksnO1cQsB8zjK6hVJwUryHTsLslzRE0YtobAV8,10601
|
18
|
-
bittensor_cli/src/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
19
|
-
bittensor_cli/src/commands/root.py,sha256=chNiqMiUw8k21yNAu9_rWJEypuN5TwgnE1frPRtGvkU,62017
|
20
|
-
bittensor_cli/src/commands/subnets.py,sha256=QwxUah7i_1x5WvVOp_icWeZwJ7G6e2mVC4MianI_gQw,33330
|
21
|
-
bittensor_cli/src/commands/sudo.py,sha256=uRimJ2EDrcanajrvtl_qMM16OOO3HuJvU_N50ePiPAY,8226
|
22
|
-
bittensor_cli/src/commands/wallets.py,sha256=NzbFo0gzpgbTVGCrB7JZSNlZprtPApg2usIZ1Z-_CJo,59998
|
23
|
-
bittensor_cli/src/commands/weights.py,sha256=R_KKPPclsQyLGPhpHX1QNCckQWDtAfftkcHdZvn-O-Y,16353
|
24
|
-
bittensor_cli/src/commands/stake/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
25
|
-
bittensor_cli/src/commands/stake/children_hotkeys.py,sha256=EhdCzJO01OphZwJ1uBAxhkdTkittp-5QDIwnQ2Tuxy0,28416
|
26
|
-
bittensor_cli/src/commands/stake/stake.py,sha256=Un97mOo8xdxWs52IMI7pk4owLW4MtORM3ikP65DTvw8,56192
|
27
|
-
bittensor_cli-8.1.1.dist-info/METADATA,sha256=iC5Et4fr0QpAdqVjCmitAd9PSvXp4QuUKPcJlUl-GvQ,6788
|
28
|
-
bittensor_cli-8.1.1.dist-info/WHEEL,sha256=eOLhNAGa2EW3wWl_TU484h7q1UNgy0JXjjoqKoxAAQc,92
|
29
|
-
bittensor_cli-8.1.1.dist-info/entry_points.txt,sha256=hBTLGLbVxmAKy69XSKaUZvjTCmyEzDGZKq4S8UOto8I,49
|
30
|
-
bittensor_cli-8.1.1.dist-info/top_level.txt,sha256=DvgvXpmTtI_Q1BbDZMlK90LFcGFCreN1daViEPV2iFw,14
|
31
|
-
bittensor_cli-8.1.1.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|