
    gY                        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 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   G d d ejB                        Z" G d! d"ejB                        Z# G d# d$ejH                        Z% G d% d&ejB                        Z& G d' d(ejH                        Z' G d) d*ejB                        Z( G d+ d,ejB                        Z) G d- d.ejT                  e)      Z+ G d/ d0ejB                        Z, G d1 d2ejH                        Z-y)3    N   )testing   )assert_raises)config)engines)eq_)fixtures)is_not_none)is_true)ne_)provide_metadata)expect_raises)expect_raises_message)requirements) set_default_schema_on_connection)Column)Table   )	bindparam)dialects)event)exc)Integer)literal_column)select)String)Compiled)inspect_getfullargspecc                       e Zd ZdZd Zy)PingTestTc                     t         j                  j                         5 }t        t         j                  j                  j                  |j                  j                               d d d        y # 1 sw Y   y xY wN)r   dbconnectr   dialectdo_ping
connectiondbapi_connection)selfconns     d/var/www/html/AdoubleTech/venv/lib/python3.12/site-packages/sqlalchemy/testing/suite/test_dialect.pytest_do_pingzPingTest.test_do_ping+   sS    ZZ! 	T

""**4??+K+KL	 	 	s   AA//A8N)__name__
__module____qualname____backend__r-        r,   r!   r!   (   s    Kr3   r!   c                   d    e Zd ZdZd Z ej                   e e                   d        Zd Z	y)ArgSignatureTesta  test that all visit_XYZ() in :class:`_sql.Compiler` subclasses have
    ``**kw``, for #8988.

    This test uses runtime code inspection.   Does not need to be a
    ``__backend__`` test as it only needs to run once provided all target
    dialects have been imported.

    For third party dialects, the suite would be run with that third
    party as a "--dburi", which means its compiler classes will have been
    imported by the time this test runs.

    c               #     K   t         j                  D ],  } | j                  d      rt        j                  d| z         . t
        g}|r8|j                  d      }|j                  |j                                | |r7y y w)N_zsqlalchemy.dialects.%sr   )	r   __all__
startswith	importlibimport_moduler   popextend__subclasses__)dstackclss      r,   _all_subclassesz ArgSignatureTest._all_subclasses@   su     !! 	FA<<$''(@1(DE	F 
))A,CLL++-.I s   %BABB)paramsc              #   (   K   |j                    y wr#   )param)r*   requests     r,   all_subclasseszArgSignatureTest.all_subclassesL   s     mms   c           	          |}|j                   D ]R  }|j                  d      st        ||      }t        |      }t	        |j
                  d|j                   d| d       T y )Nvisit_zCompiler visit method .z:() does not accommodate for **kw in its argument signature)__dict__r9   getattrr   r   varkwr.   )r*   rG   rA   kmethinsps         r,    test_all_visit_methods_accept_kwz1ArgSignatureTest.test_all_visit_methods_accept_kwP   sg     		A||H%sA-d3JJ,S\\N!A3 ?I I		r3   N)
r.   r/   r0   __doc__rB   r   fixturelistrG   rQ   r2   r3   r,   r5   r5   2   s8    
 W__D!234 5r3   r5   c                   R    e Zd ZdZdZdZed        Zej                  d        Z
d Zy)ExceptionTestzTest basic exception wrapping.

    DBAPIs vary a lot in exception behavior so to actually anticipate
    specific exceptions from real round trips, we need to be conservative.

    eachTc                 h    t        d|t        dt        dd      t        dt        d                   y )N	manual_pkidTFprimary_keyautoincrementdata2   r   r   r   r   rA   metadatas     r,   define_tableszExceptionTest.define_tablesk   s,    4d%H66":&		
r3   c           	         t         j                  j                         5 }|j                         }|j	                  | j
                  j                  j                         ddd       t        t        j                  |j                  | j
                  j                  j                         ddd       |j                          d d d        y # 1 sw Y   y xY w)Nr   d1rZ   r^   )r   r$   r%   beginexecutetablesrY   insertr   r   IntegrityErrorrollback)r*   r+   transs      r,   test_integrity_errorz"ExceptionTest.test_integrity_errort   s    YY  	DJJLELL%%,,.q$0G ""%%,,.$'	 NN	 	 	s   B#CCc                 v   t         j                  j                         5 }	 |j                  t	        t        d                   J # t        j                  $ r7}t        |      }t        |j                        t        |      v sJ Y d }~nd }~ww xY wt        |t              sJ 	 d d d        y # 1 sw Y   y xY w)Nu   méil)r   r$   r%   rh   r   r   r   
DBAPIErrorstrorig
isinstance)r*   r+   errerr_strs       r,   test_exception_with_non_asciiz+ExceptionTest.test_exception_with_non_ascii   s    YY  	,D1 VN7$;<=u>> 1c(388}C0001
 gs+++	, 	, 	,s.   B/%AB-BB/BB//B8N)r.   r/   r0   rR   run_deletesr1   classmethodrc   r   $duplicate_key_raises_integrity_errorrn   rv   r2   r3   r,   rV   rV   _   sD     KK
 
 66 7 ,r3   rV   c                      e Zd ZdZdZd Zd Zd Zd Ze	j                  j                  d        Ze	j                  j                  e	j                  j                  d               Ze	j                  j                  d	        Zy
)IsolationLevelTestTisolation_levelc                     t        j                  t              }|d   }|d   }t        |      j	                  d|g      }|r|j                         S t        j                  d       y )Ndefault	supported
AUTOCOMMITz(no non-default isolation level available)r   get_isolation_levelsr   set
differencer<   	skip_test)r*   levelsr   r   ss        r,    _get_non_default_isolation_levelz3IsolationLevelTest._get_non_default_isolation_level   s\    226:#;'		N%%|W&=>557NGHr3   c                     t        t        j                  j                  j                  t        j                  t              d          y )Nr   )r	   r   r$   r&   default_isolation_levelr   r   )r*   s    r,   test_default_isolation_levelz/IsolationLevelTest.test_default_isolation_level   s0    II55--f5i@	
r3   c                    | j                         }t        j                  j                         5 }|j	                         }t        ||       |j                  |       t        |j	                         |       |j                  j                  |j                  j                         t        |j	                         |       d d d        y # 1 sw Y   y xY w)Nr|   )r   r   r$   r%   get_isolation_levelr   execution_optionsr	   r&   reset_isolation_levelr(   r)   )r*   non_defaultr+   existings       r,    test_non_default_isolation_levelz3IsolationLevelTest.test_non_default_isolation_level   s    ;;=YY  	6D//1H+&"";"?((*K8LL..00 ((*H5	6 	6 	6s   BC

Cc                 R   t        j                  t              }|d   }t        |      j	                  dg      D ]  }t        j
                  j                         5 }|j                  |       t        |j                         |       |j                         }|j                          t        |j                         |       d d d        t        j
                  j                         5 }t        |j                         |d          d d d         y # 1 sw Y   PxY w# 1 sw Y   xY w)Nr   r   r|   r   )r   r   r   r   r   r$   r%   r   r	   r   rg   rl   )r*   r   
all_levelslevelr+   rm   s         r,   test_all_levelsz"IsolationLevelTest.test_all_levels   s    226:K(
_//? 	E""$ 7&&u&=D,,.6

 D,,.67 ""$ ,,.9% 	7 7 s   A'D(DD	D&	c                    |}t        t        j                  ddd|j                  j                  ddj                  t        j                  t              d               5  |j                  d       ddd       y# 1 sw Y   yxY w)	z4test for the new get_isolation_level_values() methodInvalid value 'FOO3' for isolation_level. Valid isolation levels for '' are , r   r|   N)
r   r   ArgumentErrorr&   namejoinr   r   r   r   )r*   connection_no_transr(   s      r,   #test_invalid_level_execution_optionz6IsolationLevelTest.test_invalid_level_execution_option   s~     )
" ""''		 55f=kJ
 	@ (((?	@ 	@ 	@s   #A??Bc                 4    |t        d            }t        t        j                  ddd|j                  j
                  ddj                  t        j                  t              d               5  |j                          d	d	d	       y	# 1 sw Y   y	xY w)
ztest for the new get_isolation_level_values() method
        and support for the dialect-level 'isolation_level' parameter.

        r   r|   optionsr   r   r   r   r   N)dictr   r   r   r&   r   r   r   r   r   r%   )r*   testing_engineengs      r,   test_invalid_level_engine_paramz2IsolationLevelTest.test_invalid_level_engine_param   sz     T%%@A"   		 55f=kJ
 	 KKM	 	 	s   4BBc                 J   t        j                  t              }|d   }t        t	        |d         j                  |dg            d   } |d|i      }|j                         5 }t        |j                         |       d d d        |j                         5 }|j                  |       t        |j                         |       d d d        |j                         5 }t        |j                         |       d d d        y # 1 sw Y   xY w# 1 sw Y   IxY w# 1 sw Y   y xY w)Nr   r   r   r   r}   r   r|   )
r   r   r   sortedr   r   r%   r	   r   r   )r*   r   r   r   r   er+   s          r,   %test_dialect_user_setting_is_restoredz8IsolationLevelTest.test_dialect_user_setting_is_restored   s   226:#F;'(33Wl4KL 		 $5y#ABYY[ 	7D((*I6	7 YY[ 	5D""7";((*G4	5 YY[ 	7D((*I6	7 	7	7 	7	5 	5	7 	7s$   %D-DDD
DD"N)r.   r/   r0   r1   __requires__r   r   r   r   r   requiresget_isolation_level_valuesr   #dialect_level_isolation_level_paramr    independent_readonly_connectionsr   r2   r3   r,   r{   r{      s    K'L
I
6$, 00@ 1@$ 0099 : 1* 667 77r3   r{   c                       e Zd ZdZdZdZed        Zd Zd Z	d Z
d Zej                  j                   ej                  d	dd
g      d               Zy)AutocommitIsolationTestrW   )
autocommitTc                 l    t        d|t        dt        dd      t        dt        d            d       y )	N
some_tablerZ   TFr[   r^   r_   )test_needs_acidr`   ra   s     r,   rc   z%AutocommitIsolationTest.define_tables  s/    4d%H66":& 	
r3   c                 "   |j                         }|j                  | j                  j                  j	                         ddd       |j                          t        |j                  t        | j                  j                  j                  j                              |rdnd        |j                          |j                         5  |j                  | j                  j                  j                                d d d        y # 1 sw Y   y xY w)Nr   z	some datarf   )rg   rh   ri   r   rj   rl   r	   scalarr   crZ   delete)r*   r+   r   rm   s       r,   _test_conn_autocommitsz.AutocommitIsolationTest._test_conn_autocommits(  s    

KK""))+A{-K	
 	KKt{{5577::;<A	
 	ZZ\ 	:LL//6689	: 	: 	:s   4DDc                     |}|j                  d      }| j                  |d       |j                  j                  |j                  j
                         | j                  |d       y )Nr   r|   TF)r   r   r&   r   r(   r)   )r*   r   r+   c2s       r,   test_autocommit_onz*AutocommitIsolationTest.test_autocommit_on8  sV    "##L#A##B-


(()G)GH##D%0r3   c                 ,    |}| j                  |d       y )NF)r   r*   r   r+   s      r,   test_autocommit_offz+AutocommitIsolationTest.test_autocommit_offA  s    "##D%0r3   c                     |}|j                  d      }| j                  |d       |j                  t        j                  t              d          | j                  |d       y )Nr   r|   Tr   F)r   r   r   r   r   r   s      r,   .test_turn_autocommit_off_via_default_iso_levelzFAutocommitIsolationTest.test_turn_autocommit_off_via_default_iso_levelE  sg     #%%l%C##D$/(==fE 	 	

 	##D%0r3   use_dialect_settingFc                    |r |ddi      }n |       j                  d      }t        j                  t              }|d   }|j	                         5 }| j                  |d       ddd       |j	                         5 }|j                  |       | j                  |d       ddd       |j	                         5 }| j                  |d       ddd       y# 1 sw Y   rxY w# 1 sw Y   AxY w# 1 sw Y   yxY w)	ztest #10147r}   r   r   r|   r   TNF)r   r   r   r   r%   r   )r*   r   r   r   r   r   r+   s          r,   #test_dialect_autocommit_is_restoredz;AutocommitIsolationTest.test_dialect_autocommit_is_restoredS  s     (9<'HIA 22 , 3 A 226:#YY[ 	4D''d3	4 YY[ 	5D""7";''e4	5 YY[ 	4D''d3	4 	4	4 	4	5 	5	4 	4s$   C?%C$<C0C!$C-0C9N)r.   r/   r0   rw   r   r1   rx   rc   r   r   r   r   r   r   r   	variationr   r2   r3   r,   r   r     ss    K"LK
 
: 111 66W,tUm<4 = 74r3   r   c                       e Zd Zed        Zy)EscapingTestc                 D   | j                   }t        d|t        dt        d                  }|j	                  t
        j                         t
        j                  j                         5 }|j                  |j                         t        d             |j                  |j                         t        d             t        |j                  t        |j                  j                        j!                  |j                  j                  t#        d      k(              d       t        |j                  t        |j                  j                        j!                  |j                  j                  t#        d      k(              d       d	d	d	       y	# 1 sw Y   y	xY w)
z|test that the DBAPI accommodates for escaped / nonescaped
        percent signs in a way that matches the compiler

        tr^   r_   zsome % value)r^   zsome %% other valuez'some % value'z'some %% other value'N)rb   r   r   r   creater   r$   rg   rh   rj   r   r	   r   r   r   r^   wherer   )r*   mr   r+   s       r,   test_percent_sign_round_tripz)EscapingTest.test_percent_sign_round_tripq  s$    MM#q&45	YY__ 	$LLT~%>?LLT/D%EF13388$**N3C$DD
  13388$**N3J$KK
 &	 	 	s   *D#FFN)r.   r/   r0   r   r   r2   r3   r,   r   r   p  s     r3   r   c                   ,    e Zd ZdZdZd Zd Zd Zd Zy) WeCanSetDefaultSchemaWEventsTestT)default_schema_name_switchc                     t         j                  j                  j                  }t	        j
                         }|j                         5  	 d d d        t        |j                  j                  |       y # 1 sw Y   *xY wr#   )r   r$   r&   default_schema_namer   r   r%   r	   )r*   r   r   s      r,   test_control_casez2WeCanSetDefaultSchemaWEventsTest.test_control_case  s^    $ii//CC$$&[[] 		 	CKK++-@A	 	s   	A44A=c                    t         j                  j                  j                  }t	        j
                         }t        j                  |d      d        }|j                         5 }|j                  j                  |      }t        |t         j                         d d d        t        |j                  j                  |       y # 1 sw Y   *xY w)Nr%   c                 B    t        t        | t        j                         y r#   r   r   test_schemar)   connection_records     r,   
on_connectzMWeCanSetDefaultSchemaWEventsTest.test_wont_work_wo_insert.<locals>.on_connect      ,(&*<*<r3   )r   r$   r&   r   r   r   r   listens_forr%   _get_default_schema_namer	   r   )r*   r   r   r   r+   what_it_should_bes         r,   test_wont_work_wo_insertz9WeCanSetDefaultSchemaWEventsTest.test_wont_work_wo_insert  s    $ii//CC$$&			3		*	 
+	
 [[] 	7d # D DT J!6#5#56	7 	CKK++-@A		7 	7s   %6CCc                 x   t        j                         }t        j                  |dd      d        }|j	                         5 }|j
                  j                  |      }t        |t        j                         d d d        t        |j
                  j                  t        j                         y # 1 sw Y   8xY w)Nr%   Trj   c                 B    t        t        | t        j                         y r#   r   r   s     r,   r   zRWeCanSetDefaultSchemaWEventsTest.test_schema_change_on_connect.<locals>.on_connect  r   r3   )r   r   r   r   r%   r&   r   r	   r   r   r   )r*   r   r   r+   r   s        r,   test_schema_change_on_connectz>WeCanSetDefaultSchemaWEventsTest.test_schema_change_on_connect  s    $$&			3	$	7	 
8	
 [[] 	7d # D DT J!6#5#56	7 	CKK++V-?-?@		7 	7s   6B00B9c                 "   t        j                         }t        j                  |dd      d        }|j	                         5 }|j                         }|j                  j                  |      }t        |t        j                         |j                          |j                  j                  |      }t        |t        j                         d d d        t        |j                  j                  t        j                         y # 1 sw Y   8xY w)Nr%   Tr   c                 B    t        t        | t        j                         y r#   r   )r)   args     r,   r   z\WeCanSetDefaultSchemaWEventsTest.test_schema_change_works_w_transactions.<locals>.on_connect  r   r3   )r   r   r   r   r%   rg   r&   r   r	   r   r   rl   r   )r*   r   r   r+   rm   r   s         r,   'test_schema_change_works_w_transactionszHWeCanSetDefaultSchemaWEventsTest.test_schema_change_works_w_transactions  s    $$&			3	$	7	 
8	
 [[] 	7dJJLE # D DT J!6#5#56NN # D DT J!6#5#56	7 	CKK++V-?-?@	7 	7s   BDDN)	r.   r/   r0   r1   r   r   r   r   r   r2   r3   r,   r   r     s$    K2LBB"AAr3   r   c                       e Zd Zy)&FutureWeCanSetDefaultSchemaWEventsTestN)r.   r/   r0   r2   r3   r,   r   r     s     	r3   r   c                       e Zd ZdZ ej
                  dddddddd	d
ddddddddddddd      Zeej                  j                  d               Z
ej                  d        Zed        Zed        Zy)DifficultParametersTestT)boring)zper cent)z
per % cent)z%percent)zpar(ens))zpercent%(ens)yah)zcol:ons)_starts_with_underscore)zdot.s)zmore :: %colons%)_name)___name)z[BracketsAndCase])	42numbers)zpercent%signs)z
has spaces)z	/slashes/)zmore/slashes)zq?marks)1param)z1col:on	paramname)argnamesc                 V   |}t        d|t        dt        d      t        |t        d      d            }|j	                  |       |j                  |j                         j                  dd|d	i             t        |j                  |         j                  |j                  |   d	k(        }t        |j                  |      d	       t        |j                  |         j                  |j                  |   t        |      k(        }|j                  ||d	i      j                         }t        |j                  |   d	       t        |j                  |         j                  |j                  |   j!                  d	d
g            }|j                  |      j                         }y )Nr   rZ   T)r\   r_   F)nullabler   z	some namezsome other_name)r   r   r   r   r   rh   rj   valuesr   r   r   r	   r   r   first_mappingin_)r*   r   r(   rb   r   r   stmtrows           r,   !test_round_trip_same_named_columnz9DifficultParametersTest.test_round_trip_same_named_column  sg   
 4d34e4	
 	
 	188:,,dAt[-IJK acc$i &&qss4yK'?@Jd#[1 acc$i &&qss4yIdO'CD  k':;AAC 	CLL, acc$i &&CCIMM;(9:;
   &,,.r3   c              #   $  K   t        d|t        dt              t        dt        d            t        dt        d                  }|j	                  |       |j                  |j                         dddd	d
ddd	dddd	dddd	g       | y w)Nmytablemyidr   r_   descr   aa_desc)r  r   r  r   bb_descr   r   c_desc   r?   d_desc)r   r   r   r   r   rh   rj   )r*   rb   r(   r  s       r,   multirow_fixturez(DifficultParametersTest.multirow_fixture  s     67#66":&66":&
 	z"NNC:C:C:C:		
 s   BBc                     |}t        |j                  j                        j                  |j                  j                  t        |d      k(        }|j                  ||di      }t        |d       y )Nxvaluer   r   )r   r   r  r   r   r   r   r	   r*   r   r(   r  tbl1r   ress          r,    test_standalone_bindparam_escapez8DifficultParametersTest.test_standalone_bindparam_escape5  s_      dffkk"((FFKK9Yc::
 y#&67Cr3   c           	      n   |}t        |j                  j                        j                  |j                  j                  j                  t        |ddg                  j                  |j                  j                        }|j                  ||ddgi      j                         }t        |ddg       y )Nr  r  r  r?   r   r	  )r   r   r  r   r   r   r   order_byscalarsallr	   r  s          r,   *test_standalone_bindparam_escape_expandingzBDifficultParametersTest.test_standalone_bindparam_escape_expanding@  s      466;;U466;;??9YsCj#IJKXdffkk" 	   	C:'>?CCEC!Qr3   N)r.   r/   r0   r1   r   combinationstough_parametersr   r   unusual_column_name_charactersr   rS   r  r  r  r2   r3   r,   r   r     s    K+w++$-2 77$/ 8 $/L __ ,    r3   r   c                   l    e Zd ZdZdZed        Zej                  d        Z	d Z
d Zd Zd Zd	 Zd
 Zy)ReturningGuardsTestz=test that the various 'returning' flags are set appropriatelyTc                 h    t        d|t        dt        dd      t        dt        d                   y )Nr   rZ   TFr[   r^   r_   r`   ra   s     r,   rc   z!ReturningGuardsTest.define_tablesT  s,    4d%H66":&		
r3   c                 B    | j                   j                  fd}|S )Nc           
         | j                  j                  j                        } |r|stt        t        j
                  dj                  j                   dj                  j                   d      5  j                  | |dddi|dddi|d	dd
ig      }d d d        y j                  | |dddi|dddi|d	dd
ig      }t        |j                         g d       y |s9t        t        j                        5  j                  | |dddi       d d d        y j                  | |dddi      }t        |j                         dg       y # 1 sw Y   y xY w# 1 sw Y   y xY w)NzDialect z\+zW with current server capabilities does not support .*RETURNING when executemany is usedr   r^   re   r   d2r   d3)r   )r   )r   r#  )	returningr   rZ   r   r   StatementErrorr&   r   driverrh   r	   r  r   rp   )r   executemanyid_param_nameexpect_successresultr(   r   s        r,   goz(ReturningGuardsTest.run_stmt.<locals>.goa  s   >>!##&&)D% /**#J$6$6$;$;#<B%--445 6?@  ",!3!3 !.64 @!.64 @!.64 @"   (//*Avt<*Avt<*Avt<F 

&89% 's~~6 "** =!VT"B 
 (//}a>F 

tf-K : s   4"E
8E
EE)ri   r   )r*   r(   r+  r   s    ` @r,   run_stmtzReturningGuardsTest.run_stmt]  s    KKMM-	.^ 	r3   c                     | j                   j                  }|j                         } ||dd|j                  j                         y )NFrZ   )ri   r   rj   r&   insert_returningr*   r(   r,  r   r   s        r,   test_insert_singlez&ReturningGuardsTest.test_insert_single  s4    KKMMxxzudJ$6$6$G$GHr3   c                     | j                   j                  }|j                         } ||dd|j                  j                         y )NTrZ   )ri   r   rj   r&   insert_executemany_returningr/  s        r,   test_insert_manyz$ReturningGuardsTest.test_insert_many  s7    KKMMxxz$j00MM	
r3   c                 D   | j                   j                  }|j                  |j                         dddddddddg       |j	                         j                  |j                  j                  t        d      k(        } ||d	d|j                  j                         y 
Nr   re   rf   r   r!  r   r"  b_idF)ri   r   rh   rj   updater   r   rZ   r   r&   update_returningr/  s        r,   test_update_singlez&ReturningGuardsTest.test_update_single      KKMMHHJ$'$'$'	
 xxz)F*; ;<ufj&8&8&I&IJr3   c                 D   | j                   j                  }|j                  |j                         dddddddddg       |j	                         j                  |j                  j                  t        d      k(        } ||d	d|j                  j                         y 
Nr   re   rf   r   r!  r   r"  r6  T)ri   r   rh   rj   r7  r   r   rZ   r   r&   update_executemany_returningr/  s        r,   test_update_manyz$ReturningGuardsTest.test_update_many      KKMMHHJ$'$'$'	
 xxz)F*; ;<$
 2 2 O O	
r3   c                 D   | j                   j                  }|j                  |j                         dddddddddg       |j	                         j                  |j                  j                  t        d      k(        } ||d	d|j                  j                         y r5  )ri   r   rh   rj   r   r   r   rZ   r   r&   delete_returningr/  s        r,   test_delete_singlez&ReturningGuardsTest.test_delete_single  r:  r3   c                 D   | j                   j                  }|j                  |j                         dddddddddg       |j	                         j                  |j                  j                  t        d      k(        } ||d	d|j                  j                         y r<  )ri   r   rh   rj   r   r   r   rZ   r   r&   delete_executemany_returningr/  s        r,   test_delete_manyz$ReturningGuardsTest.test_delete_many  r?  r3   N)r.   r/   r0   rR   r1   rx   rc   r   rS   r,  r0  r3  r9  r>  rB  rE  r2   r3   r,   r  r  O  sV    GK
 
 __2 2hI
K 
$K 
r3   r  ).r:    r   r   r   r   r	   r
   r   r   r   r   
assertionsr   r   r   	provisionr   schemar   r   r   r   r   r   r   r   r   r   sql.compilerr   utilr   TestBaser!   r5   
TablesTestrV   r{   r   r   r   FutureEngineMixinr   r   r  r2   r3   r,   <module>rO     s#              & . ! 8           $ *x   *x(( *Z5,H'' 5,p}7** }7@V4h11 V4r8$$ B@Ax'8'8 @AF	 @	rh// rjU
(-- U
r3   