fix: replace deprecated datetime.utcnow() with timezone-aware datetime.now(timezone.utc) (#816)

Python 3.14 deprecates datetime.utcnow(). Replace all 9 occurrences with
datetime.now(timezone.utc) and normalize the output to preserve the existing
ISO-8601 "Z"-suffixed format so downstream parsers are unaffected.

Fixes #814
This commit is contained in:
Trevin Chow 2026-04-16 02:16:11 -07:00 committed by GitHub
parent 95e4839da7
commit ef8bb3aed4
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
6 changed files with 15 additions and 15 deletions

View file

@ -13,7 +13,7 @@ Agent provenance tracks the reasoning trace of agent sessions:
"""
import json
from datetime import datetime
from datetime import datetime, timezone
from typing import List, Optional, Dict, Any
from .. schema import Triple, Term, IRI, LITERAL
@ -87,7 +87,7 @@ def agent_session_triples(
List of Triple objects
"""
if timestamp is None:
timestamp = datetime.utcnow().isoformat() + "Z"
timestamp = datetime.now(timezone.utc).isoformat().replace("+00:00", "Z")
triples = [
_triple(session_uri, RDF_TYPE, _iri(PROV_ENTITY)),

View file

@ -2,7 +2,7 @@
Helper functions to build PROV-O triples for extraction-time provenance.
"""
from datetime import datetime
from datetime import datetime, timezone
from typing import List, Optional
from .. schema import Triple, Term, IRI, LITERAL, TRIPLE
@ -192,7 +192,7 @@ def derived_entity_triples(
List of Triple objects
"""
if timestamp is None:
timestamp = datetime.utcnow().isoformat() + "Z"
timestamp = datetime.now(timezone.utc).isoformat().replace("+00:00", "Z")
act_uri = activity_uri()
agt_uri = agent_uri(component_name)
@ -309,7 +309,7 @@ def subgraph_provenance_triples(
List of Triple objects for the provenance
"""
if timestamp is None:
timestamp = datetime.utcnow().isoformat() + "Z"
timestamp = datetime.now(timezone.utc).isoformat().replace("+00:00", "Z")
act_uri = activity_uri()
agt_uri = agent_uri(component_name)
@ -386,7 +386,7 @@ def question_triples(
List of Triple objects
"""
if timestamp is None:
timestamp = datetime.utcnow().isoformat() + "Z"
timestamp = datetime.now(timezone.utc).isoformat().replace("+00:00", "Z")
triples = [
_triple(question_uri, RDF_TYPE, _iri(PROV_ENTITY)),
@ -640,7 +640,7 @@ def docrag_question_triples(
List of Triple objects
"""
if timestamp is None:
timestamp = datetime.utcnow().isoformat() + "Z"
timestamp = datetime.now(timezone.utc).isoformat().replace("+00:00", "Z")
triples = [
_triple(question_uri, RDF_TYPE, _iri(PROV_ENTITY)),

View file

@ -9,7 +9,7 @@ librarian integration.
import json
import logging
import uuid
from datetime import datetime
from datetime import datetime, timezone
from ... schema import AgentRequest, AgentResponse, AgentStep, Error
from ... schema import Triples, Metadata
@ -253,7 +253,7 @@ class PatternBase:
collection, respond, streaming,
parent_uri=None):
"""Emit provenance triples for a new session."""
timestamp = datetime.utcnow().isoformat() + "Z"
timestamp = datetime.now(timezone.utc).isoformat().replace("+00:00", "Z")
triples = set_graph(
agent_session_triples(
session_uri, question, timestamp,

View file

@ -10,7 +10,7 @@ import sys
import functools
import logging
import uuid
from datetime import datetime
from datetime import datetime, timezone
# Module logger
logger = logging.getLogger(__name__)
@ -452,7 +452,7 @@ class Processor(AgentService):
# On first iteration, emit session triples
if iteration_num == 1:
timestamp = datetime.utcnow().isoformat() + "Z"
timestamp = datetime.now(timezone.utc).isoformat().replace("+00:00", "Z")
triples = set_graph(
agent_session_triples(session_uri, request.question, timestamp),
GRAPH_RETRIEVAL

View file

@ -2,7 +2,7 @@
import asyncio
import logging
import uuid
from datetime import datetime
from datetime import datetime, timezone
# Provenance imports
from trustgraph.provenance import (
@ -199,7 +199,7 @@ class DocumentRag:
exp_uri = docrag_exploration_uri(session_id)
syn_uri = docrag_synthesis_uri(session_id)
timestamp = datetime.utcnow().isoformat() + "Z"
timestamp = datetime.now(timezone.utc).isoformat().replace("+00:00", "Z")
# Emit question explainability immediately
if explain_callback:

View file

@ -7,7 +7,7 @@ import math
import time
import uuid
from collections import OrderedDict
from datetime import datetime
from datetime import datetime, timezone
from ... schema import Term, Triple as SchemaTriple, IRI, LITERAL, TRIPLE
from ... knowledge import Uri, Literal
@ -643,7 +643,7 @@ class GraphRag:
foc_uri = make_focus_uri(session_id)
syn_uri = make_synthesis_uri(session_id)
timestamp = datetime.utcnow().isoformat() + "Z"
timestamp = datetime.now(timezone.utc).isoformat().replace("+00:00", "Z")
# Emit question explainability immediately
if explain_callback: