Skip to content

Commit 0a5a7c7

Browse files
committed
refactor(SDK): allow using Purse and Accessories as address types
1 parent 693e84c commit 0a5a7c7

2 files changed

Lines changed: 14 additions & 5 deletions

File tree

sdk/py/purse/accessory.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import string
22
from typing import TYPE_CHECKING, Any
3+
from ape.api.address import BaseAddress
34
from ape.contracts import ContractInstance
45
from ape.types import AddressType
56
from ape.utils import ManagerAccessMixin
@@ -28,9 +29,9 @@ def __hash__(self) -> int:
2829
return int(self.accessory.lower().replace("0x", "") + self.method.hex(), 16)
2930

3031

31-
class Accessory(ManagerAccessMixin):
32+
class Accessory(BaseAddress, ManagerAccessMixin):
3233
def __init__(self, address: AddressType | ContractInstance, *purses: "Purse"):
33-
self.address = self.conversion_manager.convert(address, AddressType)
34+
self._address = self.conversion_manager.convert(address, AddressType)
3435

3536
if isinstance(address, ContractInstance):
3637
self.contract = address
@@ -40,6 +41,10 @@ def __init__(self, address: AddressType | ContractInstance, *purses: "Purse"):
4041
purse.address: purse for purse in purses
4142
}
4243

44+
@property
45+
def address(self) -> AddressType:
46+
return self._address
47+
4348
# TODO: `Accessory.load_package_type(package: uri or PackageManifest, contract_name: str)`
4449

4550
def __repr__(self) -> str:

sdk/py/purse/main.py

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
from ape.contracts import (
77
ContractInstance,
88
)
9+
from ape.api.address import BaseAddress
910
from ape.contracts.base import (
1011
ContractCallHandler,
1112
ContractEvent,
@@ -19,19 +20,18 @@
1920

2021
if TYPE_CHECKING:
2122
from ape.api import AccountAPI
22-
from ape.api.address import BaseAddress
2323
from ape.api.transactions import ReceiptAPI
2424

2525

26-
class Purse(ManagerAccessMixin):
26+
class Purse(BaseAddress, ManagerAccessMixin):
2727
def __init__(
2828
self,
2929
account: "AccountAPI | BaseAddress | AddressType",
3030
*accessories: "Accessory",
3131
):
3232
from ape.api import AccountAPI
3333

34-
self.address = self.conversion_manager.convert(account, AddressType)
34+
self._address = self.conversion_manager.convert(account, AddressType)
3535

3636
if isinstance(account, AccountAPI):
3737
self.wallet = account
@@ -61,6 +61,10 @@ def initialize(
6161

6262
return cls(account, *accessories)
6363

64+
@property
65+
def address(self) -> AddressType:
66+
return self._address
67+
6468
@cached_property
6569
def wallet(self) -> "AccountAPI | None":
6670
if self.address in self.accounts_manager:

0 commit comments

Comments
 (0)