-
Notifications
You must be signed in to change notification settings - Fork 3
Duneapi package integration #6
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
bh2smith
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks pretty good overall.
I see that many of the python scripts have a common block of duplicated setup. Not necessary for this PR, but a lot of this could be moved into a general_init.py to avoid having to do Dune.new_from_environment followed by dune.fetch and then setting data_set so many times.
Another thing is that is don't see the need for having unique query IDs everywhere. You can always keep the original queries at those existing IDs, but it seems like everything here could be done from a single query ID since the results are merely being fetched.
|
One thing I noticed that we could probably move towards with these kinds of python projects is writing a single bash script containing all of this stuff python3 -m venv venv
source ./venv/bin/activate
pip install -r requirements.txt
cp .env_sample .env |
|
PS - the reason CI is failing is because |
Co-authored-by: Benjamin Smith <bh2smith@users.noreply.github.com>
| dune.initiate_new_query(query_id, query=QUERY) | ||
|
|
||
| # run query in dune | ||
| dune.execute_query(query_id) | ||
| dune_query = DuneQuery("", "", QUERY, Network.MAINNET, [], query_id) | ||
| # fetch data | ||
| dune.execute_query(dune_query) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This change removed the dune.initiate_query and only left execute which means we were refreshing a static query without updating the values. Fix is made in #8
Unfortunately, this integration comes with a bigger refactor.
The package offers the ability to wait until a query calculation is finished. This is really nice and allows us to cut the amount of python script by a factor of 2: Previously, we had one script for executing the queries and a second one for fetching the results. Now, with the waiting feature, we can do it all in one go.
The duneapi package also allowed me to store the fetched dune data in a cleaner structure, as the parsing of the fetched result is better. Due to that I also needed to touch the rust code.
There is still a lot to be refactored to make the repo clean, but this should be okay as a first go.
testplan:
Now, the referral data needs to be downloaded from ipfs. This takes quite long, if this should be done for all appdata. Hence, I would recommend deleting all entries, but 1, from the newly created
distinct_app_data.jsonfile in the data folder.Once it is done, one can run
And wait until
app_data_referral_relationship.jsonis written.Now, one can run:
and check that trading volume was downloaded and is served by checking: