Skip to content

Commit

Permalink
Try adding a custom TIME_PARSER (and make it easier to change the tim…
Browse files Browse the repository at this point in the history
…e format in _get_timeinfo)
  • Loading branch information
marc-white committed Feb 25, 2025
1 parent daee934 commit 0260ec5
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 6 deletions.
2 changes: 2 additions & 0 deletions src/access_nri_intake/source/builders.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
EmptyFileError,
GenericTimeParser,
GfdlTimeParser,
ROMSTimeParser,
_NCFileInfo,
_VarInfo,
)
Expand Down Expand Up @@ -655,6 +656,7 @@ class ROMSBuilder(BaseBuilder):
PATTERNS = [
rf"^roms_his_({PATTERNS_HELPERS['counter']}).*?$",
]
TIME_PARSER = ROMSTimeParser

def __init__(self, path, **kwargs):
"""
Expand Down
20 changes: 14 additions & 6 deletions src/access_nri_intake/source/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,8 @@ class GenericTimeParser:
Generic time parser
"""

TIMEINFO_TIME_FORMAT = "%Y-%m-%d, %H:%M:%S"

def __init__(self, ds: xr.Dataset, filename_frequency: str | None, time_dim: str):
"""
Parameters
Expand Down Expand Up @@ -201,7 +203,6 @@ def _get_timeinfo(self) -> tuple[str, str, str]:
def _todate(t):
return cftime.num2date(t, time_var.units, calendar=time_var.calendar)

time_format = "%Y-%m-%d, %H:%M:%S"
ts = None
te = None
frequency: str | tuple[int | None, str] = FREQUENCY_STATIC
Expand Down Expand Up @@ -263,12 +264,12 @@ def _todate(t):
if ts is None:
start_date = "none"
else:
start_date = ts.strftime(time_format)
start_date = ts.strftime(self.TIMEINFO_TIME_FORMAT)

if te is None:
end_date = "none"
else:
end_date = te.strftime(time_format)
end_date = te.strftime(self.TIMEINFO_TIME_FORMAT)

if frequency[0]:
frequency = f"{str(frequency[0])}{frequency[1]}"
Expand All @@ -286,6 +287,9 @@ class AccessTimeParser(GenericTimeParser):


class GfdlTimeParser(GenericTimeParser):

TIMEINFO_TIME_FORMAT = "%Y-%m-%d, %H:%M:%S"

def __init__(self, ds: xr.Dataset, filename_frequency: str | None, time_dim: str):
self.ds = ds
self.filename_frequency = filename_frequency
Expand Down Expand Up @@ -328,7 +332,6 @@ def _get_timeinfo(self) -> tuple[str, str, str]:
def _todate(t):
return cftime.num2date(t, time_var.units, calendar=time_var.calendar)

time_format = "%Y-%m-%d, %H:%M:%S"
ts = None
te = None
frequency: str | tuple[int | None, str] = FREQUENCY_STATIC
Expand Down Expand Up @@ -380,12 +383,12 @@ def _todate(t):
if ts is None:
start_date = "none"
else:
start_date = ts.strftime(time_format)
start_date = ts.strftime(self.TIMEINFO_TIME_FORMAT)

if te is None:
end_date = "none"
else:
end_date = te.strftime(time_format)
end_date = te.strftime(self.TIMEINFO_TIME_FORMAT)

if frequency[0]:
frequency = f"{str(frequency[0])}{frequency[1]}"
Expand All @@ -396,3 +399,8 @@ def _todate(t):

def __call__(self) -> tuple[str, str, str]:
return self._get_timeinfo()


class ROMSTimeParser(GenericTimeParser):

TIMEINFO_TIME_FORMAT = "%Y-%m-%d %H:%M:%S"

0 comments on commit 0260ec5

Please sign in to comment.