Skip to content

Commit b531c26

Browse files
committed
Issue #389/#390 Add now_utc helper
1 parent 84a7e3e commit b531c26

File tree

7 files changed

+31
-7
lines changed

7 files changed

+31
-7
lines changed

openeo_driver/dummy/dummy_backend.py

+3-1
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@
1313
import openeo.udf
1414
import xarray
1515

16+
from openeo_driver.util.date_math import now_utc
17+
1618
try:
1719
from openeo.rest.models.logs import normalize_log_level
1820
except ImportError:
@@ -704,7 +706,7 @@ def create_job(
704706
id=job_id,
705707
status=JOB_STATUS.CREATED,
706708
process=process,
707-
created=datetime.datetime.now(tz=datetime.timezone.utc),
709+
created=now_utc(),
708710
job_options=job_options,
709711
title=metadata.get("title"),
710712
description=metadata.get("description"),

openeo_driver/util/date_math.py

+8
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,14 @@
44
import pandas as pd
55

66

7+
def now_utc() -> dt.datetime:
8+
"""
9+
Current timezone-aware (UTC) datetime
10+
to be used instead of deprecated naive datetime.utcnow()
11+
"""
12+
return dt.datetime.now(tz=dt.timezone.utc)
13+
14+
715
def month_shift(
816
d: Union[dt.date, dt.datetime, pd.Timestamp],
917
months: int = 1

openeo_driver/util/view_helpers.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
import flask
55

6+
from openeo_driver.util.date_math import now_utc
67

78

89
def cache_control(
@@ -27,7 +28,7 @@ def add_cache_control_headers(response: flask.Response) -> flask.Response:
2728
for key, value in settings.items():
2829
setattr(response.cache_control, key, value)
2930
if max_age is not None:
30-
response.expires = datetime.datetime.now(datetime.timezone.utc) + datetime.timedelta(seconds=max_age)
31+
response.expires = now_utc() + datetime.timedelta(seconds=max_age)
3132
return response
3233

3334
def decorator(func):

openeo_driver/utils.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414

1515
from openeo.util import Rfc3339, rfc3339
1616
from openeo.utils.version import ComparableVersion
17+
from openeo_driver.util.date_math import now_utc
1718

1819
_log = logging.getLogger(__name__)
1920

@@ -358,7 +359,7 @@ def generate_unique_id(prefix: Optional[str] = None, *, date_prefix: Union[bool,
358359
if date_prefix:
359360
if not isinstance(date_prefix, str):
360361
date_prefix = "%y%m%d%H%M%S"
361-
date_repr = datetime.datetime.now(datetime.timezone.utc).strftime(date_prefix)
362+
date_repr = now_utc().strftime(date_prefix)
362363
id = f"{date_repr}{id[len(date_repr):]}"
363364
if prefix:
364365
id = f"{prefix}-{id}"

tests/test_server.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
import re
2-
import datetime
32

43
from openeo_driver.server import build_backend_deploy_metadata
4+
from openeo_driver.util.date_math import now_utc
55

66

77
def test_build_backend_deploy_metadata():
88
data = build_backend_deploy_metadata(packages=["openeo", "openeo_driver", "foobarblerghbwop"])
9-
assert data["date"].startswith(datetime.datetime.now(datetime.timezone.utc).strftime("%Y-%m-%dT%H"))
9+
assert data["date"].startswith(now_utc().strftime("%Y-%m-%dT%H"))
1010
assert re.match(r"\d+\.\d+\.\d+", data["versions"]["openeo"])
1111
assert re.match(r"\d+\.\d+\.\d+", data["versions"]["openeo_driver"])
1212
assert data["versions"]["foobarblerghbwop"] == "n/a"

tests/test_workspace.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
from pystac import Asset, Collection, Extent, Item, SpatialExtent, TemporalExtent, CatalogType, Link, RelType
77
import pytest
88

9+
from openeo_driver.util.date_math import now_utc
910
from openeo_driver.workspace import DiskWorkspace
1011

1112

@@ -200,7 +201,7 @@ def _collection(
200201
extent=Extent(spatial_extent, temporal_extent),
201202
)
202203

203-
item = Item(id=asset_filename, geometry=None, bbox=None, datetime=dt.datetime.now(dt.timezone.utc), properties={})
204+
item = Item(id=asset_filename, geometry=None, bbox=None, datetime=now_utc(), properties={})
204205

205206
asset_path = root_path / item.id / asset_filename
206207
asset = Asset(href=asset_path.name) # relative to item

tests/util/test_date_math.py

+12-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,18 @@
44
import pytest
55
import time_machine
66

7-
from openeo_driver.util.date_math import month_shift, simple_job_progress_estimation
7+
from openeo_driver.util.date_math import month_shift, simple_job_progress_estimation, now_utc
8+
9+
10+
def test_now_utc_timezone():
11+
now = now_utc()
12+
assert now.tzinfo == dt.timezone.utc
13+
14+
15+
@time_machine.travel("2025-04-08T10:11:12+00")
16+
def test_now_utc():
17+
now = now_utc()
18+
assert now == dt.datetime(2025, 4, 8, 10, 11, 12, tzinfo=dt.timezone.utc)
819

920

1021
def test_month_shift_date():

0 commit comments

Comments
 (0)