From d23bf99884396b450fb7ce04bc6e8a29f552d380 Mon Sep 17 00:00:00 2001 From: Rima <153289003+casks-mutters@users.noreply.github.com> Date: Mon, 17 Nov 2025 04:44:24 -0500 Subject: [PATCH] Use a context manager for the input CSV Right now call csv.DictReader(open(...)) without closing the file --- batch_slot_diff.py | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/batch_slot_diff.py b/batch_slot_diff.py index 4e74089..7ade2da 100644 --- a/batch_slot_diff.py +++ b/batch_slot_diff.py @@ -48,14 +48,29 @@ def main(): tip = w3.eth.block_number print(f"🌐 Connected (chainId={chain_id}, tip={tip})") - reader = csv.DictReader(open(inp, newline="")) - required = {"address","slot","block_a","block_b"} -if not required.issubset(reader.fieldnames or set()): print(f"❌ CSV must contain: {sorted(required)}"); sys.exit(2) - fieldnames = ["address","slot","block_a","block_b","value_a","value_b","leaf_a","leaf_b","pair_root","changed"] + required = {"address", "slot", "block_a", "block_b"} + fieldnames = [ + "address", + "slot", + "block_a", + "block_b", + "value_a", + "value_b", + "leaf_a", + "leaf_b", + "pair_root", + "changed", + ] writer = csv.DictWriter(sys.stdout, fieldnames=fieldnames) writer.writeheader() - for row in reader: + with open(inp, newline="") as f: + reader = csv.DictReader(f) + if not required.issubset(reader.fieldnames or set()): + print(f"❌ CSV must contain: {sorted(required)}", file=sys.stderr) + sys.exit(2) + + for row in reader: try: address = checksum(row["address"].strip()) if not Web3.is_address(address): print(f"❌ Invalid address: {row['address']}"); continue