fix: Import date type explicitly to fix isinstance checks

When we import datetime from the datetime module, we get the datetime class,
not the module. This caused isinstance() checks to fail when checking against
datetime.date (which doesn't exist when datetime is a class).

Solution: Import date explicitly from datetime module and use it in isinstance
checks. Order matters - check datetime before date since datetime is a subclass
of date.

Fixes: "isinstance() arg 2 must be a type, a tuple of types, or a union"

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
This commit is contained in:
2025-12-23 18:56:12 +01:00
parent eb315c90ff
commit 4f4ba6af51

View File

@@ -1,6 +1,6 @@
"""Data transformation from MySQL to PostgreSQL format.""" """Data transformation from MySQL to PostgreSQL format."""
from typing import Dict, Any, List, Tuple from typing import Dict, Any, List, Tuple
from datetime import datetime, time, timedelta from datetime import datetime, time, timedelta, date
from config import ( from config import (
RAWDATACOR_COLUMNS, RAWDATACOR_COLUMNS,
ELABDATADISP_FIELD_MAPPING, ELABDATADISP_FIELD_MAPPING,
@@ -15,25 +15,25 @@ class DataTransformer:
"""Transform MySQL data to PostgreSQL format.""" """Transform MySQL data to PostgreSQL format."""
@staticmethod @staticmethod
def _convert_date(event_date: Any) -> datetime.date: def _convert_date(event_date: Any) -> date:
"""Convert event_date to datetime.date object. """Convert event_date to date object.
Handles multiple input types: Handles multiple input types:
- str: Parse from "YYYY-MM-DD" format - str: Parse from "YYYY-MM-DD" format
- datetime.date: Return as-is - date: Return as-is
- datetime.datetime: Extract date component - datetime: Extract date component
Args: Args:
event_date: Date value from MySQL (str or date) event_date: Date value from MySQL (str or date)
Returns: Returns:
datetime.date object date object
""" """
if isinstance(event_date, str): if isinstance(event_date, str):
return datetime.strptime(event_date, "%Y-%m-%d").date() return datetime.strptime(event_date, "%Y-%m-%d").date()
elif isinstance(event_date, datetime): elif isinstance(event_date, datetime):
return event_date.date() return event_date.date()
elif isinstance(event_date, datetime.date): elif isinstance(event_date, date):
return event_date return event_date
else: else:
raise ValueError(f"Unsupported event_date type: {type(event_date)}") raise ValueError(f"Unsupported event_date type: {type(event_date)}")