From e7b458cc01659ff1014abca618e8debee22f0076 Mon Sep 17 00:00:00 2001 From: 0xMochan Date: Thu, 1 Feb 2024 09:36:26 -0500 Subject: [PATCH] feat: remove `requests` as a dep for `get_abis.py` script and add docs --- substreams/ethereum-balancer/abi/README.md | 13 +++++++++++++ substreams/ethereum-balancer/abi/get_abis.py | 16 +++++++--------- 2 files changed, 20 insertions(+), 9 deletions(-) diff --git a/substreams/ethereum-balancer/abi/README.md b/substreams/ethereum-balancer/abi/README.md index 862e872..bcb5ddc 100644 --- a/substreams/ethereum-balancer/abi/README.md +++ b/substreams/ethereum-balancer/abi/README.md @@ -7,3 +7,16 @@ We then can define all of the abis via `substreams_ethereum::Abigen::new` in our ## Recommendation It would be apt to convert (maybe through copilot) the python code into the `build.rs` file and then automate the `Abigen` functionality. + +## Usage + +Requires `python 3.8+`, + +```bash +cd abi +python get_abis.py +``` + +This will populate the files in the `abi` folder. + +When the `build.rs` file runs (when `rust-analyzer` activates or `cargo build` is manually ran), Abigen will generate new rust src files from the abis in the `src/abi` folder. diff --git a/substreams/ethereum-balancer/abi/get_abis.py b/substreams/ethereum-balancer/abi/get_abis.py index 6b941e8..6935391 100644 --- a/substreams/ethereum-balancer/abi/get_abis.py +++ b/substreams/ethereum-balancer/abi/get_abis.py @@ -3,8 +3,7 @@ import json import os import re import time - -import requests +import urllib.request # Exports contract ABI in JSON @@ -38,13 +37,12 @@ def __main__(): print(f"Getting ABI for {name} at {addr} ({normalized_name})") try: - ... - response = requests.get(ABI_ENDPOINT.format(address=addr)) - response_json = response.json() - abi_json = json.loads(response_json["result"]) - result = json.dumps(abi_json, indent=4, sort_keys=True) - with open(f"{normalized_name}.json", "w") as f: - f.write(result) + with urllib.request.urlopen(ABI_ENDPOINT.format(address=addr)) as response: + response_json = json.loads(response.read().decode()) + abi_json = json.loads(response_json["result"]) + result = json.dumps(abi_json, indent=4, sort_keys=True) + with open(f"{normalized_name}.json", "w") as f: + f.write(result) except Exception as err: print(response.content) raise err