@@ -68,9 +68,10 @@ def test_write_fieldset_without_time(tmp_parquet):
6868 ofile = ParticleFile (tmp_parquet , outputdt = np .timedelta64 (1 , "s" ))
6969 pset .execute (DoNothing , runtime = np .timedelta64 (1 , "s" ), dt = np .timedelta64 (1 , "s" ), output_file = ofile )
7070
71- df = pd .read_parquet (tmp_parquet )
72- pytest .skip ("# TODO: Need to figure out how times work with parquet output (#2386)" )
73- assert df ["time" ][1 ] == np .timedelta64 (1 , "s" )
71+ table = pq .read_table (tmp_parquet )
72+ assert table .schema .field ("time" ).metadata [b"units" ] == b"seconds"
73+ assert b"calendar" not in table .schema .field ("time" ).metadata
74+ assert table ["time" ].to_numpy ()[1 ] == 1.0
7475
7576
7677@pytest .mark .skip ("Keep or remove? Introduced in 5d7dd6bba800baa0fe4bd38edfc17ca3e310062b " )
@@ -114,7 +115,6 @@ def test_pfile_array_remove_all_particles(fieldset, tmp_parquet):
114115 pfile .close ()
115116
116117 df = pd .read_parquet (tmp_parquet )
117- # np.testing.assert_allclose(ds["time"][:, 0] - fieldset.time_interval.left, np.timedelta64(0, "s")) # TODO: Need to figure out how times work with parquet output (#2386)
118118 assert df ["trajectory" ].nunique () == npart
119119
120120
@@ -344,8 +344,7 @@ def Update_lon(particles, fieldset): # pragma: no cover
344344
345345 df = pd .read_parquet (tmp_parquet )
346346 assert np .allclose (df ["lon" ].values , [0 , 3 , 6 , 9 ])
347- pytest .skip ("# TODO: Need to figure out how times work with parquet output (#2386)" )
348- assert np .allclose (timedelta_to_float (df .time .values - df .time .values [0 , 0 ]), [0 , 3 , 6 , 9 ])
347+ assert np .allclose (df .time - df .time .min (), [0 , 3 , 6 , 9 ])
349348
350349
351350def setup_pset_execute (* , fieldset : FieldSet , outputdt : timedelta , execute_kwargs , particle_class = Particle ):
@@ -374,9 +373,10 @@ def test_pset_execute_outputdt_forwards(fieldset):
374373 runtime = timedelta (hours = 5 )
375374 dt = timedelta (minutes = 5 )
376375
377- df = setup_pset_execute (fieldset = fieldset , outputdt = outputdt , execute_kwargs = dict (runtime = runtime , dt = dt )) # noqa: F841
378- pytest .skip ("# TODO: Need to figure out how times work with parquet output (#2386)" )
379- assert np .all (ds .isel (trajectory = 0 ).time .diff (dim = "obs" ).values == np .timedelta64 (outputdt )) # noqa: F821
376+ df = setup_pset_execute (fieldset = fieldset , outputdt = outputdt , execute_kwargs = dict (runtime = runtime , dt = dt ))
377+ particle_0_times = df [df .trajectory == 0 ].time .values
378+
379+ np .testing .assert_equal (np .diff (particle_0_times ), outputdt .seconds )
380380
381381
382382def test_pset_execute_output_time_forwards (fieldset ):
@@ -385,12 +385,9 @@ def test_pset_execute_output_time_forwards(fieldset):
385385 runtime = np .timedelta64 (5 , "h" )
386386 dt = np .timedelta64 (5 , "m" )
387387
388- df = setup_pset_execute (fieldset = fieldset , outputdt = outputdt , execute_kwargs = dict (runtime = runtime , dt = dt )) # noqa: F841
389- pytest .skip ("# TODO: Need to figure out how times work with parquet output (#2386)" )
390- assert (
391- ds .time [0 , 0 ].values == fieldset .time_interval .left # noqa: F821
392- and ds .time [0 , - 1 ].values == fieldset .time_interval .left + runtime # noqa: F821
393- )
388+ df = setup_pset_execute (fieldset = fieldset , outputdt = outputdt , execute_kwargs = dict (runtime = runtime , dt = dt ))
389+ assert df .time .min () == 0.0
390+ assert df .time .max () == runtime / np .timedelta64 (1 , "s" )
394391
395392
396393def test_pset_execute_outputdt_backwards (fieldset ):
@@ -399,10 +396,9 @@ def test_pset_execute_outputdt_backwards(fieldset):
399396 runtime = timedelta (days = 2 )
400397 dt = - timedelta (minutes = 5 )
401398
402- df = setup_pset_execute (fieldset = fieldset , outputdt = outputdt , execute_kwargs = dict (runtime = runtime , dt = dt )) # noqa: F841
403- pytest .skip ("# TODO: Need to figure out how times work with parquet output (#2386)" )
404- file_outputdt = ds .isel (trajectory = 0 ).time .diff (dim = "obs" ).values # noqa: F821
405- assert np .all (file_outputdt == np .timedelta64 (- outputdt ))
399+ df = setup_pset_execute (fieldset = fieldset , outputdt = outputdt , execute_kwargs = dict (runtime = runtime , dt = dt ))
400+ particle_0_times = df [df .trajectory == 0 ].time .values
401+ np .testing .assert_equal (np .diff (particle_0_times ), - outputdt .seconds )
406402
407403
408404def test_pset_execute_outputdt_backwards_fieldset_timevarying ():
@@ -419,10 +415,9 @@ def test_pset_execute_outputdt_backwards_fieldset_timevarying():
419415 ds_fset = copernicusmarine_to_sgrid (fields = fields )
420416 fieldset = FieldSet .from_sgrid_conventions (ds_fset )
421417
422- df = setup_pset_execute (outputdt = outputdt , execute_kwargs = dict (runtime = runtime , dt = dt ), fieldset = fieldset ) # noqa: F841
423- pytest .skip ("# TODO: Need to figure out how times work with parquet output (#2386)" )
424- file_outputdt = ds .isel (trajectory = 0 ).time .diff (dim = "obs" ).values # noqa: F821
425- assert np .all (file_outputdt == np .timedelta64 (- outputdt )), (file_outputdt , np .timedelta64 (- outputdt ))
418+ df = setup_pset_execute (outputdt = outputdt , execute_kwargs = dict (runtime = runtime , dt = dt ), fieldset = fieldset )
419+ particle_0_times = df [df .trajectory == 0 ].time .values
420+ np .testing .assert_equal (np .diff (particle_0_times ), - outputdt .seconds )
426421
427422
428423def test_particlefile_init (tmp_parquet ):
0 commit comments