Skip to content

Commit fce346e

Browse files
committed
RF: Centralize to have a helper utcnow()
1 parent 9d83e08 commit fce346e

File tree

3 files changed

+25
-5
lines changed

3 files changed

+25
-5
lines changed

nipype/interfaces/base/support.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,12 @@
1111
from copy import deepcopy
1212
from textwrap import wrap
1313
import re
14-
from datetime import datetime as dt, UTC
14+
from datetime import datetime as dt
1515
from dateutil.parser import parse as parseutc
1616
import platform
1717

1818
from ... import logging, config
19+
from ...utils.datetime import utcnow
1920
from ...utils.misc import is_container, rgetcwd
2021
from ...utils.filemanip import md5, hash_infile
2122

@@ -72,15 +73,15 @@ def __enter__(self):
7273
if self._runtime.redirect_x:
7374
self._runtime.environ["DISPLAY"] = config.get_display()
7475

75-
self._runtime.startTime = dt.isoformat(dt.now(UTC))
76+
self._runtime.startTime = dt.isoformat(utcnow())
7677
self._resmon.start()
7778
# TODO: Perhaps clean-up path and ensure it exists?
7879
os.chdir(self._runtime.cwd)
7980
return self._runtime
8081

8182
def __exit__(self, exc_type, exc_value, exc_tb):
8283
"""Tear-down interface execution."""
83-
self._runtime.endTime = dt.isoformat(dt.now(UTC))
84+
self._runtime.endTime = dt.isoformat(utcnow())
8485
timediff = parseutc(self._runtime.endTime) - parseutc(self._runtime.startTime)
8586
self._runtime.duration = (
8687
timediff.days * 86400 + timediff.seconds + timediff.microseconds / 1e6

nipype/pipeline/engine/workflows.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,14 @@
88
import os
99
import os.path as op
1010
import sys
11-
from datetime import datetime, UTC
1211
from copy import deepcopy
1312
import pickle
1413
import shutil
1514

1615
import numpy as np
1716

1817
from ... import config, logging
18+
from ...utils.datetime import utcnow
1919
from ...utils.misc import str2bool
2020
from ...utils.functions import getsource, create_function_from_source
2121

@@ -628,7 +628,7 @@ def run(self, plugin=None, plugin_args=None, updatehash=False):
628628
if str2bool(self.config["execution"]["create_report"]):
629629
self._write_report_info(self.base_dir, self.name, execgraph)
630630
runner.run(execgraph, updatehash=updatehash, config=self.config)
631-
datestr = datetime.now(UTC).strftime("%Y%m%dT%H%M%S")
631+
datestr = utcnow().strftime("%Y%m%dT%H%M%S")
632632
if str2bool(self.config["execution"]["write_provenance"]):
633633
prov_base = op.join(self.base_dir, "workflow_provenance_%s" % datestr)
634634
logger.info("Provenance file prefix: %s" % prov_base)

nipype/utils/datetime.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
# emacs: -*- mode: python; py-indent-offset: 4; indent-tabs-mode: nil -*-
2+
# vi: set ft=python sts=4 ts=4 sw=4 et:
3+
"""
4+
Utilities for dates and time
5+
"""
6+
7+
from datetime import datetime as dt
8+
import sys
9+
10+
if sys.version_info >= (3, 11):
11+
from datetime import UTC
12+
13+
def utcnow():
14+
"""Adapter since 3.12 prior utcnow is deprecated,
15+
but not EOLed 3.8 does not have datetime.UTC"""
16+
return dt.now(UTC)
17+
18+
else:
19+
utcnow = dt.utcnow

0 commit comments

Comments
 (0)