fix: patch .utcnow warning (#1702)

This commit is contained in:
Charles Packer
2025-04-14 12:55:34 -07:00
committed by GitHub
parent 1c0e1bffde
commit ff22d576ad
11 changed files with 26 additions and 25 deletions

View File

@@ -40,7 +40,7 @@ def main():
service = build("calendar", "v3", credentials=creds) service = build("calendar", "v3", credentials=creds)
# Call the Calendar API # Call the Calendar API
now = datetime.datetime.utcnow().isoformat() + "Z" # 'Z' indicates UTC time now = datetime.datetime.now(datetime.timezone.utc).isoformat() + "Z" # 'Z' indicates UTC time
print("Getting the upcoming 10 events") print("Getting the upcoming 10 events")
events_result = ( events_result = (
service.events() service.events()

View File

@@ -1,6 +1,6 @@
import asyncio import asyncio
import threading import threading
from datetime import datetime from datetime import datetime, timezone
from typing import List, Optional from typing import List, Optional
from letta.agent import Agent, AgentState from letta.agent import Agent, AgentState
@@ -154,7 +154,7 @@ class SleeptimeMultiAgent(Agent):
) )
job_update = JobUpdate( job_update = JobUpdate(
status=JobStatus.completed, status=JobStatus.completed,
completed_at=datetime.utcnow(), completed_at=datetime.now(timezone.utc),
metadata={ metadata={
"result": result.model_dump(mode="json"), "result": result.model_dump(mode="json"),
"agent_id": participant_agent.agent_state.id, "agent_id": participant_agent.agent_state.id,
@@ -165,7 +165,7 @@ class SleeptimeMultiAgent(Agent):
except Exception as e: except Exception as e:
job_update = JobUpdate( job_update = JobUpdate(
status=JobStatus.failed, status=JobStatus.failed,
completed_at=datetime.utcnow(), completed_at=datetime.now(timezone.utc),
metadata={"error": str(e)}, metadata={"error": str(e)},
) )
self.job_manager.update_job_by_id(job_id=run_id, job_update=job_update, actor=self.user) self.job_manager.update_job_by_id(job_id=run_id, job_update=job_update, actor=self.user)

View File

@@ -1,4 +1,4 @@
from datetime import datetime from datetime import datetime, timezone
from typing import Optional from typing import Optional
from sqlalchemy import Boolean, DateTime, String, func, text from sqlalchemy import Boolean, DateTime, String, func, text
@@ -25,7 +25,7 @@ class CommonSqlalchemyMetaMixins(Base):
timestamp (Optional[datetime]): The timestamp to set. timestamp (Optional[datetime]): The timestamp to set.
If None, uses the current UTC time. If None, uses the current UTC time.
""" """
self.updated_at = timestamp or datetime.utcnow() self.updated_at = timestamp or datetime.now(timezone.utc)
def _set_created_and_updated_by_fields(self, actor_id: str) -> None: def _set_created_and_updated_by_fields(self, actor_id: str) -> None:
"""Populate created_by_id and last_updated_by_id based on actor.""" """Populate created_by_id and last_updated_by_id based on actor."""

View File

@@ -1,6 +1,6 @@
import json import json
import traceback import traceback
from datetime import datetime from datetime import datetime, timezone
from typing import Annotated, Any, List, Optional from typing import Annotated, Any, List, Optional
from fastapi import APIRouter, BackgroundTasks, Body, Depends, File, Header, HTTPException, Query, UploadFile, status from fastapi import APIRouter, BackgroundTasks, Body, Depends, File, Header, HTTPException, Query, UploadFile, status
@@ -729,7 +729,7 @@ async def process_message_background(
# Update job status to completed # Update job status to completed
job_update = JobUpdate( job_update = JobUpdate(
status=JobStatus.completed, status=JobStatus.completed,
completed_at=datetime.utcnow(), completed_at=datetime.now(timezone.utc),
metadata={"result": result.model_dump(mode="json")}, # Store the result in metadata metadata={"result": result.model_dump(mode="json")}, # Store the result in metadata
) )
server.job_manager.update_job_by_id(job_id=job_id, job_update=job_update, actor=actor) server.job_manager.update_job_by_id(job_id=job_id, job_update=job_update, actor=actor)
@@ -738,7 +738,7 @@ async def process_message_background(
# Update job status to failed # Update job status to failed
job_update = JobUpdate( job_update = JobUpdate(
status=JobStatus.failed, status=JobStatus.failed,
completed_at=datetime.utcnow(), completed_at=datetime.now(timezone.utc),
metadata={"error": str(e)}, metadata={"error": str(e)},
) )
server.job_manager.update_job_by_id(job_id=job_id, job_update=job_update, actor=actor) server.job_manager.update_job_by_id(job_id=job_id, job_update=job_update, actor=actor)

View File

@@ -1,4 +1,4 @@
from datetime import datetime from datetime import datetime, timezone
from typing import List, Optional from typing import List, Optional
from openai import OpenAI from openai import OpenAI
@@ -49,7 +49,7 @@ class PassageManager:
"organization_id": data["organization_id"], "organization_id": data["organization_id"],
"metadata_": data.get("metadata", {}), "metadata_": data.get("metadata", {}),
"is_deleted": data.get("is_deleted", False), "is_deleted": data.get("is_deleted", False),
"created_at": data.get("created_at", datetime.utcnow()), "created_at": data.get("created_at", datetime.now(timezone.utc)),
} }
if "agent_id" in data and data["agent_id"]: if "agent_id" in data and data["agent_id"]:

View File

@@ -1,7 +1,7 @@
import json import json
import os import os
import uuid import uuid
from datetime import datetime from datetime import datetime, timezone
from typing import List from typing import List
import pytest import pytest
@@ -55,7 +55,7 @@ def generate_message(role: str, text: str = None, tool_calls: List = None) -> Me
id="message-" + str(uuid.uuid4()), id="message-" + str(uuid.uuid4()),
role=MessageRole(role), role=MessageRole(role),
content=[TextContent(text=text or f"{role} message text")], content=[TextContent(text=text or f"{role} message text")],
created_at=datetime.utcnow(), created_at=datetime.now(timezone.utc),
tool_calls=tool_calls or [], tool_calls=tool_calls or [],
) )

View File

@@ -1,4 +1,4 @@
from datetime import datetime from datetime import datetime, timezone
from unittest.mock import AsyncMock, patch from unittest.mock import AsyncMock, patch
import pytest import pytest
@@ -35,10 +35,12 @@ def mock_agent_messages():
return { return {
"agent-1": [ "agent-1": [
PydanticMessage( PydanticMessage(
role=MessageRole.system, content=[{"type": "text", "text": "You are a helpful assistant."}], created_at=datetime.utcnow() role=MessageRole.system,
content=[{"type": "text", "text": "You are a helpful assistant."}],
created_at=datetime.now(timezone.utc),
), ),
PydanticMessage( PydanticMessage(
role=MessageRole.user, content=[{"type": "text", "text": "What's the weather like?"}], created_at=datetime.utcnow() role=MessageRole.user, content=[{"type": "text", "text": "What's the weather like?"}], created_at=datetime.now(timezone.utc)
), ),
] ]
} }

View File

@@ -1768,7 +1768,7 @@ def test_agent_list_passages_filtering(server, default_user, sarah_agent, defaul
assert len(source_filtered) == 3 assert len(source_filtered) == 3
# Test date filtering # Test date filtering
now = datetime.utcnow() now = datetime.now(timezone.utc)
future_date = now + timedelta(days=1) future_date = now + timedelta(days=1)
past_date = now - timedelta(days=1) past_date = now - timedelta(days=1)
@@ -4302,7 +4302,7 @@ def test_job_messages_pagination(server: SyncServer, default_run, default_user,
def test_job_messages_ordering(server: SyncServer, default_run, default_user, sarah_agent): def test_job_messages_ordering(server: SyncServer, default_run, default_user, sarah_agent):
"""Test that messages are ordered by created_at.""" """Test that messages are ordered by created_at."""
# Create messages with different timestamps # Create messages with different timestamps
base_time = datetime.utcnow() base_time = datetime.now(timezone.utc)
message_times = [ message_times = [
base_time - timedelta(minutes=2), base_time - timedelta(minutes=2),
base_time - timedelta(minutes=1), base_time - timedelta(minutes=1),

View File

@@ -1,5 +1,5 @@
import json import json
from datetime import datetime from datetime import datetime, timezone
from unittest.mock import AsyncMock from unittest.mock import AsyncMock
import pytest import pytest
@@ -31,7 +31,7 @@ def messages():
Message( Message(
role=MessageRole.user if i % 2 == 0 else MessageRole.assistant, role=MessageRole.user if i % 2 == 0 else MessageRole.assistant,
content=[TextContent(type="text", text=json.dumps({"message": f"Test message {i}"}))], content=[TextContent(type="text", text=json.dumps({"message": f"Test message {i}"}))],
created_at=datetime.utcnow(), created_at=datetime.now(timezone.utc),
) )
for i in range(15) for i in range(15)
] ]

View File

@@ -1,4 +1,4 @@
from datetime import datetime from datetime import datetime, timezone
from unittest.mock import MagicMock, Mock from unittest.mock import MagicMock, Mock
import pytest import pytest
@@ -209,7 +209,7 @@ def test_upsert_base_tools(client, mock_sync_server, add_integers_tool):
def test_get_run_messages(client, mock_sync_server): def test_get_run_messages(client, mock_sync_server):
"""Test getting messages for a run.""" """Test getting messages for a run."""
# Create properly formatted mock messages # Create properly formatted mock messages
current_time = datetime.utcnow() current_time = datetime.now(timezone.utc)
mock_messages = [ mock_messages = [
UserMessage( UserMessage(
id=f"message-{i:08x}", id=f"message-{i:08x}",

View File

@@ -1,7 +1,6 @@
import datetime
import os import os
import time import time
from datetime import datetime from datetime import datetime, timezone
from importlib import util from importlib import util
from typing import Dict, Iterator, List, Tuple from typing import Dict, Iterator, List, Tuple
@@ -34,7 +33,7 @@ class DummyDataConnector(DataConnector):
file_size=0, # Set to 0 as a placeholder file_size=0, # Set to 0 as a placeholder
file_creation_date="1970-01-01", # Placeholder date file_creation_date="1970-01-01", # Placeholder date
file_last_modified_date="1970-01-01", # Placeholder date file_last_modified_date="1970-01-01", # Placeholder date
created_at=datetime.utcnow(), created_at=datetime.now(timezone.utc),
) )
self.file_to_text[file_metadata.id] = text self.file_to_text[file_metadata.id] = text