@@ -19,6 +19,7 @@ class UKEAFetcher(base.RiverDataFetcher):
1919
2020 Supported Variables:
2121 - ``constants.DISCHARGE_DAILY_MEAN`` (m³/s)
22+ - ``constants.DISCHARGE_INSTANT`` (m³/s)
2223 - ``constants.STAGE_INSTANT`` (m)
2324 """
2425
@@ -48,7 +49,7 @@ def get_cached_metadata() -> pd.DataFrame:
4849
4950 @staticmethod
5051 def get_available_variables () -> tuple [str , ...]:
51- return (constants .DISCHARGE_DAILY_MEAN , constants .STAGE_INSTANT )
52+ return (constants .DISCHARGE_DAILY_MEAN , constants .DISCHARGE_INSTANT , constants . STAGE_INSTANT )
5253
5354 def get_metadata (self ) -> pd .DataFrame :
5455 """Fetches site metadata for all stations from the EA API.
@@ -87,6 +88,8 @@ def _get_measure_notation(self, variable: str) -> str:
8788 return "level-i-900-m-qualified"
8889 elif variable == constants .DISCHARGE_DAILY_MEAN :
8990 return "flow-m-86400-m3s-qualified"
91+ elif variable == constants .DISCHARGE_INSTANT :
92+ return "flow-i-900-m3s-qualified"
9093 else :
9194 raise ValueError (f"Unsupported variable: { variable } " )
9295
@@ -152,24 +155,20 @@ def _parse_data(self, raw_data: List[Dict[str, Any]], variable: str) -> pd.DataF
152155 return pd .DataFrame (columns = [constants .TIME_INDEX , variable ])
153156
154157 df = pd .DataFrame (raw_data )
155- df [constants .TIME_INDEX ] = pd .to_datetime (df ["dateTime" ]).dt .date
158+
159+ # Only convert to date if the variable is a daily summary
160+ if constants .DAILY in variable :
161+ df [constants .TIME_INDEX ] = pd .to_datetime (df ["dateTime" ]).dt .date
162+ else :
163+ df [constants .TIME_INDEX ] = pd .to_datetime (df ["dateTime" ])
164+
156165 df ["Value" ] = pd .to_numeric (df ["value" ], errors = "coerce" )
157166
158167 df = df [[constants .TIME_INDEX , "Value" ]]
159168
160169 df = df .rename (columns = {"Value" : variable })
161170 df [constants .TIME_INDEX ] = pd .to_datetime (df [constants .TIME_INDEX ])
162171
163- # Ensure complete time series within the data range
164- if not df .empty :
165- date_range = pd .date_range (
166- start = df [constants .TIME_INDEX ].min (),
167- end = df [constants .TIME_INDEX ].max (),
168- freq = "D" ,
169- )
170- complete_ts = pd .DataFrame (date_range , columns = [constants .TIME_INDEX ])
171- df = pd .merge (complete_ts , df , on = constants .TIME_INDEX , how = "left" )
172-
173172 return df .set_index (constants .TIME_INDEX )
174173
175174 def get_data (
0 commit comments