
    -h                        S SK r S SKrS SKrSSKJr  SSKJr  SSKJr  SSKJr  SSKJ	r	  SSKJ
r
  SS	KJr  SS
KJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSK J!r!  SSKJ"r"  SSKJ#r#  Su  r$r% " S S \	RL                  5      r' " S! S"\'5      r( " S# S$\	RL                  5      r) " S% S&\	RL                  5      r* " S' S(\'5      r+ " S) S*\	RX                  5      r- " S+ S,\	RX                  5      r. " S- S.\	RL                  5      r/ " S/ S0\	R`                  5      r1 " S1 S2\	RL                  5      r2 " S3 S4\	RL                  5      r3S5r4g)6    N   )config)engines)eq_)expect_warnings)fixtures)is_)get_temp_table_name)temp_table_keyword_args)Column)Table   )event)
ForeignKey)func)Identity)inspect)Integer)MetaData)String)testing)types)DDL)Index)quoted_name)BLANK_SCHEMA)is_false)is_true)NNc                   $    \ rS rSr\S 5       rSrg)OneConnectionTablesTest*   c                     [         R                  R                  R                  (       a,  SSKJn  [        R                  " [        UR                  SS9S9$ [         R                  $ )Nr   )poolclass)	poolclassscope)options)r   requirementsindependent_connectionsenabled
sqlalchemyr#   r   testing_enginedict
StaticPooldb)clsr#   s     }C:\Users\ROHAN GUPTA\OneDrive\Desktop\mathbuddy-assessment\venv\Lib\site-packages\sqlalchemy/testing/suite/test_reflection.py
setup_bind"OneConnectionTablesTest.setup_bind+   sI    
 66>>'))tgF  99     N)__name__
__module____qualname____firstlineno__classmethodr2   __static_attributes__r5   r4   r1   r    r    *   s     r4   r    c                   d   \ rS rSrSr\S 5       r\S 5       r\S 5       r\S 5       r	S r
\R                  R                  S 5       r\R                  " S	S
5      \R                  R                   S 5       5       r\R                  R$                  S 5       r\R                  R$                  \R                  R(                  \R                  R*                  S 5       5       5       r\R                  " S	S5      \R                  R                   \R                  R                  S 5       5       5       rSrg)HasTableTest:   Tc                    [        SU[        S[        SS9[        S[        S5      5      5        [        R
                  R                  R                  (       a;  [        SU[        S[        SS9[        S[        S5      5      [        R                  S9  [        R
                  R                  (       a  U R                  U5        [        R
                  R                  R                  (       a  U R                  U5        g g )	N
test_tableidTprimary_keydata2   test_table_sschema)r   r   r   r   r   requiresschemasr*   r   test_schemaview_reflectiondefine_viewshas_temp_tabledefine_temp_tablesr0   metadatas     r1   define_tablesHasTableTest.define_tables=   s    4d366":&		
 ##++tW$7vvbz*)) ++X&**22""8, 3r4   c                    Sn[         R                  " US[        U5      5        [         R                  " US[        S5      5        [        R                  R
                  R                  (       a{  S[        R                  < S[        R                  < S3n[         R                  " US[        U5      5        [         R                  " US[        S[        R                  -  5      5        g g )	Nz1CREATE VIEW vv AS SELECT id, data FROM test_tableafter_createbefore_dropzDROP VIEW vvCREATE VIEW z.vv AS SELECT id, data FROM z.test_table_szDROP VIEW %s.vv)	r   listenr   r   rI   rJ   r*   r   rK   )r0   rQ   querys      r1   rM   HasTableTest.define_viewsS   s    CX~s5z:X}c..AB##+++ &&&&  LL>3u:>LL%););<= ,r4   c                 d    [        [        [        R                  S[        R                  < 35      $ )N	user_tmp_)r
   r   r/   ident)r0   s    r1   temp_table_nameHasTableTest.temp_table_namei   s!    "FII>
 	
r4   c                 6   [        [        [        R                  5      nU R                  5       n[	        UU[        S[        R                  SS9[        S[        R                  " S5      5      40 UD6n[        R                  R                  R                  (       a~  [        R                  R                  R                  (       aT  [        R                  " US[!        S[        R"                  -  5      5        [        R                  " US[!        S	5      5        g g g )
NrA   TrB   namerE   rU   =create temporary view user_tmp_v as select * from user_tmp_%srV   drop view user_tmp_v)r   r   r/   r^   r   r   saINTVARCHARr   rI   rL   r*   temporary_viewsr   rX   r   r]   r0   rQ   kw
table_nameuser_tmps        r1   rO   HasTableTest.define_temp_tableso   s    $VVYY7((*
4T262::b>*	

 
 ,,44  0088LL028,,? LL=#6L2MN 9 5r4   c                    [         R                  R                  5        n[        [         R                  R                  R                  US5      5        [        [         R                  R                  R                  US5      5        [        [         R                  R                  R                  US5      5        S S S 5        g ! , (       d  f       g = f)Nr@   rF   nonexistent_table)r   r/   beginr   dialect	has_tabler   selfconns     r1   test_has_tableHasTableTest.test_has_table   s|    YY__$FII%%//lCDVYY&&00~FGVYY&&007JKL s   BC
Cc           	         [         R                  R                  5        n[        [         R                  R                  R                  US[         R                  S95        [        [         R                  R                  R                  US[         R                  S95        [        [         R                  R                  R                  US[         R                  S95        S S S 5        g ! , (       d  f       g = f)Nr@   rG   rF   rn   )r   r/   ro   r   rp   rq   rK   r   rr   s     r1   test_has_table_schema"HasTableTest.test_has_table_schema   s    YY__$		!!++,v/A/A , 
 		!!++.1C1C , 
 		!!++-f6H6H ,  s   CC))
C7oraclezJper #8700 this remains at its previous behavior of not working within 1.4.c                 N    [        U5      n[        UR                  S5      5        g Nvvr   r   rq   rs   
connectioninsps      r1   test_has_table_view HasTableTest.test_has_table_view   s     z"t$%r4   c                 n    [        U5      nU R                  5       n[        UR                  U5      5        g N)r   r^   r   rq   )rs   r   r   r^   s       r1   test_has_table_temp_table&HasTableTest.test_has_table_temp_table   s+    z"..0/0r4   c                 N    [        U5      n[        UR                  S5      5        g N
user_tmp_vr~   r   s      r1   test_has_table_temp_view%HasTableTest.test_has_table_temp_view   s     z"|,-r4   zIper #8700 this remains at its previous behavior of not working within 1.4c                 l    [        U5      n[        UR                  S[        R                  5      5        g r|   )r   r   rq   r   rK   r   s      r1   test_has_table_view_schema'HasTableTest.test_has_table_view_schema   s'     z"tV%7%789r4   r5   N)r6   r7   r8   r9   __backend__r:   rR   rM   r^   rO   ru   r   rI   rJ   rx   fails_onviewsr   rN   r   rL   rg   r   r   r;   r5   r4   r1   r=   r=   :   ss   K- -*  * 
 

 O O0M  $ 	
 & & $$1 %1
 $$%%%%. & & %. 	
 :  :r4   r=   c                   f    \ rS rSrSr\S 5       rS r\R                  R                  S 5       rSrg)HasIndexTest   Tc                    [        SU[        S[        SS9[        S[        S5      5      5      n[	        SUR
                  R                  5        [        R                  R                  R                  (       a\  [        SU[        S[        SS9[        S[        S5      5      [        R                  S9n[	        S	UR
                  R                  5        g g )
Nr@   rA   TrB   rD   rE   my_idxrG   my_idx_s)r   r   r   r   r   crD   r   rI   rJ   r*   r   rK   )r0   rQ   tts      r1   rR   HasIndexTest.define_tables   s    4d366":&	
 	h		"##++tW$7vvbz*))B *bddii( ,r4   c                    [         R                  R                  5        n[         R                  R                  R	                  USS5      (       d   e[         R                  R                  R	                  USS5      (       a   e[         R                  R                  R	                  USS5      (       a   e[         R                  R                  R	                  USS5      (       a   e S S S 5        g ! , (       d  f       g = f)Nr@   r   r   rn   nonexistent_idx)r   r/   ro   rp   	has_indexrr   s     r1   test_has_indexHasIndexTest.test_has_index   s    YY__$99$$..t\8LLLLyy((22lJ    yy((22)8    yy((22l$5     s   C	C22
D c                 n   [         R                  R                  5        n[         R                  R                  R	                  USS[         R
                  S9(       d   e[         R                  R                  R	                  USS[         R
                  S9(       a   e[         R                  R                  R	                  USS[         R
                  S9(       a   e[         R                  R                  R	                  USS[         R
                  S9(       a   e S S S 5        g ! , (       d  f       g = f)Nr@   r   rG   r   rn   nonexistent_idx_s)r   r/   ro   rp   r   rK   rr   s     r1   test_has_index_schema"HasIndexTest.test_has_index_schema   s   YY__$99$$..lJv7I7I /    yy((22lHV5G5G 3    yy((22#))	 3    yy((22#))	 3     s   C=D&&
D4r5   N)r6   r7   r8   r9   r   r:   rR   r   r   rI   rJ   r   r;   r5   r4   r1   r   r      s>    K) )&  r4   r   c                      \ rS rSrSrSr\S 5       rS r\S 5       r	\\
R                  R                  S 5       5       r\S 5       r\S	 5       r\S
 5       r\S 5       r\\
R                  R$                  S 5       5       r\\
R                  R(                  S 5       5       r\\
R                  R,                  S 5       5       rSrg)QuotedNameArgumentTest   onceTc                 ,   [        SU[        S[        5      [        S[        S5      5      [        S[        S5      5      [        S[        5      [        R
                  " SSS9[        R                  " S	S5      [        R                  " SS
S9[        R                  " S/S/SS9[        R                  " SSS9SSS9  [        R                  R                  R                  (       a  [        SU[        S[        5      [        S[        S5      5      [        S[        S5      5      [        S[        5      [        R
                  " SSS9[        R                  " SS5      [        R                  " SSS9[        R                  " S/S/SS9[        R                  " SSS9SSS9  [        SU[        S[        SS9[        S[        5      SS9  [        R                  R                  R                  (       Ga#  [        R                  R                  R                  (       a  SS/nOS/nU H  nS[        R                   R"                  R$                  R'                  SU-  5      < S[        R                   R"                  R$                  R'                  U5      < 3n[(        R*                  " US[-        U5      5        [(        R*                  " US [-        S![        R                   R"                  R$                  R'                  SU-  5      -  5      5        M     g g )"Nquote ' onerA   ra   rE   rD   
related_idzpk quote ' onera   zix quote ' onezuq quote' onez
related.idzfk quote ' onezname != 'foo'zck quote ' onezquote ' one commentT)commenttest_needs_fkquote " twozpk quote " twozix quote " twozuq quote" twozfk quote " twozck quote " two zquote " two commentrelatedrB   r   rW   view %s AS SELECT * FROM rU   rV   DROP VIEW %s)r   r   r   r   rd   PrimaryKeyConstraintr   UniqueConstraintForeignKeyConstraintCheckConstraintr   rI   symbol_names_w_double_quoter*   view_column_reflectionr   r/   rp   identifier_preparerquoter   rX   r   )r0   rQ   namesra   rY   s        r1   rR   $QuotedNameArgumentTest.define_tables  s   4!66":&66":&<)##D/?@HH%v.$ ##-= 5EF.%	
* 77??tW%vvbz*vvbz*|W-''3CD)62##( ''F\N1A ""?9JK2"%* 	4d39g&	
 22:::;;CC!! " II%%99??!D( II%%99??E	 X~s5zB!& ))++??EE%,	  ;r4   c                 p    [         R                  " SS[         R                  R                  45      " U 5      $ )N)r   r   )r   combinationsrI   r   )fns    r1   quote_fixtures%QuotedNameArgumentTest.quote_fixturesW  s6    ##G,,HHI
  	r4   c                 X    [        [        R                  5      nUR                  U5        g r   )r   r   r/   get_table_optionsrs   ra   r   s      r1   test_get_table_options-QuotedNameArgumentTest.test_get_table_options]  s    vyy!t$r4   c                 l    [        [        R                  5      nUR                  SU-  5      (       d   eg )Nr   )r   r   r/   get_view_definitionr   s      r1   test_get_view_definition/QuotedNameArgumentTest.test_get_view_definitionc  s.     vyy!''	D(89999r4   c                 f    [        [        R                  5      nUR                  U5      (       d   eg r   )r   r   r/   get_columnsr   s      r1   test_get_columns'QuotedNameArgumentTest.test_get_columnsi  '    vyy!%%%%r4   c                 f    [        [        R                  5      nUR                  U5      (       d   eg r   )r   r   r/   get_pk_constraintr   s      r1   test_get_pk_constraint-QuotedNameArgumentTest.test_get_pk_constraintn  s'    vyy!%%d++++r4   c                 f    [        [        R                  5      nUR                  U5      (       d   eg r   )r   r   r/   get_foreign_keysr   s      r1   test_get_foreign_keys,QuotedNameArgumentTest.test_get_foreign_keyss  s'    vyy!$$T****r4   c                 f    [        [        R                  5      nUR                  U5      (       d   eg r   )r   r   r/   get_indexesr   s      r1   test_get_indexes'QuotedNameArgumentTest.test_get_indexesx  r   r4   c                 f    [        [        R                  5      nUR                  U5      (       d   eg r   )r   r   r/   get_unique_constraintsr   s      r1   test_get_unique_constraints2QuotedNameArgumentTest.test_get_unique_constraints}  s)     vyy!**40000r4   c                 f    [        [        R                  5      nUR                  U5      (       d   eg r   )r   r   r/   get_table_commentr   s      r1   test_get_table_comment-QuotedNameArgumentTest.test_get_table_comment  s)     vyy!%%d++++r4   c                 f    [        [        R                  5      nUR                  U5      (       d   eg r   )r   r   r/   get_check_constraintsr   s      r1   test_get_check_constraints1QuotedNameArgumentTest.test_get_check_constraints  s)     vyy!))$////r4   r5   N)r6   r7   r8   r9   run_create_tablesr   r:   rR   r   r   r   rI   r   r   r   r   r   r   unique_constraint_reflectionr   comment_reflectionr   check_constraint_reflectionr   r;   r5   r4   r1   r   r      s+   KQ Qf % %
 ,,: - : & & , , + + & & 221 3 1 ((, ) , 110 2 0r4   r   c                   
   \ rS rSrS=rrSr\S 5       r\S 5       r	\S 5       r
\S 5       r\S 5       r\R                  R                  S	 5       r\R                  R                  S
 5       r\R                  R                  S 5       r\R                  R                  S 5       r\R                  R(                  \R*                  " SSSSS\R                  R,                  4SSSSSS\R                  R,                  4SSSSS\R                  R,                  4SS9S 5       5       r\R                  R0                  S 5       r\R                  R4                  \R                  R0                  \R                  R6                  S 5       5       5       r\R                  R:                  S 5       r\R                  R:                  \R                  R,                  S 5       5       rS6S jr \R*                  " SSS\R                  R,                  4SS\R                  R4                  4SS\R                  R,                  \R                  R4                  -   4SS9S 5       r!\R                  RD                  S 5       r#\R                  RD                  \R                  RH                  \R                  R6                  S 5       5       5       r%\R*                  " SS\R                  R,                  4S S9\R                  RL                  S! 5       5       r'\R*                  " SS\R                  R,                  4S S9\R                  R(                  S" 5       5       r(\R                  RR                  \R                  R,                  S# 5       5       r*S$ r+\R*                  " SS\R                  R,                  4S S9S% 5       r,\R*                  " S&S'S(S9\R                  RZ                  \R                  R\                  S) 5       5       5       r/\R                  RD                  \R                  R`                  S* 5       5       r1\R                  Rd                  S+ 5       r3\R*                  " S\R                  R,                  4SS S9\R                  R`                  S, 5       5       r4\R                  R4                  \R*                  " SS\R                  R,                  4S S9S- 5       5       r5\R*                  " S.S/S\R                  R,                  4S0S9\Rl                  " S1S25      S3 5       5       r7\R                  Rp                  S4 5       r9S5r:g)7ComponentReflectionTesti  NTc                     U R                  US 5        [        R                  R                  R                  (       a+  U R                  U[        R
                  R                  5        g g r   )define_reflected_tablesr   rI   rJ   r*   r   rK   rP   s     r1   rR   %ComponentReflectionTest.define_tables  sF    ##Hd3##++'''..2L2LM ,r4   c                    U(       a  US-   nOSn[         R                  R                  R                  (       a  [	        SU[        S[        R                  SS9[        S[        R                  " S5      S	S
9[        S[        R                  " S5      S	S
9[        S[        R                  [        R                  " SU-  SS95      USS9nO`[	        SU[        S[        R                  SS9[        S[        R                  " S5      S	S
9[        S[        R                  " S5      S	S
9USS9n[	        SU[        S[        R                  SS9[        S[        R                  [        R                  " SU-  5      5      [        S[        R                  " S5      5      USS9  [	        SU[        S[        R                  5      [        S[        R                  [        R                  " UR                  R                  5      5      [        S[        R                  " S5      5      [        R                  " SSS9USS9  [	        SU[        S[        R                  SSS9[        S[        R                  " S5      S S!9[        S"[        R                  " S5      S#S!9US$S%9  [         R                  R                   R                  (       GaW  Uc  [	        S&U[        S[        R                  SS9[        S[        R                  " S5      5      [        S'[        S([         R"                  R$                  -  5      5      S["        R&                  R(                  R*                  S)9  O[	        S*U[        S[        R                  SS9[        S+[        S,["        R&                  R(                  R*                  -  5      5      [        S[        R                  " S5      5      USS9  [	        S-U[        S[        R                  SS9[        S[        R                  " S5      5      USS9  [         R                  R,                  R                  (       Ga	  U R/                  X5        U(       d  [	        S.U[        S/[        R                  " S5      5      SS09n[	        S1U[        S[        R                  SS9[        S/[        R                  " S5      5      SS09n[         R                  R0                  R                  (       a\  [3        S2UR                  R4                  R7                  5       5        [3        S3UR                  R4                  R7                  5       5        [         R                  R8                  R                  (       a  U R;                  X5        U(       d<  [         R                  R<                  R                  (       a  U R?                  U5        g g g )4N. usersuser_idTrB   test1   Fnullabletest2parent_user_idz%susers.user_id
user_id_fkr   rH   r   
dingalingsdingaling_id
address_idz%semail_addresses.address_idrD      email_addressesremote_user_idemail_address   email_ad_pkcomment_testrA   
id comment)rC   r   data % comment)r   d2)Comment types type speedily ' " \ '' Fun!the test % ' " \ table comment)rH   r   local_table	remote_idz%s.remote_table_2.id)r   rH   remote_tablelocal_idz%s.local_table.idremote_table_2noncol_idx_test_nopkqr   noncol_idx_test_pknoncol_idx_nopknoncol_idx_pk) r   rI   self_referential_foreign_keysr*   r   r   rd   re   CHARFloatr   r   r   r   r   r   cross_schema_fk_reflectionr   rK   r/   rp   default_schema_nameindex_reflectiondefine_indexindexes_with_ascdescr   r  descr   rM   temp_table_reflectionrO   )r0   rQ   rH   schema_prefixr   r  r  s          r1   r   /ComponentReflectionTest.define_reflected_tables  sp   "SLMM99AAy"&&d;w
U;we<$JJMM)M9 "E" y"&&d;w
U;we<"E 	>2::4@

<}LM
 6299R=)	
 	<, "**bmmEGGOO.L ?BIIbM2##L}E	
 	4|L6299R=2BC		"H
 9	
 66>>>~!4>6299R=1#"2W^^5O5OO #'!99,,@@ "4>""/$ii//CCD 6299R=1!"& $4>6299R=1!"& ,,444X-',*3		!-"&	($ &+(4>3		!-"&&" ##88@@+-A-C-C-E-E-J-J-LM/+=+?+?+A+A+F+F+HI22::X.'**@@HH""8, Ivr4   c                    [        [        [        R                  5      n[        [        [        R                  S[        R                  -  5      n[        UU[        S[        R                  SS9[        S[        R                  " S5      5      [        S[        R                  5      [        R                  " SS[        R                  -  S	9[        R                  " S
S5      40 UD6n[        R                  R                  R                  (       a~  [        R                  R                   R                  (       aT  ["        R$                  " US['        S[        R                  -  5      5        ["        R$                  " US['        S5      5        g g g )Nuser_tmp_%srA   TrB   ra   rE   foouser_tmp_uq_%sr   user_tmp_ixrU   rb   rV   rc   )r   r   r/   r
   r]   r   r   rd   re   rf   r   r   r   rI   rL   r*   rg   r   rX   r   rh   s        r1   rO   *ComponentReflectionTest.define_temp_tables+  s   $VVYY7(FII}v||;

 4T262::b>*5"&&! -=-LMHH]E*
 
" ,,44  0088LL028,,? LL=#6L2MN 9 5r4   c                    [        SUR                  R                  UR                  R                  5        [        SUR                  R                  UR                  R                  UR                  R                  5        g )Nusers_t_idxusers_all_idx)r   r   r   r   r   )r0   rQ   r   s      r1   r  $ComponentReflectionTest.define_indexO  sD    mUWW]]EGGMM:ouwwuww}}Mr4   c           	          S Hi  nUnU(       a	  U< SU< 3nUS-   nSU< SU< 3n[         R                  " US[        U5      5        [         R                  " US[        SU-  5      5        Mk     g )	N)r   r  r   _vrW   r   rU   rV   r   )r   rX   r   )r0   rQ   rH   rj   fullname	view_namerY   s          r1   rM   $ComponentReflectionTest.define_viewsT  sg    6J!H&,j9 4IE
 LL>3u:>LL-^i-G)H 7r4   c                     [        U R                  5      nU R                  [        R                  R
                  UR                  5       ;   5        g r   )r   bindassert_r   r   rK   get_schema_namesrs   r   s     r1   test_get_schema_names-ComponentReflectionTest.test_get_schema_namese  s4    tyy!W^^//43H3H3JJKr4   c                     UR                  SS[        [        R                  R                  0S9n[        U5      nU R                  [        R                  R                  UR                  5       ;   5        g)z
test #7300r'  bar)schema_translate_mapN)execution_optionsr   r   r   rK   r   r6  r7  r   s      r1   %test_get_schema_names_w_translate_map=ComponentReflectionTest.test_get_schema_names_w_translate_mapk  sb      11ugnn88" 2 

 z"W^^//43H3H3JJKr4   c                 ~    [         R                  " 5       n[        U5        [        UR                  S5      (       d   eg )Nr  )r   r,   r   hasattrrp   )rs   engines     r1   test_dialect_initialize/ComponentReflectionTest.test_dialect_initializey  s/    '')v~~'<====r4   c                     [        U R                  5      n[        UR                  U R                  R                  R                  5        g r   )r   r5  r   r  rp   r8  s     r1   test_get_default_schema_name4ComponentReflectionTest.test_get_default_schema_name  s0    tyy!D$$dii&7&7&K&KLr4   )NTFFF)foreign_keyTFF)NFTF)NTTFz/order_by,include_plain,include_views,use_schemaargnamesc                    U(       a  [         R                  nOS n/ SQn[        U5      nU(       a:  UR                  U5      n	U	R	                  5         SS/n
[        [        U	5      U
5        U(       a  U(       a1  UR                  U5       Vs/ s H  nUS   (       d  M  US   PM     nnOUR                  U5      nU Vs/ s H  oU;  d  M
  UPM     n	nUS:X  a  / SQn
[        X5        g / SQn
[        [        U	5      U
5        g g s  snf s  snf )N)r	  r  r  r  r  r  email_addresses_vusers_vr   rI  )r   r  r   )r   r  r   )	r   rK   r   get_view_namessortr   sortedget_sorted_table_and_fkc_namesget_table_names)rs   r   order_byinclude_plaininclude_views
use_schemarH   _ignore_tablesr   table_namesanswerrectablests                 r1   test_get_table_names,ComponentReflectionTest.test_get_table_names  s    ''FF
 z"--f5K)95F{#V,  $BB6JJ1v CFJ   --f5&,Hf0G1fKH=(CK(CF;'0!  Is   D	D?	D
D
c                     [        U R                  5      nUR                  5       n[        [	        U5      S[
        R                  -  /5        g )Nr&  )r   r5  get_temp_table_namesr   rQ  r   r]   rs   r   temp_table_namess      r1   test_get_temp_table_names1ComponentReflectionTest.test_get_temp_table_names  s;    tyy!446F#$}v||'C&DEr4   c                 z    [        U R                  5      nUR                  5       n[        [	        U5      S/5        g r   )r   r5  get_temp_view_namesr   rQ  rb  s      r1   test_get_temp_view_names0ComponentReflectionTest.test_get_temp_view_names  s3     tyy!335F#$|n5r4   c                 $    U R                  5         g r   )_test_get_commentsrs   s    r1   test_get_comments)ComponentReflectionTest.test_get_comments  s    !r4   c                 V    U R                  [        R                  R                  5        g r   )rk  r   r   rK   rl  s    r1   test_get_comments_with_schema5ComponentReflectionTest.test_get_comments_with_schema  s     	 : :;r4   c                 (   [        U R                  5      n[        UR                  SUS9SS05        [        UR                  SUS9SS 05        [        UR	                  SUS9 Vs/ s H  nUS   US   S.PM     snS	S
S.SSS.SSS./5        g s  snf )Nr	  rG   textr  r   ra   r   )ra   r   r
  rA   )r   ra   r  rD   r  r  )r   r5  r   r   r   )rs   rH   r   r[  s       r1   rk  *ComponentReflectionTest._test_get_comments  s    tyy!"">&"A:;	

 	D""76":VTNK  ++N6+JJC VY@J
 )$7,f= I 			
s   %B)FFzuse_views,use_schemac                 .   U(       a  [         R                  nOS nU R                  R                  U R                  R                  peU(       a  SS/nOSS/n[        U5      n[        XuU45       GH#  u  pUnUR                  XS9nU R                  [        U5      S:  [        U5      5        [        U
R                  5       GH  u  p[        UR                  X   S   5        X   S   R                  nUR                  n[!        U["        R$                  R&                  5      (       a  UR                  n[(        R*                  " S	5      (       a4  U[,        R.                  [,        R0                  4;   a  [,        R.                  nU R                  [        [3        UR4                  5      R7                  UR4                  5      R7                  [,        R8                  [,        R:                  [,        R0                  [,        R.                  [,        R<                  [,        R>                  [,        R@                  /5      5      S:  UR                  < S
UR                  < SX   S   < S
U< S35        URB                  (       a  GM  X   S   c  GM   e   GM&     g )NrN  rM  r   r  rG   r   ra   typerz   (z), )default)"r   rK   r\  r   r  r   zipr   r6  len	enumeratecolumnsr   ra   	__class__rv  
isinstancerd   r   
TypeEnginer   against	sql_typesDateDateTimeset__mro__intersectionr   NumericTimer   _BinaryrC   )rs   r   	use_viewsrW  rH   r   	addressesrY  r   rj   tableschema_namecolsicolctype	ctype_defs                    r1   r   (ComponentReflectionTest.test_get_columns  s    ''FF KK--t{{/J/Jy$&9:K"$56Kz"!$[)2D!EJ K##J#CDLLTQD	2 $EMM2CHHdgfo.11HH	i)<)<== ) 3 3I ??8,,NN&&? 2 !*I
 EMM*%i&7&78% ) 1 1 ) 1 1 ) 2 2 ) ) ) 0 0 ) 1 1
 " xx476?EC#* 79-555Q 3 "Fr4   c                    [        [        U R                  S[        R                  -  5      nU R                  U   n[        U R                  5      nUR                  U5      nU R                  [        U5      S:  [        U5      5        [        UR                  5       H   u  pV[        UR                  XE   S   5        M"     g )Nr&  r   ra   )r
   r   r5  r]   r\  r   r   r6  r{  r|  r}  r   ra   )rs   rj   rk   r   r  r  r  s          r1   test_get_temp_table_columns3ComponentReflectionTest.test_get_temp_table_columns7  s    (DII}v||;

 ;;z*tyy!
+SY]CI. 0 01FA$'&/* 2r4   c                     [        U R                  5      nUR                  S5      n[        U Vs/ s H  o3S   PM	     sn/ SQ5        g s  snf )Nr   ra   )rA   ra   r'  )r   r5  r   r   rs   r   r  r  s       r1   test_get_temp_view_columns2ComponentReflectionTest.test_get_temp_view_columnsD  sA     tyy!-D)DS[D)+@A)s   A	FrW  c                 
   U(       a  [         R                  R                  nOS nU R                  R                  U R                  R
                  pT[        U5      nUR                  UR                  US9nUS   n[        US/5        UR                  UR                  US9n	U	S   n
[        U
S/5        [         R                  R                  R                  5          [        U	S   S5        S S S 5        g ! , (       d  f       g = f)NrG   constrained_columnsr   r  ra   r  )r   r   rK   r\  r   r  r   r   ra   r   rI   reflects_pk_namesfail_if)rs   r   rW  rH   r   r  r   
users_consusers_pkeys	addr_cons
addr_pkeyss              r1   r   .ComponentReflectionTest.test_get_pk_constraintL  s    
 ^^//FF;;,,dkk.I.Iyz"++EJJv+F
 !67K)%**9>>&*I	45
J'//779	&!=1 :99s   C44
Dc                 <   U(       a  [         R                  nOS nU R                  R                  U R                  R                  pT[        U5      nUn[        R                  R                  R                  (       a  UR                  UR                  US9nUS   n	[        R                  R                  R                  5          [        U	S   S5        S S S 5        [        U	S   U5        [        U	S   UR                  5        [        U	S   S/5        [        R                  R                  R                  (       a  [        U	S	   S
/5        UR                  UR                  US9n
U
S   n	[        R                  R                  R                  5          U R!                  U	S   S L5        S S S 5        [        U	S   U5        [        U	S   UR                  5        [        U	S   S/5        [        U	S	   S/5        g ! , (       d  f       GN/= f! , (       d  f       Ni= f)NrG   r   ra   r   referred_schemareferred_tablereferred_columnsr   r  r   r  )r   rK   r\  r   r  r   r   rI   r  r*   r   ra   named_constraintsr  r   implicitly_named_constraintsr6  )rs   r   rW  rH   r   r  r   expected_schemausers_fkeysfkey1
addr_fkeyss              r1   r   -ComponentReflectionTest.test_get_foreign_keysd  s   
 ''FF KK--t{{/J/Jyz"  99AA//

6/JKNE!!33;;=E&M<0 > '(/:&'4()I;7==EEE/03C2DE **9>>&*I
1::BBDLLvd23 E 	E#$o6E"#UZZ0E$%	{3E'(+;*<=' >= EDs   G;H;
H

Hc                    U R                  SU R                  R                  R                  -  S[        R
                  R                  -  S[        R
                  R                  -  5      u  pn[        U R                  5      nUR                  UR                  5      n[        [        U5      S5        US   n[        US   [        R
                  R                  5        [        US   UR                  5        [        US   S	/5        [        US
   S/5        UR                  UR                  [        R
                  R                  S9n[        [        U5      S5        US   nUS   S U R                  R                  R                  4;   d   e[        US   UR                  5        [        US   S	/5        [        US
   S/5        g )Nz%s.local_tablez%s.remote_tablez%s.remote_table_2   r   r  r  r  rA   r  r  rG   r  )r\  r5  rp   r  r   r   rK   r   r   ra   r   r{  )	rs   r  r  r  r   local_fkeysr  remote_fkeysfkey2s	            r1   "test_get_inter_schema_foreign_keys:ComponentReflectionTest.test_get_inter_schema_foreign_keys  s    59KKtyy00DDD : ::'.."<"<<5
1> tyy!++K,<,<=Ca AE#$gnn&@&@AE"#^%8%89E$%v.E'(;-8,,gnn&@&@ - 
 	Cq!Q&'II11,
 
 	
 
 	E"#[%5%56E$%v.E'(:,7r4   c                     U Vs/ s H  o3S   PM	     nnU H=  nUS   U;   d   eXR                  US   5         nU H  n[        XW   Xg   5        M     M?     g s  snf )Nra   )indexr   )rs   indexesexpected_indexesdindex_namese_indexr  keys           r1   _assert_insp_indexes,ComponentReflectionTest._assert_insp_indexes  sh    *12'Qy'2'G6?k111--gfo>?EGL%*-  ( 3s   Ac                     U(       a  [         R                  nOS n[        U R                  5      nUR	                  SUS9nSSS/SS.S/ SQS	S./nU R                  XV5        g )
Nr   rG   Fr   r   r,  uniquecolumn_namesra   )r   r   r   r-  )r   rK   r   r5  r   r  )rs   r   rW  rH   r   r  r  s          r1   r   (ComponentReflectionTest.test_get_indexes  sy    
 ''FF tyy!""76":  !(' 2%   ='
 	!!'<r4   )r  r  )r  r  ztname,ixnamec                 ~   [        U5      nUR                  U5      nSUS./nU R                  XV5        [        U[	        5       US9n[        [        UR                  5      S5        [        [        UR                  5      S   R                  U5        [        [        UR                  5      S   R                  U5        g )NF)r  ra   autoload_withr  r   )r   r   r  r   r   r   r{  r  r	   listr  ra   )rs   r   tnameixnamer   r  r  r]  s           r1   test_get_noncol_index-ComponentReflectionTest.test_get_noncol_index  s     z"""5)
 (-f=>!!'<%:>C		NADOA$$a(DOA##V,r4   c                     [        U R                  5      nUR                  S[        R                  -  5      nU H  nUR                  SS 5        M     [        US/S[        R                  -  S./5        g )Nr&  duplicates_indexra   r(  )r  ra   )r   r5  r   r   r]   popr   )rs   r   	reflectedrefls       r1   &test_get_temp_table_unique_constraints>ComponentReflectionTest.test_get_temp_table_unique_constraints  sp     tyy!//0LM	D HH'.  	 &,H,v||;	
r4   c                    [        U R                  5      n[        [        [        R                  S[        R
                  -  5      nUR                  U5      nU H  nUR                  SS 5        M     SS/SS./n[        R                  R                  R                  (       a  / US   S'   [        U Vs/ s H  ofS	   S:X  d  M  UPM     snU5        g s  snf )
Nr&  dialect_optionsFr'  r)  r  r   include_columnsra   )r   r5  r
   r   r/   r]   r   r  r   rI   index_reflects_included_columnsr*   r   )rs   r   rj   r  indexpectedidxs          r1   test_get_temp_table_indexes3ComponentReflectionTest.test_get_temp_table_indexes  s    tyy!(FII}v||;

 "":.CGG%t,  ug}M
 ;;CC-/HQK)*#DGS6{m'CSGD	
Ds   4CCc                    U(       a  [         R                  nOS n[        SS/S.S/ SQS.S/ SQS.SS	S
/S.SS/S.SS/S./[        R                  " S5      S9n[        SU[        S[        R                  " S5      5      [        S[        R                  " S5      5      [        S[        R                  5      [        S	[        R                  " S5      5      [        S
[        R                  " S5      5      US9nU H.  nUR                  [        R                  " US   SUS   065        M0     UR                  U5        [        U5      n[        UR                  SUS9[        R                  " S5      S9n	[        5       n
[!        [#        U5      [#        U	5      5        [%        XY5       H:  u  pUR'                  SS 5      nU(       a  U
R)                  U5        [!        X5        M<     [+        5       n[        SUUUS9n	[        U	R,                   Vs/ s H  oR.                  PM     sn5      n[        U	R0                   Vs/ s H0  n[3        U[        R                  5      (       d  M$  UR.                  PM2     sn5      R5                  S/5      nUR7                  U5      (       a   eU
(       a!  [!        U
U5        [!        U[        5       5        g g s  snf s  snf )Nunique_aa)ra   r  unique_a_b_c)r  br   unique_c_a_b)r   r  r  unique_asc_keyascr  zi.have.dotsr  zi have spacesr   ra   r  testtblr  r  rG   r  r  )r  rH   )r   rK   rQ  operator
itemgetterr   r   rd   r   r   append_constraintr   creater   r   r  r   r{  rz  r  addr   r  ra   constraintsr  
differencer  )rs   rQ   r   rW  rH   uniquesr  uc	inspectorr  names_that_duplicate_indexorigr  dupereflected_metadatar  	idx_namesuquq_namess                      r1   r   3ComponentReflectionTest.test_get_unique_constraints  s    ''FF#cU;'I'I)E5>J&>(3%@ ##F+

 3		"&3		"&3

#5"))B-(5"))B-(

 B####R%7IbjI  	Z J'	,,Yv,F##F+
	
 &)U"CL#i.)g1JD 88.5D*..t4O 2 &Z$	
	 Y->->?->c->?@	 $///Bb""5"56 /
 *n%
& 	 ))(3333%*I6#%  & @s   K?#K&Kc                     U(       a  [         R                  nOS nSnSn[        U5      nUR                  XCS9nU R	                  U5        UR                  XSS9nU R	                  U5        g )NrN  rM  rG   )r   rK   r   r   r6  )	rs   r   rW  rH   
view_name1
view_name2r   v1v2s	            r1   r   0ComponentReflectionTest.test_get_view_definitiong  si    
 ''FF
(
z"%%j%@R%%j%@Rr4   )r   Fr   ztable_name,use_schema
postgresqlzPG specific featurec                     U(       a  [         R                  nOS n[        U5      nUR                  X$5      nU R	                  [        U[        5      5        g r   )r   rK   r   get_table_oidr6  r  int)rs   r   rj   rW  rH   r   oids          r1   test_get_table_oid*ComponentReflectionTest.test_get_table_oidy  sD     ''FFz"  4ZS)*r4   c                     [        U R                  5      nS HH  u  p#UR                  U5      nU Vs0 s H  oUS   U_M
     snU   nUR                  SS5      (       a  MH   e   gs  snf )aX  test that 'autoincrement' is reflected according to sqla's policy.

Don't mark this test as unsupported for any backend !

(technically it fails with MySQL InnoDB since "id" comes before "id2")

A backend is better off not returning "autoincrement" at all,
instead of potentially returning "False" for an auto-incrementing
primary key column.

))r   r   )r  r  )r   r  ra   autoincrementTN)r   r5  r   get)rs   r   r  cnamer  r   id_s          r1   test_autoincrement_col.ComponentReflectionTest.test_autoincrement_col  sm     tyy!
LE
 ##E*D)-.AV9a<.u5C77?D1111
 /s   A%r5   r   );r6   r7   r8   r9   run_insertsrun_deletesr   r:   rR   r   rO   r  rM   r   rI   schema_reflectionr9  r?  rD  rG  !foreign_key_constraint_reflectionr   rJ   r^  rc  rd  rL   rg   rh  r   rm  rp  rk  r   r"  r  r   r  !primary_key_constraint_reflectionr   r   r  r  r  r   r  r   r  r   r  temp_table_reflect_indexesr  r   r   only_onr  table_reflectionr  r;   r5   r4   r1   r   r     s    $$K+KN N
 M- M-^ !O !OF N N    ''L (L
 ''L (L ''> (>
 ''M (M 77"	tUD'"2"2":":;+"	udD'"2"2":":;!	tT4!1!1!9!9:B	*1	 8*1X &&F 'F
 %%&&%%6 & ' &6
 ((" )" ((<  )<
6 	g&&../	ug&&667$$w'7'7'G'GG	

 (
=6
=6~ ++
+ ,
+ ++,,%%B & - ,B
 4))112\ 772 82( 4))112\ 77"> 8">H 008  18B. 4))112\==2 3/
 &&**- + '- ++22
 3 ,
" 00
 1
$ 	w''((\ 22R! 3R!h %%4))112\ & 	$((001(
 __\#89+ :+ &&2 '2r4   r   c                      \ rS rSrSrSr\R                  S 5       r\R                  S 5       r	\R                  R                  S 5       r\R                  R                  S 5       r\R                  R                  S 5       r\R                  R                  \R                  R                  S	 5       5       r\R                  R                  \R                  R                  S
 5       5       rSrg)TableNoColumnsTesti  )reflect_tables_no_columnsTc                 >    [        SU5        UR                  U5        g Nempty)r   
create_allrs   r   rQ   s      r1   table_no_columns#TableNoColumnsTest.table_no_columns  s    gx J'r4   c                     [        SU5        UR                  U5        [        SU5        [        R                  " US[	        S5      5        [        R                  " US[	        S5      5        UR                  U5        g )Nr  rU   z*CREATE VIEW empty_v AS SELECT * FROM emptyrV   zDROP VIEW IF EXISTS empty_v)r   r  r   rX   r   r  s      r1   view_no_columns"TableNoColumnsTest.view_no_columns  sj    gx J'gx <=	
 	mS)F%G	
 	J'r4   c                 h    [        S[        5       US9n[        [        UR                  5      / 5        g )Nr  r  r   r   r   r  r   )rs   r   r  t2s       r1   test_reflect_table_no_columns0TableNoColumnsTest.test_reflect_table_no_columns  s$    7HJjADJr4   c                 L    [        [        U5      R                  S5      / 5        g r  r   r   r   )rs   r   r  s      r1   !test_get_columns_table_no_columns4TableNoColumnsTest.test_get_columns_table_no_columns  s    GJ++G4b9r4   c                     [        5       nUR                  U5        [        UR                  5      R	                  S/5      (       d   eg r  )r   reflectr  r\  r  )rs   r   r  ms       r1   "test_reflect_incl_table_no_columns5TableNoColumnsTest.test_reflect_incl_table_no_columns  s6    J			*188}))7)4444r4   c                 h    [        S[        5       US9n[        [        UR                  5      / 5        g )Nempty_vr  r%  )rs   r   r"  r&  s       r1   test_reflect_view_no_columns/TableNoColumnsTest.test_reflect_view_no_columns  s&     9hj
CDJr4   c                 L    [        [        U5      R                  S5      / 5        g )Nr3  r*  )rs   r   r"  s      r1    test_get_columns_view_no_columns3TableNoColumnsTest.test_get_columns_view_no_columns  s     	GJ++I6;r4   r5   N)r6   r7   r8   r9   __requires__r   r   fixturer  r"  rI   r  r'  r+  r0  r   r4  r7  r;   r5   r4   r1   r  r    s   1LK__( ( __( ($ // 0 //: 0: //5 05
 // 0  //< 0 <r4   r  c                      \ rS rSrSr\R                  " S\R                  R                  4SSS9\R                  R                  S 5       5       r
\R                  R                  S 5       r\R                  R                  S 5       rS	 r\R                  R                   S
 5       r\R                  R                   S 5       r\R                  R                   S 5       r\R                  " SSS\R                  R(                  4SSS\R                  R*                  40 SS\R                  R*                  40 SS\R                  R,                  4SSS\R                  R.                  4SSS\R                  R0                  4SS9S 5       rSrg)ComponentReflectionTestExtrai  Tr  rW  rJ  c                    U(       a  [         R                  nOS n[        SU[        S[	        5       5      [
        R                  " SSS9[
        R                  " SSS9US9  UR                  U5        [        U5      n[        UR                  SUS9[        R                  " S	5      S
9nS nU Vs/ s H  nUS	   U" US   5      S.PM     nn[        USSS.SSS./5        g s  snf )Nsa_ccr  za > 1 AND a < 5cc1r   za = 1 OR (a > 2 AND a < 5)
UsesCasingrG   ra   r  c                     SR                  [        R                  " SU R                  5       [        R                  5      5      $ )N zand|\d|=|a|or|<|>)joinrefindalllowerI)sqltexts    r1   	normalizeJComponentReflectionTestExtra.test_get_check_constraints.<locals>.normalize  s.    88

/"$$G r4   rH  )ra   rH  za = 1 or a > 2 and a < 5za > 1 and a < 5)r   rK   r   r   r   rd   r   r  r   rQ  r   r  r  r   )	rs   rQ   r   rW  rH   r  r  rI  items	            r1   r   7ComponentReflectionTestExtra.test_get_check_constraints  s   
 ''FF3	"0u=,< 		
 	J'J'	++GF+C##F+
		 "
! &\iY.HI! 	 
 	%2LM+<=	
	
s   0C"c                    [        SU[        S[        S5      5      [        S[        S5      5      5      n[        S[        R
                  " UR                  R                  5      [        R
                  " UR                  R                  5      5        [        SUR                  R                  5        UR                  U5        [        U5      nSS/S0 S./n[        R                  R                  R                  (       a)  / US	   S
'   SUR                  R                   -  / 0US	   S'   [#        S5         [%        UR'                  S5      U5        S S S 5        g ! , (       d  f       g = f)Nr]  xr  yt_idxt_idx_2F)ra   r  r  r  r   r  
%s_includer  z>Skipped unsupported reflection of expression-based index t_idx)r   r   r   r   r   rF  r   rN  rO  r  r   r   rI   r  r*   rC  ra   r   r   r   )rs   rQ   r   r]  r   r  s         r1   %test_reflect_expression_based_indexesBComponentReflectionTestExtra.test_reflect_expression_based_indexes  s%   3r
#3r
#	
 	gtzz!##%%($**QSSUU*;<iJ'z" "!$#%	
 ;;CC-/HQK)*z00555r.HQK)* L
   %x0
 
 
s   4E
E'c                 b   [        SU[        S[        S5      5      [        S[        S5      5      5      n[        SUR                  R
                  5      nS/UR                  UR                  R                     S'   UR                  U5        [        U5      n[        UR                  S5      SS/S/SSUR                  R                  -  S/0S	./5        [        S[        5       US
9n[        [        UR                  5      S   R                  UR                  R                     S   S/5        g )Nr]  rN  r  rO  rP  includeFrR  )ra   r  r  r  r  r  r   )r   r   r   r   r   rN  r  rC  ra   r  r   r   r   r   r  r  )rs   rQ   r   r]  r  r   r&  s          r1   test_reflect_covering_index8ComponentReflectionTestExtra.test_reflect_covering_index3  s   3r
#3r
#	
 GQSSUU#BEJ--223I>J'z"S! $%(E(+u#$z'8'8'='==u(
	
 3
*=Q//
0A0A0F0FG E		
r4   c                    [        SU/[        U5       VVs/ s H  u  pE[        SU-  U5      PM     snnQ76 nUR                  U5        [	        U5      R                  S5       Vs/ s H  owS   PM	     sn$ s  snnf s  snf )Nr]  zt%drv  )r   r|  r   r  r   r   )rs   r   rQ   r   r  type_r]  r   s           r1   _type_round_trip-ComponentReflectionTestExtra._type_round_tripY  s    
 8A7GH7G81fUQY&7GH

 	
#*:#6#B#B3#GH#Ga&	#GHH	 I Is   A7&A=c                     U R                  X[        R                  " SS5      5       HP  n[        U[        R                  5      (       d   e[	        UR
                  S5        [	        UR                  S5        MR     g )N   r   )r[  r  r  r  r   	precisionscalers   r   rQ   typs       r1   test_numeric_reflection4ComponentReflectionTestExtra.test_numeric_reflectionc  s`    (()"3"3B":
C c9#4#45555r"		1
r4   c                     U R                  X[        R                  " S5      5      S   n[        U[        R                  5      (       d   e[	        UR
                  S5        g )N4   r   )r[  r  r   r  r   lengthra  s       r1   test_varchar_reflection4ComponentReflectionTestExtra.test_varchar_reflectionl  sS    ##)"2"22"6

 #y//0000CJJr4   c                     [        SU[        S[        SS9[        S[        SS95      nUR                  U5        [	        [        S [        U5      R                  S5       5       5      SSS.5        g )	Nr]  r  Tr   r  Fc              3   6   #    U  H  nUS    US   4v   M     g7f)ra   r   Nr5   ).0r  s     r1   	<genexpr>HComponentReflectionTestExtra.test_nullable_reflection.<locals>.<genexpr>~  s$      ?C Vc*o.?s   )r  r  )r   r   r   r  r   r-   r   r   )rs   r   rQ   r]  s       r1   test_nullable_reflection5ComponentReflectionTestExtra.test_nullable_reflectiont  so    3$/3%0	
 	
 ":.::3?  U#	
r4   NCASCADEzSET NULLz	NO ACTIONRESTRICTzexpected,ondelete,onupdatec                   ^ 0 nU(       a  XFS'   U(       a  XVS'   Uc  Un[        SU[        S[        SS9SS9  [        SU[        S[        SS9[        S	[        [        R                  " S
SS95      [        S[        S5      5      SS9  [        SU[        S[        SS9[        S[        S5      SS9[        S[        5      [        R                  " S/S/4SS0UD6SS9  UR                  U5        [        U5      nUR                  S5      S   S   m[        [        U4S jT 5       5      0 5        UR                  S5      S   S   m[        TU5        g )NondeleteonupdaterN  rA   TrB   r   r  x_idzx.idxidr   test
   userra   rE   Fr   tidztable.idmyfkr   r'   c              3   J   >#    U  H  nTU   (       d  M  UTU   4v   M     g 7fr   r5   )rl  koptss     r1   rm  LComponentReflectionTestExtra.test_get_foreign_key_options.<locals>.<genexpr>  s!     7t!tAw!T!Wts   ##)r   r   r   rd   r   r   r   r  r   r   r   r-   )	rs   r   rQ   r  rt  ru  r'   r   r  s	           @r1   test_get_foreign_key_options9ComponentReflectionTestExtra.test_get_foreign_key_options  s^   T "*J"*JH4d3		
 	4d367BMM&u$EF66":&	
 	4d366":65'"##*,26= 
	
 	J'z" $$W-a0;D7t77<$$V,Q/	:D(r4   r5   )r6   r7   r8   r9   r   r   r   rI   rJ   r   r   indexes_with_expressionsrS  r  rW  r[  r  rc  rh  ro  1foreign_key_constraint_option_reflection_ondelete1foreign_key_constraint_option_reflection_onupdate1fk_constraint_option_reflection_ondelete_noaction1fk_constraint_option_reflection_onupdate_restrict1fk_constraint_option_reflection_ondelete_restrictr  r;   r5   r4   r1   r<  r<    s   K	w''((\ 11+
 2+
Z .."1 /"1H 55#
 6#
JI && ' && ' &&
 '
  NN		
 NN		
 NN		
 NN		
 NN		
 NN		
 .K&N3O&N3r4   r<  c                   8    \ rS rSrSrSr\S 5       rS rS r	Sr
g)	NormalizedNameTesti  )denormalized_namesTc                     [        [        SSS9U[        S[        SS95        [        [        SSS9U[        S[        SS9[        S[	        S5      5      5        g )	Nt1Tr   rA   rB   r&  t1idzt1.id)r   r   r   r   r   rP   s     r1   rR    NormalizedNameTest.define_tables  sU    D)4d3	

 	D)4d36:g./		
r4   c                    [        5       n[        [        SSS9U[        R                  S9nUR
                  S   nUR                  R                  R                  UR                  R                  5      (       d   e[        5       nUR                  [        R                  S S9  UR
                  S   R                  R                  R                  UR
                  S   R                  R                  5      (       d   eg )Nr&  Tr  r  r  c                 (    U R                  5       S;   $ )Nr  r&  )rF  )ra   r/  s     r1   <lambda>INormalizedNameTest.test_reflect_lowercase_forced_tables.<locals>.<lambda>   s    DJJLL,Hr4   )only)r   r   r   r   r/   r\  r   r  
referencesrA   r.  )rs   m2t2_reft1_refm3s        r1   $test_reflect_lowercase_forced_tables7NormalizedNameTest.test_reflect_lowercase_forced_tables  s    ZD)2VYY
 4xx}}''4444Z


IIH 	 	
 yy  %%0041B1B1E1EFFFFr4   c                 `   [        [        R                  5      R                  5        Vs/ s H  nUR	                  5       S;   d  M  UPM     nn[        US   R                  5       US   R	                  5       5        [        US   R                  5       US   R	                  5       5        g s  snf )Nr  r   r  )r   r   r/   rS  rF  r   upper)rs   r]  
tablenamess      r1   r^  'NormalizedNameTest.test_get_table_names  s     VYY'779
9wwyL( 9 	 
 	JqM!:a=#6#6#89JqM!:a=#6#6#89
s   B+B+r5   N)r6   r7   r8   r9   r9  r   r:   rR   r  r^  r;   r5   r4   r1   r  r    s)    *LK
 
G:r4   r  c                   d    \ rS rSrS rS rS rS r\R                  R                  S 5       rSrg)	ComputedReflectionTesti  c                     [        [        R                  5      nUR                  S5      nU Vs0 s H  o3S   U_M
     nn[	        SUS   S   ;   5        [        US   S   S 5        [        US   S   S 5        g s  snf )Ncomputed_default_tablera   42with_defaultry  normalcomputed_col)r   r   r/   r   r   r	   )rs   r   r  r   col_datas        r1   !test_computed_col_default_not_set8ComputedReflectionTest.test_computed_col_default_not_set  s    vyy! 89*./$QfIqL$/0;;<HXy)40H^$Y/6 0s   A9c                 l   [        [        R                  5      nUR                  S5      nU Vs0 s H  o3S   U_M
     nnS H  n[	        SXE   ;  5        M     US   n[	        SU;   5        [	        SUS   ;   5        [        U R                  US   S   5      S5        [        SUS   ;   [        R                  R                  R                  5        [        R                  R                  R                  (       a5  [        US   S   [        R                  R                  R                  5        g g s  snf )	Nr  ra   )rA   r  r  computedr  rH  	normal+42	persisted)r   r   r/   r   r   r   rI  r   rI   "computed_columns_reflect_persistedr*   "computed_columns_default_persisted)rs   r   r  r   rD   r  compDatas          r1    test_get_column_returns_computed7ComputedReflectionTest.test_get_column_returns_computed  s   vyy! 89&*+d&	1d+3CJdi/0 4'
h&'	Xj112DNN8J/	:;[I8J//??GG	
 >>FF$[1  CCKK G ,s   D1c                     [        SX   ;   5        X   S   n[        U R                  US   5      U5        [        R                  R
                  R                  (       a  [        SU;   5        [        US   U5        g g )Nr  rH  r  )r   r   rI  r   rI   r  r*   r	   )rs   rD   columnrH  r  r  s         r1   check_column#ComputedReflectionTest.check_column.  sl    
dl*+<
+DNN8I./9>>FFK8+,%y1 Gr4   c                    [        [        R                  5      nUR                  S5      nU Vs0 s H  o3S   U_M
     nnU R	                  USS[
        R                  R                  R                  5        [
        R                  R                  R                  (       a  U R	                  USSS5        [
        R                  R                  R                  (       a  U R	                  USS	S
5        g g s  snf )Ncomputed_column_tablera   computed_no_flagr  computed_virtualznormal+2Fcomputed_storedz	normal-42T)r   r   r/   r   r  r   rI   r  r*   computed_columns_virtualcomputed_columns_storedrs   r   r  r   rD   s        r1   !test_get_column_returns_persisted8ComputedReflectionTest.test_get_column_returns_persisted6  s    vyy! 78&*+d&	1d+??GG		
 44<<"	 33;;!	 < ,s   C2c                    [        [        R                  5      nUR                  S[        R                  S9nU Vs0 s H  o3S   U_M
     nnU R                  USS[        R                  R                  R                  5        [        R                  R                  R                  (       a  U R                  USSS5        [        R                  R                  R                  (       a  U R                  US	S
S5        g g s  snf )Nr  rG   ra   r  z	normal/42r  znormal/2Fr  z	normal*42T)r   r   r/   r   rK   r  r   rI   r  r*   r  r  r  s        r1   -test_get_column_returns_persisted_with_schemaDComputedReflectionTest.test_get_column_returns_persisted_with_schemaQ  s    vyy!#F,>,>   
 '++d&	1d+??GG		
 44<<"	 33;;!	 < ,s   C?r5   N)r6   r7   r8   r9   r  r  r  r  r   rI   rJ   r  r;   r5   r4   r1   r  r    s6    7*26  r4   r  c                   x    \ rS rSrS=rrSrSr\S 5       r	S r
S r\R                  R                  S 5       rS	rg)
IdentityReflectionTestip  NT)identity_columnsr  c                    [        SU[        S[        5      [        S[        [        5       5      5        [        SU[        S[        [        SSSS	S
SSS95      5        [        R
                  R                  R                  (       aA  [        SU[        S[        5      [        S[        [        SSS95      [        R                  S9  g g )Nr  r  id1r&  id2Tr   r   r!      alwaysstart	incrementminvaluemaxvaluecyclecacher  )r  r  rG   )
r   r   r   r   r   rI   rJ   r*   r   rK   rP   s     r1   rR   $IdentityReflectionTest.define_tablesv  s    8W%5'8:.		
 		
" ##++x)ugxt2'FG)) ,r4   c                    [         R                  R                  R                  (       a  Sn[	        U5       H  nXT;  d  M
  UR                  U5        M     U(       am  [        [        U5      [        U5      5        U HH  nUS:X  a  [        X   X%   :*  5        M  US;   a  [        X   X%   :  5        M7  [        X   X%   U5        MJ     g [        X5        g [        US   US   5        [        US   US   5        g )Nr  r  >   r  r  r  r  )	r   rI   identity_columns_standardr*   r  r  r   r{  r   )rs   valueexpapproxcommon_keysr~  s         r1   checkIdentityReflectionTest.check  s    55==K %['IIaL ! CJC)AJCF 2333CF 23EHcfa0  EgG-k"C$45r4   c                 (   [        [        R                  5      nUR                  S5      UR                  S5      -   nU H  nUS   S:X  a  [	        SU;   5        M  US   S:X  aQ  [        US   S;   5        [        US	   S 5        [        SU;   5        U R                  US   [        S
SSSSS
SS9SS9  Mv  US   S:X  d  M  [        US   S;   5        [        US	   S 5        [        SU;   5        U R                  US   [        SSSSSSSS9S
S9  M     g )Nr  r&  ra   r  identityr  r	  Tautory  Fr  r  Tr  r  r   r   r  r!   r  )	r   r   r/   r   r   r   r   r  r-   r  s       r1   test_reflect_identity,IdentityReflectionTest.test_reflect_identity  s;   vyy!%(8(8(>>C6{h&s*+V%O,>?C	ND)
c)*


O$"#!"!+#     V%O,>?C	ND)
c)*


O#"#!#!#" !  1 r4   c                 j   [        [        R                  5      nUR                  S[        R                  S9nU Hv  nUS   S:X  a  [        SU;   5        M  US   S:X  d  M'  [        US   S;   5        [        US	   S 5        [        SU;   5        U R                  US   [        S
SSSSSSS9S
S9  Mx     g )Nr  rG   ra   r  r  r  r	  r  ry  Tr  r  r  Fr  r  )
r   r   r/   r   rK   r   r   r   r  r-   r  s       r1   test_reflect_identity_schema3IdentityReflectionTest.test_reflect_identity_schema  s    vyy!V-?-?@C6{h&s*+V%O,>?C	ND)
c)*


O# "#!"!+#     r4   r5   )r6   r7   r8   r9   r  r  r   r9  r:   rR   r  r  r   rI   rJ   r  r;   r5   r4   r1   r  r  p  sT     $$K+K;L B6:(T  r4   r  c                       \ rS rSrSr\S 5       r\R                  R                  S 5       r
\R                  R                  S 5       rSrg)CompositeKeyReflectionTesti  Tc                    [        SU[        S[        5      [        S[        5      [        S[        R                  " S5      5      [
        R                  " SSSSS9S SS	9n[        S
U[        S[        SS9[        S[        5      [        S[        5      [        S[        R                  " S5      5      [
        R                  " / SQUR                  R                  UR                  R                  UR                  R                  /SS9S SS	9	  g )Ntb1rA   attrra   r  pk_tb1r   Tr   tb2rB   pidpattrpnamer  r  r  fk_tb1_name_id_attr)r   r   r   r  rf   rd   r   r   r   ra   rA   r  )r0   rQ   r  s      r1   rR   (CompositeKeyReflectionTest.define_tables  s    4!67#69,,R01##FD&xH	
 	4d35'"7G$7I--b12##)SUUXXsuuzz2*
 	
r4   c                     [        U R                  5      nUR                  U R                  R                  R
                  5      n[        UR                  S5      / SQ5        g )Nr  ra   rA   r  )r   r5  r   r\  r  ra   r   r
  )rs   r   rC   s      r1   test_pk_column_order/CompositeKeyReflectionTest.test_pk_column_order  sE     tyy!,,T[[__-A-ABKOO124JKr4   c                 4   [        U R                  5      nUR                  U R                  R                  R
                  5      n[        [        U5      S5        US   n[        UR                  S5      / SQ5        [        UR                  S5      / SQ5        g )Nr  r   r  r  r  r  )	r   r5  r   r\  r  ra   r   r{  r
  )rs   r   foreign_keysr  s       r1   test_fk_column_order/CompositeKeyReflectionTest.test_fk_column_order   sr     tyy!,,T[[__-A-ABCq!QEII()+ABEII+,.GHr4   r5   N)r6   r7   r8   r9   r   r:   rR   r   rI   r  r  r  r  r;   r5   r4   r1   r  r    s]    K
 
6 77L 8L 77I 8Ir4   r  )
r   r<  r  r   r=   r   r  r  r  r  )5r  rD  r+   rd   r   r   r   r   r   r   r	   	provisionr
   r   rH   r   r   r   r   r   r   r   r   r   r   r   r   r  r   r   sql.elementsr   
sql.schemar   r   r   rQ   r   
TablesTestr    r=   r   r   r   TestBaser  r<  r  ComputedReflectionFixtureTestr  r  r  __all__r5   r4   r1   <module>r     sD    	        + /            "   ' &   %h11  G:* G:T88&& 8vN0X00 N0bO25 O2d4<** 4<nF8#4#4 FT):,, ):X^XCC ^BGX00 GT.I!4!4 .Ibr4   