1# dialects/_typing.py 
    2# Copyright (C) 2005-2025 the SQLAlchemy authors and contributors 
    3# <see AUTHORS file> 
    4# 
    5# This module is part of SQLAlchemy and is released under 
    6# the MIT License: https://www.opensource.org/licenses/mit-license.php 
    7from __future__ import annotations 
    8 
    9from typing import Any 
    10from typing import Iterable 
    11from typing import Mapping 
    12from typing import Optional 
    13from typing import Union 
    14 
    15from ..sql import roles 
    16from ..sql.base import ColumnCollection 
    17from ..sql.schema import Column 
    18from ..sql.schema import ColumnCollectionConstraint 
    19from ..sql.schema import Index 
    20 
    21 
    22_OnConflictConstraintT = Union[str, ColumnCollectionConstraint, Index, None] 
    23_OnConflictIndexElementsT = Optional[ 
    24    Iterable[Union[Column[Any], str, roles.DDLConstraintColumnRole]] 
    25] 
    26_OnConflictIndexWhereT = Optional[roles.WhereHavingRole] 
    27_OnConflictSetT = Optional[ 
    28    Union[Mapping[Any, Any], ColumnCollection[Any, Any]] 
    29] 
    30_OnConflictWhereT = Optional[roles.WhereHavingRole]