diff --git a/crypto/transactions/builder/base.py b/crypto/transactions/builder/base.py index e0621711..c9f12eec 100644 --- a/crypto/transactions/builder/base.py +++ b/crypto/transactions/builder/base.py @@ -5,8 +5,8 @@ class AbstractTransactionBuilder: - def __init__(self, data: Optional[dict] = None): - default_data = { + def __init__(self, data: dict): + data = { 'value': 0, 'senderPublicKey': '', 'gasPrice': '5', @@ -14,15 +14,18 @@ def __init__(self, data: Optional[dict] = None): 'network': get_network()['version'], 'gasLimit': 1_000_000, 'data': '', + + **data, } - self.transaction = self.get_transaction_instance(data or default_data) + + self.transaction = self.get_transaction_instance(data) def __str__(self): return self.to_json() @classmethod - def new(cls, data: Optional[dict] = None): - return cls(data) + def new(cls): + return cls({}) def gas_limit(self, gas_limit: int): self.transaction.data['gasLimit'] = int(gas_limit) diff --git a/crypto/transactions/builder/multipayment_builder.py b/crypto/transactions/builder/multipayment_builder.py index 19ffbfab..444757b2 100644 --- a/crypto/transactions/builder/multipayment_builder.py +++ b/crypto/transactions/builder/multipayment_builder.py @@ -1,10 +1,9 @@ -from typing import Optional from crypto.enums.contract_addresses import ContractAddresses from crypto.transactions.builder.base import AbstractTransactionBuilder from crypto.transactions.types.multipayment import Multipayment class MultipaymentBuilder(AbstractTransactionBuilder): - def __init__(self, data: Optional[dict] = None): + def __init__(self, data: dict): super().__init__(data) self.transaction.data['pay'] = [[], []] diff --git a/crypto/transactions/builder/unvote_builder.py b/crypto/transactions/builder/unvote_builder.py index b89dee9e..b312265e 100644 --- a/crypto/transactions/builder/unvote_builder.py +++ b/crypto/transactions/builder/unvote_builder.py @@ -1,10 +1,9 @@ -from typing import Optional from crypto.enums.contract_addresses import ContractAddresses from crypto.transactions.builder.base import AbstractTransactionBuilder from crypto.transactions.types.unvote import Unvote class UnvoteBuilder(AbstractTransactionBuilder): - def __init__(self, data: Optional[dict] = None): + def __init__(self, data: dict): super().__init__(data) self.recipient_address(ContractAddresses.CONSENSUS.value) diff --git a/crypto/transactions/builder/username_registration_builder.py b/crypto/transactions/builder/username_registration_builder.py index 8719b699..fe192fcc 100644 --- a/crypto/transactions/builder/username_registration_builder.py +++ b/crypto/transactions/builder/username_registration_builder.py @@ -1,12 +1,11 @@ import re -from typing import Optional from crypto.enums.contract_addresses import ContractAddresses from crypto.exceptions import InvalidUsernameException from crypto.transactions.builder.base import AbstractTransactionBuilder from crypto.transactions.types.username_registration import UsernameRegistration class UsernameRegistrationBuilder(AbstractTransactionBuilder): - def __init__(self, data: Optional[dict] = None): + def __init__(self, data: dict): super().__init__(data) self.recipient_address(ContractAddresses.USERNAMES.value) diff --git a/crypto/transactions/builder/username_resignation_builder.py b/crypto/transactions/builder/username_resignation_builder.py index fd925cb2..6a17bce8 100644 --- a/crypto/transactions/builder/username_resignation_builder.py +++ b/crypto/transactions/builder/username_resignation_builder.py @@ -1,10 +1,9 @@ -from typing import Optional from crypto.enums.contract_addresses import ContractAddresses from crypto.transactions.builder.base import AbstractTransactionBuilder from crypto.transactions.types.username_resignation import UsernameResignation class UsernameResignationBuilder(AbstractTransactionBuilder): - def __init__(self, data: Optional[dict] = None): + def __init__(self, data: dict): super().__init__(data) self.recipient_address(ContractAddresses.USERNAMES.value) diff --git a/crypto/transactions/builder/validator_registration_builder.py b/crypto/transactions/builder/validator_registration_builder.py index 8d7df3aa..9d6104c2 100644 --- a/crypto/transactions/builder/validator_registration_builder.py +++ b/crypto/transactions/builder/validator_registration_builder.py @@ -1,10 +1,9 @@ -from typing import Optional from crypto.enums.contract_addresses import ContractAddresses from crypto.transactions.builder.base import AbstractTransactionBuilder from crypto.transactions.types.validator_registration import ValidatorRegistration class ValidatorRegistrationBuilder(AbstractTransactionBuilder): - def __init__(self, data: Optional[dict] = None): + def __init__(self, data: dict): super().__init__(data) self.recipient_address(ContractAddresses.CONSENSUS.value) diff --git a/crypto/transactions/builder/validator_resignation_builder.py b/crypto/transactions/builder/validator_resignation_builder.py index 77b3908d..43b656b6 100644 --- a/crypto/transactions/builder/validator_resignation_builder.py +++ b/crypto/transactions/builder/validator_resignation_builder.py @@ -1,10 +1,9 @@ -from typing import Optional from crypto.enums.contract_addresses import ContractAddresses from crypto.transactions.builder.base import AbstractTransactionBuilder from crypto.transactions.types.validator_resignation import ValidatorResignation class ValidatorResignationBuilder(AbstractTransactionBuilder): - def __init__(self, data: Optional[dict] = None): + def __init__(self, data: dict): super().__init__(data) self.recipient_address(ContractAddresses.CONSENSUS.value) diff --git a/crypto/transactions/builder/vote_builder.py b/crypto/transactions/builder/vote_builder.py index 565dd88b..55ebce6a 100644 --- a/crypto/transactions/builder/vote_builder.py +++ b/crypto/transactions/builder/vote_builder.py @@ -1,10 +1,9 @@ -from typing import Optional from crypto.enums.contract_addresses import ContractAddresses from crypto.transactions.builder.base import AbstractTransactionBuilder from crypto.transactions.types.vote import Vote class VoteBuilder(AbstractTransactionBuilder): - def __init__(self, data: Optional[dict] = None): + def __init__(self, data: dict): super().__init__(data) self.recipient_address(ContractAddresses.CONSENSUS.value) diff --git a/crypto/transactions/deserializer.py b/crypto/transactions/deserializer.py index 6e1cbb67..0f666c3d 100644 --- a/crypto/transactions/deserializer.py +++ b/crypto/transactions/deserializer.py @@ -64,7 +64,7 @@ def guess_transaction_from_data(self, data: dict) -> AbstractTransaction: if multipayment_payload_data is not None: function_name = multipayment_payload_data.get('functionName') if function_name == AbiFunction.MULTIPAYMENT.value: - return Multipayment(data, multipayment_payload_data) + return Multipayment(data) if data['value'] != '0': return Transfer(data) @@ -73,13 +73,13 @@ def guess_transaction_from_data(self, data: dict) -> AbstractTransaction: if consensus_payload_data is not None: function_name = consensus_payload_data.get('functionName') if function_name == AbiFunction.VOTE.value: - return Vote(data, consensus_payload_data) + return Vote(data) if function_name == AbiFunction.UNVOTE.value: return Unvote(data) if function_name == AbiFunction.VALIDATOR_REGISTRATION.value: - return ValidatorRegistration(data, consensus_payload_data) + return ValidatorRegistration(data) if function_name == AbiFunction.VALIDATOR_RESIGNATION.value: return ValidatorResignation(data) @@ -88,7 +88,7 @@ def guess_transaction_from_data(self, data: dict) -> AbstractTransaction: if username_payload_data is not None: function_name = username_payload_data.get('functionName') if function_name == AbiFunction.USERNAME_REGISTRATION.value: - return UsernameRegistration(data, username_payload_data) + return UsernameRegistration(data) if function_name == AbiFunction.USERNAME_RESIGNATION.value: return UsernameResignation(data) diff --git a/crypto/transactions/types/abstract_transaction.py b/crypto/transactions/types/abstract_transaction.py index c400cac5..02be21b6 100644 --- a/crypto/transactions/types/abstract_transaction.py +++ b/crypto/transactions/types/abstract_transaction.py @@ -11,8 +11,8 @@ from crypto.utils.abi_decoder import AbiDecoder class AbstractTransaction: - def __init__(self, data: Optional[dict] = None): - self.data = data or {} + def __init__(self, data: dict): + self.data = data self.refresh_payload_data() def get_payload(self) -> str: diff --git a/crypto/transactions/types/multipayment.py b/crypto/transactions/types/multipayment.py index 4bb6dcf8..cd525ec0 100644 --- a/crypto/transactions/types/multipayment.py +++ b/crypto/transactions/types/multipayment.py @@ -5,11 +5,8 @@ from crypto.enums.abi_function import AbiFunction class Multipayment(AbstractTransaction): - def __init__(self, data: Optional[dict] = None, payload: Optional[dict] = None): - data = data or {} - if payload is None: - payload = self.decode_payload(data, ContractAbiType.MULTIPAYMENT) - + def __init__(self, data: dict): + payload = self.decode_payload(data, ContractAbiType.MULTIPAYMENT) if payload: data['pay'] = payload.get('args', []) diff --git a/crypto/transactions/types/username_registration.py b/crypto/transactions/types/username_registration.py index 3fcd8583..3444c705 100644 --- a/crypto/transactions/types/username_registration.py +++ b/crypto/transactions/types/username_registration.py @@ -5,11 +5,8 @@ from crypto.enums.abi_function import AbiFunction class UsernameRegistration(AbstractTransaction): - def __init__(self, data: Optional[dict] = None, payload: Optional[dict] = None): - data = data or {} - if payload is None: - payload = self.decode_payload(data, ContractAbiType.USERNAMES) - + def __init__(self, data: dict): + payload = self.decode_payload(data, ContractAbiType.USERNAMES) if payload: data['username'] = payload.get('args', [None])[0] if payload.get('args') else None diff --git a/crypto/transactions/types/validator_registration.py b/crypto/transactions/types/validator_registration.py index 28123468..7e799fe9 100644 --- a/crypto/transactions/types/validator_registration.py +++ b/crypto/transactions/types/validator_registration.py @@ -5,12 +5,8 @@ from crypto.utils.transaction_utils import TransactionUtils class ValidatorRegistration(AbstractTransaction): - def __init__(self, data: Optional[dict] = None, payload: Optional[dict] = None): - data = data or {} - - if payload is None: - payload = self.decode_payload(data) - + def __init__(self, data: dict): + payload = self.decode_payload(data) if payload: data['validatorPublicKey'] = TransactionUtils.parse_hex_from_str(payload.get('args', [None])[0]) if payload.get('args') else None super().__init__(data) diff --git a/crypto/transactions/types/vote.py b/crypto/transactions/types/vote.py index 261f2984..201f58d2 100644 --- a/crypto/transactions/types/vote.py +++ b/crypto/transactions/types/vote.py @@ -4,11 +4,8 @@ from crypto.enums.abi_function import AbiFunction class Vote(AbstractTransaction): - def __init__(self, data: Optional[dict] = None, payload: Optional[dict] = None): - data = data or {} - if payload is None: - payload = self.decode_payload(data) - + def __init__(self, data: dict): + payload = self.decode_payload(data) if payload: data['vote'] = payload.get('args', [None])[0] if payload.get('args') else None diff --git a/tests/transactions/builder/test_evm_call_builder.py b/tests/transactions/builder/test_evm_call_builder.py index edfc7a71..581b8bd6 100644 --- a/tests/transactions/builder/test_evm_call_builder.py +++ b/tests/transactions/builder/test_evm_call_builder.py @@ -4,7 +4,8 @@ def test_evm_call_transaction(passphrase, load_transaction_fixture): fixture = load_transaction_fixture('evm-sign') builder = ( - EvmCallBuilder() + EvmCallBuilder + .new() .gas_price(fixture['data']['gasPrice']) .nonce(fixture['data']['nonce']) .network(fixture['data']['network']) diff --git a/tests/transactions/builder/test_multipayment_builder.py b/tests/transactions/builder/test_multipayment_builder.py index f9823f7a..c100bd18 100644 --- a/tests/transactions/builder/test_multipayment_builder.py +++ b/tests/transactions/builder/test_multipayment_builder.py @@ -4,7 +4,8 @@ def test_it_should_sign_it_with_a_passphrase(passphrase, load_transaction_fixtur fixture = load_transaction_fixture('multipayment') builder = ( - MultipaymentBuilder() + MultipaymentBuilder + .new() .gas_price(fixture['data']['gasPrice']) .nonce(fixture['data']['nonce']) .network(fixture['data']['network']) @@ -30,7 +31,8 @@ def test_it_should_handle_single_recipient(passphrase, load_transaction_fixture) fixture = load_transaction_fixture('multipayment-single') builder = ( - MultipaymentBuilder() + MultipaymentBuilder + .new() .gas_price(fixture['data']['gasPrice']) .nonce(fixture['data']['nonce']) .network(fixture['data']['network']) @@ -55,7 +57,8 @@ def test_it_should_handle_empty_payment(passphrase, load_transaction_fixture): fixture = load_transaction_fixture('multipayment-empty') builder = ( - MultipaymentBuilder() + MultipaymentBuilder + .new() .gas_price(fixture['data']['gasPrice']) .nonce(fixture['data']['nonce']) .network(fixture['data']['network']) diff --git a/tests/transactions/builder/test_transfer_builder.py b/tests/transactions/builder/test_transfer_builder.py index 4df0c498..7537dd2e 100644 --- a/tests/transactions/builder/test_transfer_builder.py +++ b/tests/transactions/builder/test_transfer_builder.py @@ -5,7 +5,8 @@ def test_it_should_sign_it_with_a_passphrase(passphrase, load_transaction_fixtur fixture = load_transaction_fixture('transfer') builder = ( - TransferBuilder() + TransferBuilder + .new() .gas_price(fixture['data']['gasPrice']) .nonce(fixture['data']['nonce']) .network(fixture['data']['network']) @@ -31,7 +32,8 @@ def test_it_should_sign_it_with_a_passphrase(passphrase, load_transaction_fixtur def test_it_should_handle_unit_converter(passphrase, address): builder = ( - TransferBuilder() + TransferBuilder + .new() .gas_price(UnitConverter.parse_units(5, 'gwei')) .nonce('1') .gas_limit(UnitConverter.parse_units(0.1, 'gwei')) diff --git a/tests/transactions/builder/test_unvote_builder.py b/tests/transactions/builder/test_unvote_builder.py index dd430f3c..00be6905 100644 --- a/tests/transactions/builder/test_unvote_builder.py +++ b/tests/transactions/builder/test_unvote_builder.py @@ -4,7 +4,8 @@ def test_unvote_transaction(passphrase, load_transaction_fixture): fixture = load_transaction_fixture('unvote') builder = ( - UnvoteBuilder() + UnvoteBuilder + .new() .gas_price(fixture['data']['gasPrice']) .nonce(fixture['data']['nonce']) .network(fixture['data']['network']) @@ -31,7 +32,8 @@ def test_unvote_transaction_with_default_recipient_address(passphrase, load_tran fixture = load_transaction_fixture('unvote') builder = ( - UnvoteBuilder() + UnvoteBuilder + .new() .gas_price(fixture['data']['gasPrice']) .nonce(fixture['data']['nonce']) .network(fixture['data']['network']) diff --git a/tests/transactions/builder/test_username_registration_builder.py b/tests/transactions/builder/test_username_registration_builder.py index 5befa727..fadc50b0 100644 --- a/tests/transactions/builder/test_username_registration_builder.py +++ b/tests/transactions/builder/test_username_registration_builder.py @@ -5,7 +5,8 @@ def test_username_registration_transaction(passphrase, username, load_transactio fixture = load_transaction_fixture('username-registration') builder = ( - UsernameRegistrationBuilder() + UsernameRegistrationBuilder + .new() .gas_price(fixture['data']['gasPrice']) .nonce(fixture['data']['nonce']) .network(fixture['data']['network']) diff --git a/tests/transactions/builder/test_username_resignation_builder.py b/tests/transactions/builder/test_username_resignation_builder.py index 048ec939..bd336385 100644 --- a/tests/transactions/builder/test_username_resignation_builder.py +++ b/tests/transactions/builder/test_username_resignation_builder.py @@ -4,7 +4,8 @@ def test_username_resignation_transaction(passphrase, load_transaction_fixture): fixture = load_transaction_fixture('username-resignation') builder = ( - UsernameResignationBuilder() + UsernameResignationBuilder + .new() .gas_price(fixture['data']['gasPrice']) .nonce(fixture['data']['nonce']) .network(fixture['data']['network']) diff --git a/tests/transactions/builder/test_validator_registration_builder.py b/tests/transactions/builder/test_validator_registration_builder.py index 9ef26601..cbff0e9a 100644 --- a/tests/transactions/builder/test_validator_registration_builder.py +++ b/tests/transactions/builder/test_validator_registration_builder.py @@ -4,7 +4,8 @@ def test_validator_registration_transaction(passphrase, validator_public_key, lo fixture = load_transaction_fixture('validator-registration') builder = ( - ValidatorRegistrationBuilder() + ValidatorRegistrationBuilder + .new() .gas_price(fixture['data']['gasPrice']) .nonce(fixture['data']['nonce']) .network(fixture['data']['network']) @@ -33,7 +34,8 @@ def test_validator_registration_transaction_with_default_recipient_address(passp fixture = load_transaction_fixture('validator-registration') builder = ( - ValidatorRegistrationBuilder() + ValidatorRegistrationBuilder + .new() .gas_price(fixture['data']['gasPrice']) .nonce(fixture['data']['nonce']) .network(fixture['data']['network']) diff --git a/tests/transactions/builder/test_validator_resignation_builder.py b/tests/transactions/builder/test_validator_resignation_builder.py index b5cb95fe..4975e4f9 100644 --- a/tests/transactions/builder/test_validator_resignation_builder.py +++ b/tests/transactions/builder/test_validator_resignation_builder.py @@ -4,7 +4,8 @@ def test_validator_resignation_transaction(passphrase, load_transaction_fixture) fixture = load_transaction_fixture('validator-resignation') builder = ( - ValidatorResignationBuilder() + ValidatorResignationBuilder + .new() .gas_price(fixture['data']['gasPrice']) .nonce(fixture['data']['nonce']) .network(fixture['data']['network']) @@ -31,7 +32,8 @@ def test_validator_resignation_transaction_with_default_recipient_address(passph fixture = load_transaction_fixture('validator-resignation') builder = ( - ValidatorResignationBuilder() + ValidatorResignationBuilder + .new() .gas_price(fixture['data']['gasPrice']) .nonce(fixture['data']['nonce']) .network(fixture['data']['network']) diff --git a/tests/transactions/builder/test_vote_builder.py b/tests/transactions/builder/test_vote_builder.py index 234124d4..57a3006a 100644 --- a/tests/transactions/builder/test_vote_builder.py +++ b/tests/transactions/builder/test_vote_builder.py @@ -4,7 +4,8 @@ def test_vote_transaction(passphrase, load_transaction_fixture): fixture = load_transaction_fixture('vote') builder = ( - VoteBuilder() + VoteBuilder + .new() .gas_price(fixture['data']['gasPrice']) .nonce(fixture['data']['nonce']) .network(fixture['data']['network']) @@ -32,7 +33,8 @@ def test_vote_transaction_with_default_recipient_address(passphrase, load_transa fixture = load_transaction_fixture('vote') builder = ( - VoteBuilder() + VoteBuilder + .new() .gas_price(fixture['data']['gasPrice']) .nonce(fixture['data']['nonce']) .network(fixture['data']['network'])