Make Address accept bytes/str too
This commit is contained in:
parent
b70c3fbc43
commit
a184c3bea2
|
@ -20,7 +20,7 @@ class BaseAddress(object):
|
||||||
label = None
|
label = None
|
||||||
|
|
||||||
def __init__(self, addr, label=None):
|
def __init__(self, addr, label=None):
|
||||||
addr = str(addr)
|
addr = addr.decode() if isinstance(addr, bytes) else str(addr)
|
||||||
if not _ADDR_REGEX.match(addr):
|
if not _ADDR_REGEX.match(addr):
|
||||||
raise ValueError("Address must be 95 characters long base58-encoded string, "
|
raise ValueError("Address must be 95 characters long base58-encoded string, "
|
||||||
"is {addr} ({len} chars length)".format(addr=addr, len=len(addr)))
|
"is {addr} ({len} chars length)".format(addr=addr, len=len(addr)))
|
||||||
|
@ -155,7 +155,7 @@ class IntegratedAddress(Address):
|
||||||
# NOTE: _valid_netbytes order is (mainnet, testnet, stagenet)
|
# NOTE: _valid_netbytes order is (mainnet, testnet, stagenet)
|
||||||
|
|
||||||
def __init__(self, address):
|
def __init__(self, address):
|
||||||
address = str(address)
|
address = address.decode() if isinstance(address, bytes) else str(address)
|
||||||
if not _IADDR_REGEX.match(address):
|
if not _IADDR_REGEX.match(address):
|
||||||
raise ValueError("Integrated address must be 106 characters long base58-encoded string, "
|
raise ValueError("Integrated address must be 106 characters long base58-encoded string, "
|
||||||
"is {addr} ({len} chars length)".format(addr=address, len=len(address)))
|
"is {addr} ({len} chars length)".format(addr=address, len=len(address)))
|
||||||
|
@ -186,7 +186,7 @@ def address(addr, label=None):
|
||||||
|
|
||||||
:rtype: :class:`Address`, :class:`SubAddress` or :class:`IntegratedAddress`
|
:rtype: :class:`Address`, :class:`SubAddress` or :class:`IntegratedAddress`
|
||||||
"""
|
"""
|
||||||
addr = str(addr)
|
addr = addr.decode() if isinstance(addr, bytes) else str(addr)
|
||||||
if _ADDR_REGEX.match(addr):
|
if _ADDR_REGEX.match(addr):
|
||||||
netbyte = bytearray(unhexlify(base58.decode(addr)))[0]
|
netbyte = bytearray(unhexlify(base58.decode(addr)))[0]
|
||||||
if netbyte in Address._valid_netbytes:
|
if netbyte in Address._valid_netbytes:
|
||||||
|
|
|
@ -18,6 +18,10 @@ class Tests(object):
|
||||||
self.assertEqual(a.spend_key(), self.psk)
|
self.assertEqual(a.spend_key(), self.psk)
|
||||||
self.assertEqual(a.view_key(), self.pvk)
|
self.assertEqual(a.view_key(), self.pvk)
|
||||||
self.assertEqual(hash(a), hash(self.addr))
|
self.assertEqual(hash(a), hash(self.addr))
|
||||||
|
ba = Address(self.addr.encode())
|
||||||
|
self.assertEqual(ba, a)
|
||||||
|
ba = address(self.addr.encode())
|
||||||
|
self.assertEqual(ba, a)
|
||||||
|
|
||||||
ia = IntegratedAddress(self.iaddr)
|
ia = IntegratedAddress(self.iaddr)
|
||||||
self.assertEqual(ia.payment_id(), self.pid)
|
self.assertEqual(ia.payment_id(), self.pid)
|
||||||
|
@ -26,10 +30,18 @@ class Tests(object):
|
||||||
self.assertEqual(ia.spend_key(), self.psk)
|
self.assertEqual(ia.spend_key(), self.psk)
|
||||||
self.assertEqual(ia.view_key(), self.pvk)
|
self.assertEqual(ia.view_key(), self.pvk)
|
||||||
self.assertEqual(ia.base_address(), a)
|
self.assertEqual(ia.base_address(), a)
|
||||||
|
ba = IntegratedAddress(self.iaddr.encode())
|
||||||
|
self.assertEqual(ba, ia)
|
||||||
|
ba = address(self.iaddr.encode())
|
||||||
|
self.assertEqual(ba, ia)
|
||||||
|
|
||||||
sa = SubAddress(self.subaddr)
|
sa = SubAddress(self.subaddr)
|
||||||
self.assertEqual(str(sa), self.subaddr)
|
self.assertEqual(str(sa), self.subaddr)
|
||||||
self.assertEqual("{:s}".format(sa), self.subaddr)
|
self.assertEqual("{:s}".format(sa), self.subaddr)
|
||||||
|
ba = SubAddress(self.subaddr.encode())
|
||||||
|
self.assertEqual(ba, sa)
|
||||||
|
ba = address(self.subaddr.encode())
|
||||||
|
self.assertEqual(ba, sa)
|
||||||
|
|
||||||
def test_payment_id(self):
|
def test_payment_id(self):
|
||||||
a = Address(self.addr)
|
a = Address(self.addr)
|
||||||
|
|
Loading…
Reference in New Issue