diff --git a/starknet_py/net/client_models.py b/starknet_py/net/client_models.py index 5eae10a75..cf9288225 100644 --- a/starknet_py/net/client_models.py +++ b/starknet_py/net/client_models.py @@ -363,6 +363,7 @@ class ExecutionResources: bitwise_builtin_applications: Optional[int] = None keccak_builtin_applications: Optional[int] = None memory_holes: Optional[int] = None + segment_arena_builtin: Optional[int] = None # TODO (#1219): split into PendingTransactionReceipt and TransactionReceipt diff --git a/starknet_py/net/schemas/rpc.py b/starknet_py/net/schemas/rpc.py index c79d52198..7a064b7db 100644 --- a/starknet_py/net/schemas/rpc.py +++ b/starknet_py/net/schemas/rpc.py @@ -116,29 +116,32 @@ def make_dataclass(self, data, **kwargs) -> L2toL1Message: class ExecutionResourcesSchema(Schema): - steps = Felt(data_key="steps", required=True) - range_check_builtin_applications = Felt( + steps = fields.Integer(data_key="steps", required=True) + range_check_builtin_applications = fields.Integer( data_key="range_check_builtin_applications", load_default=None ) - pedersen_builtin_applications = Felt( + pedersen_builtin_applications = fields.Integer( data_key="pedersen_builtin_applications", load_default=None ) - poseidon_builtin_applications = Felt( + poseidon_builtin_applications = fields.Integer( data_key="poseidon_builtin_applications", load_default=None ) - ec_op_builtin_applications = Felt( + ec_op_builtin_applications = fields.Integer( data_key="ec_op_builtin_applications", load_default=None ) - ecdsa_builtin_applications = Felt( + ecdsa_builtin_applications = fields.Integer( data_key="ecdsa_builtin_applications", load_default=None ) - bitwise_builtin_applications = Felt( + bitwise_builtin_applications = fields.Integer( data_key="bitwise_builtin_applications", load_default=None ) - keccak_builtin_applications = Felt( + keccak_builtin_applications = fields.Integer( data_key="keccak_builtin_applications", load_default=None ) - memory_holes = Felt(data_key="memory_holes", load_default=None) + segment_arena_builtin = fields.Integer( + data_key="segment_arena_builtin", load_default=None + ) + memory_holes = fields.Integer(data_key="memory_holes", load_default=None) @post_load def make_dataclass(self, data, **kwargs) -> ExecutionResources: diff --git a/starknet_py/tests/e2e/tests_on_networks/client_test.py b/starknet_py/tests/e2e/tests_on_networks/client_test.py index 3ce2195ee..d254fa5ee 100644 --- a/starknet_py/tests/e2e/tests_on_networks/client_test.py +++ b/starknet_py/tests/e2e/tests_on_networks/client_test.py @@ -425,3 +425,19 @@ async def test_get_events_sepolia_testnet(client_sepolia_testnet): assert isinstance(events_chunk, EventsChunk) assert len(events_chunk.events) == 10 assert events_chunk.continuation_token is not None + + +@pytest.mark.asyncio +async def test_get_tx_receipt_with_execution_resources(client_sepolia_integration): + receipt = await client_sepolia_integration.get_transaction_receipt( + tx_hash=0x077E84B7C0C4CC88B778EEAEF32B7CED4500FE4AAEE62FD2F849B7DD90A87826 + ) + + assert receipt.execution_resources is not None + assert receipt.execution_resources.steps is not None + assert receipt.execution_resources.segment_arena_builtin is not None + assert receipt.execution_resources.bitwise_builtin_applications is not None + assert receipt.execution_resources.ec_op_builtin_applications is not None + assert receipt.execution_resources.memory_holes is not None + assert receipt.execution_resources.pedersen_builtin_applications is not None + assert receipt.execution_resources.range_check_builtin_applications is not None