meshtensor-cli 9.27.1__tar.gz → 9.27.3__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 (100) hide show
  1. {meshtensor_cli-9.27.1 → meshtensor_cli-9.27.3}/PKG-INFO +1 -1
  2. {meshtensor_cli-9.27.1 → meshtensor_cli-9.27.3}/meshtensor_cli/cli.py +11 -0
  3. {meshtensor_cli-9.27.1 → meshtensor_cli-9.27.3}/meshtensor_cli/src/commands/governance/governance.py +47 -46
  4. {meshtensor_cli-9.27.1 → meshtensor_cli-9.27.3}/meshtensor_cli/src/commands/subnets/subnets.py +1 -1
  5. {meshtensor_cli-9.27.1 → meshtensor_cli-9.27.3}/pyproject.toml +1 -1
  6. {meshtensor_cli-9.27.1 → meshtensor_cli-9.27.3}/README.md +0 -0
  7. {meshtensor_cli-9.27.1 → meshtensor_cli-9.27.3}/meshtensor_cli/__init__.py +0 -0
  8. {meshtensor_cli-9.27.1 → meshtensor_cli-9.27.3}/meshtensor_cli/doc_generation_helper.py +0 -0
  9. {meshtensor_cli-9.27.1 → meshtensor_cli-9.27.3}/meshtensor_cli/src/__init__.py +0 -0
  10. {meshtensor_cli-9.27.1 → meshtensor_cli-9.27.3}/meshtensor_cli/src/bittensor/__init__.py +0 -0
  11. {meshtensor_cli-9.27.1 → meshtensor_cli-9.27.3}/meshtensor_cli/src/bittensor/balances.py +0 -0
  12. {meshtensor_cli-9.27.1 → meshtensor_cli-9.27.3}/meshtensor_cli/src/bittensor/chain_data.py +0 -0
  13. {meshtensor_cli-9.27.1 → meshtensor_cli-9.27.3}/meshtensor_cli/src/bittensor/extrinsics/__init__.py +0 -0
  14. {meshtensor_cli-9.27.1 → meshtensor_cli-9.27.3}/meshtensor_cli/src/bittensor/extrinsics/mev_shield.py +0 -0
  15. {meshtensor_cli-9.27.1 → meshtensor_cli-9.27.3}/meshtensor_cli/src/bittensor/extrinsics/registration.py +0 -0
  16. {meshtensor_cli-9.27.1 → meshtensor_cli-9.27.3}/meshtensor_cli/src/bittensor/extrinsics/root.py +0 -0
  17. {meshtensor_cli-9.27.1 → meshtensor_cli-9.27.3}/meshtensor_cli/src/bittensor/extrinsics/serving.py +0 -0
  18. {meshtensor_cli-9.27.1 → meshtensor_cli-9.27.3}/meshtensor_cli/src/bittensor/extrinsics/transfer.py +0 -0
  19. {meshtensor_cli-9.27.1 → meshtensor_cli-9.27.3}/meshtensor_cli/src/bittensor/minigraph.py +0 -0
  20. {meshtensor_cli-9.27.1 → meshtensor_cli-9.27.3}/meshtensor_cli/src/bittensor/networking.py +0 -0
  21. {meshtensor_cli-9.27.1 → meshtensor_cli-9.27.3}/meshtensor_cli/src/bittensor/subtensor_interface.py +0 -0
  22. {meshtensor_cli-9.27.1 → meshtensor_cli-9.27.3}/meshtensor_cli/src/bittensor/templates/main-filters.j2 +0 -0
  23. {meshtensor_cli-9.27.1 → meshtensor_cli-9.27.3}/meshtensor_cli/src/bittensor/templates/main-header.j2 +0 -0
  24. {meshtensor_cli-9.27.1 → meshtensor_cli-9.27.3}/meshtensor_cli/src/bittensor/templates/neuron-details.j2 +0 -0
  25. {meshtensor_cli-9.27.1 → meshtensor_cli-9.27.3}/meshtensor_cli/src/bittensor/templates/price-multi.j2 +0 -0
  26. {meshtensor_cli-9.27.1 → meshtensor_cli-9.27.3}/meshtensor_cli/src/bittensor/templates/price-single.j2 +0 -0
  27. {meshtensor_cli-9.27.1 → meshtensor_cli-9.27.3}/meshtensor_cli/src/bittensor/templates/subnet-details-header.j2 +0 -0
  28. {meshtensor_cli-9.27.1 → meshtensor_cli-9.27.3}/meshtensor_cli/src/bittensor/templates/subnet-details.j2 +0 -0
  29. {meshtensor_cli-9.27.1 → meshtensor_cli-9.27.3}/meshtensor_cli/src/bittensor/templates/subnet-metrics.j2 +0 -0
  30. {meshtensor_cli-9.27.1 → meshtensor_cli-9.27.3}/meshtensor_cli/src/bittensor/templates/subnets-table.j2 +0 -0
  31. {meshtensor_cli-9.27.1 → meshtensor_cli-9.27.3}/meshtensor_cli/src/bittensor/templates/table.j2 +0 -0
  32. {meshtensor_cli-9.27.1 → meshtensor_cli-9.27.3}/meshtensor_cli/src/bittensor/templates/view.css +0 -0
  33. {meshtensor_cli-9.27.1 → meshtensor_cli-9.27.3}/meshtensor_cli/src/bittensor/templates/view.j2 +0 -0
  34. {meshtensor_cli-9.27.1 → meshtensor_cli-9.27.3}/meshtensor_cli/src/bittensor/templates/view.js +0 -0
  35. {meshtensor_cli-9.27.1 → meshtensor_cli-9.27.3}/meshtensor_cli/src/bittensor/utils.py +0 -0
  36. {meshtensor_cli-9.27.1 → meshtensor_cli-9.27.3}/meshtensor_cli/src/commands/__init__.py +0 -0
  37. {meshtensor_cli-9.27.1 → meshtensor_cli-9.27.3}/meshtensor_cli/src/commands/axon/__init__.py +0 -0
  38. {meshtensor_cli-9.27.1 → meshtensor_cli-9.27.3}/meshtensor_cli/src/commands/axon/axon.py +0 -0
  39. {meshtensor_cli-9.27.1 → meshtensor_cli-9.27.3}/meshtensor_cli/src/commands/crowd/__init__.py +0 -0
  40. {meshtensor_cli-9.27.1 → meshtensor_cli-9.27.3}/meshtensor_cli/src/commands/crowd/contribute.py +0 -0
  41. {meshtensor_cli-9.27.1 → meshtensor_cli-9.27.3}/meshtensor_cli/src/commands/crowd/contributors.py +0 -0
  42. {meshtensor_cli-9.27.1 → meshtensor_cli-9.27.3}/meshtensor_cli/src/commands/crowd/create.py +0 -0
  43. {meshtensor_cli-9.27.1 → meshtensor_cli-9.27.3}/meshtensor_cli/src/commands/crowd/dissolve.py +0 -0
  44. {meshtensor_cli-9.27.1 → meshtensor_cli-9.27.3}/meshtensor_cli/src/commands/crowd/refund.py +0 -0
  45. {meshtensor_cli-9.27.1 → meshtensor_cli-9.27.3}/meshtensor_cli/src/commands/crowd/update.py +0 -0
  46. {meshtensor_cli-9.27.1 → meshtensor_cli-9.27.3}/meshtensor_cli/src/commands/crowd/utils.py +0 -0
  47. {meshtensor_cli-9.27.1 → meshtensor_cli-9.27.3}/meshtensor_cli/src/commands/crowd/view.py +0 -0
  48. {meshtensor_cli-9.27.1 → meshtensor_cli-9.27.3}/meshtensor_cli/src/commands/governance/__init__.py +0 -0
  49. {meshtensor_cli-9.27.1 → meshtensor_cli-9.27.3}/meshtensor_cli/src/commands/liquidity/__init__.py +0 -0
  50. {meshtensor_cli-9.27.1 → meshtensor_cli-9.27.3}/meshtensor_cli/src/commands/liquidity/liquidity.py +0 -0
  51. {meshtensor_cli-9.27.1 → meshtensor_cli-9.27.3}/meshtensor_cli/src/commands/liquidity/utils.py +0 -0
  52. {meshtensor_cli-9.27.1 → meshtensor_cli-9.27.3}/meshtensor_cli/src/commands/proxy.py +0 -0
  53. {meshtensor_cli-9.27.1 → meshtensor_cli-9.27.3}/meshtensor_cli/src/commands/stake/__init__.py +0 -0
  54. {meshtensor_cli-9.27.1 → meshtensor_cli-9.27.3}/meshtensor_cli/src/commands/stake/add.py +0 -0
  55. {meshtensor_cli-9.27.1 → meshtensor_cli-9.27.3}/meshtensor_cli/src/commands/stake/auto_staking.py +0 -0
  56. {meshtensor_cli-9.27.1 → meshtensor_cli-9.27.3}/meshtensor_cli/src/commands/stake/children_hotkeys.py +0 -0
  57. {meshtensor_cli-9.27.1 → meshtensor_cli-9.27.3}/meshtensor_cli/src/commands/stake/claim.py +0 -0
  58. {meshtensor_cli-9.27.1 → meshtensor_cli-9.27.3}/meshtensor_cli/src/commands/stake/list.py +0 -0
  59. {meshtensor_cli-9.27.1 → meshtensor_cli-9.27.3}/meshtensor_cli/src/commands/stake/move.py +0 -0
  60. {meshtensor_cli-9.27.1 → meshtensor_cli-9.27.3}/meshtensor_cli/src/commands/stake/remove.py +0 -0
  61. {meshtensor_cli-9.27.1 → meshtensor_cli-9.27.3}/meshtensor_cli/src/commands/stake/wizard.py +0 -0
  62. {meshtensor_cli-9.27.1 → meshtensor_cli-9.27.3}/meshtensor_cli/src/commands/subnets/__init__.py +0 -0
  63. {meshtensor_cli-9.27.1 → meshtensor_cli-9.27.3}/meshtensor_cli/src/commands/subnets/mechanisms.py +0 -0
  64. {meshtensor_cli-9.27.1 → meshtensor_cli-9.27.3}/meshtensor_cli/src/commands/subnets/price.py +0 -0
  65. {meshtensor_cli-9.27.1 → meshtensor_cli-9.27.3}/meshtensor_cli/src/commands/sudo.py +0 -0
  66. {meshtensor_cli-9.27.1 → meshtensor_cli-9.27.3}/meshtensor_cli/src/commands/tc/__init__.py +0 -0
  67. {meshtensor_cli-9.27.1 → meshtensor_cli-9.27.3}/meshtensor_cli/src/commands/tc/tc.py +0 -0
  68. {meshtensor_cli-9.27.1 → meshtensor_cli-9.27.3}/meshtensor_cli/src/commands/treasury/__init__.py +0 -0
  69. {meshtensor_cli-9.27.1 → meshtensor_cli-9.27.3}/meshtensor_cli/src/commands/treasury/treasury.py +0 -0
  70. {meshtensor_cli-9.27.1 → meshtensor_cli-9.27.3}/meshtensor_cli/src/commands/view.py +0 -0
  71. {meshtensor_cli-9.27.1 → meshtensor_cli-9.27.3}/meshtensor_cli/src/commands/wallets.py +0 -0
  72. {meshtensor_cli-9.27.1 → meshtensor_cli-9.27.3}/meshtensor_cli/src/commands/weights.py +0 -0
  73. {meshtensor_cli-9.27.1 → meshtensor_cli-9.27.3}/meshtensor_cli/src/meshtensor/__init__.py +0 -0
  74. {meshtensor_cli-9.27.1 → meshtensor_cli-9.27.3}/meshtensor_cli/src/meshtensor/balances.py +0 -0
  75. {meshtensor_cli-9.27.1 → meshtensor_cli-9.27.3}/meshtensor_cli/src/meshtensor/chain_data.py +0 -0
  76. {meshtensor_cli-9.27.1 → meshtensor_cli-9.27.3}/meshtensor_cli/src/meshtensor/extrinsics/__init__.py +0 -0
  77. {meshtensor_cli-9.27.1 → meshtensor_cli-9.27.3}/meshtensor_cli/src/meshtensor/extrinsics/mev_shield.py +0 -0
  78. {meshtensor_cli-9.27.1 → meshtensor_cli-9.27.3}/meshtensor_cli/src/meshtensor/extrinsics/registration.py +0 -0
  79. {meshtensor_cli-9.27.1 → meshtensor_cli-9.27.3}/meshtensor_cli/src/meshtensor/extrinsics/root.py +0 -0
  80. {meshtensor_cli-9.27.1 → meshtensor_cli-9.27.3}/meshtensor_cli/src/meshtensor/extrinsics/serving.py +0 -0
  81. {meshtensor_cli-9.27.1 → meshtensor_cli-9.27.3}/meshtensor_cli/src/meshtensor/extrinsics/transfer.py +0 -0
  82. {meshtensor_cli-9.27.1 → meshtensor_cli-9.27.3}/meshtensor_cli/src/meshtensor/meshtensor_interface.py +0 -0
  83. {meshtensor_cli-9.27.1 → meshtensor_cli-9.27.3}/meshtensor_cli/src/meshtensor/minigraph.py +0 -0
  84. {meshtensor_cli-9.27.1 → meshtensor_cli-9.27.3}/meshtensor_cli/src/meshtensor/networking.py +0 -0
  85. {meshtensor_cli-9.27.1 → meshtensor_cli-9.27.3}/meshtensor_cli/src/meshtensor/subtensor_interface.py +0 -0
  86. {meshtensor_cli-9.27.1 → meshtensor_cli-9.27.3}/meshtensor_cli/src/meshtensor/templates/main-filters.j2 +0 -0
  87. {meshtensor_cli-9.27.1 → meshtensor_cli-9.27.3}/meshtensor_cli/src/meshtensor/templates/main-header.j2 +0 -0
  88. {meshtensor_cli-9.27.1 → meshtensor_cli-9.27.3}/meshtensor_cli/src/meshtensor/templates/neuron-details.j2 +0 -0
  89. {meshtensor_cli-9.27.1 → meshtensor_cli-9.27.3}/meshtensor_cli/src/meshtensor/templates/price-multi.j2 +0 -0
  90. {meshtensor_cli-9.27.1 → meshtensor_cli-9.27.3}/meshtensor_cli/src/meshtensor/templates/price-single.j2 +0 -0
  91. {meshtensor_cli-9.27.1 → meshtensor_cli-9.27.3}/meshtensor_cli/src/meshtensor/templates/subnet-details-header.j2 +0 -0
  92. {meshtensor_cli-9.27.1 → meshtensor_cli-9.27.3}/meshtensor_cli/src/meshtensor/templates/subnet-details.j2 +0 -0
  93. {meshtensor_cli-9.27.1 → meshtensor_cli-9.27.3}/meshtensor_cli/src/meshtensor/templates/subnet-metrics.j2 +0 -0
  94. {meshtensor_cli-9.27.1 → meshtensor_cli-9.27.3}/meshtensor_cli/src/meshtensor/templates/subnets-table.j2 +0 -0
  95. {meshtensor_cli-9.27.1 → meshtensor_cli-9.27.3}/meshtensor_cli/src/meshtensor/templates/table.j2 +0 -0
  96. {meshtensor_cli-9.27.1 → meshtensor_cli-9.27.3}/meshtensor_cli/src/meshtensor/templates/view.css +0 -0
  97. {meshtensor_cli-9.27.1 → meshtensor_cli-9.27.3}/meshtensor_cli/src/meshtensor/templates/view.j2 +0 -0
  98. {meshtensor_cli-9.27.1 → meshtensor_cli-9.27.3}/meshtensor_cli/src/meshtensor/templates/view.js +0 -0
  99. {meshtensor_cli-9.27.1 → meshtensor_cli-9.27.3}/meshtensor_cli/src/meshtensor/utils.py +0 -0
  100. {meshtensor_cli-9.27.1 → meshtensor_cli-9.27.3}/meshtensor_cli/version.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: meshtensor-cli
3
- Version: 9.27.1
3
+ Version: 9.27.3
4
4
  Summary: Meshtensor CLI
5
5
  Author: meshtensor.com
6
6
  Requires-Python: >=3.9
@@ -1555,6 +1555,8 @@ class CLIManager:
1555
1555
  ) as e:
1556
1556
  if isinstance(e, SubstrateRequestException):
1557
1557
  print_error(str(e))
1558
+ elif isinstance(e, ConnectionClosed):
1559
+ print_error(f"Connection to the chain was closed unexpectedly: {e}")
1558
1560
  elif isinstance(e, RuntimeError):
1559
1561
  pass # Temporarily to handle loop bound issues
1560
1562
  verbose_console.print(traceback.format_exc())
@@ -10232,6 +10234,7 @@ class CLIManager:
10232
10234
  wallet = self.wallet_ask(
10233
10235
  wallet_name,
10234
10236
  wallet_path,
10237
+ None,
10235
10238
  ask_for=[WO.NAME, WO.PATH],
10236
10239
  validate=WV.WALLET,
10237
10240
  )
@@ -10281,6 +10284,7 @@ class CLIManager:
10281
10284
  wallet = self.wallet_ask(
10282
10285
  wallet_name,
10283
10286
  wallet_path,
10287
+ None,
10284
10288
  ask_for=[WO.NAME, WO.PATH],
10285
10289
  validate=WV.WALLET,
10286
10290
  )
@@ -10328,6 +10332,7 @@ class CLIManager:
10328
10332
  wallet = self.wallet_ask(
10329
10333
  wallet_name,
10330
10334
  wallet_path,
10335
+ None,
10331
10336
  ask_for=[WO.NAME, WO.PATH],
10332
10337
  validate=WV.WALLET,
10333
10338
  )
@@ -10362,6 +10367,7 @@ class CLIManager:
10362
10367
  wallet = self.wallet_ask(
10363
10368
  wallet_name,
10364
10369
  wallet_path,
10370
+ None,
10365
10371
  ask_for=[WO.NAME, WO.PATH],
10366
10372
  validate=WV.WALLET,
10367
10373
  )
@@ -10501,6 +10507,7 @@ class CLIManager:
10501
10507
  wallet = self.wallet_ask(
10502
10508
  wallet_name,
10503
10509
  wallet_path,
10510
+ None,
10504
10511
  ask_for=[WO.NAME, WO.PATH],
10505
10512
  validate=WV.WALLET,
10506
10513
  )
@@ -10526,6 +10533,7 @@ class CLIManager:
10526
10533
  wallet = self.wallet_ask(
10527
10534
  wallet_name,
10528
10535
  wallet_path,
10536
+ None,
10529
10537
  ask_for=[WO.NAME, WO.PATH],
10530
10538
  validate=WV.WALLET,
10531
10539
  )
@@ -10551,6 +10559,7 @@ class CLIManager:
10551
10559
  wallet = self.wallet_ask(
10552
10560
  wallet_name,
10553
10561
  wallet_path,
10562
+ None,
10554
10563
  ask_for=[WO.NAME, WO.PATH],
10555
10564
  validate=WV.WALLET,
10556
10565
  )
@@ -10598,6 +10607,7 @@ class CLIManager:
10598
10607
  wallet = self.wallet_ask(
10599
10608
  wallet_name,
10600
10609
  wallet_path,
10610
+ None,
10601
10611
  ask_for=[WO.NAME, WO.PATH],
10602
10612
  validate=WV.WALLET,
10603
10613
  )
@@ -10714,6 +10724,7 @@ class CLIManager:
10714
10724
  wallet = self.wallet_ask(
10715
10725
  wallet_name,
10716
10726
  wallet_path,
10727
+ None,
10717
10728
  ask_for=[WO.NAME, WO.PATH],
10718
10729
  validate=WV.WALLET,
10719
10730
  )
@@ -14,6 +14,8 @@ import sys
14
14
  from typing import TYPE_CHECKING, Optional
15
15
 
16
16
  from meshtensor_wallet import Wallet
17
+
18
+ from meshtensor_cli.src.meshtensor.balances import Balance
17
19
  from rich import box
18
20
  from rich.table import Column, Table
19
21
 
@@ -38,12 +40,12 @@ if TYPE_CHECKING:
38
40
  # ============================================================================
39
41
 
40
42
  GOVERNANCE_TRACKS = {
41
- 0: {"name": "Root", "description": "Runtime upgrades & consensus changes"},
42
- 1: {"name": "Treasury", "description": "Fund allocation & grants"},
43
- 2: {"name": "Param-Critical", "description": "Critical network parameters"},
44
- 3: {"name": "Param-Standard", "description": "Standard network parameters"},
45
- 4: {"name": "Subnet", "description": "Subnet-scoped governance"},
46
- 5: {"name": "Emergency", "description": "Emergency actions (TC co-signed)"},
43
+ 0: {"name": "Root", "description": "Runtime upgrades & consensus changes", "origin": {"system": "Root"}},
44
+ 1: {"name": "Treasury", "description": "Fund allocation & grants", "origin": {"GovernanceOrigins": "Treasurer"}},
45
+ 2: {"name": "Param-Critical", "description": "Critical network parameters", "origin": {"GovernanceOrigins": "ParameterCritical"}},
46
+ 3: {"name": "Param-Standard", "description": "Standard network parameters", "origin": {"GovernanceOrigins": "ParameterStandard"}},
47
+ 4: {"name": "Subnet", "description": "Subnet-scoped governance", "origin": {"GovernanceOrigins": "SubnetGovernance"}},
48
+ 5: {"name": "Emergency", "description": "Emergency actions (TC co-signed)", "origin": {"GovernanceOrigins": "Emergency"}},
47
49
  }
48
50
 
49
51
  CONVICTION_LEVELS = {
@@ -100,8 +102,8 @@ async def governance_propose(
100
102
  call_module="Referenda",
101
103
  call_function="submit",
102
104
  call_params={
103
- "proposal_origin": {"system": "Root"} if track == 0 else {"Origins": f"Track{track}"},
104
- "proposal": {"Lookup": {"hash": call_data, "len": 0}},
105
+ "proposal_origin": track_info["origin"],
106
+ "proposal": {"Inline": call_data},
105
107
  "enactment_moment": {"After": enactment_delay},
106
108
  },
107
109
  )
@@ -113,11 +115,11 @@ async def governance_propose(
113
115
  extrinsic, wait_for_inclusion=True
114
116
  )
115
117
 
116
- if response.is_success:
118
+ if await response.is_success:
117
119
  print_success(f"Referendum submitted successfully on {track_info['name']} Track")
118
- print_extrinsic_id(response)
120
+ await print_extrinsic_id(response)
119
121
  else:
120
- print_error(f"Failed to submit referendum: {response.error_message}")
122
+ print_error(f"Failed to submit referendum: {await response.error_message}")
121
123
  except Exception as e:
122
124
  print_error(f"Error submitting referendum: {e}")
123
125
 
@@ -163,7 +165,7 @@ async def governance_vote(
163
165
 
164
166
  if vote.lower() == "abstain":
165
167
  call = await subtensor.substrate.compose_call(
166
- call_module="ConvictionVoting",
168
+ call_module="MeshtensorVoting",
167
169
  call_function="vote",
168
170
  call_params={
169
171
  "poll_index": ref_index,
@@ -178,7 +180,7 @@ async def governance_vote(
178
180
  )
179
181
  else:
180
182
  call = await subtensor.substrate.compose_call(
181
- call_module="ConvictionVoting",
183
+ call_module="MeshtensorVoting",
182
184
  call_function="vote",
183
185
  call_params={
184
186
  "poll_index": ref_index,
@@ -198,11 +200,11 @@ async def governance_vote(
198
200
  extrinsic, wait_for_inclusion=True
199
201
  )
200
202
 
201
- if response.is_success:
203
+ if await response.is_success:
202
204
  print_success(f"Vote cast successfully: {vote.upper()} on referendum #{ref_index}")
203
- print_extrinsic_id(response)
205
+ await print_extrinsic_id(response)
204
206
  else:
205
- print_error(f"Failed to vote: {response.error_message}")
207
+ print_error(f"Failed to vote: {await response.error_message}")
206
208
  except Exception as e:
207
209
  print_error(f"Error voting: {e}")
208
210
 
@@ -263,13 +265,13 @@ async def governance_delegate(
263
265
  extrinsic, wait_for_inclusion=True
264
266
  )
265
267
 
266
- if response.is_success:
268
+ if await response.is_success:
267
269
  print_success(
268
270
  f"Delegated to {delegatee[:8]}...{delegatee[-8:]} on {track_info['name']} Track"
269
271
  )
270
- print_extrinsic_id(response)
272
+ await print_extrinsic_id(response)
271
273
  else:
272
- print_error(f"Failed to delegate: {response.error_message}")
274
+ print_error(f"Failed to delegate: {await response.error_message}")
273
275
  except Exception as e:
274
276
  print_error(f"Error delegating: {e}")
275
277
 
@@ -317,11 +319,11 @@ async def governance_undelegate(
317
319
  extrinsic, wait_for_inclusion=True
318
320
  )
319
321
 
320
- if response.is_success:
322
+ if await response.is_success:
321
323
  print_success(f"Delegation revoked on {track_info['name']} Track")
322
- print_extrinsic_id(response)
324
+ await print_extrinsic_id(response)
323
325
  else:
324
- print_error(f"Failed to undelegate: {response.error_message}")
326
+ print_error(f"Failed to undelegate: {await response.error_message}")
325
327
  except Exception as e:
326
328
  print_error(f"Error undelegating: {e}")
327
329
 
@@ -350,17 +352,20 @@ async def governance_list(
350
352
  async for ref_index, ref_info in referenda:
351
353
  ref_data = ref_info.value if hasattr(ref_info, "value") else ref_info
352
354
  if isinstance(ref_data, dict) and "Ongoing" in ref_data:
353
- ongoing = ref_data["Ongoing"]
355
+ ongoing_raw = ref_data["Ongoing"]
356
+ # SCALE decoder wraps enum variant values in a tuple
357
+ ongoing = ongoing_raw[0] if isinstance(ongoing_raw, tuple) else ongoing_raw
354
358
  ref_track = ongoing.get("track", -1)
355
359
  if track is not None and ref_track != track:
356
360
  continue
361
+ tally = ongoing.get("tally", {})
357
362
  results.append({
358
- "index": ref_index.value if hasattr(ref_index, "value") else ref_index,
363
+ "index": ref_index,
359
364
  "track": ref_track,
360
365
  "track_name": GOVERNANCE_TRACKS.get(ref_track, {}).get("name", "Unknown"),
361
- "tally_ayes": ongoing.get("tally", {}).get("ayes", 0),
362
- "tally_nays": ongoing.get("tally", {}).get("nays", 0),
363
- "tally_support": ongoing.get("tally", {}).get("support", 0),
366
+ "tally_ayes": tally.get("ayes", 0),
367
+ "tally_nays": tally.get("nays", 0),
368
+ "tally_support": tally.get("support", 0),
364
369
  "submitted": ongoing.get("submitted", 0),
365
370
  })
366
371
 
@@ -434,7 +439,8 @@ async def governance_info(
434
439
  console.print(f" Status: {list(ref_data.keys())[0] if isinstance(ref_data, dict) else 'Unknown'}")
435
440
 
436
441
  if isinstance(ref_data, dict) and "Ongoing" in ref_data:
437
- ongoing = ref_data["Ongoing"]
442
+ ongoing_raw = ref_data["Ongoing"]
443
+ ongoing = ongoing_raw[0] if isinstance(ongoing_raw, tuple) else ongoing_raw
438
444
  track_id = ongoing.get("track", -1)
439
445
  track_info = GOVERNANCE_TRACKS.get(track_id, {"name": "Unknown"})
440
446
 
@@ -478,15 +484,10 @@ async def governance_power(
478
484
  params=[account],
479
485
  )
480
486
 
481
- # Query total staked balance
482
- # This would need to read from the staking storage
483
- stake_info = await subtensor.substrate.query(
484
- module="MeshtensorModule",
485
- storage_function="TotalColdkeyStake",
486
- params=[account],
487
- )
488
-
489
- raw_stake = stake_info.value if stake_info else 0
487
+ # Query total staked balance via the interface method
488
+ stake_results = await subtensor.get_total_stake_for_coldkey(account)
489
+ tao_value, _ = stake_results.get(account, (Balance(0), Balance(0)))
490
+ raw_stake = int(tao_value.meshlet)
490
491
  cw = contribution_score.value if contribution_score else 0
491
492
 
492
493
  if output_json:
@@ -697,11 +698,11 @@ async def governance_signal_golr(
697
698
  extrinsic, wait_for_inclusion=True
698
699
  )
699
700
 
700
- if response.is_success:
701
+ if await response.is_success:
701
702
  print_success("GoLR signal submitted successfully")
702
- print_extrinsic_id(response)
703
+ await print_extrinsic_id(response)
703
704
  else:
704
- print_error(f"Failed to signal GoLR: {response.error_message}")
705
+ print_error(f"Failed to signal GoLR: {await response.error_message}")
705
706
  except Exception as e:
706
707
  print_error(f"Error signaling GoLR: {e}")
707
708
 
@@ -741,11 +742,11 @@ async def governance_update_scores(
741
742
  extrinsic, wait_for_inclusion=True
742
743
  )
743
744
 
744
- if response.is_success:
745
+ if await response.is_success:
745
746
  print_success("Contribution scores updated")
746
- print_extrinsic_id(response)
747
+ await print_extrinsic_id(response)
747
748
  else:
748
- print_error(f"Failed to update scores: {response.error_message}")
749
+ print_error(f"Failed to update scores: {await response.error_message}")
749
750
  except Exception as e:
750
751
  print_error(f"Error updating scores: {e}")
751
752
 
@@ -785,10 +786,10 @@ async def governance_distribute_rewards(
785
786
  extrinsic, wait_for_inclusion=True
786
787
  )
787
788
 
788
- if response.is_success:
789
+ if await response.is_success:
789
790
  print_success("Governance rewards distributed")
790
- print_extrinsic_id(response)
791
+ await print_extrinsic_id(response)
791
792
  else:
792
- print_error(f"Failed to distribute rewards: {response.error_message}")
793
+ print_error(f"Failed to distribute rewards: {await response.error_message}")
793
794
  except Exception as e:
794
795
  print_error(f"Error distributing rewards: {e}")
@@ -2807,7 +2807,7 @@ async def start_subnet(
2807
2807
  call=start_call,
2808
2808
  wallet=wallet,
2809
2809
  wait_for_inclusion=True,
2810
- wait_for_finalization=True,
2810
+ wait_for_finalization=False,
2811
2811
  proxy=proxy,
2812
2812
  )
2813
2813
 
@@ -4,7 +4,7 @@ build-backend = "flit_core.buildapi"
4
4
 
5
5
  [project]
6
6
  name = "meshtensor-cli"
7
- version = "9.27.1"
7
+ version = "9.27.3"
8
8
  description = "Meshtensor CLI"
9
9
  readme = "README.md"
10
10
  authors = [