Skip to content

Commit 30dd554

Browse files
authored
Merge pull request #11 from itzmestar/query2
Query2
2 parents bdccd5b + 47c3266 commit 30dd554

File tree

5 files changed

+69
-20
lines changed

5 files changed

+69
-20
lines changed
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
# This workflows will upload a Python Package using Twine when a release is created
2+
# For more information see: https://help.github.com/en/actions/language-and-framework-guides/using-python-with-github-actions#publishing-to-package-registries
3+
4+
name: Upload Python Package
5+
6+
on:
7+
release:
8+
types: [created]
9+
10+
jobs:
11+
deploy:
12+
13+
runs-on: ubuntu-latest
14+
15+
steps:
16+
- uses: actions/checkout@v2
17+
- name: Set up Python
18+
uses: actions/setup-python@v2
19+
with:
20+
python-version: '3.x'
21+
- name: Install dependencies
22+
run: |
23+
python -m pip install --upgrade pip
24+
pip install setuptools wheel twine
25+
- name: Build and publish
26+
env:
27+
TWINE_USERNAME: ${{ secrets.PYPI_USERNAME }}
28+
TWINE_PASSWORD: ${{ secrets.PYPI_PASSWORD }}
29+
run: |
30+
python setup.py sdist bdist_wheel
31+
twine upload dist/*

README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -74,9 +74,9 @@ dune.fetch_auth_token()
7474
# fetch query result id using query id
7575
# query id for any query can be found from the url of the query:
7676
# for example:
77-
# https://duneanalytics.com/queries/4494/8769 => 4494
78-
# https://duneanalytics.com/queries/3705/7192 => 3705
79-
# https://duneanalytics.com/queries/3751/7276 => 3751
77+
# https://dune.com/queries/4494/8769 => 4494
78+
# https://dune.com/queries/3705/7192 => 3705
79+
# https://dune.com/queries/3751/7276 => 3751
8080
8181
result_id = dune.query_result_id(query_id=5508)
8282

duneanalytics/__version__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
__title__ = 'duneanalytics'
33
__description__ = 'Unofficial library for Dune Analytics.'
44
__url__ = 'https://github.com/itzmestar/duneanalytics'
5-
__version__ = '1.1.0'
5+
__version__ = '1.2.0'
66
__build__ = 0x010001
77
__author__ = 'Tarique Anwer'
88
__author_email__ = '[email protected]'

duneanalytics/duneanalytics.py

Lines changed: 25 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,19 @@
22
"""This provides the DuneAnalytics class implementation"""
33

44
from requests import Session
5+
import logging
56

67
# --------- Constants --------- #
78

8-
BASE_URL = "https://dune.xyz"
9+
BASE_URL = "https://dune.com"
910
GRAPH_URL = 'https://core-hsr.duneanalytics.com/v1/graphql'
1011

1112
# --------- Constants --------- #
13+
logging.basicConfig(
14+
level=logging.INFO,
15+
format='%(asctime)s : %(levelname)s : %(funcName)-9s : %(message)s'
16+
)
17+
logger = logging.getLogger("dune")
1218

1319

1420
class DuneAnalytics:
@@ -70,6 +76,8 @@ def login(self):
7076

7177
self.session.post(auth_url, data=form_data)
7278
self.auth_refresh = self.session.cookies.get('auth-refresh')
79+
if self.auth_refresh is None:
80+
logger.warning("Login Failed!")
7381

7482
def fetch_auth_token(self):
7583
"""
@@ -81,8 +89,10 @@ def fetch_auth_token(self):
8189
response = self.session.post(session_url)
8290
if response.status_code == 200:
8391
self.token = response.json().get('token')
92+
if self.token is None:
93+
logger.warning("Fetching Token Failed!")
8494
else:
85-
print(response.text)
95+
logger.error(response.text)
8696

8797
def query_result_id(self, query_id):
8898
"""
@@ -93,22 +103,23 @@ def query_result_id(self, query_id):
93103
"""
94104
query_data = {"operationName": "GetResult", "variables": {"query_id": query_id},
95105
"query": "query GetResult($query_id: Int!, $parameters: [Parameter!]) "
96-
"{\n get_result(query_id: $query_id, parameters: $parameters) "
97-
"{\n job_id\n result_id\n __typename\n }\n}\n"
106+
"{\n get_result_v2(query_id: $query_id, parameters: $parameters) "
107+
"{\n job_id\n result_id\n error_id\n __typename\n }\n}\n"
98108
}
99109

100110
self.session.headers.update({'authorization': f'Bearer {self.token}'})
101111

102112
response = self.session.post(GRAPH_URL, json=query_data)
103113
if response.status_code == 200:
104114
data = response.json()
105-
# print(data)
115+
logger.debug(data)
106116
if 'errors' in data:
117+
logger.error(data.get('errors'))
107118
return None
108-
result_id = data.get('data').get('get_result').get('result_id')
119+
result_id = data.get('data').get('get_result_v2').get('result_id')
109120
return result_id
110121
else:
111-
print(response.text)
122+
logger.error(response.text)
112123
return None
113124

114125
def query_result(self, result_id):
@@ -118,10 +129,12 @@ def query_result(self, result_id):
118129
:return:
119130
"""
120131
query_data = {"operationName": "FindResultDataByResult",
121-
"variables": {"result_id": result_id},
122-
"query": "query FindResultDataByResult($result_id: uuid!) "
132+
"variables": {"result_id": result_id, "error_id": "00000000-0000-0000-0000-000000000000"},
133+
"query": "query FindResultDataByResult($result_id: uuid!, $error_id: uuid!) "
123134
"{\n query_results(where: {id: {_eq: $result_id}}) "
124-
"{\n id\n job_id\n error\n runtime\n generated_at\n columns\n __typename\n }"
135+
"{\n id\n job_id\n runtime\n generated_at\n columns\n __typename\n }"
136+
"\n query_errors(where: {id: {_eq: $error_id}}) {\n id\n job_id\n runtime\n"
137+
" message\n metadata\n type\n generated_at\n __typename\n }\n"
125138
"\n get_result_by_result_id(args: {want_result_id: $result_id}) {\n data\n __typename\n }\n}\n"
126139
}
127140

@@ -130,8 +143,8 @@ def query_result(self, result_id):
130143
response = self.session.post(GRAPH_URL, json=query_data)
131144
if response.status_code == 200:
132145
data = response.json()
133-
# print(data)
146+
logger.debug(data)
134147
return data
135148
else:
136-
print(response.text)
149+
logger.error(response.text)
137150
return {}

tests/test_duneanalytics.py

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,16 +16,21 @@ def test_login(self, dune):
1616

1717
def test_fetch_auth_token(self, dune):
1818
# fetch authentication token
19+
# dune.login()
1920
dune.fetch_auth_token()
2021
assert dune.auth_refresh is not None
2122
assert dune.username is not None
2223
assert dune.password is not None
2324
assert dune.token is not None
2425

25-
@pytest.mark.skip(reason='To be implemented')
26+
# @pytest.mark.skip(reason='To be implemented')
2627
def test_query_result_id(self, dune):
27-
assert False
28+
result_id = dune.query_result_id(query_id=3751)
29+
assert result_id is not None
2830

29-
@pytest.mark.skip(reason='To be implemented')
31+
# @pytest.mark.skip(reason='To be implemented')
3032
def test_query_result(self, dune):
31-
assert False
33+
result_id = dune.query_result_id(query_id=3705)
34+
assert result_id is not None
35+
data = dune.query_result(result_id)
36+
assert data is not None

0 commit comments

Comments
 (0)