Ë
    ðmxiK5  ã                  óD  — d dl m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	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 ej*                  rddlmZ ddlmZ ddlmZ  G d„ d«      Z e«       Zed„ «       Zed„ «       Zed„ «       Z ed„ «       Z!d'd„Z" G d„ d«      Z#d(d„Z$ejJ                  	 	 d)	 	 	 	 	 	 	 d*d„«       Z&ejJ                  	 	 d)	 	 	 	 	 	 	 d+d„«       Z&	 	 d(dd œ	 	 	 	 	 	 	 d,d!„Z&d'd"„Z' G d#„ d$«      Z( G d%„ d&«      Z)y)-é    )ÚannotationsN)ÚAny)ÚDict)ÚOptional)ÚUnioné   )Úconfig)Ú	decorator)Ú
gc_collecté   )Úevent)Úpool)Ú
await_only)ÚLiteral)ÚEngine)ÚURL)ÚAsyncEnginec                  óx   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zy)ÚConnectionKillerc                ó�   — t        j                  «       | _        t        j                  t
        «      | _        t        «       | _        y ©N)ÚweakrefÚWeakKeyDictionaryÚ
proxy_refsÚcollectionsÚdefaultdictÚsetÚtesting_enginesÚdbapi_connections©Úselfs    úQ/home/htdocs/ttos/venv/lib/python3.12/site-packages/sqlalchemy/testing/engines.pyÚ__init__zConnectionKiller.__init__&   s/   € Ü!×3Ñ3Ó5ˆŒÜ*×6Ñ6´sÓ;ˆÔÜ!$£ˆÕó    c                ó  — t        j                  |d| j                  «       t        j                  |d| j                  «       t        j                  |d| j                  «       t        j                  |d| j                  «       y )NÚcheckoutÚcheckinÚcloseÚclose_detached)r   ÚlistenÚ	_add_connÚ_remove_conn)r!   r   s     r"   Úadd_poolzConnectionKiller.add_pool+   sY   € Ü�‰�T˜: t§~¡~Ô6Ü�‰�T˜9 d×&7Ñ&7Ô8Ü�‰�T˜7 D×$5Ñ$5Ô6Ü�‰�TÐ+¨T×->Ñ->Õ?r$   c                óX   — | j                   j                  |«       d| j                  |<   y )NT)r   Úaddr   )r!   Ú	dbapi_conÚ
con_recordÚ	con_proxys       r"   r+   zConnectionKiller._add_conn3   s$   € Ø×Ñ×"Ñ" 9Ô-Ø%)ˆ�‰˜	Ò"r$   c                ó:   — | j                   j                  |«       y r   )r   Údiscard)r!   Ú
dbapi_connÚargs      r"   r,   zConnectionKiller._remove_conn7   s   € Ø×Ñ×&Ñ& zÕ2r$   c                ó‚   — | j                  |j                  «       |dv sJ ‚| j                  |   j                  |«       y )N)ÚclassÚglobalÚfunctionÚfixture)r-   r   r   r/   )r!   ÚengineÚscopes      r"   Ú
add_enginezConnectionKiller.add_engine:   s:   € Ø�‰�f—k‘kÔ"àÐBÑBÐBÐBØ×Ñ˜UÑ#×'Ñ'¨Õ/r$   c                óp   — 	  |«        y # t         $ r"}t        j                  d|z  «       Y d }~y d }~ww xY w)Nz5testing_reaper couldn't rollback/close connection: %s©Ú	ExceptionÚwarningsÚwarn©r!   ÚfnÚes      r"   Ú_safezConnectionKiller._safe@   s5   € ð	Ù�DøÜò 	Ü�M‰MØGÈ!ÑK÷ñ ûð	úó   ‚
 Š	5“0°5c                óŽ   — t        | j                  «      D ]-  }|€Œ|j                  sŒ| j                  |j                  «       Œ/ y r   )Úlistr   Úis_validrG   Úrollback©r!   Úrecs     r"   Úrollback_allzConnectionKiller.rollback_allH   s5   € Ü˜Ÿ™Ó(ò 	)ˆCØ‰ 3§<£<Ø—
‘
˜3Ÿ<™<Õ(ñ	)r$   c                ód  — t        | j                  «      D ]R  }|€Œ|j                  sŒ| j                  j	                  |j
                  «       | j                  |j                  «       ŒT | j                  D ]  }| j                  |j                  «       Œ | j                  j                  «        y r   )
rJ   r   rK   r   r4   Údbapi_connectionrG   Ú_checkinrL   Úclear)r!   rN   Úcons      r"   Úcheckin_allzConnectionKiller.checkin_allM   sŠ   € ô ˜Ÿ™Ó(ò 	)ˆCØ‰ 3§<£<Ø×&Ñ&×.Ñ.¨s×/CÑ/CÔDØ—
‘
˜3Ÿ<™<Õ(ð	)ð ×)Ñ)ò 	%ˆCØ�J‰J�s—|‘|Õ$ð	%à×Ñ×$Ñ$Õ&r$   c                ó$   — | j                  «        y r   )rU   r    s    r"   Ú	close_allzConnectionKiller.close_all\   s   € Ø×ÑÕr$   c                ó~   — t         j                  sy ddlm} |j	                  |j
                  j                  |«       y ©Nr   ©Ú	provision)r	   Úbootstrapped_as_sqlalchemyÚ r[   Úprepare_for_drop_tablesr<   Úurl)r!   Ú
connectionr[   s      r"   r^   z(ConnectionKiller.prepare_for_drop_tables_   s-   € ä×0Ò0Øåà×)Ñ)¨*×*;Ñ*;×*?Ñ*?ÀÕLr$   c                ó¤  — | j                   |   }t        |«      D ]£  }t        | j                  «      D ]S  }|€Œ|j                  sŒ|j                  €Œ |j                  |j
                  u sŒ9| j                  |j                  «       ŒU t        |d«      rt        |j                  «       «       Œ”|j                  «        Œ¥ |j                  «        y ©NÚsync_engine)r   rJ   r   rK   Ú_poolr   rG   rR   Úhasattrr   ÚdisposerS   )r!   r=   ÚengrN   Ú	proxy_refs        r"   Ú_drop_testing_enginesz&ConnectionKiller._drop_testing_enginesh   s¥   € Ø×"Ñ" 5Ñ)ˆÜ˜“9ò 	ˆCÜ! $§/¡/Ó2ò 7�	ØÑ(¨Y×-?Ó-?à!Ÿ™Ñ3Ø%ŸO™O¨s¯x©xÒ7àŸ
™
 9×#5Ñ#5Õ6ð7ô �s˜MÔ*Ü˜3Ÿ;™;›=Õ)à—‘•ð	ð 	�	‰	�r$   c                ó®   — | j                   |   }t        |«      D ]8  }t        |d«      rt        |j	                  «       «       Œ)|j	                  «        Œ: y rb   )r   rJ   re   r   rf   )r!   r=   rg   rN   s       r"   Ú_dispose_testing_enginesz)ConnectionKiller._dispose_testing_enginesz   sF   € Ø×"Ñ" 5Ñ)ˆÜ˜“9ò 	ˆCÜ�s˜MÔ*Ü˜3Ÿ;™;›=Õ)à—‘•ñ		r$   c                ó&   — | j                  d«       y )Nr:   )ri   r    s    r"   Ú
after_testzConnectionKiller.after_test‚   s   € Ø×"Ñ" :Õ.r$   c                ó2  — t         j                  sy |j                  j                  ry | j	                  «        ddlm} t         j                  j                  «       5 }|j                  |j                  j                  |«       d d d «       y # 1 sw Y   y xY wrY   )r	   r\   Ú	__class__Ú"__leave_connections_for_teardown__rU   r]   r[   ÚdbÚconnectr^   r<   r_   )r!   Útestr[   Úconns       r"   Úafter_test_outside_fixturesz,ConnectionKiller.after_test_outside_fixtures…   sr   € ä×0Ò0Øà�>‰>×<Ò<Øà×ÑÔõ
 	 ä�Y‰Y×ÑÓ ð 	E DØ×-Ñ-¨d¯k©k¯o©o¸tÔD÷	E÷ 	Eñ 	Eús   Á'BÂBc                óh   — | j                  «        | j                  d«       | j                  d«       y )Nr:   r8   )rU   ri   r    s    r"   Ústop_test_class_inside_fixturesz0ConnectionKiller.stop_test_class_inside_fixtures—   s*   € Ø×ÑÔØ×"Ñ" :Ô.Ø×"Ñ" 7Õ+r$   c                ó¦  — t         j                  j                  rzt        «        t         j                  j                  rVt	        t         j                  j                  «      }t         j                  j                  j                  «        	 J d|z  «       ‚t        j                  r-t        j                  j                  r| j                  d«       y y y )Nz/%d connection recs not cleared after test suiter9   )
r   ÚbaseÚ_strong_ref_connection_recordsr   ÚlenrS   r	   ÚoptionsÚlow_connectionsrk   )r!   Úlns     r"   Ú stop_test_class_outside_fixturesz1ConnectionKiller.stop_test_class_outside_fixturesœ   s‘   € ô �9‰9×3Ò3ÜŒLä�y‰y×7Ò7ÜœŸ™×AÑAÓB�Ü—	‘	×8Ñ8×>Ñ>Ô@àðLàDÈÑKóLØä�>Š>œfŸn™n×<Ò<ð ×)Ñ)¨(Õ3ð =ˆ>r$   c                óh   — | j                  «        | j                  D ]  }| j                  |«       Œ y r   )rU   r   ri   )r!   r=   s     r"   Úfinal_cleanupzConnectionKiller.final_cleanup­   s1   € Ø×ÑÔØ×)Ñ)ò 	.ˆEØ×&Ñ& uÕ-ñ	.r$   c                óB   — | j                   D ]  }|j                  sŒJ ‚ y r   )r   rK   rM   s     r"   Úassert_all_closedz"ConnectionKiller.assert_all_closed²   s!   € Ø—?‘?ò 	ˆCØ�|‹|Ø�uñ	r$   N)Ú__name__Ú
__module__Ú__qualname__r#   r-   r+   r,   r>   rG   rO   rU   rW   r^   ri   rk   rm   ru   rw   r   r�   rƒ   © r$   r"   r   r   %   s_   „ ò'ò
@ò*ò3ò0òò)ò
'òòMòò$ò/òEò$,ò
4ò".ó
r$   r   c                óp   — 	  | |i |¤Ž t         j                  «        y # t         j                  «        w xY wr   )Útesting_reaperrƒ   ©rE   ÚargsÚkws      r"   Úassert_conns_closedr�   »   s+   € ð+Ù
ˆDˆ�BŠä×(Ñ(Õ*øŒ×(Ñ(Õ*úó   ‚ Ÿ5c                óp   — 	  | |i |¤Ž t         j                  «        y# t         j                  «        w xY w)zBDecorator that rolls back all open connections after fn execution.N)r‰   rO   rŠ   s      r"   Úrollback_open_connectionsr�   Ã   s+   € ð&Ù
ˆDˆ�BŠä×#Ñ#Õ%øŒ×#Ñ#Õ%úrŽ   c                ó<   — t         j                  «         | |i |¤Ž y)z:Decorator that closes all connections before fn execution.N©r‰   rU   rŠ   s      r"   Úclose_firstr“   Í   s   € ô ×ÑÔ Ùˆ€O�ƒOr$   c                óp   — 	  | |i |¤Ž t         j                  «        y# t         j                  «        w xY w)z9Decorator that closes all connections after fn execution.Nr’   rŠ   s      r"   Úclose_open_connectionsr•   Õ   s+   € ð%Ù
ˆDˆ�BŠä×"Ñ"Õ$øŒ×"Ñ"Õ$úrŽ   c              #  óÎ   K  — dd l m} |j                  D ]L  }| r|| v rŒ
t        ||d «      }|s"t        t	        d|z  «      j                  |«      }|j                  «       –— ŒN y ­w)Nr   zsqlalchemy.dialects.%s)Úsqlalchemy.dialectsÚdialectsÚ__all__ÚgetattrÚ
__import__Údialect)ÚexcludeÚdÚnameÚmods       r"   Úall_dialectsr¡   Þ   sg   è ø€ Ý#à—	‘	ò 	ˆá�t˜w‘ØÜ�a˜˜tÓ$ˆÙÜÜÐ3°dÑ:Ó;×DÑDÀdóˆCð �k‰k‹mÓñ	ùs   ‚A#A%c                  ó2   — e Zd Zd„ Zd„ Zd„ Zd„ Zdd„Zd„ Zy)	ÚReconnectFixturec                ó.   — || _         g | _        d| _        y ©NF)ÚdbapiÚconnectionsÚ
is_stopped)r!   r¦   s     r"   r#   zReconnectFixture.__init__î   s   € ØˆŒ
ØˆÔØˆ�r$   c                ó.   — t        | j                  |«      S r   )rš   r¦   ©r!   Úkeys     r"   Ú__getattr__zReconnectFixture.__getattr__ó   s   € Ü�t—z‘z 3Ó'Ð'r$   c                ó  —  | j                   j                  |i |¤Ž}| j                  rC| j                  |j                  «       |j                  «       }|j                  d«       J d«       ‚| j                  j                  |«       |S )Nzselect 1z%simulated connect failure didn't work)	r¦   rr   r¨   rG   r(   ÚcursorÚexecuter§   Úappend)r!   r‹   Úkwargsrt   Úcurss        r"   rr   zReconnectFixture.connectö   sq   € Ø!ˆt�z‰z×!Ñ! 4Ð2¨6Ñ2ˆØ�?Š?Ø�J‰J�t—z‘zÔ"Ø—;‘;“=ˆDð �L‰L˜Ô$ØAÐAÓA�5à×Ñ×#Ñ# DÔ)ØˆKr$   c                óp   — 	  |«        y # t         $ r"}t        j                  d|z  «       Y d }~y d }~ww xY w)Nz.ReconnectFixture couldn't close connection: %sr@   rD   s      r"   rG   zReconnectFixture._safe  s4   € ð	PÙ�DøÜò 	PÜ�M‰MÐJÈQÑN×OÑOûð	PúrH   c                óŠ   — || _         t        | j                  «      D ]  }| j                  |j                  «       Œ g | _        y r   )r¨   rJ   r§   rG   r(   )r!   ÚstopÚcs      r"   ÚshutdownzReconnectFixture.shutdown	  s=   € ð ˆŒÜ�d×&Ñ&Ó'ò 	 ˆAØ�J‰J�q—w‘wÕð	 àˆÕr$   c                ó   — d| _         y r¥   )r¨   r    s    r"   ÚrestartzReconnectFixture.restart  s	   € Øˆ�r$   N)F)	r„   r…   r†   r#   r¬   rr   rG   r·   r¹   r‡   r$   r"   r£   r£   í   s!   „ ò ò
(òòPó	ó r$   r£   c                ó�  ‡‡— | xs t         j                  j                  } t         j                  j                  j                  }|si }t        |«      |d<   t        | |«      Š‰j                  Šˆˆfd„}‰j                  j                  j                  ‰_	        ‰j                  j                  j                  ‰_        |‰_        ‰S )NÚmodulec                 ó’   •— ‰j                   j                  j                  «        d‰j                   j                  _         ‰ «        y r¥   )rœ   r¦   r·   r¨   )Ú_disposer<   s   €€r"   rf   z$reconnecting_engine.<locals>.dispose!  s0   ø€ Ø�‰×Ñ×%Ñ%Ô'Ø*/ˆ�‰×ÑÔ'Ù�
r$   )r	   rq   r_   rœ   r¦   r£   Útesting_enginerf   r·   Útest_shutdownr¹   Útest_restart)r_   r|   r¦   rf   r½   r<   s       @@r"   Úreconnecting_enginerÁ     s™   ù€ Ø
Ò
”—‘—‘€CÜ�I‰I×Ñ×#Ñ#€EÙØˆÜ(¨Ó/€GˆHÑÜ˜C Ó)€FØ�~‰~€Hõð
 "Ÿ>™>×/Ñ/×8Ñ8€FÔØ Ÿ.™.×.Ñ.×6Ñ6€FÔØ€F„NØ€Mr$   c                ó   — y r   r‡   ©r_   r|   Úasyncios      r"   r¾   r¾   ,  s   € ð r$   c                ó   — y r   r‡   rÃ   s      r"   r¾   r¾   5  s   € ð r$   F)rÄ   c          
     óˆ  — |rddl m} nddlm} ddlm}  || r| nt        j                  j                  «      } |si }i }t        j                  |fD ]M  }|sŒ|j                  |j                  «       D ��ci c]  \  }}|dvr|j                  d«      s||“Œ c}}«       ŒO  || fi |¤Ž}	t        j                  r/t        j                  j                  rt        j!                  d«       |j#                  dd	«      }
|
dk(  r|rd
|	j$                  _        nd
|	_        ddlm} |j-                  |	j                  |	||
«       |j#                  dd
«      }|rt        j/                  |	|
«       t1        |	j2                  t2        j4                  «      r.d|vr*d|vr&d|vr"d|	j2                  _        d|	j2                  _        |	S c c}}w )Nr   )Úcreate_async_engine)Úcreate_engine)Úmake_url)r=   Ú
use_reaperÚsqlite_r9   r=   r:   Tr   rZ   rÊ   r   Úpool_timeoutÚmax_overflow)Úsqlalchemy.ext.asynciorÇ   Ú
sqlalchemyrÈ   Úsqlalchemy.engine.urlrÉ   r	   rq   r_   Údb_optsÚupdateÚitemsÚ
startswithr|   r}   r‰   rk   Úgetrc   Ú_has_eventsr]   r[   Úpost_configure_testing_enginer>   Ú
isinstancer   Ú	QueuePoolÚ_timeoutÚ_max_overflow)r_   r|   rÄ   rÈ   rÉ   Úuse_optionsÚopt_dictÚoptÚvaluer<   r=   r[   rÊ   s                r"   r¾   r¾   >  sš  € ñ ö	
õ 	-Ý.á
™#‘3¤6§9¡9§=¡=Ó
1€CáØˆà€Kä—^‘^ WÐ-ò 

ˆÙØØ×Ñð #+§.¡.Ó"2÷á�C˜ØÐ5Ñ5ØŸ™ yÔ1ð �U‘
óõ	
ð

ñ ˜3Ñ. +Ñ.€Fä‡~‚~œ&Ÿ.™.×8Ò8ô 	×/Ñ/°Ô9à�K‰K˜ Ó,€EØ�ÒÙØ-1ˆF×ÑÕ*ð ð Ôõ à×+Ñ+¨F¯J©J¸ÀÈÔOð
 —‘˜\¨4Ó0€JÙÜ×!Ñ! &¨%Ô0ô 	�6—;‘;¤§¡Ô/Ø˜'Ñ!Ø 'Ñ)Ø 'Ñ)à ˆ�‰ÔØ$%ˆ�‰Ô!à€MùóYs   Á6"F>c                óÎ   ‡‡— ddl m} | st        j                  j                  } g Šˆfd„}ˆfd„}ˆfd„} || dz   |«      Št        ‰d«      rJ ‚‰‰_        |‰_        |‰_        ‰S )a'  Provides a mocking engine based on the current testing.db.

    This is normally used to test DDL generation flow as emitted
    by an Engine.

    It should not be used in other cases, as assert_compile() and
    assert_sql_execution() are much better choices with fewer
    moving parts.

    r   )Úcreate_mock_enginec                ó(   •— ‰j                  | «       y r   )r°   )ÚsqlÚarŒ   Úbuffers      €r"   Úexecutorzmock_engine.<locals>.executorš  s   ø€ Ø�‰�cÕr$   c           
     ó‚   •— ‰D �cg c]"  }t        j                  ddt        |«      «      ‘Œ$ }}|| k(  sJ |«       ‚y c c}w )Nz[\n\t]r]   )ÚreÚsubÚstr)ÚstmtsÚsÚrecvrå   s      €r"   Ú
assert_sqlzmock_engine.<locals>.assert_sql�  s=   ø€ Ø7=Ö>°!”—‘�y "¤c¨!£fÕ-Ð>ˆÐ>Ø�uŠ}Ð"˜dÓ"‰}ùò ?s   †'<c                 óf   •‡ — ‰j                   Š dj                  ˆ fd„‰j                  D «       «      S )Nú
c              3  óT   •K  — | ]  }t        |j                  ‰¬ «      «      –— Œ! y­w))rœ   N)rê   Úcompile)Ú.0rì   rž   s     €r"   ú	<genexpr>z1mock_engine.<locals>.print_sql.<locals>.<genexpr>£  s!   øè ø€ ÒH°qœ˜QŸY™Y¨q˜YÓ1×2ÑHùs   ƒ%()rœ   ÚjoinÚmock)rž   r<   s   @€r"   Ú	print_sqlzmock_engine.<locals>.print_sql¡  s%   ù€ Ø�N‰NˆØ�y‰yÓH¸F¿K¹KÔHÓHÐHr$   z://rö   )	rÏ   rá   r	   rq   rŸ   re   rö   rî   r÷   )Údialect_namerá   ræ   rî   r÷   rå   r<   s        @@r"   Úmock_enginerù   ‡  sl   ù€ õ .áÜ—y‘y—~‘~ˆà€Fôô#ôIñ   ¨uÑ 4°hÓ?€FÜ�v˜vÔ&Ð&Ð&Ø€F„KØ"€FÔØ €FÔØ€Mr$   c                  ó0   — e Zd ZdZd„ Zdd„Zd„ Zd„ Zd„ Zy)	ÚDBAPIProxyCursorzuProxy a DBAPI cursor.

    Tests can provide subclasses of this to intercept
    DBAPI-level cursor operations.

    c                óN   — || _         || _         |j                  |i |¤Ž| _        y r   )r<   r`   r®   )r!   r<   rt   r‹   r±   s        r"   r#   zDBAPIProxyCursor.__init__µ  s'   € ØˆŒØˆŒØ!�d—k‘k 4Ð2¨6Ñ2ˆ�r$   Nc                ó|   — |r | j                   j                  ||fi |¤ŽS  | j                   j                  |fi |¤ŽS r   )r®   r¯   )r!   ÚstmtÚ
parametersrŒ   s       r"   r¯   zDBAPIProxyCursor.executeº  s?   € ÙØ&�4—;‘;×&Ñ& t¨ZÑ>¸2Ñ>Ð>à&�4—;‘;×&Ñ& tÑ2¨rÑ2Ð2r$   c                ó>   —  | j                   j                  ||fi |¤ŽS r   )r®   Úexecutemany)r!   rþ   ÚparamsrŒ   s       r"   r  zDBAPIProxyCursor.executemanyÀ  s    € Ø&ˆt�{‰{×&Ñ& t¨VÑ:°rÑ:Ð:r$   c                ó,   — t        | j                  «      S r   )Úiterr®   r    s    r"   Ú__iter__zDBAPIProxyCursor.__iter__Ã  s   € Ü�D—K‘KÓ Ð r$   c                ó.   — t        | j                  |«      S r   )rš   r®   rª   s     r"   r¬   zDBAPIProxyCursor.__getattr__Æ  s   € Ü�t—{‘{ CÓ(Ð(r$   r   )	r„   r…   r†   Ú__doc__r#   r¯   r  r  r¬   r‡   r$   r"   rû   rû   ­  s    „ ñò3ó
3ò;ò!ó)r$   rû   c                  ó(   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zy)ÚDBAPIProxyConnectionz}Proxy a DBAPI connection.

    Tests can provide subclasses of this to intercept
    DBAPI-level connection operations.

    c                ó.   — || _         || _        || _        y r   )rt   r<   Ú
cursor_cls)r!   r<   rt   r  s       r"   r#   zDBAPIProxyConnection.__init__Ò  s   € ØˆŒ	ØˆŒØ$ˆ�r$   c                óX   —  | j                   | j                  | j                  g|¢­i |¤ŽS r   )r  r<   rt   )r!   r‹   r±   s      r"   r®   zDBAPIProxyConnection.cursor×  s'   € Øˆt�‰˜tŸ{™{¨D¯I©IÐG¸ÒGÀÑGÐGr$   c                ó8   — | j                   j                  «        y r   )rt   r(   r    s    r"   r(   zDBAPIProxyConnection.closeÚ  s   € Ø�	‰	�‰Õr$   c                ó.   — t        | j                  |«      S r   )rš   rt   rª   s     r"   r¬   z DBAPIProxyConnection.__getattr__Ý  s   € Ü�t—y‘y #Ó&Ð&r$   N)r„   r…   r†   r  r#   r®   r(   r¬   r‡   r$   r"   r	  r	  Ê  s   „ ñò%ò
Hòó'r$   r	  r   )NN)..)r_   úOptional[URL]r|   úOptional[Dict[str, Any]]rÄ   zLiteral[False]Úreturnr   )r_   r  r|   r  rÄ   zLiteral[True]r  r   )r_   r  r|   r  rÄ   Úboolr  zUnion[Engine, AsyncEngine])*Ú
__future__r   r   rè   Útypingr   r   r   r   rB   r   r]   r	   Úutilr
   r   r   r   r   Úutil.typingr   ÚTYPE_CHECKINGr<   r   Ú
engine.urlr   Úext.asyncior   r   r‰   r�   r�   r“   r•   r¡   r£   rÁ   Úoverloadr¾   rù   rû   r	  r‡   r$   r"   ú<module>r     sª  ðõ #ã Û 	Û Ý Ý Ý Ý Û Û å Ý Ý Ý Ý Ý Ý !ð 
×ÒÝÝ Ý)÷Pñ Pñf "Ó#€ð ñ+ó ð+ð ñ&ó ð&ð ñó ðð ñ%ó ð%ó÷( ñ ( óVð( ‡�àØ(+ðØ	ðà%ðð ð	ð
 òó ðð ‡�àØ(+ðØ	ðà%ðð ð	ð
 òó ðð Ø(,ðFð ñ	FØ	ðFà%ðFð ð	Fð
  óFóR#÷L)ñ )÷:'ò 'r$   