Skip to content

Commit c4783f1

Browse files
moved convertion to datetimes to the from_netcdf methods.
1 parent fcbb2ec commit c4783f1

File tree

2 files changed

+24
-7
lines changed

2 files changed

+24
-7
lines changed

gridded/time.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ def parse_time_offset(unit_str):
6767
return offset_hours, name
6868

6969

70-
class Time:
70+
class Time(object):
7171

7272
# Used to make a singleton with the constant_time class method.
7373
# question: why not a ContantTime Class?
@@ -102,6 +102,13 @@ def __init__(self,
102102
Allows shifting entire time interval into future or past
103103
:type displacement: `datetime.timedelta`
104104
'''
105+
# fixme: This should be happening in various from_netcdf methods.
106+
# if isinstance(data, (nc4.Variable, nc4._netCDF4._Variable)):
107+
# if (hasattr(nc4, 'num2pydate')):
108+
# self.data = nc4.num2pydate(data[:], units=data.units)
109+
# else:
110+
# self.data = nc4.num2date(data[:], units=data.units, only_use_cftime_datetimes=False, only_use_python_datetimes=True)
111+
# elif isinstance(data, Time):
105112
if isinstance(data, Time):
106113
self.data = data.data
107114
elif data is None:

gridded/variable.py

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -248,9 +248,13 @@ def from_netCDF(cls,
248248

249249
if time is None:
250250
timevarname = Time.locate_time_var_from_var(data)
251-
if timevarname is not None:
252-
timevarname = ds[timevarname]
253-
time = Time(data=timevarname,
251+
if timevarname is None:
252+
tdata = None
253+
else:
254+
timevar = ds[timevarname]
255+
tdata = nc4.num2date(timevar[:], units=timevar.units, only_use_cftime_datetimes=False, only_use_python_datetimes=True)
256+
# why isn't this using Time.from_netcdf? (currently doesn't support origin and displacement)
257+
time = Time(data=tdata,
254258
filename=data_file,
255259
varname=timevarname,
256260
origin=time_origin,
@@ -812,6 +816,7 @@ def _gen_varname(cls,
812816

813817

814818
class VectorVariable(object):
819+
# Fixme: a lot of code duplication in here
815820

816821
# Keys are component names ('u', 'v', etc) and values are the netCDF4 names.
817822
# eg {'u': ['u', 'U', 'eastward_sea_water_velocity']}
@@ -976,11 +981,16 @@ def from_netCDF(cls,
976981
name = cls.__name__ + '_' + str(cls._instance_count)
977982
cls._instance_count += 1
978983
data = ds[varnames[0]]
984+
979985
if time is None:
980986
timevarname = Time.locate_time_var_from_var(data)
981-
if timevarname is not None:
982-
timevarname = ds[timevarname]
983-
time = Time(data=timevarname,
987+
if timevarname is None:
988+
tdata = None
989+
else:
990+
timevar = ds[timevarname]
991+
tdata = nc4.num2date(timevar[:], units=timevar.units, only_use_cftime_datetimes=False, only_use_python_datetimes=True)
992+
# why isn't this using Time.from_netcdf? (currently doesn't support origin and displacement)
993+
time = Time(data=tdata,
984994
filename=data_file,
985995
varname=timevarname,
986996
origin=time_origin,

0 commit comments

Comments
 (0)