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