
    Pqhc                       U d dl mZ d dlmZ d dlZd dlmZ d dlmZ d dlmZ d dlm	Z	 d dlm
Z
 d d	lmZ d d
lmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ ddlmZ ddlmZ ddlmZ erd dlmZ d dlmZ d dlmZ d dlmZ d dl m!Z! d dl"m#Z# d dl$m%Z% d d l$m&Z& d d!l'm(Z( d d"l'm)Z) d d#l*m+Z+ d d$l*m,Z, d d%l*m-Z- d d&l*m.Z. d d'l*m/Z/ d d(l*m0Z0 d d)l1m2Z2 d d*l3m4Z4 dd+lm5Z5 dd,l6m7Z7 dd-l8m9Z9 dd.l8m:Z:  G d/ d0e;      Z<i Z=d1e>d2<    ed3g d4      Z? G d5 d6e<7      Z@	 	 	 	 	 	 	 	 d9d8ZAy):    )annotations)
namedtupleN)Any)Callable)Dict)Iterable)List)Mapping)Optional)Sequence)Set)Tuple)Type)TYPE_CHECKING)Union)castschema)text   )base   )util)sqla_compat)Literal)TextIO)
Connection)Dialect)CursorResult)	Inspector)ClauseElement)
Executable)ColumnElement)quoted_name)Column)
Constraint)ForeignKeyConstraint)Index)Table)UniqueConstraint)TableClause)
TypeEngine)_ServerDefault)AutogenContext)ApplyBatchImpl)BatchOperationsImplc                       e Zd Z	 	 	 	 	 	 ddZy)ImplMetac                V    t         j                  | |||      }d|v r| t        |d   <   |S )N__dialect__)type__init___impls)cls	classnamebasesdict_newtypes        Q/srv/www/ollama/chat-ollama/venv/lib/python3.12/site-packages/alembic/ddl/impl.pyr6   zImplMeta.__init__7   s4     --Yu=E!+.F5'(    N)r9   strr:   zTuple[Type[DefaultImpl]]r;   Dict[str, Any])__name__
__module____qualname__r6    r>   r=   r2   r2   6   s#    		 (	 		r>   r2   zDict[str, Type[DefaultImpl]]r7   Params)token0tokensargskwargsc                  4   e Zd ZU dZdZdZdZddhfZded<   d	Z	d
ed<   dZ
ded<   	 	 	 	 	 	 	 	 	 	 	 	 	 	 d:dZed;d       Zd<dZ	 	 	 	 d=dZ	 	 	 	 	 	 d>dZed?d       Zdd	 ej(                         f	 	 	 	 	 	 	 	 	 d@dZ	 dA	 	 	 	 	 dBdZ	 	 	 	 	 	 	 	 	 	 	 	 dC	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dDdZ	 dA	 	 	 	 	 	 	 dEdZ	 dA	 	 	 	 	 	 	 dFdZdGdZdHdZ	 dA	 	 	 	 	 	 	 dIdZdJdZdJdZdKd ZdJd!Z dJd"Z!dLd#Z"dKd$Z#	 dM	 	 	 	 	 	 	 dNd%Z$dOd&Z%	 	 	 	 	 	 dPd'Z&	 	 	 	 	 	 dQd(Z'	 	 	 	 	 	 dRd)Z(d* Z)	 	 	 	 	 	 	 	 	 	 dSd+Z*d, Z+	 dT	 	 	 	 	 	 	 dUd-Z,dVd.Z-	 	 	 	 	 	 dWd/Z.d0 Z/dXd1Z0dXd2Z1dXd3Z2	 	 	 	 	 	 dYd4Z3d5 Z4dZd6Z5	 	 	 	 d[d7Z6d8 Z7	 	 	 	 	 	 d\d9Z8y)]DefaultImpla  Provide the entrypoint for major migration operations,
    including database-specific behavioral variances.

    While individual SQL/DDL constructs already provide
    for database-specific implementations, variances here
    allow for entirely different sequences of operations
    to take place for a particular migration, such as
    SQL Server's special 'IDENTITY INSERT' step for
    bulk inserts.

    defaultF;NUMERICDECIMALzTuple[Set[str], ...]type_synonymsrD   zSequence[str]type_arg_extract)orderon_nullzTuple[str, ...]identity_attrs_ignorec                    || _         || _        || _        |j                  dd      | _        || _        i | _        || _        ||| _        | j                  r"| j                  st        j                  d      y y )Nliteral_bindsFz3Can't use literal_binds setting without as_sql mode)dialect
connectionas_sqlgetrV   output_buffermemocontext_optstransactional_ddlr   CommandError)selfrW   rX   rY   r^   r[   r]   s          r=   r6   zDefaultImpl.__init__b   s     $)--ouE*	((%6D";;''I   r>   c                (    t         |j                     S N)r7   name)r8   rW   s     r=   get_by_dialectzDefaultImpl.get_by_dialect|   s    gll##r>   c                    | j                   J | j                   j                  |dz          | j                   j                          y )Nz

)r[   writeflush)r`   r   s     r=   static_outputzDefaultImpl.static_output   s>    !!---  /  "r>   c                     y)zReturn True if the given :class:`.BatchOperationsImpl`
        would need the table to be recreated and copied in order to
        proceed.

        Normally, only returns True on SQLite when operations other
        than add_column are present.

        FrD   )r`   batch_ops     r=   requires_recreate_in_batchz&DefaultImpl.requires_recreate_in_batch   s     r>   c                     y)zperform any operations needed on a table before a new
        one is created to replace it in batch mode.

        the PG dialect uses this to drop constraints on the table
        before the new one uses those same names.

        NrD   )r`   
batch_impltables      r=   prep_table_for_batchz DefaultImpl.prep_table_for_batch       r>   c                    | j                   S rb   )rX   r`   s    r=   bindzDefaultImpl.bind   s    r>   Nc                t   t        |t              rt        |      }| j                  r|s|rt	        d      | j
                  r)t        |t        j                        st        ddi      }ni }t        rt        |t              sJ  |j                  dd| j                  i|}| j                  t        |      j                  dd      j                         | j                   z          y | j"                  }|J |r |j$                  di |}|rt        |t&              sJ ||fz  }|j)                  ||      S )	Nz+Execution arguments not allowed with as_sqlrV   T)compile_kwargsrW   	z    rD   )
isinstancer?   r   rY   	ExceptionrV   r   
DDLElementdictr   r!   compilerW   rh   replacestripcommand_terminatorrX   execution_optionstupleexecute)r`   	constructr   multiparamsparams
compile_kwcompiledconns           r=   _execzDefaultImpl._exec   s/    i%YI;;f MNN !!*6,,+ "/41HI

!)];;;(y((LLLHH%%dF399;))* ??D### -t--B0AB!+u555y(<<	;77r>   c                (    | j                  ||       y rb   )r   )r`   sqlr   s      r=   r   zDefaultImpl.execute   s    
 	

3)*r>   c                   ||t        j                  dd       |,| j                  t        j                  ||||||||
             |duri }t        j                  ||      rt        j                  }n<t        j                  ||      rt        j                  }| |d<   nt        j                  }| j                   ||||f|||||
d|       |,| j                  t        j                  ||||||||
             |	dur,| j                  t        j                  |||	|||||
             |,| j                  t        j                  |||||||             y y )NzBautoincrement and existing_autoincrement only make sense for MySQL   )
stacklevel)r   existing_typeexisting_server_defaultexisting_nullableexisting_commentFimpl)r   r   r   r   )r   warnr   r   ColumnNullabler   _server_default_is_computedComputedColumnDefault_server_default_is_identityIdentityColumnDefaultColumnDefault
ColumnTypeColumnComment
ColumnName)r`   
table_namecolumn_namenullableserver_defaultrc   type_r   autoincrementcommentr   r   r   r   existing_autoincrementkwcls_s                    r=   alter_columnzDefaultImpl.alter_column   s   $ $(>(JII,
 JJ##!"/,C&7%5	 &B 66 7 1188 7 11!6
))JJ"
 ""/,C&7%5
 
 JJ!"/,C&7%5	 %JJ""!"/,C&7%5	 JJ!"/,C&7
 r>   c                R    | j                  t        j                  |||             y Nr   )r   r   	AddColumn)r`   r   columnr   s       r=   
add_columnzDefaultImpl.add_columnA  s     	

4>>*fVDEr>   c                R    | j                  t        j                  |||             y r   )r   r   
DropColumn)r`   r   r   r   r   s        r=   drop_columnzDefaultImpl.drop_columnI  s     	

4??:vfEFr>   c                    |j                   |j                  |       r%| j                  t        j                  |             y y rb   )_create_ruler   r   AddConstraintr`   consts     r=   add_constraintzDefaultImpl.add_constraintR  s8    %););D)AJJv++E23 *Br>   c                L    | j                  t        j                  |             y rb   )r   r   DropConstraintr   s     r=   drop_constraintzDefaultImpl.drop_constraintV  s    

6((/0r>   c                R    | j                  t        j                  |||             y r   )r   r   RenameTable)r`   old_table_namenew_table_namer   s       r=   rename_tablezDefaultImpl.rename_tableY  s"     	

^^FK	
r>   c                b   |j                   j                  || j                  d|        | j                  t	        j
                  |             |j                   j                  || j                  d|        |j                  D ]&  }| j                  t	        j                  |             ( | j                  j                  xr | j                  j                   }|j                  }|r|r| j                  |       |j                  D ]%  }|j                  }|s|s| j                  |       ' y NF)
checkfirst_ddl_runner)dispatchbefore_createrX   r   r   CreateTableafter_createindexesCreateIndexrW   supports_commentsinline_commentsr   create_table_commentcolumnscreate_column_comment)r`   rn   indexwith_commentr   r   s         r=   create_tablezDefaultImpl.create_tablec  s   $$4??u$ 	% 	
 	

6%%e,-##4??u$ 	$ 	
 ]] 	2EJJv))%01	2 LL**O4<<3O3O/O 	 --|%%e,mm 	3FnnG<**62	3r>   c                    |j                   j                  || j                  d|        | j                  t	        j
                  |             |j                   j                  || j                  d|        y r   )r   before_droprX   r   r   	DropTable
after_dropr`   rn   s     r=   
drop_tablezDefaultImpl.drop_tablez  sc    ""4??u$ 	# 	
 	

6##E*+!!4??u$ 	" 	
r>   c                N    | j                  t        j                  |fi |       y rb   )r   r   r   r`   r   r   s      r=   create_indexzDefaultImpl.create_index  s    

6%%e2r23r>   c                L    | j                  t        j                  |             y rb   )r   r   SetTableCommentr   s     r=   r   z DefaultImpl.create_table_comment  s    

6))%01r>   c                L    | j                  t        j                  |             y rb   )r   r   DropTableCommentr   s     r=   drop_table_commentzDefaultImpl.drop_table_comment  s    

6**512r>   c                L    | j                  t        j                  |             y rb   )r   r   SetColumnComment)r`   r   s     r=   r   z!DefaultImpl.create_column_comment  s    

6**623r>   c                N    | j                  t        j                  |fi |       y rb   )r   r   	DropIndexr   s      r=   
drop_indexzDefaultImpl.drop_index  s    

6##E0R01r>   c                   t        |t              st        d      |rt        |d   t              st        d      | j                  r|D ]  }| j                   t        j                  |      j                  di |j                         D ci c]Q  \  }}|t        |t        j                        s/t        j                  |||j                  |   j                        n|S c}}        y |re|r'| j                  t        j                  |      |       y |D ]6  }| j                   t        j                  |      j                  di |       8 y y c c}}w )NzList expectedr   zList of dictionaries expected)r   )r   rD   )rw   list	TypeErrorrz   rY   r   r   _insert_inlinevaluesitems_literal_bindparamcr5   )r`   rn   rowsmultiinsertrowkvs          r=   bulk_insertzDefaultImpl.bulk_insert  sK    $%O,,*T!Wd3;<<;; 

<K..u5<<  ),			 !%1  $. !;#A#A$  +== !1EGGAJOO  "##	  JJ#2259t    $ 

DK66u=DDKsK 	s   AEc                R   | j                   j                  j                  |j                        j	                         }t        j                  d|      }g }d }|D ],  }t        j                  d|      r|}|j                  |       . t        |d   |dd  g i       }|rt        j                  d|      D ]o  }d|v r@|j                  d      \  }	}
|
j                         |j                  |	j                         <   G|j                  j                  |j                                q |S )Nz[\w\-_]+|\(.+?\)z^\(.*\)$r   r   z[^(),]+=)rW   type_compilerprocessr5   lowerrefindallmatchappendrE   splitr}   rI   rH   )r`   r   
definitionrG   term_tokens
paren_termtokenr   termkeyvals              r=   _tokenize_column_typez!DefaultImpl._tokenize_column_type  s    \\//77DJJL
 /<
 	*ExxU+"
""5)		* AABR@

9j9 5$;#zz#HC14FMM#))+.KK&&tzz|45 r>   c           	        |j                   |j                   k(  ry| j                  D cg c]   }|D ch c]  }|j                          c}" }}}dj                  |j                   g|j                  z         }dj                  |j                   g|j                  z         }|D ]>  }||hj                  |      s(|j                   |j                   hj                  |      s> y yc c}w c c}}w )NT F)rF   rP   r   joinrG   issubset)r`   inspector_paramsmetadata_paramsbatchtsynonymsinspector_all_termsmetadata_all_termss           r=   _column_types_matchzDefaultImpl._column_types_match  s     ""o&<&<<<@<N<NO5.1QWWY.OO!hh$$%(8(?(??
 !XX##$'='==
  	E#%78AA%H ''&&M huoM 	  /Os   	C-C(
C-(C-c                   t        |j                        t        |j                        k(  r|j                  |j                  k7  ryt        |j                        t        |j                        k(  r|j                  |j                  k7  rydj                  |j                        j	                         }dj                  |j                        j	                         }| j
                  D ]Y  }t        j                  ||      }t        j                  ||      }|s2|s5|j                  d      |j                  d      k7  sY y y)a  We want to compare column parameters. However, we only want
        to compare parameters that are set. If they both have `collation`,
        we want to make sure they are the same. However, if only one
        specifies it, dont flag it for being less specific
        Fr  r   T)	lenrG   rH   r  r   rQ   r   searchgroup)r`   inspected_paramsmeta_paramsinspmetaregmimms           r=   _column_args_matchzDefaultImpl._column_args_match  s    ""#s+;+B+B'CC""&6&=&==   !S)9)>)>%??  $4$9$99xx(//0668xx**+113(( 	C3%B3%BbRXXa[BHHQK7	 r>   c                    | j                  |      }| j                  |      }| j                  ||      sy| j                  ||      syy)zReturns True if there ARE differences between the types of the two
        columns. Takes impl.type_synonyms into account between retrospected
        and metadata types
        TF)r  r  r  )r`   inspector_columnmetadata_columnr  r  s        r=   compare_typezDefaultImpl.compare_type  sQ      556FG44_E''(8/J&&'7Ir>   c                    ||k7  S rb   rD   )r`   r  r  rendered_metadata_defaultrendered_inspector_defaults        r=   compare_server_defaultz"DefaultImpl.compare_server_default%  s     *-FFFr>   c                     y rb   rD   )r`   conn_uniquesconn_indexesmetadata_unique_constraintsmetadata_indexess        r=   correct_for_autogen_constraintsz+DefaultImpl.correct_for_autogen_constraints.  s     	r>   c                n    |j                   j                  |j                  urt        |d   |      |d<   y y )Nexpr)r5   _type_affinityr   )r`   existingexisting_transfernew_types       r=   cast_for_batch_migratez"DefaultImpl.cast_for_batch_migrate7  s:    ==''x/F/FF(,!&)8)f% Gr>   c                X    ddd}t        |j                  | j                  |            S )zdRender a SQL expression that is typically a server default,
        index expression, etc.

        TF)rV   include_table)rW   ru   )r?   r{   rW   )r`   r*  is_server_defaultr   r   s        r=   render_ddl_sql_exprzDefaultImpl.render_ddl_sql_expr=  s/     (,eD
LLjLI
 	
r>   c                    | j                   S rb   )autogen_column_reflect)r`   	inspectors     r=   _compat_autogen_column_reflectz*DefaultImpl._compat_autogen_column_reflectK  s    ***r>   c                     y rb   rD   )r`   conn_fksmetadata_fkss      r=   correct_for_autogen_foreignkeysz+DefaultImpl.correct_for_autogen_foreignkeysN  s    
 	r>   c                     y)zA hook that is attached to the 'column_reflect' event for when
        a Table is reflected from the database during the autogenerate
        process.

        Dialects can elect to modify the information gathered here.

        NrD   )r`   r6  rn   column_infos       r=   r5  z"DefaultImpl.autogen_column_reflectU  rp   r>   c                     y)zA hook called when :meth:`.EnvironmentContext.run_migrations`
        is called.

        Implementations can set up per-migration-run state here.

        NrD   rr   s    r=   start_migrationszDefaultImpl.start_migrations^  rp   r>   c                @    | j                  d| j                  z          y)zEmit the string ``BEGIN``, or the backend-specific
        equivalent, on the current connection context.

        This is used in offline mode and typically
        via :meth:`.EnvironmentContext.begin_transaction`.

        BEGINNrh   r~   rr   s    r=   
emit_beginzDefaultImpl.emit_beginf  s     	7T%<%<<=r>   c                @    | j                  d| j                  z          y)zEmit the string ``COMMIT``, or the backend-specific
        equivalent, on the current connection context.

        This is used in offline mode and typically
        via :meth:`.EnvironmentContext.begin_transaction`.

        COMMITNrB  rr   s    r=   emit_commitzDefaultImpl.emit_commitp  s     	8d&=&==>r>   c                     y)NFrD   )r`   type_objautogen_contexts      r=   render_typezDefaultImpl.render_typez  s     r>   c                T   t        ||t        j                         dh      \  }}t        |dd       }t        |dd       }t	        |      t	        |      k7  r|j                  d       |j                  | j                         ||t	        |      xs t	        |      t	        |      k7  fS )Nalways)skip)_compare_identity_optionsr   Identitygetattrbooladddifference_updaterT   )r`   metadata_identityinspector_identitydiffignoredmeta_alwaysinspector_alwayss          r=   _compare_identity_defaultz%DefaultImpl._compare_identity_default  s     2  "	
g /4@"#5xF%5 66HHXt99:
 JM$01T:L5MM
 	
r>   c                :    t        d |j                  D              S )Nc              3  4   K   | ]  }|j                     y wrb   )rc   ).0cols     r=   	<genexpr>z/DefaultImpl.create_index_sig.<locals>.<genexpr>  s     7#SXX7s   )r   r   )r`   r   s     r=   create_index_sigzDefaultImpl.create_index_sig  s    7777r>   c                x    t        t        |j                  D cg c]  }|j                   c}            S c c}w rb   )r   sortedr   rc   )r`   r   r^  s      r=   create_unique_constraint_sigz(DefaultImpl.create_unique_constraint_sig  s*     V?#SXX?@AA?s   7c           
     T   |D ci c]  }|j                   | }}t        |      D ]{  }|j                   |v rt        j                  |      }|s*t	        j
                  d|j                   d| j                  dt        j                   d       |j                  |       } y c c}w )Nz@autogenerate skipping metadata-specified expression-based index z
; dialect z under SQLAlchemy z6 can't reflect these indexes so they can't be compared)	rc   r   r   is_expression_indexr   r   r4   sqlalchemy_versiondiscard)r`   r'  r%  r   conn_indexes_by_nameidxiexs          r=   _skip_functional_indexesz$DefaultImpl._skip_functional_indexes  s    3?@a	@@() 	.Cxx//11#6C		.xxl*T-=-=,@ A""-"@"@!A BFF !((-	.  As   B%c                &    |j                  di       S )Ndialect_options)rZ   )r`   reflected_objectkinds      r=    adjust_reflected_dialect_optionsz,DefaultImpl.adjust_reflected_dialect_options  s      ##$5r::r>   )rW   r   rX   Optional[Connection]rY   rQ  r^   Optional[bool]r[   zOptional[TextIO]r]   r@   returnNone)rW   r   rs  zType[DefaultImpl])r   r?   rs  rt  )rj   r0   rs  rQ  )rm   r/   rn   r)   rs  rt  )rs  rq  )
r   Union[Executable, str]r   Optional[dict[str, Any]]r   zSequence[dict]r   r@   rs  zOptional[CursorResult]rb   )r   ru  r   rv  rs  rt  )NFNNNNFNNNNN) r   r?   r   r?   r   rr  r   z%Union[_ServerDefault, Literal[False]]rc   Optional[str]r   Optional[TypeEngine]r   rw  r   rr  r   z$Optional[Union[str, Literal[False]]]r   rw  r   rx  r   zOptional[_ServerDefault]r   rr  r   rr  r   r   rs  rt  )r   r?   r   Column[Any]r   !Optional[Union[str, quoted_name]]rs  rt  )r   r?   r   ry  r   rw  rs  rt  )r   r   rs  rt  )r   r&   rs  rt  )r   r?   r   zUnion[str, quoted_name]r   rz  rs  rt  )rn   r)   rs  rt  )r   r(   r   r   rs  rt  )r   zColumnElement[Any]rs  rt  )T)rn   zUnion[TableClause, Table]r   z
List[dict]r   rQ  rs  rt  )r   r%   rs  rE   )r  rE   r  rE   rs  rQ  )r  rE   r  rE   rs  rQ  )r  ry  r  r%   rs  rQ  )
r$  Set[UniqueConstraint]r%  
Set[Index]r&  r{  r'  r|  rs  rt  )F)r*  r!   r2  rQ  r   r   rs  r?   )r6  r    rs  r   )r9  Set[ForeignKeyConstraint]r:  r}  rs  rt  )rs  rt  )rH  r,   rI  r.   rs  zUnion[str, Literal[False]])r   r(   rs  Tuple[Any, ...])r   r*   rs  r~  )rn  r@   ro  r?   rs  r@   )9rA   rB   rC   __doc__r4   r^   r~   rP   __annotations__rQ   rT   r6   classmethodrd   rh   rk   ro   propertyrs   r   immutabledictr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r"  r(  r/  r3  r7  r;  r5  r?  rC  rF  rJ  rZ  r`  rc  rk  rp  rD   r>   r=   rK   rK   H   s   
 K,5y+A*CM'C&(m(
 .B?A ) 	
 * ( % 
4 $ $#
+		(	16			   7;&(!3!3!3!5'8)'8 4'8 $	'8
 '8 
 '8X 7;+#+ 4+ 
	+ $(@E"&* $(,8=*..2<@,015nn n !	n
 >n n $n n &n 6n (n ,n ":n *n !/n  !n" 
#nh 59	FF F 2	F
 
F !%	GG G 	G 
G41 59	

 0
 2	

 

3.
42342 !	$($ $ 	$
 
$L$L &9?	, &5;	B +>D	 G+ ! &;	
 % 
 >C
!
6:
JM
	
++ 0 
	>?"5C	#

88B%B	B."; .;69;	;r>   rK   )	metaclassc           
        t        j                  |       }t        j                  |      }t               t               	 	 	 	 	 	 	 	 dfd} |||t        j                  |      t        |      j                  |             t         j                  r6 |t        | di       t        |di       |j                  t        |di              fS )Nc                   t        |      j                  
      D ]c  }| j                  |      }|j                  |      }||k7  s+|j                  |      }||k(  r	j                  |       Sj                  |       e y rb   )set
differencerZ   rR  )	meta_dict	insp_dictdefault_dictattrsattr
meta_value
insp_valuedefault_valuerV  ignored_attrrM  s           r=   check_dictsz._compare_identity_options.<locals>.check_dicts  sx     J))$/ 	#D"t,J"t,JZ' , 0 0 6. $$T*HHTN	#r>   dialect_kwargs)r  Mapping[str, Any]r  r  r  r  r  zIterable[str])r   _get_identity_options_dictr  unionidentity_has_dialect_kwargsrP  r  )	metadata_ioinspector_io
default_iorM  meta_dinsp_dr  rV  r  s	      `   @@r=   rN  rN    s     33K@F33LAF5D5L#$#$# (# 	#  ..z:F&!	 .. 	K!126L"2B7%%L"2B7		
 r>   )r  -Union[schema.Identity, schema.Sequence, None]r  r  r  z'Union[schema.Identity, schema.Sequence]rM  zSet[str])B
__future__r   collectionsr   r   typingr   r   r   r   r	   r
   r   r   r   r   r   r   r   
sqlalchemyr   r   r    r   r   r   r   r   sqlalchemy.enginer   r   sqlalchemy.engine.cursorr   sqlalchemy.engine.reflectionr    sqlalchemy.sqlr!   r"   sqlalchemy.sql.elementsr#   r$   sqlalchemy.sql.schemar%   r&   r'   r(   r)   r*   sqlalchemy.sql.selectabler+   sqlalchemy.sql.type_apir,   r-   autogenerate.apir.   operations.batchr/   r0   r5   r2   r7   r  rE   rK   rN  rD   r>   r=   <module>r     s    " " 	                    ,)56,)53,0:++652$116
t 
 (*$ )	HD	Eq	;H q	;h/>/?/ 8/ 	/r>   