
    `?i|                       S r SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJ	r	  SSKJ
r
  S	S
KJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  \	(       a0  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJ r   SSK!J"r"   " S S\5      r# " S S \\#5      r$ " S! S"\\5      r% " S# S$\%5      r& " S% S&\5      r' " S' S(\5      r(\(r)g))*a  
.. dialect:: mysql+asyncmy
    :name: asyncmy
    :dbapi: asyncmy
    :connectstring: mysql+asyncmy://user:password@host:port/dbname[?key=value&key=value...]
    :url: https://github.com/long2ice/asyncmy

Using a special asyncio mediation layer, the asyncmy dialect is usable
as the backend for the :ref:`SQLAlchemy asyncio <asyncio_toplevel>`
extension package.

This dialect should normally be used only with the
:func:`_asyncio.create_async_engine` engine creation function::

    from sqlalchemy.ext.asyncio import create_async_engine

    engine = create_async_engine(
        "mysql+asyncmy://user:pass@hostname/dbname?charset=utf8mb4"
    )

    )annotations)
ModuleType)Any)NoReturn)Optional)TYPE_CHECKING)Union   )MySQLDialect_pymysql   )pool)util)AsyncAdapt_dbapi_connection)AsyncAdapt_dbapi_cursor)AsyncAdapt_dbapi_module)AsyncAdapt_dbapi_ss_cursor)AsyncAdapt_terminate)await_fallback)
await_only)AsyncIODBAPIConnection)AsyncIODBAPICursor)ConnectArgsType)DBAPIConnection)DBAPICursor)DBAPIModule)PoolProxiedConnection)URLc                      \ rS rSrSrSrg)AsyncAdapt_asyncmy_cursor<    N)__name__
__module____qualname____firstlineno__	__slots____static_attributes__r!       e/var/www/html/livechat/backend/venv/lib/python3.13/site-packages/sqlalchemy/dialects/mysql/asyncmy.pyr   r   <   s    Ir(   r   c                  *    \ rS rSrSr    SS jrSrg)AsyncAdapt_asyncmy_ss_cursor@   r!   c                    UR                  U R                  R                  R                  R                  R
                  5      $ N)cursor_adapt_connectiondbapiasyncmycursorsSSCursorself
connections     r)   _make_new_cursor-AsyncAdapt_asyncmy_ss_cursor._make_new_cursorE   s8       ""((0088AA
 	
r(   N)r7   r   returnr   )r"   r#   r$   r%   r&   r8   r'   r!   r(   r)   r+   r+   @   s     I
0
	
r(   r+   c                  z    \ rS rSrSr\r\rSS jr	SS jr
SS jrSS jrSS jrSS jrSS	 jrSS
 jrSS jrSrg)AsyncAdapt_asyncmy_connectionM   r!   c                f    [        U[        5      (       a  U R                  R                  S5      eUe)Nz7network operation failed due to asyncmy attribute error)
isinstanceAttributeErrorr1   InternalErrorr6   errors     r)   _handle_exception/AsyncAdapt_asyncmy_connection._handle_exceptionU   s0    e^,,****I  r(   c                R    U(       a   eU R                  U R                  5       5      $ r.   )await__do_ping)r6   	reconnects     r)   ping"AsyncAdapt_asyncmy_connection.ping]   s    }{{4==?++r(   c                .  #     U R                    IS h  vN   U R                  R                  S5      I S h  vN   S S S 5      IS h  vN   g  N8 N N	! , IS h  vN  (       d  f       g = f! [         a  nU R	                  U5         S nAg S nAff = f7f)NF)_execute_mutex_connectionrJ   	ExceptionrD   rB   s     r)   rH   &AsyncAdapt_asyncmy_connection._do_pinga   sl     	****&&++E222 +**2 +*** 	*""5))	*s   BA- AA- AAAA- AA- BA- AA- A*AA*&A- )B*A- -
B7BBBBc                6    U R                   R                  5       $ r.   )rN   character_set_namer6   s    r)   rR   0AsyncAdapt_asyncmy_connection.character_set_nameh   s    2244r(   c                X    U R                  U R                  R                  U5      5        g r.   )rG   rN   
autocommit)r6   values     r)   rV   (AsyncAdapt_asyncmy_connection.autocommitk   s    D$$//67r(   c                6    U R                   R                  5       $ r.   )rN   get_autocommitrS   s    r)   rZ   ,AsyncAdapt_asyncmy_connection.get_autocommitn   s    ..00r(   c                V    U R                  U R                  R                  5       5        g r.   )rG   rN   ensure_closedrS   s    r)   close#AsyncAdapt_asyncmy_connection.closeq   s    D$$2245r(   c                T   #    U R                   R                  5       I S h  vN   g  N7fr.   )rN   r]   rS   s    r)   _terminate_graceful_close7AsyncAdapt_asyncmy_connection._terminate_graceful_closet   s     ,,...s   (&(c                8    U R                   R                  5         g r.   )rN   r^   rS   s    r)   _terminate_force_close4AsyncAdapt_asyncmy_connection._terminate_force_closew   s     r(   N)rC   rO   r:   r   )rI   boolr:   Noner:   rg   )r:   zOptional[str])rW   r   r:   rg   )r:   rf   )r"   r#   r$   r%   r&   r   _cursor_clsr+   _ss_cursor_clsrD   rJ   rH   rR   rV   rZ   r^   ra   rd   r'   r!   r(   r)   r<   r<   M   s@     I+K1N,*5816/!r(   r<   c                  (    \ rS rSrSr\" \5      rSrg)%AsyncAdaptFallback_asyncmy_connection|   r!   N)	r"   r#   r$   r%   r&   staticmethodr   rG   r'   r!   r(   r)   rl   rl   |   s    I.)Fr(   rl   c                      \ rS rSrSS jrSS jr\R                  " S5      r\R                  " S5      r	\R                  " S5      r
\R                  " S5      r\R                  " S5      r\" \5      rSS	 jrS
rg)AsyncAdapt_asyncmy_dbapi   c                >    Xl         SU l        U R                  5         g )Nformat)r2   
paramstyle_init_dbapi_attributes)r6   r2   s     r)   __init__!AsyncAdapt_asyncmy_dbapi.__init__   s    "##%r(   c           	     j    S H-  n[        X[        U R                  R                  U5      5        M/     g )N)WarningErrorInterfaceError	DataErrorDatabaseErrorOperationalErrorr{   IntegrityErrorProgrammingErrorrA   NotSupportedError)setattrgetattrr2   errors)r6   names     r)   ru   /AsyncAdapt_asyncmy_dbapi._init_dbapi_attributes   s+    
D D(;(;T BC
r(   STRINGNUMBERBINARYDATETIME	TIMESTAMPc           
        UR                  SS5      nUR                  SU R                  R                  5      n[        R                  " U5      (       a  [        U [        U" U0 UD65      5      $ [        U [        U" U0 UD65      5      $ )Nasync_fallbackFasync_creator_fn)	popr2   connectr   asboolrl   r   r<   r   )r6   argkwr   
creator_fns        r)   r    AsyncAdapt_asyncmy_dbapi.connect   s     0%8VV.0D0DE
;;~&&8z35"56 
 1:s1b12 r(   )r2   rt   N)r2   r   rh   )r   r   r   r   r:   r<   )r"   r#   r$   r%   rv   ru   r   symbolr   r   r   r   r   rn   bytesBinaryr   r'   r!   r(   r)   rp   rp      sd    &
D  [["F[["F[["F{{:&HK(I% Fr(   rp   c                     ^  \ rS rSrSrSrSr\rSr	Sr
\SS j5       r\SS j5       rSS jrSU 4S jjr        SU 4S jjrSS	 jr    SS
 jrSrU =r$ )MySQLDialect_asyncmy   r2   Tc                *    [        [        S5      5      $ )Nr2   )rp   
__import__)clss    r)   import_dbapi!MySQLDialect_asyncmy.import_dbapi   s    '
9(=>>r(   c                    UR                   R                  SS5      n[        R                  " U5      (       a  [        R
                  $ [        R                  $ )Nr   F)querygetr   r   r   FallbackAsyncAdaptedQueuePoolAsyncAdaptedQueuePool)r   urlr   s      r)   get_pool_class#MySQLDialect_asyncmy.get_pool_class   s>    '7?;;~&&555---r(   c                $    UR                  5         g r.   )	terminate)r6   dbapi_connections     r)   do_terminate!MySQLDialect_asyncmy.do_terminate   s    ""$r(   c                0   > [         TU ]  U[        SSS9S9$ )Nuserdb)usernamedatabase)_translate_args)supercreate_connect_argsdict)r6   r   	__class__s     r)   r   (MySQLDialect_asyncmy.create_connect_args   s&    w*v!E + 
 	
r(   c                   > [         TU ]  XU5      (       a  g[        U5      R                  5       nSU;   =(       d    SU;   $ )NTznot connectedznetwork operation failed)r   is_disconnectstrlower)r6   er7   r/   str_er   s        r)   r   "MySQLDialect_asyncmy.is_disconnect   sA     7 77FLLNE5(O,F%,Or(   c                &    SSK Jn  UR                  $ )Nr   )CLIENT)asyncmy.constantsr   
FOUND_ROWS)r6   r   s     r)   _found_rows_client_flag,MySQLDialect_asyncmy._found_rows_client_flag   s    ,   r(   c                    UR                   $ r.   )rN   r5   s     r)   get_driver_connection*MySQLDialect_asyncmy.get_driver_connection   s     %%%r(   r!   )r:   r   )r   r   r:   type)r   r   r:   rg   )r   r   r:   r   )r   zDBAPIModule.Errorr7   z7Optional[Union[PoolProxiedConnection, DBAPIConnection]]r/   zOptional[DBAPICursor]r:   rf   )r:   int)r7   r   r:   r   )r"   r#   r$   r%   driversupports_statement_cachesupports_server_side_cursorsr+   	_sscursoris_asynchas_terminateclassmethodr   r   r   r   r   r   r   r'   __classcell__)r   s   @r)   r   r      s    F##' ,IHM? ? . .%

 L &	
 
!
&)&	& &r(   r   N)*__doc__
__future__r   typesr   typingr   r   r   r   r	   pymysqlr    r   r   connectors.asyncior   r   r   r   r   util.concurrencyr   r   r   r   engine.interfacesr   r   r   r   r   
engine.urlr   r   r+   r<   rl   rp   r   dialectr!   r(   r)   <module>r      s   * #        )   = 9 9 < 6 . *<84400:! 7 

 9

,!5,!^*,I **6 *Z5&/ 5&p r(   