@@ -310,88 +310,64 @@ def request_parse_workflow(
310310 nc .variables ["metaStationName" ][:].compressed ().tobytes ().decode ("utf-8" )
311311 )
312312
313- multiyear = False
314313 if years :
315314 if isinstance (years , int ):
316- start_date = datetime .datetime (years , 1 , 1 , tzinfo = pytz .UTC )
317- end_date = datetime .datetime (years + 1 , 1 , 1 , tzinfo = pytz .UTC )
318- elif isinstance (years , list ):
319- if len (years ) == 1 :
320- start_date = datetime .datetime (years [0 ], 1 , 1 , tzinfo = pytz .UTC )
321- end_date = datetime .datetime (years [0 ] + 1 , 1 , 1 , tzinfo = pytz .UTC )
322- else :
323- multiyear = True
324- if not multiyear :
325- # Check the cache first
315+ years = [years ]
316+
317+ data = {"data" : {}, "metadata" : {}}
318+ multiyear_data = {}
319+ for year in years :
320+ start_date = datetime .datetime (year , 1 , 1 , tzinfo = pytz .UTC )
321+ end_date = datetime .datetime (year + 1 , 1 , 1 , tzinfo = pytz .UTC )
322+
323+ # Check the cache for each individual year
326324 hash_params = f"{ station_number } -{ parameters } -{ start_date } -{ end_date } "
327- data , _ , _ = handle_caching (
325+ year_data , _ , _ = handle_caching (
328326 hash_params ,
329327 cache_dir ,
330328 cache_content = {"data" : None , "metadata" : None , "write_json" : None },
331329 )
332-
333- if data is None :
334- data = get_netcdf_variables (
330+ if year_data is None :
331+ new_data = get_netcdf_variables (
335332 nc ,
336333 start_date = start_date ,
337334 end_date = end_date ,
338335 parameters = parameters ,
339336 all_2D_variables = all_2D_variables ,
340337 silent = silent ,
341338 )
339+ year_data = new_data ["data" ]
340+ # If waveFrequency is in the metadata, move it to the top level of metadata
341+ if "wave" in new_data ["metadata" ]:
342+ if "waveFrequency" in new_data ["metadata" ]["wave" ]:
343+ new_data ["metadata" ]["waveFrequency" ] = new_data ["metadata" ][
344+ "wave"
345+ ]["waveFrequency" ]
346+ new_data ["metadata" ].pop ("wave" )
347+ # Cache the individual year's data
342348 handle_caching (
343349 hash_params ,
344350 cache_dir ,
345- cache_content = {"data" : data , "metadata" : None , "write_json" : None },
346- )
347-
348- else :
349- data = {"data" : {}, "metadata" : {}}
350- multiyear_data = {}
351- for year in years :
352- start_date = datetime .datetime (year , 1 , 1 , tzinfo = pytz .UTC )
353- end_date = datetime .datetime (year + 1 , 1 , 1 , tzinfo = pytz .UTC )
354-
355- # Check the cache for each individual year
356- hash_params = f"{ station_number } -{ parameters } -{ start_date } -{ end_date } "
357- year_data , _ , _ = handle_caching (
358- hash_params ,
359- cache_dir ,
360- cache_content = {"data" : None , "metadata" : None , "write_json" : None },
351+ cache_content = {
352+ "data" : year_data ,
353+ "metadata" : new_data ["metadata" ],
354+ "write_json" : None ,
355+ },
361356 )
362- if year_data is None :
363- year_data = get_netcdf_variables (
364- nc ,
365- start_date = start_date ,
366- end_date = end_date ,
367- parameters = parameters ,
368- all_2D_variables = all_2D_variables ,
369- silent = silent ,
370- )
371- # Cache the individual year's data
372- handle_caching (
373- hash_params ,
374- cache_dir ,
375- cache_content = {
376- "data" : year_data ,
377- "metadata" : None ,
378- "write_json" : None ,
379- },
380- )
381- multiyear_data [year ] = year_data
382-
383- for data_key in year_data .keys ():
384- if data_key .endswith ("2D" ):
385- data [data_key ] = {}
386- for data_key2D in year_data [data_key ].keys ():
387- data_list = []
388- for year in years :
389- data2D = multiyear_data [year ][data_key ][data_key2D ]
390- data_list .append (data2D )
391- data [data_key ][data_key2D ] = pd .concat (data_list )
392- else :
393- data_list = [multiyear_data [year ][data_key ] for year in years ]
394- data [data_key ] = pd .concat (data_list )
357+ multiyear_data [year ] = year_data
358+
359+ for data_key in year_data .keys ():
360+ if data_key .endswith ("2D" ):
361+ data [data_key ] = {}
362+ for data_key2D in year_data [data_key ].keys ():
363+ data_list = []
364+ for year in years :
365+ data2D = multiyear_data [year ][data_key ][data_key2D ]
366+ data_list .append (data2D )
367+ data [data_key ][data_key2D ] = pd .concat (data_list )
368+ else :
369+ data_list = [multiyear_data [year ][data_key ] for year in years ]
370+ data [data_key ] = pd .concat (data_list )
395371
396372 if buoy_name :
397373 try :
0 commit comments