Ë
    ðmxi—^  ã                   óö  — 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!  G d „ d!ejD                  «      Z# G d"„ d#ejD                  «      Z$ G d$„ d%ejJ                  «      Z& G d&„ d'ejD                  «      Z' G d(„ d)ejJ                  «      Z( G d*„ d+ejD                  «      Z) G d,„ d-ejD                  «      Z* G d.„ d/ejV                  e*«      Z, G d0„ d1ejD                  «      Z- G d2„ d3ejJ                  «      Z.y)4é    Né   )Útestingé   )Úassert_raises)Úconfig)Úengines)Úeq_)Úfixtures)Úis_not_none)Úis_true)Úmock)Úne_)Úprovide_metadata)Úexpect_raises)Úexpect_raises_message)Úrequirements)Ú set_default_schema_on_connection)ÚColumn)ÚTableé   )Ú	bindparam)Údialects)Úevent)Úexc)ÚInteger)Úliteral_column)Úselect)ÚString)ÚCompiled)Úinspect_getfullargspecc                   ó   — e Zd ZdZd„ Zy)ÚPingTestTc                 óö   — t         j                  j                  «       5 }t        t         j                  j                  j                  |j                  j                  «      «       d d d «       y # 1 sw Y   y xY w©N)r   ÚdbÚconnectr   ÚdialectÚdo_pingÚ
connectionÚdbapi_connection)ÚselfÚconns     ú\/home/htdocs/ttos/venv/lib/python3.12/site-packages/sqlalchemy/testing/suite/test_dialect.pyÚtest_do_pingzPingTest.test_do_ping,   sS   € Ü�Z‰Z×ÑÓ!ð 	 TÜÜ—
‘
×"Ñ"×*Ñ*¨4¯?©?×+KÑ+KÓLô÷	÷ 	ñ 	ús   ŸAA/Á/A8N)Ú__name__Ú
__module__Ú__qualname__Ú__backend__r.   © ó    r-   r"   r"   )   s   „ Ø€Kór4   r"   c                   ód   — e Zd ZdZd„ Z ej                   e e«       «      ¬«      d„ «       Zd„ Z	y)ÚArgSignatureTestaË  test that all visit_XYZ() in :class:`_sql.Compiler` subclasses have
    ``**kw``, for #8988.

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

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

    c               #   ó  K  — t         j                  D ],  } | j                  d«      rŒt        j                  d| z  «       Œ. t
        g}|r8|j                  d«      }|j                  |j                  «       «       |–— |rŒ7y y ­w)NÚ_zsqlalchemy.dialects.%sr   )	r   Ú__all__Ú
startswithÚ	importlibÚimport_moduler   ÚpopÚextendÚ__subclasses__)ÚdÚstackÚclss      r-   Ú_all_subclassesz ArgSignatureTest._all_subclassesA   su   è ø€ Ü×!Ñ!ò 	FˆAØ—<‘< Õ$Ü×'Ñ'Ð(@À1Ñ(DÕEð	Fô �
ˆáØ—)‘)˜A“,ˆCØ�L‰L˜×+Ñ+Ó-Ô.ØŠIô ùs   ‚%B¨ABÂB)Úparamsc              #   ó(   K  — |j                   –— y ­wr$   )Úparam)r+   Úrequests     r-   Úall_subclasseszArgSignatureTest.all_subclassesM   s   è ø€ à�m‰mÓùs   ‚c           	      óÊ   — |}|j                   D ]R  }|j                  d«      sŒt        ||«      }t        |«      }t	        |j
                  d|j                  › d|› d�«       ŒT y )NÚvisit_zCompiler visit method ú.z:() does not accommodate for **kw in its argument signature)Ú__dict__r:   Úgetattrr    r   Úvarkwr/   )r+   rH   rB   ÚkÚmethÚinsps         r-   Ú test_all_visit_methods_accept_kwz1ArgSignatureTest.test_all_visit_methods_accept_kwQ   sg   € Øˆà—‘ò 		ˆAØ�|‰|˜HÕ%Ü˜s A“�ä-¨dÓ3�ÜØ—J‘JØ,¨S¯\©\¨N¸!¸A¸3ð ?Ið Iõñ		r4   N)
r/   r0   r1   Ú__doc__rC   r   ÚfixtureÚlistrH   rR   r3   r4   r-   r6   r6   3   s8   „ ñò
ð €W‡_�_™D¡Ó!2Ó3Ô4ñó 5ðór4   r6   c                   óR   — e Zd ZdZdZdZed„ «       Zej                  d„ «       Z
d„ Zy)ÚExceptionTestz¶Test basic exception wrapping.

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

    ÚeachTc                 óh   — t        d|t        dt        dd¬«      t        dt        d«      «      «       y )NÚ	manual_pkÚidTF©Úprimary_keyÚautoincrementÚdataé2   ©r   r   r   r   ©rB   Úmetadatas     r-   Údefine_tableszExceptionTest.define_tablesl   s,   € äØØÜ�4œ¨dÀ%ÔHÜ�6œ6 "›:Ó&õ		
r4   c           	      ó®  — t         j                  j                  «       5 }|j                  «       }|j	                  | j
                  j                  j                  «       dddœ«       t        t        j                  |j                  | j
                  j                  j                  «       dddœ«       |j                  «        d d d «       y # 1 sw Y   y xY w)Nr   Úd1©r[   r_   )r   r%   r&   ÚbeginÚexecuteÚtablesrZ   Úinsertr   r   ÚIntegrityErrorÚrollback)r+   r,   Útranss      r-   Útest_integrity_errorz"ExceptionTest.test_integrity_erroru   s¡   € ä�Y‰Y×ÑÓ ð 	 DØ—J‘J“LˆEØ�L‰LØ—‘×%Ñ%×,Ñ,Ó.°qÀ$Ñ0Gôô Ü×"Ñ"Ø—‘Ø—‘×%Ñ%×,Ñ,Ó.Ø $Ñ'ô	ð �N‰NÔ÷	÷ 	ñ 	ús   ŸB#CÃCc                 óv  — t         j                  j                  «       5 }	 |j                  t	        t        d«      «      «       J ‚# t        j                  $ r7}t        |«      }t        |j                  «      t        |«      v sJ ‚Y d }~nd }~ww xY wt        |t        «      sJ ‚	 d d d «       y # 1 sw Y   y xY w)Nu   mÃ©il)r   r%   r&   ri   r   r   r   Ú
DBAPIErrorÚstrÚorigÚ
isinstance)r+   r,   ÚerrÚerr_strs       r-   Útest_exception_with_non_asciiz+ExceptionTest.test_exception_with_non_ascii†   s”   € Ü�Y‰Y×ÑÓ ð 	, Dð1ð —‘œV¤N°7Ó$;Ó<Ô=Ø�uøÜ—>‘>ò 1Ü˜c›(�ä˜3Ÿ8™8“}¬¨C«Ñ0Ð0Õ0ûð1úô
 ˜g¤sÔ+Ð+Ñ+÷	,÷ 	,ñ 	,ús.   ŸB/¡%AÁBÁ-BÂB/ÂBÂB/Â/B8N)r/   r0   r1   rS   Úrun_deletesr2   Úclassmethodrd   r   Ú$duplicate_key_raises_integrity_errorro   rw   r3   r4   r-   rW   rW   `   sD   „ ñð €Kà€Kàñ
ó ð
ð ×6Ñ6ñó 7ðó ,r4   rW   c                   ó  — e Zd ZdZdZd„ Zd„ Zd„ Zd„ Ze	j                  j                  d„ «       Ze	j                  j                  e	j                  j                  d„ «       «       Ze	j                  j                  d	„ «       Zy
)ÚIsolationLevelTestT©Úisolation_levelc                 óÐ   — t        j                  t        «      }|d   }|d   }t        |«      j	                  d|g«      }|r|j                  «       S t        j                  d«       y )NÚdefaultÚ	supportedÚ
AUTOCOMMITz(no non-default isolation level available)r   Úget_isolation_levelsr   ÚsetÚ
differencer=   Ú	skip_test)r+   Úlevelsr€   r�   Úss        r-   Ú _get_non_default_isolation_levelz3IsolationLevelTest._get_non_default_isolation_level�   s\   € Ü×2Ñ2´6Ó:ˆà˜Ñ#ˆØ˜;Ñ'ˆ	ä�	‹N×%Ñ% |°WÐ&=Ó>ˆÙØ—5‘5“7ˆNä×ÑÐGÕHr4   c                 ó”   — t        t        j                  j                  j                  t        j                  t        «      d   «       y )Nr€   )r	   r   r%   r'   Údefault_isolation_levelr   rƒ   )r+   s    r-   Útest_default_isolation_levelz/IsolationLevelTest.test_default_isolation_level©   s0   € ÜÜ�I‰I×Ñ×5Ñ5Ü×-Ñ-¬fÓ5°iÑ@õ	
r4   c                 ó¬  — | j                  «       }t        j                  j                  «       5 }|j	                  «       }t        ||«       |j                  |¬«       t        |j	                  «       |«       |j                  j                  |j                  j                  «       t        |j	                  «       |«       d d d «       y # 1 sw Y   y xY w)Nr}   )r‰   r   r%   r&   Úget_isolation_levelr   Úexecution_optionsr	   r'   Úreset_isolation_levelr)   r*   )r+   Únon_defaultr,   Úexistings       r-   Ú test_non_default_isolation_levelz3IsolationLevelTest.test_non_default_isolation_level¯   s§   € Ø×;Ñ;Ó=ˆä�Y‰Y×ÑÓ ð 	6 DØ×/Ñ/Ó1ˆHä�˜+Ô&à×"Ñ"°;Ð"Ô?ä�×(Ñ(Ó*¨KÔ8à�L‰L×.Ñ.Ø—‘×0Ñ0ôô �×(Ñ(Ó*¨HÔ5÷	6÷ 	6ñ 	6ús   ¯BC
Ã
Cc                 óR  — t        j                  t        «      }|d   }t        |«      j	                  dg«      D ]Ó  }t        j
                  j                  «       5 }|j                  |¬«       t        |j                  «       |«       |j                  «       }|j                  «        t        |j                  «       |«       d d d «       t        j
                  j                  «       5 }t        |j                  «       |d   «       d d d «       ŒÕ y # 1 sw Y   ŒPxY w# 1 sw Y   ŒìxY w)Nr�   r‚   r}   r€   )r   rƒ   r   r„   r…   r%   r&   r�   r	   rŽ   rh   rm   )r+   r‡   Ú
all_levelsÚlevelr,   rn   s         r-   Útest_all_levelsz"IsolationLevelTest.test_all_levelsÁ   sù   € Ü×2Ñ2´6Ó:ˆà˜KÑ(ˆ
ä˜“_×/Ñ/°°Ó?ò 	ˆEÜ—‘×"Ñ"Ó$ð 7¨Ø×&Ñ&°uÐ&Ô=ä�D×,Ñ,Ó.°Ô6àŸ
™
›�Ø—‘Ô ä�D×,Ñ,Ó.°Ô6÷7ô —‘×"Ñ"Ó$ð ¨ÜØ×,Ñ,Ó.Ø˜9Ñ%ô÷ð ñ	÷7ð 7ú÷ð ús   ÁA'DÃ(DÄD	ÄD&	c                 ó  — |}t        t        j                  dd›d|j                  j                  ›ddj                  t        j                  t        «      d   «      ›�«      5  |j                  d¬«       ddd«       y# 1 sw Y   yxY w)	z4test for the new get_isolation_level_values() methodúInvalid value 'ÚFOOú3' for isolation_level. Valid isolation levels for 'ú' are ú, r�   r}   N)
r   r   ÚArgumentErrorr'   ÚnameÚjoinr   rƒ   r   r�   )r+   Úconnection_no_transr)   s      r-   Ú#test_invalid_level_execution_optionz6IsolationLevelTest.test_invalid_level_execution_option×   s~   € ð )ˆ
Ü"Ü×Òò Ø×"Ñ"×'Ó'Ø—	‘	Ü ×5Ñ5´fÓ=¸kÑJôðó
ñ 	@ð ×(Ñ(¸Ð(Ô?÷	@÷ 	@ñ 	@ús   Á#A?Á?Bc                 ó4  —  |t        d¬«      ¬«      }t        t        j                  dd›d|j                  j
                  ›ddj                  t        j                  t        «      d   «      ›�«      5  |j                  «        d	d	d	«       y	# 1 sw Y   y	xY w)
z…test for the new get_isolation_level_values() method
        and support for the dialect-level 'isolation_level' parameter.

        rš   r}   ©Úoptionsr™   r›   rœ   r�   r�   N)Údictr   r   rž   r'   rŸ   r    r   rƒ   r   r&   )r+   Útesting_engineÚengs      r-   Útest_invalid_level_engine_paramz2IsolationLevelTest.test_invalid_level_engine_paramê   sz   € ñ ¤T¸%Ô%@ÔAˆÜ"Ü×Òò Ø—‘× Ó Ø—	‘	Ü ×5Ñ5´fÓ=¸kÑJôðó
ñ 	ð �K‰KŒM÷	÷ 	ñ 	ús   Á4BÂBc                 óJ  — t        j                  t        «      }|d   }t        t	        |d   «      j                  |dg«      «      d   } |d|i¬«      }|j                  «       5 }t        |j                  «       |«       d d d «       |j                  «       5 }|j                  |¬«       t        |j                  «       |«       d d d «       |j                  «       5 }t        |j                  «       |«       d d d «       y # 1 sw Y   Œ‚xY w# 1 sw Y   ŒIxY w# 1 sw Y   y xY w)Nr€   r�   r‚   r   r~   r¤   r}   )
r   rƒ   r   Úsortedr„   r…   r&   r	   rŽ   r�   )r+   r§   r‡   r€   r�   Úer,   s          r-   Ú%test_dialect_user_setting_is_restoredz8IsolationLevelTest.test_dialect_user_setting_is_restored  s  € ä×2Ñ2´6Ó:ˆØ˜Ñ#ˆäÜ�F˜;Ñ'Ó(×3Ñ3°W¸lÐ4KÓLóð ñ	ˆ	ñ Ð$5°yÐ#AÔBˆà�Y‰Y‹[ð 	7˜DÜ�×(Ñ(Ó*¨IÔ6÷	7ð �Y‰Y‹[ð 	5˜DØ×"Ñ"°7Ð"Ô;Ü�×(Ñ(Ó*¨GÔ4÷	5ð �Y‰Y‹[ð 	7˜DÜ�×(Ñ(Ó*¨IÔ6÷	7ð 	7÷	7ð 	7ú÷	5ð 	5ú÷	7ð 	7ús$   Á%DÂ-DÃDÄD
ÄDÄD"N)r/   r0   r1   r2   Ú__requires__r‰   rŒ   r“   r—   r   ÚrequiresÚget_isolation_level_valuesr¢   Ú#dialect_level_isolation_level_paramr©   Ú independent_readonly_connectionsr­   r3   r4   r-   r|   r|   ˜   s—   „ Ø€Kà'€Lò
Iò
ò6ò$ð, ×Ñ×0Ñ0ñ@ó 1ð@ð$ ×Ñ×0Ñ0Ø×Ñ×9Ñ9ñó :ó 1ðð* ×Ñ×6Ñ6ñ7ó 7ñ7r4   r|   c                   óB  — e Zd ZdZdZdZed„ «       Zdd„Zd„ Z	d„ Z
d	„ Zej                  j                   ej                  d
g d¢«       ej                  dddg«      d„ «       «       «       Zej                  j"                   ej                  dddg«      d„ «       «       Zy)ÚAutocommitIsolationTestrX   )Ú
autocommitTc                 ól   — t        d|t        dt        dd¬«      t        dt        d«      «      d¬«       y )	NÚ
some_tabler[   TFr\   r_   r`   )Útest_needs_acidra   rb   s     r-   rd   z%AutocommitIsolationTest.define_tables  s/   € äØØÜ�4œ¨dÀ%ÔHÜ�6œ6 "›:Ó&Ø ö	
r4   Fc                 ó”  — |r7| j                   j                  j                  |d¬«       |j                  «        |j	                  «       }|j                  | j                   j                  j                  «       dddœ«       |j                  «        t        |j                  t        | j                   j                  j                  j                  «      «      |rdnd «       |j                  «        |j	                  «       5  |j                  | j                   j                  j                  «       «       d d d «       y # 1 sw Y   y xY w)NT)Ú
checkfirstr   z	some datarg   )rj   r·   ÚcreateÚcommitrh   ri   rk   rm   r	   Úscalarr   Úcr[   Údelete)r+   r,   rµ   Úensure_tablern   s        r-   Ú_test_conn_autocommitsz.AutocommitIsolationTest._test_conn_autocommits)  sé   € ÙØ�K‰K×"Ñ"×)Ñ)¨$¸4Ð)Ô@Ø�K‰KŒMà—
‘
“ˆØ�‰Ø�K‰K×"Ñ"×)Ñ)Ó+°A¸{Ñ-Kô	
ð 	�‰ÔäØ�K‰Kœ˜tŸ{™{×5Ñ5×7Ñ7×:Ñ:Ó;Ó<Ù‰A ô	
ð 	�‰Œà�Z‰Z‹\ñ 	:Ø�L‰L˜Ÿ™×/Ñ/×6Ñ6Ó8Ô9÷	:÷ 	:ñ 	:ús   Ä4D>Ä>Ec                 óÒ   — |}|j                  d¬«      }| j                  |d«       |j                  j                  |j                  j
                  «       | j                  |d«       y )Nr‚   r}   TF)r�   rÁ   r'   r�   r)   r*   )r+   r¡   r,   Úc2s       r-   Útest_autocommit_onz*AutocommitIsolationTest.test_autocommit_on=  sV   € Ø"ˆØ×#Ñ#°LÐ#ÓAˆØ×#Ñ# B¨Ô-à
�
‰
×(Ñ(¨¯©×)GÑ)GÔHà×#Ñ# D¨%Õ0r4   c                 ó,   — |}| j                  |d«       y )NF)rÁ   ©r+   r¡   r,   s      r-   Útest_autocommit_offz+AutocommitIsolationTest.test_autocommit_offF  s   € Ø"ˆØ×#Ñ# D¨%Õ0r4   c                 óÌ   — |}|j                  d¬«      }| j                  |d«       |j                  t        j                  t        «      d   ¬«       | j                  |d«       y )Nr‚   r}   Tr€   F)r�   rÁ   r   rƒ   r   rÆ   s      r-   Ú.test_turn_autocommit_off_via_default_iso_levelzFAutocommitIsolationTest.test_turn_autocommit_off_via_default_iso_levelJ  sg   € ð #ˆØ×%Ñ%°lÐ%ÓCˆØ×#Ñ# D¨$Ô/à×ÑÜ(×=Ñ=¼fÓEØñð 	ô 	
ð
 	×#Ñ# D¨%Õ0r4   Úautocommit_setting)ÚfalseÚengineÚoptionÚblock_rollbackc                 óv  — i }t        |«      rd|d<   |j                  rd|d<    ||¬«      }|j                  «       }|j                  r|j	                  d¬«       | j                  ||j                  xs |j                  d¬«       t        j                  j                  |j                  d|j                  j                  ¬	«      5 }|j                  «        d d d «       |j                  s|s*t        j                  t        j                  «       g«       y t        j                  g «       y # 1 sw Y   ŒXxY w)
NTÚskip_autocommit_rollbackr‚   r~   r¤   r}   )rÀ   rm   )Úwraps)ÚboolrÌ   r&   rÍ   r�   rÁ   r   ÚpatchÚobjectr)   rm   ÚcloserË   r	   Ú
mock_callsÚcall)r+   r§   rÊ   rÎ   ÚkwrÌ   r,   Úcheck_rollbacks           r-   Útest_autocommit_blockz-AutocommitIsolationTest.test_autocommit_blockX  s  € ð ˆÜ�ÔØ-1ˆBÐ)Ñ*Ø×$Ò$Ø$0ˆBÐ Ñ!á¨Ô+ˆà�~‰~ÓˆØ×$Ò$Ø×"Ñ"°<Ð"Ô@Ø×#Ñ#ØØ×%Ñ%ÒBÐ);×)BÑ)BØð 	$ô 	
ô
 �Z‰Z×ÑØ�O‰O˜Z¨t¯©×/GÑ/Gð ó 
ð 	àØ�J‰JŒL÷	ð ×#Ò#©>Ü�×)Ñ)¬D¯I©I«K¨=Õ9ä�×)Ñ)¨2Õ.÷	ð 	ús   ÃD/Ä/D8Úuse_dialect_settingc                 óø  — |r |ddi¬«      }n |«       j                  d¬«      }t        j                  t        «      }|d   }|j	                  «       5 }| j                  |d«       ddd«       |j	                  «       5 }|j                  |¬«       | j                  |d«       ddd«       |j	                  «       5 }| j                  |d«       ddd«       y# 1 sw Y   ŒrxY w# 1 sw Y   ŒAxY w# 1 sw Y   yxY w)	ztest #10147r~   r‚   r¤   r}   r€   TNF)r�   r   rƒ   r   r&   rÁ   )r+   r§   rÛ   r¬   r‡   r€   r,   s          r-   Ú#test_dialect_autocommit_is_restoredz;AutocommitIsolationTest.test_dialect_autocommit_is_restoredw  sø   € ñ ÙÐ(9¸<Ð'HÔI‰AáÓ ×2Ñ2Ø ,ð 3ó ˆAô ×2Ñ2´6Ó:ˆà˜Ñ#ˆà�Y‰Y‹[ð 	4˜DØ×'Ñ'¨¨dÔ3÷	4ð �Y‰Y‹[ð 	5˜DØ×"Ñ"°7Ð"Ô;Ø×'Ñ'¨¨eÔ4÷	5ð �Y‰Y‹[ð 	4˜DØ×'Ñ'¨¨dÔ3÷	4ð 	4÷	4ð 	4ú÷	5ð 	5ú÷	4ð 	4ús$   ÁCÁ?%C$Â<C0ÃC!Ã$C-Ã0C9N)F)r/   r0   r1   rx   r®   r2   ry   rd   rÁ   rÄ   rÇ   rÉ   r   r¯   rÐ   Ú	variationrÚ   r²   rÝ   r3   r4   r-   r´   r´     sÉ   „ Ø€Kà"€Là€Kàñ
ó ð
ó:ò(1ò1ò1ð ×Ñ×.Ñ.Ø€W×ÑÐ+Ò-JÓKØ€W×ÑÐ'¨$°¨Ó7ñ/ó 8ó Ló /ð/ð8 ×Ñ×6Ñ6Ø€W×ÑÐ,¨t°U¨mÓ<ñ4ó =ó 7ñ4r4   r´   c                   ó   — e Zd Zed„ «       Zy)ÚEscapingTestc                 óD  — | j                   }t        d|t        dt        d«      «      «      }|j	                  t
        j                  «       t
        j                  j                  «       5 }|j                  |j                  «       t        d¬«      «       |j                  |j                  «       t        d¬«      «       t        |j                  t        |j                  j                  «      j!                  |j                  j                  t#        d«      k(  «      «      d«       t        |j                  t        |j                  j                  «      j!                  |j                  j                  t#        d«      k(  «      «      d«       d	d	d	«       y	# 1 sw Y   y	xY w)
z|test that the DBAPI accommodates for escaped / nonescaped
        percent signs in a way that matches the compiler

        Útr_   r`   zsome % value)r_   zsome %% other valuez'some % value'z'some %% other value'N)rc   r   r   r   r»   r   r%   rh   ri   rk   r¦   r	   r½   r   r¾   r_   Úwherer   )r+   Úmrâ   r,   s       r-   Útest_percent_sign_round_tripz)EscapingTest.test_percent_sign_round_trip•  s$  € ð �M‰MˆÜ�#�qœ& ¬°«Ó4Ó5ˆØ	�‰”—‘ÔÜ�Y‰Y�_‰_Óð 	 $Ø�L‰L˜Ÿ™›¤T¨~Ô%>Ô?Ø�L‰L˜Ÿ™›¤TÐ/DÔ%EÔFäØ—‘Ü˜1Ÿ3™3Ÿ8™8Ó$×*Ñ*ØŸ™Ÿ™¤NÐ3CÓ$DÑDóóð
 ôô Ø—‘Ü˜1Ÿ3™3Ÿ8™8Ó$×*Ñ*ØŸ™Ÿ™¤NÐ3JÓ$KÑKóóð
 &ô÷	÷ 	ñ 	ús   Á*D#FÆFN)r/   r0   r1   r   rå   r3   r4   r-   rà   rà   ”  s   „ Øñó ñr4   rà   c                   ó,   — e Zd ZdZdZd„ Zd„ Zd„ Zd„ Zy)Ú WeCanSetDefaultSchemaWEventsTestT)Údefault_schema_name_switchc                 ó   — t         j                  j                  j                  }t	        j
                  «       }|j                  «       5  	 d d d «       t        |j                  j                  |«       y # 1 sw Y   Œ*xY wr$   )r   r%   r'   Údefault_schema_namer   r§   r&   r	   )r+   rê   r¨   s      r-   Útest_control_casez2WeCanSetDefaultSchemaWEventsTest.test_control_caseº  s^   € Ü$Ÿi™i×/Ñ/×CÑCÐä×$Ñ$Ó&ˆØ�[‰[‹]ñ 	Ø÷	ô 	ˆC�K‰K×+Ñ+Ð-@ÕA÷	ð 	ús   Á	A4Á4A=c                 ó   — t         j                  j                  j                  }t	        j
                  «       }t        j                  |d«      d„ «       }|j                  «       5 }|j                  j                  |«      }t        |t         j                  «       d d d «       t        |j                  j                  |«       y # 1 sw Y   Œ*xY w)Nr&   c                 óB   — t        t        | t        j                  «       y r$   ©r   r   Útest_schema©r*   Úconnection_records     r-   Ú
on_connectzMWeCanSetDefaultSchemaWEventsTest.test_wont_work_wo_insert.<locals>.on_connectÈ  ó   € ä,ÜÐ(¬&×*<Ñ*<õr4   )r   r%   r'   rê   r   r§   r   Úlistens_forr&   Ú_get_default_schema_namer	   rï   )r+   rê   r¨   rò   r,   Úwhat_it_should_bes         r-   Útest_wont_work_wo_insertz9WeCanSetDefaultSchemaWEventsTest.test_wont_work_wo_insertÃ  s¤   € Ü$Ÿi™i×/Ñ/×CÑCÐä×$Ñ$Ó&ˆä	×	Ñ	˜3 	Ó	*ñ	ó 
+ð	ð
 �[‰[‹]ð 	7˜dØ #§¡× DÑ DÀTÓ JÐÜÐ!¤6×#5Ñ#5Ô6÷	7ô 	ˆC�K‰K×+Ñ+Ð-@ÕA÷		7ð 	7ús   Á%6CÃCc                 óx  — t        j                  «       }t        j                  |dd¬«      d„ «       }|j	                  «       5 }|j
                  j                  |«      }t        |t        j                  «       d d d «       t        |j
                  j                  t        j                  «       y # 1 sw Y   Œ8xY w)Nr&   T©rk   c                 óB   — t        t        | t        j                  «       y r$   rî   rð   s     r-   rò   zRWeCanSetDefaultSchemaWEventsTest.test_schema_change_on_connect.<locals>.on_connect×  ró   r4   )r   r§   r   rô   r&   r'   rõ   r	   r   rï   rê   )r+   r¨   rò   r,   rö   s        r-   Útest_schema_change_on_connectz>WeCanSetDefaultSchemaWEventsTest.test_schema_change_on_connectÔ  s•   € Ü×$Ñ$Ó&ˆä	×	Ñ	˜3 	°$Ô	7ñ	ó 
8ð	ð
 �[‰[‹]ð 	7˜dØ #§¡× DÑ DÀTÓ JÐÜÐ!¤6×#5Ñ#5Ô6÷	7ô 	ˆC�K‰K×+Ñ+¬V×-?Ñ-?Õ@÷		7ð 	7ús   Á6B0Â0B9c                 ó"  — t        j                  «       }t        j                  |dd¬«      d„ «       }|j	                  «       5 }|j                  «       }|j                  j                  |«      }t        |t        j                  «       |j                  «        |j                  j                  |«      }t        |t        j                  «       d d d «       t        |j                  j                  t        j                  «       y # 1 sw Y   Œ8xY w)Nr&   Trù   c                 óB   — t        t        | t        j                  «       y r$   rî   )r*   Úargs     r-   rò   z\WeCanSetDefaultSchemaWEventsTest.test_schema_change_works_w_transactions.<locals>.on_connectæ  ró   r4   )r   r§   r   rô   r&   rh   r'   rõ   r	   r   rï   rm   rê   )r+   r¨   rò   r,   rn   rö   s         r-   Ú'test_schema_change_works_w_transactionszHWeCanSetDefaultSchemaWEventsTest.test_schema_change_works_w_transactionsã  sÐ   € Ü×$Ñ$Ó&ˆä	×	Ñ	˜3 	°$Ô	7ñ	ó 
8ð	ð
 �[‰[‹]ð 	7˜dØ—J‘J“LˆEØ #§¡× DÑ DÀTÓ JÐÜÐ!¤6×#5Ñ#5Ô6Ø�N‰NÔà #§¡× DÑ DÀTÓ JÐÜÐ!¤6×#5Ñ#5Ô6÷	7ô 	ˆC�K‰K×+Ñ+¬V×-?Ñ-?Õ@÷	7ð 	7ús   ÁBDÄDN)	r/   r0   r1   r2   r®   rë   r÷   rû   rÿ   r3   r4   r-   rç   rç   µ  s$   „ Ø€Kà2€LòBòBò"AóAr4   rç   c                   ó   — e Zd Zy)Ú&FutureWeCanSetDefaultSchemaWEventsTestN)r/   r0   r1   r3   r4   r-   r  r  ø  s   „ ð 	r4   r  c                   óæ   — e Zd ZdZ ej
                  dddddddd	d
ddddddddddddd¬«      Zeej                  j                  d„ «       «       Z
ej                  d„ «       Zed„ «       Zed„ «       Zy)ÚDifficultParametersTestT)Úboring)zper cent)z
per % cent)z%percent)zpar(ens))zpercent%(ens)yah)zcol:ons)Ú_starts_with_underscore)zdot.s)zmore :: %colons%)Ú_name)Ú___name)z[BracketsAndCase])Ú	42numbers)zpercent%signs)z
has spaces)z	/slashes/)zmore/slashes)zq?marks)Ú1param)z1col:onÚ	paramname)Úargnamesc                 óV  — |}t        d|t        dt        d¬«      t        |t        d«      d¬«      «      }|j	                  |«       |j                  |j                  «       j                  dd|d	i«      «       t        |j                  |   «      j                  |j                  |   d	k(  «      }t        |j                  |«      d	«       t        |j                  |   «      j                  |j                  |   t        |«      k(  «      }|j                  ||d	i«      j                  «       }t        |j                  |   d	«       t        |j                  |   «      j                  |j                  |   j!                  d	d
g«      «      }|j                  |«      j                  «        y )Nrâ   r[   T)r]   r`   F)Únullabler   z	some namezsome other_name)r   r   r   r   r»   ri   rk   Úvaluesr   r¾   rã   r	   r½   r   ÚfirstÚ_mappingÚin_)r+   r
  r)   rc   rŸ   râ   ÚstmtÚrows           r-   Ú!test_round_trip_same_named_columnz9DifficultParametersTest.test_round_trip_same_named_column  se  € ð
 ˆäØØÜ�4œ¨dÔ3Ü�4œ ›¨eÔ4ó	
ˆð 	
�‰�Ôð 	×Ñ˜1Ÿ8™8›:×,Ñ,¨d°A°t¸[Ð-IÓJÔKô �a—c‘c˜$‘iÓ ×&Ñ& q§s¡s¨4¡y°KÑ'?Ó@ˆäˆJ×Ñ˜dÓ# [Ô1ô �a—c‘c˜$‘iÓ ×&Ñ& q§s¡s¨4¡y´I¸d³OÑ'CÓDˆà× Ñ  ¨¨kÐ':Ó;×AÑAÓCˆô 	ˆC�L‰L˜Ñ Ô,ô �a—c‘c˜$‘iÓ ×&Ñ&Ø�C‰C�‰I�M‰M˜;Ð(9Ð:Ó;ó
ˆð 	×Ñ˜4Ó ×&Ñ&Õ(r4   c              #   ó$  K  — t        d|t        dt        «      t        dt        d«      «      t        dt        d«      «      «      }|j	                  |«       |j                  |j                  «       dddd	œd
ddd	œdddd	œdddd	œg«       |–— y ­w)NÚmytableÚmyidrŸ   r`   Údescr   ÚaÚa_desc)r  rŸ   r  r   ÚbÚb_descr   r¾   Úc_descé   r@   Úd_desc)r   r   r   r   r»   ri   rk   )r+   rc   r)   r  s       r-   Úmultirow_fixturez(DifficultParametersTest.multirow_fixtureB  s–   è ø€ äØØÜ�6œ7Ó#Ü�6œ6 "›:Ó&Ü�6œ6 "›:Ó&ó
ˆð 	�‰�zÔ"à×ÑØ�N‰NÓà C°Ñ:Ø C°Ñ:Ø C°Ñ:Ø C°Ñ:ð	ô	
ð ‹ùs   ‚BBc                 óè   — |}t        |j                  j                  «      j                  |j                  j                  t        |d¬«      k(  «      }|j                  ||di«      }t        |d«       y )NÚx©Úvaluer¾   r   )r   r¾   r  rã   rŸ   r   r½   r	   ©r+   r
  r)   r   Útbl1r  Úress          r-   Ú test_standalone_bindparam_escapez8DifficultParametersTest.test_standalone_bindparam_escapeY  s_   € ð  ˆÜ�d—f‘f—k‘kÓ"×(Ñ(Ø�F‰F�K‰Kœ9 Y°cÔ:Ñ:ó
ˆð ×Ñ  y°#Ð&6Ó7ˆÜˆC��r4   c           	      ón  — |}t        |j                  j                  «      j                  |j                  j                  j                  t        |ddg¬«      «      «      j                  |j                  j                  «      }|j                  ||ddgi«      j                  «       }t        |ddg«       y )Nr  r  r#  r@   r   r  )r   r¾   r  rã   rŸ   r  r   Úorder_byÚscalarsÚallr	   r%  s          r-   Ú*test_standalone_bindparam_escape_expandingzBDifficultParametersTest.test_standalone_bindparam_escape_expandingd  sŠ   € ð  ˆä�4—6‘6—;‘;Óß‰U�4—6‘6—;‘;—?‘?¤9¨Y¸sÀC¸jÔ#IÓJÓKß‰X�d—f‘f—k‘kÓ"ð 	ð × Ñ  ¨	°C¸°:Ð'>Ó?×CÑCÓEˆÜˆC�!�Q�Õr4   N)r/   r0   r1   r2   r   ÚcombinationsÚtough_parametersr   r   Úunusual_column_name_charactersr  rT   r   r(  r-  r3   r4   r-   r  r  þ  sÅ   „ Ø€Kà+�w×+Ñ+ØØØØØØØØ$ØØØØØØØØØØØØØØô-Ðð2 Ø×Ñ×7Ñ7ñ$)ó 8ó ð$)ðL ‡_�_ñó ðð, ñó ðð ñó ñr4   r  c                   ól   — e Zd ZdZdZed„ «       Zej                  d„ «       Z	d„ Z
d„ Zd„ Zd„ Zd	„ Zd
„ Zy)ÚReturningGuardsTestz=test that the various 'returning' flags are set appropriatelyTc                 óh   — t        d|t        dt        dd¬«      t        dt        d«      «      «       y )Nrâ   r[   TFr\   r_   r`   ra   rb   s     r-   rd   z!ReturningGuardsTest.define_tablesx  s,   € äØØÜ�4œ¨dÀ%ÔHÜ�6œ6 "›:Ó&õ		
r4   c                 óB   ‡‡— | j                   j                  Šˆˆfd„}|S )Nc           
      óÄ  •— | j                  ‰j                  j                  «      } |r´|stt        t        j
                  d‰j                  j                  › d‰j                  j                  › d�«      5  ‰j                  | |dddi|dddi|d	dd
ig«       d d d «       y ‰j                  | |dddi|dddi|d	dd
ig«      }t        |j                  «       g d¢«       y |s9t        t        j                  «      5  ‰j                  | |dddi«       d d d «       y ‰j                  | |dddi«      }t        |j                  «       dg«       y # 1 sw Y   y xY w# 1 sw Y   y xY w)NzDialect z\+zW with current server capabilities does not support .*RETURNING when executemany is usedr   r_   rf   r   Úd2r   Úd3)©r   )r   )r   r8  )Ú	returningr¾   r[   r   r   ÚStatementErrorr'   rŸ   Údriverri   r	   r,  r   rq   )r  ÚexecutemanyÚid_param_nameÚexpect_successÚresultr)   râ   s        €€r-   Úgoz(ReturningGuardsTest.run_stmt.<locals>.go…  sˆ  ø€ Ø—>‘> !§#¡#§&¡&Ó)ˆDáÙ%ô /Ü×*Ñ*Ø# J×$6Ñ$6×$;Ñ$;Ð#<¸BØ%×-Ñ-×4Ñ4Ð5ð 6?ð@óñ ð #×*Ñ*Ø à!.°°6¸4Ð @Ø!.°°6¸4Ð @Ø!.°°6¸4Ð @ðô÷ð ð  (×/Ñ/Øà*¨A¨v°tÐ<Ø*¨A¨v°tÐ<Ø*¨A¨v°tÐ<ðó�Fô ˜Ÿ
™
›Ò&8Õ9á%ô '¤s§~¡~Ó6ñ Ø"×*Ñ*Ø  =°!°V¸TÐ"Bô÷ð ð
 (×/Ñ/Ø˜}¨a°¸Ð>ó�Fô ˜Ÿ
™
› t fÕ-÷Kð ú÷:ð ús   Á4"E
Ã8EÅ
EÅE)rj   râ   )r+   r)   r@  râ   s    ` @r-   Úrun_stmtzReturningGuardsTest.run_stmt�  s   ù€ à�K‰K�M‰Mˆõ-	.ð^ ˆ	r4   c                 óŽ   — | j                   j                  }|j                  «       } ||dd|j                  j                  «       y )NFr[   )rj   râ   rk   r'   Úinsert_returning©r+   r)   rA  râ   r  s        r-   Útest_insert_singlez&ReturningGuardsTest.test_insert_single¶  s4   € Ø�K‰K�M‰Mˆà�x‰x‹zˆá��u˜d J×$6Ñ$6×$GÑ$GÕHr4   c                 óŽ   — | j                   j                  }|j                  «       } ||dd|j                  j                  «       y )NTr[   )rj   râ   rk   r'   Úinsert_executemany_returningrD  s        r-   Útest_insert_manyz$ReturningGuardsTest.test_insert_many½  s7   € Ø�K‰K�M‰Mˆà�x‰x‹zˆáØ�$˜˜j×0Ñ0×MÑMõ	
r4   c                 óD  — | j                   j                  }|j                  |j                  «       dddœdddœdddœg«       |j	                  «       j                  |j                  j                  t        d«      k(  «      } ||d	d|j                  j                  «       y ©
Nr   rf   rg   r   r6  r   r7  Úb_idF)rj   râ   ri   rk   Úupdaterã   r¾   r[   r   r'   Úupdate_returningrD  s        r-   Útest_update_singlez&ReturningGuardsTest.test_update_singleÆ  ó‡   € Ø�K‰K�M‰Mˆà×ÑØ�H‰H‹Jà $Ñ'Ø $Ñ'Ø $Ñ'ðô	
ð �x‰x‹z×Ñ §¡§¡¬)°FÓ*;Ñ ;Ó<ˆá��u˜f j×&8Ñ&8×&IÑ&IÕJr4   c                 óD  — | j                   j                  }|j                  |j                  «       dddœdddœdddœg«       |j	                  «       j                  |j                  j                  t        d«      k(  «      } ||d	d|j                  j                  «       y ©
Nr   rf   rg   r   r6  r   r7  rK  T)rj   râ   ri   rk   rL  rã   r¾   r[   r   r'   Úupdate_executemany_returningrD  s        r-   Útest_update_manyz$ReturningGuardsTest.test_update_manyÖ  óŠ   € Ø�K‰K�M‰Mˆà×ÑØ�H‰H‹Jà $Ñ'Ø $Ñ'Ø $Ñ'ðô	
ð �x‰x‹z×Ñ §¡§¡¬)°FÓ*;Ñ ;Ó<ˆáØ�$˜ 
× 2Ñ 2× OÑ Oõ	
r4   c                 óD  — | j                   j                  }|j                  |j                  «       dddœdddœdddœg«       |j	                  «       j                  |j                  j                  t        d«      k(  «      } ||d	d|j                  j                  «       y rJ  )rj   râ   ri   rk   r¿   rã   r¾   r[   r   r'   Údelete_returningrD  s        r-   Útest_delete_singlez&ReturningGuardsTest.test_delete_singleè  rO  r4   c                 óD  — | j                   j                  }|j                  |j                  «       dddœdddœdddœg«       |j	                  «       j                  |j                  j                  t        d«      k(  «      } ||d	d|j                  j                  «       y rQ  )rj   râ   ri   rk   r¿   rã   r¾   r[   r   r'   Údelete_executemany_returningrD  s        r-   Útest_delete_manyz$ReturningGuardsTest.test_delete_manyø  rT  r4   N)r/   r0   r1   rS   r2   ry   rd   r   rT   rA  rE  rH  rN  rS  rW  rZ  r3   r4   r-   r2  r2  s  sV   „ ÙGà€Kàñ
ó ð
ð ‡_�_ñ2ó ð2òhIò
òKò 
ò$Kó 
r4   r2  )/r;   Ú r   r   r   r   r	   r
   r   r   r   r   r   Ú
assertionsr   r   r   Ú	provisionr   Úschemar   r   r   r   r   r   r   r   r   r   Úsql.compilerr   Úutilr    ÚTestBaser"   r6   Ú
TablesTestrW   r|   r´   rà   rç   ÚFutureEngineMixinr  r  r2  r3   r4   r-   ú<module>rd     s&  ðó å Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý &Ý .Ý !Ý 8Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý $Ý *ôˆx× Ñ ô ô*�x×(Ñ(ô *ôZ5,�H×'Ñ'ô 5,ôp}7˜×*Ñ*ô }7ô@y4˜h×1Ñ1ô y4ôx�8×$Ñ$ô ôB@A x×'8Ñ'8ô @AôF	Ø×ÑÐ @ô	ôr˜h×/Ñ/ô rôjU
˜(×-Ñ-õ U
r4   