diff --git a/bittensor_cli/cli.py b/bittensor_cli/cli.py index ecb936e7d..c92ae2a18 100755 --- a/bittensor_cli/cli.py +++ b/bittensor_cli/cli.py @@ -5025,6 +5025,7 @@ def subnets_create( description: Optional[str] = typer.Option( None, "--description", help="Description" ), + logo_url: Optional[str] = typer.Option(None, "--logo-url", help="Logo URL"), additional_info: Optional[str] = typer.Option( None, "--additional-info", help="Additional information" ), @@ -5067,6 +5068,7 @@ def subnets_create( subnet_url=subnet_url, discord=discord, description=description, + logo_url=logo_url, additional=additional_info, ) self._run_command( @@ -5190,6 +5192,7 @@ def subnets_set_identity( description: Optional[str] = typer.Option( None, "--description", help="Description" ), + logo_url: Optional[str] = typer.Option(None, "--logo-url", help="Logo URL"), additional_info: Optional[str] = typer.Option( None, "--additional-info", help="Additional information" ), @@ -5241,6 +5244,7 @@ def subnets_set_identity( subnet_url=subnet_url, discord=discord, description=description, + logo_url=logo_url, additional=additional_info, ) diff --git a/bittensor_cli/src/bittensor/chain_data.py b/bittensor_cli/src/bittensor/chain_data.py index 1f9401ce4..5749ada6f 100644 --- a/bittensor_cli/src/bittensor/chain_data.py +++ b/bittensor_cli/src/bittensor/chain_data.py @@ -630,6 +630,7 @@ class SubnetIdentity(InfoBase): subnet_url: str discord: str description: str + logo_url: str additional: str @classmethod @@ -641,6 +642,7 @@ def _fix_decoded(cls, decoded: dict) -> "SubnetIdentity": subnet_url=bytes(decoded["subnet_url"]).decode(), discord=bytes(decoded["discord"]).decode(), description=bytes(decoded["description"]).decode(), + logo_url=bytes(decoded["logo_url"]).decode(), additional=bytes(decoded["additional"]).decode(), ) diff --git a/bittensor_cli/src/bittensor/utils.py b/bittensor_cli/src/bittensor/utils.py index 31ca5ea61..d7e8da805 100644 --- a/bittensor_cli/src/bittensor/utils.py +++ b/bittensor_cli/src/bittensor/utils.py @@ -1167,6 +1167,7 @@ def prompt_for_subnet_identity( subnet_url: Optional[str], discord: Optional[str], description: Optional[str], + logo_url: Optional[str], additional: Optional[str], ): """ @@ -1227,6 +1228,13 @@ def prompt_for_subnet_identity( lambda x: x and len(x.encode("utf-8")) > 1024, "[red]Error:[/red] Description must be <= 1024 bytes.", ), + ( + "logo_url", + "[blue]Logo URL [dim](optional)[/blue]", + logo_url, + lambda x: x and len(x.encode("utf-8")) > 1024, + "[red]Error:[/red] Logo URL must be <= 1024 bytes.", + ), ( "additional", "[blue]Additional information [dim](optional)[/blue]", diff --git a/bittensor_cli/src/commands/subnets/subnets.py b/bittensor_cli/src/commands/subnets/subnets.py index 99a619d8e..e94402953 100644 --- a/bittensor_cli/src/commands/subnets/subnets.py +++ b/bittensor_cli/src/commands/subnets/subnets.py @@ -140,6 +140,9 @@ async def _find_event_attributes_in_extrinsic_receipt( "description": subnet_identity["description"].encode() if subnet_identity.get("description") else b"", + "logo_url": subnet_identity["logo_url"].encode() + if subnet_identity.get("logo_url") + else b"", "additional": subnet_identity["additional"].encode() if subnet_identity.get("additional") else b"", @@ -2207,6 +2210,7 @@ async def set_identity( "subnet_url": subnet_identity.get("subnet_url", ""), "discord": subnet_identity.get("discord", ""), "description": subnet_identity.get("description", ""), + "logo_url": subnet_identity.get("logo_url", ""), "additional": subnet_identity.get("additional", ""), } @@ -2252,6 +2256,7 @@ async def set_identity( "subnet_url", "discord", "description", + "logo_url", "additional", ]: value = getattr(identity, key, None) @@ -2301,6 +2306,7 @@ async def get_identity( "subnet_url", "discord", "description", + "logo_url", "additional", ]: value = getattr(identity, key, None) diff --git a/tests/e2e_tests/test_staking_sudo.py b/tests/e2e_tests/test_staking_sudo.py index 0a0984488..c880fee4b 100644 --- a/tests/e2e_tests/test_staking_sudo.py +++ b/tests/e2e_tests/test_staking_sudo.py @@ -86,6 +86,8 @@ def test_staking(local_chain, wallet_setup): "A test subnet for e2e testing", "--additional-info", "Created by Alice", + "--logo-url", + "https://testsubnet.com/logo.png", "--no-prompt", "--json-output", ], @@ -121,6 +123,8 @@ def test_staking(local_chain, wallet_setup): "A test subnet for e2e testing", "--additional-info", "Created by Alice", + "--logo-url", + "https://testsubnet.com/logo.png", "--no-prompt", "--json-output", ], @@ -198,6 +202,8 @@ def test_staking(local_chain, wallet_setup): sn_discord := "alice#1234", "--description", sn_description := "A test subnet for e2e testing", + "--logo-url", + sn_logo_url := "https://testsubnet.com/logo.png", "--additional-info", sn_add_info := "Created by Alice", "--json-output", @@ -225,6 +231,7 @@ def test_staking(local_chain, wallet_setup): assert get_identity_output["subnet_url"] == sn_url assert get_identity_output["discord"] == sn_discord assert get_identity_output["description"] == sn_description + assert get_identity_output["logo_url"] == sn_logo_url assert get_identity_output["additional"] == sn_add_info # Start emissions on SNs diff --git a/tests/e2e_tests/test_unstaking.py b/tests/e2e_tests/test_unstaking.py index bfbb77e85..e28c54df6 100644 --- a/tests/e2e_tests/test_unstaking.py +++ b/tests/e2e_tests/test_unstaking.py @@ -83,6 +83,8 @@ def test_unstaking(local_chain, wallet_setup): "A test subnet for e2e testing", "--additional-info", "Test subnet", + "--logo-url", + "https://testsubnet.com/logo.png", "--no-prompt", ], ) @@ -115,6 +117,8 @@ def test_unstaking(local_chain, wallet_setup): "A test subnet for e2e testing", "--additional-info", "Test subnet", + "--logo-url", + "https://testsubnet.com/logo.png", "--no-prompt", ], ) diff --git a/tests/e2e_tests/test_wallet_interactions.py b/tests/e2e_tests/test_wallet_interactions.py index 08b2c73c4..e6a4bb22d 100644 --- a/tests/e2e_tests/test_wallet_interactions.py +++ b/tests/e2e_tests/test_wallet_interactions.py @@ -69,6 +69,8 @@ def test_wallet_overview_inspect(local_chain, wallet_setup): "test#1234", "--description", "A test subnet for e2e testing", + "--logo-url", + "https://testsubnet.com/logo.png", "--additional-info", "Test subnet", "--no-prompt", @@ -388,6 +390,8 @@ def test_wallet_identities(local_chain, wallet_setup): "A test subnet for e2e testing", "--additional-info", "Created by Alice", + "--logo-url", + "https://testsubnet.com/logo.png", "--no-prompt", ], )