
    hQ                       d dl Z d dlZd dlZd dlZddlmZ ddlmZ ddlmZ ddlm	Z	 ddlm
Z
 ddlmZ dd	lmZ dd
lmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ 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m0Z0 dd(lm1Z1 dd)lm2Z2 dd*lm3Z3 d+\  Z4Z5 G d, d-ejl                        Z7 G d. d/e7      Z8 G d0 d1ejl                        Z9 G d2 d3ejt                        Z; G d4 d5ejl                        Z<d6 Z= G d7 d8e0e7      Z> G d9 d:ejt                        Z? G d; d<e/ejt                        Z@ G d= d>ejl                        ZA G d? d@ej                        ZC G dA dBejl                        ZD G dC dDejl                        ZEdEZFy)F    N   )config)engines)eq_)eq_regex)expect_raises)expect_raises_message)expect_warnings)fixtures)is_)get_temp_table_name)temp_table_keyword_args)Column)Table   )Boolean)DateTime)event)
ForeignKey)func)Identity)inspect)Integer)MetaData)String)testing)types)	Inspector)
ObjectKind)ObjectScope)NoSuchTableError)UnreflectableTableError)DDL)Index)quoted_name)BLANK_SCHEMA)ComparesIndexes)ComparesTables)is_false)is_true)mockNNc                       e Zd Zed        Zy)OneConnectionTablesTestc                     t         j                  j                  j                  r1ddlm} t        j                  t        |j                  d            S t         j                  S )Nr   )poolclass)	poolclassscope)options)r   requirementsindependent_connectionsenabled
sqlalchemyr0   r   testing_enginedict
StaticPooldb)clsr0   s     QD:\EasyAligner\venv\Lib\site-packages\sqlalchemy/testing/suite/test_reflection.py
setup_bindz"OneConnectionTablesTest.setup_bind;   sI    
 66>>'))tgF  99    N)__name__
__module____qualname__classmethodr?    r@   r>   r.   r.   :   s     r@   r.   c                   B   e Zd ZdZed        Zed        Zed        Zed        Zd Z	d Z
ej                  j                  d        Zej                  j                  d	        Zej                  j                   d
        Zej                  j$                  d        Zej                  j$                  ej                  j(                  ej                  j*                  d                      Zej                  j                   ej                  j                  d               Zy)HasTableTestTc                    t        d|t        dt        d      t        dt        d                   t        j
                  j                  j                  rAt        d|t        dt        d      t        dt        d            t        j                         t        j
                  j                  r| j                  |       t        j
                  j                  j                  r| j                  |       y y )	N
test_tableidTprimary_keydata2   test_table_sschema)r   r   r   r   r   requiresschemasr7   r   test_schemaview_reflectiondefine_viewshas_temp_tabledefine_temp_tablesr=   metadatas     r>   define_tableszHasTableTest.define_tablesM   s    4d366":&		
 ##++tW$7vvbz*)) ++X&**22""8, 3r@   c                    d}t        j                  |dt        |             t        j                  |dt        d             t        j                  j
                  j                  rwdt        j                  dt        j                  d}t        j                  |dt        |             t        j                  |dt        dt        j                  z               y y )	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   rR   rS   r7   r   rT   )r=   rZ   querys      r>   rV   zHasTableTest.define_viewsc   s    CX~s5z:X}c..AB##++ &&&&  LL>3u:>LL%););<= ,r@   c                 b    t        t        t        j                  dt        j                         S N	user_tmp_r   r   r<   identr=   s    r>   temp_table_namezHasTableTest.temp_table_namey   %    "FII6<<.9
 	
r@   c                 "   t        t        t        j                        }| j                         }t	        ||t        dt        j                  d      t        dt        j                  d            fi |}t        j                  j                  j                  rwt        j                  j                  j                  rRt        j                  |dt!        dt        j"                  z               t        j                  |dt!        d	             y y y )
NrJ   TrK   namerN   r]   =create temporary view user_tmp_v as select * from user_tmp_%sr^   drop view user_tmp_v)r   r   r<   rh   r   r   saINTVARCHARr   rR   rU   r7   temporary_viewsr   r`   r#   rf   r=   rZ   kw
table_nameuser_tmps        r>   rX   zHasTableTest.define_temp_tables   s    $VVYY7((*
4T262::b>*	

 
 ,,44  0088LL028,,? LL=#6L2MN 9 5r@   c                    t         j                  j                         5 }t        t         j                  j                  j                  |d             t        t         j                  j                  j                  |d             t        t         j                  j                  j                  |d             d d d        y # 1 sw Y   y xY w)NrI   rO   nonexistent_table)r   r<   beginr*   dialect	has_tabler)   selfconns     r>   test_has_tablez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                 "   t        t        j                        }t        |j	                  d             t        d|t        dt                    }t        |j	                  d             |j                  t        j                         	 t        |j	                  d             |j                          t        |j	                  d             |j                  t        j                         y # |j                  t        j                         w xY w)NrI   	new_tablecol)r   r   r<   r*   rz   r   r   r   r)   createclear_cachedrop)r|   rZ   inspnts       r>   test_has_table_cachez!HasTableTest.test_has_table_cache   s    vyy!|,-;&*@A,-
		&))	T^^K01DNN;/0GGFIIBGGFIIs   	AC- -!Dc                    t         j                  j                         5 }t        t         j                  j                  j                  |dt         j                               t        t         j                  j                  j                  |dt         j                               t        t         j                  j                  j                  |dt         j                               d d d        y # 1 sw Y   y xY w)NrI   rP   rO   rw   )r   r<   rx   r)   ry   rz   rT   r*   r{   s     r>   test_has_table_schemaz"HasTableTest.test_has_table_schema   s    YY__$		!!++,v/A/A , 
 		!!++.1C1C , 
 		!!++-f6H6H ,  s   C
C22C;c                     t         j                  j                         5 }t        t         j                  j                  j                  |dd             d d d        y # 1 sw Y   y xY w)NrI   nonexistent_schemarP   )r   r<   rx   r)   ry   rz   r{   s     r>   !test_has_table_nonexistent_schemaz.HasTableTest.test_has_table_nonexistent_schema   sK    YY__$		!!++,/C ,  s   6AA'c                 N    t        |      }t        |j                  d             y Nvvr   r*   rz   r|   
connectionr   s      r>   test_has_table_viewz HasTableTest.test_has_table_view   s    z"t$%r@   c                 n    t        |      }| j                         }t        |j                  |             y N)r   rh   r*   rz   )r|   r   r   rh   s       r>   test_has_table_temp_tablez&HasTableTest.test_has_table_temp_table   s+    z"..0/0r@   c                 N    t        |      }t        |j                  d             y N
user_tmp_vr   r   s      r>   test_has_table_temp_viewz%HasTableTest.test_has_table_temp_view   s     z"|,-r@   c                 l    t        |      }t        |j                  dt        j                               y r   )r   r*   rz   r   rT   r   s      r>   test_has_table_view_schemaz'HasTableTest.test_has_table_view_schema   s'     z"tV%7%789r@   N)rA   rB   rC   __backend__rD   r[   rV   rh   rX   r~   r   r   rR   rS   r   r   viewsr   rW   r   rU   rq   r   r   rE   r@   r>   rG   rG   J   s^   K- -*  * 
 

 O O0M  $   & & $$1 %1
 $$%%%%. & & %. :  :r@   rG   c                       e Zd ZdZdZed        Z ej                  ddd      Z	d Z
e	d	        Zej                  j                  e	d
               Zy)HasIndexTestT)index_reflectionc                    t        d|t        dt        d      t        dt        d            t        dt        d                  }t	        d|j
                  j                         t        j                  j                  j                  rbt        d|t        dt        d      t        dt        d            t        j                  	      }t	        d
|j
                  j                         y y )NrI   rJ   TrK   rM   rN   data2my_idxrP   my_idx_s)r   r   r   r   r$   crM   r   rR   rS   r7   r   rT   )r=   rZ   tts      r>   r[   zHasIndexTest.define_tables   s    4d366":&7F2J'
 	h		"##++tW$7vvbz*))B *bddii( ,r@   ry   	inspectorkindargnamesc                 B    |dk(  rfdS t              j                  S )Nry   c                  ^    t        j                  j                  j                  g| i |S r   )r   r<   ry   	has_index)akr}   s     r>   <lambda>z)HasIndexTest._has_index.<locals>.<lambda>   s$    699#4#4#>#>t#Ma#M1#Mr@   )r   r   )r|   r   r}   s     `r>   
_has_indexzHasIndexTest._has_index   s!    9MM4=***r@   c           	         | j                  ||      } |dd      sJ  |dd      rJ  |dd      rJ  |dd      rJ  |dd      rJ  |dd      rJ t        d| j                  j                  j                  j
                        }t        d|t        d	t              t        dd	            }|j                  |       |j                  |       	 |d
k(  r0 |dd      rJ  |dd      rJ |j                  j                           |dd      du sJ  |dd      du sJ 	 |j                  |       |j                  |       y # |j                  |       |j                  |       w xY w)NrI   r   r   rw   nonexistent_idxmy_idx_2test_table_2my_idx_3foor   T)r   r$   tablesrI   r   r   r   r   r   r   __self__r   r   )r|   r   r   rZ   methidxtbls          r>   test_has_indexzHasIndexTest.test_has_index  so   tZ0L(+++j111+X666&7888j111
333J 6 6 8 8 > >?5'"*e$	
 	

:

:		!{"j999
;;;))+j1T999
3t;;;HHZ HHZ  HHZ HHZ s   AE $E)c                     | j                  ||      } |ddt        j                        sJ  |ddt        j                        rJ  |ddt        j                        rJ  |ddt        j                        rJ y )NrI   r   rP   r   rw   nonexistent_idx_s)r   r   rT   )r|   r   r   r   s       r>   test_has_index_schemaz"HasIndexTest.test_has_index_schema  s     tZ0L*V5G5GHHHhv7I7IJJJF4F4F
 	
 
 -f6H6H
 	
 
 
r@   N)rA   rB   rC   r   __requires__rD   r[   r   combinationsr   r   r   rR   rS   r   rE   r@   r>   r   r      sw    K(L) )(  7	;HD+ 
! 
!: 		
 
 	
r@   r   c            	           e Zd ZdZdZdZ ej                  ddddd	       ej                  d
ddg       ej                  ddddd	      d                      Z	y) BizarroCharacterFKResolutionTestztests for #10275T)!foreign_key_constraint_reflection)rJ   )z(3))zcol%p)z[brack]
columnnamer   use_compositeF)plain)z(2))z
per % cent)z
[brackets]	tablenamec                 `   t        ||t        |t        dd      d      }|r!|j                  t        dt        d             |rt        d|t        dt        d      t        dt              t        d	t              t	        j
                  dd	g|j                  j                  |j                  j                  g      d       nGt        d|t        dt        d      t        dt        |j                  j                              d       |j                  |       t               }t        d||
      }|j                  |   }	|j                  j                  j                  |	j                  d         sJ |r5|j                  j                  j                  |	j                  d         sJ y y )NrJ   T)keyrL   test_needs_fkid2rK   otherrefref2autoload_withr      )r   r   r   append_columnrn   ForeignKeyConstraintr   rJ   r   r   
create_allr   r   r   
referencesr   )
r|   r   rZ   r   r   r   r   m2o2t1s
             r>   test_fk_refz,BizarroCharacterFKResolutionTest.test_fk_ref3  sW    :wDdC	
 VE7EFtW$7ug&vw'''"$$''244889LM" tW$7uj12" 	J'Z7Bj9YYy!ttxx""2447+++4499''Q000 r@   N)
rA   rB   rC   __doc__r   r   r   r   	variationr   rE   r@   r>   r   r   -  sz    K9LW:|l Wu6W(1 7(1r@   r   c                      e Zd ZdZdZed        Zd Zed        Zee	j                  j                  d               Zed        Zed        Zee	j                  j                  d	               Zee	j                  j"                  d
               Zee	j                  j&                  d               Zee	j                  j*                  d               Zee	j                  j.                  d               Zy)QuotedNameArgumentTestonceTc                 6   t        d|t        dt              t        dt        d            t        dt        d            t        dt              t	        j
                  dd      t	        j                  d	d      t	        j                  dd
      t	        j                  dgdgd      t	        j                  dd      dd       t        j                  j                  j                  rt        d|t        dt              t        dt        d            t        dt        d            t        dt              t	        j
                  dd      t	        j                  dd      t	        j                  dd      t	        j                  dgdgd      t	        j                  dd      dd       t        d|t        dt        d      t        dt              d       t        j                  j                  j                  rt        j                  j                  j                  rddg}ndg}|D ]  }dt        j                   j"                  j$                  j'                  d|z        dt        j                   j"                  j$                  j'                  |      }t)        j*                  |dt-        |             t)        j*                  |d t-        d!t        j                   j"                  j$                  j'                  d|z        z                y y )"Nquote ' onerJ   rk   rN   rM   
related_idzpk quote ' onerk   zix quote ' onezuq quote' onez
related.idzfk quote ' onezname != 'foo'zck quote ' onezquote ' one commentT)commentr   quote " twozpk quote " twozix quote " twozuq quote" twozfk quote " twozck quote " two zquote " two commentrelatedrK   r   r_   view %s AS SELECT * FROM r]   r^   zDROP VIEW %s)r   r   r   r   rn   PrimaryKeyConstraintr$   UniqueConstraintr   CheckConstraintr   rR   symbol_names_w_double_quoter7   view_column_reflectionr   r<   ry   identifier_preparerquoter   r`   r#   )r=   rZ   namesrk   ra   s        r>   r[   z$QuotedNameArgumentTest.define_tablesm  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%,	  ;r@   c                 n     t        j                  ddt         j                  j                  f      |       S )N)r   r   )r   r   rR   r   )fns    r>   quote_fixturesz%QuotedNameArgumentTest.quote_fixtures  s:    
w##G,,HHI
  	r@   c                 >   t        t        j                        }t        j                  j
                  j                  r+|j                  |      }t        t        |t                     y t        t              5  |j                  |      }d d d        y # 1 sw Y   y xY wr   )r   r   r<   r   rR   reflect_table_optionsr7   get_table_optionsr*   
isinstancer:   r   NotImplementedError)r|   rk   r   ress       r>   test_get_table_optionsz-QuotedNameArgumentTest.test_get_table_options  si    vyy!1199((.CJsD)*23,,T2 433s   8BBc                 b    t        t        j                        }|j                  d|z        sJ y )Nr   )r   r   r<   get_view_definitionr|   rk   r   s      r>   test_get_view_definitionz/QuotedNameArgumentTest.test_get_view_definition  s+     vyy!''	D(8999r@   c                 \    t        t        j                        }|j                  |      sJ y r   )r   r   r<   get_columnsr   s      r>   test_get_columnsz'QuotedNameArgumentTest.test_get_columns  s$    vyy!%%%r@   c                 \    t        t        j                        }|j                  |      sJ y r   )r   r   r<   get_pk_constraintr   s      r>   test_get_pk_constraintz-QuotedNameArgumentTest.test_get_pk_constraint  s$    vyy!%%d+++r@   c                 \    t        t        j                        }|j                  |      sJ y r   )r   r   r<   get_foreign_keysr   s      r>   test_get_foreign_keysz,QuotedNameArgumentTest.test_get_foreign_keys  s&     vyy!$$T***r@   c                 \    t        t        j                        }|j                  |      sJ y r   )r   r   r<   get_indexesr   s      r>   test_get_indexesz'QuotedNameArgumentTest.test_get_indexes  s&     vyy!%%%r@   c                 \    t        t        j                        }|j                  |      sJ y r   )r   r   r<   get_unique_constraintsr   s      r>   test_get_unique_constraintsz2QuotedNameArgumentTest.test_get_unique_constraints  s&     vyy!**4000r@   c                 \    t        t        j                        }|j                  |      sJ y r   )r   r   r<   get_table_commentr   s      r>   test_get_table_commentz-QuotedNameArgumentTest.test_get_table_comment  s&     vyy!%%d+++r@   c                 \    t        t        j                        }|j                  |      sJ y r   )r   r   r<   get_check_constraintsr   s      r>   test_get_check_constraintsz1QuotedNameArgumentTest.test_get_check_constraints  s&     vyy!))$///r@   N)rA   rB   rC   run_create_tablesr   rD   r[   r   r   r   rR   r   r  r  r  r   r
  r   r  unique_constraint_reflectionr  comment_reflectionr  check_constraint_reflectionr  rE   r@   r>   r   r   i  sS   KP Pd 3 3 ,,: - : & & , , 77+ 8 + &&& ' & 221 3 1 ((, ) , 110 2 0r@   r   c           
         t        j                  d d t         j                  j                  fd      }t        j                  t        j
                  t        j                  t        j                  d      }t        j                  t        j                  t        j                  t        j                  t        j                  t        j                  t        j                  t        j                  z  t        j                  t        j                  z  d      }t        j                  ddd      } | | | ||                         S )	Nc                  "    t         j                  S r   )r   rT   rE   r@   r>   r   z$_multi_combination.<locals>.<lambda>  s
    F&&r@   rQ   r   r3   r   TF
use_filter)r   r   rR   rS   r    DEFAULT	TEMPORARYANYr   TABLEVIEWMATERIALIZED_VIEWANY_VIEW)r   rQ   r3   r   filter_namess        r>   _multi_combinationr&     s    !!&$$	
 F   	E $$:??*:777	D ''elKL%\"-./00r@   c                   H   e Zd ZdxZZdZed        Zed        Zed        Z	ed        Z
ed        Zd Zd	 Zd
 Zdej                   ej                   dfdZdej                   ej                   dfdZdej                   ej                   dfdZed        Zdej                   ej                   dfdZed        Zdej                   ej                   dfdZed        Zdej                   ej                   dfdZed        Zdej                   ej                   ddfdZed        Zdej                   ej                   dfdZed        Z e!jD                  jF                  d        Z$e!jD                  jF                  d        Z%e!jD                  jF                  d        Z&e!jD                  jF                  d        Z'e!jD                  jF                  e!jD                  jP                  d               Z)e!jD                  jF                  d        Z*e!jD                  jF                  d         Z+ e!jX                  dd!e!jD                  jZ                  fd"#       e!jX                  de!jD                  j\                  fdd$#      d%               Z/ e!jX                  de!jD                  j\                  fdd$#      d&        Z0e!jD                  jb                  d'        Z2e!jD                  jf                  e!jD                  jh                  d(               Z5e!jD                  jl                  d)        Z7e!jD                  jl                  e!jD                  j\                  d*               Z8d_d+Z9 e!jX                  d,dde!jD                  j\                  fdde!jD                  jf                  fdde!jD                  j\                  e!jD                  jf                  z   fd-#      d.        Z:e!jD                  jv                  d/        Z<e!jD                  jv                  d0        Z=e!jD                  jv                  e!jD                  j|                  e!jD                  jh                  d1                      Z? e!jX                  d2de!jD                  j\                  fd$#      e!jD                  j                  d3               ZA e!jX                  d2de!jD                  j\                  fd$#      e!jD                  jZ                  d4               ZBe!jD                  j                  e!jD                  j\                  d5               ZD e!jX                  d2de!jD                  j\                  fd$#      e!jD                  j                  d6               ZF e!jX                  d7d8d9#      e!jD                  j                  e!jD                  j                  e!jD                  j                  d:                             ZIe!jD                  jv                  e!jD                  j                  d;               ZKe!jD                  j                  d<        ZM e!jX                  de!jD                  j\                  fd2d$#      e!jD                  j                  d=               ZNe!jD                  jf                   e!jX                  d2de!jD                  j\                  fd$#      d>               ZOe!jD                  jf                  d?        ZPe!jD                  j                  d@        ZR e!jX                  de!jD                  j\                  fd2d$#      dA        ZS e!jX                  de!jD                  j\                  fd      dB        ZTe!j                  dC        ZVe!jD                  j                  eXdD               ZYe!jD                  jl                  eXdE               ZZdF Z[d`dGZ\dadHZ]eXdI        Z^e!jD                  j                  eXdJ               Z_dK Z`e!jD                  jZ                  eXdL               Zae!jD                  j                  eXdM               Zbe!jD                  j                  eXdN               Zce!jD                  j                  eXdO               Ze e!jX                  dPe!jD                  j                  fdQdRe!jD                  j                  fdSe!jD                  jZ                  fdTe!jD                  j                  fdUe!jD                  j                  fdVe!jD                  j                  fdWe!jD                  jl                  fdX#	      dY        ZfdZ Zg e!jX                  ddd$#       e!jX                  de!jD                  j                  fdd[#      d\               Zie!jD                  jl                  d]        Zje!jD                  j                  d^        Zly)bComponentReflectionTestNTc                     | j                  |d        t        j                  j                  j                  r+| j                  |t        j
                  j                         y y r   )define_reflected_tablesr   rR   rS   r7   r   rT   rY   s     r>   r[   z%ComponentReflectionTest.define_tables#  sF    ##Hd3##++'''..2L2LM ,r@   c                    |r|dz   }nd}t         j                  j                  j                  rt	        d|z  d      f}nd}t        d|t        dt        j                  d	
      t        dt        j                  d      d      t        dt        j                         d      t        dt        j                  g| t        j                  ddd      t        j                  d      |d	
      }t        d|t        dt        j                  d	
      t        dt        j                  t	        d|z  dd            t        dt        j                  t	        d|z              t        dt        j                  d      d	       t        j                  d!d"      t        j                  ddd#d$      |d	
       t        d%|t        dt        j                        t        d&t        j                  t	        |j                  j                               t        d't        j                  d(      d	)      t        j"                  dd*d+      |d	       t        d,|t        d-t        j                  d	d./      t        dt        j                  d(      d01      t        d2t        j                  d(      d31      t        d4t        j                  d5      d61      |d78       t        d9|t        dt        j                  d(            |d:8       t         j                  j$                  j                  re|t        d;|t        d-t        j                  d	
      t        dt        j                  d(            t        d<t	        d=t         j&                  j(                  z              d	t&        j*                  j,                  j.                  >       nt        d?|t        d-t        j                  d	
      t        d@t	        dAt&        j*                  j,                  j.                  z              t        dt        j                  d(            |d	       t        dB|t        d-t        j                  d	
      t        dt        j                  d(            |d	       t         j                  j0                  j                  rt3        dC|j                  j4                  |j                  j6                  d	        t3        dD|j                  j                   |j                  j6                  |j                  j4                         |st        dE|t        dFt        j                  d            d	G      }t        dH|t        d-t        j                  d	
      t        dFt        j                  d            d	G      }t         j                  j8                  j                  rt         j                  j:                  j                  r\t3        dI|j                  j<                  j?                                t3        dJ|j                  j<                  j?                                t         j                  j@                  j                  r| jC                  ||       |s7t         j                  jD                  j                  r| jG                  |       y y y )KN. z%susers.user_id
user_id_fkr   rE   usersuser_idTrK   test1   Fnullabletest2parent_user_id	test2 > 0zz_test2_gt_zerousers check constraintrk   r   test2 <= 1000rQ   r   
dingalingsdingaling_id
address_idz%semail_addresses.address_idzz_email_add_id_fgdi fk commentid_userrM      )uniquez$address_id > 0 AND address_id < 1000address_id_gt_zerozz_dingalings_multipledi unique commentemail_addressesremote_user_idemail_address   )indexemail_ad_pkea pk commentcomment_testrJ   
id comment)rL   r   data % commentr   d2)Comment types type speedily ' " \ '' Fun!d3*   Comment
withescapesthe test % ' " \ table comment)rQ   r   no_constraints"no
constraintshasescapedcommentlocal_table	remote_idz%s.remote_table_2.id)r   rQ   remote_tablelocal_idz%s.local_table.idremote_table_2users_t_idxusers_all_idxnoncol_idx_test_nopkqr   noncol_idx_test_pknoncol_idx_nopknoncol_idx_pk)$r   rR   self_referential_foreign_keysr7   r   r   r   rn   ro   CHARFloatr   r   r   r   r   r0  r   cross_schema_fk_reflectionr   rT   r<   ry   default_schema_namer   r$   r1  r5  indexes_with_ascdescreflect_indexes_with_ascdescrc  descr   rV   temp_table_reflectionrX   )r=   rZ   rQ   schema_prefixparent_id_argsr/  rb  rd  s           r>   r*  z/ComponentReflectionTest.define_reflected_tables)  s4   "SLMM99AA%5LN  N9bff$77BGGAJ77BHHJ7#RZZA.A'0
 /
" 	>2::4@

2]B-+ 

,}<=
 6299R=66) -+	 =	
@ 	<,#RZZEGGOO1LM?BIIbM>##=/ 	
 	4|L6299R=2BC		"H
 420HI9	
 	6299R=)<	
 66>>~!4>6299R=1#"2W^^5O5OO #'!99,,@@ "4>""/$ii//CCD 6299R=1!"& $4>6299R=1!"& ,,44-dK%''-- ',*3		!-"&	($ &+(4>3		!-"&&" $$99AA((EEMM+-A-C-C-E-E-J-J-LM/+=+?+?+A+A+F+F+HI22::Xv.'**@@HH""8, Ivr@   c                 b    t        t        t        j                  dt        j                         S rc   re   rg   s    r>   rh   z'ComponentReflectionTest.temp_table_name  ri   r@   c                    t        t        t        j                        }| j                         }t	        ||t        dt        j                  d      t        dt        j                  d            t        dt        j                        t        j                  ddt        j                         t        j                  d	d      fi |}t        j                  j                  j                  rwt        j                  j                   j                  rRt#        j$                  |d
t'        dt        j                  z               t#        j$                  |dt'        d             y y y )NrJ   TrK   rk   rN   r   user_tmp_uq_r   user_tmp_ixr]   rl   r^   rm   )r   r   r<   rh   r   r   rn   ro   rp   r   rf   r$   r   rR   rU   r7   rq   r   r`   r#   rr   s        r>   rX   z*ComponentReflectionTest.define_temp_tables  s   $VVYY7((*
4T262::b>*5"&&! |FLL>-JKHH]E*
 
" ,,44  0088LL028,,? LL=#6L2MN 9 5r@   c                    t         j                  j                  j                  rdh}n
t	               }dD ]  }|}|r| d| }|dz   }||v rdnd}d| d| d	| }t        j                  |d
t        |             ||v rId}	|rt        j                  d      r| d|	 }	d|	 d| d}
t        j                  |d
t        |
             t        j                  |dt        d| d|               y )Nr=  r/  rH  r=  r,  _vzMATERIALIZED r-  zCREATE zVIEW r   r]   	mat_indexoraclezCREATE INDEX z ON z(data)r^   zDROP )	r   rR   materialized_viewsr7   setr   r`   r#   against)r=   rZ   rQ   materializedrt   fullname	view_nameprefixra   
index_namer   s              r>   rV   z$ComponentReflectionTest.define_views  s	   ..66(>L5LDJ!H$XQzl3 4I(2l(B_F&yk1CH:N  LL>3u:>\)(
gooh7$*81ZL!9J%j\i[GX~s3x@LL-uVHE)-M)N# Er@   c                     i }t         j                  |v r|j                  |       t         j                  |v r|j                  |       t         j                  |v r|j                  |       |S r   )r   r!  updater"  r#  )r|   r   r   r   r~  r   s         r>   _resolve_kindz%ComponentReflectionTest._resolve_kind  sX    t#JJv??d"JJu''4/JJ|$
r@   c                    t         j                  j                  j                  s!|j	                          |j	                          y t         j                  j
                  j                  s"|j                  |       |j	                          y y r   )r   rR   r   r7   clearr{  r  )r|   r   r~  s      r>   _resolve_viewsz&ComponentReflectionTest._resolve_views$  s^    66>> KKM!!44<<LL&  =r@   c           	         d }|t         j                  u rd }|t         j                  u rd }d ddht        j                  j
                  dddd	| j                         hi}t        j                  j                  j                  sB|d    j                  d       |t        j                  j
                     j                  ddg       t        j                  j                  j                  s|d    j                  ddg       t        j                  j                  j                  r$t        j                  j                  j                  s$|d    j                  d	| j                         g       t        j                  j                  j                  s|d    j                  d	g       |j!                         D ci c]#  \  }} ||      r|d
   ||   vr|r|d
   |v r||% }	}}|	S c c}}w )Nc                      y)NTrE   )_s    r>   r   z8ComponentReflectionTest._resolve_names.<locals>.<lambda>-  s    r@   c                     d| d   vS Ntmpr   rE   r   s    r>   r   z8ComponentReflectionTest._resolve_names.<locals>.<lambda>/  s    U!A$%6r@   c                     d| d   v S r  rE   r  s    r>   r   z8ComponentReflectionTest._resolve_names.<locals>.<lambda>1  s    Uad]r@   r]  r_  r[  rb  rd  r   r   )r    r  r  r   r   rT   rh   rR   rj  r7   addr  r   ro  temp_table_namesrq   items)
r|   rQ   r3   r%  valuesscope_filterremovedr   vr   s
             r>   _resolve_namesz&ComponentReflectionTest._resolve_names,  s   %K'''6LK)))2L >#34NN&&&$$$&)	
 ::BBDMm,GNN../66!12 0088DM  ')=>   66>>##44<<DM  ,0D0D0F!GH//77DM  ,0 
&1A!GFO+!QqT\%9	 qD& 	 
 

s   9(G&c                    |dft         j                  i}|dft         j                  |dft         j                  |dft         j                  i}| j                  ||       |dft         j                  |dft         j                  |dft         j                  |dft         j                  |d	ft         j                  |d
ft         j                  |dft         j                  |dft         j                  |dft         j                  |dft         j                  || j                         ft         j                  i}| j	                  ||||      }| j                  ||||      }|S )Ndingalings_vemail_addresses_vusers_vr   r/  r=  rH  rO  rY  r[  r]  r_  rb  rd  r+   r   r  rh   r  r  )	r|   rQ   r3   r   r%  r~  r   r   r   s	            r>   exp_optionsz#ComponentReflectionTest.exp_optionsW  s=     0$((;()488Y\"DHH

 	E<0Wtxx\"DHH&'^$dhh%&]#TXX^$dhh%&+,dhh)*DHHT))+,dhh
   vulC!!&%sC
r@   c                 *   dd i}|df|i}|df||df||df|i}| j                  ||       |df||df||df||d	fdd
i|dfddi|df||df||df||df||df||| j                         f|i}| j                  ||||      }	| j                  ||||	      }	|	S )Ntextr  r  r  r   r/  r=  rH  rO  rX  rY  rZ  r[  r]  r_  rb  rd  )r  rh   r  r  )
r|   rQ   r3   r   r%  emptyr~  r   r   r   s
             r>   exp_commentsz$ComponentReflectionTest.exp_commentsv  s     0%8()5Y\"E

 	E<0Wu\"E&'^$=' %&@) ]#U^$e%&+,e)*ET))+,e
"   vulC!!&%sC
r@   c                   
 dt         j                  d dfd

fd}|df 
ddt         j                         
d	       
d
       
d      gi}|df 
d	dt         j                         
d       
d      g|df 
ddt         j                         
dt         j                         
dt         j                         
d      g|df 
ddt         j                         
d       
d      gi}| j                  ||       |df |d       
dd       
dd       
d      g|df |d       
d	       
d
       
d      g|df |d	       
d       
d      g|df |dd       
dd       
d d!       
d"d#      g|d$f 
d      g|d%f |d       
d       
d&      g|d'f |d       
d(       
d      g|d)f |d       
d      g|d*f 
d+      g|d,f |d       
d+      g|| j                         f |d       
d       
d      gi}| j	                  ||||      }	| j                  ||||	      }	|	S )-NFTc                 `    | |t         j                  |||d}|dk(  r|j                  d       |S )N)rk   autoincrementtypedefaultr   r4  omitr  )r+   r   pop)rk   autor  r   r4  r   s         r>   r   z0ComponentReflectionTest.exp_columns.<locals>.col  s;     !%""$C v~(Jr@   c                 B    dt         j                  dd|} | fi |S )NTF)r  r  r4  r+   r   )rk   rs   r   s     r>   pkz/ComponentReflectionTest.exp_columns.<locals>.pk  s&    488M"MBt?r?"r@   r  r>  r  )r  r4  r?  rB  rM   r  rI  rJ  r  r0  r1  r3  r5  r6  r   rJ   rk   r   r/  r=  rH  rO  rP  rR  rQ  rS  rT  rU  rW  rY  r[  r\  r]  r^  r_  rb  rc  rd  r  )r|   rQ   r3   r   r%  r  r~  r   r   r   r   s             @r>   exp_columnsz#ComponentReflectionTest.exp_columns  s    dhht		#
 ^$N$((CL!IF	'
 ()LvA$%O$,
 YIFTXX>Gdhh/Gdhh/$%	" \"Dv9FE
%
$ 	E<0W9Ge,Ge,$%	  \">"L!IF	% &'< $%O$*
 ^$4.F$45L D":;' %&V]#bhFS=M%N^$r$xZ#f+&N%&D3v;(?+,s3xj)*RXs3x,@T))+,4FE
/C&
N   vulC!!&%sC
r@   c                 
    h dS )N>   rk   r  r  r4  rE   r|   s    r>   _required_column_keysz-ComponentReflectionTest._required_column_keys  s    66r@   c                    t         j                  d dd} |d       }t        j                  j                  j
                  r|df |d      i}n|df|i}|df||df||df|i}| j                  ||       |d	f |d
      |df |d      |df |ddd      |df |d      |df||df |d      |df |d      |df |d      |df||df |d      || j                         f |d      i}	t        j                  j                  j
                  s.|	j                         D ]  }
|
d   	t         j                  |
d<    | j                  ||	||      }| j                  ||||      }|S )Nr:  c                      t        |      | |dS )N)constrained_columnsrk   r   )list)rk   r   colss      r>   r  z+ComponentReflectionTest.exp_pks.<locals>.pk  s    '+Dz" r@   r   r  r>  r  r  r   r/  r0  r=  rH  r?  rM  rN  rO  rJ   rY  r[  r]  r_  rb  rd  rk   )r+   r   r   rR   materialized_views_reflect_pkr7   r  rh   reflects_pk_namesr  r  r  )r|   rQ   r3   r   r%  r  r  r~  r   r   valr   s               r>   exp_pkszComponentReflectionTest.exp_pks  s     88T 	 99AA#^4b6HIL#^4e<L()5Y\"E

 	E<0Wr)}\"B~$6&'=/* ^$bh%&]#RX^$bh%&4+,e)*BtHT))+,bh
 1199}}v;*"&((CK '   vulC!!&%sC
r@   c                 
    ddhS )Nrk   r  rE   r  s    r>   _required_pk_keysz)ComponentReflectionTest._required_pk_keys.  s    -..r@   c                 T    G d d      |t         j                  d ffd	}|dfg i}|dfg |dfg |dfg i}| j                  ||       |df |d	gd
gdd      g|df |dgd
gd       |dgdgddd      g|df |dgd
gd      g|dfg |dfg |df |dgdgdt        j                        g|df |dgdgdd       g|dfg |dfg |dfg || j                         fg i}t        j                  j                  j                  s||df   j                          t        j                  j                  j                  sE|j                         D ]2  }	|	D ]+  }
|
d    t         j                  ust         j                  |
d <   - 4 | j                  ||||      }| j                  ||||      }|S )!Nc                       e Zd Zd Zy)+ComponentReflectionTest.exp_fks.<locals>.ttc                 \    |d u xs' t         j                  j                  j                  |k(  S r   )r   r<   ry   rk  )r|   r   s     r>   __eq__z2ComponentReflectionTest.exp_fks.<locals>.tt.__eq__:  s,    TM Fyy((<<Er@   NrA   rB   rC   r  rE   r@   r>   r   r  9  s    r@   r   c                 F    | ||t         j                  ||n        ||dS )N)r  referred_columnsrk   r4   referred_schemareferred_tabler   r  )r  ref_col	ref_table
ref_schemark   r   r   s         r>   fkz+ComponentReflectionTest.exp_fks.<locals>.fk@  s1     (,$+88","8Jbd"+"
 
r@   r  r  r  r   r/  r6  r0  r.  r   r=  rB  r?  rH  r@  rA  r:  rI  rO  rY  r[  r\  rJ   r_  )r  r]  r^  rb  rd  rk   )r+   r   r  r   rT   rh   r   rR   rg  r7   r  named_constraintsr  r  r  )r|   rQ   r3   r   r%  r  r~  r   r   valsr  r   r   s               @r>   exp_fkszComponentReflectionTest.exp_fks2  s5   	 	 	(  0"5()2Y\"B

 	E<0W$%	{G,O  \"I;W5!N!N%-+	% &'$%	{G<* ^$b%&]# MF$%11	& ^$J<$4H' %&+,b)*BT))+,bC"
F ==EEFG$%++-1199C6{$((2&*hhF   (
   vulC!!&%sC
r@   c                 
    h dS )N>   rk   r  r  r  r  rE   r  s    r>   _required_fk_keysz)ComponentReflectionTest._required_fk_keys  s    
 	
r@   c                 ^   dd dddd}|dfg i}|dfg |dfg |dfg i}| j                  ||       |r||df   j                   |dd	
             |dfg  |ddd       |dddd
       |dddd      |dfg  |dt        j                  dd       |dt        j                  d       |ddddd      |dfg  |dt        j                  
       |dt        j                  d      |dfg |d fg |d!fg  |d"t        j                  d      |d#fg  |d$t        j                  d      |d%fg |d&fg  |d'd(d'd)i*      |d+fg  |d'd,d'd)i*      || j	                         fg  |d-d.
       |d/d0t
        j                   dd1      i}t        j                  j                  j                  r$t        j                  j                  j                  s*||d&f   j                          ||d+f   j                          | j                  ||||      }	| j                  ||||	      }	|	S )2NF)rD  column_sorting
duplicatesr  c                    t         j                  j                  }t         j                  j                  }t         j                  j                  }|r|j
                  r|r|j
                  sy|t        |      | t        j                  g d}	|r4||	d<   |j
                  r#|	d   x|	d<   }
|
D cg c]
  }||v rd n| c}|	d<   |r| |	d<   |	gS c c}w )NrE   )rD  column_namesrk   dialect_optionsinclude_columnsr  r  expressionsduplicates_constraint)	r   rR   foreign_keys_reflect_as_index#unique_constraints_reflect_as_index*reflect_indexes_with_ascdesc_as_expressionr7   r  r+   r   )rk   rD  r  r  r  r  fk_reqdup_reqsorting_expressionr   origr   s               r>   r   z0ComponentReflectionTest.exp_indexes.<locals>.idx  s     %%CCF&&JJG  KK  6>>7??  $T
#'88#%C (6$%%--03N0CCC&DH+DHq^ 3:D+C' /3+,5L+s   ,Cr  r  r  r   rM   ry  r   r/  r6  r.  T)rk   r  r0  r5  r1  ra  r`  )rk   rD  r=  )rk   rD  r  rB  r?  r>  rF  rH  rJ  rI  rO  rY  r[  r\  r]  r^  r_  rb  rc  re  )rn  )rk   r  rd  rf  r   ru  rk   rt  )rk   r  rD  )r  extendr+   r   rh   r   rf   r   rR   rl  r7   rm  r  r  r  )
r|   rQ   r3   r   r%  r   r~  r   r   r   s
             r>   exp_indexesz#ComponentReflectionTest.exp_indexes  s    #	J  0"5()2Y\"B

 	E<0&.1299F- W  %LTB YG  WgM$G 
 \" 
%V$((4DI
%YTXX$7
%  "1#
% &' *_4884*%DHH>* ^$b%&]# &[txxD9& ^$ 'Zdhh48' %&+, /*$'#3/ )* -osI>N-
 T))+, /U//'~6#	/U3
j   55==##@@HHF234::<F01288:  vulC!!&%sC
r@   c                 
    h dS )N>   rk   rD  r  rE   r  s    r>   _required_index_keysz,ComponentReflectionTest._required_index_keys	  s    11r@   Fc                    d dd dd}|dfg i}|dfg |dfg |dfg i}| j                  ||       |dfg  |d	d
ddd      |dfg  |dt        j                  t        j                         |ddddd      |dfg |dfg |dfg |dfg |dfg |dfg |dfg |dfg || j                         fg  |ddt        j
                          i}	|ri |||	S | j                  ||	||      }
| j                  ||||
      }
|
S )!NF)duplicates_indexis_indexr   c                     t         j                  j                  }|r|j                  syt	        |      | |d}|r||d<   |gS )NrE   )r  rk   r   r  )r   rR   *unique_index_reflect_as_unique_constraintsr7   r  )rk   r  r  r   r  reqr   s          r>   ucz+ComponentReflectionTest.exp_ucs.<locals>.uc  sL     ""MMC $T
"C
  *:&'5Lr@   r  r  r  r   r/  r1  r5  r`  T)rk   r  r  r=  rM   )rk   r  r?  r>  rF  rG  )rk   r  r   rH  rO  rY  r[  r]  r_  rb  rd  rk   rt  r   )r  r+   r   rh   r   rf   r  r  )r|   rQ   r3   r   r%  all_r  r~  r   r   r   s              r>   exp_ucszComponentReflectionTest.exp_ucs  s    +/	  0"5()2Y\"B

 	E<0W  &%2!  \" 	%FDHHE	% "1%=/	% &'^$b%&]#R^$b%&+,b)*BT))+, /F<~!>?/9
@ 6l6e6v66$$T65,GC%%fe\3GCJr@   c                 
    ddhS )Nrk   r  rE   r  s    r>   _required_unique_cst_keysz1ComponentReflectionTest._required_unique_cst_keysR  s    ''r@   c                   
  G d dt               
d
fd	}|dfg i}|dfg |dfg |dfg i}| j                  ||       |df |d	t        j                         |d
dd      g|df |dd      g|dfg |dfg |dfg |dfg |dfg |dfg |dfg |dfg || j	                         fg i}| j                  ||||      }	| j                  ||||	      }	|	S )Nc                       e Zd Zd Zy)+ComponentReflectionTest.exp_ccs.<locals>.ttc                     |j                         j                  dd      j                  dd      j                  dd      }| |v S )N(r-  )`)lowerreplace)r|   r   r   s      r>   r  z2ComponentReflectionTest.exp_ccs.<locals>.tt.__eq__^  s@    KKMWS"%WS"%WS"%	  s{"r@   Nr  rE   r@   r>   r   r  ]  s    #r@   r   c                      |       ||dS )N)sqltextrk   r   rE   )r  rk   r   r   s      r>   ccz+ComponentReflectionTest.exp_ccs.<locals>.ccg  s    !$x'JJr@   r  r  r  r   r/  r;  r7  r8  r9  rR  r=  z$address_id > 0 and address_id < 1000rE  r   rH  rO  rY  r[  r]  r_  rb  rd  r   )strr  r+   r   rh   r  r  )r|   rQ   r3   r   r%  r  r~  r   r   r   r   s             @r>   exp_ccszComponentReflectionTest.exp_ccsV  sK   	# 	#	K
  0"5()2Y\"B

 	E<0W?DHH-&4  \":-% &'^$b%&]#R^$b%&+,b)*BT))+,b/
2   vulC!!&%sC
r@   c                 
    ddhS )Nrk   r  rE   r  s    r>   _required_cc_keysz)ComponentReflectionTest._required_cc_keys  s    	""r@   c                     t        |      }t        t        j                  j                  |j                         v        y r   )r   r*   r   r   rT   get_schema_namesr   s      r>   test_get_schema_namesz-ComponentReflectionTest.test_get_schema_names  s,    z"**d.C.C.EEFr@   c                     t        |      }t        |j                  t        j                  j
                               t        |j                  d             y )Nsa_fake_schema_foo)r   r*   
has_schemar   r   rT   r)   r   s      r>   test_has_schemaz'ComponentReflectionTest.test_has_schema  s9    z" : :;<!567r@   c                     |j                  ddt        t        j                  j                  i      }t        |      }t        t        j                  j                  |j                         v        y)z
test #7300r   barschema_translate_mapN)execution_optionsr&   r   r   rT   r   r*   r   r   s      r>   %test_get_schema_names_w_translate_mapz=ComponentReflectionTest.test_get_schema_names_w_translate_map  s^      11ugnn88" 2 

 z"**d.C.C.EEFr@   c                    |j                  ddt        t        j                  j                  i      }t        |      }t        |j                  t        j                  j                               t        |j                  d             y )Nr   r  r  r  )	r
  r&   r   r   rT   r   r*   r  r)   r   s      r>   test_has_schema_w_translate_mapz7ComponentReflectionTest.test_has_schema_w_translate_map  si    11ugnn88" 2 

 z" : :;<!567r@   c                     t        |      }t        d|j                         v        t        |j                  d             |j	                  t        d             	 t        d|j                         v        t        |j                  d             |j                          t        d|j                         v        t        |j                  d             |j	                  t        d             y # |j	                  t        d             w xY w)Nfoo_barzCREATE SCHEMA foo_barzDROP SCHEMA foo_bar)r   r)   r   r  executer#   r   r*   r   s      r>   test_schema_cachez)ComponentReflectionTest.test_schema_cache  s     z"d33556+,3678	;Y$"7"7"99:T__Y/0I!6!6!889DOOI./s#89:Js#89:s   A:C1 1Dc                 r    t        j                         }t        |       t        |j                  d      sJ y )Nrk  )r   r9   r   hasattrry   )r|   engines     r>   test_dialect_initializez/ComponentReflectionTest.test_dialect_initialize  s,    '')v~~'<===r@   c                 n    t        |      }t        |j                  |j                  j                         y r   )r   r   rk  ry   r   s      r>   test_get_default_schema_namez4ComponentReflectionTest.test_get_default_schema_name  s(    z"D$$j&8&8&L&LMr@   foreign_keyorder_byr   
use_schemac                 Z   |rt         j                  }nd }h d}t        |      }|r'|j                  |      D cg c]  }|d   r|d    }}n|j	                  |      }|D 	cg c]	  }	|	|vs|	 }
}	|dk(  rg d}t        |
|       y g d}t        t        |
      |       y c c}w c c}	w )N>   r[  rO  r]  rY  r_  rd  rb  r   r  rw  )r=  rH  r/  )r   rT   r   get_sorted_table_and_fkc_namesget_table_namesr   sorted)r|   r   r  r  rQ   _ignore_tablesr   recr   ttable_namesanswers               r>   test_get_table_namesz,ComponentReflectionTest.test_get_table_names  s     ''FF
 z"  >>vFFCq6 AF   ))&1F"(D&QA^,Cq&D}$?FV$?F{#V, Es   B##	B(-B(c                 H   t        |      }|rt        j                  }nd }|j                  |      }t        j
                  j                  j                  r4t        t        |      ddg       t        |j                  |      dg       y g d}t        t        |      |       y )Nr  r  r  )r  r  r  )r   r   rT   get_view_namesr   rR   r{  r7   r   r  get_materialized_view_names)r|   r   r  r   rQ   r"  r#  s          r>   test_get_view_namesz+ComponentReflectionTest.test_get_view_names  s     z"''FF))&1..66{#&99%EF008>:JKEF{#V,r@   c                     t        |      }|j                         }t        t        |      dt        j
                   g       y rc   )r   get_temp_table_namesr   r  r   rf   r|   r   r   r  s       r>   test_get_temp_table_namesz1ComponentReflectionTest.test_get_temp_table_names  s9    z"446F#$6<<.'A&BCr@   c                 f    t        |      }|j                         }t        t        |      dg       y r   )r   get_temp_view_namesr   r  r+  s       r>   test_get_temp_view_namesz0ComponentReflectionTest.test_get_temp_view_names  s/     z"335F#$|n5r@   c                 &    | j                  |       y r   )_test_get_commentsr|   r   s     r>   test_get_commentsz)ComponentReflectionTest.test_get_comments!  s    
+r@   c                 X    | j                  |t        j                  j                         y r   )r1  r   r   rT   r2  s     r>   test_get_comments_with_schemaz5ComponentReflectionTest.test_get_comments_with_schema%  s     	
GNN,F,FGr@   c                    t        |      }| j                  |      }t        |j                  d|      ||df          t        |j                  d|      ||df          t        |j                  d|      ||df          | j                  j
                  j                  }t        |j                  ||      |||f          y )NrP   rO  r/  )r   r  r   r  r   rY  rk   )r|   r   rQ   r   expno_csts         r>   r1  z*ComponentReflectionTest._test_get_comments*  s    z"v."">&"A()	

 	""76":!"	

 	"">&"A()	

 ++00""6&"9 !	
r@   )FFzuse_views,use_schemac                    |rt         j                  }nd }| j                  j                  | j                  j                  }}|rg d}nddg}t        |      }t        |||f      D ]  \  }	}
|}|j                  |	|      }t        t        |      dkD  t        |             t        |
j                        D ]  \  }}t        |j                  ||   d          ||   d   j                  }|j                  }t!        |t"        j$                  j&                        r|j                  }t)        j*                  d      r2|t,        j.                  t,        j0                  fv rt,        j.                  }t        t        t3        |j4                        j7                  |j4                        j7                  t,        j8                  t,        j:                  t,        j0                  t,        j.                  t,        j<                  t,        j>                  t,        j@                  g            dkD  |j                  d	|j                  d
||   d   d	|d       |jB                  r||   d   J  	 y )Nr  r  r  r/  rH  rP   r   rk   r  rz  r  z), r  r  )"r   rT   r   r/  rH  r   zipr  r*   len	enumeratecolumnsr   rk   	__class__r  r   rn   r   
TypeEnginer   r}  	sql_typesDater   r|  __mro__intersectionr   NumericTimer   _BinaryrL   )r|   r   	use_viewsr  rQ   r/  	addressesr"  r   rt   tableschema_namer  ir   ctype	ctype_defs                    r>   r  z(ComponentReflectionTest.test_get_columnsB  s    ''FF KK--t{{/J/JyJK"$56Kz"!$[5)2D!EJ K##J{#CDCIM3t9- $EMM23CHHd1gfo.Q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476?EC#* 79-555Q 3 "Fr@   c                     | j                         }| j                  |   }t        |t               |      }| j	                  ||d       y )Nr   F)strict_constraints)rh   r   r   r   assert_tables_equal)r|   r   rt   ru   reflected_user_tmps        r>   test_reflect_table_temp_tablez5ComponentReflectionTest.test_reflect_table_temp_table  sO    ))+
;;z*"
*
 	  (U 	! 	
r@   c                 .   | j                         }| j                  |   }t        |      }|j                  |      }t	        t        |      dkD  t        |             t        |j                        D ]!  \  }}t        |j                  ||   d          # y )Nr   rk   )
rh   r   r   r  r*   r<  r=  r>  r   rk   )r|   r   rt   ru   r   r  rL  r   s           r>   test_get_temp_table_columnsz3ComponentReflectionTest.test_get_temp_table_columns  s}    ))+
;;z*z"
+D	As4y) 0 01FAs$q'&/* 2r@   c                     t        |      }|j                  d      }t        |D cg c]  }|d   	 c}g d       y c c}w )Nr   rk   )rJ   rk   r   )r   r  r   )r|   r   r   r  r   s        r>   test_get_temp_view_columnsz2ComponentReflectionTest.test_get_temp_view_columns  s?     z"-D)DSS[D)+@A)s   =)Fc                 ,   |rt         j                  j                  }nd }| j                  j                  | j                  j
                  }}t        |      }| j                  |      }|j                  |j                  |      }| j                  |g|||j                  f   g| j                         |j                  |j                  |      }	|||j                  f   d   }
t        |	d   |
       t         j                  j                  j                         5  t        |	d   d       d d d        | j                  j                   j                  }| j                  |j                  ||      g|||f   g| j                         y # 1 sw Y   _xY w)NrP   r  rk   rM  )r   r   rT   r   r/  rH  r   r  r  rk   _check_listr  r   rR   r  fail_ifrY  )r|   r   r  rQ   r/  rI  r   r7  
users_cons	addr_consexp_colsr8  s               r>   r  z.ComponentReflectionTest.test_get_pk_constraint  sf   
 ^^//FF;;,,dkk.I.Iyz"ll&l)++EJJv+F
L3

345t7M7M	
 **9>>&*I		/01FGI+,h7//779	&!=1 : ++00##F6#:;&&!"#""	
	 :9s   F

Fc                 >   |rt         j                  }nd }| j                  j                  | j                  j                  }}t        |      }|}t        j                  j                  j                  r|j                  |j                  |      }|d   }	t        j                  j                  j                         5  t        |	d   d       d d d        t        |	d   |       t        |	d   |j                         t        |	d   dg       t        |	d	   d
g       |j                  |j                  |      }
|
d   }	t        j                  j                  j                         5  t!        |	d   d u       d d d        t        |	d   |       t        |	d   |j                         t        |	d   dg       t        |	d	   dg       | j                  j"                  j                  }t        |j                  ||      g        y # 1 sw Y   ;xY w# 1 sw Y   xY w)NrP   r   rk   r.  r  r  r  r0  r  r6  rI  )r   rT   r   r/  rH  r   r   rR   rg  r7   r	  rk   r  rZ  r   implicitly_named_constraintsr*   rY  )r|   r   r  rQ   r/  rI  r   expected_schemausers_fkeysfkey1
addr_fkeysr8  s               r>   r
  z-ComponentReflectionTest.test_get_foreign_keys  s   
 ''FF KK--t{{/J/Jyz"  99AA//

6/JKNE!!33;;=E&M<0 > '(/:&'4()I;7+,/?.@A **9>>&*I
1::BBDE&M-. E 	E#$o6E"#UZZ0E$%	{3E'(+;*<=++00D!!&!8"=+ >= EDs   =H'HHHc                 h   | j                  d|j                  j                  z  dt        j                  j
                  z  dt        j                  j
                  z        \  }}}t        |      }|j                  |j                        }t        t        |      d       |d   }t        |d   t        j                  j
                         t        |d   |j                         t        |d   d	g       t        |d
   dg       |j                  |j                  t        j                  j
                        }t        t        |      d       |d   }	t        |	d   d |j                  j                  fv        t        |	d   |j                         t        |	d   d	g       t        |	d
   dg       y )Nz%s.local_tablez%s.remote_tablez%s.remote_table_2r   r   r  r  r  rJ   r  r\  rP   r^  )r   ry   rk  r   r   rT   r   r	  rk   r   r<  r*   )
r|   r   r[  r]  r_  r   local_fkeysrb  remote_fkeysfkey2s
             r>   "test_get_inter_schema_foreign_keysz:ComponentReflectionTest.test_get_inter_schema_foreign_keys  s    59KKz11EEE : ::'.."<"<<5
1\> z"++K,<,<=Ca AE#$gnn&@&@AE"#^%8%89E$%v.E'(;-8,,gnn&@&@ - 
 	Cq!Q#$""66	
 	E"#[%5%56E$%v.E'(:,7r@   c                 x   |rt         j                  }nd }t        |      }|j                  d|      }| j	                  |      }| j                  |||df   | j                         | j                  j                  j                  }| j                  |j                  ||      |||f   | j                         y )Nr/  rP   )
r   rT   r   r  r  rY  r  r   rY  rk   )r|   r   r  rQ   r   indexesr7  r8  s           r>   r  z(ComponentReflectionTest.test_get_indexes  s    
 ''FF z"""76":f-S&'*+T-F-F	
 ++00VF3 !%%	
r@   )rb  re  )rd  rf  ztname,ixnamec                    t        |      }|j                  |      }| j                         d |f   }| j                  ||| j                         t        |t               |      }t        t        |j                        d       t        t        |j                        d   j                  |       t        t        |j                        d   j                  |       y )Nr   r   r   )r   r  r  rY  r  r   r   r   r<  rj  r   r  rJ  rk   )r|   r   tnameixnamer   rj  expected_indexesr!  s           r>   test_get_noncol_indexz-ComponentReflectionTest.test_get_noncol_index8  s     z"""5)  ++-tUm<"2D4M4MN%:>C		NADOA$$a(DOA##V,r@   c                     t        |      }| j                         }|j                  |      }| j                  d      d |f   }| j	                  ||| j
                         y )NT)r  )r   rh   r  r  rY  r  )r|   r   r   rk   	reflectedr7  s         r>   &test_get_temp_table_unique_constraintsz>ComponentReflectionTest.test_get_temp_table_unique_constraintsN  s]     z"##%//5	lll%tTl3C)B)BCr@   c                 F   t        |      }| j                         }|j                  |      }|D ]  }|j                  dd         ddgddg}t        j
                  j                  j                  rg |d   d<   t        |D cg c]  }|d   dk(  s| c}|       y c c}w )	Nr  Fr   ru  )rD  r  rk   r   r  rk   )	r   rh   r  r  r   rR   index_reflects_included_columnsr7   r   )r|   r   r   rt   rj  indexpectedr   s           r>   test_get_temp_table_indexesz3ComponentReflectionTest.test_get_temp_table_indexesW  s    z"))+
"":.CGG%t,  ug}M
 ;;CC-/HQK)*#DGSs6{m'CSGD	
Ds   BBc                    |rt         j                  }nd }t        ddgddg dddg dddd	d
gdddgdddgdgt        j                  d            }t        d|t        dt        j                  d            t        dt        j                  d            t        dt        j                        t        d	t        j                  d            t        d
t        j                  d            |      }|D ],  }|j                  t        j                  |d   d|d   i       . |j                  |       t        |      }t        |j                  d|      t        j                  d            }	t               }
t!        t#        |      t#        |	             t%        ||	      D ]R  \  }}|j'                  dd       }|r|
j)                  |       t!        |j'                  dd       d        t!        ||       T t+               }t        d|||      }	|	j,                  D ch c]  }|j.                   }}|	j0                  D ch c](  }t3        |t        j                        r|j.                  * c}j5                  dg      }|j7                  |      rJ |
r t!        |
|       t!        |t                      | j8                  j:                  j.                  }t!        |j                  ||      g        y c c}w c c}w )Nunique_ar   )rk   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   rk   r   testtblrK  rC  rP   r  r  r   )r   rQ   )r   rT   r  operator
itemgetterr   r   rn   r   r   append_constraintr   r   r   r  r|  r   r<  r;  r  r  r   rj  rk   constraintsr   
differencerD  r   rY  )r|   rZ   r   r  rQ   uniquesrJ  r  r   rq  names_that_duplicate_indexr  refldupereflected_metadatar   	idx_namesuquq_namesr8  s                       r>   r  z3ComponentReflectionTest.test_get_unique_constraintsh  s    ''FF#cU;'I'I)E5>J&>(3%@ ##F+

 3		"&3		"&3

#5"))B-(5"))B-(

 B####R%7IbjI  	Z z"''	&'A##F+
	
 &)U"CL#i.)gy1JD$ 88.5D*..t4D)40dO 2 &Z$	
	 *3):):;):#SXX):	;  ++
+"b112 GG+
 *n%
&	 	 ))(333%*I6#% ++00D''v'>C <
s   $K:-K?c                     |rt         j                  }nd }t        |      }dD ])  }|j                  ||      }t	        t        |             + y )Nr:  rP   )r   rT   r   r   r*   bool)r|   r   r  rQ   r   viewr  s          r>   r  z0ComponentReflectionTest.test_get_view_definition  sM    
 ''FFz"DD((f(=ADG Er@   c                     t        |      }t        t              5  |j                  d       d d d        t        t              5  |j                  d       d d d        y # 1 sw Y   3xY w# 1 sw Y   y xY w)Nview_does_not_existr/  )r   r   r!   r   r   s      r>   'test_get_view_definition_does_not_existz?ComponentReflectionTest.test_get_view_definition_does_not_exist  sX    z"+,$$%:; -+,$$W- -, -,,,s   AA+A(+A4c                     t        |      }dD ]A  \  }}|j                  |      }|D ci c]  }|d   |
 c}|   }|j                  dd      rAJ  yc c}w )a  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/  r0  )rH  r?  )r=  r>  rk   r  TN)r   r  get)r|   r   r   rl  cnamer  r   id_s           r>   test_autoincrement_colz.ComponentReflectionTest.test_autoincrement_col  sj     z"
LE5
 ##E*D)-.A1V9a<.u5C77?D111
 /s   Ac                    t        t        j                        }|rt        j                  nd }t        j
                  j                  j                  rY|j                  d|      }t        t        |t                     |j                  d|      }t        t        |t                     y t        t              5  |j                  d|      }d d d        y # 1 sw Y   y xY w)Nr/  rP   rY  )r   r   r<   rT   r   rR   r   r7   r   r*   r   r:   r   r   )r|   r  r   rQ   r   s        r>   r   z.ComponentReflectionTest.test_get_table_options  s     vyy!'1##t1199(((@CJsD)*(()9&(ICJsD)*23,,WV,D 433s   :CC c                    t        t        j                        }t        j                  j
                  j                  rf|rt        j                  nd }|j                  |      }|j                  |      D ci c]  }||f|j                  ||       }}t        ||       y t        t              5  |j                         }d d d        y c c}w # 1 sw Y   y xY w)NrP   )r   r   r<   r   rR   r   r7   rT   get_multi_table_optionsr  r   r   r   r   )r|   r  r   rQ   r   rJ  r7  s          r>   test_multi_get_table_optionsz4ComponentReflectionTest.test_multi_get_table_options  s    vyy!1199+5V''4F..f.=C "111@@E !7!7f!7!MM@   SM23224 43 43s   8C3CCc                     fd}|S )Nc                    t              } ||d       ||d}| r |        } g }t        j                  |v r|j                  g d       t        j                  |v r|j                  ddg       t        j
                  |v r|j                  ddg       | r| |d<   |r||d<    || |||j                  d      	      }	|g}
|t        j                  k(  r2|j                         }|j                  d
       |
j                  |       |t        j                  k(  r2|j                         }|j                  d       |
j                  |       t              |
|	fS )NrH  )r3   r   )rO  r/  does-not-existr  r  r  rQ   r%  )rQ   r3   r   r%  r3   r   )r   r   r!  r  r"  r#  r  r    r  copyr  append)rQ   r3   r   r  single_reflect_fn
exp_methodr   rs   r%  r7  kwsnkwr   s               r>   provide_fixturez>ComponentReflectionTest.get_multi_exp.<locals>.provide_fixture  sK    :&D d$56 $/BL4'##? $&##%8:J$KL++t3##^5E$FG%8%1>"VVN3	C $C+++ggi 

3z'''ggi

3:&S00r@   rE   )r|   r   r  s    ` r>   get_multi_expz%ComponentReflectionTest.get_multi_exp  s    ,	1\ r@   c                      |||||t         j                  | j                        \  }}}|D ]0  }	|j                           |j                  di |	}
t        |
|       2 y NrE   )r   r   r  r   r  r   r|   r  rQ   r3   r   r  r   r  r7  rs   results              r>   #test_multi_get_table_options_tablesz;ComponentReflectionTest.test_multi_get_table_options_tablesD  si    
 '''
c3 B1T117B7F r@   c                      |||||t         j                  | j                        \  }}}|D ].  }	|j                          t	         |j
                  di |	|       0 y r  )r   r  r  r   r   get_multi_table_comment)
r|   r  rQ   r3   r   r  r   r  r7  rs   s
             r>   test_get_multi_table_commentz4ComponentReflectionTest.test_get_multi_table_commentV  se    
 '''
c3 B,,,2r2C8 r@   c           	          dt         fd}t        |t              r6t        |j	                         D ci c]  \  }} ||      | c}}||       y t        |D cg c]
  } ||       c}||       y c c}}w c c}w )Nr  c                 L    t        j                  dd|       j                         S )Nz['\" ]r-  )resubr  )r  s    r>   _cleanz:ComponentReflectionTest._check_expressions.<locals>._cleanh  s    66)R.4466r@   )r  r   r:   r   r  )r|   r  r7  err_msgr  er  s          r>   _check_expressionsz*ComponentReflectionTest._check_expressionsg  sn    	7 	7 c4 &,,.9.$!QA.93HF+FqF+S': :+s   A3
A9c                 T   |t        |||       y t        t        |      t        |      |       t        ||      D ]j  \  }}t        |      t        |      z  D ]K  }||v s
||v s||v s| d| d| }|dv r| j	                  ||   ||   |       9t        ||   ||   |       M l y )Nz - )r  r  )r   r<  r;  r|  r  )	r|   r  r7  req_keysmsgrr  r   r  s	            r>   rY  z#ComponentReflectionTest._check_listp  s    S!FSXs+FC(1Q#a&AH}aAF%(EQCs1#"6 AA 33AaD!A$H!adG4 ) )r@   c                     t        t        |j                               t        |j                                      |D ](  }||   ||   }}|r|g|g}}| j                  ||||       * y r   )r   r|  keysrY  )r|   r  r7  r  
make_listsr   r  r  s           r>   _check_table_dictz)ComponentReflectionTest._check_table_dict~  s`    CCHHJ0A!9c!fqAsQC1Q8Q/	 r@   c                      |||||t         j                  | j                        \  }}}|D ]A  }	|j                           |j                  di |	}
| j                  |
|| j                         C y r  )r   r  r  r   get_multi_columnsr  r  r  s              r>   test_get_multi_columnsz.ComponentReflectionTest.test_get_multi_columns  sw     '!!
c3 B+T++1b1F""630J0JK r@   c                      |||||t         j                  | j                        \  }}}|D ]C  }	|j                           |j                  di |	}
| j                  |
|| j                  d       E y )NT)r  rE   )r   r  r  r   get_multi_pk_constraintr  r  r  s              r>   test_get_multi_pk_constraintz4ComponentReflectionTest.test_get_multi_pk_constraint  s    
 '''LL
c3 B1T117B7F""T33 #  r@   c                     t         j                  j                  j                  sS||fD ]K  }|j	                         D ]6  }t        |      dkD  st        d |D              s%|j                  |       8 M y y )Nr   c              3   b   K   | ]'  }|j                  d       dt        j                  fv  ) yw)rk   N)r  r+   r   ).0r  s     r>   	<genexpr>z7ComponentReflectionTest._adjust_sort.<locals>.<genexpr>  s*      ,CFaf$)993s   -/r  )r   rR   r_  r7   r  r<  anysort)r|   r  rv  r   objr  s         r>   _adjust_sortz$ComponentReflectionTest._adjust_sort  sk    <<DD)::<C3x!| ,CF, ) S)	 ( * Er@   c                 
    |||||t         j                  | j                        \  }}}|D ]U  }	|j                           |j                  di |	}
| j                  |
|d        | j                  |
|| j                         W y )Nc                     t        | d         S )Nr  tupleds    r>   r   zEComponentReflectionTest.test_get_multi_foreign_keys.<locals>.<lambda>  s    uQ/D-E'Fr@   rE   )r   r	  r  r   get_multi_foreign_keysr  r  r  r  s              r>   test_get_multi_foreign_keysz3ComponentReflectionTest.test_get_multi_foreign_keys  s    
 '&&LL
c3 B0T00626FF ""630F0FG r@   c                      |||||t         j                  | j                        \  }}}|D ]A  }	|j                           |j                  di |	}
| j                  |
|| j                         C y r  )r   r  r  r   get_multi_indexesr  r  r  s              r>   test_get_multi_indexesz.ComponentReflectionTest.test_get_multi_indexes  sw    
 '!!
c3 B+T++1b1F""630I0IJ r@   c                 
    |||||t         j                  | j                        \  }}}|D ]U  }	|j                           |j                  di |	}
| j                  |
|d        | j                  |
|| j                         W y )Nc                     t        | d         S )Nr  r  r  s    r>   r   zKComponentReflectionTest.test_get_multi_unique_constraints.<locals>.<lambda>  s    U1^;L5Mr@   rE   )r   r  r  r   get_multi_unique_constraintsr  r  r  r  s              r>   !test_get_multi_unique_constraintsz9ComponentReflectionTest.test_get_multi_unique_constraints  s    
 ',,LL
c3 B6T66<<Ffc+MN""630N0NO	 r@   c                 
    |||||t         j                  | j                        \  }}}|D ]U  }	|j                           |j                  di |	}
| j                  |
|d        | j                  |
|| j                         W y )Nc                     t        | d         S Nr  r  r  s    r>   r   zJComponentReflectionTest.test_get_multi_check_constraints.<locals>.<lambda>  s    U1Y<5Hr@   rE   )r   r  r  r   get_multi_check_constraintsr  r  r  r  s              r>    test_get_multi_check_constraintsz8ComponentReflectionTest.test_get_multi_check_constraints  s    
 '++LL
c3 B5T55;;Ffc+HI""630F0FG	 r@   r   r  r  r	  r  r  r  r  methodc                     t        |      }t        ||      }t        t              5   |d       d d d        y # 1 sw Y   y xY w)Ntable_does_not_exists)r   getattrr   r!   )r|   r  r   r   r   s        r>   test_not_existing_tablez/ComponentReflectionTest.test_not_existing_table	  s8    0 z"tV$+,() -,,s	   	9Ac           	      H   t         j                  fd}t        j                  j	                  t         d|      5  t        t        d      5  t        |      j                  t        dt                     d        d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nc                  T    |j                  di       }t        d      |d<    | i |S )Nunreflectableerr)N
some_table)
setdefaultr"   )r   r   urmcs      r>   patchedz;ComponentReflectionTest.test_unreflectable.<locals>.patched"	  s1    or2B'>u'EB#$q;A;r@   r  r  r  )r   r  r+   patchobjectr	   r"   r   reflect_tabler   r   )r|   r   r  r  s      @r>   test_unreflectablez*ComponentReflectionTest.test_unreflectable	  sx    ((	
 ZZy*=wG&'>F
#11,
3T G HGFF HGs#   B.B;BB	BB!r   c                    t               }|rt        j                  nd }|j                  |||d       t	        |      }|j                  |      }|r)||j                  |      z  }	 ||j                  |      z  }|r|D cg c]	  }| d|  }}t        t        |j                        t        |             y # t        $ r Y Jw xY wc c}w )NF)rQ   r   resolve_fksr,  )r   r   rT   reflectr   r  r&  r'  r   r   r  r   )	r|   r   r  r   mrQ   r   r   r!  s	            r>   test_metadataz%ComponentReflectionTest.test_metadata-	  s    
 J'1##t			*V5e	Lz"%%f-d))&11F$::6BB /56v!!ovF6F188fVn-	 '  7s   'B: C	:	CCc           
      T   t        d|t        dt        d      t        dt        d      d       |j                  |       t	        |      }|j                  d      }t        |ddi       |j                  d      }|D ci c]  }|d	   |d
    }}ddd}t        ||       y c c}w )Nunicode_commentsunicodeu   é試蛇ẟΩrR  emojiu	   ☁️✨u   試蛇ẟΩ✨r  rk   r   )r  r  r   r   r   r   r   r  r   r  )	r|   r   rZ   r   tcr  r   valuer7  s	            r>   test_comments_unicodez-ComponentReflectionTest.test_comments_unicodeB	  s    9g?7G[9$	
 	J'z"##$67B)*+ 23267$Q6AiL($7)K@E3 8s   B%c           	         t        d|t        dt        d      d       |j                  |       t	        |      }|j                  d      }t        |ddi       |j                  d      d   }t        |d   |d	   iddi       y )
Nr  r  u&   🐍🧙🝝🧙‍♂️🧙‍♀️rR  u&   🎩🁰🝑🤷‍♀️🤷‍♂️r  r   rk   r   r  )r|   r   rZ   r   r  r   s         r>   test_comments_unicode_fullz2ComponentReflectionTest.test_comments_unicode_fullW	  s    7G-UV<		
 	J'z"##$67BABC/03QvY)%1Y'Z[r@   r   r,   )NF)mrA   rB   rC   run_insertsrun_deletesr   rD   r[   r*  rh   rX   rV   r  r  r  r    r   r   r  r  r  propertyr  r  r  r  r  r  r  r  r  r  r  r   rR   schema_reflectionr  r  r  r  schema_create_deleter  r  r  r   r   rS   r$  r(  r  r,  rU   rq   r/  r  r3  r5  r1  r  ro  rS  rU  r   rW  !primary_key_constraint_reflectionr  r
  rj  rh  r   r  rl  rm  ro  r  rr  temp_table_reflect_indexesrw  r  r  r  table_reflectionr  r   r  fixturer  r   r&  r  r  r  rY  r  r  r  r  r  r  r  r  r  r  r  r   r  r   comment_reflection_full_unicoder  rE   r@   r>   r(  r(    s9    $$K+KN N
 k- k-Z 
 

 O OB  4!)Z oo^^B oo^^"L oo^^^@ 7 7
 oo^^.` / /
 oo^^Vp 
 
 oo^^sj 2 2
 oo^^CJ ( (
 oo^^8t # # ''G (G
 ''8 (8 ''G (G ''
8 (
8 ''**; + (; ''> (>
 ''N (N W	((JJK
 W	w''(%,!-!-F W	w''(%,-- &&D 'D
 %%%%6 & &6
 ((, ), ((H  )H
0 W	g&&../	ug&&667$$w'7'7'G'GG	

 (
<6
<6B ++	
 ,	
 +++ ,+ ++,,%%B & - ,B
 W4))112\ 77
 8
: W4))112\ 77$> 8$>L 00"8  1"8H W4))112\ &&
 '
, W3/
 &&**22- 3 + '- ++22D 3 ,D 00
 1
  W	w''((\ 22TD 3TDl %%W4))112\ & %%. &. &&2 '20 W	w''((\EE W4!1!1!9!9:EB5 C5 __/ /b ++  ,  ((9  )9;50 L L" 77  8$* 77H  8H& &&K  'K  22P  3P" 11H  2H" W	g..DDE>>	

 >>	
 
((99:$99	

 $88	
 
g..AAB+.*/.* W$=W	w%%&. >." (( )( 55\ 6\r@   r(  c                       e Zd ZdZdZej                  d        Zej                  d        Zd Z	d Z
d Zej                  j                  d        Zej                  j                  d	        Zy
)TableNoColumnsTest)reflect_tables_no_columnsTc                 >    t        d|       |j                  |       y Nr  )r   r   r|   r   rZ   s      r>   table_no_columnsz#TableNoColumnsTest.table_no_columnsm	  s    gx J'r@   c                     t        d|       t        j                  |dt        d             t        j                  |dt        d             |j	                  |       y )Nr  r]   z*CREATE VIEW empty_v AS SELECT * FROM emptyr^   zDROP VIEW IF EXISTS empty_v)r   r   r`   r#   r   r  s      r>   view_no_columnsz"TableNoColumnsTest.view_no_columnsr	  sR    gx <=	
 	mS)F%G	
 	J'r@   c                 n    t        dt               |      }t        t        |j                        g        y )Nr  r   r   r   r   r  r   )r|   r   r  t2s       r>   test_reflect_table_no_columnsz0TableNoColumnsTest.test_reflect_table_no_columns	  s$    7HJjADJr@   c                     t        |      }t        |j                  d      g        |j                         }t        |dg i       y )Nr  r  )r   r   r  r  )r|   r   r  r   multis        r>   !test_get_columns_table_no_columnsz4TableNoColumnsTest.test_get_columns_table_no_columns	  s>    z"DW%r*&&(EOR()r@   c                     t               }|j                  |       t        |j                        j	                  dg      sJ y r  )r   r  r|  r   rD  )r|   r   r  r  s       r>   "test_reflect_incl_table_no_columnsz5TableNoColumnsTest.test_reflect_incl_table_no_columns	  s3    J			*188}))7)444r@   c                 n    t        dt               |      }t        t        |j                        g        y )Nempty_vr   r  )r|   r   r  r  s       r>   test_reflect_view_no_columnsz/TableNoColumnsTest.test_reflect_view_no_columns	  s$    9hj
CDJr@   c                     t        |      }t        |j                  d      g        |j                  t        j
                        }t        |dg i       y )Nr   )r   )Nr   )r   r   r  r  r   r"  )r|   r   r  r   r  s        r>    test_get_columns_view_no_columnsz3TableNoColumnsTest.test_get_columns_view_no_columns	  sH    z"DY',&&JOO&<E%r*+r@   N)rA   rB   rC   r   r   r   r  r  r  r  r  r  rR   r   r!  r#  rE   r@   r>   r  r  i	  s    1LK__( ( __( (*5
   , ,r@   r  c                   6   e Zd ZdZ ej
                  ddg      d        Z ej
                         d        Zd Zej                  j                  d        Zej                  j                   ej                  dd	d
d      d               Zej                  j                   ej                  ddd
d      d               Zej                  j                  d        Zej                  j"                  d        Zej                  j&                  d        Zd Zej                  j,                  d        Zej                  j,                  d        Zej                  j,                  d        Z ej                  d
dd
ej                  j4                  fd
d
dej                  j6                  fi d
dej                  j6                  fi dd
ej                  j8                  fd
d
dej                  j:                  fd
dd
ej                  j<                  fd      d        Z ej                  e  e!jD                  d      dfe ddfe# e!jH                         d fe  e!jD                  d!      d"ej                  jJ                  fe  e!jD                  d#      d$ej                  jJ                  fe& e'jP                         d%fe  e!jR                  d&       e!jR                  d'      z   d"ej                  jJ                  fd(      ej                  jT                  d)               Z+y
)*ComponentReflectionTestExtraTF)paramsc                 <    |j                   rt        j                  S y r   )paramr   rT   )r|   requests     r>   use_schema_fixturez/ComponentReflectionTestExtra.use_schema_fixture	  s    ==%%%r@   c                 @    t         j                  fd       }|S )Nc              3   N   K   t              f j                         y wr   )r   r   )r   r   rZ   r*  s    r>   goz:ComponentReflectionTestExtra.inspect_for_table.<locals>.go	  s%     $gj&999
+s   "%)
contextlibcontextmanager)r|   rZ   r   r*  r-  s    ``` r>   inspect_for_tablez.ComponentReflectionTestExtra.inspect_for_table	  s"    		"	"	, 
#	,
 	r@   c           
          d }t        |D cg c]  }|d    ||d         d c}d       }t        |d       }t        ||       y c c}w )Nc                     dj                  t        j                  d| j                         t        j                              S )N zand|\d|=|a|b|c|or|<|>)joinr  findallr  I)r  s    r>   	normalizez5ComponentReflectionTestExtra.ck_eq.<locals>.normalize	  s.    88

3W]]_bddK r@   rk   r  rk   r  c                     | d   S r  rE   items    r>   r   z4ComponentReflectionTestExtra.ck_eq.<locals>.<lambda>	      d9or@   r  c                     | d   S r  rE   r:  s    r>   r   z4ComponentReflectionTestExtra.ck_eq.<locals>.<lambda>	  r<  r@   )r  r   )r|   rq  rv  r7  r;  s        r>   ck_eqz"ComponentReflectionTestExtra.ck_eq	  sj    	
  &%D f)DO2LM% /
	 .
 	Ix s   A
c                      |d      5 \  }}t        d|t        dt        j                  d            |       d d d        | j	                  j                  d      g        y # 1 sw Y   -xY w)NrY  rM   rK  rP   )r   r   rn   r   r>  r  )r|   rZ   r0  rQ   r   s        r>   #test_check_constraint_no_constraintz@ComponentReflectionTestExtra.test_check_constraint_no_constraint	  sh    /04GVY vryy}-	 1 	

++,<V+L	
 10s   0A%%A.	my_inlineMyInlineNconstraint_namer   c                 z    |d      5 \  }}t        d|t        dt               d      t        dt               t        j                  d|            t        dt        d	            |
       d d d        j                  d
      }| j                  ||xs t        j                  ddg       y # 1 sw Y   ExY w)Nsa_ccrJ   TrK   r   a > 1 AND a < 5r   rM   rN   rP   a > 1 and a < 5r8  )
r   r   r   rn   r   r   r  r>  r+   r   r|   rZ   r0  rC  rQ   r   rq  s          r>   test_check_constraint_inlinez9ComponentReflectionTestExtra.test_check_constraint_inline	  s     w'+>FItWYD9I&&) vvbz* (  33GF3K	

 ,7txx0	
% ('s   A$B11B:my_ck_const	MyCkConstc           
      (    |d      5 \  }}t        d|t        dt                     t        j                  d|      |       d d d        j                  d      }| j                  ||xs t        j                  ddg       y # 1 sw Y   ExY w)NrE  r   za = 1 OR (a > 2 AND a < 5)r   rP   za = 1 or a > 2 and a < 5r8  )	r   r   r   rn   r   r  r>  r+   r   rH  s          r>    test_check_constraint_standalonez=ComponentReflectionTestExtra.test_check_constraint_standalone	  s     w'+>FIsGI&""0  ( 33GF3K	

 ,7txx9	
 ('s   ;BBc                 z    |d      5 \  }}t        d|t        dt               d      t        dt               t        j                  d            t        dt               t        j                  dd	
            t        dt                     t        dt        d            t        j                  dd
      t        j                  dd
      t        j                  dd
      |       d d d        j                  d      }| j                  |dddd	ddt        j                  ddg       y # 1 sw Y   IxY w)NrE  rJ   TrK   r   rF  r{  zb > 1 AND b < 5rA  r   r   rM   rN   some_uqzc > 1 AND c < 5cc1	some_c_uqrP   zc > 1 and c < 5r8  zb > 1 and b < 5rG  )r   r   r   rn   r   r   r   r  r>  r+   r   )r|   rZ   r0  rQ   r   rq  s         r>   test_check_constraint_mixedz8ComponentReflectionTestExtra.test_check_constraint_mixed
  s   w'+>FItWYD9sGIr'9'9:K'LMI&&'8{K
 sGI&vvbz*##F;""#45A##Ck: (& 33GF3K	

+<=$1BC.?@	
+ ('s   C D11D:c                 .   t        d|t        dt        d            t        dt        d            t        dt        d                  }t        dt	        j
                  |j                  j                        |j                  j                  t	        j
                  |j                  j                               dt        dt	        j                  |j                  j                               t        d	|j                  j                         |j                         t              }d	dgd
i dg}fd} ||d           G d dt              } G fddt              }t        j                  j                   j"                  rdg d |d      d |d      gd
d}	 ||	       |j%                  d|	       dd g |d d      gd
d}
 ||
       |j'                  |
       t)        |j+                  d      |       t-               }t        d|      }nGt/        d      5  t)        |j+                  d      |       t-               }t        d|      }d d d        | j1                  |j2                  j4                         y # 1 sw Y   1xY w)Nr!  xrC  yzt_idxa  long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string long string 
t_idx_longt_idx_2F)rk   r  rD  r  c                     t         j                  j                  j                  r$g | d<   j                  j
                   dg i| d<   y | j                  di        y )Nr  _includer  )r   rR   rt  r7   r  rk   r  )entryr   s    r>   completeIndexzYComponentReflectionTestExtra.test_reflect_expression_based_indexes.<locals>.completeIndexV
  s\    ??GG+-'(!((--.h7,'(   !2B7r@   r   c                       e Zd Zd Zy)[ComponentReflectionTestExtra.test_reflect_expression_based_indexes.<locals>.lower_index_strc                 B    |j                         }d|v xr
 d|v xs d|v S )Nr  rT  rU  r  )r|   r   ols      r>   r  zbComponentReflectionTestExtra.test_reflect_expression_based_indexes.<locals>.lower_index_str.__eq__b
  s)    [[]"}A#)*@sbyAr@   Nr  rE   r@   r>   lower_index_strr_  a
  s    Br@   rc  c                       e Zd Z fdZy)^ComponentReflectionTestExtra.test_reflect_expression_based_indexes.<locals>.coalesce_index_strc                 4    d|j                         v xr |v S )Ncoalescera  )r|   r   long_strs     r>   r  zeComponentReflectionTestExtra.test_reflect_expression_based_indexes.<locals>.coalesce_index_str.__eq__h
  s    !U[[]2Hx57HHr@   Nr  )rh  s   r>   coalesce_index_strre  g
  s	    Ir@   ri  )NrV  Nzlower(x)zlower(y))rk   r  r  rD  zcoalesce(x, 'z')r   z>Skipped unsupported reflection of expression-based index t_idx)r   r   r   r$   r   r  r   rT  rV  rU  rg  r   r   r  r   rR    reflect_indexes_with_expressionsr7   insertr  r   r  r   r
   !compare_table_index_with_expectedr  rk   )r|   rZ   r   r!  r   rv  r]  rc  ri  
expr_indexexpr_index_longr   r  rh  s     `          @r>   %test_reflect_expression_based_indexeszBComponentReflectionTestExtra.test_reflect_expression_based_indexes:
  s?   3r
#3r
#3r
#
 	gtzz!##%%(!##%%ACCEE1BC'lDMM!##%%:;iJ'z" "!$#%	
	8 	hqk"	Bc 	B	I 	I
 <<DD 1#J/#J/ 
  	J *%OOAz* %!%&xj'CD   O /*OOO,  %x0BsBj9B  D$$S)84Z3*= 	..*++00	
 s   '4JJc                    t        d|t        dt        d            t        dt        d                  }t        d|j                  j
                        }dg|j                  |j                  j                     d<   |j                  |       t        |      }|j                  d      }t        |ddgdgdt        j                  dg       t        |d	   d
   d|j                  j                  z     dg       t        dt               |      }t        t!        |j"                        d	   j                  |j                  j                     d   dg       y )Nr!  rT  rC  rU  rW  includeF)rk   r  r  rD  r  r   r  z
%s_includer   )r   r   r   r$   r   rT  r  r  rk   r   r   r  r   r+   r   r   r  rj  )r|   rZ   r   r!  r   r   r  r  s           r>   test_reflect_covering_indexz8ComponentReflectionTestExtra.test_reflect_covering_index
  sE   3r
#3r
#	
 GQSSUU#BEJ--223I>J'z"&&s+ $%(E(+u#'+xx	
 	N,-z00555 E		
 3
*=Q//
0A0A0F0FG E		
r@   c                     t        d|gt        |      D cg c]  \  }}t        d|z  |       c}} }|j                  |       t	        |      j                  d      D cg c]  }|d   	 c}S c c}}w c c}w )Nr!  zt%dr  )r   r=  r   r   r   r  )r|   r   rZ   r   rL  type_r!  r   s           r>   _type_round_tripz-ComponentReflectionTestExtra._type_round_trip
  s    
 8A7GH7G81efUQY&7GH

 	
#*:#6#B#B3#GH#Ga&	#GHH	 I Is   A3$A9c                     | j                  ||t        j                  dd            D ]J  }t        |t        j                        sJ t	        |j
                  d       t	        |j                  d       L y )N   r2  )ru  rA  rE  r   r   	precisionscaler|   r   rZ   typs       r>   test_numeric_reflectionz4ComponentReflectionTestExtra.test_numeric_reflection
  s_    (()"3"3B":
C c9#4#4555r"		1
r@   c                     | j                  ||t        j                  d            d   }t        |t        j                        sJ t	        |j
                  d       y )N4   r   )ru  rA  r   r   r   lengthrz  s       r>   test_varchar_reflectionz4ComponentReflectionTestExtra.test_varchar_reflection
  sR    ##)"2"22"6

 #y//000CJJr@   c           
         t        d|t        dt        d      t        dt        d            }|j                  |       t	        t        |      j                  d      D ci c]  }|d   |d    c}ddd	       y c c}w )
Nr!  r   Tr3  r{  Frk   r4  )r   r{  )r   r   r   r   r   r   r  )r|   r   rZ   r!  r   s        r>   test_nullable_reflectionz5ComponentReflectionTestExtra.test_nullable_reflection
  s    3$/3%0	
 	
 #:.::3??C FS_,? U#	
s   !A=CASCADEzSET NULLz	NO ACTIONRESTRICTzexpected,ondelete,onupdatec                    i }|r||d<   |r||d<   ||}t        d|t        dt        d      d       t        d|t        dt        d      t        d	t        t        d
d            t        dt	        d            d       t        d|t        dt        d      t        dt	        d      d      t        dt              t        j                  dgdgfddi|d       |j                  |       t        |      }|j                  d      d   d   }t        |D 	ci c]  }	||	   s	|	||	    c}	i        |j                  d      d   d   }t        ||       y c c}	w )NondeleteonupdaterT  rJ   TrK   r   rJ  x_idzx.idxidr   test
   userrk   rN   Fr3  tidztable.idmyfkr   r4   )r   r   r   r   r   rn   r   r   r   r	  r   )
r|   r   rZ   rv  r  r  r4   r   optsr   s
             r>   test_get_foreign_key_optionsz9ComponentReflectionTestExtra.test_get_foreign_key_options
  st   T "*GJ"*GJH4d3		
 	4d367JvE$BC66":&	
 	4d366":65'"##*,26= 
	
 	J'z" $$W-a0;1AaQQZ126$$V,Q/	:D( 2s   
E'E10z'?10'?z1|truez3 + 5z3\+5z(3 * 5)z3\*5zcurrent_timestamp|now|getdate35zdatatype, default, expected_regc           
          t        d|t        dt        d      t        d||            }|j                  |       t	        |      j                  d      d   d   }t        j                  d	d
|      }t        ||t        j                         y )Nr!  rJ   TrK   thecol)server_defaultr   r  z	[\(\) \']r-  )flags)
r   r   r   r   r   r  r  r  r   
IGNORECASE)	r|   rZ   r   datatyper  expected_regr!  rq  reflected_sanitizeds	            r>   test_server_defaultsz1ComponentReflectionTestExtra.test_server_defaultsI  s}    : 4d38Xg>	
 	
J'33C8;IF	 ff\2yA$l"--Hr@   ),rA   rB   rC   r   r   r  r*  r0  r>  rR   r  r@  "inline_check_constraint_reflectionr   rI  rM  rR  indexes_with_expressionsro  rt  rr  ru  r
  r|  r  r  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   rn   r  r   trueexpression_server_defaultsr   r   nowliteral_columnserver_defaultsr  rE   r@   r>   r%  r%  	  s   KW__T5M* + W__ !. 11
 2
 88WZ0A
 9
@ 11W{D3D
 2
4 88
 9
> ..X
 /X
t 55(
 6(
TI && ' && ' &&
 '
  WNN		
 NN		
 NN		
 NN		
 NN		
 NN		
 .K&N3O&N3l W	'"''$-+	$	"	'"'')Y'BGGG77		
 BGGI77		
 
8488:?@Bc"%6R%6%6s%;;77		
 3/2 %%I &34Ir@   r%  c                   0    e Zd ZdZdZed        Zd Zd Zy)NormalizedNameTest)denormalized_namesTc                     t        t        dd      |t        dt        d             t        t        dd      |t        dt        d      t        dt	        d                   y )	Nr   Tr   rJ   rK   r  t1idzt1.id)r   r%   r   r   r   rY   s     r>   r[   z NormalizedNameTest.define_tablesw  sU    D)4d3	

 	D)4d36:g./		
r@   c                    t               }t        t        dd      |t        j                        }|j
                  d   }|j                  j                  j                  |j                  j                        sJ t               }|j                  t        j                  d        |j
                  d   j                  j                  j                  |j
                  d   j                  j                        sJ y )Nr  Tr  r   r   c                 &    | j                         dv S )Nr   r  ra  )rk   r  s     r>   r   zINormalizedNameTest.test_reflect_lowercase_forced_tables.<locals>.<lambda>  s    DJJLL,Hr@   )only)r   r   r%   r   r<   r   r   r  r   rJ   r  )r|   r   t2_reft1_refm3s        r>   $test_reflect_lowercase_forced_tablesz7NormalizedNameTest.test_reflect_lowercase_forced_tables  s    ZD)2VYY
 4xx}}''444Z


IIH 	 	
 yy  %%0041B1B1E1EFFFr@   c                 R   t        t        j                        j                         D cg c]  }|j	                         dv r| }}t        |d   j                         |d   j	                                t        |d   j                         |d   j	                                y c c}w )Nr  r   r   )r   r   r<   r  r  r   upper)r|   r!  
tablenamess      r>   r$  z'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$N)	rA   rB   rC   r   r   rD   r[   r  r$  rE   r@   r>   r  r  s  s)    *LK
 
G:r@   r  c                   \    e Zd Zd Zd Zd Zd Zej                  j                  d        Z
y)ComputedReflectionTestc                     t        t        j                        }|j                  d      }|D ci c]  }|d   |
 }}t	        d|d   d   v        t        |d   d   d        t        |d   d   d        y c c}w )Ncomputed_default_tablerk   42with_defaultr  normalcomputed_col)r   r   r<   r  r*   r   )r|   r   r  r   col_datas        r>   !test_computed_col_default_not_setz8ComputedReflectionTest.test_computed_col_default_not_set  s    vyy! 89*./$QAfIqL$/0;;<HXy)40H^$Y/6 0s   A6c                 T   t        t        j                        }|j                  d      }|D ci c]  }|d   |
 }}dD ]  }t	        d||   v        |d   }t	        d|v        t	        d|d   v        t        | j                  |d   d         d       t        d|d   v t        j                  j                  j                         t        j                  j                  j                  r5t        |d   d   t        j                  j                  j                         y y c c}w )	Nr  rk   )rJ   r  r  computedr  r  	normal+42	persisted)r   r   r<   r  r*   r   r7  r   rR   "computed_columns_reflect_persistedr7   "computed_columns_default_persisted)r|   r   r  r   rM   r   compDatas          r>    test_get_column_returns_computedz7ComputedReflectionTest.test_get_column_returns_computed  s   vyy! 89&*+d&	1d+3CJd3i/0 4'
h&'	Xj112DNN8J/	:;[I8J//??GG	
 >>FF$[1  CCKK G ,s   D%c                     t        d||   v        ||   d   }t        | j                  |d         |       t        j                  j
                  j                  rt        d|v        t        |d   |       y y )Nr  r  r  )r*   r   r7  r   rR   r  r7   r   )r|   rM   columnr  r  r  s         r>   check_columnz#ComputedReflectionTest.check_column  sp    
d6l*+<
+DNN8I./9>>FFK8+,%y1 Gr@   c                    t        t        j                        }|j                  d      }|D ci c]  }|d   |
 }}| j	                  |ddt
        j                  j                  j                         t
        j                  j                  j                  r| j	                  |ddd       t
        j                  j                  j                  r| j	                  |dd	d
       y y c c}w )Ncomputed_column_tablerk   computed_no_flagr  computed_virtualznormal+2Fcomputed_storedz	normal-42T)r   r   r<   r  r  r   rR   r  r7   computed_columns_virtualcomputed_columns_storedr|   r   r  r   rM   s        r>   !test_get_column_returns_persistedz8ComputedReflectionTest.test_get_column_returns_persisted  s    vyy! 78&*+d&	1d+??GG		
 44<<"	 33;;!	 < ,s   C&c                    t        t        j                        }|j                  dt        j                        }|D ci c]  }|d   |
 }}| j                  |ddt        j                  j                  j                         t        j                  j                  j                  r| j                  |ddd       t        j                  j                  j                  r| j                  |d	d
d       y y c c}w )Nr  rP   rk   r  z	normal/42r  znormal/2Fr  z	normal*42T)r   r   r<   r  rT   r  r   rR   r  r7   r  r  r  s        r>   -test_get_column_returns_persisted_with_schemazDComputedReflectionTest.test_get_column_returns_persisted_with_schema  s    vyy!#F,>,>   
 '++d&	1d+??GG		
 44<<"	 33;;!	 < ,s   C6N)rA   rB   rC   r  r  r  r  r   rR   rS   r  rE   r@   r>   r  r    s6    7*26  r@   r  c                   p    e Zd ZdxZZdZdZed        Zd Z	d Z
ej                  j                  d        Zy)IdentityReflectionTestNT)identity_columnsr
  c                    t        d|t        dt              t        dt        t                            t        d|t        dt        t        dddd	d
dd                   t        j
                  j                  j                  rGt        d|t        dt              t        dt        t        dd            t        j                         y y )Nr   r  id1r  r   Tr   r   rV     alwaysstart	incrementminvaluemaxvaluecyclecacherK  )r  r  rP   )
r   r   r   r   r   rR   rS   r7   r   rT   rY   s     r>   r[   z$IdentityReflectionTest.define_tables  s    8W%5'8:.		
 		
" ##++x)ugxt2'FG)) ,r@   c                    t         j                  j                  j                  rd}t	        |      D ]  }||vs|j                  |        |rlt        t        |      t        |             |D ]H  }|dk(  rt        ||   ||   k         |dv rt        ||   ||   k\         6t        ||   ||   |       J y t        ||       y t        |d   |d          t        |d   |d          y )Nr  r  >   r  r  r  r  )	r   rR   identity_columns_standardr7   r  r  r   r<  r*   )r|   r  r7  approxcommon_keysr   s         r>   checkzIdentityReflectionTest.check'  s    55==K %[K'IIaL ! CJC)AJaCF 2333aCF 23E!Hc!fa0  E3gG-k"C$45r@   c                 .   t        t        j                        }|j                  d      |j                  d      z   }|D ]  }|d   dk(  rt	        d|v        |d   dk(  rVd|v rt        |d          t        |d   d        t        d|v        | j                  |d   t        d	d
d
d
dd	d
      d       w|d   dk(  sd|v rt        |d          t        |d   d        t        d|v        | j                  |d   t        ddddddd      d	        y )Nr   r  rk   r  identityr  r  r  Fr   r  Tr  r   r   r   r  rV  r  )	r   r   r<   r  r)   r*   r   r  r:   r|   r   r  r   s       r>   test_reflect_identityz,IdentityReflectionTest.test_reflect_identityD  sA   vyy!%(8(8(>>C6{h&s*+V%"c)C01C	ND)
c)*

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


O#"#!#!#" !  5 r@   c                 n   t        t        j                        }|j                  dt        j                        }|D ]v  }|d   dk(  rt        d|v        |d   dk(  s"d|v rt        |d          t        |d   d        t        d|v        | j                  |d   t        d	d
ddddd      d	       x y )Nr   rP   rk   r  r  r  r  r  TrK  r   r  Fr  r  )
r   r   r<   r  rT   r)   r*   r   r  r:   r  s       r>   test_reflect_identity_schemaz3IdentityReflectionTest.test_reflect_identity_schemap  s    vyy!V-?-?@C6{h&s*+V%"c)C01C	ND)
c)*


O# "#!"!+#     r@   )rA   rB   rC   r  r  r   r   rD   r[   r  r  r   rR   rS   r  rE   r@   r>   r  r    sT     $$K+K;L B6:*X  r@   r  c                       e Zd ZdZed        Zej                  j                  d        Z	ej                  j                  d        Zy)CompositeKeyReflectionTestTc                 2   t        d|t        dt              t        dt              t        dt        j                  d            t        j                  dddd      d d	      }t        d
|t        dt        d      t        dt              t        dt              t        dt        j                  d            t        j                  g d|j                  j                  |j                  j                  |j                  j                  gd      d d		       y )Ntb1rJ   attrrk   rK  pk_tb1r   Tr<  tb2rK   pidpattrpnamer  r  r  fk_tb1_name_id_attr)r   r   r   rA  rp   rn   r   r   r   rk   rJ   r  )r=   rZ   r  s      r>   r[   z(CompositeKeyReflectionTest.define_tables  s    4!67#69,,R01##FD&xH	
 	4d35'"7G$7I--b12##)SUUXXsuuzz2*
 	
r@   c                     t        |      }|j                  | j                  j                  j                        }t        |j                  d      g d       y )Nr  rk   rJ   r  )r   r  r   r  rk   r   r  )r|   r   r   rL   s       r>   test_pk_column_orderz/CompositeKeyReflectionTest.test_pk_column_order  sA     z",,T[[__-A-ABKOO124JKr@   c                     t        |      }|j                  | j                  j                  j                        }t        t        |      d       |d   }t        |j                  d      g d       t        |j                  d      g d       y )Nr   r   r  r  r  r   )r   r	  r   r  rk   r   r<  r  )r|   r   r   foreign_keysrb  s        r>   test_fk_column_orderz/CompositeKeyReflectionTest.test_fk_column_order  sn     z",,T[[__-A-ABCq!QEII()+ABEII+,.GHr@   N)rA   rB   rC   r   rD   r[   r   rR   r  r  r   r  rE   r@   r>   r  r    s]    K
 
6 77L 8L 77I 8Ir@   r  )r(  r%  r  r   r   rG   r   r  r  r  r  )Gr.  r  r  r8   rn   r-  r   r   r   r   r   r	   r
   r   r   	provisionr   r   rQ   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rA  r  r   r   r    excr!   r"   r#   r$   sql.elementsr%   
sql.schemar&   r'   r(   r)   r*   r+   rZ   r/  
TablesTestr.   rG   r   TestBaser   r   r&  r(  r  r%  r  ComputedReflectionFixtureTestr  r  r  __all__rE   r@   r>   <module>r     s     	       $    + /              "    ! # *   ' & & %    %h11  S:* S:lJ
8&& J
Z91x'8'8 91xT0X00 T0n1<H\n.E H\V:2,** 2,jRI?H4E4E RIj(:,, (:V^XCC ^BJX00 JZ.I!4!4 .Ibr@   