From fdfabcdea16c2311d964b902af9cf744db4e4341 Mon Sep 17 00:00:00 2001 From: ibraheem-opentensor Date: Thu, 23 Jan 2025 10:42:03 -0800 Subject: [PATCH 01/10] Bumps version + changelog. Updates e2e test branch --- .github/workflows/e2e-subtensor-tests.yml | 2 +- CHANGELOG.md | 9 +++++++++ bittensor_cli/__init__.py | 2 +- bittensor_cli/cli.py | 2 +- 4 files changed, 12 insertions(+), 3 deletions(-) diff --git a/.github/workflows/e2e-subtensor-tests.yml b/.github/workflows/e2e-subtensor-tests.yml index 1c6251802..ab7f71450 100644 --- a/.github/workflows/e2e-subtensor-tests.yml +++ b/.github/workflows/e2e-subtensor-tests.yml @@ -61,7 +61,7 @@ jobs: - name: Setup subtensor repo working-directory: ${{ github.workspace }}/subtensor - run: git checkout testnet + run: git checkout main - name: Install Python dependencies run: python3 -m pip install -e . pytest diff --git a/CHANGELOG.md b/CHANGELOG.md index 2b1c06a5e..50cef6144 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,14 @@ # Changelog +## 8.4.3 /2025-01-23 + +## What's Changed +* Removes the `.value` checks as we no longer use SCALE objects. by @thewhaleking in https://github.com/opentensor/btcli/pull/270 +* Backmerge main to staging 842 by @ibraheem-opentensor in https://github.com/opentensor/btcli/pull/273 +* Fix arg order for set-identity by @thewhaleking in https://github.com/opentensor/btcli/pull/282 + +**Full Changelog**: https://github.com/opentensor/btcli/compare/v8.4.2...v8.4.3 + ## 8.4.2 /2024-12-12 ## What's Changed diff --git a/bittensor_cli/__init__.py b/bittensor_cli/__init__.py index a61da5cd9..3c2718ba8 100644 --- a/bittensor_cli/__init__.py +++ b/bittensor_cli/__init__.py @@ -18,6 +18,6 @@ from .cli import CLIManager -__version__ = "8.4.2" +__version__ = "8.4.3" __all__ = ["CLIManager", "__version__"] diff --git a/bittensor_cli/cli.py b/bittensor_cli/cli.py index eeb5e7cf3..49d6383bd 100755 --- a/bittensor_cli/cli.py +++ b/bittensor_cli/cli.py @@ -58,7 +58,7 @@ class GitError(Exception): pass -__version__ = "8.4.2" +__version__ = "8.4.3" _core_version = re.match(r"^\d+\.\d+\.\d+", __version__).group(0) From b984011857baa9d3bb0fd77850a149fa785721ee Mon Sep 17 00:00:00 2001 From: ibraheem-opentensor Date: Thu, 23 Jan 2025 10:44:46 -0800 Subject: [PATCH 02/10] Updates changelog --- CHANGELOG.md | 1 - 1 file changed, 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 50cef6144..e21eb135d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,7 +3,6 @@ ## 8.4.3 /2025-01-23 ## What's Changed -* Removes the `.value` checks as we no longer use SCALE objects. by @thewhaleking in https://github.com/opentensor/btcli/pull/270 * Backmerge main to staging 842 by @ibraheem-opentensor in https://github.com/opentensor/btcli/pull/273 * Fix arg order for set-identity by @thewhaleking in https://github.com/opentensor/btcli/pull/282 From 9a18258f62f8418ce63b2c6aa7d6eae91eded30e Mon Sep 17 00:00:00 2001 From: ibraheem-opentensor Date: Thu, 23 Jan 2025 14:16:28 -0800 Subject: [PATCH 03/10] Updates changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index e21eb135d..7fc638055 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ ## What's Changed * Backmerge main to staging 842 by @ibraheem-opentensor in https://github.com/opentensor/btcli/pull/273 * Fix arg order for set-identity by @thewhaleking in https://github.com/opentensor/btcli/pull/282 +* Adds updates to btwallet3, adds overwrite flag and updates tests by @ibraheem-opentensor in https://github.com/opentensor/btcli/pull/275 **Full Changelog**: https://github.com/opentensor/btcli/compare/v8.4.2...v8.4.3 From a6e3e6e2929fb082988f69495a0a1c68bef2e673 Mon Sep 17 00:00:00 2001 From: ibraheem-opentensor Date: Fri, 7 Feb 2025 19:47:23 -0800 Subject: [PATCH 04/10] dtao vote: updates and fixes root proposals --- CHANGELOG.md | 7 ++++ bittensor_cli/__init__.py | 2 +- bittensor_cli/cli.py | 2 +- bittensor_cli/src/commands/root.py | 59 +++++++++++++++++++++++------- tests/e2e_tests/test_senate.py | 18 ++++----- 5 files changed, 64 insertions(+), 24 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7fc638055..95ea2f7c8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## 8.4.4 /2025-02-07 - 18:30 PST + +## What's Changed +* Proposals info fix (for dtao governance vote) by @ibraheem-opentensor + +**Full Changelog**: https://github.com/opentensor/btcli/compare/v8.4.3...v8.4.4 + ## 8.4.3 /2025-01-23 ## What's Changed diff --git a/bittensor_cli/__init__.py b/bittensor_cli/__init__.py index 3c2718ba8..226e8787e 100644 --- a/bittensor_cli/__init__.py +++ b/bittensor_cli/__init__.py @@ -18,6 +18,6 @@ from .cli import CLIManager -__version__ = "8.4.3" +__version__ = "8.4.4" __all__ = ["CLIManager", "__version__"] diff --git a/bittensor_cli/cli.py b/bittensor_cli/cli.py index 31859bbcc..1c3c26ecb 100755 --- a/bittensor_cli/cli.py +++ b/bittensor_cli/cli.py @@ -58,7 +58,7 @@ class GitError(Exception): pass -__version__ = "8.4.3" +__version__ = "8.4.4" _core_version = re.match(r"^\d+\.\d+\.\d+", __version__).group(0) diff --git a/bittensor_cli/src/commands/root.py b/bittensor_cli/src/commands/root.py index 1dde73df1..89da56df2 100644 --- a/bittensor_cli/src/commands/root.py +++ b/bittensor_cli/src/commands/root.py @@ -82,14 +82,22 @@ def format_call_data(call_data: dict) -> str: call_info = call_details[0] call_function, call_args = next(iter(call_info.items())) - # Extract the argument, handling tuple values - formatted_args = ", ".join( - str(arg[0]) if isinstance(arg, tuple) else str(arg) - for arg in call_args.values() - ) + # Format arguments, handle nested/large payloads + formatted_args = [] + for arg_name, arg_value in call_args.items(): + if isinstance(arg_value, (tuple, list, dict)): + # For large nested, show abbreviated version + content_str = str(arg_value) + if len(content_str) > 20: + formatted_args.append(f"{arg_name}: ... [{len(content_str)}] ...") + else: + formatted_args.append(f"{arg_name}: {arg_value}") + else: + formatted_args.append(f"{arg_name}: {arg_value}") # Format the final output string - return f"{call_function}({formatted_args})" + args_str = ", ".join(formatted_args) + return f"{module}.{call_function}({args_str})" async def _get_senate_members( @@ -1218,9 +1226,10 @@ async def proposals(subtensor: SubtensorInterface): ) print_verbose("Fetching senate members & proposals") block_hash = await subtensor.substrate.get_chain_head() - senate_members, all_proposals = await asyncio.gather( + senate_members, all_proposals, current_block = await asyncio.gather( _get_senate_members(subtensor, block_hash), _get_proposals(subtensor, block_hash), + subtensor.substrate.get_block_number(block_hash), ) print_verbose("Fetching member information from Chain") @@ -1228,6 +1237,13 @@ async def proposals(subtensor: SubtensorInterface): str, DelegatesDetails ] = await subtensor.get_delegate_identities() + title = ( + f"[bold #4196D6]Bittensor Governance Proposals[/bold #4196D6]\n" + f"[steel_blue3]Current Block:[/steel_blue3] {current_block}\t" + f"[steel_blue3]Network:[/steel_blue3] {subtensor.network}\n\n" + f"[steel_blue3]Active Proposals:[/steel_blue3] {len(all_proposals)}\t" + f"[steel_blue3]Senate Size:[/steel_blue3] {len(senate_members)}\n" + ) table = Table( Column( "[white]HASH", @@ -1242,8 +1258,8 @@ async def proposals(subtensor: SubtensorInterface): style="rgb(50,163,219)", ), Column("[white]END", style="bright_cyan"), - Column("[white]CALLDATA", style="dark_sea_green"), - title=f"\n[dark_orange]Proposals\t\t\nActive Proposals: {len(all_proposals)}\t\tSenate Size: {len(senate_members)}\nNetwork: {subtensor.network}", + Column("[white]CALLDATA", style="dark_sea_green", width=30), + title=title, show_footer=True, box=box.SIMPLE_HEAVY, pad_edge=False, @@ -1251,16 +1267,33 @@ async def proposals(subtensor: SubtensorInterface): border_style="bright_black", ) for hash_, (call_data, vote_data) in all_proposals.items(): + blocks_remaining = vote_data.end - current_block + vote_end_cell = ( + f"{vote_data.end} [dim] (in {blocks_remaining} blocks)[/dim]" + if blocks_remaining > 0 + else f"{vote_data.end} [red](expired)[/red]" + ) + ayes_threshold = ( + (len(vote_data.ayes) / vote_data.threshold * 100) + if vote_data.threshold > 0 + else 0 + ) + nays_threshold = ( + (len(vote_data.nays) / vote_data.threshold * 100) + if vote_data.threshold > 0 + else 0 + ) table.add_row( hash_, str(vote_data.threshold), - str(len(vote_data.ayes)), - str(len(vote_data.nays)), + f"{len(vote_data.ayes)} ({ayes_threshold:.2f}%)", + f"{len(vote_data.nays)} ({nays_threshold:.2f}%)", display_votes(vote_data, registered_delegate_info), - str(vote_data.end), + vote_end_cell, format_call_data(call_data), ) - return console.print(table) + console.print(table) + console.print("\n[dim]* Both Ayes and Nays percentages are calculated relative to the proposal's threshold.[/dim]") async def set_take(wallet: Wallet, subtensor: SubtensorInterface, take: float) -> bool: diff --git a/tests/e2e_tests/test_senate.py b/tests/e2e_tests/test_senate.py index f335ada53..597341925 100644 --- a/tests/e2e_tests/test_senate.py +++ b/tests/e2e_tests/test_senate.py @@ -100,7 +100,7 @@ def test_senate(local_chain, wallet_setup): "ws://127.0.0.1:9945", ], ) - proposals_output = proposals.stdout.splitlines()[8].split() + proposals_output = proposals.stdout.splitlines()[9].split() # Assert the hash is of correct format assert len(proposals_output[0]) == 66 @@ -110,7 +110,7 @@ def test_senate(local_chain, wallet_setup): assert proposals_output[2] == "0" # 0 Nayes for the proposal - assert proposals_output[3] == "0" + assert proposals_output[4] == "0" # Assert initial threshold is 3 assert proposals_output[1] == "3" @@ -145,17 +145,17 @@ def test_senate(local_chain, wallet_setup): "ws://127.0.0.1:9945", ], ) - proposals_after_aye_output = proposals_after_aye.stdout.splitlines()[8].split() + proposals_after_aye_output = proposals_after_aye.stdout.splitlines()[9].split() # Assert Bob's vote is shown as aye - assert proposals_after_aye_output[4].strip(":") == wallet_bob.hotkey.ss58_address - assert proposals_after_aye_output[5] == "Aye" + assert proposals_after_aye_output[6].strip(":") == wallet_bob.hotkey.ss58_address + assert proposals_after_aye_output[7] == "Aye" # Aye votes increased to 1 assert proposals_after_aye_output[2] == "1" # Nay votes remain 0 - assert proposals_after_aye_output[3] == "0" + assert proposals_after_aye_output[4] == "0" # Register Alice to the root network (0) # Registering to root automatically makes you a senator if eligible @@ -209,13 +209,13 @@ def test_senate(local_chain, wallet_setup): proposals_after_nay_output = proposals_after_nay.stdout.splitlines() # Total Ayes to remain 1 - proposals_after_nay_output[8].split()[2] == "1" + proposals_after_nay_output[9].split()[2] == "1" # Total Nays increased to 1 - proposals_after_nay_output[8].split()[3] == "1" + proposals_after_nay_output[9].split()[4] == "1" # Assert Alice has voted Nay - proposals_after_nay_output[9].split()[0].strip( + proposals_after_nay_output[10].split()[0].strip( ":" ) == wallet_alice.hotkey.ss58_address From ef86a466d5d7543d052728925650606df1f732e1 Mon Sep 17 00:00:00 2001 From: ibraheem-opentensor Date: Fri, 7 Feb 2025 20:49:06 -0800 Subject: [PATCH 05/10] 8.4.4: Updates remaining time in proposals --- bittensor_cli/cli.py | 4 +++- bittensor_cli/src/bittensor/utils.py | 29 ++++++++++++++++++++++++++++ bittensor_cli/src/commands/root.py | 22 +++++++++++---------- tests/e2e_tests/test_senate.py | 3 +++ 4 files changed, 47 insertions(+), 11 deletions(-) diff --git a/bittensor_cli/cli.py b/bittensor_cli/cli.py index 1c3c26ecb..1d70a22e6 100755 --- a/bittensor_cli/cli.py +++ b/bittensor_cli/cli.py @@ -2798,7 +2798,9 @@ def root_proposals( [green]$[/green] btcli root proposals """ self.verbosity_handler(quiet, verbose) - return self._run_command(root.proposals(self.initialize_chain(network))) + return self._run_command( + root.proposals(self.initialize_chain(network), verbose) + ) def root_set_take( self, diff --git a/bittensor_cli/src/bittensor/utils.py b/bittensor_cli/src/bittensor/utils.py index 71d5e12ac..66c7a5c90 100644 --- a/bittensor_cli/src/bittensor/utils.py +++ b/bittensor_cli/src/bittensor/utils.py @@ -1010,3 +1010,32 @@ def hex_to_bytes(hex_str: str) -> bytes: else: bytes_result = bytes.fromhex(hex_str) return bytes_result + + +def blocks_to_duration(blocks: int) -> str: + """Convert blocks to human readable duration string using two largest units. + + Args: + blocks (int): Number of blocks (12s per block) + + Returns: + str: Duration string like '2d 5h', '3h 45m', '2m 10s', or '0s' + """ + if blocks <= 0: + return "0s" + + seconds = blocks * 12 + intervals = [ + ("d", 86400), # 60 * 60 * 24 + ("h", 3600), # 60 * 60 + ("m", 60), + ("s", 1), + ] + results = [] + for unit, seconds_per_unit in intervals: + unit_count = seconds // seconds_per_unit + seconds %= seconds_per_unit + if unit_count > 0: + results.append(f"{unit_count}{unit}") + # Return only the first two non-zero units + return " ".join(results[:2]) or "0s" diff --git a/bittensor_cli/src/commands/root.py b/bittensor_cli/src/commands/root.py index 89da56df2..668151dbe 100644 --- a/bittensor_cli/src/commands/root.py +++ b/bittensor_cli/src/commands/root.py @@ -42,6 +42,7 @@ update_metadata_table, group_subnets, unlock_key, + blocks_to_duration, ) if TYPE_CHECKING: @@ -1218,13 +1219,12 @@ async def register(wallet: Wallet, subtensor: SubtensorInterface, prompt: bool): ) -async def proposals(subtensor: SubtensorInterface): +async def proposals(subtensor: SubtensorInterface, verbose: bool): console.print( ":satellite: Syncing with chain: [white]{}[/white] ...".format( subtensor.network ) ) - print_verbose("Fetching senate members & proposals") block_hash = await subtensor.substrate.get_chain_head() senate_members, all_proposals, current_block = await asyncio.gather( _get_senate_members(subtensor, block_hash), @@ -1232,7 +1232,6 @@ async def proposals(subtensor: SubtensorInterface): subtensor.substrate.get_block_number(block_hash), ) - print_verbose("Fetching member information from Chain") registered_delegate_info: dict[ str, DelegatesDetails ] = await subtensor.get_delegate_identities() @@ -1268,11 +1267,12 @@ async def proposals(subtensor: SubtensorInterface): ) for hash_, (call_data, vote_data) in all_proposals.items(): blocks_remaining = vote_data.end - current_block - vote_end_cell = ( - f"{vote_data.end} [dim] (in {blocks_remaining} blocks)[/dim]" - if blocks_remaining > 0 - else f"{vote_data.end} [red](expired)[/red]" - ) + if blocks_remaining > 0: + duration_str = blocks_to_duration(blocks_remaining) + vote_end_cell = f"{vote_data.end} [dim](in {duration_str})[/dim]" + else: + vote_end_cell = f"{vote_data.end} [red](expired)[/red]" + ayes_threshold = ( (len(vote_data.ayes) / vote_data.threshold * 100) if vote_data.threshold > 0 @@ -1284,7 +1284,7 @@ async def proposals(subtensor: SubtensorInterface): else 0 ) table.add_row( - hash_, + hash_ if verbose else f"{hash_[:4]}...{hash_[-4:]}", str(vote_data.threshold), f"{len(vote_data.ayes)} ({ayes_threshold:.2f}%)", f"{len(vote_data.nays)} ({nays_threshold:.2f}%)", @@ -1293,7 +1293,9 @@ async def proposals(subtensor: SubtensorInterface): format_call_data(call_data), ) console.print(table) - console.print("\n[dim]* Both Ayes and Nays percentages are calculated relative to the proposal's threshold.[/dim]") + console.print( + "\n[dim]* Both Ayes and Nays percentages are calculated relative to the proposal's threshold.[/dim]" + ) async def set_take(wallet: Wallet, subtensor: SubtensorInterface, take: float) -> bool: diff --git a/tests/e2e_tests/test_senate.py b/tests/e2e_tests/test_senate.py index 597341925..5dd9de57b 100644 --- a/tests/e2e_tests/test_senate.py +++ b/tests/e2e_tests/test_senate.py @@ -98,6 +98,7 @@ def test_senate(local_chain, wallet_setup): extra_args=[ "--chain", "ws://127.0.0.1:9945", + "--verbose", ], ) proposals_output = proposals.stdout.splitlines()[9].split() @@ -143,6 +144,7 @@ def test_senate(local_chain, wallet_setup): extra_args=[ "--chain", "ws://127.0.0.1:9945", + "--verbose", ], ) proposals_after_aye_output = proposals_after_aye.stdout.splitlines()[9].split() @@ -204,6 +206,7 @@ def test_senate(local_chain, wallet_setup): extra_args=[ "--chain", "ws://127.0.0.1:9945", + "--verbose", ], ) proposals_after_nay_output = proposals_after_nay.stdout.splitlines() From a0088c0984df4e6668799c533da0ce1d455741b0 Mon Sep 17 00:00:00 2001 From: ibraheem-opentensor Date: Fri, 7 Feb 2025 21:17:23 -0800 Subject: [PATCH 06/10] Bumps artifact version --- .github/workflows/release.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index ed1fc6d52..88ce34a0c 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -45,7 +45,7 @@ jobs: fi - name: Upload artifact - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: dist path: dist/ @@ -60,7 +60,7 @@ jobs: steps: - name: Download artifact - uses: actions/download-artifact@v3 + uses: actions/download-artifact@v4 with: name: dist path: dist/ From 25d52facc54380321f6248e406bb1125dd3dcbb0 Mon Sep 17 00:00:00 2001 From: ibraheem-opentensor Date: Thu, 13 Feb 2025 10:48:11 -0800 Subject: [PATCH 07/10] Bumps version and changelog --- CHANGELOG.md | 29 +++++++++++++++++++++++++++++ bittensor_cli/__init__.py | 2 +- bittensor_cli/cli.py | 2 +- 3 files changed, 31 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5a7ffbbae..07d88df35 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,34 @@ # Changelog +## 9.0.0 /2025-02-13 + +## What's Changed +* fix netuid from str to int by @roman-opentensor in https://github.com/opentensor/btcli/pull/195 +* add runtime apis to reg by @ibraheem-opentensor in https://github.com/opentensor/btcli/pull/196 +* Updated tables (st list, s list) by @ibraheem-opentensor in https://github.com/opentensor/btcli/pull/200 +* Modifying descriptions and links in stake and subnets dot py files by @rajkaramchedu in https://github.com/opentensor/btcli/pull/246 +* Fixes Identity Lookup (Rao Games Pools) by @thewhaleking in https://github.com/opentensor/btcli/pull/279 +* Show encrypted hotkeys in w list by @thewhaleking in https://github.com/opentensor/btcli/pull/288 +* Backmerge rao branch to decoding branch by @ibraheem-opentensor in https://github.com/opentensor/btcli/pull/290 +* Updates identity, sn identity, and other chain stuff by @ibraheem-opentensor in https://github.com/opentensor/btcli/pull/292 +* Updates Rao to decode using chain by @ibraheem-opentensor in https://github.com/opentensor/btcli/pull/286 +* Fix/rao remove mention of cost by @camfairchild in https://github.com/opentensor/btcli/pull/293 +* Uses uvloop if it's installed by @thewhaleking in https://github.com/opentensor/btcli/pull/294 +* Feat: Safe staking by @ibraheem-opentensor in https://github.com/opentensor/btcli/pull/299 +* Removes stake from w balances by @ibraheem-opentensor in https://github.com/opentensor/btcli/pull/301 +* Updates docstrings for commands by @ibraheem-opentensor in https://github.com/opentensor/btcli/pull/303 +* Release/9.0.0rc4 by @ibraheem-opentensor in https://github.com/opentensor/btcli/pull/306 +* Rao to staging merge (new branch) by @thewhaleking in https://github.com/opentensor/btcli/pull/305 +* [WIP] Rao by @thewhaleking in https://github.com/opentensor/btcli/pull/129 +* Updates e2e tests for rao by @ibraheem-opentensor in https://github.com/opentensor/btcli/pull/307 +* Update dividends, adds sort by @ibraheem-opentensor in https://github.com/opentensor/btcli/pull/308 +* Final cleanups for Rao by @ibraheem-opentensor in https://github.com/opentensor/btcli/pull/309 + +## New Contributors +* @camfairchild made their first contribution in https://github.com/opentensor/btcli/pull/293 + +**Full Changelog**: https://github.com/opentensor/btcli/compare/v8.4.3...v9.0.0 + ## 9.0.0rc4 /2025-02-12 * Adds sort option to metagraph/show * Updates metagraph/show to use direct dividends instead of relative diff --git a/bittensor_cli/__init__.py b/bittensor_cli/__init__.py index b8718f44a..55ce167e0 100644 --- a/bittensor_cli/__init__.py +++ b/bittensor_cli/__init__.py @@ -18,6 +18,6 @@ from .cli import CLIManager -__version__ = "9.0.0rc4" +__version__ = "9.0.0" __all__ = ["CLIManager", "__version__"] diff --git a/bittensor_cli/cli.py b/bittensor_cli/cli.py index cd3356f2f..142a9402d 100755 --- a/bittensor_cli/cli.py +++ b/bittensor_cli/cli.py @@ -72,7 +72,7 @@ class GitError(Exception): pass -__version__ = "9.0.0rc4" +__version__ = "9.0.0" _core_version = re.match(r"^\d+\.\d+\.\d+", __version__).group(0) From 91303d8fa871b2ef7b94096615991e2ab7ea1bda Mon Sep 17 00:00:00 2001 From: ibraheem-opentensor Date: Thu, 13 Feb 2025 10:50:22 -0800 Subject: [PATCH 08/10] Bumps deps --- requirements.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/requirements.txt b/requirements.txt index b9f56c3a0..521e94944 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,6 +1,6 @@ wheel async-property==0.2.2 -async-substrate-interface>=1.0.0rc14 +async-substrate-interface>=1.0.0 aiohttp~=3.10.2 backoff~=2.2.1 GitPython>=3.0.0 @@ -16,7 +16,7 @@ rich~=13.7 scalecodec==1.2.11 typer~=0.12 websockets>=14.1 -bittensor-wallet>=3.0.2 +bittensor-wallet>=3.0.3 plotille pywry plotly \ No newline at end of file From eac378be586df22799a2bb29641dda55c3ab6855 Mon Sep 17 00:00:00 2001 From: ibraheem-opentensor Date: Thu, 13 Feb 2025 11:02:16 -0800 Subject: [PATCH 09/10] Updates type --- bittensor_cli/src/commands/sudo.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bittensor_cli/src/commands/sudo.py b/bittensor_cli/src/commands/sudo.py index 56f497106..dbbdf5376 100644 --- a/bittensor_cli/src/commands/sudo.py +++ b/bittensor_cli/src/commands/sudo.py @@ -585,7 +585,7 @@ async def get_senate(subtensor: "SubtensorInterface"): return console.print(table) -async def proposals(subtensor: SubtensorInterface, verbose: bool): +async def proposals(subtensor: "SubtensorInterface", verbose: bool): console.print( ":satellite: Syncing with chain: [white]{}[/white] ...".format( subtensor.network From a1ef7630088ac84cdeee94f635d054d8950779b3 Mon Sep 17 00:00:00 2001 From: ibraheem-opentensor Date: Thu, 13 Feb 2025 11:07:31 -0800 Subject: [PATCH 10/10] fix fmt error message --- bittensor_cli/src/commands/stake/add.py | 4 ++-- bittensor_cli/src/commands/stake/remove.py | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/bittensor_cli/src/commands/stake/add.py b/bittensor_cli/src/commands/stake/add.py index 70b02ae83..d400ce967 100644 --- a/bittensor_cli/src/commands/stake/add.py +++ b/bittensor_cli/src/commands/stake/add.py @@ -108,7 +108,7 @@ async def safe_stake_extrinsic( return else: err_out( - f"\n{failure_prelude} with error: {format_error_message(e, subtensor.substrate)}" + f"\n{failure_prelude} with error: {format_error_message(e)}" ) return else: @@ -181,7 +181,7 @@ async def stake_extrinsic( ) except SubstrateRequestException as e: err_out( - f"\n{failure_prelude} with error: {format_error_message(e, subtensor.substrate)}" + f"\n{failure_prelude} with error: {format_error_message(e)}" ) return else: diff --git a/bittensor_cli/src/commands/stake/remove.py b/bittensor_cli/src/commands/stake/remove.py index 1f092ea88..25f53e08e 100644 --- a/bittensor_cli/src/commands/stake/remove.py +++ b/bittensor_cli/src/commands/stake/remove.py @@ -667,7 +667,7 @@ async def _safe_unstake_extrinsic( return else: err_out( - f"\n{failure_prelude} with error: {format_error_message(e, subtensor.substrate)}" + f"\n{failure_prelude} with error: {format_error_message(e)}" ) return