From 2c48c56c18ca52af7e01051a63640fd75ca206fb Mon Sep 17 00:00:00 2001 From: David Huber <69919478+DavidHuber-NOAA@users.noreply.github.com> Date: Mon, 22 Apr 2024 17:33:41 +0000 Subject: [PATCH] Add two new time filters to jinja (#25) --- src/wxflow/jinja.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/wxflow/jinja.py b/src/wxflow/jinja.py index 89d96e6..87aee04 100644 --- a/src/wxflow/jinja.py +++ b/src/wxflow/jinja.py @@ -6,8 +6,8 @@ import jinja2 from markupsafe import Markup -from .timetools import (strftime, to_fv3time, to_isotime, to_julian, to_YMD, - to_YMDH) +from .timetools import (add_to_datetime, strftime, to_fv3time, to_isotime, + to_julian, to_timedelta, to_YMD, to_YMDH) __all__ = ['Jinja'] @@ -108,6 +108,8 @@ def get_set_env(self, loader: jinja2.BaseLoader, filters: Dict[str, callable] = to_f90bool: convert a boolean to a fortran boolean relpath: convert a full path to a relative path based on an input root_path getenv: read variable from environment if defined, else UNDEFINED + to_timedelta: convert a string to a timedelta object + add_to_datetime: add time to a datetime, return new datetime object Parameters ---------- @@ -131,6 +133,9 @@ def get_set_env(self, loader: jinja2.BaseLoader, filters: Dict[str, callable] = env.filters["to_f90bool"] = lambda bool: ".true." if bool else ".false." env.filters['getenv'] = lambda name, default='UNDEFINED': os.environ.get(name, default) env.filters["relpath"] = lambda pathname, start=os.curdir: os.path.relpath(pathname, start) + env.filters["add_to_datetime"] = (lambda dt, delta: add_to_datetime(dt, delta) + if not (isinstance(dt, SilentUndefined) or isinstance(delta, SilentUndefined)) else dt) + env.filters["to_timedelta"] = lambda delta_str: to_timedelta(delta_str) if not isinstance(delta_str, SilentUndefined) else delta_str # Add any additional filters if filters is not None: