Merge pull request #1216 from ethereum/fix-type-aliasing

Change uint aliases to just be subclasses
This commit is contained in:
Danny Ryan 2019-06-25 14:45:05 -06:00 committed by GitHub
commit ab012b8adf
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 3 additions and 7 deletions

View File

@ -130,11 +130,7 @@ def objects_to_spec(functions: Dict[str, str],
new_type_definitions = (
'\n\n'.join(
[
f"class {key}({value}):\n"
f" def __init__(self, _x: {value}) -> None:\n"
f" ...\n"
if value.startswith("uint")
else f"class {key}({value}):\n pass\n"
f"class {key}({value}):\n pass\n"
for key, value in custom_types.items()
]
)

View File

@ -34,7 +34,7 @@ class BasicValue(int, SSZValue, metaclass=BasicType):
class Bool(BasicValue): # can't subclass bool.
byte_len = 1
def __new__(cls, value, *args, **kwargs):
def __new__(cls, value: int): # int value, but can be any subclass of int (bool, Bit, Bool, etc...)
if value < 0 or value > 1:
raise ValueError(f"value {value} out of bounds for bit")
return super().__new__(cls, value)
@ -54,7 +54,7 @@ class Bit(Bool):
class uint(BasicValue, metaclass=BasicType):
def __new__(cls, value, *args, **kwargs):
def __new__(cls, value: int):
if value < 0:
raise ValueError("unsigned types must not be negative")
if cls.byte_len and value.bit_length() > (cls.byte_len << 3):