Ë
    r™ãjb÷ ã                   ó@  — 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                  «      ZG G dH„ dIejv                  «      ZHdJZIy)Ké    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     ús/var/www/html/python-recuperauto-other/env/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                   ó„  — e Zd ZdZdZed„ «       Zed„ «       Zed„ «       Zed„ «       Z	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*                  d„ «       Zej                  j*                  ej                  j.                  ej                  j0                  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_tablesO   s¹   € äØØÜ�4œ¨dÔ3Ü�6œ6 "›:Ó&ô		
ô ×Ñ×#Ñ#×+Ò+ÜØØÜ�tœW°$Ô7Ü�vœv b›zÓ*Ü×)Ñ)õô ×Ñ×+Ò+Ø×Ñ˜XÔ&Ü×Ñ×*Ñ*×2Ò2Ø×"Ñ" 8Õ,ð 3rA   c                 ó  — |j                   d   }t        j                  t        j                  |j                  j
                  |j                  j                  «      d|¬«       t        j                  j                  j                  r„|j                   t        j                  › d�   }t        j                  t        j                  |j                  j
                  |j                  j                  «      d|t        j                  ¬«       y y )NrJ   Úvv)r[   z.test_table_s)r[   rR   )ÚtablesÚsaÚ
CreateViewÚselectÚcrK   rN   r   rS   rT   r8   r   rU   )r>   r[   rJ   rP   s       r?   rW   zHasTableTest.define_viewse   s¾   € ð —_‘_ \Ñ2ˆ
Ü
�‰Ü�I‰I�j—l‘l—o‘o z§|¡|×'8Ñ'8Ó9ØØõ	
ô ×Ñ×#Ñ#×+Ò+Ø#Ÿ?™?Ü×%Ñ%Ð& mÐ4ñˆLô �M‰MÜ—	‘	˜,Ÿ.™.×+Ñ+¨\¯^©^×-@Ñ-@ÓAØØ!Ü×)Ñ)ö	ð	 ,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_namez   ó%   € ä"Ü”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   Úafter_createú=create temporary view user_tmp_v as select * from user_tmp_%sÚbefore_dropúdrop view user_tmp_v)r   r   r=   rj   r   r   r`   ÚINTÚVARCHARr   rS   rV   r8   Útemporary_viewsr   Úlistenr#   rh   ©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         j                  j                  «       5 }t        t         j                  j                  j                  |g d¢«      «      }d d d «       ddddœ}t        |«       y # 1 sw Y   ŒxY w)N©rJ   rP   r{   TF))NrJ   )NrP   )Nr{   )r   r=   r|   r;   r}   Úhas_multi_tabler   ©r€   r�   ÚresÚexps       r?   Útest_has_multi_tablez!HasTableTest.test_has_multi_tableŸ   sl   € Ü�Y‰Y�_‰_Óð 	 $ÜÜ—	‘	×!Ñ!×1Ñ1ØÒMóóˆC÷	ð #'Ø$)Ø).ñ
ˆô
 	ˆC��÷	ð 	ús   Ÿ6A0Á0A9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   r{   )r   r=   r|   r)   r}   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                  |g d¢t         j                  ¬«      «      }d d d «       t         j                  dfdt         j                  dfdt         j                  dfdi}t        |«       y # 1 sw Y   ŒNxY w)Nr„   rQ   rJ   FrP   Tr{   )r   r=   r|   r;   r}   r…   rU   r   r†   s       r?   Útest_has_multi_table_schemaz(HasTableTest.test_has_multi_table_schemaÍ   s¤   € ô �Y‰Y�_‰_Óð 	 $ÜÜ—	‘	×!Ñ!×1Ñ1ØÚGÜ!×-Ñ-ð 2ó óˆC÷	ô ×Ñ Ð.°Ü×Ñ Ð0°$Ü×ÑÐ!4Ð5°uð
ˆô
 	ˆC��÷	ð 	ús   ŸAB2Â2B;c           
      óX  — t         j                  j                  «       5 }t        t         j                  j                  j                  |dd¬«      «       t        t        t         j                  j                  j                  |dgd¬«      «      ddi«       d d d «       y # 1 sw Y   y xY w)NrJ   Únonexistent_schemarQ   )r˜   rJ   F)	r   r=   r|   r)   r}   r~   r   r;   r…   r   s     r?   Ú!test_has_table_nonexistent_schemaz.HasTableTest.test_has_table_nonexistent_schemaß   s—   € ä�Y‰Y�_‰_Óð 	 $ÜÜ—	‘	×!Ñ!×+Ñ+Ø˜,Ð/Cð ,ó ôô
 ÜÜ—I‘I×%Ñ%×5Ñ5Ø˜|˜nÐ5Ið 6ó óð
 6°uÐ=ô÷	÷ 	ñ 	ús   ŸA8B Â B)c                 óN   — t        |«      }t        |j                  d«      «       y ©Nr^   ©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   rj   r+   r~   )r€   rž   r�   rj   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   rj   rY   r‚   r‰   r’   r   rS   rT   r”   r–   r™   ÚviewsrŸ   rX   r¢   rV   rt   r¦   r¨   rF   rA   r?   rH   rH   J   s‰  „ Ø $Ðà€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$   rc   rN   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   r}   Ú	inspectorÚkind©Úargnamesc                 óB   ‡— |dk(  rˆfd„S t        ‰«      j                  S )Nr}   c                  ó^   •— t        j                  j                  j                  ‰g| ¢­i |¤ŽS r¡   )r   r=   r}   Ú	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²   r{   Únonexistent_idxÚmy_idx_2Útest_table_2Úmy_idx_3Úfoor´   T)r¾   r$   r_   rJ   rc   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±   r{   Únonexistent_idx_s)r¾   r   rU   )r€   rµ   rž   rÆ   s       r?   Útest_has_index_schemaz"HasIndexTest.test_has_index_schemaH  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_namesZ  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_namesc  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_columnr`   ÚForeignKeyConstraintrc   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_refl  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_identity›  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Ð   V  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_rg   ©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   rm   rO   rN   Ú
related_idzpk quote ' one©rm   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Ý   zCREATE VIEW úview %sú AS SELECT * FROM rn   rp   zDROP VIEW %s)r   r   r   r   r`   ÚPrimaryKeyConstraintr$   ÚUniqueConstraintrç   ÚCheckConstraintr   rS   Úsymbol_names_w_double_quoter8   Úview_column_reflectionr   r=   r}   Úidentifier_preparerÚquoter   ru   r#   )r>   r[   Únamesrm   Úquerys        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€   rm   r�   r‡   s       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€   rm   r�   s      r?   Útest_get_view_definitionz/QuotedNameArgumentTest.test_get_view_definitionK  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_columnsQ  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_constraintV  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_keys[  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_indexesa  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_constraintsg  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_commentm  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_constraintss  s&   € ô ”v—y‘yÓ!ˆØ×)Ñ)¨$Ô/Ð/Ñ/rA   N)rB   rC   rD   Úrun_create_tablesr©   rE   r\   r!  r'  r   rS   r  r+  r-  r0  rü   r3  r®   r6  Úunique_constraint_reflectionr9  rþ   r<  Úcheck_constraint_reflectionr?  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>~  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_combinationrN  z  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_tables�  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©rm   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   r`   rr   ÚCHARÚFloatr   r  r   r  rc   rX  r  Úcross_schema_fk_reflectionr   rU   r=   r}   Údefault_schema_namer®   r$   rY  r]  Úindexes_with_ascdescÚreflect_indexes_with_ascdescrŠ  Údescr  rW   r  rY   )r>   r[   rR   Úschema_prefixÚparent_id_argsrW  r‰  r‹  s           r?   rR  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 re   rg   ri   s    r?   rj   z'ComponentReflectionTest.temp_table_nameQ  rk   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   rm   rO   rÄ   Úuser_tmp_uq_r  Úuser_tmp_ixrn   ro   rp   rq   )r   r   r=   rj   r   r   r`   rr   rs   r  rh   r$   r   rS   rV   r8   rt   r   ru   r#   rv   s        r?   rY   z*ComponentReflectionTest.define_temp_tablesW  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 )Nre  ©rW  rp  re  rT  Ú_vzMATERIALIZED rU  zCREATE zVIEW r  rn   Ú	mat_indexÚoraclezCREATE INDEX z ON z(data)rp   zDROP )	r   rS   Úmaterialized_viewsr8   Úsetr   ru   r#   Úagainst)r>   r[   rR   Úmaterializedrx   ÚfullnameÚ	view_nameÚprefixr  Ú
index_namerÇ   s              r?   rW   z$ComponentReflectionTest.define_viewsy  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   rI  ÚupdaterJ  rK  )r€   rµ   r_   r«   r¤  r‡   s         r?   Ú_resolve_kindz%ComponentReflectionTest._resolve_kind”  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_viewsž  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†  r‚  r‰  r‹  r¥   rå   )r    rF  rG  r   r   rU   rj   rS   r‘  r8   Úaddrª  r®   r  Útemp_table_namesrt   Úitems)
r€   rR   r4   rM  Ú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¥   rW  re  rp  rw  r€  r‚  r„  r†  r‰  r‹  ©r,   rH  r®  rj   r«  r¾  )	r€   rR   r4   rµ   rM  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¥   rW  re  rp  rw  r  r€  r�  r‚  r„  r†  r‰  r‹  )r®  rj   r«  r¾  )
r€   rR   r4   rµ   rM  Ú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)rm   ÚautoincrementÚtypeÚdefaultrø   r\  ÚomitrË  )r,   rH  Úpop)rm   ÚautorÍ  rø   r\  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Í  r\  ©r,   rH  )rm   rw   rŒ   s     €r?   Úpkz/ComponentReflectionTest.exp_columns.<locals>.pk*  s&   ø€ Ø¬4¯8©8ÀÑMÈ"ÐMˆBÙ�t‘?˜r‘?Ð"rA   rÀ  rf  rÎ  )rÐ  r\  rg  rj  rN   rÁ  rq  rr  rÂ  rX  rY  r[  r]  r^  r¥   rK   rm   rÄ   rW  re  rp  rw  rx  r÷   ry  rz  r{  r|  r~  r€  r‚  rƒ  r„  r…  r†  r‰  rŠ  r‹  rÃ  )r€   rR   r4   rµ   rM  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>   rm   rÌ  rÍ  r\  rF   r  s    r?   Ú_required_column_keysz-ComponentReflectionTest._required_column_keyst  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 )Nrb  c                 ó    — t        |«      | |dœS )N)Úconstrained_columnsrm   rø   )Úlist)rm   rø   Úcolss      r?   rÓ  z+ComponentReflectionTest.exp_pks.<locals>.pk  s   € ä'+¨D£zØØ"ñð rA   r  rÀ  rf  rÁ  rÂ  r¥   rW  rX  re  rp  rg  ru  rv  rw  rK   r€  r‚  r„  r†  r‰  r‹  rm   )r,   rH  r   rS   Úmaterialized_views_reflect_pkr8   r®  rj   Úreflects_pk_namesrº  r«  r¾  )r€   rR   r4   rµ   rM  rÓ  rÇ  r¤  r«   r_   Úvalr‡   s               r?   Úexp_pkszComponentReflectionTest.exp_pksx  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 )Nrm   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=   r}   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_columnsrm   r5   Úreferred_schemaÚreferred_tablerø   rÒ  )rÛ  Úref_colÚ	ref_tableÚ
ref_schemarm   rø   r³   s         €r?   Úfkz+ComponentReflectionTest.exp_fks.<locals>.fkº  s1   ø€ ð (,Ø$+ØÜŸ8™8à",Ð"8‘J¹b»dà"+Ø"ñ
ð 
rA   rÀ  rÁ  rÂ  r¥   rW  r^  rX  rV  r  re  rj  rg  rp  rh  ri  rb  rq  rw  r€  r‚  rƒ  rK   r†  )rî  r„  r…  r‰  r‹  rm   )r,   rH  r®  r   rU   rj   r   rS   rŽ  r8   r­  Únamed_constraintsrº  r«  r¾  )r€   rR   r4   rµ   rM  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>   rm   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)rl  Úcolumn_sortingÚ
duplicatesrï  c                 óž  — t         j                  j                  }t         j                  j                  }t         j                  j                  }|r|j
                  r|r|j
                  sy|t        |«      | t        j                  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   )rl  rÕ   rm   Údialect_optionsrö  rÕ   ÚexpressionsÚduplicates_constraint)	r   rS   Úforeign_keys_reflect_as_indexÚ#unique_constraints_reflect_as_indexÚ*reflect_indexes_with_ascdesc_as_expressionr8   rÚ  r,   rH  )rm   rl  rö  r÷  rï  rÛ  Úfk_reqÚdup_reqÚsorting_expressionr‡   Úorigrc   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  rW  r^  rV  T)rm   rï  rX  r]  rY  rˆ  r‡  )rm   rl  re  )rm   rl  r÷  rj  rg  rf  rn  rp  rr  rq  rw  r€  r‚  rƒ  r„  r…  r†  r‰  rŠ  rŒ  )r•  )rm   rö  r‹  r�  rÄ   r›  rm   rš  )rm   r÷  rl  )r®  Úextendr,   rH  rj   r   rh   r   rS   r“  r8   r”  r­  r«  r¾  )
r€   rR   r4   rµ   rM  rÇ   r¤  r«   r_   r‡   s
             r?   Úexp_indexesz#ComponentReflectionTest.exp_indexes  sú  € ð ØØØô"	ðH   Ð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>   rm   rl  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Õ   rm   rø   r  )r   rS   Ú*unique_index_reflect_as_unique_constraintsr8   rÚ  )rm   r  r	  rø   rÛ  Úreqr‡   s          r?   Úucz+ComponentReflectionTest.exp_ucs.<locals>.ucŽ  sL   € ô ×"Ñ"×MÑMˆCÙ §¢Øä $ T£
ØØ"ñˆCñ
  Ø*:�Ð&Ñ'Ø�5ˆLrA   rÀ  rÁ  rÂ  r¥   rW  rY  r]  r‡  T)rm   r  r	  re  rN   )rm   r  rg  rf  rn  ro  )rm   r  rø   rp  rw  r€  r‚  r„  r†  r‰  r‹  rm   rš  r  )r®  r,   rH  rj   r   rh   r«  r¾  )r€   rR   r4   rµ   rM  Úall_r  r¤  r«   r_   r‡   s              r?   Úexp_ucszComponentReflectionTest.exp_ucs†  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 )Nrm   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ú(rU  ú)ú`)Ú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)Úsqltextrm   rø   rF   )rÆ  rm   rø   r³   s      €r?   Úccz+ComponentReflectionTest.exp_ccs.<locals>.ccà  s   ø€ Ù! $›x°À'ÑJÐJrA   rÀ  rÁ  rÂ  r¥   rW  rc  r_  r`  ra  r÷   re  z$address_id > 0 and address_id < 1000rm  r  rp  rw  r€  r‚  r„  r†  r‰  r‹  r¡   )Ústrr®  r,   rH  rj   r«  r¾  )r€   rR   r4   rµ   rM  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 )Nrm   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_cache5  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   Úhasattrr}   )r€   Úengines     r?   Útest_dialect_initializez/ComponentReflectionTest.test_dialect_initializeF  s,   € ä×'Ñ'Ó)ˆÜ�ŒÜ�v—~‘~Ð'<Ô=Ð=Ñ=rA   c                 ón   — t        |«      }t        |j                  |j                  j                  «       y r¡   )r   r   r’  r}   r�   s      r?   Útest_get_default_schema_namez4ComponentReflectionTest.test_get_default_schema_nameL  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>   r‚  rw  r„  r€  r†  r‹  r‰  r   r;  r�  )re  rp  rW  )r   rU   r   Úget_sorted_table_and_fkc_namesÚget_table_namesr   Úsorted)r€   rž   r<  r=  rR   Ú_ignore_tablesr�   Úrecr_   ÚtrÙ   Úanswers               r?   Útest_get_table_namesz,ComponentReflectionTest.test_get_table_namesQ  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   rA  Úget_materialized_view_names)r€   rž   r=  r�   rR   rÙ   rE  s          r?   Útest_get_view_namesz+ComponentReflectionTest.test_get_view_names|  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 re   )r   Úget_temp_table_namesr   rA  r   rh   ©r€   rž   r�   r¸  s       r?   Útest_get_temp_table_namesz1ComponentReflectionTest.test_get_temp_table_names�  s9   € ä�zÓ"ˆØ×4Ñ4Ó6ÐÜŒFÐ#Ó$¨´6·<±<°.Ð'AÐ&BÕCrA   c                 óf   — t        |«      }|j                  «       }t        t        |«      dg«       y r¤   )r   Úget_temp_view_namesr   rA  rM  s       r?   Útest_get_temp_view_namesz0ComponentReflectionTest.test_get_temp_view_names“  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_commentsš  s   € à×Ñ 
Õ+rA   c                 óX   — | j                  |t        j                  j                  «       y r¡   )rS  r   r   rU   rT  s     r?   Útest_get_comments_with_schemaz5ComponentReflectionTest.test_get_comments_with_schemaž  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   rw  rW  )r   rÈ  r   r;  r_   r€  rm   )r€   rž   rR   r�   rˆ   Úno_csts         r?   rS  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,        j<                  t,        j0                  t,        j.                  t,        j>                  t,        j@                  t,        jB                  g«      «      dkD  |j                  ›d	|j                  ›d
||   d   ›d	|›d�«       |jD                  r�Œ·||   d   €�ŒÁJ ‚ �Œ y )N©rÂ  rÁ  rÀ  rW  rp  rQ   r   rm   rÌ  r   r  z), r  rÍ  )#r   rU   r_   rW  rp  r   Úziprò   r+   ÚlenÚ	enumerateÚcolumnsr   rm   Ú	__class__rÌ  r%  r`   r   Ú
TypeEnginer   r£  Ú	sql_typesÚDater   r¢  Ú__mro__Úintersectionr   ÚNumericr�  ÚTimer   Ú_BinaryrM   )r€   rž   Ú	use_viewsr=  rR   rW  Ú	addressesrÙ   r�   rx   Ú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ó 0	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òS)6ñ0	6rA   c                 ó–   — | j                  «       }| j                  |   }t        |t        «       |¬«      }| j	                  ||d¬«       y )Nrã   F)Ústrict_constraints)rj   r_   r   r   Úassert_tables_equal)r€   rž   rx   ry   Ú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   rm   )
rj   r_   r   rò   r+   r]  r^  r_  r   rm   )r€   rž   rx   ry   r�   rÛ  rm  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¥   rm   )rK   rm   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Ù  rm   ru  )r   r   rU   r_   rW  rp  r   rß  r/  rm   Ú_check_listrá  r   rS   rÝ  Úfail_ifr€  )r€   rž   r=  rR   rW  rj  r�   rˆ   Ú
users_consÚ	addr_consÚexp_colsrY  s               r?   r0  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  rm   rÙ  N)
r   r   r   r   r`   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_nameH  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   rm   rV  rê  rë  ré  rX  rÙ  r^  rq  )r   rU   r_   rW  rp  r   r   rS   rŽ  r8   r2  rm   rð  r{  r   Úimplicitly_named_constraintsr+   r€  )r€   rž   r=  rR   rW  rj  r�   Úexpected_schemaÚusers_fkeysÚfkey1Ú
addr_fkeysrY  s               r?   r3  z-ComponentReflectionTest.test_get_foreign_keysg  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_refrX  TrL   rÝ   Úuser_ordersÚorder_idzusers_ref.user_idr  rå   r   rm   Nrë  ré  rÙ  )r   r   r   r`   rç   rè   r   r2  r   r]  r   rS   rð  r{  )r€   rž   r[   r�  r�   ÚfkeysÚfkeys          r?   Ú!test_get_foreign_keys_quoted_namez9ComponentReflectionTest.test_get_foreign_keys_quoted_name‘  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Ù  rƒ  rQ   r…  )r_   r}   r’  r   r   rU   r   r2  rm   r   r]  r+   )
r€   rž   r‚  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 )NrW  rQ   )
r   rU   r   r5  r  rz  r  r_   r€  rm   )r€   rž   r=  rR   r�   Úindexesrˆ   rY  s           r?   r6  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   r5  r  rz  r  r   r   r   r]  r�  r   rÚ  rk  rm   )r€   rž   ÚtnameÚixnamer�   r�  Úexpected_indexesrD  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   rm   z	Expected ú in rå   r   rÕ   N)r   r   r   r   r$   rc   rN   rè   r   r5  r   r]  )
r€   rž   r[   r¦  rD  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   rj   r8  r  rz  r  )r€   rž   r�   rm   Ú	reflectedrˆ   s         r?   Ú&test_get_temp_table_unique_constraintsz>ComponentReflectionTest.test_get_temp_table_unique_constraints6  s]   € ô �zÓ"ˆØ×#Ñ#Ó%ˆØ×/Ñ/°Ó5ˆ	Ø�l‰l ˆlÓ% t¨T lÑ3ˆØ×Ñ˜ C¨×)BÑ)BÕCrA   c                 óî   — t        |«      }| j                  «       }|j                  |«      }|D ]  }|j                  dd «       Œ ddgddœg}t	        |D �cg c]  }|d   dk(  sŒ|‘Œ c}|«       y c c}w )Nrù  FrÄ   r›  )rl  rÕ   rm   rm   )r   rj   r5  rÏ  r   )r€   rž   r�   rx   r�  ÚindÚexpectedrÇ   s           r?   Útest_get_temp_table_indexesz3ComponentReflectionTest.test_get_temp_table_indexes?  s†   € ä�zÓ"ˆØ×)Ñ)Ó+ˆ
Ø×"Ñ" :Ó.ˆØò 	-ˆCØ�G‰GÐ% tÕ,ð	-ð ¨u¨g¸}ÑMð
ˆô 	Ø#ÖD�S s¨6¡{°mÓ'CŠSÒDØõ	
ùÚDs   ÁA2Á%A2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»   )rm   rÕ   Úunique_a_b_c)r»   Úbrc   Úunique_c_a_b)rc   r»   r¶  Úunique_asc_keyÚascrÜ   zi.have.dotsr¶  zi have spacesrc   rm   ©rÜ   Útesttblrs  rk  rQ   rÕ   r  rø   rù  )rä   rR   )r   rU   rA  ÚoperatorÚ
itemgetterr   r   r`   r   r   Úappend_constraintr  r�   r   r8  r¢  r   r]  r\  rÏ  r·  r   r�  rm   Úconstraintsr%  Ú
differencere  r_   r€  )r€   r[   rž   r=  rR   Úuniquesrk  r  r�   r­  Únames_that_duplicate_indexr  ÚreflÚdupeÚreflected_metadatarÇ   Ú	idx_namesÚuqÚuq_namesrY  s                       r?   r9  z3ComponentReflectionTest.test_get_unique_constraintsN  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   rm   rÕ   N)r   r   r   r   r`   r  rè   r   r8  r   r]  )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 )Nr[  rQ   )r   rU   r   r)  r+   Úbool)r€   rž   r=  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_existrW  )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.

        ))rW  rX  )rp  rg  )re  rf  rm   rË  TN)r   rò   Úget)r€   rž   r�   rŸ  ÚcnamerÛ  rc   Ú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)NrW  rQ   r€  )r   r   r=   rU   r   rS   r#  r8   r$  r+   r%  r;   r   r&  )r€   r=  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_optionsr@  r$  r   r   r&  )r€   r=  r�   rR   r‡   rk  rˆ   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 )Nrp  )r4   rµ   )rw  rW  údoes-not-existrÁ  râ  rÀ  rR   rM  )rR   r4   rµ   rM  r4   rµ   )r   r   rI  r  rJ  rK  rØ  r    rF  ÚcopyrÏ  Úappend)rR   r4   rµ   rE  Úsingle_reflect_fnÚ
exp_methodr�   rw   rM  rˆ   Ú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µ   rE  r�   rç  rˆ   rw   Úresults              r?   Ú#test_multi_get_table_options_tablesz;ComponentReflectionTest.test_multi_get_table_options_tablesK	  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   r;  rÈ  rŽ   r   Úget_multi_table_comment)
r€   rê  rR   r4   rµ   rE  r�   rç  rˆ   rw   s
             r?   Útest_get_multi_table_commentz4ComponentReflectionTest.test_get_multi_table_comment]	  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['\" ]rU  )ÚreÚsubr  )rÆ  s    r?   Ú_cleanz:ComponentReflectionTest._check_expressions.<locals>._cleano	  s   € Ü—6‘6˜) R¨Ó.×4Ñ4Ó6Ð6rA   )r  r%  r;   r   r¹  )r€   rî  rˆ   Úerr_msgr÷  Úer½  s          r?   Ú_check_expressionsz*ComponentReflectionTest._check_expressionsn	  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   r]  r\  r¢  rú  )	r€   rî  rˆ   Úreq_keysÚmsgÚrrù  r¼   rø  s	            r?   rz  z#ComponentReflectionTest._check_listw	  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¢  Úkeysrz  )r€   rî  rˆ   rü  Ú
make_listsr¼   rþ  rù  s           r?   Ú_check_table_dictz)ComponentReflectionTest._check_table_dict…	  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_columns�	  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)rm   N)rØ  r,   rH  )Ú.0r½  s     r?   ú	<genexpr>z7ComponentReflectionTest._adjust_sort.<locals>.<genexpr>·	  s+   è ø€ ò ,Ø>?˜Ÿ™˜f›¨$´·±Ð)9Ô9ñ,ùs   ‚-/rº  )r   rS   r‡  r8   rº  r]  Ú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   r2  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   r5  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   r8  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   r>  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/  r2  r5  r8  r>  r;  Úmethodc                 óŠ   — t        |«      }t        ||«      }t        t        «      5   |d«       d d d «       y # 1 sw Y   y xY w)NÚtable_does_not_exists)r   Úgetattrr   r!   )r€   r%  rž   r�   rÆ   s        r?   Útest_not_existing_tablez/ComponentReflectionTest.test_not_existing_table	
  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ž   r2  r1  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_fksrT  )r   r   rU   Úreflectr   r@  rH  rI  r&  r   rA  r_   )	r€   rž   r=  r«   ÚmrR   r�   r_   rD  s	            r?   Útest_metadataz%ComponentReflectionTest.test_metadata4
  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Æ  rm   rø   )r>  r?  ©r   r   r   rè   r   r;  r   rò   )	r€   rž   r[   r�   ÚtcrÛ  rc   Úvaluerˆ   s	            r?   Útest_comments_unicodez-ComponentReflectionTest.test_comments_unicodeI
  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 )
Nr=  r?  u&   ðŸ��ðŸ§™ðŸ��ðŸ§™â€�â™‚ï¸�ðŸ§™â€�â™€ï¸�r÷   u&   ðŸŽ©ðŸ�°ðŸ�‘ðŸ¤·â€�â™€ï¸�ðŸ¤·â€�â™‚ï¸�rÆ  r   rm   rø   r@  )r€   rž   r[   r�   rA  rc   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 )NrD  Úcollated)Ú	collationÚnot_collatedrã   rÌ  )r   rS   Úget_order_by_collationr   r   r   r`   r   rè   r   r   rc   rG  rÌ  rH  r*   rI  r   rò   )	r€   rž   r[   rH  rê   Út2r�   rG  rI  s	            r?   Ú test_column_collation_reflectionz8ComponentReflectionTest.test_column_collation_reflectiono
  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\   rR  rj   rY   rW   r«  r®  r¾  r    rH  r   rÄ  rÈ  rÔ  ÚpropertyrÖ  rß  rá  rò  rô  r  r  r  r  r  r!  r   rS   Úschema_reflectionr$  r(  r.  r0  Úschema_create_deleter4  r8  r:  rÎ   rü   rT   rF  rJ  r¸  rN  rV   rt   rQ  rþ   rU  rW  rS  r-  r  rt  rv  r  rx  Ú!primary_key_constraint_reflectionr0  rÝ  r…  r3  r–  r‘  r›  r®   r6  r“  r”  r¢  r«  rA  r®  Útemp_table_reflect_indexesr²  r9  rÐ  r+  rÖ  Útable_reflectionrÛ  r'  rß  r	  rê  r#  rN  rï  rò  rú  rz  r  r  r  r  r  r  r  rB  r$  r)  r6  r«   r;  rC  Úcomment_reflection_full_unicoderE  Úcolumn_collation_reflectionÚorder_by_collationrL  rF   rA   r?   rP  rP  ˜  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Ø�^‰^Øórðh ñ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ðD ×Ñ×+Ñ+ñ	
ó ,ð	
ð ×Ñ×+Ñ+ñ+ó ,ð+ð ×Ñ×+Ñ+Ø×Ñ×,Ñ,Ø×Ñ×%Ñ%ñ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   rP  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_columns‹
  s   € äˆg�xÔ Ø×Ñ˜JÕ'rA   c                 ó¾   — t        d|«       t        j                  |dt        d«      «       t        j                  |dt        d«      «       |j	                  |«       y )NrÇ  rn   z*CREATE VIEW empty_v AS SELECT * FROM emptyrp   zDROP VIEW IF EXISTS empty_v)r   r   ru   r#   rè   r\  s      r?   Úview_no_columnsz"TableNoColumnsTest.view_no_columns�
  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Ú  rc   )r€   rž   r]  rK  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Ç  r[  )r   r   rò   r  )r€   rž   r]  r�   Úmultis        r?   Ú!test_get_columns_table_no_columnsz4TableNoColumnsTest.test_get_columns_table_no_columns¤
  s>   € Ü�zÓ"ˆÜˆD×Ñ˜WÓ% rÔ*Ø×&Ñ&Ó(ˆÜˆE�O RÐ(Õ)rA   c                 óˆ   — t        «       }|j                  |«       t        |j                  «      j	                  dg«      sJ ‚y r[  )r   r9  r¢  r_   re  )r€   rž   r]  r:  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ã   ra  )r€   rž   r_  rK  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 )Nri  )rµ   )Nri  )r   r   rò   r  r   rJ  )r€   rž   r_  r�   rd  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	  r]  r_  rb  re  rg  rS   r«   rj  rl  rF   rA   r?   rX  rX  ‡
  sŠ   „ Ø1€LØ $Ðà‡_�_ñ(ó ð(ð ‡_�_ñ(ó ð(òò*ò5ð
 ×Ñ×Ññó ðð ×Ñ×Ññ,ó ñ,rA   rX  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d„ Zej                  j                   ej                  ddddddd¬«      d„ «       «       Zej                  j&                  d„ «       Zej                  j*                  d„ «       Zej                  j.                  d„ «       Zd„ Zej                  j4                  d„ «       Zej                  j4                   ej                  ej:                  ej<                  ej>                  ej@                  ej                  jB                  fejD                  ej                  jB                  fd ¬«      d!„ «       «       Z#ej                  j4                  d"„ «       Z$ ej                  d
d#d
ej                  jJ                  fd
d
d$ej                  jL                  fi d
d%ej                  jL                  fi d%d
ej                  jN                  fd
d
d&ej                  jP                  fd
d&d
ej                  jR                  fd'¬«      d(„ «       Z* ej                  e+ e,jZ                  d)«      d*fe+d)d*fe. e,j^                  «       d+fe+ e,jZ                  d,«      d-ej                  j`                  fe+ e,jZ                  d.«      d/ej                  j`                  fe1 e2jf                  «       d0fe+ e,jh                  d1«       e,jh                  d2«      z   d-ej                  j`                  fd3¬«      ej                  jj                  d4„ «       «       Z6y
)5Ú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[   rs  s    €€€r?   Úgoz:ComponentReflectionTestExtra.inspect_for_table.<locals>.goÈ
  s%   øè ø€ à$¤g¨jÓ&9Ð9Ò9à×Ñ 
Õ+ùs   ƒ"%)Ú
contextlibÚcontextmanager)r€   r[   rž   rs  rv  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   rm   r  ©rm   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   )rA  r   )r€   r­  r±  r€  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)Nr€  rN   rs  rQ   )r   r   r`   r   r‡  r>  )r€   r[   ry  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 < 5r�  )
r   r   r   r`   r  r   r>  r‡  r,   rH  ©r€   r[   ry  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 < 5r�  )	r   r   r   r`   r  r>  r‡  r,   rH  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  rc   rN   rO   Úsome_uqzc > 1 AND c < 5Úcc1Ú	some_c_uqrQ   zc > 1 and c < 5r�  zb > 1 and b < 5r�  )r   r   r   r`   r  r   r  r>  r‡  r,   rH  )r€   r[   ry  rR   r´   r­  s         r?   Útest_check_constraint_mixedz8ComponentReflectionTestExtra.test_check_constraint_mixed8  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           	      ót   — |D ]  }|d   |k(  sŒ|d   c S  J d|›d|D �cg c]  }|d   ‘Œ	 c}› �«       ‚c c}w )z2return the sqltext for the named CHECK constraint.rm   r  zNo CHECK constraint named r¨  rF   )r€   r­  rm   rC  s       r?   Ú_cc_by_namez(ComponentReflectionTestExtra._cc_by_nameX  s[   € ð ò 	&ˆCØ�6‰{˜dÓ"Ø˜9‘~Ò%ð	&ð	
Ø(¨¨°Ø'0Ö1 ��F“Ò1Ð2ð4ó	
ˆuùâ1s    5z5(x IS NULL OR y IS NULL) AND (x IS NULL OR y IS NULL)za = '(' AND b = ')'za = 'it''s'z((((x > 0))))z((x > 1) AND (x < 5))zx > 0Ú
expressionc                 óL  —  |d«      5 \  }}t        d|t        dt        «       d¬«      t        dt        «       «      t        dt        «       «      t        dt        d«      «      t        d	t        d«      «      t	        j
                  |d
¬«      |¬«	       ddd«       j                  d¬«      }| j                  |d
«      } |d«      5 \  }}t        d|t        dt        «       d¬«      t        dt        «       «      t        dt        «       «      t        dt        d«      «      t        d	t        d«      «      t	        j
                  |d¬«      |¬«	       ddd«       |j                  d|¬«      }| j                  |d«      }	t        ||	«       y# 1 sw Y   ŒûxY w# 1 sw Y   ŒGxY w)aš  Regression test for #13157.

        A CHECK constraint expression must round-trip through reflection
        without its parentheses being incorrectly stripped.  The bug
        greedily paired the leading ``(`` with the trailing ``)`` and
        dropped both, producing an unbalanced, syntactically invalid
        expression such as ``x IS NULL OR y IS NULL) AND (x IS NULL OR
        y IS NULL``.
        rŽ  rK   TrL   ÚxÚyr»   rO   r¶  Úcc_exprr  rQ   NÚsa_cc_2Ú	cc_expr_2)	r   r   r   r   r`   r  r>  r�  r   )
r€   r[   ry  rž  rR   r´   r­  Úreflected_textÚ
reflected2Úreflected_text_2s
             r?   Ú/test_check_constraint_parenthesized_expressionszLComponentReflectionTestExtra.test_check_constraint_parenthesized_expressionsd  su  € ñ> ˜wÓ'ð 	Ñ+>¨F°IÜØØÜ�tœW›Y°DÔ9Ü�sœG›IÓ&Ü�sœG›IÓ&Ü�sœF 2›JÓ'Ü�sœF 2›JÓ'Ü×"Ñ" :°IÔ>Øõ
÷	ð ×3Ñ3°GÀFÐ3ÓKˆ	ð
 ×)Ñ)¨)°YÓ?ˆñ ˜yÓ)ð 	Ñ-@¨f°iÜØØÜ�tœW›Y°DÔ9Ü�sœG›IÓ&Ü�sœG›IÓ&Ü�sœF 2›JÓ'Ü�sœF 2›JÓ'Ü×"Ñ" >¸ÔDØõ
÷	ð ×4Ñ4°YÀvÐ4ÓNˆ
à×+Ñ+¨J¸ÓDÐÜˆNÐ,Õ-÷W	ð 	ú÷6	ð 	ús   ‰BFÃ	BFÆFÆF#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$   rc   r­  r«  r¬  r5  r   )r€   r[   ry  rR   r´   rJ   r�  s          r?   Útest_index_column_orderz4ComponentReflectionTestExtra.test_index_column_order°  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)NrD  r   rk  r¡  Ú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©rm   rÕ   rl  rù  c                 ó°   •— t         j                  j                  j                  r‰j                  j
                  › d�g i| d<   y | j                  di «       y )NÚ_includerù  )r   rS   Úindex_reflects_included_columnsr8   r7  rm   r/  )Úentryrž   s    €r?   ÚcompleteIndexzYComponentReflectionTestExtra.test_reflect_expression_based_indexes.<locals>.completeIndexà  sQ   ø€ Ü×Ñ×?Ñ?×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__ë  s)   € Ø—[‘[“]�à "�}ÒA¨#°¨)Ò*@°s¸b°yÐArA   Nrç  rF   rA   r?   Úlower_index_strr¼  ê  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__ñ  s   ø€ à! U§[¡[£]Ð2ÒH°xÀ5Ð7HÐHrA   Nrç  )rÅ  s   €r?   Úcoalesce_index_strrÂ  ð  s	   ø„ õIrA   rÆ  )Nr±  Nzlower(x)zlower(y))rm   rÕ   rú  rl  zcoalesce(x, 'z')rã   z>Skipped unsupported reflection of expression-based index t_idx)r   r   r   r$   r   r  rc   r   r±  r¡  rÄ  rè   r   r  r   rS   Ú reflect_indexes_with_expressionsr8   Úinserträ  r   r5  r   r
   Ú!compare_table_index_with_expectedr7  rm   )r€   r[   rž   rD  r�   r±  rº  rÀ  rÆ  Ú
expr_indexÚexpr_index_longrê   rK  rÅ  s     `          @r?   Ú%test_reflect_expression_based_indexeszBComponentReflectionTestExtra.test_reflect_expression_based_indexesÄ  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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 )NrD  r   rk  r¡  r²  ÚincludeFrµ  r   rù  z
%s_includerã   )r   r   r   r$   rc   r   rù  r7  rm   rè   r   r5  r   r,   rH  r   rÚ  r�  )r€   r[   rž   rD  rÇ   r�   r5  rK  s           r?   Útest_reflect_covering_indexz8ComponentReflectionTestExtra.test_reflect_covering_index  s@  € äØØÜ�3œ˜r›
Ó#Ü�3œ˜r›
Ó#ó	
ˆô �G˜QŸS™SŸU™UÓ#ˆØBEÀˆ×Ñ˜J×-Ñ-×2Ñ2Ñ3°IÑ>à×Ñ˜JÔ'ä�zÓ"ˆà×&Ñ& sÓ+ˆÜØð $Ø%( EØ#Ü'+§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 )NrD  zt%drÌ  )r   r^  r   r�   r   rò   )r€   rž   r[   r   rm  Útype_rD  rc   s           r?   Ú_type_round_tripz-ComponentReflectionTestExtra._type_round_tripH  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é   rZ  )rÒ  rb  rf  r%  r   Ú	precisionÚscale)r€   rž   r[   Útyps       r?   Útest_numeric_reflectionz4ComponentReflectionTestExtra.test_numeric_reflectionR  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Ò  Ú
issubclassrb  rs   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 )
NrD  r»   Tr[  r¶  Frm   r\  )r»   r¶  )r   r   r   r�   r   r   rò   )r€   rž   r[   rD  rŒ   s        r?   Útest_nullable_reflectionz5ComponentReflectionTestExtra.test_nullable_reflectionp  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Ý   rk  Úx_idzx.idÚxidr  Útesté
   Úuserrm   rO   Fr[  Útidztable.idÚmyfkr   r5   )r   r   r   r   r   r`   rç   rè   r   r2  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 )NrD  rK   TrL   Úthecol)Úserver_defaultrå   rÍ  z	[\(\) \']rU  )Úflags)
r   r   r   r�   r   rò   rõ  rö  r   Ú
IGNORECASE)	r€   r[   rž   ÚdatatyperÍ  Úexpected_regrD  r­  Úreflected_sanitizeds	            r?   Útest_server_defaultsz1ComponentReflectionTestExtra.test_server_defaultsÞ  s}   € ô: ØØÜ�4œ¨dÔ3Ü�8˜X°gÔ>ó	
ˆð 	
�‰�Ôä˜JÓ'×3Ñ3°CÓ8¸Ñ;¸IÑFˆ	Ü Ÿf™f \°2°yÓAÐÜÐ$ l¼"¿-¹-ÖHrA   )7rB   rC   rD   r©   r   r	  rs  ry  r‡  rS   rB  r‰  Ú"inline_check_constraint_reflectionrÎ   r’  r–  r›  r�  r¨  Úindexes_check_column_orderr¯  Úindexes_with_expressionsrÌ  r¸  rÏ  rÒ  rS  rØ  rb  r   rs   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   r`   rÆ  r   ÚtrueÚexpression_server_defaultsr   r   ÚnowÚliteral_columnÚserver_defaultsrú  rF   rA   r?   rn  rn  ¼
  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ð
ò>

ð ×Ñ×1Ñ1Ø€W×Ñð 	@ð 	ð 	àààØô!ñ$7.ó%ó 2ð&7.ðr ×Ñ×0Ñ0ñKó 1ðKð& ×Ñ×.Ñ.ñW
ó /ðW
ðr ×Ñ×5Ñ5ñ'
ó 6ð'
òR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   rn  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   rK  Ú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 )NrK  Tr  rã   rì   c                 ó&   — | j                  «       dv S )N©rì   rK  r¾  )rm   r:  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_   rc   r  ré   rK   r9  )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=   r@  r  r   Úupper)r€   rD  Ú
tablenamess      r?   rF  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  rF  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_tablerm   Ú42Úwith_defaultrÍ  ÚnormalÚcomputed_col)r   r   r=   rò   r+   r   )r€   r�   rÛ  rc   Úcol_datas        r?   Ú!test_computed_col_default_not_setz8ComputedReflectionTest.test_computed_col_default_not_set4  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  rm   )rK   r"  r!  Úcomputedr#  r  ú	normal+42Ú	persisted)r   r   r=   rò   r+   r   r€  r   rS   Ú"computed_columns_reflect_persistedr8   Ú"computed_columns_default_persisted)r€   r�   rÛ  rc   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   r€  r   rS   r*  r8   r   )r€   rN   Úcolumnr  r)  r,  s         r?   Úcheck_columnz#ComputedReflectionTest.check_columnR  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_tablerm   Úcomputed_no_flagr(  Úcomputed_virtualznormal+2FÚcomputed_storedz	normal-42T)r   r   r=   rò   r0  r   rS   r+  r8   Úcomputed_columns_virtualÚcomputed_columns_stored©r€   r�   rÛ  rc   rN   s        r?   Ú!test_get_column_returns_persistedz8ComputedReflectionTest.test_get_column_returns_persistedZ  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 )Nr2  rQ   rm   r3  z	normal/42r4  znormal/2Fr5  z	normal*42T)r   r   r=   rò   rU   r0  r   rS   r+  r8   r6  r7  r8  s        r?   Ú-test_get_column_returns_persisted_with_schemazDComputedReflectionTest.test_get_column_returns_persisted_with_schemau  så   € ä”v—y‘yÓ!ˆà×ÑØ#¬F×,>Ñ,>ð  ó 
ˆð '+Ö+ ��&‘	˜1‘Ð+ˆÐ+à×ÑØØØÜ×Ñ×?Ñ?×GÑGô		
ô ×Ñ×4Ñ4×<Ò<Ø×ÑØØ"ØØô	ô ×Ñ×3Ñ3×;Ò;Ø×ÑØØ!ØØõ	ð <ùò ,s   ¿C6N)rB   rC   rD   r%  r-  r0  r9  r   rS   rT   r;  rF   rA   r?   r  r  3  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ý   rS  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"  Úid1rK  rß   Tr   r   éþÿÿÿr}  é   ©Úalwaysrð   Ú	incrementÚminvalueÚmaxvalueÚcycleÚcachers  )rC  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 )NrB  rE  >   rH  rF  rð   rD  )	r   rS   Úidentity_columns_standardr8   rÚ  rÏ  r   r]  r+   )r€   rB  rˆ   ÚapproxÚcommon_keysr¼   s         r?   ÚcheckzIdentityReflectionTest.check¼  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ì   rK  rm   r"  rï   r?  rË  rÍ  Frå   éÿÿÿrB  T©rK  rß   r   r   r@  r}  rA  )	r   r   r=   rò   r)   r+   r   rM  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   rm   r"  rï   r?  rË  rÍ  Trs  rå   rO  FrB  rP  )
r   r   r=   rò   rU   r)   r+   r   rM  r;   rQ  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   rM  rª   r©   rÍ   rE   r\   rM  rô   r   rS   rT   rS  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   Úattrrm   rs  Úpk_tb1r  Trd  Útb2rL   ÚpidÚpattrÚpname©r]  r[  r\  Úfk_tb1_name_id_attr)r   r   r   rb  rs   r`   r  rç   rc   rm   rK   rX  )r>   r[   rW  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Ù  ©rm   rK   rX  )r   r/  r_   rW  rm   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é  ra  rÙ  r^  )r   r2  r_   rZ  rm   r   r]  rØ  )r€   rž   r�   Úforeign_keysrŠ  s        r?   Útest_fk_column_orderz/CompositeKeyReflectionTest.test_fk_column_orderG  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   rQ  rb  rü   re  rF   rA   r?   rU  rU  !  s^   „ Ø $Ðàñ
ó ð
ð6 ×Ñ×7Ñ7ñLó 8ðLð ×Ñ×7Ñ7ñIó 8ñIrA   rU  c                   óâ   — e Zd ZdZdZdZej                  ej                  j                  d„ «       «       Z
ej                  ej                  j                  d„ «       «       Zd„ Zd„ Zd„ Zd	„ Zd
„ Zy)ÚRepeatedColumnForeignKeyTestzround trip a FOREIGN KEY which names the same column more than
    once, e.g. ``FOREIGN KEY (a, a) REFERENCES r (b, c)``.

    )rü   Tc                 óè   — t        d|t        dt        d¬«      t        dt        d¬«      t        j                  dd«      t        j
                  ddgdd	gd
¬«      d¬«      }|j                  |«       |S )z7a table with a FOREIGN KEY that repeats a local column.Úrep_fk_trK   TrL   ÚcidFr[  úrep_fk_t.idzrep_fk_t.cidÚ
fk_rep_cidr  rÝ   ©r   r   r   r`   r  rç   rè   )r€   rž   r[   rD  s       r?   ri  z%RepeatedColumnForeignKeyTest.rep_fk_t[  sv   € ô
 ØØÜ�4œ¨dÔ3Ü�5œ'¨EÔ2Ü×Ñ  eÓ,Ü×#Ñ#Ø˜�Ø Ð/Ø!ôð
 ô
ˆð 	×Ñ˜JÔ'ØˆrA   c                 óè   — t        d|t        dt        d¬«      t        dt        d¬«      t        j                  dd«      t        j
                  ddgddgd	¬
«      d¬«      }|j                  |«       |S )z8a table with a FOREIGN KEY that repeats a remote column.Úremote_fk_trK   TrL   rj  Fr[  rk  Úfk_remote_cidr  rÝ   rm  )r€   rž   r[   ri  rD  s        r?   ro  z(RepeatedColumnForeignKeyTest.remote_fk_tp  sv   € ô
 ØØÜ�4œ¨dÔ3Ü�5œ'¨EÔ2Ü×Ñ  eÓ,Ü×#Ñ#Ø�u�Ø Ð.Ø$ôð
 ô
ˆð 	×Ñ˜JÔ'ØˆrA   c                 ót   — t        ddi dœ|¤Ž}t        j                  j                  j                  rd|d<   |S )z�an expected ``get_foreign_keys()`` entry.

        ``comment`` is only present for dialects that reflect constraint
        comments.

        N)rê  r5   rø   rF   )r;   r   rS   Úconstraint_comment_reflectionr8   )r€   rw   rˆ   s      r?   Ú_exp_fkz$RepeatedColumnForeignKeyTest._exp_fk…  s;   € ô Ð: 4°Ñ:°rÑ:ˆÜ×Ñ×9Ñ9×AÒAØ!ˆC�	‰NØˆ
rA   c           
      ó„   — t        |«      }|j                  d«      }t        || j                  dddgdddg¬«      g«       y )Nri  rl  rj  rK   ©rm   rÙ  rë  ré  ©r   r2  r   rs  )r€   rž   ri  r�   r”  s        r?   Ú$test_get_foreign_keys_local_repeatedzARepeatedColumnForeignKeyTest.test_get_foreign_keys_local_repeated‘  sQ   € Ü�zÓ"ˆØ×%Ñ% jÓ1ˆÜØà—‘Ø%Ø).°¨Ø#-Ø&*¨E ]ð	 ó ðõ
	
rA   c           
      ó„   — t        |«      }|j                  d«      }t        || j                  dddgdddg¬«      g«       y )Nro  rp  rK   rj  ri  ru  rv  )r€   rž   ro  r�   r”  s        r?   Ú%test_get_foreign_keys_remote_repeatedzBRepeatedColumnForeignKeyTest.test_get_foreign_keys_remote_repeated   sQ   € Ü�zÓ"ˆØ×%Ñ% mÓ4ˆÜØà—‘Ø(Ø)-¨u¨Ø#-Ø&*¨D \ð	 ó ðõ
	
rA   c                 óÀ  — t        dt        «       |¬«      }|j                  D �cg c]  }t        |t        j
                  «      r|‘Œ  }}t        t        |«      d«       |d   }t        |j                  ddg«       t        t        |j                  «      |j                  j                  |j                  j                  g«       t        |j                  D �cg c]  }|j                  |j                  f‘Œ c}|j                  j                  |j                  j                   f|j                  j                  |j                  j                  fg«       y c c}w c c}w )Nri  rã   rå   r   rj  )r   r   r¿  r%  r`   rç   r   r]  Úcolumn_keysrÚ  r_  rc   rj  ÚelementsÚparentr/  rK   )r€   rž   ri  rD  ÚconstÚfkcsÚfkcrï  s           r?   Ú&test_reflect_constraint_local_repeatedzCRepeatedColumnForeignKeyTest.test_reflect_constraint_local_repeated¯  sû   € Ü�*œh›j¸
ÔCˆð Ÿ™ö
àÜ˜%¤×!8Ñ!8Ô9ò ð
ˆð 
ô 	ŒC�‹I�qÔØ�1‰gˆäˆC�O‰O˜e U˜^Ô,ÜŒD�—‘Ó §¡§¡¨¯©¯©Ð1Ô2ÜØ.1¯l©lÖ;¨ˆb�i‰i˜Ÿ™Ò#Ò;Ø�c‰c�g‰g�q—s‘s—v‘vÐ §¡§¡¨!¯#©#¯'©'Ð 2Ð3õ	
ùò
ùò <s   ¥#EÃEc                 óò  — t        dt        «       |¬«      }|j                  D �cg c]  }t        |t        j
                  «      r|‘Œ  }}t        t        |«      d«       |d   }|j                  j                  d   }t        |j                  ddg«       t        t        |j                  «      |j                  j                  |j                  j                  g«       t        |j                   D �cg c]  }|j"                  |j$                  f‘Œ c}|j                  j                  |j                  j                  f|j                  j                  |j                  j                  fg«       y c c}w c c}w )Nro  rã   rå   r   ri  rK   rj  )r   r   r¿  r%  r`   rç   r   r]  r[   r_   r{  rÚ  r_  rc   rK   rj  r|  r}  r/  )	r€   rž   ro  rD  r~  r  r€  Úremoterï  s	            r?   Ú'test_reflect_constraint_remote_repeatedzDRepeatedColumnForeignKeyTest.test_reflect_constraint_remote_repeatedÂ  s  € Ü�-¤£¸:ÔFˆð Ÿ™ö
àÜ˜%¤×!8Ñ!8Ô9ò ð
ˆð 
ô 	ŒC�‹I�qÔØ�1‰gˆð —‘×"Ñ" :Ñ.ˆäˆC�O‰O˜d E˜]Ô+ÜŒD�—‘Ó §¡§¡¨¯©¯©Ð0Ô1ÜØ.1¯l©lÖ;¨ˆb�i‰i˜Ÿ™Ò#Ò;Ø�c‰c�f‰f�f—h‘h—k‘kÐ" Q§S¡S§W¡W¨f¯h©h¯k©kÐ$:Ð;õ	
ùò
ùò <s   ¥#E/Ã1E4N)rB   rC   rD   Ú__doc__rÍ   Ú__backend__r   r	  rS   Úrepeated_column_foreign_keysri  Ú repeated_remote_col_foreign_keysro  rs  rw  ry  r�  r„  rF   rA   r?   rg  rg  R  s‚   „ ñð
 :€LØ€Kà‡_�_Ø×Ñ×2Ñ2ñó 3ó ðð& ‡_�_Ø×Ñ×6Ñ6ñó 7ó ðò&
ò
ò
ò
ó&
rA   rg  )rP  rn  rX  r  rÐ   rH   r­   r  r  r=  rU  rg  r   )Jrw  r¼  rõ  r9   r`   rU  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   rb  r7  r   r   r    Úexcr!   r"   r#   r$   Úsql.elementsr%   Ú
sql.schemar&   r'   r(   r)   r*   r+   r,   r[   rW  Ú
TablesTestr/   rH   r­   ÚTestBaserÐ   r   r  rN  rP  rX  rn  r  ÚComputedReflectionFixtureTestr  r=  rU  rg  Ú__all__rF   rA   r?   ú<module>r‘     s½  ðó Û Û 	ã Ý Ý Ý Ý Ý Ý $Ý Ý Ý Ý +Ý /Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý "Ý Ý  Ý !Ý #Ý *Ý Ý Ý 'Ý &Ý &Ý %Ý Ý Ý Ý à�€ˆ%ô˜h×1Ñ1ô ô |:Ð*ô |:ô~J
�8×&Ñ&ô J
ôZdG˜8×,Ñ,ô dGôN#G˜H×-Ñ-ô #GôLT0˜X×0Ñ0ô T0òn1ô<l0˜nÐ.Eô l0ô^?2,˜×*Ñ*ô 2,ôjI	I ?°H×4EÑ4Eô I	IôX(:˜×,Ñ,ô (:ôV^˜X×CÑCô ^ôBJ˜X×0Ñ0ô JôZ.I ×!4Ñ!4ô .IôbD
 8×#4Ñ#4ô D
ðN�rA   