From 4f4ba6af51173e2c7d8ba73b481f53eed0c828d7 Mon Sep 17 00:00:00 2001 From: alex Date: Tue, 23 Dec 2025 18:56:12 +0100 Subject: [PATCH] fix: Import date type explicitly to fix isinstance checks MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- src/transformers/data_transformer.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/transformers/data_transformer.py b/src/transformers/data_transformer.py index 3111c6a..4fbc0e0 100644 --- a/src/transformers/data_transformer.py +++ b/src/transformers/data_transformer.py @@ -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)}")