77"""
88
99from io import BytesIO
10- from typing import Any , Dict , Optional
10+ from typing import Any , Dict , List , Optional
1111
1212from deprecated import deprecated
1313
@@ -76,39 +76,34 @@ def get_execution_results(
7676 job_id : str ,
7777 limit : Optional [int ] = None ,
7878 offset : Optional [int ] = None ,
79+ columns : Optional [List [str ]] = None ,
80+ sample_count : Optional [int ] = None ,
81+ filters : Optional [str ] = None ,
82+ sort_by : Optional [List [str ]] = None ,
7983 ) -> ResultsResponse :
8084 """GET results from Dune API for `job_id` (aka `execution_id`)"""
81- params = {}
82- if limit is not None :
83- params ["limit" ] = limit
84- if offset is not None :
85- params ["offset" ] = offset
85+ params = self ._build_parameters (
86+ columns = columns ,
87+ sample_count = sample_count ,
88+ filters = filters ,
89+ sort_by = sort_by ,
90+ limit = limit ,
91+ offset = offset ,
92+ )
8693
8794 route = f"/execution/{ job_id } /results"
8895 url = self ._route_url (route )
8996 return self ._get_execution_results_by_url (url = url , params = params )
9097
91- def _get_execution_results_by_url (
92- self ,
93- url : str ,
94- params : Optional [Dict [str , Any ]] = None ,
95- ) -> ResultsResponse :
96- """
97- GET results from Dune API with a given URL. This is particularly useful for pagination.
98- """
99- assert url .startswith (self .base_url )
100-
101- response_json = self ._get (url = url , params = params )
102- try :
103- return ResultsResponse .from_dict (response_json )
104- except KeyError as err :
105- raise DuneError (response_json , "ResultsResponse" , err ) from err
106-
10798 def get_execution_results_csv (
10899 self ,
109100 job_id : str ,
110101 limit : Optional [int ] = None ,
111102 offset : Optional [int ] = None ,
103+ columns : Optional [List [str ]] = None ,
104+ filters : Optional [str ] = None ,
105+ sample_count : Optional [int ] = None ,
106+ sort_by : Optional [List [str ]] = None ,
112107 ) -> ExecutionResultCSV :
113108 """
114109 GET results in CSV format from Dune API for `job_id` (aka `execution_id`)
@@ -117,16 +112,35 @@ def get_execution_results_csv(
117112 use this method for large results where you want lower CPU and memory overhead
118113 if you need metadata information use get_results() or get_status()
119114 """
120- params = {}
121- if limit is not None :
122- params ["limit" ] = limit
123- if offset is not None :
124- params ["offset" ] = offset
115+ params = self ._build_parameters (
116+ columns = columns ,
117+ sample_count = sample_count ,
118+ filters = filters ,
119+ sort_by = sort_by ,
120+ limit = limit ,
121+ offset = offset ,
122+ )
125123
126124 route = f"/execution/{ job_id } /results/csv"
127125 url = self ._route_url (route )
128126 return self ._get_execution_results_csv_by_url (url = url , params = params )
129127
128+ def _get_execution_results_by_url (
129+ self ,
130+ url : str ,
131+ params : Optional [Dict [str , Any ]] = None ,
132+ ) -> ResultsResponse :
133+ """
134+ GET results from Dune API with a given URL. This is particularly useful for pagination.
135+ """
136+ assert url .startswith (self .base_url )
137+
138+ response_json = self ._get (url = url , params = params )
139+ try :
140+ return ResultsResponse .from_dict (response_json )
141+ except KeyError as err :
142+ raise DuneError (response_json , "ResultsResponse" , err ) from err
143+
130144 def _get_execution_results_csv_by_url (
131145 self ,
132146 url : str ,
0 commit comments