diff --git a/src/models/schemas.py b/src/models/schemas.py index a618ff3..52af7eb 100644 --- a/src/models/schemas.py +++ b/src/models/schemas.py @@ -1,6 +1,6 @@ from enum import Enum from typing import Any, Dict, List, Optional -from datetime import datetime +from datetime import UTC, datetime from pydantic import BaseModel, Field # --- Enums (from enhanced_extractor.py) --- @@ -30,7 +30,7 @@ class ExtractionResult(BaseModel): source: DataSource confidence: ConfidenceLevel extraction_method: str - timestamp: str = Field(default_factory=lambda: datetime.utcnow().isoformat()) + timestamp: str = Field(default_factory=lambda: datetime.now(UTC).isoformat()) fallback_chain: List[str] = Field(default_factory=list) def __str__(self): diff --git a/src/utils/analytics.py b/src/utils/analytics.py index f12584e..0bac9d6 100644 --- a/src/utils/analytics.py +++ b/src/utils/analytics.py @@ -1,6 +1,6 @@ import os import logging -from datetime import datetime +from datetime import UTC, datetime from datasets import Dataset, load_dataset, concatenate_datasets from ..config import HF_REPO, HF_TOKEN @@ -24,7 +24,7 @@ def _push_log(): try: normalized_model_id = model_id log_data = { - "timestamp": [datetime.utcnow().isoformat()], + "timestamp": [datetime.now(UTC).isoformat()], "event": ["generated"], "model_id": [normalized_model_id] } diff --git a/tests/test_schemas.py b/tests/test_schemas.py new file mode 100644 index 0000000..be801c0 --- /dev/null +++ b/tests/test_schemas.py @@ -0,0 +1,16 @@ +from datetime import datetime + +from src.models.schemas import ConfidenceLevel, DataSource, ExtractionResult + + +def test_extraction_timestamp_is_timezone_aware_utc(): + result = ExtractionResult( + value="value", + source=DataSource.HF_API, + confidence=ConfidenceLevel.HIGH, + extraction_method="test", + ) + + timestamp = datetime.fromisoformat(result.timestamp) + assert timestamp.utcoffset() is not None + assert timestamp.utcoffset().total_seconds() == 0