Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit c7e9773

Browse files
author
Kotsias, Panagiotis-Christos
committed
Datatypes for 0x strings
1 parent 038e705 commit c7e9773

File tree

1 file changed

+52
-0
lines changed

1 file changed

+52
-0
lines changed

etherscan/datatypes.py

+52
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
from etherscan.enums.messages_enum import MessagesEnum as msgs
2+
3+
_CONTRACT_LEN = 42
4+
_TX_LEN = 66
5+
_WALLET_LEN = 42
6+
7+
8+
class BaseAddress:
9+
def __init__(self):
10+
self._address = ""
11+
self._maxlen = 0
12+
13+
def _check_0x(self, address: str):
14+
if address[:2] != "0x":
15+
raise ValueError(msgs.INVALID_ADDRESS)
16+
return address
17+
18+
def _check_len(self, address: str):
19+
if len(address) != self._maxlen:
20+
raise ValueError(msgs.INVALID_ADDRESS)
21+
return address
22+
23+
def __repr__(self):
24+
return self._address
25+
26+
def __str__(self):
27+
return self._address
28+
29+
def __add__(self, val: str):
30+
return self._address + val
31+
32+
def __len__(self):
33+
return len(self._address)
34+
35+
36+
class ContractAddress(BaseAddress):
37+
def __init__(self, address: str):
38+
self._maxlen = _CONTRACT_LEN
39+
self._address = self._check_len(self._check_0x(address))
40+
41+
42+
class TxHash(BaseAddress):
43+
def __init__(self, address: str):
44+
self._maxlen = _TX_LEN
45+
self._address = self._check_len(self._check_0x(address))
46+
47+
48+
class WalletAddress(BaseAddress):
49+
def __init__(self, address: str):
50+
self._maxlen = _WALLET_LEN
51+
self._address = self._check_len(self._check_0x(address))
52+

0 commit comments

Comments
 (0)