From 24967bdf0a4fa646df01e75f4778a74adae097cb Mon Sep 17 00:00:00 2001 From: vpanchal-supra Date: Thu, 18 Sep 2025 20:13:44 +0530 Subject: [PATCH] Added support of SupraToken and SupraTokenObject --- docs/supra_sdk.clients.rst | 17 +++++++++++++++++ docs/supra_sdk.rst | 16 ---------------- examples/simple_nft.py | 6 +++--- examples/simple_supra_token.py | 10 +++++----- examples/supra_token.py | 9 +++++++-- supra_sdk/clients/__init__.py | 4 +++- supra_sdk/clients/rest/rest_client.py | 2 +- .../supra_token.py} | 18 +++++++++++------- .../supra_token_object.py} | 17 +++++++++++++---- 9 files changed, 60 insertions(+), 39 deletions(-) rename supra_sdk/{supra_tokenv1_client.py => clients/supra_token.py} (95%) rename supra_sdk/{supra_token_client.py => clients/supra_token_object.py} (97%) diff --git a/docs/supra_sdk.clients.rst b/docs/supra_sdk.clients.rst index af82d94..8384f6b 100644 --- a/docs/supra_sdk.clients.rst +++ b/docs/supra_sdk.clients.rst @@ -15,3 +15,20 @@ Api Client :members: :show-inheritance: :undoc-members: + + +Supra Token +------------------------------------- + +.. automodule:: supra_sdk.clients.supra_token + :members: + :show-inheritance: + :undoc-members: + +Supra Token Object +------------------------------------- + +.. automodule:: supra_sdk.clients.supra_token_object + :members: + :show-inheritance: + :undoc-members: \ No newline at end of file diff --git a/docs/supra_sdk.rst b/docs/supra_sdk.rst index f501153..f7b7517 100644 --- a/docs/supra_sdk.rst +++ b/docs/supra_sdk.rst @@ -72,22 +72,6 @@ Metadata :show-inheritance: :undoc-members: -Supra Token Client --------------------------------------- - -.. automodule:: supra_sdk.supra_token_client - :members: - :show-inheritance: - :undoc-members: - -Supra TokenV1 Client ----------------------------------------- - -.. automodule:: supra_sdk.supra_tokenv1_client - :members: - :show-inheritance: - :undoc-members: - Transactions ------------------------------ diff --git a/examples/simple_nft.py b/examples/simple_nft.py index a29983b..7969e5f 100644 --- a/examples/simple_nft.py +++ b/examples/simple_nft.py @@ -7,13 +7,13 @@ from examples.common import RPC_NODE_URL from supra_sdk.account import Account +from supra_sdk.clients import SupraTokenClient from supra_sdk.clients.rest import SupraClient -from supra_sdk.supra_tokenv1_client import SupraTokenV1Client async def main(): supra_client = SupraClient(RPC_NODE_URL) - token_client = SupraTokenV1Client(supra_client) + token_client = SupraTokenClient(supra_client) alice = Account.generate() bob = Account.generate() @@ -54,7 +54,7 @@ async def main(): ) print(f"Alice's token balance: {balance}") token_data = await token_client.get_token_data( - alice.address(), collection_name, token_name, property_version + alice.address(), collection_name, token_name ) print(f"Alice's token data: {json.dumps(token_data, indent=4, sort_keys=True)}") diff --git a/examples/simple_supra_token.py b/examples/simple_supra_token.py index 5be5231..565d52b 100644 --- a/examples/simple_supra_token.py +++ b/examples/simple_supra_token.py @@ -9,12 +9,12 @@ from supra_sdk.account import Account from supra_sdk.account_address import AccountAddress from supra_sdk.clients.rest import SupraClient -from supra_sdk.supra_token_client import ( +from supra_sdk.clients.supra_token_object import ( Collection, Object, PropertyMap, ReadObject, - SupraTokenClient, + SupraTokenObjectClient, Token, ) @@ -24,7 +24,7 @@ def get_owner(obj: ReadObject) -> AccountAddress: async def get_collection_data( - token_client: SupraTokenClient, collection_addr: AccountAddress + token_client: SupraTokenObjectClient, collection_addr: AccountAddress ) -> dict[str, str]: collection = (await token_client.read_object(collection_addr)).resources[Collection] return { @@ -36,7 +36,7 @@ async def get_collection_data( async def get_token_data( - token_client: SupraTokenClient, token_addr: AccountAddress + token_client: SupraTokenObjectClient, token_addr: AccountAddress ) -> dict[str, str]: token = (await token_client.read_object(token_addr)).resources[Token] return { @@ -50,7 +50,7 @@ async def get_token_data( async def main(): supra_client = SupraClient(RPC_NODE_URL) - token_client = SupraTokenClient(supra_client) + token_client = SupraTokenObjectClient(supra_client) alice = Account.generate() bob = Account.generate() diff --git a/examples/supra_token.py b/examples/supra_token.py index 6d43027..b2f26c3 100644 --- a/examples/supra_token.py +++ b/examples/supra_token.py @@ -8,12 +8,17 @@ from supra_sdk.account import Account from supra_sdk.account_address import AccountAddress from supra_sdk.clients.rest import SupraClient -from supra_sdk.supra_token_client import Object, Property, PropertyMap, SupraTokenClient +from supra_sdk.clients.supra_token_object import ( + Object, + Property, + PropertyMap, + SupraTokenObjectClient, +) async def main(): supra_client = SupraClient(RPC_NODE_URL) - token_client = SupraTokenClient(supra_client) + token_client = SupraTokenObjectClient(supra_client) alice = Account.generate() bob = Account.generate() diff --git a/supra_sdk/clients/__init__.py b/supra_sdk/clients/__init__.py index 32eef9c..defffb6 100644 --- a/supra_sdk/clients/__init__.py +++ b/supra_sdk/clients/__init__.py @@ -2,5 +2,7 @@ # SPDX-License-Identifier: Apache-2.0 from supra_sdk.clients.api_client import ApiClient, ApiClientConfig +from supra_sdk.clients.supra_token import SupraTokenClient +from supra_sdk.clients.supra_token_object import SupraTokenObjectClient -__all__ = ["ApiClient", "ApiClientConfig"] +__all__ = ["ApiClient", "ApiClientConfig", "SupraTokenClient", "SupraTokenObjectClient"] diff --git a/supra_sdk/clients/rest/rest_client.py b/supra_sdk/clients/rest/rest_client.py index dc43a75..85a31c2 100644 --- a/supra_sdk/clients/rest/rest_client.py +++ b/supra_sdk/clients/rest/rest_client.py @@ -18,7 +18,7 @@ class RestClient: api_client: ApiClient def __init__(self, api_client: ApiClient): - """Initialize a `RestClient` instance. + """Initializes a `RestClient` instance. Args: api_client (supra_sdk.clients.api_client.ApiClient): An instance of `ApiClient` responsible for managing HTTP requests. diff --git a/supra_sdk/supra_tokenv1_client.py b/supra_sdk/clients/supra_token.py similarity index 95% rename from supra_sdk/supra_tokenv1_client.py rename to supra_sdk/clients/supra_token.py index 997b65d..4b56566 100644 --- a/supra_sdk/supra_tokenv1_client.py +++ b/supra_sdk/clients/supra_token.py @@ -18,12 +18,21 @@ U64_MAX = 18446744073709551615 -class SupraTokenV1Client: - """A wrapper around reading and mutating SupraTokens also known as Token Objects""" +class SupraTokenClient: + """A class that provides convenient methods to interact with the `aptos-token` package. + + Args: + client (SupraClient): Instance of the `SupraClient` class used for interacting with rpc-node. + """ client: SupraClient def __init__(self, client: SupraClient): + """Initializes a `SupraTokenClient` instance. + + Args: + client (SupraClient): Instance of the `SupraClient` class. + """ self.client = client async def create_collection( @@ -185,10 +194,6 @@ async def direct_transfer_token( ) return await self.client.submit_transaction(signed_transaction) - """ - Token accessors - """ - async def get_token( self, owner: AccountAddress, @@ -241,7 +246,6 @@ async def get_token_data( creator: AccountAddress, collection_name: str, token_name: str, - _property_version: int, ) -> Any: resource = await self.client.account_resource( creator, "0x3::token::Collections" diff --git a/supra_sdk/supra_token_client.py b/supra_sdk/clients/supra_token_object.py similarity index 97% rename from supra_sdk/supra_token_client.py rename to supra_sdk/clients/supra_token_object.py index a7d26b1..cdd630f 100644 --- a/supra_sdk/supra_token_client.py +++ b/supra_sdk/clients/supra_token_object.py @@ -335,14 +335,23 @@ def __str__(self) -> str: return response -class SupraTokenClient: - """A wrapper around reading and mutating Digital Assets also known as Token Objects""" +class SupraTokenObjectClient: + """A class that provides convenient methods to interact with the `aptos-token-package` package. + + Args: + client (SupraClient): Instance of the `SupraClient` class used for interacting with rpc-node. + """ client: SupraClient PAGINATION_COUNT: int = 100 def __init__(self, client: SupraClient): + """Initializes a `SupraTokenObjectClient` instance. + + Args: + client (SupraClient): Instance of the `SupraClient` class. + """ self.client = client async def read_object(self, address: AccountAddress) -> ReadObject: @@ -425,7 +434,7 @@ async def create_collection( royalty_numerator: int, royalty_denominator: int, ) -> str: - payload = SupraTokenClient.create_collection_payload( + payload = SupraTokenObjectClient.create_collection_payload( description, max_supply, name, @@ -490,7 +499,7 @@ async def mint_token( uri: str, properties: PropertyMap, ) -> str: # <:!:mint_token - payload = SupraTokenClient.mint_token_payload( + payload = SupraTokenObjectClient.mint_token_payload( collection, description, name, uri, properties ) signed_transaction = await self.client.create_signed_transaction(