This is an automated email from the ASF dual-hosted git repository. skrawcz pushed a commit to branch stefan/fix-unit-tests in repository https://gitbox.apache.org/repos/asf/hamilton.git
commit 0bc875b9e6528d32045d978c49dba290438cae1f Author: Stefan Krawczyk <[email protected]> AuthorDate: Mon Dec 29 22:29:16 2025 +1100 Updates UTC use Updating code to not use the deprecated way of getting UTC time. --- .../contrib/user/elijahbenizzy/caption_images/__init__.py | 3 ++- ui/sdk/src/hamilton_sdk/adapters.py | 5 +++-- ui/sdk/src/hamilton_sdk/api/clients.py | 9 +++++---- ui/sdk/src/hamilton_sdk/driver.py | 3 ++- 4 files changed, 12 insertions(+), 8 deletions(-) diff --git a/contrib/hamilton/contrib/user/elijahbenizzy/caption_images/__init__.py b/contrib/hamilton/contrib/user/elijahbenizzy/caption_images/__init__.py index 8acdc00c..9fb19101 100644 --- a/contrib/hamilton/contrib/user/elijahbenizzy/caption_images/__init__.py +++ b/contrib/hamilton/contrib/user/elijahbenizzy/caption_images/__init__.py @@ -18,6 +18,7 @@ import base64 import datetime import logging +from datetime import UTC from typing import IO, Any, Dict, List, Optional, Union from hamilton.function_modifiers import config @@ -178,7 +179,7 @@ def metadata( out.update(caption_metadata) if additional_metadata is not None: out.update(additional_metadata) - out.update({"execution_time": datetime.datetime.utcnow().isoformat()}) + out.update({"execution_time": datetime.datetime.now(UTC).isoformat()}) return out diff --git a/ui/sdk/src/hamilton_sdk/adapters.py b/ui/sdk/src/hamilton_sdk/adapters.py index 2e969f82..d850113a 100644 --- a/ui/sdk/src/hamilton_sdk/adapters.py +++ b/ui/sdk/src/hamilton_sdk/adapters.py @@ -16,6 +16,7 @@ # under the License. import datetime +from datetime import UTC import hashlib import logging import os @@ -368,7 +369,7 @@ class HamiltonTracker( dw_run_id = self.dw_run_ids[run_id] tracking_state = self.tracking_states[run_id] tracking_state.clock_end(status=Status.SUCCESS if success else Status.FAILURE) - finally_block_time = datetime.datetime.utcnow() + finally_block_time = datetime.datetime.now(UTC) if tracking_state.status != Status.SUCCESS: # TODO: figure out how to handle crtl+c stuff # -- we are at the mercy of Hamilton here. @@ -644,7 +645,7 @@ class AsyncHamiltonTracker( dw_run_id = self.dw_run_ids[run_id] tracking_state = self.tracking_states[run_id] tracking_state.clock_end(status=Status.SUCCESS if success else Status.FAILURE) - finally_block_time = datetime.datetime.utcnow() + finally_block_time = datetime.datetime.now(UTC) if tracking_state.status != Status.SUCCESS: # TODO: figure out how to handle crtl+c stuff tracking_state.status = Status.FAILURE diff --git a/ui/sdk/src/hamilton_sdk/api/clients.py b/ui/sdk/src/hamilton_sdk/api/clients.py index 16898437..105377ee 100644 --- a/ui/sdk/src/hamilton_sdk/api/clients.py +++ b/ui/sdk/src/hamilton_sdk/api/clients.py @@ -19,6 +19,7 @@ import abc import asyncio import atexit import datetime +from datetime import UTC import functools import logging import queue @@ -486,7 +487,7 @@ class BasicSynchronousHamiltonClient(HamiltonClient): headers=self._common_headers(), json=make_json_safe( { - "run_start_time": datetime.datetime.utcnow(), # TODO -- ensure serializable + "run_start_time": datetime.datetime.now(UTC), # TODO -- ensure serializable "tags": tags, # TODO: make the following replace with summary stats if it's large data, e.g. dataframes. "inputs": make_json_safe(inputs), # TODO -- ensure serializable @@ -533,7 +534,7 @@ class BasicSynchronousHamiltonClient(HamiltonClient): logger.debug(f"Logging end of DAG run {dag_run_id} with status {status}") response = requests.put( f"{self.base_url}/dag_runs/{dag_run_id}/", - json=make_json_safe({"run_status": status, "run_end_time": datetime.datetime.utcnow()}), + json=make_json_safe({"run_status": status, "run_end_time": datetime.datetime.now(UTC)}), headers=self._common_headers(), verify=self.verify, ) @@ -823,7 +824,7 @@ class BasicAsynchronousHamiltonClient(HamiltonClient): f"{self.base_url}/dag_runs?dag_template_id={dag_template_id}", json=make_json_safe( { - "run_start_time": datetime.datetime.utcnow(), # TODO -- ensure serializable + "run_start_time": datetime.datetime.now(UTC), # TODO -- ensure serializable "tags": tags, # TODO: make the following replace with summary stats if it's large data, e.g. dataframes. "inputs": make_json_safe(inputs), # TODO -- ensure serializable @@ -862,7 +863,7 @@ class BasicAsynchronousHamiltonClient(HamiltonClient): async def log_dag_run_end(self, dag_run_id: int, status: str): logger.debug(f"Logging end of DAG run {dag_run_id} with status {status}") url = f"{self.base_url}/dag_runs/{dag_run_id}/" - data = make_json_safe({"run_status": status, "run_end_time": datetime.datetime.utcnow()}) + data = make_json_safe({"run_status": status, "run_end_time": datetime.datetime.now(UTC)}) headers = self._common_headers() async with aiohttp.ClientSession() as session: async with session.put(url, json=data, headers=headers, ssl=self.ssl) as response: diff --git a/ui/sdk/src/hamilton_sdk/driver.py b/ui/sdk/src/hamilton_sdk/driver.py index 416463ed..0c9c4d52 100644 --- a/ui/sdk/src/hamilton_sdk/driver.py +++ b/ui/sdk/src/hamilton_sdk/driver.py @@ -16,6 +16,7 @@ # under the License. import datetime +from datetime import UTC import hashlib import inspect import json @@ -835,7 +836,7 @@ class DAGWorksGraphExecutor(driver.GraphExecutor): tracking_state.clock_end(status=Status.FAILURE) raise e finally: - finally_block_time = datetime.datetime.utcnow() + finally_block_time = datetime.datetime.now(UTC) if tracking_state.status != Status.SUCCESS: tracking_state.status = Status.FAILURE # this assumes the task map only has things that have been processed, not
