44import pandas as pd
55from databento .common .enums import Dataset , Encoding , FeedMode , Schema , SType
66from databento .common .parsing import (
7- enum_or_str_lowercase ,
7+ enum_or_str_uppercase ,
88 maybe_date_to_string ,
99 maybe_datetime_to_string ,
1010 maybe_enum_or_str_lowercase ,
@@ -81,6 +81,46 @@ def list_datasets(
8181 )
8282 return response .json ()
8383
84+ def list_dataset_conditions (
85+ self ,
86+ dataset : Union [Dataset , str ],
87+ start_date : Union [date , str ],
88+ end_date : Union [date , str ],
89+ ) -> List [str ]:
90+ """
91+ Request the dataset conditions per date from Databento.
92+
93+ Makes a `GET /metadata.list_dataset_conditions` HTTP request.
94+
95+ Use this method to discover data availability and qualility.
96+
97+ Parameters
98+ ----------
99+ dataset : Dataset or str
100+ The dataset code (string identifier) for the request.
101+ start_date : date or str
102+ The start date (UTC) for the request range.
103+ end_date : date or str
104+ The end date (UTC) for the request range.
105+
106+ Returns
107+ -------
108+ List[str]
109+
110+ """
111+ params : List [Tuple [str , Optional [str ]]] = [
112+ ("dataset" , enum_or_str_uppercase (dataset , "dataset" )),
113+ ("start_date" , str (pd .to_datetime (start_date ).date ())),
114+ ("end_date" , str (pd .to_datetime (end_date ).date ())),
115+ ]
116+
117+ response : Response = self ._get (
118+ url = self ._base_url + ".list_dataset_conditions" ,
119+ params = params ,
120+ basic_auth = True ,
121+ )
122+ return response .json ()
123+
84124 def list_schemas (
85125 self ,
86126 dataset : Optional [Union [Dataset , str ]] = None ,
@@ -107,7 +147,7 @@ def list_schemas(
107147
108148 """
109149 params : List [Tuple [str , Optional [str ]]] = [
110- ("dataset" , enum_or_str_lowercase (dataset , "dataset" )),
150+ ("dataset" , enum_or_str_uppercase (dataset , "dataset" )),
111151 ("start_date" , maybe_date_to_string (start_date )),
112152 ("end_date" , maybe_date_to_string (end_date )),
113153 ]
@@ -152,7 +192,7 @@ def list_fields(
152192 validate_maybe_enum (encoding , Encoding , "encoding" )
153193
154194 params : List [Tuple [str , str ]] = [
155- ("dataset" , enum_or_str_lowercase (dataset , "dataset" )),
195+ ("dataset" , enum_or_str_uppercase (dataset , "dataset" )),
156196 ("schema" , maybe_enum_or_str_lowercase (schema , "schema" )),
157197 ("encoding" , maybe_enum_or_str_lowercase (encoding , "encoding" )),
158198 ]
@@ -229,7 +269,7 @@ def list_unit_prices(
229269 validate_maybe_enum (mode , FeedMode , "mode" )
230270
231271 params : List [Tuple [str , Optional [str ]]] = [
232- ("dataset" , enum_or_str_lowercase (dataset , "dataset" )),
272+ ("dataset" , enum_or_str_uppercase (dataset , "dataset" )),
233273 ("mode" , maybe_enum_or_str_lowercase (mode , "mode" )),
234274 ("schema" , maybe_enum_or_str_lowercase (schema , "schema" )),
235275 ]
@@ -290,7 +330,7 @@ def get_record_count(
290330 validate_enum (stype_in , SType , "stype_in" )
291331
292332 params : List [Tuple [str , Optional [str ]]] = [
293- ("dataset" , enum_or_str_lowercase (dataset , "dataset" )),
333+ ("dataset" , enum_or_str_uppercase (dataset , "dataset" )),
294334 ("symbols" , maybe_symbols_list_to_string (symbols )),
295335 ("schema" , Schema (schema ).value ),
296336 ("start" , maybe_datetime_to_string (start )),
0 commit comments