meshtensor-cli 9.27.0__tar.gz → 9.27.2__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.0 → meshtensor_cli-9.27.2}/PKG-INFO +6 -6
  2. {meshtensor_cli-9.27.0 → meshtensor_cli-9.27.2}/README.md +5 -5
  3. {meshtensor_cli-9.27.0 → meshtensor_cli-9.27.2}/meshtensor_cli/cli.py +27 -18
  4. {meshtensor_cli-9.27.0 → meshtensor_cli-9.27.2}/meshtensor_cli/src/bittensor/utils.py +1 -1
  5. {meshtensor_cli-9.27.0 → meshtensor_cli-9.27.2}/meshtensor_cli/src/commands/governance/governance.py +47 -46
  6. {meshtensor_cli-9.27.0 → meshtensor_cli-9.27.2}/meshtensor_cli/src/commands/weights.py +1 -1
  7. {meshtensor_cli-9.27.0 → meshtensor_cli-9.27.2}/meshtensor_cli/src/meshtensor/utils.py +1 -1
  8. {meshtensor_cli-9.27.0 → meshtensor_cli-9.27.2}/pyproject.toml +1 -1
  9. {meshtensor_cli-9.27.0 → meshtensor_cli-9.27.2}/meshtensor_cli/__init__.py +0 -0
  10. {meshtensor_cli-9.27.0 → meshtensor_cli-9.27.2}/meshtensor_cli/doc_generation_helper.py +0 -0
  11. {meshtensor_cli-9.27.0 → meshtensor_cli-9.27.2}/meshtensor_cli/src/__init__.py +0 -0
  12. {meshtensor_cli-9.27.0 → meshtensor_cli-9.27.2}/meshtensor_cli/src/bittensor/__init__.py +0 -0
  13. {meshtensor_cli-9.27.0 → meshtensor_cli-9.27.2}/meshtensor_cli/src/bittensor/balances.py +0 -0
  14. {meshtensor_cli-9.27.0 → meshtensor_cli-9.27.2}/meshtensor_cli/src/bittensor/chain_data.py +0 -0
  15. {meshtensor_cli-9.27.0 → meshtensor_cli-9.27.2}/meshtensor_cli/src/bittensor/extrinsics/__init__.py +0 -0
  16. {meshtensor_cli-9.27.0 → meshtensor_cli-9.27.2}/meshtensor_cli/src/bittensor/extrinsics/mev_shield.py +0 -0
  17. {meshtensor_cli-9.27.0 → meshtensor_cli-9.27.2}/meshtensor_cli/src/bittensor/extrinsics/registration.py +0 -0
  18. {meshtensor_cli-9.27.0 → meshtensor_cli-9.27.2}/meshtensor_cli/src/bittensor/extrinsics/root.py +0 -0
  19. {meshtensor_cli-9.27.0 → meshtensor_cli-9.27.2}/meshtensor_cli/src/bittensor/extrinsics/serving.py +0 -0
  20. {meshtensor_cli-9.27.0 → meshtensor_cli-9.27.2}/meshtensor_cli/src/bittensor/extrinsics/transfer.py +0 -0
  21. {meshtensor_cli-9.27.0 → meshtensor_cli-9.27.2}/meshtensor_cli/src/bittensor/minigraph.py +0 -0
  22. {meshtensor_cli-9.27.0 → meshtensor_cli-9.27.2}/meshtensor_cli/src/bittensor/networking.py +0 -0
  23. {meshtensor_cli-9.27.0 → meshtensor_cli-9.27.2}/meshtensor_cli/src/bittensor/subtensor_interface.py +0 -0
  24. {meshtensor_cli-9.27.0 → meshtensor_cli-9.27.2}/meshtensor_cli/src/bittensor/templates/main-filters.j2 +0 -0
  25. {meshtensor_cli-9.27.0 → meshtensor_cli-9.27.2}/meshtensor_cli/src/bittensor/templates/main-header.j2 +0 -0
  26. {meshtensor_cli-9.27.0 → meshtensor_cli-9.27.2}/meshtensor_cli/src/bittensor/templates/neuron-details.j2 +0 -0
  27. {meshtensor_cli-9.27.0 → meshtensor_cli-9.27.2}/meshtensor_cli/src/bittensor/templates/price-multi.j2 +0 -0
  28. {meshtensor_cli-9.27.0 → meshtensor_cli-9.27.2}/meshtensor_cli/src/bittensor/templates/price-single.j2 +0 -0
  29. {meshtensor_cli-9.27.0 → meshtensor_cli-9.27.2}/meshtensor_cli/src/bittensor/templates/subnet-details-header.j2 +0 -0
  30. {meshtensor_cli-9.27.0 → meshtensor_cli-9.27.2}/meshtensor_cli/src/bittensor/templates/subnet-details.j2 +0 -0
  31. {meshtensor_cli-9.27.0 → meshtensor_cli-9.27.2}/meshtensor_cli/src/bittensor/templates/subnet-metrics.j2 +0 -0
  32. {meshtensor_cli-9.27.0 → meshtensor_cli-9.27.2}/meshtensor_cli/src/bittensor/templates/subnets-table.j2 +0 -0
  33. {meshtensor_cli-9.27.0 → meshtensor_cli-9.27.2}/meshtensor_cli/src/bittensor/templates/table.j2 +0 -0
  34. {meshtensor_cli-9.27.0 → meshtensor_cli-9.27.2}/meshtensor_cli/src/bittensor/templates/view.css +0 -0
  35. {meshtensor_cli-9.27.0 → meshtensor_cli-9.27.2}/meshtensor_cli/src/bittensor/templates/view.j2 +0 -0
  36. {meshtensor_cli-9.27.0 → meshtensor_cli-9.27.2}/meshtensor_cli/src/bittensor/templates/view.js +0 -0
  37. {meshtensor_cli-9.27.0 → meshtensor_cli-9.27.2}/meshtensor_cli/src/commands/__init__.py +0 -0
  38. {meshtensor_cli-9.27.0 → meshtensor_cli-9.27.2}/meshtensor_cli/src/commands/axon/__init__.py +0 -0
  39. {meshtensor_cli-9.27.0 → meshtensor_cli-9.27.2}/meshtensor_cli/src/commands/axon/axon.py +0 -0
  40. {meshtensor_cli-9.27.0 → meshtensor_cli-9.27.2}/meshtensor_cli/src/commands/crowd/__init__.py +0 -0
  41. {meshtensor_cli-9.27.0 → meshtensor_cli-9.27.2}/meshtensor_cli/src/commands/crowd/contribute.py +0 -0
  42. {meshtensor_cli-9.27.0 → meshtensor_cli-9.27.2}/meshtensor_cli/src/commands/crowd/contributors.py +0 -0
  43. {meshtensor_cli-9.27.0 → meshtensor_cli-9.27.2}/meshtensor_cli/src/commands/crowd/create.py +0 -0
  44. {meshtensor_cli-9.27.0 → meshtensor_cli-9.27.2}/meshtensor_cli/src/commands/crowd/dissolve.py +0 -0
  45. {meshtensor_cli-9.27.0 → meshtensor_cli-9.27.2}/meshtensor_cli/src/commands/crowd/refund.py +0 -0
  46. {meshtensor_cli-9.27.0 → meshtensor_cli-9.27.2}/meshtensor_cli/src/commands/crowd/update.py +0 -0
  47. {meshtensor_cli-9.27.0 → meshtensor_cli-9.27.2}/meshtensor_cli/src/commands/crowd/utils.py +0 -0
  48. {meshtensor_cli-9.27.0 → meshtensor_cli-9.27.2}/meshtensor_cli/src/commands/crowd/view.py +0 -0
  49. {meshtensor_cli-9.27.0 → meshtensor_cli-9.27.2}/meshtensor_cli/src/commands/governance/__init__.py +0 -0
  50. {meshtensor_cli-9.27.0 → meshtensor_cli-9.27.2}/meshtensor_cli/src/commands/liquidity/__init__.py +0 -0
  51. {meshtensor_cli-9.27.0 → meshtensor_cli-9.27.2}/meshtensor_cli/src/commands/liquidity/liquidity.py +0 -0
  52. {meshtensor_cli-9.27.0 → meshtensor_cli-9.27.2}/meshtensor_cli/src/commands/liquidity/utils.py +0 -0
  53. {meshtensor_cli-9.27.0 → meshtensor_cli-9.27.2}/meshtensor_cli/src/commands/proxy.py +0 -0
  54. {meshtensor_cli-9.27.0 → meshtensor_cli-9.27.2}/meshtensor_cli/src/commands/stake/__init__.py +0 -0
  55. {meshtensor_cli-9.27.0 → meshtensor_cli-9.27.2}/meshtensor_cli/src/commands/stake/add.py +0 -0
  56. {meshtensor_cli-9.27.0 → meshtensor_cli-9.27.2}/meshtensor_cli/src/commands/stake/auto_staking.py +0 -0
  57. {meshtensor_cli-9.27.0 → meshtensor_cli-9.27.2}/meshtensor_cli/src/commands/stake/children_hotkeys.py +0 -0
  58. {meshtensor_cli-9.27.0 → meshtensor_cli-9.27.2}/meshtensor_cli/src/commands/stake/claim.py +0 -0
  59. {meshtensor_cli-9.27.0 → meshtensor_cli-9.27.2}/meshtensor_cli/src/commands/stake/list.py +0 -0
  60. {meshtensor_cli-9.27.0 → meshtensor_cli-9.27.2}/meshtensor_cli/src/commands/stake/move.py +0 -0
  61. {meshtensor_cli-9.27.0 → meshtensor_cli-9.27.2}/meshtensor_cli/src/commands/stake/remove.py +0 -0
  62. {meshtensor_cli-9.27.0 → meshtensor_cli-9.27.2}/meshtensor_cli/src/commands/stake/wizard.py +0 -0
  63. {meshtensor_cli-9.27.0 → meshtensor_cli-9.27.2}/meshtensor_cli/src/commands/subnets/__init__.py +0 -0
  64. {meshtensor_cli-9.27.0 → meshtensor_cli-9.27.2}/meshtensor_cli/src/commands/subnets/mechanisms.py +0 -0
  65. {meshtensor_cli-9.27.0 → meshtensor_cli-9.27.2}/meshtensor_cli/src/commands/subnets/price.py +0 -0
  66. {meshtensor_cli-9.27.0 → meshtensor_cli-9.27.2}/meshtensor_cli/src/commands/subnets/subnets.py +0 -0
  67. {meshtensor_cli-9.27.0 → meshtensor_cli-9.27.2}/meshtensor_cli/src/commands/sudo.py +0 -0
  68. {meshtensor_cli-9.27.0 → meshtensor_cli-9.27.2}/meshtensor_cli/src/commands/tc/__init__.py +0 -0
  69. {meshtensor_cli-9.27.0 → meshtensor_cli-9.27.2}/meshtensor_cli/src/commands/tc/tc.py +0 -0
  70. {meshtensor_cli-9.27.0 → meshtensor_cli-9.27.2}/meshtensor_cli/src/commands/treasury/__init__.py +0 -0
  71. {meshtensor_cli-9.27.0 → meshtensor_cli-9.27.2}/meshtensor_cli/src/commands/treasury/treasury.py +0 -0
  72. {meshtensor_cli-9.27.0 → meshtensor_cli-9.27.2}/meshtensor_cli/src/commands/view.py +0 -0
  73. {meshtensor_cli-9.27.0 → meshtensor_cli-9.27.2}/meshtensor_cli/src/commands/wallets.py +0 -0
  74. {meshtensor_cli-9.27.0 → meshtensor_cli-9.27.2}/meshtensor_cli/src/meshtensor/__init__.py +0 -0
  75. {meshtensor_cli-9.27.0 → meshtensor_cli-9.27.2}/meshtensor_cli/src/meshtensor/balances.py +0 -0
  76. {meshtensor_cli-9.27.0 → meshtensor_cli-9.27.2}/meshtensor_cli/src/meshtensor/chain_data.py +0 -0
  77. {meshtensor_cli-9.27.0 → meshtensor_cli-9.27.2}/meshtensor_cli/src/meshtensor/extrinsics/__init__.py +0 -0
  78. {meshtensor_cli-9.27.0 → meshtensor_cli-9.27.2}/meshtensor_cli/src/meshtensor/extrinsics/mev_shield.py +0 -0
  79. {meshtensor_cli-9.27.0 → meshtensor_cli-9.27.2}/meshtensor_cli/src/meshtensor/extrinsics/registration.py +0 -0
  80. {meshtensor_cli-9.27.0 → meshtensor_cli-9.27.2}/meshtensor_cli/src/meshtensor/extrinsics/root.py +0 -0
  81. {meshtensor_cli-9.27.0 → meshtensor_cli-9.27.2}/meshtensor_cli/src/meshtensor/extrinsics/serving.py +0 -0
  82. {meshtensor_cli-9.27.0 → meshtensor_cli-9.27.2}/meshtensor_cli/src/meshtensor/extrinsics/transfer.py +0 -0
  83. {meshtensor_cli-9.27.0 → meshtensor_cli-9.27.2}/meshtensor_cli/src/meshtensor/meshtensor_interface.py +0 -0
  84. {meshtensor_cli-9.27.0 → meshtensor_cli-9.27.2}/meshtensor_cli/src/meshtensor/minigraph.py +0 -0
  85. {meshtensor_cli-9.27.0 → meshtensor_cli-9.27.2}/meshtensor_cli/src/meshtensor/networking.py +0 -0
  86. {meshtensor_cli-9.27.0 → meshtensor_cli-9.27.2}/meshtensor_cli/src/meshtensor/subtensor_interface.py +0 -0
  87. {meshtensor_cli-9.27.0 → meshtensor_cli-9.27.2}/meshtensor_cli/src/meshtensor/templates/main-filters.j2 +0 -0
  88. {meshtensor_cli-9.27.0 → meshtensor_cli-9.27.2}/meshtensor_cli/src/meshtensor/templates/main-header.j2 +0 -0
  89. {meshtensor_cli-9.27.0 → meshtensor_cli-9.27.2}/meshtensor_cli/src/meshtensor/templates/neuron-details.j2 +0 -0
  90. {meshtensor_cli-9.27.0 → meshtensor_cli-9.27.2}/meshtensor_cli/src/meshtensor/templates/price-multi.j2 +0 -0
  91. {meshtensor_cli-9.27.0 → meshtensor_cli-9.27.2}/meshtensor_cli/src/meshtensor/templates/price-single.j2 +0 -0
  92. {meshtensor_cli-9.27.0 → meshtensor_cli-9.27.2}/meshtensor_cli/src/meshtensor/templates/subnet-details-header.j2 +0 -0
  93. {meshtensor_cli-9.27.0 → meshtensor_cli-9.27.2}/meshtensor_cli/src/meshtensor/templates/subnet-details.j2 +0 -0
  94. {meshtensor_cli-9.27.0 → meshtensor_cli-9.27.2}/meshtensor_cli/src/meshtensor/templates/subnet-metrics.j2 +0 -0
  95. {meshtensor_cli-9.27.0 → meshtensor_cli-9.27.2}/meshtensor_cli/src/meshtensor/templates/subnets-table.j2 +0 -0
  96. {meshtensor_cli-9.27.0 → meshtensor_cli-9.27.2}/meshtensor_cli/src/meshtensor/templates/table.j2 +0 -0
  97. {meshtensor_cli-9.27.0 → meshtensor_cli-9.27.2}/meshtensor_cli/src/meshtensor/templates/view.css +0 -0
  98. {meshtensor_cli-9.27.0 → meshtensor_cli-9.27.2}/meshtensor_cli/src/meshtensor/templates/view.j2 +0 -0
  99. {meshtensor_cli-9.27.0 → meshtensor_cli-9.27.2}/meshtensor_cli/src/meshtensor/templates/view.js +0 -0
  100. {meshtensor_cli-9.27.0 → meshtensor_cli-9.27.2}/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.0
3
+ Version: 9.27.2
4
4
  Summary: Meshtensor CLI
5
5
  Author: meshtensor.com
6
6
  Requires-Python: >=3.9
@@ -213,12 +213,12 @@ meshcli config --help
213
213
  ```
214
214
 
215
215
  ### ENV VARS
216
- BTCLI accepts a few environment variables that can alter how it works:
216
+ MeshCLI accepts a few environment variables that can alter how it works:
217
217
  - USE_TORCH (default 0): If set to 1, will use torch instead of numpy
218
218
  - DISK_CACHE (default 0, also settable in config): If set to 1 (or set in config), will use disk caching for various safe-cachable substrate
219
219
  calls (such as block number to block hash mapping), which can speed up subsequent calls.
220
- - BTCLI_CONFIG_PATH (default `~/.meshtensor/config.yml`): This will set the config file location, creating if it does not exist.
221
- - BTCLI_DEBUG_FILE (default `~/.meshtensor/debug.txt`): The file stores the most recent's command's debug log.
220
+ - MeshCLI_CONFIG_PATH (default `~/.meshtensor/config.yml`): This will set the config file location, creating if it does not exist.
221
+ - MeshCLI_DEBUG_FILE (default `~/.meshtensor/debug.txt`): The file stores the most recent's command's debug log.
222
222
 
223
223
  ---
224
224
 
@@ -229,8 +229,8 @@ determining the root cause of issues.
229
229
 
230
230
  Additionally, you can pull a debug log.
231
231
 
232
- BTCLI will store a debug log for every command run. This file is overwritten for each new command run. The default location
233
- of this file is `~/.meshtensor/debug.txt` and can be set with the `BTCLI_DEBUG_FILE` env var (see above section).
232
+ MeshCLI will store a debug log for every command run. This file is overwritten for each new command run. The default location
233
+ of this file is `~/.meshtensor/debug.txt` and can be set with the `MeshCLI_DEBUG_FILE` env var (see above section).
234
234
 
235
235
  The debug log will **NOT** contain any sensitive data (private keys), and is intended to be sent to the developers
236
236
  for debugging. This file contains basic information about the command being run, the config, and the back and forth of requests and responses
@@ -169,12 +169,12 @@ meshcli config --help
169
169
  ```
170
170
 
171
171
  ### ENV VARS
172
- BTCLI accepts a few environment variables that can alter how it works:
172
+ MeshCLI accepts a few environment variables that can alter how it works:
173
173
  - USE_TORCH (default 0): If set to 1, will use torch instead of numpy
174
174
  - DISK_CACHE (default 0, also settable in config): If set to 1 (or set in config), will use disk caching for various safe-cachable substrate
175
175
  calls (such as block number to block hash mapping), which can speed up subsequent calls.
176
- - BTCLI_CONFIG_PATH (default `~/.meshtensor/config.yml`): This will set the config file location, creating if it does not exist.
177
- - BTCLI_DEBUG_FILE (default `~/.meshtensor/debug.txt`): The file stores the most recent's command's debug log.
176
+ - MeshCLI_CONFIG_PATH (default `~/.meshtensor/config.yml`): This will set the config file location, creating if it does not exist.
177
+ - MeshCLI_DEBUG_FILE (default `~/.meshtensor/debug.txt`): The file stores the most recent's command's debug log.
178
178
 
179
179
  ---
180
180
 
@@ -185,8 +185,8 @@ determining the root cause of issues.
185
185
 
186
186
  Additionally, you can pull a debug log.
187
187
 
188
- BTCLI will store a debug log for every command run. This file is overwritten for each new command run. The default location
189
- of this file is `~/.meshtensor/debug.txt` and can be set with the `BTCLI_DEBUG_FILE` env var (see above section).
188
+ MeshCLI will store a debug log for every command run. This file is overwritten for each new command run. The default location
189
+ of this file is `~/.meshtensor/debug.txt` and can be set with the `MeshCLI_DEBUG_FILE` env var (see above section).
190
190
 
191
191
  The debug log will **NOT** contain any sensitive data (private keys), and is intended to be sent to the developers
192
192
  for debugging. This file contains basic information about the command being run, the config, and the back and forth of requests and responses
@@ -709,12 +709,12 @@ def version_callback(value: bool):
709
709
  try:
710
710
  repo = Repo(os.path.dirname(os.path.dirname(__file__)))
711
711
  version = (
712
- f"BTCLI version: {__version__}/"
712
+ f"MeshCLI version: {__version__}/"
713
713
  f"{repo.active_branch.name}/"
714
714
  f"{repo.commit()}"
715
715
  )
716
716
  except (TypeError, GitError):
717
- version = f"BTCLI version: {__version__}"
717
+ version = f"MeshCLI version: {__version__}"
718
718
  typer.echo(version)
719
719
  raise typer.Exit()
720
720
 
@@ -732,7 +732,7 @@ def commands_callback(value: bool):
732
732
  def debug_callback(value: bool):
733
733
  if value:
734
734
  debug_file_loc = Path(
735
- os.getenv("BTCLI_DEBUG_FILE")
735
+ os.getenv("MeshCLI_DEBUG_FILE")
736
736
  or os.path.expanduser(defaults.config.debug_file_path)
737
737
  )
738
738
  if not debug_file_loc.exists():
@@ -740,7 +740,7 @@ def debug_callback(value: bool):
740
740
  f"Error: The debug file '{arg__(str(debug_file_loc))}' does not exist. This indicates that you have"
741
741
  f" not run a command which has logged debug output, or you deleted this file. Debug logging only occurs"
742
742
  f" if {arg__('use_cache')} is set to True in your config ({arg__('meshcli config set')}). If the debug "
743
- f"file was created using the {arg__('BTCLI_DEBUG_FILE')} environment variable, please set the value for"
743
+ f"file was created using the {arg__('MeshCLI_DEBUG_FILE')} environment variable, please set the value for"
744
744
  f" the same location, and re-run this {arg__('meshcli --debug')} command."
745
745
  )
746
746
  raise typer.Exit()
@@ -843,13 +843,13 @@ class CLIManager:
843
843
  self.event_loop = asyncio.new_event_loop()
844
844
 
845
845
  self.config_base_path = os.path.expanduser(defaults.config.base_path)
846
- self.config_path = os.getenv("BTCLI_CONFIG_PATH") or os.path.expanduser(
846
+ self.config_path = os.getenv("MeshCLI_CONFIG_PATH") or os.path.expanduser(
847
847
  defaults.config.path
848
848
  )
849
- self.debug_file_path = os.getenv("BTCLI_DEBUG_FILE") or os.path.expanduser(
849
+ self.debug_file_path = os.getenv("MeshCLI_DEBUG_FILE") or os.path.expanduser(
850
850
  defaults.config.debug_file_path
851
851
  )
852
- self.proxies_path = os.getenv("BTCLI_PROXIES_PATH") or os.path.expanduser(
852
+ self.proxies_path = os.getenv("MeshCLI_PROXIES_PATH") or os.path.expanduser(
853
853
  defaults.proxies.path
854
854
  )
855
855
 
@@ -864,7 +864,7 @@ class CLIManager:
864
864
  epilog=_epilog,
865
865
  help=f"Allows for getting/setting the config. "
866
866
  f"Default path for the config file is {arg__(defaults.config.path)}. "
867
- f"You can set your own with the env var {arg__('BTCLI_CONFIG_PATH')}",
867
+ f"You can set your own with the env var {arg__('MeshCLI_CONFIG_PATH')}",
868
868
  )
869
869
  self.wallet_app = typer.Typer(epilog=_epilog)
870
870
  self.stake_app = typer.Typer(epilog=_epilog)
@@ -1473,7 +1473,7 @@ class CLIManager:
1473
1473
  return tree
1474
1474
 
1475
1475
  groups_and_commands = traverse_group(self.app)
1476
- root = Tree("[bold magenta]BTCLI Commands[/]") # Root node
1476
+ root = Tree("[bold magenta]MeshCLI Commands[/]") # Root node
1477
1477
  build_rich_tree(groups_and_commands, root)
1478
1478
  return root
1479
1479
 
@@ -1585,13 +1585,13 @@ class CLIManager:
1585
1585
  version: Annotated[
1586
1586
  Optional[bool],
1587
1587
  typer.Option(
1588
- "--version", callback=version_callback, help="Show BTCLI version"
1588
+ "--version", callback=version_callback, help="Show MeshCLI version"
1589
1589
  ),
1590
1590
  ] = None,
1591
1591
  commands: Annotated[
1592
1592
  Optional[bool],
1593
1593
  typer.Option(
1594
- "--commands", callback=commands_callback, help="Show BTCLI commands"
1594
+ "--commands", callback=commands_callback, help="Show MeshCLI commands"
1595
1595
  ),
1596
1596
  ] = None,
1597
1597
  debug_log: Annotated[
@@ -1642,7 +1642,7 @@ class CLIManager:
1642
1642
  if self.config.get("use_cache", False):
1643
1643
  with open(self.debug_file_path, "w+") as f:
1644
1644
  f.write(
1645
- f"BTCLI {__version__}\n"
1645
+ f"MeshCLI {__version__}\n"
1646
1646
  f"Async-Substrate-Interface: {importlib.metadata.version('async-substrate-interface')}\n"
1647
1647
  f"Meshtensor-Wallet: {importlib.metadata.version('meshtensor-wallet')}\n"
1648
1648
  f"Command: {' '.join(sys.argv)}\n"
@@ -1779,9 +1779,9 @@ class CLIManager:
1779
1779
  quiet: bool = Options.quiet,
1780
1780
  ):
1781
1781
  """
1782
- Sets or updates configuration values in the BTCLI config file.
1782
+ Sets or updates configuration values in the MeshCLI config file.
1783
1783
 
1784
- This command allows you to set default values that will be used across all BTCLI commands.
1784
+ This command allows you to set default values that will be used across all MeshCLI commands.
1785
1785
 
1786
1786
  USAGE
1787
1787
  Interactive mode:
@@ -2013,7 +2013,7 @@ class CLIManager:
2013
2013
  Column("[bold white]Value", style="gold1"),
2014
2014
  Column("", style="medium_purple"),
2015
2015
  box=box.SIMPLE_HEAD,
2016
- title=f"[{COLORS.G.HEADER}]BTCLI Config[/{COLORS.G.HEADER}]: {arg__(self.config_path)}",
2016
+ title=f"[{COLORS.G.HEADER}]MeshCLI Config[/{COLORS.G.HEADER}]: {arg__(self.config_path)}",
2017
2017
  )
2018
2018
  value: Optional[str]
2019
2019
  for key, value in self.config.items():
@@ -2153,7 +2153,7 @@ class CLIManager:
2153
2153
  Column("Delay", style="dim"),
2154
2154
  Column("Note", style="dim"),
2155
2155
  box=box.SIMPLE_HEAD,
2156
- title=f"[{COLORS.G.HEADER}]BTCLI Proxies Address Book[/{COLORS.G.HEADER}]: {arg__(self.proxies_path)}",
2156
+ title=f"[{COLORS.G.HEADER}]MeshCLI Proxies Address Book[/{COLORS.G.HEADER}]: {arg__(self.proxies_path)}",
2157
2157
  )
2158
2158
  with ProxyAddressBook.get_db() as (conn, cursor):
2159
2159
  rows = ProxyAddressBook.read_rows(conn, cursor, include_header=False)
@@ -2239,7 +2239,7 @@ class CLIManager:
2239
2239
  Column("Delay", style="dim"),
2240
2240
  Column("Note", style="dim"),
2241
2241
  box=box.SIMPLE_HEAD,
2242
- title=f"[{COLORS.G.HEADER}]BTCLI Proxies Address Book[/{COLORS.G.HEADER}]: {arg__(self.proxies_path)}",
2242
+ title=f"[{COLORS.G.HEADER}]MeshCLI Proxies Address Book[/{COLORS.G.HEADER}]: {arg__(self.proxies_path)}",
2243
2243
  )
2244
2244
  for (
2245
2245
  name_,
@@ -9918,7 +9918,7 @@ class CLIManager:
9918
9918
 
9919
9919
  If you do not provide the call hash or call hex of the announced call in the command, you would be prompted to enter details of the call including the module name and call function.
9920
9920
 
9921
- [bold]Note[/bold]: Using the `--call-hash` flag attempts to resolve the call from the proxy announcements address book. Use this flag only if the announcement was created through BTCLI.
9921
+ [bold]Note[/bold]: Using the `--call-hash` flag attempts to resolve the call from the proxy announcements address book. Use this flag only if the announcement was created through MeshCLI.
9922
9922
  If the announcement was created by any other method, you must provide the call hex using the `--call-hex` flag or rebuild the call explicitly via the command prompts.
9923
9923
 
9924
9924
  [bold]Common Examples:[/bold]
@@ -10232,6 +10232,7 @@ class CLIManager:
10232
10232
  wallet = self.wallet_ask(
10233
10233
  wallet_name,
10234
10234
  wallet_path,
10235
+ None,
10235
10236
  ask_for=[WO.NAME, WO.PATH],
10236
10237
  validate=WV.WALLET,
10237
10238
  )
@@ -10281,6 +10282,7 @@ class CLIManager:
10281
10282
  wallet = self.wallet_ask(
10282
10283
  wallet_name,
10283
10284
  wallet_path,
10285
+ None,
10284
10286
  ask_for=[WO.NAME, WO.PATH],
10285
10287
  validate=WV.WALLET,
10286
10288
  )
@@ -10328,6 +10330,7 @@ class CLIManager:
10328
10330
  wallet = self.wallet_ask(
10329
10331
  wallet_name,
10330
10332
  wallet_path,
10333
+ None,
10331
10334
  ask_for=[WO.NAME, WO.PATH],
10332
10335
  validate=WV.WALLET,
10333
10336
  )
@@ -10362,6 +10365,7 @@ class CLIManager:
10362
10365
  wallet = self.wallet_ask(
10363
10366
  wallet_name,
10364
10367
  wallet_path,
10368
+ None,
10365
10369
  ask_for=[WO.NAME, WO.PATH],
10366
10370
  validate=WV.WALLET,
10367
10371
  )
@@ -10501,6 +10505,7 @@ class CLIManager:
10501
10505
  wallet = self.wallet_ask(
10502
10506
  wallet_name,
10503
10507
  wallet_path,
10508
+ None,
10504
10509
  ask_for=[WO.NAME, WO.PATH],
10505
10510
  validate=WV.WALLET,
10506
10511
  )
@@ -10526,6 +10531,7 @@ class CLIManager:
10526
10531
  wallet = self.wallet_ask(
10527
10532
  wallet_name,
10528
10533
  wallet_path,
10534
+ None,
10529
10535
  ask_for=[WO.NAME, WO.PATH],
10530
10536
  validate=WV.WALLET,
10531
10537
  )
@@ -10551,6 +10557,7 @@ class CLIManager:
10551
10557
  wallet = self.wallet_ask(
10552
10558
  wallet_name,
10553
10559
  wallet_path,
10560
+ None,
10554
10561
  ask_for=[WO.NAME, WO.PATH],
10555
10562
  validate=WV.WALLET,
10556
10563
  )
@@ -10598,6 +10605,7 @@ class CLIManager:
10598
10605
  wallet = self.wallet_ask(
10599
10606
  wallet_name,
10600
10607
  wallet_path,
10608
+ None,
10601
10609
  ask_for=[WO.NAME, WO.PATH],
10602
10610
  validate=WV.WALLET,
10603
10611
  )
@@ -10714,6 +10722,7 @@ class CLIManager:
10714
10722
  wallet = self.wallet_ask(
10715
10723
  wallet_name,
10716
10724
  wallet_path,
10725
+ None,
10717
10726
  ask_for=[WO.NAME, WO.PATH],
10718
10727
  validate=WV.WALLET,
10719
10728
  )
@@ -1208,7 +1208,7 @@ class DB:
1208
1208
  row_factory=None,
1209
1209
  ):
1210
1210
  if db_path is None:
1211
- if path_from_env := os.getenv("BTCLI_PROXIES_PATH"):
1211
+ if path_from_env := os.getenv("MESHCLI_PROXIES_PATH"):
1212
1212
  db_path = path_from_env
1213
1213
  else:
1214
1214
  db_path = os.path.join(
@@ -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}")
@@ -196,7 +196,7 @@ class SetWeightsExtrinsic:
196
196
  # meshtensor.logging.info(msg=f"Weights hash committed and will be revealed at {reveal_time}")
197
197
 
198
198
  console.print(
199
- "Note: BTCLI will wait until the reveal time. To place BTCLI into background:"
199
+ "Note: MeshCLI will wait until the reveal time. To place MeshCLI into background:"
200
200
  )
201
201
  console.print(
202
202
  "[red]CTRL+Z[/red] followed by the command [red]bg[/red] and [red]ENTER[/red]"
@@ -1208,7 +1208,7 @@ class DB:
1208
1208
  row_factory=None,
1209
1209
  ):
1210
1210
  if db_path is None:
1211
- if path_from_env := os.getenv("BTCLI_PROXIES_PATH"):
1211
+ if path_from_env := os.getenv("MESHCLI_PROXIES_PATH"):
1212
1212
  db_path = path_from_env
1213
1213
  else:
1214
1214
  db_path = os.path.join(
@@ -4,7 +4,7 @@ build-backend = "flit_core.buildapi"
4
4
 
5
5
  [project]
6
6
  name = "meshtensor-cli"
7
- version = "9.27.0"
7
+ version = "9.27.2"
8
8
  description = "Meshtensor CLI"
9
9
  readme = "README.md"
10
10
  authors = [