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:
@@ -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)}")
|
||||||
|
|||||||
Reference in New Issue
Block a user