66import pandas as pd
77import streamlit as st
88
9- from ocf import dp
9+ from ocf .dp .dp_data import messages_pb2 , service_pb2_grpc
10+ from ocf .dp .dp import common_pb2
1011
1112
1213async def fetch_timeseries (
13- client : dp .DataPlatformDataServiceStub ,
14+ client : service_pb2_grpc .DataPlatformDataServiceStub ,
1415 location_uuid : str ,
1516 start_date : datetime .datetime ,
1617 end_date : datetime .datetime ,
1718 horizon_mins : int ,
18- forecasters : list [dp .Forecaster ],
19+ forecasters : list [messages_pb2 .Forecaster ],
1920 init_times_utc : list [datetime .datetime ] | None = None ,
2021) -> pd .DataFrame :
2122 """Directly calls GetForecastAsTimeseries for selected models and init times."""
2223
23- time_window = dp .TimeWindow (
24+ time_window = messages_pb2 .TimeWindow (
2425 start_timestamp_utc = start_date , end_timestamp_utc = end_date
2526 )
2627 time_windows = []
2728 current_start = start_date
2829 while current_start < end_date :
2930 current_end = min (current_start + datetime .timedelta (days = 7 ), end_date )
3031 time_windows .append (
31- dp .TimeWindow (
32+ messages_pb2 .TimeWindow (
3233 start_timestamp_utc = current_start ,
3334 end_timestamp_utc = current_end
3435 )
@@ -38,32 +39,32 @@ async def fetch_timeseries(
3839 times_to_fetch = init_times_utc if init_times_utc else [None ]
3940
4041 async def fetch_one (
41- forecaster_obj : dp .Forecaster ,
42- window : dp .TimeWindow ,
42+ forecaster_obj : messages_pb2 .Forecaster ,
43+ window : messages_pb2 .TimeWindow ,
4344 init_time : datetime .datetime | None
4445 ):
45- req = dp .GetForecastAsTimeseriesRequest (
46+ req = messages_pb2 .GetForecastAsTimeseriesRequest (
4647 location_uuid = location_uuid ,
47- energy_source = dp .EnergySource .SOLAR ,
48+ energy_source = common_pb2 .EnergySource .ENERGY_SOURCE_SOLAR ,
4849 horizon_mins = horizon_mins ,
4950 time_window = window ,
5051 forecaster = forecaster_obj ,
5152 initialization_timestamp_utc = init_time ,
5253 )
5354
5455 try :
55- resp = await client .get_forecast_as_timeseries (req )
56+ resp = await client .GetForecastAsTimeseries (req )
5657 rows = []
5758 for val in resp .values :
5859 row = {
59- "target_timestamp_utc" : val .target_timestamp_utc ,
60- "initialization_timestamp_utc" : val .initialization_timestamp_utc ,
61- "created_timestamp_utc" : val .created_timestamp_utc ,
60+ "target_timestamp_utc" : val .target_timestamp_utc . ToDatetime ( tzinfo = datetime . UTC ) ,
61+ "initialization_timestamp_utc" : val .initialization_timestamp_utc . ToDatetime ( tzinfo = datetime . UTC ) ,
62+ "created_timestamp_utc" : val .created_timestamp_utc . ToDatetime ( tzinfo = datetime . UTC ) ,
6263 "effective_capacity_watts" : val .effective_capacity_watts ,
6364 "forecaster_name" : forecaster_obj .forecaster_name ,
6465 "location_uuid" : resp .location_uuid ,
6566 "horizon_mins" : (
66- val .target_timestamp_utc - val .initialization_timestamp_utc
67+ val .target_timestamp_utc . ToDatetime ( tzinfo = datetime . UTC ) - val .initialization_timestamp_utc . ToDatetime ( tzinfo = datetime . UTC )
6768 ).total_seconds ()
6869 // 60 ,
6970 "p50_watts" : int (
@@ -108,24 +109,24 @@ async def fetch_one(
108109
109110
110111async def fetch_observations (
111- client : dp .DataPlatformDataServiceStub ,
112+ client : service_pb2_grpc .DataPlatformDataServiceStub ,
112113 location_uuid : str ,
113114 start_date : datetime .datetime ,
114115 end_date : datetime .datetime ,
115116 observers : list [str ],
116- energy_source : dp .EnergySource = dp .EnergySource .SOLAR ,
117+ energy_source : common_pb2 .EnergySource = common_pb2 .EnergySource .ENERGY_SOURCE_SOLAR ,
117118) -> pd .DataFrame :
118119 """Directly calls GetObservationsAsTimeseries for selected observers."""
119120
120- time_window = dp .TimeWindow (
121+ time_window = messages_pb2 .TimeWindow (
121122 start_timestamp_utc = start_date , end_timestamp_utc = end_date
122123 )
123124 time_windows = []
124125 current_start = start_date
125126 while current_start < end_date :
126127 current_end = min (current_start + datetime .timedelta (days = 7 ), end_date )
127128 time_windows .append (
128- dp .TimeWindow (
129+ messages_pb2 .TimeWindow (
129130 start_timestamp_utc = current_start ,
130131 end_timestamp_utc = current_end
131132 )
@@ -134,21 +135,21 @@ async def fetch_observations(
134135
135136
136137 # Run requests concurrently for all selected observers
137- async def fetch_one (obs_name : str , window : dp .TimeWindow ):
138- req = dp .GetObservationsAsTimeseriesRequest (
138+ async def fetch_one (obs_name : str , window : messages_pb2 .TimeWindow ):
139+ req = messages_pb2 .GetObservationsAsTimeseriesRequest (
139140 location_uuid = location_uuid ,
140141 observer_name = obs_name ,
141142 energy_source = energy_source ,
142143 time_window = window ,
143144 )
144145
145146 try :
146- resp = await client .get_observations_as_timeseries (req )
147+ resp = await client .GetObservationsAsTimeseries (req )
147148 rows = []
148149 for val in resp .values :
149150 rows .append (
150151 {
151- "target_timestamp_utc" : val .timestamp_utc ,
152+ "target_timestamp_utc" : val .timestamp_utc . ToDatetime ( tzinfo = datetime . UTC ) ,
152153 "value_fraction" : val .value_fraction ,
153154 "effective_capacity_watts" : val .effective_capacity_watts ,
154155 "observer_name" : obs_name ,
0 commit comments