Skip to content

Commit e5b32f7

Browse files
authored
add support for inst discharge in UKEAFetcher (#105)
* add support for inst discharge * Fix ruff issues * updating docs * removing commented out section
1 parent 6ebf3a9 commit e5b32f7

1 file changed

Lines changed: 11 additions & 12 deletions

File tree

rivretrieve/uk_ea.py

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)