Source code for sqlspec.core.type_converter

"""Base classes and scalar helpers for adapter type conversion."""

import json
from datetime import date, datetime, time, timezone
from decimal import Decimal
from typing import Any
from uuid import UUID

from mypy_extensions import mypyc_attr

from sqlspec.utils.uuids import uuid_from_string

__all__ = (
    "BaseInputConverter",
    "convert_decimal",
    "convert_iso_date",
    "convert_iso_datetime",
    "convert_iso_time",
    "convert_json",
    "convert_uuid",
    "format_datetime_rfc3339",
    "parse_datetime_rfc3339",
)


def convert_uuid(value: str) -> UUID:
    """Convert UUID string to UUID object.

    Args:
        value: UUID string.

    Returns:
        UUID object.
    """
    return uuid_from_string(value)
def convert_iso_datetime(value: str) -> "datetime": """Convert ISO 8601 datetime string to datetime object. Args: value: ISO datetime string. Returns: datetime object. """ if value.endswith("Z"): value = value[:-1] + "+00:00" if " " in value and "T" not in value: value = value.replace(" ", "T") return datetime.fromisoformat(value)