�
J�g?i � �6 � d dl mZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlm Z d d l
mZ d d
l
mZ d dl
m
Z
d dl
mZ d d
l
mZ d dl
mZ d dl
mZ d dl
mZ d dl
mZ d dlmZ d dlmZ d dlmZ ddlmZ ddlmZ ddlmZ ddlm Z ddlm!Z! ddlm"Z" ddlm#Z# ddlm$Z$ ddlm%Z% ddlm&Z& dd lm'Z' dd!lm(Z( dd"lm)Z) dd#lm*Z* er0d d$lm+Z+ d d%l,m-Z- d d&l.m/Z/ d d'l.m0Z0 d d(l1m2Z2 d d)lm3Z3 d d*l4m5Z5 dd+l6m7Z7 G d,� d-� � Z8 G d.� d/� � Z9d0S )1� )�annotations)�Any)�Dict)�List)�Optional)�Tuple)�
TYPE_CHECKING)�Union)�CheckConstraint)�Column)�ForeignKeyConstraint)�Index)�MetaData)�PrimaryKeyConstraint��schema)�Table)�types)�SchemaEventTarget)�OrderedDict)�topological� )�exc)�_columns_for_constraint)�_copy)�_copy_expression)�_ensure_scope_for_ddl)�_fk_is_self_referential)�_idx_table_bound_expressions)�_insert_inline)�_is_type_bound)�_remove_column_from_collection)�_resolve_for_variant)�_select)�constraint_name_defined)�constraint_name_string)�Literal)�Dialect)�ColumnClause)�quoted_name)�Function)�
Constraint)�
TypeEngine)�DefaultImplc � � e Zd Zd� Zedd�� � Zed d�� � Zd!d�Zd"d
�Zd"d�Z d"d�Z
d"d
�Zd#d�Zd#d�Z
d� Zd$d�Zd$d�Zd� Zd� Zd� Zd� Zd� ZdS )%�BatchOperationsImplc �� � || _ || _ || _ |dvrt d� � �|| _ || _ || _ t |� � | _ || _ t | � � | _
| j
� dt | j
�
dd� � � � � � | j
d � d|j j f� � |
| _ || _ g | _ d S )N)�auto�always�neverz4recreate may be one of 'auto', 'always', or 'never'.� listeners� �column_reflect)�
operations�
table_namer �
ValueError�recreate� copy_from�
table_args�dict�table_kwargs�reflect_args�reflect_kwargs�
setdefault�list�get�append�impl�autogen_column_reflect�naming_convention�partial_reordering�batch)�selfr8 r9 r r; r<