Ë
    V.jo\  ã                   óê  — 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   G d„ d ejB                  «      Z" G d!„ d"ejB                  «      Z# G d#„ d$ejH                  «      Z% G d%„ d&ejB                  «      Z& G d'„ d(ejH                  «      Z' G d)„ d*ejB                  «      Z( G d+„ d,ejB                  «      Z) G d-„ d.ejT                  e)«      Z+ G d/„ d0ejB                  «      Z, G d1„ d2ejH                  «      Z-y)3é    Né   )Útestingé   )Úassert_raises)Úconfig)Úengines)Úeq_)Úfixtures)Úis_not_none)Úis_true)Ú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     úgC:\xampp\htdocs\tradingbinance\backend\.venv\Lib\site-packages\sqlalchemy/testing/suite/test_dialect.pyÚtest_do_pingzPingTest.test_do_ping+   sJ   € Ü�Z‰Z×ÑÔ! TÜÜ—
‘
×"Ñ"×*Ñ*¨4¯?©?×+KÑ+KÓLô÷ "×!Ñ!ús   ŸAA/Á/A8N)Ú__name__Ú
__module__Ú__qualname__Ú__backend__r-   © ó    r,   r!   r!   (   s   „ Ø€Kór3   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_subclasses@   sn   è ø€ Ü×!Ô!ˆAØ—<‘< Õ$Ü×'Ñ'Ð(@À1Ñ(DÕEð "ô �
ˆáØ—)‘)˜A“,ˆCØ�L‰L˜×+Ñ+Ó-Ô.ØŠIô ùs   ‚%B¨ABÂB)Úparamsc              #   ó(   K  — |j                   –— y ­wr#   )Úparam)r*   Úrequests     r,   Úall_subclasseszArgSignatureTest.all_subclassesL   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__r9   Úgetattrr   r   Úvarkwr.   )r*   rG   rA   ÚkÚmethÚinsps         r,   Ú test_all_visit_methods_accept_kwz1ArgSignatureTest.test_all_visit_methods_accept_kwP   sb   € Øˆà—”ˆAØ�|‰|˜HÕ%Ü˜s A“�ä-¨dÓ3�ÜØ—J‘JØ,¨S¯\©\¨N¸!¸A¸3ð ?Ið Iõñ r3   N)
r.   r/   r0   Ú__doc__rB   r   ÚfixtureÚlistrG   rQ   r2   r3   r,   r5   r5   2   s8   „ ñò
ð €W‡_�_™D¡Ó!2Ó3Ô4ñó 5ðór3   r5   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   ©rA   Úmetadatas     r,   Údefine_tableszExceptionTest.define_tablesk   s,   € äØØÜ�4œ¨dÀ%ÔHÜ�6œ6 "›:Ó&õ		
r3   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©rZ   r^   )r   r$   r%   ÚbeginÚexecuteÚtablesrY   Úinsertr   r   ÚIntegrityErrorÚrollback)r*   r+   Útranss      r,   Útest_integrity_errorz"ExceptionTest.test_integrity_errort   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%   rh   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.   r/   r0   rR   Úrun_deletesr1   Úclassmethodrc   r   Ú$duplicate_key_raises_integrity_errorrn   rv   r2   r3   r,   rV   rV   _   sD   „ ñð €Kà€Kàñ
ó ð
ð ×6Ñ6ñó 7ðó ,r3   rV   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ÕHr3   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Ñ@õ	
r3   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×ÑÔ  DØ×/Ñ/Ó1ˆHä�˜+Ô&à×"Ñ"°;Ð"Ô?ä�×(Ñ(Ó*¨KÔ8à�L‰L×.Ñ.Ø—‘×0Ñ0ôô �×(Ñ(Ó*¨HÔ5÷ !× Ñ ú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�   rg   rl   )r*   r†   Ú
all_levelsÚlevelr+   rm   s         r,   Útest_all_levelsz"IsolationLevelTest.test_all_levelsÀ   sã   € Ü×2Ñ2´6Ó:ˆà˜KÑ(ˆ
ä˜“_×/Ñ/°°Ö?ˆEÜ—‘×"Ñ"Ô$¨Ø×&Ñ&°uÐ&Ô=ä�D×,Ñ,Ó.°Ô6àŸ
™
›�Ø—‘Ô ä�D×,Ñ,Ó.°Ô6÷ %ô —‘×"Ñ"Ô$¨ÜØ×,Ñ,Ó.Ø˜9Ñ%ô÷ %Ð$ñ @ß$Ð$ú÷ %Ð$ú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Ö   su   € ð )ˆ
Ü"Ü×Òò Ø×"Ñ"×'Ó'Ø—	‘	Ü ×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é   su   € ñ ¤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Œ[˜DÜ�×(Ñ(Ó*¨IÔ6÷ ð �Y‰YŒ[˜DØ×"Ñ"°7Ð"Ô;Ü�×(Ñ(Ó*¨GÔ4÷ ð �Y‰YŒ[˜DÜ�×(Ñ(Ó*¨IÔ6÷ ˆ[÷ ˆ[ú÷ ˆ[ú÷ ˆ[ús$   Á%DÂ-DÃDÄD
ÄDÄD"N)r.   r/   r0   r1   Ú__requires__rˆ   r‹   r’   r–   r   ÚrequiresÚget_isolation_level_valuesr¡   Ú#dialect_level_isolation_level_paramr¨   Ú independent_readonly_connectionsr¬   r2   r3   r,   r{   r{   —   s—   „ Ø€Kà'€Lò
Iò
ò6ò$ð, ×Ñ×0Ñ0ñ@ó 1ð@ð$ ×Ñ×0Ñ0Ø×Ñ×9Ñ9ñó :ó 1ðð* ×Ñ×6Ñ6ñ7ó 7ñ7r3   r{   c                   ó¨   — e Zd ZdZdZdZed„ «       Zd„ Zd„ Z	d„ Z
d„ Zej                  j                   ej                  d	dd
g«      d„ «       «       Zy)ÚAutocommitIsolationTestrW   )Ú
autocommitTc                 ól   — t        d|t        dt        dd¬«      t        dt        d«      «      d¬«       y )	NÚ
some_tablerZ   TFr[   r^   r_   )Útest_needs_acidr`   ra   s     r,   rc   z%AutocommitIsolationTest.define_tables  s/   € äØØÜ�4œ¨dÀ%ÔHÜ�6œ6 "›:Ó&Ø ö	
r3   c                 ó"  — |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)Nr   z	some datarf   )rg   rh   ri   r¶   rj   rl   r	   Úscalarr   ÚcrZ   Údelete)r*   r+   r´   rm   s       r,   Ú_test_conn_autocommitsz.AutocommitIsolationTest._test_conn_autocommits(  sµ   € Ø—
‘
“ˆØ�‰Ø�K‰K×"Ñ"×)Ñ)Ó+°A¸{Ñ-Kô	
ð 	�‰ÔäØ�K‰Kœ˜tŸ{™{×5Ñ5×7Ñ7×:Ñ:Ó;Ó<Ù‰A ô	
ð 	�‰Œà�Z‰Z�\Ø�L‰L˜Ÿ™×/Ñ/×6Ñ6Ó8Ô9÷ �\‰\ús   Ã4DÄD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_on8  sV   € Ø"ˆØ×#Ñ#°LÐ#ÓAˆØ×#Ñ# B¨Ô-à
�
‰
×(Ñ(¨¯©×)GÑ)GÔHà×#Ñ# D¨%Õ0r3   c                 ó,   — |}| j                  |d«       y )NF)r¼   ©r*   r    r+   s      r,   Útest_autocommit_offz+AutocommitIsolationTest.test_autocommit_offA  s   € Ø"ˆØ×#Ñ# D¨%Õ0r3   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_levelE  sg   € ð #ˆØ×%Ñ%°lÐ%ÓCˆØ×#Ñ# D¨$Ô/à×ÑÜ(×=Ñ=¼fÓEØñð 	ô 	
ð
 	×#Ñ# D¨%Õ0r3   Úuse_dialect_settingFc                 óø  — |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_restoredS  sÝ   € ñ ÙÐ(9¸<Ð'HÔI‰AáÓ ×2Ñ2Ø ,ð 3ó ˆAô ×2Ñ2´6Ó:ˆà˜Ñ#ˆà�Y‰YŒ[˜DØ×'Ñ'¨¨dÔ3÷ ð �Y‰YŒ[˜DØ×"Ñ"°7Ð"Ô;Ø×'Ñ'¨¨eÔ4÷ ð �Y‰YŒ[˜DØ×'Ñ'¨¨dÔ3÷ ˆ[÷ ˆ[ú÷ ˆ[ú÷ ˆ[ús$   ÁCÁ?%C$Â<C0ÃC!Ã$C-Ã0C9N)r.   r/   r0   rw   r­   r1   rx   rc   r¼   r¿   rÂ   rÄ   r   r®   r±   Ú	variationrÇ   r2   r3   r,   r³   r³     ss   „ Ø€Kà"€Là€Kàñ
ó ð
ò:ò 1ò1ò1ð ×Ñ×6Ñ6Ø€W×ÑÐ,¨t°U¨mÓ<ñ4ó =ó 7ñ4r3   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)rb   r   r   r   Úcreater   r$   rg   rh   rj   r¥   r	   r¹   r   rº   r^   Úwherer   )r*   ÚmrÌ   r+   s       r,   Útest_percent_sign_round_tripz)EscapingTest.test_percent_sign_round_tripq  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.   r/   r0   r   rÐ   r2   r3   r,   rÊ   rÊ   p  s   „ Øñó ñr3   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–  sV   € Ü$Ÿ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¤  ó   € ä,ÜÐ(¬&×*<Ñ*<õr3   )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 	Ó	*ñ	ó 
+ð	ð
 �[‰[Œ]˜dØ #§¡× DÑ DÀTÓ JÐÜÐ!¤6×#5Ñ#5Ô6÷ ô 	ˆC�K‰K×+Ñ+Ð-@ÕA÷	 ˆ]ú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©rj   c                 óB   — t        t        | t        j                  «       y r#   rÙ   rÛ   s     r,   rÝ   zRWeCanSetDefaultSchemaWEventsTest.test_schema_change_on_connect.<locals>.on_connect³  rÞ   r3   )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ð	ð
 �[‰[Œ]˜dØ #§¡× DÑ DÀTÓ JÐÜÐ!¤6×#5Ñ#5Ô6÷ ô 	ˆC�K‰K×+Ñ+¬V×-?Ñ-?Õ@÷	 ˆ]ú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Þ   r3   )r   r¦   r   rß   r%   rg   r&   rà   r	   r   rÚ   rl   rÕ   )r*   r§   rÝ   r+   rm   rá   s         r,   Ú'test_schema_change_works_w_transactionszHWeCanSetDefaultSchemaWEventsTest.test_schema_change_works_w_transactions¿  sÈ   € Ü×$Ñ$Ó&ˆä	×	Ñ	˜3 	°$Ô	7ñ	ó 
8ð	ð
 �[‰[Œ]˜dØ—J‘J“LˆEØ #§¡× DÑ DÀTÓ JÐÜÐ!¤6×#5Ñ#5Ô6Ø�N‰NÔà #§¡× DÑ DÀTÓ JÐÜÐ!¤6×#5Ñ#5Ô6÷ ô 	ˆC�K‰K×+Ñ+¬V×-?Ñ-?Õ@÷ ˆ]ús   ÁBDÄDN)	r.   r/   r0   r1   r­   rÖ   râ   ræ   rê   r2   r3   r,   rÒ   rÒ   ‘  s$   „ Ø€Kà2€LòBòBò"AóAr3   rÒ   c                   ó   — e Zd Zy)Ú&FutureWeCanSetDefaultSchemaWEventsTestN)r.   r/   r0   r2   r3   r,   rì   rì   Ô  s   „ ð 	r3   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Ì   rZ   T)r\   r_   F)Únullabler   z	some namezsome other_name)r   r   r   r   rÍ   rh   rj   Úvaluesr   rº   rÎ   r	   r¹   r   ÚfirstÚ_mappingÚin_)r*   rõ   r(   rb   rž   rÌ   ÚstmtÚrows           r,   Ú!test_round_trip_same_named_columnz9DifficultParametersTest.test_round_trip_same_named_columnö  sg  € ð
 ˆäØØÜ�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Ð:Ó;ó
ˆð × Ñ  Ó&×,Ñ,Ó.‰r3   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Í   rh   rj   )r*   rb   r(   r  s       r,   Úmultirow_fixturez(DifficultParametersTest.multirow_fixture  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_escape5  s_   € ð  ˆÜ�d—f‘f—k‘kÓ"×(Ñ(Ø�F‰F�K‰Kœ9 Y°cÔ:Ñ:ó
ˆð ×Ñ  y°#Ð&6Ó7ˆÜˆC��r3   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_expanding@  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�Õr3   N)r.   r/   r0   r1   r   ÚcombinationsÚtough_parametersr   r   Úunusual_column_name_charactersrÿ   rS   r  r  r  r2   r3   r,   rî   rî   Ú  sÅ   „ Ø€Kà+�w×+Ñ+ØØØØØØØØ$ØØØØØØØØØØØØØØô-Ðð2 Ø×Ñ×7Ñ7ñ$/ó 8ó ð$/ðL ‡_�_ñó ðð, ñó ðð ñó ñr3   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Ì   rZ   TFr[   r^   r_   r`   ra   s     r,   rc   z!ReturningGuardsTest.define_tablesT  s,   € äØØÜ�4œ¨dÀ%ÔHÜ�6œ6 "›:Ó&õ		
r3   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^   re   r   Úd2r   Úd3)©r   )r   )r   r#  )Ú	returningrº   rZ   r   r   ÚStatementErrorr&   rž   Údriverrh   r	   r  r   rp   )rý   ÚexecutemanyÚid_param_nameÚexpect_successÚresultr(   rÌ   s        €€r,   Úgoz(ReturningGuardsTest.run_stmt.<locals>.goa  s|  ø€ Ø—>‘> !§#¡#§&¡&Ó)ˆDáÙ%ô /Ü×*Ñ*Ø# J×$6Ñ$6×$;Ñ$;Ð#<¸BØ%×-Ñ-×4Ñ4Ð5ð 6?ð@õð ",×!3Ñ!3Ø à!.°°6¸4Ð @Ø!.°°6¸4Ð @Ø!.°°6¸4Ð @ðó"˜÷ð ð  (×/Ñ/Øà*¨A¨v°tÐ<Ø*¨A¨v°tÐ<Ø*¨A¨v°tÐ<ðó�Fô ˜Ÿ
™
›Ò&8Õ9á%ô '¤s§~¡~Õ6Ø"×*Ñ*Ø  =°!°V¸TÐ"Bô÷ 7Ð6ð
 (×/Ñ/Ø˜}¨a°¸Ð>ó�Fô ˜Ÿ
™
› t fÕ-÷Kð ú÷: 7Ð6ús   Á4"E
Ã8EÅ
EÅE)ri   rÌ   )r*   r(   r+  rÌ   s    ` @r,   Úrun_stmtzReturningGuardsTest.run_stmt]  s   ù€ à�K‰K�M‰Mˆõ-	.ð^ ˆ	r3   c                 óŽ   — | j                   j                  }|j                  «       } ||dd|j                  j                  «       y )NFrZ   )ri   rÌ   rj   r&   Úinsert_returning©r*   r(   r,  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ÕHr3   c                 óŽ   — | j                   j                  }|j                  «       } ||dd|j                  j                  «       y )NTrZ   )ri   rÌ   rj   r&   Úinsert_executemany_returningr/  s        r,   Útest_insert_manyz$ReturningGuardsTest.test_insert_many™  s7   € Ø�K‰K�M‰Mˆà�x‰x‹zˆáØ�$˜˜j×0Ñ0×MÑMõ	
r3   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   re   rf   r   r!  r   r"  Úb_idF)ri   rÌ   rh   rj   ÚupdaterÎ   rº   rZ   r   r&   Úupdate_returningr/  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ÕJr3   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   re   rf   r   r!  r   r"  r6  T)ri   rÌ   rh   rj   r7  rÎ   rº   rZ   r   r&   Úupdate_executemany_returningr/  s        r,   Útest_update_manyz$ReturningGuardsTest.test_update_many²  óŠ   € Ø�K‰K�M‰Mˆà×ÑØ�H‰H‹Jà $Ñ'Ø $Ñ'Ø $Ñ'ðô	
ð �x‰x‹z×Ñ §¡§¡¬)°FÓ*;Ñ ;Ó<ˆáØ�$˜ 
× 2Ñ 2× OÑ Oõ	
r3   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 r5  )ri   rÌ   rh   rj   r»   rÎ   rº   rZ   r   r&   Údelete_returningr/  s        r,   Útest_delete_singlez&ReturningGuardsTest.test_delete_singleÄ  r:  r3   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 r<  )ri   rÌ   rh   rj   r»   rÎ   rº   rZ   r   r&   Údelete_executemany_returningr/  s        r,   Útest_delete_manyz$ReturningGuardsTest.test_delete_manyÔ  r?  r3   N)r.   r/   r0   rR   r1   rx   rc   r   rS   r,  r0  r3  r9  r>  rB  rE  r2   r3   r,   r  r  O  sV   „ ÙGà€Kàñ
ó ð
ð ‡_�_ñ2ó ð2òhIò
òKò 
ò$Kó 
r3   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!   r5   Ú
TablesTestrV   r{   r³   rÊ   rÒ   ÚFutureEngineMixinrì   rî   r  r2   r3   r,   Ú<module>rO     s#  ðó å Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý &Ý .Ý !Ý 8Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý $Ý *ôˆx× Ñ ô ô*�x×(Ñ(ô *ôZ5,�H×'Ñ'ô 5,ôp}7˜×*Ñ*ô }7ô@V4˜h×1Ñ1ô V4ôr�8×$Ñ$ô ôB@A x×'8Ñ'8ô @AôF	Ø×ÑÐ @ô	ôr˜h×/Ñ/ô rôjU
˜(×-Ñ-õ U
r3   