Ë
    ðmxiþÔ ã                   ó  — 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d+lm4Z4 d,\  Z5Z6 G d-„ d.ejn                  «      Z8 G d/„ d0e8«      Z9 G d1„ d2ejn                  «      Z: G d3„ d4ejv                  «      Z< G d5„ d6ejv                  «      Z= G d7„ d8ejn                  «      Z>d9„ Z? G d:„ d;e0e8«      Z@ G d<„ d=ejv                  «      ZA G d>„ d?e/ejv                  «      ZB G d@„ dAejn                  «      ZC G dB„ dCejˆ                  «      ZE G dD„ dEejn                  «      ZF G dF„ dGejn                  «      ZGdHZHy)Ié    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_none)Ú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Ú
sqlalchemyr1   r   Útesting_engineÚdictÚ
StaticPoolÚdb)Úclsr1   s     ú_/home/htdocs/ttos/venv/lib/python3.12/site-packages/sqlalchemy/testing/suite/test_reflection.pyÚ
setup_bindz"OneConnectionTablesTest.setup_bind<   sI   € ô
 ×Ñ×6Ñ6×>Ò>Ý'ä×)Ñ)Ü t§¡¸gÔFôð ô —9‘9Ðó    N)Ú__name__Ú
__module__Ú__qualname__Úclassmethodr@   © rA   r?   r/   r/   ;   s   „ Øñó ñrA   r/   c                   óF  — e Zd 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)ÚHasTableTestTNc                 óò  — 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Údataé2   Útest_table_s©Úschema)r   r   r   r   r   ÚrequiresÚschemasr8   r   Útest_schemaÚview_reflectionÚdefine_viewsÚhas_temp_tableÚdefine_temp_tables©r>   Úmetadatas     r?   Údefine_tableszHasTableTest.define_tablesP   s¹   € äØØÜ�4œ¨dÔ3Ü�6œ6 "›:Ó&ô		
ô ×Ñ×#Ñ#×+Ò+ÜØØÜ�tœW°$Ô7Ü�vœv b›zÓ*Ü×)Ñ)õô ×Ñ×+Ò+Ø×Ñ˜XÔ&Ü×Ñ×*Ñ*×2Ò2Ø×"Ñ" 8Õ,ð 3rA   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   rS   rT   r8   r   rU   )r>   r[   Úquerys      r?   rW   zHasTableTest.define_viewsf   s¤   € àCˆä�‰�X˜~¬s°5«zÔ:Ü�‰�X˜}¬c°.Ó.AÔBä×Ñ×#Ñ#×+Ó+ô ×&Ó&Ü×&Ó&ðð ô �L‰L˜ >´3°u³:Ô>Ü�L‰LØØÜÐ%¬×);Ñ);Ñ<Ó=õð ,rA   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_name|   ó%   € ä"Ü”F—I‘I ¬6¯<©<¨.Ð9ó
ð 	
rA   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 )
NrK   TrL   ÚnamerO   r^   ú=create temporary view user_tmp_v as select * from user_tmp_%sr_   údrop view user_tmp_v)r   r   r=   ri   r   r   ÚsaÚINTÚVARCHARr   rS   rV   r8   Útemporary_viewsr   ra   r#   rg   ©r>   r[   ÚkwÚ
table_nameÚuser_tmps        r?   rY   zHasTableTest.define_temp_tables‚   sÕ   € ä$¤V¬V¯Y©YÓ7ˆØ×(Ñ(Ó*ˆ
ÜØØÜ�4œŸ™¨TÔ2Ü�6œ2Ÿ:™: b›>Ó*ñ	
ð
 ñ
ˆô ×Ñ×,Ñ,×4Ò4Ü× Ñ ×0Ñ0×8Ò8ä�L‰LØØÜð0Ü28·,±,ñ?óôô �L‰L˜ =´#Ð6LÓ2MÕNð 9ð 5rA   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)NrJ   rP   Únonexistent_table)r   r=   Úbeginr+   ÚdialectÚ	has_tabler)   ©ÚselfÚconns     r?   Útest_has_tablezHasTableTest.test_has_table›   s‰   € Ü�Y‰Y�_‰_Óð 	M $Ü”F—I‘I×%Ñ%×/Ñ/°°lÓCÔDÜ”V—Y‘Y×&Ñ&×0Ñ0°°~ÓFÔGÜ”V—Y‘Y×&Ñ&×0Ñ0°Ð7JÓKÔL÷	M÷ 	Mñ 	Mú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)NrJ   Ú	new_tableÚcol)r   r   r=   r+   r{   r   r   r   r)   ÚcreateÚclear_cacheÚdrop)r}   r[   ÚinspÚnts       r?   Útest_has_table_cachez!HasTableTest.test_has_table_cache¡   s«   € Ü”v—y‘yÓ!ˆÜ�—‘˜|Ó,Ô-Ü�; ¬&°¼Ó*@ÓAˆÜ�—‘ Ó,Ô-Ø
�	‰	”&—)‘)Ôð	Ü�T—^‘^ KÓ0Ô1Ø×ÑÔÜ�D—N‘N ;Ó/Ô0à�G‰G”F—I‘IÕøˆB�G‰G”F—I‘IÕú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)NrJ   rQ   rP   rx   )r   r=   ry   r)   rz   r{   rU   r+   r|   s     r?   Útest_has_table_schemaz"HasTableTest.test_has_table_schema®   sÂ   € ä�Y‰Y�_‰_Óð 	 $ÜÜ—	‘	×!Ñ!×+Ñ+Ø˜,¬v×/AÑ/Að ,ó ôô
 Ü—	‘	×!Ñ!×+Ñ+Ø˜.´×1CÑ1Cð ,ó ôô
 Ü—	‘	×!Ñ!×+Ñ+ØÐ-´f×6HÑ6Hð ,ó ô÷	÷ 	ñ 	ú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)NrJ   Únonexistent_schemarQ   )r   r=   ry   r)   rz   r{   r|   s     r?   Ú!test_has_table_nonexistent_schemaz.HasTableTest.test_has_table_nonexistent_schemaÁ   sT   € ä�Y‰Y�_‰_Óð 	 $ÜÜ—	‘	×!Ñ!×+Ñ+Ø˜,Ð/Cð ,ó ô÷	÷ 	ñ 	ús   Ÿ6AÁA'c                 óN   — t        |«      }t        |j                  d«      «       y ©NÚvv©r   r+   r{   ©r}   Ú
connectionr†   s      r?   Útest_has_table_viewz HasTableTest.test_has_table_viewÊ   s   € ä�zÓ"ˆÜ�—‘˜tÓ$Õ%rA   c                 ón   — t        |«      }| j                  «       }t        |j                  |«      «       y ©N)r   ri   r+   r{   )r}   r“   r†   ri   s       r?   Útest_has_table_temp_tablez&HasTableTest.test_has_table_temp_tableÏ   s+   € ä�zÓ"ˆØ×.Ñ.Ó0ˆÜ�—‘˜Ó/Õ0rA   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Ó"ˆÜ�—‘˜|Ó,Õ-rA   c                 ól   — t        |«      }t        |j                  dt        j                  «      «       y r�   )r   r+   r{   r   rU   r’   s      r?   Útest_has_table_view_schemaz'HasTableTest.test_has_table_view_schemaÜ   s'   € ô �zÓ"ˆÜ�—‘˜t¤V×%7Ñ%7Ó8Õ9rA   )rB   rC   rD   Ú__sparse_driver_backend__Úrun_deletesrE   r\   rW   ri   rY   r   rˆ   r   rS   rT   rŠ   r�   Úviewsr”   rX   r—   rV   rr   r›   r�   rF   rA   r?   rH   rH   K   sd  „ Ø $Ðà€Kàñ-ó ð-ð* ñó ðð* ñ
ó ð
ð
 ñOó ðOò0Mòð ×Ñ×Ññó ðð$ ×Ñ×Ññó ðð ×Ñ×Ññ&ó ð&ð ×Ñ×$Ñ$ñ1ó %ð1ð
 ×Ñ×$Ñ$Ø×Ñ×%Ñ%Ø×Ñ×%Ñ%ñ.ó &ó &ó %ð.ð ×Ñ×ÑØ×Ñ×Ññ:ó ó ñ:rA   rH   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 )NrJ   rK   TrL   rN   rO   Údata2Úmy_idxrQ   Úmy_idx_s)r   r   r   r   r$   ÚcrN   r   rS   rT   r8   r   rU   )r>   r[   Útts      r?   r\   zHasIndexTest.define_tablesç   s¯   € äØØÜ�4œ¨dÔ3Ü�6œ6 "›:Ó&Ü�7œF 2›JÓ'ó
ˆô 	ˆh˜Ÿ™Ÿ	™	Ô"ä×Ñ×#Ñ#×+Ò+ÜØØÜ�tœW°$Ô7Ü�vœv b›zÓ*Ü×)Ñ)ôˆBô �*˜bŸd™dŸi™iÕ(ð ,rA   rz   Ú	inspectorÚkind©Úargnamesc                 óB   ‡— |dk(  rˆfd„S t        ‰«      j                  S )Nrz   c                  ó^   •— t        j                  j                  j                  ‰g| ¢­i |¤ŽS r–   )r   r=   rz   Ú	has_index)ÚaÚkr~   s     €r?   ú<lambda>z)HasIndexTest._has_index.<locals>.<lambda>   s&   ø€ ¤6§9¡9×#4Ñ#4×#>Ñ#>¸tÐ#MÀaÒ#MÈ1Ñ#M€ rA   )r   r°   )r}   r«   r~   s     `r?   Ú
_has_indexzHasIndexTest._has_indexþ   s!   ø€ Ø�9ÒÛMÐMä˜4“=×*Ñ*Ð*rA   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)NrJ   r¦   r§   rx   Únonexistent_idxÚmy_idx_2Útest_table_2Úmy_idx_3Úfoorª   T)r´   r$   ÚtablesrJ   r¨   r¥   r   r   r   rƒ   Ú__self__r„   r…   )r}   r«   r“   r[   ÚmethÚidxÚtbls          r?   Útest_has_indexzHasIndexTest.test_has_index  so  € à�‰˜t ZÓ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Ó1°TÑ9Ð9Ð9Ù˜¨
Ó3°tÑ;Ð;Ñ;à�H‰H�ZÔ Ø�H‰H�ZÕ øð �H‰H�ZÔ Ø�H‰H�ZÕ ú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 )NrJ   r§   rQ   r¦   rx   Únonexistent_idx_s)r´   r   rU   )r}   r«   r“   r½   s       r?   Útest_has_index_schemaz"HasIndexTest.test_has_index_schema"  sŠ   € ð �‰˜t ZÓ0ˆÙ�L *´V×5GÑ5GÕHÐHÐHÙ˜ h´v×7IÑ7IÕJÐJÐJÙØ ´F×4FÑ4Fõ
ð 	
ð 
ñ ØÐ-´f×6HÑ6Hõ
ð 	
ð 
ð 
rA   N)rB   rC   rD   rž   Ú__requires__rE   r\   r   Úcombinationsr«   r´   rÀ   rS   rT   rÃ   rF   rA   r?   r¢   r¢   ã   sx   „ Ø $ÐØ(€Làñ)ó ð)ð(  ˆ7×Ñ 	¨;ÀÔH€Dò+ð 
ñ!ó 
ð!ð: ×Ñ×ÑØ	ñ	
ó 
ó ñ	
rA   r¢   c                   ól  — e Zd ZdZd„ Zd„ Z ej                  dddg«       e«        e«       ej                  j                  d„ «       «       «       «       Z
 e«        e«       ej                  j                  d„ «       «       «       Z e«        e«       ej                  j                  d„ «       «       «       Zy	)
ÚBizarroCharacterTestTc                  ó6   — t        j                  ddddd¬«      S )N)Ú	plainname)z(3))zcol%p)z[brack]Ú
columnnamer¬   ©r   rÅ   rF   rA   r?   Úcolumn_namesz!BizarroCharacterTest.column_names4  s$   € Ü×#Ñ#ØØØØØ!ô
ð 	
rA   c                  ó6   — t        j                  ddddd¬«      S )N)Úplain)z(2))z
per % cent)z
[brackets]Ú	tablenamer¬   rË   rF   rA   r?   Útable_namesz BizarroCharacterTest.table_names=  s$   € Ü×#Ñ#ØØØØØ ô
ð 	
rA   Úuse_compositeFc                 ó`  — 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)ztests for #10275rK   T)ÚkeyrM   ©Útest_needs_fkÚid2rL   ÚotherÚrefÚref2©Úautoload_withr   é   N)r   r   r   Úappend_columnro   ÚForeignKeyConstraintr¨   rK   rÖ   r   Ú
create_allr   r»   rØ   Ú
referencesrÙ   )
r}   r“   r[   rÑ   rÏ   rÊ   r©   Úm2Úo2Út1s
             r?   Útest_fk_refz BizarroCharacterTest.test_fk_refF  sW  € ô ØØÜ�:œw¨D¸dÔCØô	
ˆñ Ø×ÑœV E¬7ÀÔEÔFáÜØØÜ�tœW°$Ô7Ü�uœgÓ&Ü�vœwÓ'Ü×'Ñ'¨°¨¸"¿$¹$¿'¹'À2Ç4Á4Ç8Á8Ð9LÓMØ"öô ØØÜ�tœW°$Ô7Ü�uœj¨¯©¯©Ó1Ó2Ø"õð 	×Ñ˜JÔ'ä‹Zˆä�7˜B¨jÔ9ˆØ�Y‰Y�yÑ!ˆà�t‰t�x‰x×"Ñ" 2§4¡4¨¡7Ô+Ð+Ð+ÙØ—4‘4—9‘9×'Ñ'¨¯©¨Q©Ô0Ð0Ñ0ð rA   c           
      óÐ   — t        ||t        |t        t        «       d¬«      «       |j	                  |«       t        |«      }t        |j                  |«      d   d   d   d«       y )NTrL   r   ÚidentityÚstartrÜ   ©r   r   r   r   rß   r   r   Úget_columns©r}   rÏ   rÊ   r“   r[   r†   s         r?   Útest_reflect_identityz*BizarroCharacterTest.test_reflect_identityu  s`   € ô 	ØØÜ�:œw¬«
ÀÔEô	
ð
 	×Ñ˜JÔ'Ü�zÓ"ˆäˆD×Ñ˜YÓ'¨Ñ*¨:Ñ6°wÑ?ÀÕCrA   c           
      óÚ   — t        ||t        dt        d¬«      t        |t        d¬«      «       |j                  |«       t	        |«      }t        |j                  |«      d   d   d«       y )NrK   TrL   úsome comment©ÚcommentrÜ   rï   ©r   r   r   rß   r   r   ré   rê   s         r?   Útest_reflect_commentsz*BizarroCharacterTest.test_reflect_comments…  sc   € ô 	ØØÜ�4œ¨dÔ3Ü�:œw°Ô?ô		
ð 	×Ñ˜JÔ'Ü�zÓ"ˆäˆD×Ñ˜YÓ'¨Ñ*¨9Ñ5°~ÕFrA   N)rB   rC   rD   rž   rÌ   rÐ   r   Ú	variationrS   Ú!foreign_key_constraint_reflectionrä   Úidentity_columnsrë   Úcomment_reflectionrñ   rF   rA   r?   rÇ   rÇ   0  sÎ   „ à $Ðò
ò
ð €W×Ñ�¨¨u¨Ó6Ùƒ^Ùƒ]Ø×Ñ×7Ñ7ñ)1ó 8ó ó ó 7ð)1ñV ƒ^Ùƒ]Ø×Ñ×&Ñ&ñDó 'ó ó ðDñ ƒ^Ùƒ]Ø×Ñ×(Ñ(ñGó )ó ó ñGrA   rÇ   c                   ó¨   — e Zd ZdZdZej                  d„ «       Zej                  j                  d„ «       Z
ej                  j                  d„ «       Zy)ÚTempTableElementsTestT)Útemp_table_reflectionc                 ób   — t        t        t        j                  dt        j                  › �«      S )NÚ
ident_tmp_rf   ©r}   s    r?   rÏ   zTempTableElementsTest.tablename�  s%   € ä"Ü”F—I‘I ¬F¯L©L¨>Ð:ó
ð 	
rA   c           
      óÐ   — t        ||t        dt        t        «       d¬«      «       |j	                  |«       t        |«      }t        |j                  |«      d   d   d   d«       y )NrK   TrL   r   ræ   rç   rÜ   rè   ©r}   rÏ   r“   r[   r†   s        r?   rë   z+TempTableElementsTest.test_reflect_identity£  s^   € äØØÜ�4œ¤(£*¸$Ô?ô	
ð
 	×Ñ˜JÔ'Ü�zÓ"ˆäˆD×Ñ˜YÓ'¨Ñ*¨:Ñ6°wÑ?ÀÕCrA   c           
      óÚ   — t        ||t        dt        d¬«      t        dt        d¬«      «       |j                  |«       t	        |«      }t        |j                  |«      d   d   d«       y )	NrK   TrL   Úfoobarrí   rî   rÜ   rï   rð   rý   s        r?   rñ   z+TempTableElementsTest.test_reflect_comments¯  sa   € äØØÜ�4œ¨dÔ3Ü�8œW¨nÔ=ô		
ð 	×Ñ˜JÔ'Ü�zÓ"ˆäˆD×Ñ˜YÓ'¨Ñ*¨9Ñ5°~ÕFrA   N)rB   rC   rD   rž   rÄ   r   ÚfixturerÏ   rS   rô   rë   Útemp_table_comment_reflectionrñ   rF   rA   r?   r÷   r÷   —  sg   „ à $Ðà-€Là‡_�_ñ
ó ð
ð
 ×Ñ×&Ñ&ñ	Dó 'ð	Dð ×Ñ×3Ñ3ñ
Gó 4ñ
GrA   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                  rÅ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        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 ' onerK   rl   rO   rN   Ú
related_idzpk quote ' one©rl   zix quote ' onezuq quote' onez
related.idzfk quote ' onezname != 'foo'zck quote ' onezquote ' one commentT)rï   rÕ   úquote " twozpk quote " twozix quote " twozuq quote" twozfk quote " twozck quote " two zquote " two commentÚrelatedrL   rÔ   r`   úview %sú AS SELECT * FROM r^   r_   zDROP VIEW %s)r   r   r   r   ro   ÚPrimaryKeyConstraintr$   ÚUniqueConstraintrÞ   ÚCheckConstraintr   rS   Úsymbol_names_w_double_quoter8   Úview_column_reflectionr   r=   rz   Úidentifier_preparerÚquoter   ra   r#   )r>   r[   Únamesrl   rb   s        r?   r\   z$QuotedNameArgumentTest.define_tablesÁ  s–  € äØØÜ�4œÓ!Ü�6œ6 "›:Ó&Ü�6œ6 "›:Ó&Ü�<¤Ó)Ü×#Ñ# DÐ/?Ô@Ü�H‰HÐ% vÓ.Ü×ÑØØ$ôô ×#Ñ#Ø�˜˜Ð-=ôô ×Ñ˜Ð5EÔFØ.Øõ%	
ô* ×Ñ×7Ñ7×?Ò?ÜØØÜ�tœWÓ%Ü�vœv b›zÓ*Ü�vœv b›zÓ*Ü�|¤WÓ-Ü×'Ñ'¨Ð3CÔDÜ—‘Ð)¨6Ó2Ü×#Ñ#ØØ(ôô ×'Ñ'Ø�F˜\˜NÐ1Aôô ×"Ñ" ?Ð9JÔKØ2Ø"õ%ô* 	ØØÜ�4œ¨dÔ3Ü�9œgÓ&Øõ	
ô ×Ñ×2Ñ2×:Ó:Ü×Ñ×;Ñ;×CÒCà!Ø!ð‘ð "ð�ð ò ‘ä—I‘I×%Ñ%×9Ñ9×?Ñ?Ø! DÑ(õô —I‘I×%Ñ%×9Ñ9×?Ñ?ÀÔEð	�ô —‘˜X ~´s¸5³zÔBÜ—‘ØØ!ÜØ&Ü Ÿ)™)×+Ñ+×?Ñ?×EÑEØ%¨Ñ,óñóõ	ñð ;rA   c                 ón   —  t        j                  ddt         j                  j                  f«      | «      S )N)r  r	  )r   rÅ   rS   r  )Úfns    r?   Úquote_fixturesz%QuotedNameArgumentTest.quote_fixtures  s:   € ð
Œw×#Ñ#ØØœG×,Ñ,×HÑHÐIó
ð óð 	rA   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   rS   Úreflect_table_optionsr8   Úget_table_optionsr+   Ú
isinstancer;   r   ÚNotImplementedError)r}   rl   r†   Úress       r?   Útest_get_table_optionsz-QuotedNameArgumentTest.test_get_table_options  sp   € ä”v—y‘yÓ!ˆä×Ñ×1Ñ1×9Ò9Ø×(Ñ(¨Ó.ˆCÜ”J˜s¤DÓ)Õ*äÔ2Ó3ñ -Ø×&Ñ& tÔ,÷-÷ -ñ -ús   Á8BÂBc                 ób   — t        t        j                  «      }|j                  d|z  «      sJ ‚y )Nr  )r   r   r=   Úget_view_definition©r}   rl   r†   s      r?   Útest_get_view_definitionz/QuotedNameArgumentTest.test_get_view_definition%  s+   € ô ”v—y‘yÓ!ˆØ×'Ñ'¨	°DÑ(8Ô9Ð9Ñ9rA   c                 ó\   — t        t        j                  «      }|j                  |«      sJ ‚y r–   )r   r   r=   ré   r!  s      r?   Útest_get_columnsz'QuotedNameArgumentTest.test_get_columns+  s$   € ä”v—y‘yÓ!ˆØ×Ñ Ô%Ð%Ñ%rA   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_constraint0  s$   € ä”v—y‘yÓ!ˆØ×%Ñ% dÔ+Ð+Ñ+rA   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_keys5  s&   € ô ”v—y‘yÓ!ˆØ×$Ñ$ TÔ*Ð*Ñ*rA   c                 ó\   — t        t        j                  «      }|j                  |«      sJ ‚y r–   )r   r   r=   Úget_indexesr!  s      r?   Útest_get_indexesz'QuotedNameArgumentTest.test_get_indexes;  s&   € ô ”v—y‘yÓ!ˆØ×Ñ Ô%Ð%Ñ%rA   c                 ó\   — t        t        j                  «      }|j                  |«      sJ ‚y r–   )r   r   r=   Úget_unique_constraintsr!  s      r?   Útest_get_unique_constraintsz2QuotedNameArgumentTest.test_get_unique_constraintsA  s&   € ô ”v—y‘yÓ!ˆØ×*Ñ*¨4Ô0Ð0Ñ0rA   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_commentG  s&   € ô ”v—y‘yÓ!ˆØ×%Ñ% dÔ+Ð+Ñ+rA   c                 ó\   — t        t        j                  «      }|j                  |«      sJ ‚y r–   )r   r   r=   Úget_check_constraintsr!  s      r?   Útest_get_check_constraintsz1QuotedNameArgumentTest.test_get_check_constraintsM  s&   € ô ”v—y‘yÓ!ˆØ×)Ñ)¨$Ô/Ð/Ñ/rA   N)rB   rC   rD   Úrun_create_tablesrž   rE   r\   r  r  r   rS   r  r"  r$  r'  ró   r*  r£   r-  Úunique_constraint_reflectionr0  rõ   r3  Úcheck_constraint_reflectionr6  rF   rA   r?   r  r  ½  sT  „ ØÐØ $ÐàñPó ðPòdð ñ-ó ð-ð Ø×Ñ×,Ñ,ñ:ó -ó ð:ð ñ&ó ð&ð ñ,ó ð,ð Ø×Ñ×7Ñ7ñ+ó 8ó ð+ð Ø×Ñ×&Ñ&ñ&ó 'ó ð&ð Ø×Ñ×2Ñ2ñ1ó 3ó ð1ð Ø×Ñ×(Ñ(ñ,ó )ó ð,ð Ø×Ñ×1Ñ1ñ0ó 2ó ñ0rA   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   rU   rF   rA   r?   r³   z$_multi_combination.<locals>.<lambda>X  s   € ”F×&Ñ&€ rA   rR   r¬   r4   r«   TFÚ
use_filter)r   rÅ   rS   rT   r    ÚDEFAULTÚ	TEMPORARYÚANYr   ÚTABLEÚVIEWÚMATERIALIZED_VIEWÚANY_VIEW)r  rR   r4   r«   Úfilter_namess        r?   Ú_multi_combinationrE  T  só   € Ü×!Ñ!Øá&Ü×Ñ×$Ñ$ð	
ð ô€Fô × Ñ Ü×ÑÜ×ÑÜ�‰Øô	€Eô ×ÑÜ×ÑÜ�‰Ü×$Ñ$Ü�‰Ü×ÑÜ×Ñœ:Ÿ?™?Ñ*Ü×Ñœ:×7Ñ7Ñ7Øô	€Dô ×'Ñ'¨¨e¸lÔK€Lá‘%™™\¨"Ó-Ó.Ó/Ó0Ð0rA   c                   ó”  — 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*„ «       «       Z8dxd+„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                  d4d5d6d7d8¬#«      e!jD                  j€                  e!jD                  j„                  d9„ «       «       «       ZC e!jX                  d2de!jD                  j\                  fd$¬#«      e!jD                  jZ                  d:„ «       «       ZD e!jX                  d;d<d=d>d?¬#«      e!jD                  jZ                  d@„ «       «       ZEe!jD                  jŒ                  e!jD                  j\                  dA„ «       «       ZG e!jX                  d2de!jD                  j\                  fd$¬#«      e!jD                  j�                  dB„ «       «       ZI e!jX                  dCdDdE¬#«      e!jD                  j�                  e!jD                  j”                  e!jD                  j–                  dF„ «       «       «       «       ZL e!jX                  dGdHdIdJdK¬#«      e!jD                  j�                  dL„ «       «       ZMe!jD                  jv                  e!jD                  jœ                  dM„ «       «       ZOe!jD                  j                   dN„ «       ZQ e!jX                  de!jD                  j\                  fd2d$¬#«      e!jD                  jœ                  dO„ «       «       ZR e!jX                  dPdQdRdSdT¬#«      e!jD                  jœ                  dU„ «       «       ZSe!jD                  jf                   e!jX                  d2de!jD                  j\                  fd$¬#«      dV„ «       «       ZTe!jD                  jf                  dW„ «       ZUe!jD                  j¬                  dX„ «       ZW e!jX                  de!jD                  j\                  fd2d$¬#«      dY„ «       ZX e!jX                  de!jD                  j\                  fd«      dZ„ «       ZYe!j´                  d[„ «       Z[e!jD                  j¸                  e]d\„ «       «       Z^e!jD                  jl                  e]d]„ «       «       Z_d^„ Z`dyd_„Zadzd`„Zbe]da„ «       Zce!jD                  j€                  e]db„ «       «       Zddc„ Zee!jD                  jZ                  e]dd„ «       «       Zfe!jD                  j�                  e]de„ «       «       Zge!jD                  jœ                  e]df„ «       «       Zhe!jD                  jÒ                  e]dg„ «       «       Zj e!jX                  dhe!jD                  j¸                  fdidje!jD                  j€                  fdke!jD                  jZ                  fdle!jD                  j�                  fdme!jD                  jœ                  fdne!jD                  jÒ                  fdoe!jD                  jl                  fdp¬#«	      dq„ «       Zkdr„ Zl e!jX                  ddd$¬#«       e!jX                  de!jD                  jÚ                  fdds¬#«      dt„ «       «       Zne!jD                  jl                  du„ «       Zoe!jD                  jà                  dv„ «       Zqe!jD                  jä                  e!jD                  jæ                  dw„ «       «       Zty){ÚComponentReflectionTestNTc                 óÆ   — | j                  |d «       t        j                  j                  j                  r+| j                  |t        j
                  j                  «       y y r–   )Údefine_reflected_tablesr   rS   rT   r8   r   rU   rZ   s     r?   r\   z%ComponentReflectionTest.define_tablesw  sF   € à×#Ñ# H¨dÔ3Ü×Ñ×#Ñ#×+Ò+Ø×'Ñ'¨´'·.±.×2LÑ2LÕMð ,rA   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(«      d0¬1«      t        d2t        j                  d(«      d3¬1«      t        d4t        j                  d5«      d6¬1«      |d7¬8«       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.                  ¬>«       nÉt        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                  �r›t3        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                  r€t         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  rF   ÚusersÚuser_idTrL   Útest1é   F©ÚnullableÚtest2Úparent_user_idú	test2 > 0Úzz_test2_gt_zeroúusers check constraint©rl   rï   útest2 <= 1000©rR   rÕ   Ú
dingalingsÚdingaling_idÚ
address_idz%semail_addresses.address_idÚzz_email_add_id_fgúdi fk commentÚid_userrN   é   )Ú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_testrK   ú
id comment)rM   rï   údata % commentrî   Úd2ú)Comment types type speedily ' " \ '' Fun!Úd3é*   úComment
withescapesúthe test % ' " \ table comment)rR   rï   Úno_constraintsú"no
constraintshasescapedcommentÚlocal_tableÚ	remote_idz%s.remote_table_2.id)rÕ   rR   Ú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   rS   Úself_referential_foreign_keysr8   r   r   r   ro   rp   ÚCHARÚFloatr   r  r   r  r¨   rO  r  Úcross_schema_fk_reflectionr   rU   r=   rz   Údefault_schema_namer£   r$   rP  rT  Úindexes_with_ascdescÚreflect_indexes_with_ascdescr�  Údescr  rW   rø   rY   )r>   r[   rR   Úschema_prefixÚparent_id_argsrN  r€  r‚  s           r?   rI  z/ComponentReflectionTest.define_reflected_tables}  s4  € áØ" S™L‰MàˆMä×Ñ×9Ñ9×AÒAäØ%¨Ñ5¸Lôð‰Nð  ˆNÜØØÜ�9œbŸf™f°$Ô7Ü�7œBŸG™G A›J°Ô7Ü�7œBŸH™H›J°Ô7ÜÐ#¤R§Z¡ZÐA°.ÒAÜ×ÑØØ'Ø0ôô
 ×Ñ˜Ó/ØØô
ˆô" 	ØØÜ�>¤2§:¡:¸4Ô@ÜØÜ—
‘
ÜØ2°]ÑBØ-Ø+ôóô ØÜ—
‘
ÜÐ,¨}Ñ<Ó=óô
 �6œ2Ÿ9™9 R›=°Ô6Ü×ÑØ6Ø)ôô ×ÑØØØ-Ø+ô	ð Øõ=	
ô@ 	ØØÜ�<¤§¡Ó,ÜÐ#¤R§Z¡Z´¸E¿G¹G¿O¹OÓ1LÓMÜ�?¤B§I¡I¨b£M¸Ô>Ü×#Ñ#Ø =¸/ôð Øõ	
ô 	ØØÜ�4œŸ™°¸|ÔLÜ�6œ2Ÿ9™9 R›=Ð2BÔCÜØÜ—	‘	˜"“ØHôô
 �4œŸ™ 2›Ð0HÔIØØ9õ	
ô 	ØØÜ�6œ2Ÿ9™9 R›=Ó)ØØ<õ	
ô ×Ñ×6Ñ6×>Ó>Øˆ~ÜØ!ØÜ˜4¤§¡¸Ô>Ü˜6¤2§9¡9¨R£=Ó1ÜØ#Ü"Ø2´W·^±^×5OÑ5OÑOóóð #'Ü!Ÿ9™9×,Ñ,×@Ñ@öô Ø"ØÜ˜4¤§¡¸Ô>ÜØ"Ü"Ø/Ü$Ÿi™i×/Ñ/×CÑCñDóóô ˜6¤2§9¡9¨R£=Ó1Ø!Ø"&õô Ø$ØÜ˜4¤§¡¸Ô>Ü˜6¤2§9¡9¨R£=Ó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×:Ò:Ø×Ñ˜X vÔ.Ùœ'×*Ñ*×@Ñ@×HÒHØ×"Ñ" 8Õ,ð IˆvrA   c                 ób   — t        t        t        j                  dt        j                  › �«      S rd   rf   rh   s    r?   ri   z'ComponentReflectionTest.temp_table_name+  rj   rA   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 )NrK   TrL   rl   rO   rº   Úuser_tmp_uq_r  Úuser_tmp_ixr^   rm   r_   rn   )r   r   r=   ri   r   r   ro   rp   rq   r  rg   r$   r   rS   rV   r8   rr   r   ra   r#   rs   s        r?   rY   z*ComponentReflectionTest.define_temp_tables1  s  € ä$¤V¬V¯Y©YÓ7ˆØ×(Ñ(Ó*ˆ
ÜØØÜ�4œŸ™¨TÔ2Ü�6œ2Ÿ:™: b›>Ó*Ü�5œ"Ÿ&™&Ó!ô ×Ñ ¨|¼F¿L¹L¸>Ð-JÔKÜ�H‰H�] EÓ*ñ
ð ñ
ˆô" ×Ñ×,Ñ,×4Ò4Ü× Ñ ×0Ñ0×8Ò8ä�L‰LØØÜð0Ü28·,±,ñ?óôô �L‰L˜ =´#Ð6LÓ2MÕNð 9ð 5rA   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\  ©rN  rg  r\  rK  Ú_vzMATERIALIZED rL  zCREATE zVIEW r  r^   Ú	mat_indexÚoraclezCREATE INDEX z ON z(data)r_   zDROP )	r   rS   Úmaterialized_viewsr8   Úsetr   ra   r#   Úagainst)r>   r[   rR   Úmaterializedru   ÚfullnameÚ	view_nameÚprefixrb   Ú
index_namer¾   s              r?   rW   z$ComponentReflectionTest.define_viewsS  s  € ä×Ñ×.Ñ.×6Ò6Ø(˜>‰Lä›5ˆLØDò 	ˆJØ!ˆHÙØ$˜X Q z lÐ3�Ø  4™ˆIØ(2°lÑ(B‘_ÈˆFà˜&˜  y kÐ1CÀHÀ:ÐNð ô �L‰L˜ >´3°u³:Ô>Ø˜\Ñ)Ø(�
ÙœgŸo™o¨hÔ7Ø$* 8¨1¨Z¨LÐ!9�JØ% j \°°i°[ÀÐG�Ü—‘˜X ~´s¸3³xÔ@Ü�L‰LØ˜-¬¨u°V°H¸EÀ)ÀÐ-MÓ)Nõñ#	rA   c                 óÜ   — i }t         j                  |v r|j                  |«       t         j                  |v r|j                  |«       t         j                  |v r|j                  |«       |S r–   )r   r@  ÚupdaterA  rB  )r}   r«   r»   r    r›  r  s         r?   Ú_resolve_kindz%ComponentReflectionTest._resolve_kindn  sX   € ØˆÜ×Ñ˜tÑ#Ø�J‰J�vÔÜ�?‰?˜dÑ"Ø�J‰J�uÔÜ×'Ñ'¨4Ñ/Ø�J‰J�|Ô$Øˆ
rA   c                 ó  — t         j                  j                  j                  s!|j	                  «        |j	                  «        y t         j                  j
                  j                  s"|j                  |«       |j	                  «        y y r–   )r   rS   r  r8   Úclearr˜  r¡  )r}   r    r›  s      r?   Ú_resolve_viewsz&ComponentReflectionTest._resolve_viewsx  s^   € Ü×Ñ×6Ñ6×>Ò>Ø×ÑÔ Ø�K‰K�MÜ×!Ñ!×4Ñ4×<Ò<Ø�L‰L˜Ô&Ø×ÑÕ ð =rA   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)NTrF   )Ú_s    r?   r³   z8ComponentReflectionTest._resolve_names.<locals>.<lambda>�  s   � rA   c                 ó   — d| d   vS ©NÚtmprÜ   rF   ©r²   s    r?   r³   z8ComponentReflectionTest._resolve_names.<locals>.<lambda>ƒ  s   €  U°!°A±$Ð%6€ rA   c                 ó   — d| d   v S rª  rF   r¬  s    r?   r³   z8ComponentReflectionTest._resolve_names.<locals>.<lambda>…  s   €  U¨a°©d ]€ rA   r{  r}  ry  r€  r‚  rš   rÜ   )r    r=  r>  r   r   rU   ri   rS   rˆ  r8   Úaddr¡  r£   rø   Útemp_table_namesrr   Úitems)
r}   rR   r4   rD  ÚvaluesÚscope_filterÚremovedr²   Úvr  s
             r?   Ú_resolve_namesz&ComponentReflectionTest._resolve_names€  s¿  € Ù%ˆØ”K×'Ñ'Ñ'Ù6ˆLØ”K×)Ñ)Ñ)Ù2ˆLð �>Ð#3Ð4Ü�N‰N×&Ñ&ØØ&Ø$ØØ×$Ñ$Ó&ð)ð	
ˆô ×Ñ×:Ñ:×BÒBØ�D‰M×Ñ˜mÔ,Ø”G—N‘N×.Ñ.Ñ/×6Ñ6ØÐ!1Ð2ôô ×Ñ×0Ñ0×8Ò8Ø�D‰M× Ñ Ø'Ð)=Ð>ôô × Ñ ×6Ñ6×>Ò>Ü×#Ñ#×4Ñ4×<Ò<à�D‰M× Ñ  ,°×0DÑ0DÓ0FÐ!GÔHÜ×Ñ×/Ñ/×7Ò7Ø�D‰M× Ñ  , Ô0ð Ÿ™›÷
á��1Ù˜AŒØ�!‘˜G F™OÑ+Ù! Q q¡T¨\Ñ%9ð	 ˆq‰Dð
ˆñ 
ð ˆ
ùó
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š   rN  r\  rg  rn  rw  ry  r{  r}  r€  r‚  ©r,   r?  r¥  ri   r¢  rµ  )	r}   rR   r4   r«   rD  r›  r    r»   r  s	            r?   Úexp_optionsz#ComponentReflectionTest.exp_options«  s=  € ð   Ð0´$·(±(Ð;ˆàÐ(Ð)¬4¯8©8Ø�YÐ¤§¡Ø�\Ð"¤D§H¡Hð
ˆð
 	×Ñ˜E <Ô0à�WÐœtŸx™xØ�\Ð"¤D§H¡HØÐ&Ð'¬¯©Ø�^Ð$¤d§h¡hØÐ%Ð&¬¯©Ø�]Ð#¤T§X¡XØ�^Ð$¤d§h¡hØÐ%Ð&¬¯©ØÐ+Ð,¬d¯h©hØÐ)Ð*¬D¯H©HØ�T×)Ñ)Ó+Ð,¬d¯h©hð
ˆð × Ñ   v¨u°lÓCˆØ×!Ñ! &¨%°¸sÓCˆØˆ
rA   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š   rN  r\  rg  rn  rv  rw  rx  ry  r{  r}  r€  r‚  )r¥  ri   r¢  rµ  )
r}   rR   r4   r«   rD  Úemptyr›  r    r»   r  s
             r?   Úexp_commentsz$ComponentReflectionTest.exp_commentsÊ  s   € ð ˜�ˆØ Ð0°%Ð8ˆàÐ(Ð)¨5Ø�YÐ Ø�\Ð" Eð
ˆð
 	×Ñ˜E <Ô0à�WÐ˜uØ�\Ð" EØÐ&Ð'¨Ø�^Ð$ØÐ=ð'ð Ð%Ð&ØÐ@ð)ð �]Ð# UØ�^Ð$ eØÐ%Ð&¨ØÐ+Ð,¨eØÐ)Ð*¨EØ�T×)Ñ)Ó+Ð,¨eð
ˆð" × Ñ   v¨u°lÓCˆØ×!Ñ! &¨%°¸sÓCˆØˆ
rA   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)rl   ÚautoincrementÚtypeÚdefaultrï   rS  ÚomitrÂ  )r,   r?  Úpop)rl   ÚautorÄ  rï   rS  r  s         r?   r‚   z0ComponentReflectionTest.exp_columns.<locals>.colõ  s;   € ð Ø!%ÜŸ™Ø"Ø"Ø$ñˆCð �vŠ~Ø—‘˜Ô(ØˆJrA   c                 óB   •— dt         j                  ddœ|¥} ‰| fi |¤ŽS )NTF)rÇ  rÄ  rS  ©r,   r?  )rl   rt   r‚   s     €r?   Úpkz/ComponentReflectionTest.exp_columns.<locals>.pk  s&   ø€ Ø¬4¯8©8ÀÑMÈ"ÐMˆBÙ�t‘?˜r‘?Ð"rA   r·  r]  rÅ  )rÇ  rS  r^  ra  rN   r¸  rh  ri  r¹  rO  rP  rR  rT  rU  rš   rK   rl   rº   rN  r\  rg  rn  ro  rî   rp  rq  rr  rs  ru  rw  ry  rz  r{  r|  r}  r€  r�  r‚  rº  )r}   rR   r4   r«   rD  rÊ  r›  r    r»   r  r‚   s             @r?   Úexp_columnsz#ComponentReflectionTest.exp_columnsî  sÏ  ø€ ð ¤d§h¡h¸Àtó	ô	#ð
 �^Ð$Ù�N¨¼$¿(¹(ÔCÙ�LÓ!Ù�I“Ù�F“ð	'ð
ˆð Ð(Ð)Ù�L v¼¿¹ÔAÙÐ$Ó%Ù�OÓ$ð,ð
 �YÐÙ�I F´T·X±XÔ>Ù�G¤d§h¡hÔ/Ù�G¤d§h¡hÔ/ÙÐ$Ó%ð	"ð �\Ð"Ù�D˜v´·±Ô9Ù�F“Ù�E“
ð%ð
ˆð$ 	×Ñ˜E <Ô0à�WÐÙ�9“Ù�G eÔ,Ù�G eÔ,ÙÐ$Ó%ð	 ð �\Ð"Ù�>Ó"Ù�LÓ!Ù�I“Ù�F“ð	%ð Ð&Ð'Ù�<Ó ÙÐ$Ó%Ù�OÓ$ð*ð
 �^Ð$Ù�4 Ô.Ù�FÐ$4Ô5ÙØØLôñ �DÐ":Ô;ð'ð Ð%Ð&©¨V«¨Ø�]Ð#¡b¨£h±°F³¹SÀÓ=MÐ%NØ�^Ð$¡r¨$£x±°Z³Á#ÀfÃ+Ð&NØÐ%Ð&©¨D«±3°v³;Ð(?ØÐ+Ð,©s°3«x¨jØÐ)Ð*©R°«X±s¸3³xÐ,@Ø�T×)Ñ)Ó+Ð,Ù�4“Ù�F“Ù�E“
ð/ðC&
ˆðN × Ñ   v¨u°lÓCˆØ×!Ñ! &¨%°¸sÓCˆØˆ
rA   c                 ó
   — h d£S )N>   rl   rÃ  rÄ  rS  rF   rû   s    r?   Ú_required_column_keysz-ComponentReflectionTest._required_column_keysN  s   € â6Ð6rA   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 )NrY  c                 ó    — t        |«      | |dœS )N)Úconstrained_columnsrl   rï   )Úlist)rl   rï   Úcolss      r?   rÊ  z+ComponentReflectionTest.exp_pks.<locals>.pkY  s   € ä'+¨D£zØØ"ñð rA   r  r·  r]  r¸  r¹  rš   rN  rO  r\  rg  r^  rl  rm  rn  rK   rw  ry  r{  r}  r€  r‚  rl   )r,   r?  r   rS   Úmaterialized_views_reflect_pkr8   r¥  ri   Úreflects_pk_namesr±  r¢  rµ  )r}   rR   r4   r«   rD  rÊ  r¾  r›  r    r»   Úvalr  s               r?   Úexp_pkszComponentReflectionTest.exp_pksR  sµ  € ô  Ÿ8™8¨Tô 	ñ ˜”ˆÜ×Ñ×9Ñ9×AÒAØ# ^Ð4±b¸Ó6HÐI‰Là# ^Ð4°eÐ<ˆLàÐ(Ð)¨5Ø�YÐ Ø�\Ð" Eð
ˆð
 	×Ñ˜E <Ô0à�WÐ™r )›}Ø�\Ð"¡B ~Ó$6ØÐ&Ð'©Ø =¸/ô*ð �^Ð$¡b¨£hØÐ%Ð&¨Ø�]Ð#¡R¨£XØ�^Ð$¡b¨£hØÐ%Ð&©¨4«ØÐ+Ð,¨eØÐ)Ð*©B¨t«HØ�T×)Ñ)Ó+Ð,©b°«hð
ˆô ×Ñ×1Ñ1×9Ò9Ø—}‘}“ò +�Ø�v‘;Ñ*Ü"&§(¡(�C˜’Kð+ð × Ñ   v¨u°lÓCˆØ×!Ñ! &¨%°¸sÓCˆØˆ
rA   c                 ó
   — ddhS )Nrl   rÐ  rF   rû   s    r?   Ú_required_pk_keysz)ComponentReflectionTest._required_pk_keys‚  s   € àÐ-Ð.Ð.rA   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=   rz   r‰  )r}   r×   s     r?   Ú__eq__z2ComponentReflectionTest.exp_fks.<locals>.tt.__eq__Ž  s,   € à˜T�Mò FÜ—y‘y×(Ñ(×<Ñ<ÀÑEðrA   N©rB   rC   rD   rÝ  rF   rA   r?   r©   rÛ  �  s   „ órA   r©   c                 óF   •— | ||t         j                  |�|n ‰«       ||dœS )N)rÐ  Úreferred_columnsrl   r5   Úreferred_schemaÚreferred_tablerï   rÉ  )rÒ  Úref_colÚ	ref_tableÚ
ref_schemarl   rï   r©   s         €r?   Úfkz+ComponentReflectionTest.exp_fks.<locals>.fk”  s1   ø€ ð (,Ø$+ØÜŸ8™8à",Ð"8‘J¹b»dà"+Ø"ñ
ð 
rA   r·  r¸  r¹  rš   rN  rU  rO  rM  r  r\  ra  r^  rg  r_  r`  rY  rh  rn  rw  ry  rz  rK   r}  )rå  r{  r|  r€  r‚  rl   )r,   r?  r¥  r   rU   ri   r   rS   r…  r8   r¤  Únamed_constraintsr±  r¢  rµ  )r}   rR   r4   r«   rD  ræ  r›  r    r»   ÚvalsrÕ  r  r©   s               @r?   Úexp_fkszComponentReflectionTest.exp_fks†  s?  ø€ ÷	ñ 	ð Ü—‘Øõ	ð(   Ð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×)Ñ)Ó+Ð,¨bðC"
ˆôF ×Ñ×=Ñ=×EÒEØ�F˜GÐ$Ñ%×+Ñ+Ô-Ü×Ñ×1Ñ1×9Ò9ØŸ™›ò /�Øò /�CØ˜6‘{¬$¯(©(Ò2Ü&*§h¡h˜˜Fšñ/ð/ð
 × Ñ   v¨u°lÓCˆØ×!Ñ! &¨%°¸sÓCˆØˆ
rA   c                 ó
   — h d£S )N>   rl   râ  rá  rà  rÐ  rF   rû   s    r?   Ú_required_fk_keysz)ComponentReflectionTest._required_fk_keysÞ  s   € ò
ð 	
rA   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)rc  Ú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 )NrF   )rc  rÌ   rl   Údialect_optionsÚinclude_columnsrí  rÌ   ÚexpressionsÚduplicates_constraint)	r   rS   Úforeign_keys_reflect_as_indexÚ#unique_constraints_reflect_as_indexÚ*reflect_indexes_with_ascdesc_as_expressionr8   rÑ  r,   r?  )rl   rc  rí  rî  ræ  rÒ  Úfk_reqÚdup_reqÚsorting_expressionr  Úorigr¨   s               r?   r¾   z0ComponentReflectionTest.exp_indexes.<locals>.idxï  sÞ   € ô ×%Ñ%×CÑCˆFÜ×&Ñ&×JÑJˆGä× Ñ ×KÑKð ñ ˜6Ÿ>š>Ù 7§?¢?àà Ü $ T£
ØÜ#'§8¡8Ø#%ñˆCñ Ø(6�Ð$Ñ%Ø%×-Ò-Ø03°NÑ0CÐC�C˜Ñ&¨àDHö+Ø?@  ^Ñ 3™¸Ñ:ò+�C˜Ñ'ñ Ø/3�Ð+Ñ,Ø�5ˆLùò+s   Â,Cr·  r¸  r¹  rš   rN   r–  r  rN  rU  rM  T)rl   ræ  rO  rT  rP  r  r~  )rl   rc  r\  )rl   rc  rî  ra  r^  r]  re  rg  ri  rh  rn  rw  ry  rz  r{  r|  r}  r€  r�  rƒ  )rŒ  )rl   rí  r‚  r„  rº   r’  rl   r‘  )rl   rî  rc  )r¥  Úextendr,   r?  ri   r   rg   r   rS   rŠ  r8   r‹  r¤  r¢  rµ  )
r}   rR   r4   r«   rD  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Ðð  ÙÐ%¨L¸TÔBð á�Y ¨°ÔGð ñ �W˜g¨MÀ$ÔGð ð
 �\Ð"ð 
%Ù�V¤$§(¡(°4ÀDÔIð
%á�Y¤T§X¡X°$Ô7ð
%ñ Ø Ø"Ø1ØØ#ôð
%ð Ð&Ð'ð *Ù�_¬4¯8©8Ô4ð*áÐ%¬D¯H©H¸Ô>ð*ð �^Ð$ bØÐ%Ð&¨Ø�]Ð#ð &Ù�[¤t§x¡x°DÔ9ð&ð �^Ð$ð 'Ù�Z¤d§h¡h°4Ô8ð'ð Ð%Ð&¨ØÐ+Ð,ð /ÙØØ*Ø$'¨Ð#3ôð/ð Ð)Ð*ð -ÙØ˜o¸sÀIÐ>Nôð-ð
 �T×)Ñ)Ó+Ð,ð /Ù�U Ô/ð/áØØ'¬¯© ~Ð6Ø#Øô	ð/ðU3
ˆôj × Ñ ×5Ñ5×=Ò=Ü×#Ñ#×@Ñ@×HÒHà�FÐ2Ð3Ñ4×:Ñ:Ô<Ø�FÐ0Ð1Ñ2×8Ñ8Ô:Ø× Ñ   v¨u°lÓCˆØ×!Ñ! &¨%°¸sÓCˆØˆ
rA   c                 ó
   — h d£S )N>   rl   rc  rÌ   rF   rû   s    r?   Ú_required_index_keysz,ComponentReflectionTest._required_index_keys]  s   € â1Ð1rA   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 )NrF   )rÌ   rl   rï   r   )r   rS   Ú*unique_index_reflect_as_unique_constraintsr8   rÑ  )rl   r   r  rï   rÒ  Úreqr  s          r?   Úucz+ComponentReflectionTest.exp_ucs.<locals>.uci  sL   € ô ×"Ñ"×MÑMˆCÙ §¢Øä $ T£
ØØ"ñˆCñ
  Ø*:�Ð&Ñ'Ø�5ˆLrA   r·  r¸  r¹  rš   rN  rP  rT  r~  T)rl   r   r  r\  rN   )rl   r   r^  r]  re  rf  )rl   r   rï   rg  rn  rw  ry  r{  r}  r€  r‚  rl   r‘  r  )r¥  r,   r?  ri   r   rg   r¢  rµ  )r}   rR   r4   r«   rD  Úall_r  r›  r    r»   r  s              r?   Úexp_ucszComponentReflectionTest.exp_ucsa  s   € ð +/¸Èô	ð   Ð0°"Ð5ˆàÐ(Ð)¨2Ø�YÐ Ø�\Ð" Bð
ˆð
 	×Ñ˜E <Ô0à�WÐð  ÙØØØ&Ø%2Ø!ôð ð �\Ð"ð 	%Ù�F¤§¡¼D¿H¹HÔEð	%áØ Ø"Ø1Ø%=Ø/ôð	%ð Ð&Ð'¨Ø�^Ð$ bØÐ%Ð&¨Ø�]Ð# RØ�^Ð$ bØÐ%Ð&¨ØÐ+Ð,¨bØÐ)Ð*¨BØ�T×)Ñ)Ó+Ð,ð /Ù�F <´·±¨~Ð!>Ô?ð/ð9
ˆñ@ Ø6�lÐ6 eÐ6¨vÐ6Ð6à×$Ñ$ T¨6°5¸,ÓGˆCØ×%Ñ% f¨e°\À3ÓGˆCØˆJrA   c                 ó
   — ddhS )Nrl   rÌ   rF   rû   s    r?   Ú_required_unique_cst_keysz1ComponentReflectionTest._required_unique_cst_keys¦  s   € à˜Ð'Ð'rA   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ú(rL  ú)ú`)ÚlowerÚreplace)r}   r×   r  s      r?   rÝ  z2ComponentReflectionTest.exp_ccs.<locals>.tt.__eq__²  s@   € à—K‘K“Mß‘W˜S "Ó%ß‘W˜S "Ó%ß‘W˜S "Ó%ð	 ð ˜s�{Ð"rA   NrÞ  rF   rA   r?   r©   r  ±  s   „ ó#rA   r©   c                 ó   •—  ‰| «      ||dœS )N)Úsqltextrl   rï   rF   )r½  rl   rï   r©   s      €r?   Úccz+ComponentReflectionTest.exp_ccs.<locals>.cc»  s   ø€ Ù! $›x°À'ÑJÐJrA   r·  r¸  r¹  rš   rN  rZ  rV  rW  rX  rî   r\  z$address_id > 0 and address_id < 1000rd  r  rg  rn  rw  ry  r{  r}  r€  r‚  r–   )Ústrr¥  r,   r?  ri   r¢  rµ  )r}   rR   r4   r«   rD  r  r›  r    r»   r  r©   s             @r?   Úexp_ccszComponentReflectionTest.exp_ccsª  sK  ø€ ô	#”ô 	#õ	Kð
   Ð0°"Ð5ˆàÐ(Ð)¨2Ø�YÐ Ø�\Ð" Bð
ˆð
 	×Ñ˜E <Ô0à�WÐÙ�?¤D§H¡HÓ-ÙØØ&Ø4ôð ð �\Ð"ÙØ:Ø-ôð%ð Ð&Ð'¨Ø�^Ð$ bØÐ%Ð&¨Ø�]Ð# RØ�^Ð$ bØÐ%Ð&¨ØÐ+Ð,¨bØÐ)Ð*¨BØ�T×)Ñ)Ó+Ð,¨bð/
ˆð2 × Ñ   v¨u°lÓCˆØ×!Ñ! &¨%°¸sÓCˆØˆ
rA   c                 ó
   — ddhS )Nrl   r  rF   rû   s    r?   Ú_required_cc_keysz)ComponentReflectionTest._required_cc_keysä  s   € à˜	Ð"Ð"rA   c                 ó€   — t        |«      }t        t        j                  j                  |j                  «       v «       y r–   )r   r+   r   r   rU   Úget_schema_namesr’   s      r?   Útest_get_schema_namesz-ComponentReflectionTest.test_get_schema_namesè  s,   € ä�zÓ"ˆä”—‘×*Ñ*¨d×.CÑ.CÓ.EÐEÕFrA   c                 ó²   — t        |«      }t        |j                  t        j                  j
                  «      «       t        |j                  d«      «       y )NÚsa_fake_schema_foo)r   r+   Ú
has_schemar   r   rU   r)   r’   s      r?   Útest_has_schemaz'ComponentReflectionTest.test_has_schemaî  s9   € ä�zÓ"ˆä�—‘¤§¡× :Ñ :Ó;Ô<Ü�—‘Ð!5Ó6Õ7rA   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   rU   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ÜœgŸn™n×8Ñ8ð"ð 2ó 
ˆ
ô �zÓ"ˆä”—‘×*Ñ*¨d×.CÑ.CÓ.EÐEÕFrA   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   rU   r   r+   r  r)   r’   s      r?   Útest_has_schema_w_translate_mapz7ComponentReflectionTest.test_has_schema_w_translate_map  si   € à×1Ñ1à�uÜœgŸn™n×8Ñ8ð"ð 2ó 
ˆ
ô �zÓ"ˆä�—‘¤§¡× :Ñ :Ó;Ô<Ü�—‘Ð!5Ó6Õ7rA   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Ü�D—O‘O IÓ.Ô/à×ÑœsÐ#8Ó9Õ:øˆJ×ÑœsÐ#8Ó9Õ:ús   ÁA:C1 Ã1Dc                 ór   — t        j                  «       }t        |«       t        |j                  d«      sJ ‚y )Nr‰  )r   r:   r   Úhasattrrz   )r}   Úengines     r?   Útest_dialect_initializez/ComponentReflectionTest.test_dialect_initialize!  s,   € ä×'Ñ'Ó)ˆÜ�ŒÜ�v—~‘~Ð'<Ô=Ð=Ñ=rA   c                 ón   — t        |«      }t        |j                  |j                  j                  «       y r–   )r   r   r‰  rz   r’   s      r?   Útest_get_default_schema_namez4ComponentReflectionTest.test_get_default_schema_name'  s(   € ä�zÓ"ˆÜˆD×$Ñ$ j×&8Ñ&8×&LÑ&LÕMrA   Ú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>   ry  rn  r{  rw  r}  r‚  r€  r   r3  r”  )r\  rg  rN  )r   rU   r   Úget_sorted_table_and_fkc_namesÚget_table_namesr   Úsorted)r}   r“   r4  r5  rR   Ú_ignore_tablesr†   Úrecr»   ÚtrÐ   Úanswers               r?   Útest_get_table_namesz,ComponentReflectionTest.test_get_table_names,  sÄ   € ñ Ü×'Ñ'‰FàˆFò
ˆô �zÓ"ˆáð  ×>Ñ>¸vÓFöàØ�q’6ð �A“ðˆFñ ð ×)Ñ)¨&Ó1ˆFØ"(ÖD˜Q¨A°^Ò,C’qÐDˆÐ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   rU   Úget_view_namesr   rS   r˜  r8   r   r9  Úget_materialized_view_names)r}   r“   r5  r†   rR   rÐ   r=  s          r?   Útest_get_view_namesz+ComponentReflectionTest.test_get_view_namesW  s‡   € ô �zÓ"ˆÙÜ×'Ñ'‰FàˆFØ×)Ñ)¨&Ó1ˆÜ×Ñ×.Ñ.×6Ò6Ü”�{Ó#Ð&9¸9Ð%EÔFÜ�×0Ñ0°Ó8¸>Ð:JÕKâEˆFÜ”�{Ó# VÕ,rA   c                 óˆ   — t        |«      }|j                  «       }t        t        |«      dt        j
                  › �g«       y rd   )r   Úget_temp_table_namesr   r9  r   rg   ©r}   r“   r†   r¯  s       r?   Útest_get_temp_table_namesz1ComponentReflectionTest.test_get_temp_table_namesh  s9   € ä�zÓ"ˆØ×4Ñ4Ó6ÐÜŒFÐ#Ó$¨´6·<±<°.Ð'AÐ&BÕCrA   c                 óf   — t        |«      }|j                  «       }t        t        |«      dg«       y r™   )r   Úget_temp_view_namesr   r9  rE  s       r?   Útest_get_temp_view_namesz0ComponentReflectionTest.test_get_temp_view_namesn  s/   € ô �zÓ"ˆØ×3Ñ3Ó5ÐÜŒFÐ#Ó$ | nÕ5rA   c                 ó&   — | j                  |«       y r–   )Ú_test_get_comments©r}   r“   s     r?   Útest_get_commentsz)ComponentReflectionTest.test_get_commentsu  s   € à×Ñ 
Õ+rA   c                 óX   — | j                  |t        j                  j                  «       y r–   )rK  r   r   rU   rL  s     r?   Útest_get_comments_with_schemaz5ComponentReflectionTest.test_get_comments_with_schemay  s   € ð 	×Ñ 
¬G¯N©N×,FÑ,FÕGrA   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 )NrQ   rn  rN  )r   r¿  r   r2  r»   rw  rl   )r}   r“   rR   r†   ÚexpÚno_csts         r?   rK  z*ComponentReflectionTest._test_get_comments~  sÚ   € Ü�zÓ"ˆØ×Ñ vÐÓ.ˆÜØ×"Ñ" >¸&Ð"ÓAØ�˜Ð(Ñ)ô	
ô
 	Ø×"Ñ" 7°6Ð"Ó:Ø�˜Ð!Ñ"ô	
ô
 	Ø×"Ñ" >¸&Ð"ÓAØ�˜Ð(Ñ)ô	
ð
 —‘×+Ñ+×0Ñ0ˆÜØ×"Ñ" 6°&Ð"Ó9Ø�˜Ð Ñ!õ	
rA   )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·  rN  rg  rQ   r   rl   rÃ  r—  r  z), r  rÄ  )"r   rU   r»   rN  rg  r   Úzipré   r+   ÚlenÚ	enumerateÚcolumnsr   rl   Ú	__class__rÃ  r  ro   r   Ú
TypeEnginer   rš  Ú	sql_typesÚDater   r™  Ú__mro__Úintersectionr   ÚNumericÚTimer   Ú_BinaryrM   )r}   r“   Ú	use_viewsr5  rR   rN  Ú	addressesrÐ   r†   ru   ÚtableÚschema_namerÒ  Úir‚   ÚctypeÚ	ctype_defs                    r?   r$  z(ComponentReflectionTest.test_get_columns–  s  € ñ Ü×'Ñ'‰FàˆFà ŸK™K×-Ñ-¨t¯{©{×/JÑ/JˆyˆÙÚJ‰Kà"Ð$5Ð6ˆKä�zÓ"ˆÜ!$ [°5¸)Ð2DÓ!Eó /	6ÑˆJ˜Ø ˆKØ×#Ñ# J°{Ð#ÓCˆDÜ”C˜“I ‘M¤3 t£9Ô-ô $ E§M¡MÓ2ó (6‘��3Ü�C—H‘H˜d 1™g f™oÔ.Ø˜Q™ ™×1Ñ1�ØŸH™H�	Ü˜i¬¯©×)<Ñ)<Ô=Ø )× 3Ñ 3�Iô —?‘? 8Ô,°Ü—N‘NÜ×&Ñ&ð?ñ 2ô !*§¡�Iô
 ÜÜ˜EŸM™MÓ*ß%™ i×&7Ñ&7Ó8ß%™ä )× 1Ñ 1Ü )× 1Ñ 1Ü )× 2Ñ 2Ü )§¡Ü )§¡Ü )× 0Ñ 0Ü )× 1Ñ 1ðó
óð ñð" —x“x §£¨4°©7°6«?ºEðCô#ð* —”Ø ™7 9Ñ-Ò5Ð5Ð5òQ(6ñ/	6rA   c                 ó–   — | j                  «       }| j                  |   }t        |t        «       |¬«      }| j	                  ||d¬«       y )NrÚ   F)Ústrict_constraints)ri   r»   r   r   Úassert_tables_equal)r}   r“   ru   rv   Úreflected_user_tmps        r?   Útest_reflect_table_temp_tablez5ComponentReflectionTest.test_reflect_table_temp_tableâ  sO   € à×)Ñ)Ó+ˆ
Ø—;‘;˜zÑ*ˆä"Øœ›
°*ô
Ðð 	× Ñ ØÐ(¸Uð 	!õ 	
rA   c                 ó.  — | j                  «       }| j                  |   }t        |«      }|j                  |«      }t	        t        |«      dkD  t        |«      «       t        |j                  «      D ]!  \  }}t        |j                  ||   d   «       Œ# y )Nr   rl   )
ri   r»   r   ré   r+   rV  rW  rX  r   rl   )r}   r“   ru   rv   r†   rÒ  rf  r‚   s           r?   Útest_get_temp_table_columnsz3ComponentReflectionTest.test_get_temp_table_columnsî  s‚   € à×)Ñ)Ó+ˆ
Ø—;‘;˜zÑ*ˆÜ�zÓ"ˆØ×Ñ 
Ó+ˆÜ”�D“	˜A‘œs 4›yÔ)ä × 0Ñ 0Ó1ò 	+‰FˆAˆsÜ�—‘˜$˜q™' &™/Õ*ñ	+rA   c                 ó„   — t        |«      }|j                  d«      }t        |D �cg c]  }|d   ‘Œ	 c}g d¢«       y c c}w )Nrš   rl   )rK   rl   rº   )r   ré   r   )r}   r“   r†   rÒ  r‚   s        r?   Útest_get_temp_view_columnsz2ComponentReflectionTest.test_get_temp_view_columnsù  s;   € ô �zÓ"ˆØ×Ñ Ó-ˆÜ DÖ)˜SˆS�‹[Ò)Ò+@Õ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)NrQ   rÐ  rl   rl  )r   r   rU   r»   rN  rg  r   rÖ  r&  rl   Ú_check_listrØ  r   rS   rÔ  Úfail_ifrw  )r}   r“   r5  rR   rN  rc  r†   rQ  Ú
users_consÚ	addr_consÚexp_colsrR  s               r?   r'  z.ComponentReflectionTest.test_get_pk_constraint  sm  € ñ
 Ü—^‘^×/Ñ/‰FàˆFàŸ;™;×,Ñ,¨d¯k©k×.IÑ.IˆyˆÜ�zÓ"ˆØ�l‰l &ˆlÓ)ˆà×+Ñ+¨E¯J©J¸vÐ+ÓFˆ
Ø×ÑØˆL˜3 ¨¯
©
Ð3Ñ4Ð5°t×7MÑ7Mô	
ð ×*Ñ*¨9¯>©>À&Ð*ÓIˆ	Ø˜ 	§¡Ð/Ñ0Ð1FÑGˆÜˆIÐ+Ñ,¨hÔ7ä×Ñ×/Ñ/×7Ñ7Ó9ñ 	2Ü�	˜&Ñ! =Ô1÷	2ð —‘×+Ñ+×0Ñ0ˆØ×ÑØ×#Ñ# F°6Ð#Ó:Ð;Ø�&˜&Ð!Ñ"Ð#Ø×"Ñ"õ	
÷		2ð 	2ús   ÄF
Æ
FÚPK_test_tableÚpk_test_tableÚmixedCasePKzpk.with.dotsÚpk_namec                 ó&  — t        d|t        dt        «      t        dt        d«      «      t	        j
                  d|¬«      «       |j                  |«       t        |«      }|j                  d«      }t        |d   |«       t        |d   dg«       y)	zZTest that primary key constraint names with various casing are
        properly reflected.rJ   rK   rN   rO   r  rl   rÐ  N)
r   r   r   r   ro   r  rß   r   r&  r   )r}   r“   r[   r{  r†   Úpk_conss         r?   Ú"test_get_pk_constraint_quoted_namez:ComponentReflectionTest.test_get_pk_constraint_quoted_name"  s„   € ô 	ØØÜ�4œÓ!Ü�6œ6 "›:Ó&Ü×#Ñ# D¨wÔ7ô	
ð 	×Ñ˜JÔ'ä�zÓ"ˆØ×(Ñ(¨Ó6ˆäˆG�F‰O˜WÔ%ÜˆGÐ)Ñ*¨T¨FÕ3rA   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)NrQ   r   rl   rM  rá  râ  rà  rO  rÐ  rU  rh  )r   rU   r»   rN  rg  r   r   rS   r…  r8   r)  rl   rç  rt  r   Úimplicitly_named_constraintsr+   rw  )r}   r“   r5  rR   rN  rc  r†   Úexpected_schemaÚusers_fkeysÚfkey1Ú
addr_fkeysrR  s               r?   r*  z-ComponentReflectionTest.test_get_foreign_keysA  sà  € ñ
 Ü×'Ñ'‰FàˆFà ŸK™K×-Ñ-¨t¯{©{×/JÑ/JˆyˆÜ�zÓ"ˆØ ˆô ×Ñ×9Ñ9×AÒAØ×/Ñ/°·
±
À6Ð/ÓJˆKØ ‘NˆEä×!Ñ!×3Ñ3×;Ñ;Ó=ñ 1Ü�E˜&‘M <Ô0÷1ô �Ð'Ñ(¨/Ô:Ü�Ð&Ñ'¨¯©Ô4Ü�Ð(Ñ)¨I¨;Ô7Ü�Ð+Ñ,Ð/?Ð.@ÔAð ×*Ñ*¨9¯>©>À&Ð*ÓIˆ
Ø˜1‘ˆä×Ñ×:Ñ:×BÑBÓDñ 	/Ü�E˜&‘M¨Ð-Ô.÷	/ô 	ˆEÐ#Ñ$ oÔ6ÜˆEÐ"Ñ# U§Z¡ZÔ0ÜˆEÐ$Ñ%¨	 {Ô3ÜˆEÐ'Ñ(Ð+;Ð*<Ô=à—‘×+Ñ+×0Ñ0ˆÜˆD×!Ñ! &°Ð!Ó8¸"Õ=÷+1ñ 1ú÷	/ð 	/ús   Â=HÅ'HÈHÈHÚFK_users_idÚfk_users_idÚmixedCaseNamezfk.with.dotsÚfk_namec                 óT  — t        d|t        dt        d¬«      d¬«       t        d|t        dt        d¬«      t        dt        «      t        j                  dgdg|¬	«      d¬«       |j                  |«       t        |«      }|j                  d«      }t        t        |«      d
«       |d   }t        j                  j                  j                  «       5  t        |d   |«       ddd«       t        |d   d«       t        |d   dg«       t        |d   dg«       y# 1 sw Y   Œ9xY w)zZTest that foreign key constraint names with various casing are
        properly reflected.Ú	users_refrO  TrL   rÔ   Úuser_ordersÚorder_idzusers_ref.user_idr  rÜ   r   rl   Nrâ  rà  rÐ  )r   r   r   ro   rÞ   rß   r   r)  r   rV  r   rS   rç  rt  )r}   r“   r[   rˆ  r†   ÚfkeysÚfkeys          r?   Ú!test_get_foreign_keys_quoted_namez9ComponentReflectionTest.test_get_foreign_keys_quoted_namek  s  € ô 	ØØÜ�9œg°4Ô8Øõ		
ô 	ØØÜ�:œw°DÔ9Ü�9œgÓ&Ü×#Ñ#Ø�Ø$Ð%Øôð
 õ	
ð 	×Ñ˜JÔ'ä�zÓ"ˆØ×%Ñ% mÓ4ˆäŒC�‹J˜ÔØ�Q‰xˆä×Ñ×/Ñ/×7Ñ7Ó9ñ 	'Ü��V‘˜gÔ&÷	'ô 	ˆDÐ!Ñ" KÔ0ÜˆDÐ#Ñ$ y kÔ2ÜˆDÐ&Ñ'¨)¨Õ5÷	'ð 	'ús   ÃDÄD'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à  rK   rÐ  rz  rQ   r|  )r»   rz   r‰  r   r   rU   r   r)  rl   r   rV  r+   )
r}   r“   ry  r{  r}  r†   Úlocal_fkeysrƒ  Úremote_fkeysÚfkey2s
             r?   Ú"test_get_inter_schema_foreign_keysz:ComponentReflectionTest.test_get_inter_schema_foreign_keysš  sŒ  € ð 59·K±KØ˜z×1Ñ1×EÑEÑEØ¤§¡× :Ñ :Ñ:Ø¤'§.¡.×"<Ñ"<Ñ<ó5
Ñ1ˆ�\ >ô �zÓ"ˆà×+Ñ+¨K×,<Ñ,<Ó=ˆÜŒC�Ó˜aÔ à˜A‘ˆÜˆEÐ#Ñ$¤g§n¡n×&@Ñ&@ÔAÜˆEÐ"Ñ# ^×%8Ñ%8Ô9ÜˆEÐ$Ñ%¨ vÔ.ÜˆEÐ'Ñ(¨;¨-Ô8à×,Ñ,Ø×Ñ¤g§n¡n×&@Ñ&@ð -ó 
ˆô 	ŒC�Ó˜qÔ!à˜Q‘ˆäØÐ#Ñ$àØ×"Ñ"×6Ñ6ððô	
ô 	ˆEÐ"Ñ# [×%5Ñ%5Ô6ÜˆEÐ$Ñ%¨ vÔ.ÜˆEÐ'Ñ(¨:¨,Õ7rA   c                 óx  — |rt         j                  }nd }t        |«      }|j                  d|¬«      }| j	                  |¬«      }| j                  |||df   | j                  «       | j                  j                  j                  }| j                  |j                  ||¬«      |||f   | j                  «       y )NrN  rQ   )
r   rU   r   r,  rü  rs  rþ  r»   rw  rl   )r}   r“   r5  rR   r†   ÚindexesrQ  rR  s           r?   r-  z(ComponentReflectionTest.test_get_indexesÀ  s¾   € ñ
 Ü×'Ñ'‰FàˆFô �zÓ"ˆØ×"Ñ" 7°6Ð"Ó:ˆØ×Ñ fÐÓ-ˆØ×ÑØ�S˜& 'Ð*Ñ+¨T×-FÑ-Fô	
ð —‘×+Ñ+×0Ñ0ˆØ×ÑØ×Ñ˜V¨FÐÓ3Ø�˜Ð Ñ!Ø×%Ñ%õ	
rA   )r€  rƒ  )r‚  r„  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ü  rs  rþ  r   r   r   rV  r–  r   rÑ  rd  rl   )r}   r“   ÚtnameÚixnamer†   r–  Úexpected_indexesr<  s           r?   Útest_get_noncol_indexz-ComponentReflectionTest.test_get_noncol_indexÚ  s­   € ô �zÓ"ˆØ×"Ñ" 5Ó)ˆð  ×+Ñ+Ó-¨t°U¨mÑ<ÐØ×Ñ˜Ð"2°D×4MÑ4MÔNä�%œ›°:Ô>ˆÜŒC�—	‘	‹N˜AÔÜŒD�—‘‹O˜AÑ×$Ñ$ aÔ(ÜŒD�—‘‹O˜AÑ×#Ñ# VÕ,rA   ÚIX_test_dataÚix_test_dataÚmixedCaseIndexzix.with.dotsÚidx_namec                 óÚ  — t        d|t        dt        d¬«      t        dt        d«      «      «      }t	        ||j
                  j                  «       |j                  |«       t        |«      }|j                  d«      }|D �cg c]  }|d   ‘Œ	 }}||v sJ d|› d	|› �«       ‚|D �cg c]  }|d   |k(  sŒ|‘Œ }	}t        t        |	«      d
«       t        |	d   d   dg«       yc c}w c c}w )zATest that index names with various casing are properly reflected.rJ   rK   TrL   rN   rO   rl   z	Expected z in rÜ   r   rÌ   N)r   r   r   r   r$   r¨   rN   rß   r   r,  r   rV  )
r}   r“   r[   rŸ  r<  r†   r–  r¾   Úindex_namesÚmatching_idxs
             r?   Útest_get_indexes_quoted_namez4ComponentReflectionTest.test_get_indexes_quoted_nameð  sð   € ô ØØÜ�4œ¨dÔ3Ü�6œ6 "›:Ó&ó	
ˆô 	ˆh˜Ÿ™Ÿ™Ô!à×Ñ˜JÔ'ä�zÓ"ˆØ×"Ñ" <Ó0ˆà.5Ö6 s�s˜6“{Ð6ˆÐ6Ø˜;Ñ&ÐO¨)°H°:¸TÀ+ÀÐ(OÓOÐ&ð (/ÖJ °#°f±+ÀÓ2IšÐJˆÐJÜŒC�Ó˜qÔ!ÜˆL˜‰O˜NÑ+¨f¨XÕ6ùò 7ùò Ks   ÂC#Â&C(Â4C(c                 óÄ   — t        |«      }| j                  «       }|j                  |«      }| j                  d¬«      d |f   }| j	                  ||| j
                  «       y )NT)r  )r   ri   r/  r  rs  rþ  )r}   r“   r†   rl   Ú	reflectedrQ  s         r?   Ú&test_get_temp_table_unique_constraintsz>ComponentReflectionTest.test_get_temp_table_unique_constraints  s]   € ô �zÓ"ˆØ×#Ñ#Ó%ˆØ×/Ñ/°Ó5ˆ	Ø�l‰l ˆlÓ% t¨T lÑ3ˆØ×Ñ˜ C¨×)BÑ)BÕCrA   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º   r’  )rc  rÌ   rl   r   rñ  rl   )	r   ri   r,  rÆ  r   rS   Úindex_reflects_included_columnsr8   r   )r}   r“   r†   ru   r–  ÚindÚexpectedr¾   s           r?   Útest_get_temp_table_indexesz3ComponentReflectionTest.test_get_temp_table_indexes  sª   € ä�zÓ"ˆØ×)Ñ)Ó+ˆ
Ø×"Ñ" :Ó.ˆØò 	-ˆCØ�G‰GÐ% tÕ,ð	-ð ¨u¨g¸}ÑMð
ˆô ×Ñ×;Ñ;×CÒCØ-/ˆH�Q‰KÐ)Ñ*ÜØ#ÖD�S s¨6¡{°mÓ'CŠSÒ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 ]d  \  }}|j'                  dd «      }|r|
j)                  |«       t!        |j'                  dd «      d «       |j'                  dd «       t!        ||«       Œf 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±   )rl   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¨   rl   ©rÓ   Útesttblrj  rb  rQ   rÌ   r   rï   rð  )rÛ   rR   )r   rU   r9  ÚoperatorÚ
itemgetterr   r   ro   r   r   Úappend_constraintr  rƒ   r   r/  r™  r   rV  rU  rÆ  r®  r   r–  rl   Úconstraintsr  Ú
differencer^  r»   rw  )r}   r[   r“   r5  rR   Úuniquesrd  r  r†   r¥  Únames_that_duplicate_indexrú  ÚreflÚdupeÚreflected_metadatar¾   Ú	idx_namesÚuqÚuq_namesrR  s                       r?   r0  z3ComponentReflectionTest.test_get_unique_constraints*  sÎ  € ñ Ü×'Ñ'‰FàˆFÜà#°c°UÑ;Ø'ºÑIØ'ºÑIØ)¸EÀ5¸>ÑJØ&¸¸Ñ>Ø(¸3¸%Ñ@ðô ×#Ñ# FÓ+ô

ˆô ØØÜ�3œŸ	™	 "›Ó&Ü�3œŸ	™	 "›Ó&Ü�3œŸ
™
Ó#ä�5œ"Ÿ)™) B›-Ó(Ü�5œ"Ÿ)™) B›-Ó(Øô

ˆð ò 	ˆBØ×#Ñ#Ü×#Ñ# R¨Ñ%7ÐI¸bÀ¹jÑIõð	ð 	�‰�ZÔ ä�zÓ"ˆÜØ×'Ñ'¨	¸&Ð'ÓAÜ×#Ñ# FÓ+ô
ˆ	ô
 &)£UÐ"äŒC�‹Lœ#˜i›.Ô)ä˜g yÓ1ò 		‰JˆD�$ð —8‘8Ð.°Ó5ˆDÙØ*×.Ñ.¨tÔ4Ü�—‘˜ DÓ)¨4Ô0à�H‰HÐ&¨Ô-Ü��d�Oð		ô &›ZÐÜØØØ$Øô	
ˆ	ð *3×):Ñ):Ö; #�S—X“XÐ;ˆ	Ð;ð  ×+Ñ+ö
àÜ˜"œb×1Ñ1Ô2ð �G‹Gò
÷ ‰*�nÐ%Ó
&ð	 	ð ×)Ñ)¨(Ô3Ð3Ð3Ù%ÜÐ*¨IÔ6Ü�œ#›%Ô à—‘×+Ñ+×0Ñ0ˆÜˆD×'Ñ'¨°vÐ'Ó>ÀÕCùò <ùò
s   È6LÉ-LÚUQ_emailÚuq_emailÚmixedCaseUQzuq.with.dotsÚuq_namec                 ó`  — t        d|t        dt        d¬«      t        dt        d«      «      t	        j
                  d|¬«      «       |j                  |«       t        |«      }|j                  d«      }t        t        |«      d«       t        |d	   d
   |«       t        |d	   d   dg«       y)zUTest that unique constraint names with various casing are
        properly reflected.rJ   rK   TrL   ÚemailrO   r  rÜ   r   rl   rÌ   N)r   r   r   r   ro   r  rß   r   r/  r   rV  )r}   r“   r[   rÅ  r†   Úuq_conss         r?   Ú'test_get_unique_constraints_quoted_namez?ComponentReflectionTest.test_get_unique_constraints_quoted_name†  sœ   € ô 	ØØÜ�4œ¨dÔ3Ü�7œF 2›JÓ'Ü×Ñ ¨gÔ6ô	
ð 	×Ñ˜JÔ'ä�zÓ"ˆØ×-Ñ-¨lÓ;ˆäŒC�‹L˜!ÔÜˆG�A‰J�vÑ Ô(ÜˆG�A‰J�~Ñ&¨¨	Õ2rA   c                 ó    — |rt         j                  }nd }t        |«      }dD ])  }|j                  ||¬«      }t	        t        |«      «       Œ+ y )NrT  rQ   )r   rU   r   r   r+   Úbool)r}   r“   r5  rR   r†   Úviewr´  s          r?   r"  z0ComponentReflectionTest.test_get_view_definition¥  sQ   € ñ
 Ü×'Ñ'‰FàˆFÜ�zÓ"ˆØDò 	ˆDØ×(Ñ(¨°fÐ(Ó=ˆAÜ”D˜“GÕñ	rA   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_existrN  )r   r   r!   r   r’   s      r?   Ú'test_get_view_definition_does_not_existz?ComponentReflectionTest.test_get_view_definition_does_not_exist³  sj   € ä�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.

        ))rN  rO  )rg  r^  )r\  r]  rl   rÂ  TN)r   ré   Úget)r}   r“   r†   r˜  ÚcnamerÒ  r¨   Úid_s           r?   Útest_autoincrement_colz.ComponentReflectionTest.test_autoincrement_col»  sk   € ô �zÓ"ˆð
ò 	2‰LˆE�5ð
 ×#Ñ# EÓ*ˆDØ)-Ö. A�1�V‘9˜a‘<Ò.¨uÑ5ˆCØ—7‘7˜?¨DÕ1Ð1Ð1ñ	2ùò /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)NrN  rQ   rw  )r   r   r=   rU   r   rS   r  r8   r  r+   r  r;   r   r  )r}   r5  r†   rR   r  s        r?   r  z.ComponentReflectionTest.test_get_table_optionsÔ  s°   € ô ”v—y‘yÓ!ˆÙ'1”×#Ò#°tˆä×Ñ×1Ñ1×9Ò9Ø×(Ñ(¨¸Ð(Ó@ˆCÜ”J˜s¤DÓ)Ô*à×(Ñ(Ð)9À&Ð(ÓIˆCÜ”J˜s¤DÓ)Õ*äÔ2Ó3ñ ?Ø×&Ñ& w°vÐ&Ô>÷?÷ ?ñ ?ús   Â: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)NrQ   )r   r   r=   r   rS   r  r8   rU   Úget_multi_table_optionsr8  r  r   r   r  )r}   r5  r†   rR   r  rd  rQ  s          r?   Útest_multi_get_table_optionsz4ComponentReflectionTest.test_multi_get_table_optionså  sÌ   € ä”v—y‘yÓ!ˆÜ×Ñ×1Ñ1×9Ò9Ù+5”V×'Ò'¸4ˆFØ×.Ñ.°fÐ.Ó=ˆCð "×1Ñ1¸Ð1Ó@öàð ˜� ×!7Ñ!7¸ÀfÐ!7Ó!MÑMðˆCð ô ��S�MäÔ2Ó3ñ /Ø×,Ñ,Ô.÷/ð /ùò÷/ð /ús   Á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 )Nrg  )r4   r«   )rn  rN  údoes-not-existr¸  rÛ  r·  rR   rD  )rR   r4   r«   rD  r4   r«   )r   r   r@  rû  rA  rB  rÑ  r    r=  ÚcopyrÆ  Úappend)rR   r4   r«   r<  Úsingle_reflect_fnÚ
exp_methodr†   rt   rD  rQ  Ú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��>Ñ"áØØØØŸV™V NÓ3ô	ˆCð �$ˆCØœ×+Ñ+Ò+Ø—g‘g“i�Ø—‘˜Ô Ø—
‘
˜3”Ø”z×'Ñ'Ò'Ø—g‘g“i�Ø—‘˜”Ø—
‘
˜3”ä˜:Ó&¨¨SÐ0Ð0rA   rF   )r}   r“   râ  s    ` r?   Úget_multi_expz%ComponentReflectionTest.get_multi_expõ  s   ø€ ô,	1ð\ ÐrA   c                 óÀ   —  |||||t         j                  | j                  «      \  }}}|D ]0  }	|j                  «         |j                  di |	¤Ž}
t        |
|«       Œ2 y ©NrF   )r   r  r»  r„   r×  r   ©r}   rã  rR   r4   r«   r<  r†   rà  rQ  rt   Úresults              r?   Ú#test_multi_get_table_options_tablesz;ComponentReflectionTest.test_multi_get_table_options_tables'	  sn   € ñ
 'ØØØØÜ×'Ñ'Ø×Ñó
‰ˆˆc�3ð ò 	ˆBØ×ÑÔØ1�T×1Ñ1Ñ7°BÑ7ˆFÜ�˜Õñ	rA   c                 ó¼   —  |||||t         j                  | j                  «      \  }}}|D ].  }	|j                  «        t	         |j
                  di |	¤Ž|«       Œ0 y rå  )r   r2  r¿  r„   r   Úget_multi_table_comment)
r}   rã  rR   r4   r«   r<  r†   rà  rQ  rt   s
             r?   Útest_get_multi_table_commentz4ComponentReflectionTest.test_get_multi_table_comment9	  sj   € ñ
 'ØØØØÜ×'Ñ'Ø×Ñó
‰ˆˆc�3ð ò 	9ˆBØ×ÑÔÜÐ,�×,Ñ,Ñ2¨rÑ2°CÕ8ñ	9rA   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['\" ]rL  )ÚreÚsubr  )r½  s    r?   Ú_cleanz:ComponentReflectionTest._check_expressions.<locals>._cleanK	  s   € Ü—6‘6˜) R¨Ó.×4Ñ4Ó6Ð6rA   )r  r  r;   r   r°  )r}   rç  rQ  Úerr_msgrð  Úer´  s          r?   Ú_check_expressionsz*ComponentReflectionTest._check_expressionsJ	  sf   € ð	7œó 	7ô �cœ4Ô Ü¨&¯,©,«.×9¡$ ! Q‘˜“˜A‘Ó9¸3ÀÕHä FÖ+˜q‘˜•Ò+¨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   rV  rU  r™  ró  )	r}   rç  rQ  Úreq_keysÚmsgÚrrò  r²   rñ  s	            r?   rs  z#ComponentReflectionTest._check_listS	  s½   € ØÐÜ�˜˜SÕ!ä”�F“œS ›X sÔ+Ü˜F CÓ(ò 5‘��1Ü˜Q›¤# a£&™ò 5�AØ˜H‘}¨¨aª°A¸²FØ%( E¨¨Q¨C¨s°1°#Ð"6˜ØÐ AÑAØ ×3Ñ3°A°a±D¸!¸A¹$ÀÕHä  !¡ a¨¡d¨GÕ4ñ5ñ5rA   c                 óÒ   — t        t        |j                  «       «      t        |j                  «       «      «       |D ](  }||   ||   }}|r|g|g}}| j                  ||||«       Œ* y r–   )r   r™  Úkeysrs  )r}   rç  rQ  rõ  Ú
make_listsr²   r÷  rò  s           r?   Ú_check_table_dictz)ComponentReflectionTest._check_table_dicta	  se   € ÜŒC�—‘“Ó¤ C§H¡H£J£Ô0Øò 	0ˆAØ˜!‘9˜c !™fˆqˆAÙØ�s˜Q˜C�1�Ø×Ñ˜Q  8¨QÕ/ñ		0rA   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_columnsi	  s~   € ñ 'ØØØØÜ×!Ñ!Ø×Ñó
‰ˆˆc�3ð ò 	LˆBØ×ÑÔØ+�T×+Ñ+Ñ1¨bÑ1ˆFØ×"Ñ" 6¨3°×0JÑ0JÕKñ	LrA   c                 óæ   —  |||||t         j                  | j                  «      \  }}}|D ]C  }	|j                  «         |j                  di |	¤Ž}
| j                  |
|| j                  d¬«       ŒE y )NT)rú  rF   )r   r&  rÖ  r„   Úget_multi_pk_constraintrû  rØ  ræ  s              r?   Útest_get_multi_pk_constraintz4ComponentReflectionTest.test_get_multi_pk_constraint{	  s„   € ñ
 'ØØØØÜ×'Ñ'Ø�L‰Ló
‰ˆˆc�3ð ò 	ˆBØ×ÑÔØ1�T×1Ñ1Ñ7°BÑ7ˆFØ×"Ñ"Ø˜˜T×3Ñ3Àð #õ ñ	rA   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)rl   N)rÑ  r,   r?  )Ú.0r´  s     r?   ú	<genexpr>z7ComponentReflectionTest._adjust_sort.<locals>.<genexpr>“	  s+   è ø€ ò ,Ø>?˜Ÿ™˜f›¨$´·±Ð)9Ô9ñ,ùs   ‚-/r³  )r   rS   r€  r8   r±  rV  ÚanyÚsort)r}   rç  rª  rÓ   ÚobjrÕ  s         r?   Ú_adjust_sortz$ComponentReflectionTest._adjust_sort�	  su   € Ü×Ñ×<Ñ<×DÒDØ Ð)ò *�ØŸ:™:›<ò *�CÜ˜3“x !“|¬ñ ,ØCFô,õ )ð Ÿ™ S˜Õ)ñ	*ñ*ð ErA   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   € ¤u¨QÐ/DÑ-EÓ'F€ rA   rF   )r   r)  ré  r„   Úget_multi_foreign_keysr	  rû  rë  ræ  s              r?   Útest_get_multi_foreign_keysz3ComponentReflectionTest.test_get_multi_foreign_keys˜	  s”   € ñ
 'ØØØØÜ×&Ñ&Ø�L‰Ló
‰ˆˆc�3ð ò 	HˆBØ×ÑÔØ0�T×0Ñ0Ñ6°2Ñ6ˆFØ×ÑØ˜ÑFôð ×"Ñ" 6¨3°×0FÑ0FÕGñ	HrA   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­	  s~   € ñ
 'ØØØØÜ×!Ñ!Ø×Ñó
‰ˆˆc�3ð ò 	KˆBØ×ÑÔØ+�T×+Ñ+Ñ1¨bÑ1ˆFØ×"Ñ" 6¨3°×0IÑ0IÕJñ	KrA   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   € ´U¸1¸^Ñ;LÓ5M€ rA   rF   )r   r/  r  r„   Úget_multi_unique_constraintsr	  rû  r	  ræ  s              r?   Ú!test_get_multi_unique_constraintsz9ComponentReflectionTest.test_get_multi_unique_constraints¿	  s�   € ñ
 'ØØØØÜ×,Ñ,Ø�L‰Ló
‰ˆˆc�3ð ò 	PˆBØ×ÑÔØ6�T×6Ñ6Ñ<¸Ñ<ˆFØ×Ñ˜f cÑ+MÔNØ×"Ñ" 6¨3°×0NÑ0NÕOñ		PrA   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   € ´U¸1¸Y¹<Ó5H€ rA   rF   )r   r5  r  r„   Úget_multi_check_constraintsr	  rû  r  ræ  s              r?   Ú test_get_multi_check_constraintsz8ComponentReflectionTest.test_get_multi_check_constraintsÒ	  s�   € ñ
 'ØØØØÜ×+Ñ+Ø�L‰Ló
‰ˆˆc�3ð ò 	HˆBØ×ÑÔØ5�T×5Ñ5Ñ;¸Ñ;ˆFØ×Ñ˜f cÑ+HÔIØ×"Ñ" 6¨3°×0FÑ0FÕGñ		HrA   r  ré   r&  r)  r,  r/  r5  r2  Ú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å	  sA   € ô0 �zÓ"ˆÜ�t˜VÓ$ˆÜÔ+Ó,ñ 	*ÙÐ(Ô)÷	*÷ 	*ñ 	*ú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   ø€ Ø—‘˜o¨rÓ2ˆBÜ'>¸uÓ'EˆBÐ#Ñ$Ù�q�;˜A‘;ÐrA   rý  r&  r'  )r   rý  r,   ÚpatchÚobjectr	   r"   r   Úreflect_tabler   r   )r}   r“   r+  r*  s      @r?   Útest_unreflectablez*ComponentReflectionTest.test_unreflectable
  s‡   ø€ Ü×(Ñ(ˆô	ô
 �Z‰Z×ÑœyÐ*=¸wÓGñ 	Ü&Ô'>ÀÓFñ Ü˜
Ó#×1Ñ1Ü˜,¬«
Ó3°Tô÷÷	ð 	÷ð ú÷	ð 	ús#   ¼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)rR   r    Úresolve_fksrK  )r   r   rU   Úreflectr   r8  r@  rA  r  r   r9  r»   )	r}   r“   r5  r    ÚmrR   r†   r»   r<  s	            r?   Útest_metadataz%ComponentReflectionTest.test_metadata
  sË   € ô
 ‹JˆÙ'1”×#Ò#°tˆØ	�	‰	�* V°5Àeˆ	ÔLä�zÓ"ˆØ×%Ñ% fÓ-ˆÙØ�d×)Ñ)¨&Ó1Ñ1ˆFðØ˜$×:Ñ:¸6ÓBÑB�ñ Ø/5Ö6¨!˜˜  ! ’oÐ6ˆFÐ6ÜŒF�1—8‘8Óœf V›nÕ-øô	 'ò Ùðüò 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   Ã©è©¦è›‡áºŸÎ©rî   Úemojiu	   â˜�ï¸�âœ¨u   è©¦è›‡áºŸÎ©âœ¨r½  rl   rï   )r7  r8  ©r   r   r   rß   r   r2  r   ré   )	r}   r“   r[   r†   ÚtcrÒ  r¨   ÚvaluerQ  s	            r?   Útest_comments_unicodez-ComponentReflectionTest.test_comments_unicode%
  s¯   € äØØÜ�9œg¨Ô?Ü�7œG¨[Ô9Ø$õ	
ð 	×Ñ˜JÔ'ä�zÓ"ˆØ×#Ñ#Ð$6Ó7ˆÜˆB�Ð)Ð*Ô+à×ÑÐ 2Ó3ˆØ26Ö7¨Q��6‘˜A˜i™LÑ(Ð7ˆÐ7Ø)°KÑ@ˆÜˆE�3�ùò 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 )
Nr6  r8  u&   ðŸ��ðŸ§™ðŸ��ðŸ§™â€�â™‚ï¸�ðŸ§™â€�â™€ï¸�rî   u&   ðŸŽ©ðŸ�°ðŸ�‘ðŸ¤·â€�â™€ï¸�ðŸ¤·â€�â™‚ï¸�r½  r   rl   rï   r9  )r}   r“   r[   r†   r:  r¨   s         r?   Útest_comments_unicode_fullz2ComponentReflectionTest.test_comments_unicode_full:
  sŽ   € äØØÜ�7œGÐ-UÔVØ<õ		
ð 	×Ñ˜JÔ'ä�zÓ"ˆØ×#Ñ#Ð$6Ó7ˆÜˆB�ÐAÐBÔCØ×ÑÐ/Ó0°Ñ3ˆÜˆQˆv‰Y˜˜)™Ð%¨Ð1YÐ'ZÕ[rA   c           
      óš  — t         j                  j                  t        «      }t	        d|t        dt        j                  |¬«      «      t        dt        j                  «       «      «       |j                  |«       t        «       }t	        d||¬«      }t        |j                  j                  j                  j                  |«       t        |j                  j                   j                  j                  «       t#        |«      }|j%                  d«      \  }}t        |d   j                  |«       t        |d   j                  «       y )Nr<  Úcollated)Ú	collationÚnot_collatedrÚ   rÃ  )r   rS   Úget_order_by_collationr   r   r   ro   r   rß   r   r   r¨   r@  rÃ  rA  r*   rB  r   ré   )	r}   r“   r[   rA  rá   Út2r†   r@  rB  s	            r?   Ú test_column_collation_reflectionz8ComponentReflectionTest.test_column_collation_reflectionK
  só   € ô ×$Ñ$×;Ñ;¼FÓCˆ	ÜØØÜ�:œrŸy™y°9Ô=Ó>Ü�>¤2§9¡9£;Ó/ô		
ð 	×Ñ˜JÔ'ä‹ZˆÜ�3˜¨*Ô5ˆäˆB�D‰D�M‰M×Ñ×(Ñ(¨)Ô4Ü�—‘×!Ñ!×&Ñ&×0Ñ0Ô1ä�zÓ"ˆØ!%×!1Ñ!1°#Ó!6Ñˆ�,ÜˆH�VÑ×&Ñ&¨	Ô2Ü�˜VÑ$×.Ñ.Õ/rA   r–   r-   )NF)urB   rC   rD   Úrun_insertsrŸ   rž   rE   r\   rI  ri   rY   rW   r¢  r¥  rµ  r    r?  r   r»  r¿  rË  ÚpropertyrÍ  rÖ  rØ  ré  rë  rü  rþ  r  r	  r  r  r   rS   Úschema_reflectionr  r   r&  r(  Úschema_create_deleter,  r0  r2  rÅ   ró   rT   r>  rB  r¯  rF  rV   rr   rI  rõ   rM  rO  rK  r$  rø   rm  ro  r  rq  Ú!primary_key_constraint_reflectionr'  rÔ  r~  r*  r�  rˆ  r”  r£   r-  rŠ  r‹  r›  r£  r8  r¦  Útemp_table_reflect_indexesr«  r0  rÉ  r"  rÏ  Útable_reflectionrÔ  r  rØ  r   rã  r  rE  rè  rë  ró  rs  rû  rþ  r  r	  r  r  r  r9  r  r"  r/  r    r4  r<  Úcomment_reflection_full_unicoder>  Úcolumn_collation_reflectionÚorder_by_collationrE  rF   rA   r?   rG  rG  r  s™  „ Ø $Ð$€K�+à $ÐàñNó ðNð
 ñk-ó ðk-ðZ ñ
ó ð
ð
 ñOó ðOðB ñó ðò4ò!ò)ðZ Ø�o‰oØ�^‰^ØóðB Ø�o‰oØ�^‰^Øó"ðL Ø�o‰oØ�^‰^Øó^ð@ ñ7ó ð7ð
 Ø�o‰oØ�^‰^Øó.ð` ñ/ó ð/ð
 Ø�o‰oØ�^‰^ØóVðp ñ
ó ð
ð Ø�o‰oØ�^‰^Øósðj ñ2ó ð2ð
 Ø�o‰oØ�^‰^ØØóCðJ ñ(ó ð(ð
 Ø�o‰oØ�^‰^Øó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×&Ñ&×.Ñ.Ð/Ø	ˆu�g×&Ñ&×6Ñ6Ð7àØØ×Ñ×$Ñ$ w×'7Ñ'7×'GÑ'GÑGð	
ð
 (ô
ñ<6ó
ð<6ðB ×Ñ×+Ñ+ñ	
ó ,ð	
ð ×Ñ×+Ñ+ñ+ó ,ð+ð ×Ñ×+Ñ+Ø×Ñ×,Ñ,Ø×Ñ×%Ñ%ñBó &ó -ó ,ðBð
 €W×ÑØ�4˜×)Ñ)×1Ñ1Ð2¸\ôð ×Ñ×7Ñ7ñ
ó 8óð
ð: €W×ÑØØØØØôð ×Ñ×7Ñ7Ø×Ñ×'Ñ'ñ4ó (ó 8óð4ð, €W×ÑØ�4˜×)Ñ)×1Ñ1Ð2¸\ôð ×Ñ×7Ñ7ñ$>ó 8óð$>ðL €W×ÑØØØØØôð ×Ñ×7Ñ7ñ%6ó 8óð%6ðN ×Ñ×0Ñ0Ø×Ñ×Ññ"8ó ó 1ð"8ðH €W×ÑØ�4˜×)Ñ)×1Ñ1Ð2¸\ôð ×Ñ×&Ñ&ñ
ó 'óð
ð, €W×ÑØ3Ø/Øôð
 ×Ñ×&Ñ&Ø×Ñ×*Ñ*Ø×Ñ×2Ñ2ñ-ó 3ó +ó 'óð-ð €W×ÑØØØØØôð ×Ñ×&Ñ&ñ7ó 'óð7ð0 ×Ñ×+Ñ+Ø×Ñ×2Ñ2ñDó 3ó ,ðDð ×Ñ×0Ñ0ñ
ó 1ð
ð  €W×ÑØ	ˆw×Ñ×'Ñ'Ð(¨(¸\ôð ×Ñ×2Ñ2ñVDó 3óðVDðp €W×ÑØØØØØôð ×Ñ×2Ñ2ñ3ó 3óð3ð. ×Ñ×%Ñ%Ø€W×ÑØ�4˜×)Ñ)×1Ñ1Ð2¸\ôñóó &ðð ×Ñ×%Ñ%ñ.ó &ð.ð ×Ñ×&Ñ&ñ2ó 'ð2ð0 €W×ÑØ	ˆw×Ñ×'Ñ'Ð(¨(¸\ôñ?óð?ð €W×Ñ˜4 ×!1Ñ!1×!9Ñ!9Ð:¸EÓBñ/ó Cð/ð ‡_�_ñ/ó ð/ð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ð\ð  ×Ñ×1Ñ1Ø×Ñ×(Ñ(ñ0ó )ó 2ñ0rA   rG  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“   r[   s      r?   Útable_no_columnsz#TableNoColumnsTest.table_no_columnsg
  s   € äˆg�xÔ Ø×Ñ˜JÕ'rA   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   ra   r#   rß   rU  s      r?   Úview_no_columnsz"TableNoColumnsTest.view_no_columnsl
  sR   € äˆg�xÔ Ü�‰ØØÜÐ<Ó=ô	
ô 	�‰Ø�m¤SÐ)FÓ%Gô	
ð 	×Ñ˜JÕ'rA   c                 ón   — t        dt        «       |¬«      }t        t        |j                  «      g «       y )Nr¾  rÚ   ©r   r   r   rÑ  r¨   )r}   r“   rV  rD  s       r?   Útest_reflect_table_no_columnsz0TableNoColumnsTest.test_reflect_table_no_columns|
  s$   € Ü�7œH›J°jÔAˆÜŒD�—‘‹J˜ÕrA   c                 óŒ   — t        |«      }t        |j                  d«      g «       |j                  «       }t        |dg i«       y )Nr¾  rT  )r   r   ré   rý  )r}   r“   rV  r†   Úmultis        r?   Ú!test_get_columns_table_no_columnsz4TableNoColumnsTest.test_get_columns_table_no_columns€
  s>   € Ü�zÓ"ˆÜˆD×Ñ˜WÓ% rÔ*Ø×&Ñ&Ó(ˆÜˆE�O RÐ(Õ)rA   c                 óˆ   — t        «       }|j                  |«       t        |j                  «      j	                  dg«      sJ ‚y rT  )r   r2  r™  r»   r^  )r}   r“   rV  r3  s       r?   Ú"test_reflect_incl_table_no_columnsz5TableNoColumnsTest.test_reflect_incl_table_no_columns†
  s3   € Ü‹JˆØ	�	‰	�*ÔÜ�1—8‘8‹}×)Ñ)¨7¨)Ô4Ð4Ñ4rA   c                 ón   — t        dt        «       |¬«      }t        t        |j                  «      g «       y )NÚempty_vrÚ   rZ  )r}   r“   rX  rD  s       r?   Útest_reflect_view_no_columnsz/TableNoColumnsTest.test_reflect_view_no_columns‹
  s$   € ä�9œh›j¸
ÔCˆÜŒD�—‘‹J˜ÕrA   c                 ó¬   — t        |«      }t        |j                  d«      g «       |j                  t        j
                  ¬«      }t        |dg i«       y )Nrb  )r«   )Nrb  )r   r   ré   rý  r   rA  )r}   r“   rX  r†   r]  s        r?   Ú test_get_columns_view_no_columnsz3TableNoColumnsTest.test_get_columns_view_no_columns�
  sH   € ä�zÓ"ˆÜˆD×Ñ˜YÓ'¨Ô,Ø×&Ñ&¬J¯O©OÐ&Ó<ˆÜˆEÐ% rÐ*Õ+rA   N)rB   rC   rD   rÄ   rž   r   r   rV  rX  r[  r^  r`  rS   r    rc  re  rF   rA   r?   rQ  rQ  c
  sŠ   „ Ø1€LØ $Ðà‡_�_ñ(ó ð(ð ‡_�_ñ(ó ð(òò*ò5ð
 ×Ñ×Ññó ðð ×Ñ×Ññ,ó ñ,rA   rQ  c                   ó`  — 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ej                  j*                  d„ «       Zd„ Zej                  j0                  d„ «       Zej                  j0                   ej                  ej6                  ej8                  ej:                  ej<                  ej                  j>                  fej@                  ej                  j>                  fd¬«      d„ «       «       Z!ej                  j0                  d„ «       Z" ej                  d
dd
ej                  jF                  fd
d
dej                  jH                  fi d
dej                  jH                  fi dd
ej                  jJ                  fd
d
dej                  jL                  fd
dd
ej                  jN                  fd¬«      d„ «       Z( ej                  e) e*jV                  d «      d!fe)d d!fe, e*jZ                  «       d"fe) e*jV                  d#«      d$ej                  j\                  fe) e*jV                  d%«      d&ej                  j\                  fe/ e0jb                  «       d'fe) e*jd                  d(«       e*jd                  d)«      z   d$ej                  j\                  fd*¬«      ej                  jf                  d+„ «       «       Z4y
),ÚComponentReflectionTestExtraTF)Úparamsc                 ó<   — |j                   rt        j                  S y r–   )Úparamr   rU   )r}   Úrequests     r?   Úuse_schema_fixturez/ComponentReflectionTestExtra.use_schema_fixture›
  s   € à�=Š=Ü×%Ñ%Ð%àrA   c                 ó@   ‡‡‡— t         j                  ˆˆˆfd„«       }|S )Nc              3   óN   •K  — ‰t        ‰«      f–— ‰j                  ‰«       y ­wr–   )r   rß   )rÏ   r“   r[   rl  s    €€€r?   Úgoz:ComponentReflectionTestExtra.inspect_for_table.<locals>.go¤
  s%   øè ø€ à$¤g¨jÓ&9Ð9Ò9à×Ñ 
Õ+ùs   ƒ"%)Ú
contextlibÚcontextmanager)r}   r[   r“   rl  ro  s    ``` r?   Úinspect_for_tablez.ComponentReflectionTestExtra.inspect_for_table¢
  s"   ú€ ä	×	"Ñ	"õ	,ó 
#ð	,ð
 ˆ	rA   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.   € Ø—8‘8Ü—
‘
Ð3°W·]±]³_ÄbÇdÁdÓKóð rA   rl   r  ©rl   r  c                 ó   — | d   S r  rF   ©Úitems    r?   r³   z4ComponentReflectionTestExtra.ck_eq.<locals>.<lambda>º
  ó
   € ˜d 9™o€ rA   r³  c                 ó   — | d   S r  rF   r|  s    r?   r³   z4ComponentReflectionTestExtra.ck_eq.<locals>.<lambda>¿
  r~  rA   )r9  r   )r}   r¥  rª  ry  r}  s        r?   Úck_eqz"ComponentReflectionTestExtra.ck_eq¬
  se   € ò	ô
 ð &öàð ˜f™±)¸DÀ¹OÓ2LÓMòñ /ô
ˆ	ô ØÙ.ô
ˆô 	ˆI�xÕ ùò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)Nrw  rN   rj  rQ   )r   r   ro   r   r€  r5  )r}   r[   rr  rR   rª   s        r?   Ú#test_check_constraint_no_constraintz@ComponentReflectionTestExtra.test_check_constraint_no_constraintÃ
  so   € áÐ/Ó0ð 	Ñ4G°V¸YÜØ ØÜ�vœrŸy™y¨›}Ó-Øõ	÷	ð 	�
‰
Ø×+Ñ+Ð,<ÀVÐ+ÓLØõ	
÷	ð 	ús   ‰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_ccrK   TrL   r±   úa > 1 AND a < 5r  rN   rO   rQ   úa > 1 and a < 5rz  )
r   r   r   ro   r  r   r5  r€  r,   r?  ©r}   r[   rr  r…  rR   rª   r¥  s          r?   Útest_check_constraint_inlinez9ComponentReflectionTestExtra.test_check_constraint_inlineÒ
  s»   € ñ ˜wÓ'ð 	Ñ+>¨F°IÜØØÜ�tœW›Y°DÔ9ÜØÜ“IÜ×&Ñ&Ø)°ôóô �vœv b›zÓ*Øõ÷	ð  ×3Ñ3°GÀFÐ3ÓKˆ	à�
‰
Øð ,Ò7¬t¯x©xØ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)Nr‡  r±   za = 1 OR (a > 2 AND a < 5)r  rQ   za = 1 or a > 2 and a < 5rz  )	r   r   r   ro   r  r5  r€  r,   r?  rŠ  s          r?   Ú test_check_constraint_standalonez=ComponentReflectionTestExtra.test_check_constraint_standaloneö
  s›   € ñ ˜wÓ'ð 		Ñ+>¨F°IÜØØÜ�sœG›IÓ&Ü×"Ñ"Ø0°ôð õ÷		ð ×3Ñ3°GÀFÐ3ÓKˆ	à�
‰
Øð ,Ò7¬t¯x©xØ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)Nr‡  rK   TrL   r±   rˆ  r¯  zb > 1 AND b < 5rƒ  r  r¨   rN   rO   Úsome_uqzc > 1 AND c < 5Úcc1Ú	some_c_uqrQ   zc > 1 and c < 5rz  zb > 1 and b < 5r‰  )r   r   r   ro   r  r   r  r5  r€  r,   r?  )r}   r[   rr  rR   rª   r¥  s         r?   Útest_check_constraint_mixedz8ComponentReflectionTestExtra.test_check_constraint_mixed  s  € á˜wÓ'ð 	Ñ+>¨F°IÜØØÜ�tœW›Y°DÔ9Ü�sœG›I¤r×'9Ñ'9Ð:KÓ'LÓMÜØÜ“IÜ×&Ñ&Ð'8¸{ÔKóô
 �sœG›IÓ&Ü�vœv b›zÓ*Ü×#Ñ# F°Ô;Ü×"Ñ"Ð#4¸5ÔAÜ×#Ñ# C¨kÔ:Øõ÷	ð& ×3Ñ3°GÀFÐ3ÓKˆ	à�
‰
ØàÐ+<Ñ=Ø$Ð1BÑCÜŸ™Ð.?Ñ@ðõ	
÷+	ð 	ús   ‰C D1Ä1D:c                 ó˜  —  |d«      5 \  }}t        d|t        dt        d¬«      t        dt        «      t        dt        «      «      }t        d|j                  j
                  |j                  j                  |j                  j                  «       ddd«       j                  d«      }t        |d	   d
   g d¢«       y# 1 sw Y   Œ/xY w)ztest for #12894Úsa_multi_indexÚColumn1TrL   ÚColumn2ÚColumn3ÚIndex_ExampleNr   rÌ   )r™  r—  r˜  )
r   r   r   r$   r¨   r™  r—  r˜  r,  r   )r}   r[   rr  rR   rª   rJ   r–  s          r?   Útest_index_column_orderz4ComponentReflectionTestExtra.test_index_column_order4  s´   € ñ Ð/Ó0ð 	Ñ4G°V¸YÜØ ØÜ�y¤'°tÔ<Ü�y¤'Ó*Ü�y¤'Ó*óˆJô ØØ—‘×$Ñ$Ø—‘×$Ñ$Ø—‘×$Ñ$ô	÷	ð ×'Ñ'Ð(8Ó9ˆÜˆG�A‰J�~Ñ&Ò(IÕJ÷	ð 	ús   ‰B	C Ã C	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"                  r’d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<  Úxrb  Ú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)rl   rÌ   rc  rð  c                 óº   •— t         j                  j                  j                  r$g | d<   ‰j                  j
                  › d�g i| d<   y | j                  di «       y )Nrñ  Ú_includerð  )r   rS   r¨  r8   r/  rl   r(  )Úentryr“   s    €r?   ÚcompleteIndexzYComponentReflectionTestExtra.test_reflect_expression_based_indexes.<locals>.completeIndexd  s\   ø€ Ü×Ñ×?Ñ?×GÒGØ+-�Ð'Ñ(à!×(Ñ(×-Ñ-Ð.¨hÐ7¸ð,�Ð'Ò(ð × Ñ Ð!2°BÕ7rA   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  r�  rž  ©r  )r}   r×   Úols      r?   rÝ  zbComponentReflectionTestExtra.test_reflect_expression_based_indexes.<locals>.lower_index_str.__eq__p  s)   € Ø—[‘[“]�à "�}ÒA¨#°¨)Ò*@°s¸b°yÐArA   NrÞ  rF   rA   r?   Úlower_index_strr¨  o  s   „ óBrA   r¬  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Úcoalescerª  )r}   r×   Úlong_strs     €r?   rÝ  zeComponentReflectionTestExtra.test_reflect_expression_based_indexes.<locals>.coalesce_index_str.__eq__v  s   ø€ à! U§[¡[£]Ð2ÒH°xÀ5Ð7HÐHrA   NrÞ  )r±  s   €r?   Úcoalesce_index_strr®  u  s	   ø„ õIrA   r²  )NrŸ  Nzlower(x)zlower(y))rl   rÌ   rò  rc  zcoalesce(x, 'z')rÚ   z>Skipped unsupported reflection of expression-based index t_idx)r   r   r   r$   r   r  r¨   r�  rŸ  rž  r°  rß   r   r  r   rS   Ú reflect_indexes_with_expressionsr8   ÚinsertrÝ  r   r,  r   r
   Ú!compare_table_index_with_expectedr/  rl   )r}   r[   r“   r<  r†   rª  r¦  r¬  r²  Ú
expr_indexÚexpr_index_longrá   rD  r±  s     `          @r?   Ú%test_reflect_expression_based_indexeszBComponentReflectionTestExtra.test_reflect_expression_based_indexesH  sD  ù€ äØØÜ�3œ˜r›
Ó#Ü�3œ˜r›
Ó#Ü�3œ˜r›
Ó#ó
ˆô 	ˆg”t—z‘z !§#¡#§%¡%Ó(¨!¯#©#¯%©%´·±¸A¿C¹C¿E¹EÓ1BÔCØ'ˆÜˆlœDŸM™M¨!¯#©#¯%©%°Ó:Ô;Üˆi˜Ÿ™Ÿ™Ôà×Ñ˜JÔ'ä�zÓ"ˆð "Ø!$ ØØ#%ñ	ð
ˆô	8ñ 	�h˜q‘kÔ"ô	Bœcô 	Bö	I¤ô 	Iô
 ×Ñ×<Ñ<×DÒDàÚ 1á# JÓ/ØÙ# JÓ/ð ð
  ñ	ˆJñ ˜*Ô%Ø�O‰O˜A˜zÔ*ð %Ø!% á&¨°x°jÀÐ'CÓDð ð  ñˆOñ ˜/Ô*Ø�O‰O˜OÔ,ä�× Ñ  Ó% xÔ0Ü“ˆBÜ�s˜B¨jÔ9‰Bä ðóñ >ô �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<  r�  rb  rž  r   ÚincludeF)rl   rÌ   rñ  rc  rð  r   rð  z
%s_includerÚ   )r   r   r   r$   r¨   r�  rð  r/  rl   rß   r   r,  r   r,   r?  r   rÑ  r–  )r}   r[   r“   r<  r¾   r†   r,  rD  s           r?   Útest_reflect_covering_indexz8ComponentReflectionTestExtra.test_reflect_covering_index£  sE  € äØØÜ�3œ˜r›
Ó#Ü�3œ˜r›
Ó#ó	
ˆô �G˜QŸS™SŸU™UÓ#ˆØBEÀˆ×Ñ˜J×-Ñ-×2Ñ2Ñ3°IÑ>à×Ñ˜JÔ'ä�zÓ"ˆà×&Ñ& sÓ+ˆÜØð $Ø%( EØ(+ uØ#Ü'+§x¡xñðô	
ô 	Ø˜‰NÐ,Ñ-Ø˜z×0Ñ0×5Ñ5Ñ5ñð ˆEô		
ô �3œ›
°*Ô=ˆÜÜ�—‘Ó˜QÑ×/Ñ/°
×0AÑ0A×0FÑ0FÑGØñð ˆEõ		
rA   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   rW  r   rƒ   r   ré   )r}   r“   r[   r   rf  Útype_r<  r¨   s           r?   Ú_type_round_tripz-ComponentReflectionTestExtra._type_round_tripÎ  s{   € ÜØØð
ô 8AÀÓ7G×H©8¨1¨eŒf�U˜Q‘Y Õ&ÓHò
ˆð
 	
�‰�Ôä#*¨:Ó#6×#BÑ#BÀ3Ó#GÖH˜a��&“	Ò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é   rQ  )r¾  r[  r_  r  r   Ú	precisionÚscale)r}   r“   r[   Útyps       r?   Útest_numeric_reflectionz4ComponentReflectionTestExtra.test_numeric_reflectionØ  sd   € à×(Ñ(Ø˜¤)×"3Ñ"3°B¸Ó":ó
ò 	ˆCô ˜c¤9×#4Ñ#4Ô5Ð5Ð5Ü�—‘˜rÔ"Ü�—	‘	˜1Õñ	rA   r½  c                 ó°  — | j                  || |d«      «      d   }t        |t        j                  «      rt	        |t        j                  «      sTJ ‚t        |t        j
                  «      rt	        |t        j
                  «      sJ ‚t	        |t        j                  «      sJ ‚t        |j                  d«       t	        |j                  t        «      sJ ‚y )Né4   r   )
r¾  Ú
issubclassr[  rq   r  r†  r   r   ÚlengthÚint)r}   r“   r[   r½  rÃ  s        r?   Útest_string_length_reflectionz:ComponentReflectionTestExtra.test_string_length_reflectioná  s¡   € ð ×#Ñ# J°¹%À»)ÓDÀQÑGˆÜ�eœY×.Ñ.Ô/Ü˜c¤9×#4Ñ#4Ô5Ð5Ð5Ü˜œyŸ~™~Ô.Ü˜c¤9§>¡>Ô2Ð2Ð2ä˜c¤9×#3Ñ#3Ô4Ð4Ð4äˆC�J‰J˜ÔÜ˜#Ÿ*™*¤cÔ*Ð*Ñ*rA   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±   TrR  r¯  Frl   rS  )r±   r¯  )r   r   r   rƒ   r   r   ré   )r}   r“   r[   r<  r‚   s        r?   Útest_nullable_reflectionz5ComponentReflectionTestExtra.test_nullable_reflectionö  s„   € äØØÜ�3œ¨$Ô/Ü�3œ¨%Ô0ó	
ˆð 	
�‰�ÔÜô # :Ó.×:Ñ:¸3Ó?öàð �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Úonupdater�  rK   TrL   rÔ   rd  Úx_idzx.idÚxidr  Útesté
   Úuserrl   rO   FrR  Útidztable.idÚmyfkr   r5   )r   r   r   r   r   ro   rÞ   rß   r   r)  r   )
r}   r“   r[   rª  rÐ  rÑ  r5   r†   Úoptsr²   s
             r?   Útest_get_foreign_key_optionsz9ComponentReflectionTestExtra.test_get_foreign_key_options  sp  € ðT ˆÙØ"*ˆG�JÑÙØ"*ˆG�JÑàÐØˆHäØØÜ�4œ¨dÔ3Øõ		
ô 	ØØÜ�4œ¨dÔ3Ü�6œ7¤J¨v¸EÔ$BÓCÜ�6œ6 "›:Ó&Øõ	
ô 	ØØÜ�4œ¨dÔ3Ü�6œ6 "›:°Ô6Ü�5œ'Ó"Ü×#Ñ#Ø�˜*˜ñØ,2ðØ6=ñð õ
	
ð 	×Ñ˜JÔ'ä�zÓ"ˆð ×$Ñ$ WÓ-¨aÑ0°Ñ;ˆä Ö1˜A¨¨a«ˆQ��Q‘‰ZÒ1°2Ô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<  rK   TrL   Úthecol)Úserver_defaultrÜ   rÄ  z	[\(\) \']rL  )Úflags)
r   r   r   rƒ   r   ré   rî  rï  r   Ú
IGNORECASE)	r}   r[   r“   ÚdatatyperÄ  Úexpected_regr<  r¥  Úreflected_sanitizeds	            r?   Útest_server_defaultsz1ComponentReflectionTestExtra.test_server_defaultsd  s}   € ô: ØØÜ�4œ¨dÔ3Ü�8˜X°gÔ>ó	
ˆð 	
�‰�Ôä˜JÓ'×3Ñ3°CÓ8¸Ñ;¸IÑFˆ	Ü Ÿf™f \°2°yÓAÐÜÐ$ l¼"¿-¹-ÖHrA   )5rB   rC   rD   rž   r   r   rl  rr  r€  rS   r9  r‚  Ú"inline_check_constraint_reflectionrÅ   r‹  r�  r”  Úindexes_check_column_orderr›  Úindexes_with_expressionsr¸  r¨  r»  r¾  rL  rÄ  r[  r   rq   r†  ÚNVARCHARÚnvarchar_typesÚNCHARrÊ  rÌ  Ú1foreign_key_constraint_option_reflection_ondeleteÚ1foreign_key_constraint_option_reflection_onupdateÚ1fk_constraint_option_reflection_ondelete_noactionÚ1fk_constraint_option_reflection_onupdate_restrictÚ1fk_constraint_option_reflection_ondelete_restrictrÚ  r   ro   r½  r   ÚtrueÚexpression_server_defaultsr   r   ÚnowÚliteral_columnÚserver_defaultsræ  rF   rA   r?   rg  rg  ˜
  s.  „ Ø $Ðà€W‡_�_˜T 5˜MÔ*ñó +ðð €W‡_�_Óñó ðò!ð. ×Ñ×1Ñ1ñ
ó 2ð
ð ×Ñ×8Ñ8Ø€W×ÑØ�Z Ð0Aôñ
óó 9ð
ð@ ×Ñ×1Ñ1Ø€W×ÑØ�{ DÐ3Dôñ
óó 2ð
ð4 ×Ñ×8Ñ8ñ
ó 9ð
ð> ×Ñ×0Ñ0ñKó 1ðKð& ×Ñ×.Ñ.ñX
ó /ðX
ðt ×Ñ×5Ñ5ñ(
ó 6ð(
òTIð ×Ñ×&Ñ&ñó 'ðð ×Ñ×&Ñ&Ø€W×ÑØ×ÑØ×ÑØ�‰Ø	×	Ñ	˜W×-Ñ-×<Ñ<Ð=Ø	�‰˜'×*Ñ*×9Ñ9Ð:Øôñ
+óó 'ð
+ð ×Ñ×&Ñ&ñ
ó 'ð
ð  €W×ÑàØØØ×Ñ×NÑNð		
ð ØØØ×Ñ×NÑNð		
ð ØØØ×Ñ×NÑNð		
ð ØØØ×Ñ×NÑNð		
ð ØØØ×Ñ×NÑNð		
ð ØØØ×Ñ×NÑNð		
ð .ôK&ñN3óO&ðN3ðl €W×ÑØ	�'�"—'‘'˜$“- Ð+Ø	�$˜	Ð"Ø	�'�"—'‘'“)˜YÐ'àØˆB�G‰G�GÓØØ×Ñ×7Ñ7ð		
ð ØˆB�G‰G�IÓØØ×Ñ×7Ñ7ð		
ð 
�8�4—8‘8“:Ð?Ð@àØˆB×Ñ˜cÓ"Ð%6 R×%6Ñ%6°sÓ%;Ñ;ØØ×Ñ×7Ñ7ð		
ð 3ô/ð2 ×Ñ×%Ñ%ñIó &ó3ñ4IrA   rg  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  rK   rL   rD  Út1idzt1.id)r   r%   r   r   r   rZ   s     r?   r\   z NormalizedNameTest.define_tables’  sU   € äÜ˜ DÔ)ØÜ�4œ¨dÔ3ô	
ô
 	Ü˜ DÔ)ØÜ�4œ¨dÔ3Ü�6œ: gÓ.Ó/õ		
rA   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 )NrD  Trû  rÚ   rã   c                 ó&   — | j                  «       dv S )N©rã   rD  rª  )rl   r3  s     r?   r³   zINormalizedNameTest.test_reflect_lowercase_forced_tables.<locals>.<lambda>ª  s   € ¨D¯J©J«L¸LÐ,H€ rA   )Úonly)r   r   r%   r   r=   r»   r¨   rü  rà   rK   r2  )r}   rá   Út2_refÚt1_refÚm3s        r?   Ú$test_reflect_lowercase_forced_tablesz7NormalizedNameTest.test_reflect_lowercase_forced_tables   s¸   € Ü‹ZˆÜÜ˜ DÔ)¨2¼V¿Y¹Yô
ˆð —‘˜4‘ˆØ�x‰x�}‰}×'Ñ'¨¯©¯©Ô4Ð4Ð4ä‹ZˆØ
�
‰
Ü�I‰IÑHð 	ô 	
ð �y‰y˜‰× Ñ ×%Ñ%×0Ñ0°·±¸4±×1BÑ1B×1EÑ1EÔFÐFÑFrA   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=   r8  r  r   Úupper)r}   r<  Ú
tablenamess      r?   r>  z'NormalizedNameTest.test_get_table_names®  s�   € ô œVŸY™YÓ'×7Ñ7Ó9ö
àØ�w‰w‹y˜LÑ(ò ð
ˆ
ð 
ô 	ˆJ�q‰M×ÑÓ! :¨a¡=×#6Ñ#6Ó#8Ô9ÜˆJ�q‰M×ÑÓ! :¨a¡=×#6Ñ#6Ó#8Õ9ùò
s   ªB$N)	rB   rC   rD   rÄ   rž   rE   r\   r  r>  rF   rA   r?   rø  rø  Ž  s*   „ Ø*€LØ $Ðàñ
ó ð
òGó:rA   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_tablerl   Ú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€   € Ü”v—y‘yÓ!ˆà×ÑÐ 8Ó9ˆØ*.Ö/ Q�A�f‘I˜q‘LÐ/ˆÐ/Ü�˜ Ñ0°Ñ;Ð;Ô<ÜˆH�XÑ˜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  rl   )rK   r  r  Úcomputedr  r  ú	normal+42Ú	persisted)r   r   r=   ré   r+   r   ry  r   rS   Ú"computed_columns_reflect_persistedr8   Ú"computed_columns_default_persisted)r}   r†   rÒ  r¨   rN   rÓ   ÚcompDatas          r?   Ú test_get_column_returns_computedz7ComputedReflectionTest.test_get_column_returns_computedÃ  s  € Ü”v—y‘yÓ!ˆà×ÑÐ 8Ó9ˆØ&*Ö+ ��&‘	˜1‘Ð+ˆÐ+Ø3ò 	1ˆCÜ�J d¨3¡iÐ/Õ0ð	1à˜Ñ'ˆÜ�
˜hÐ&Ô'Ü�	˜X jÑ1Ð1Ô2ÜˆD�N‰N˜8 JÑ/°	Ñ:Ó;¸[ÔIÜØ˜8 JÑ/Ð/Ü×Ñ×?Ñ?×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   ry  r   rS   r  r8   r   )r}   rN   Úcolumnr  r  r  s         r?   Úcheck_columnz#ComputedReflectionTest.check_columnØ  sp   € Ü�
˜d 6™lÐ*Ô+Ø˜‘< 
Ñ+ˆÜˆD�N‰N˜8 IÑ.Ó/°Ô9Ü×Ñ×>Ñ>×FÒFÜ�K 8Ð+Ô,Ü�˜Ñ% yÕ1ð GrA   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_tablerl   Úcomputed_no_flagr  Úcomputed_virtualznormal+2FÚcomputed_storedz	normal-42T)r   r   r=   ré   r  r   rS   r  r8   Úcomputed_columns_virtualÚcomputed_columns_stored©r}   r†   rÒ  r¨   rN   s        r?   Ú!test_get_column_returns_persistedz8ComputedReflectionTest.test_get_column_returns_persistedà  sÔ   € Ü”v—y‘yÓ!ˆà×ÑÐ 7Ó8ˆØ&*Ö+ ��&‘	˜1‘Ð+ˆÐ+à×ÑØØØÜ×Ñ×?Ñ?×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  rQ   rl   r  z	normal/42r   znormal/2Fr!  z	normal*42T)r   r   r=   ré   rU   r  r   rS   r  r8   r"  r#  r$  s        r?   Ú-test_get_column_returns_persisted_with_schemazDComputedReflectionTest.test_get_column_returns_persisted_with_schemaû  så   € ä”v—y‘yÓ!ˆà×ÑØ#¬F×,>Ñ,>ð  ó 
ˆð '+Ö+ ��&‘	˜1‘Ð+ˆÐ+à×ÑØØØÜ×Ñ×?Ñ?×GÑGô		
ô ×Ñ×4Ñ4×<Ò<Ø×ÑØØ"ØØô	ô ×Ñ×3Ñ3×;Ò;Ø×ÑØØ!ØØõ	ð <ùò ,s   ¿C6N)rB   rC   rD   r  r  r  r%  r   rS   rT   r'  rF   rA   r?   r	  r	  ¹  s6   „ ò7òò*2òð6 ×Ñ×Ññó ñrA   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)rô   rL  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  Úid1rD  rÖ   Tr   r   éþÿÿÿrt  é   ©Úalwaysrç   Ú	incrementÚminvalueÚmaxvalueÚcycleÚcacherj  )r/  rç   rQ   )
r   r   r   r   r   rS   rT   r8   r   rU   rZ   s     r?   r\   z$IdentityReflectionTest.define_tables   s³   € äØØÜ�8œWÓ%Ü�5œ'¤8£:Ó.ô		
ô 	ØØÜØÜÜØØØØØØØôóô	
ô" ×Ñ×#Ñ#×+Ò+ÜØØÜ�x¤Ó)Ü�uœg¤x°tÀ2Ô'FÓGÜ×)Ñ)öð ,rA   c                 óÚ  — t         j                  j                  j                  r£d}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.  r1  >   r4  r2  rç   r0  )	r   rS   Úidentity_columns_standardr8   rÑ  rÆ  r   rV  r+   )r}   r;  rQ  ÚapproxÚcommon_keysr²   s         r?   ÚcheckzIdentityReflectionTest.checkB  së   € Ü×Ñ×5Ñ5×=Ò=ðˆKô ˜%“[ò !�Ø˜KÒ'Ø—I‘I˜a•Lð!ñ Ü”C˜“J¤ C£Ô)Øò 1�AØ˜J’Ü  a¡¨C°©FÑ 2Õ3ØÐ3Ñ3Ü  a¡¨C°©FÑ 2Õ3ä˜E !™H c¨!¡f¨aÕ0ñ1ô �E˜3•ä��g‘  G¡Ô-Ü��kÑ" C¨Ñ$4Õ5rA   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ã   rD  rl   r  ræ   r+  rÂ  rÄ  FrÜ   éÿÿÿr.  T©r7  rÖ   r   r   r,  rt  r-  )	r   r   r=   ré   r)   r+   r   r9  r;   ©r}   r†   rÒ  r‚   s       r?   rë   z,IdentityReflectionTest.test_reflect_identity_  sF  € Ü”v—y‘yÓ!ˆà×Ñ Ó%¨×(8Ñ(8¸Ó(>Ñ>ˆØò &	ˆCØ�6‰{˜hÒ&Ü˜ sÐ*Õ+Ø�V‘ Ò%Ø" cÑ)Ü˜C Ñ0Ô1Ü�C˜	‘N DÔ)Ü˜
 cÐ)Ô*Ø—
‘
Ø˜
‘OÜØ$ØØ"#Ø!"Ø!+Ø#Øôð  ð õ ð �V‘ Ó%Ø" cÑ)Ü˜C Ñ0Ô1Ü�C˜	‘N DÔ)Ü˜
 cÐ)Ô*Ø—
‘
Ø˜
‘OÜØ#ØØ"#Ø!#Ø!#Ø"Øôð !ð õ ñ5&	rA   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ã   rQ   rl   r  ræ   r+  rÂ  rÄ  Trj  rÜ   r;  Fr.  r<  )
r   r   r=   ré   rU   r)   r+   r   r9  r;   r=  s       r?   Útest_reflect_identity_schemaz3IdentityReflectionTest.test_reflect_identity_schema‹  sÉ   € ä”v—y‘yÓ!ˆà×Ñ ¬V×-?Ñ-?ÐÓ@ˆØò 	ˆCØ�6‰{˜hÒ&Ü˜ sÐ*Õ+Ø�V‘ Ó%Ø" cÑ)Ü˜C Ñ0Ô1Ü�C˜	‘N DÔ)Ü˜
 cÐ)Ô*Ø—
‘
Ø˜
‘OÜØ#Ø Ø"#Ø!"Ø!+Ø#Øôð  ð õ ñ	rA   )rB   rC   rD   rF  rŸ   rž   rÄ   rE   r\   r9  rë   r   rS   rT   r?  rF   rA   r?   r)  r)    sU   „ Ø $Ð$€K�+à $ÐØ;€Làñó ðòB6ò:*ðX ×Ñ×Ññó ñrA   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Útb1rK   Úattrrl   rj  Úpk_tb1r  Tr[  Útb2rL   ÚpidÚpattrÚpname©rI  rG  rH  Úfk_tb1_name_id_attr)r   r   r   r[  rq   ro   r  rÞ   r¨   rl   rK   rD  )r>   r[   rC  s      r?   r\   z(CompositeKeyReflectionTest.define_tablesª  sØ   € äØØÜ�4œÓ!Ü�6œ7Ó#Ü�6œ9×,Ñ,¨RÓ0Ó1Ü×#Ñ# F¨D°&¸xÔHØØô	
ˆô 	ØØÜ�4œ¨dÔ3Ü�5œ'Ó"Ü�7œGÓ$Ü�7œI×-Ñ-¨bÓ1Ó2Ü×#Ñ#Ú)Ø—‘—‘˜SŸU™UŸX™X s§u¡u§z¡zÐ2Ø*ôð
 Øö	
rA   c                 ó²   — t        |«      }|j                  | j                  j                  j                  «      }t        |j                  d«      g d¢«       y )NrÐ  ©rl   rK   rD  )r   r&  r»   rC  rl   r   rÑ  )r}   r“   r†   rM   s       r?   Útest_pk_column_orderz/CompositeKeyReflectionTest.test_pk_column_orderÆ  sA   € ô �zÓ"ˆØ×,Ñ,¨T¯[©[¯_©_×-AÑ-AÓBˆÜˆK�O‰OÐ1Ó2Ò4JÕKrA   c                 ó   — t        |«      }|j                  | j                  j                  j                  «      }t        t        |«      d«       |d   }t        |j                  d«      g d¢«       t        |j                  d«      g d¢«       y )NrÜ   r   rà  rM  rÐ  rJ  )r   r)  r»   rF  rl   r   rV  rÑ  )r}   r“   r†   Úforeign_keysrƒ  s        r?   Útest_fk_column_orderz/CompositeKeyReflectionTest.test_fk_column_orderÍ  sn   € ô �zÓ"ˆØ×,Ñ,¨T¯[©[¯_©_×-AÑ-AÓBˆÜŒC�Ó˜qÔ!Ø˜Q‘ˆÜˆE�I‰IÐ(Ó)Ò+AÔBÜˆE�I‰IÐ+Ó,Ò.GÕHrA   N)rB   rC   rD   rž   rE   r\   r   rS   rJ  rN  ró   rQ  rF   rA   r?   rA  rA  §  s^   „ Ø $Ðàñ
ó ð
ð6 ×Ñ×7Ñ7ñLó 8ðLð ×Ñ×7Ñ7ñIó 8ñIrA   rA  )rG  rg  rQ  r  rÇ   rH   r¢   rø  r	  r)  rA  r÷   )Irp  rµ  rî  r9   ro   rL  r   r   r   r   r   r	   r
   r   r   Ú	provisionr   r   rR   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r[  r/  r   r   r    Úexcr!   r"   r#   r$   Úsql.elementsr%   Ú
sql.schemar&   r'   r(   r)   r*   r+   r,   r[   rN  Ú
TablesTestr/   rH   r¢   ÚTestBaserÇ   r÷   r  rE  rG  rQ  rg  rø  ÚComputedReflectionFixtureTestr	  r)  rA  Ú__all__rF   rA   r?   ú<module>rZ     sª  ðó Û Û 	ã Ý Ý Ý Ý Ý Ý $Ý Ý Ý Ý +Ý /Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý "Ý Ý  Ý !Ý #Ý *Ý Ý Ý 'Ý &Ý &Ý %Ý Ý Ý Ý ð �€ˆ%ô˜h×1Ñ1ô ô U:Ð*ô U:ôpJ
�8×&Ñ&ô J
ôZdG˜8×,Ñ,ô dGôN#G˜H×-Ñ-ô #GôLT0˜X×0Ñ0ô T0òn1ô<n0˜nÐ.Eô n0ôb?2,˜×*Ñ*ô 2,ôjsI ?°H×4EÑ4Eô sIôl(:˜×,Ñ,ô (:ôV^˜X×CÑCô ^ôBJ˜X×0Ñ0ô JôZ.I ×!4Ñ!4ô .Iðb�rA   