Skip to content

Commit e4e2dfc

Browse files
marioevzfselmo
authored andcommitted
refactor(clis/t8n): Request objects
1 parent bccc85b commit e4e2dfc

File tree

2 files changed

+40
-16
lines changed

2 files changed

+40
-16
lines changed

src/ethereum_clis/transition_tool.py

Lines changed: 25 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,13 @@
2424

2525
from .ethereum_cli import EthereumCLI
2626
from .file_utils import dump_files_to_directory, write_json_file
27-
from .types import TransactionReceipt, TransitionToolInput, TransitionToolOutput
27+
from .types import (
28+
TransactionReceipt,
29+
TransitionToolContext,
30+
TransitionToolInput,
31+
TransitionToolOutput,
32+
TransitionToolRequest,
33+
)
2834

2935
model_dump_config: Mapping = {"by_alias": True, "exclude_none": True}
3036

@@ -142,6 +148,17 @@ def to_input(self) -> TransitionToolInput:
142148
env=self.env,
143149
)
144150

151+
def get_request_data(self) -> TransitionToolRequest:
152+
"""Convert the data to a TransitionToolRequest object."""
153+
return TransitionToolRequest(
154+
state=TransitionToolContext(
155+
fork=self.fork_name,
156+
chain_id=self.chain_id,
157+
reward=self.reward,
158+
),
159+
input=self.to_input(),
160+
)
161+
145162
def _evaluate_filesystem(
146163
self,
147164
*,
@@ -298,37 +315,29 @@ def _evaluate_server(
298315
timeout: int,
299316
) -> TransitionToolOutput:
300317
"""Execute the transition tool sending inputs and outputs via a server."""
301-
input_contents = t8n_data.to_input()
302-
input_json = input_contents.model_dump(mode="json", **model_dump_config)
303-
post_data = {
304-
"state": {
305-
"fork": t8n_data.fork_name,
306-
"chainid": t8n_data.chain_id,
307-
"reward": t8n_data.reward,
308-
},
309-
"input": input_json,
310-
}
318+
request_data = t8n_data.get_request_data()
319+
request_data_json = request_data.model_dump(mode="json", **model_dump_config)
311320

312321
if debug_output_path:
313322
request_info = (
314323
f"Server URL: {self.server_url}\n\n"
315-
f"Request Data:\n{json.dumps(post_data, indent=2)}\n"
324+
f"Request Data:\n{json.dumps(request_data_json, indent=2)}\n"
316325
)
317326
dump_files_to_directory(
318327
debug_output_path,
319328
{
320-
"input/alloc.json": input_contents.alloc,
321-
"input/env.json": input_contents.env,
329+
"input/alloc.json": request_data.input.alloc,
330+
"input/env.json": request_data.input.env,
322331
"input/txs.json": [
323332
tx.model_dump(mode="json", **model_dump_config)
324-
for tx in input_contents.txs
333+
for tx in request_data.input.txs
325334
],
326335
"request_info.txt": request_info,
327336
},
328337
)
329338

330339
response = self._server_post(
331-
data=post_data, url_args=self._generate_post_args(t8n_data), timeout=timeout
340+
data=request_data_json, url_args=self._generate_post_args(t8n_data), timeout=timeout
332341
)
333342
output: TransitionToolOutput = TransitionToolOutput.model_validate(response.json())
334343

src/ethereum_clis/types.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,3 +52,18 @@ class TransitionToolOutput(CamelModel):
5252
alloc: Alloc
5353
result: Result
5454
body: Bytes | None = None
55+
56+
57+
class TransitionToolContext(CamelModel):
58+
"""Transition tool context."""
59+
60+
fork: str
61+
chain_id: int = Field(..., alias="chainid")
62+
reward: int
63+
64+
65+
class TransitionToolRequest(CamelModel):
66+
"""Transition tool server request data."""
67+
68+
state: TransitionToolContext
69+
input: TransitionToolInput

0 commit comments

Comments
 (0)