
    `?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  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+aiomysql
    :name: aiomysql
    :dbapi: aiomysql
    :connectstring: mysql+aiomysql://user:password@host:port/dbname[?key=value&key=value...]
    :url: https://github.com/aio-libs/aiomysql

The aiomysql dialect is SQLAlchemy's second Python asyncio dialect.

Using a special asyncio mediation layer, the aiomysql 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+aiomysql://user:pass@hostname/dbname?charset=utf8mb4"
    )

    )annotations)
ModuleType)Any)Dict)Optional)Tuple)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S jrSrg)AsyncAdapt_aiomysql_cursor@    c                `    UR                  U R                  R                  R                  5      $ N)cursor_adapt_connectiondbapiCursorself
connections     f/var/www/html/livechat/backend/venv/lib/python3.13/site-packages/sqlalchemy/dialects/mysql/aiomysql.py_make_new_cursor+AsyncAdapt_aiomysql_cursor._make_new_cursorC   s'       !7!7!=!=!D!DEE    Nr+   r   returnr   __name__
__module____qualname____firstlineno__	__slots__r-   __static_attributes__r"   r/   r,   r    r    @   s    IF0F	Fr/   r    c                  *    \ rS rSrSr    SS jrSrg)AsyncAdapt_aiomysql_ss_cursorI   r"   c                    UR                  U R                  R                  R                  R                  R
                  5      $ r$   )r%   r&   r'   aiomysqlcursorsSSCursorr)   s     r,   r-   .AsyncAdapt_aiomysql_ss_cursor._make_new_cursorN   s8       ""((1199BB
 	
r/   Nr0   r2   r"   r/   r,   r:   r:   I   s     I
0
	
r/   r:   c                  f    \ 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rg
)AsyncAdapt_aiomysql_connectionV   r"   c                j    U(       a   eU R                  U R                  R                  U5      5        g r$   )await__connectionping)r*   	reconnects     r,   rG   #AsyncAdapt_aiomysql_connection.ping^   s'    }D$$)))45r/   c                6    U R                   R                  5       $ r$   )rF   character_set_namer*   s    r,   rK   1AsyncAdapt_aiomysql_connection.character_set_nameb   s    2244r/   c                X    U R                  U R                  R                  U5      5        g r$   )rE   rF   
autocommit)r*   values     r,   rO   )AsyncAdapt_aiomysql_connection.autocommite   s    D$$//67r/   c                6    U R                   R                  5       $ r$   )rF   get_autocommitrL   s    r,   rS   -AsyncAdapt_aiomysql_connection.get_autocommith   s    ..00r/   c                V    U R                  U R                  R                  5       5        g r$   )rE   rF   ensure_closedrL   s    r,   close$AsyncAdapt_aiomysql_connection.closek   s    D$$2245r/   c                T   #    U R                   R                  5       I S h  vN   g  N7fr$   )rF   rV   rL   s    r,   _terminate_graceful_close8AsyncAdapt_aiomysql_connection._terminate_graceful_closen   s     ,,...s   (&(c                8    U R                   R                  5         g r$   )rF   rW   rL   s    r,   _terminate_force_close5AsyncAdapt_aiomysql_connection._terminate_force_closeq   s     r/   N)rH   boolr1   None)r1   zOptional[str])rP   r   r1   r`   )r1   r_   r1   r`   )r3   r4   r5   r6   r7   r    _cursor_clsr:   _ss_cursor_clsrG   rK   rO   rS   rW   rZ   r]   r8   r"   r/   r,   rB   rB   V   s6     I,K2N65816/!r/   rB   c                  (    \ rS rSrSr\" \5      rSrg)&AsyncAdaptFallback_aiomysql_connectionv   r"   N)	r3   r4   r5   r6   r7   staticmethodr   rE   r8   r"   r/   r,   re   re   v   s    I.)Fr/   re   c                  @    \ rS rSrSS jrS	S jrS
S jr  SS jrSrg)AsyncAdapt_aiomysql_dbapi|   c                    Xl         X l        SU l        U R                  5         U R	                  5       u  U l        U l        g )Nformat)r=   pymysql
paramstyle_init_dbapi_attributes_init_cursors_subclassesr(   r?   )r*   r=   rm   s      r,   __init__"AsyncAdapt_aiomysql_dbapi.__init__}   s6     "##%%)%B%B%D"T]r/   c           	         S H#  n[        X[        U R                  U5      5        M%     S H#  n[        X[        U R                  U5      5        M%     g )N)WarningErrorInterfaceError	DataErrorDatabaseErrorOperationalErrorrv   IntegrityErrorProgrammingErrorInternalErrorNotSupportedError)NUMBERSTRINGDATETIMEBINARY	TIMESTAMPBinary)setattrgetattrr=   rm   )r*   names     r,   ro   0AsyncAdapt_aiomysql_dbapi._init_dbapi_attributes   sH    
D Dt <=

D Dd ;<
r/   c           
        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)	popr=   connectr   asboolre   r   rB   r   )r*   argkwr   
creator_fns        r,   r   !AsyncAdapt_aiomysql_dbapi.connect   s     0%8VV.0E0EF
;;~&&9z35"56 
 2:s1b12 r/   c                     " S SU R                   R                  5      n " S SU R                   R                  5      nX4$ )Nc                  &    \ rS rSr    SS jrSrg)BAsyncAdapt_aiomysql_dbapi._init_cursors_subclasses.<locals>.Cursor   c                   #    g 7fr$   r"   r*   conns     r,   _show_warningsQAsyncAdapt_aiomysql_dbapi._init_cursors_subclasses.<locals>.Cursor._show_warnings   
         r"   Nr   r   r1   r`   r3   r4   r5   r6   r   r8   r"   r/   r,   r(   r          2r/   r(   c                  &    \ rS rSr    SS jrSrg)DAsyncAdapt_aiomysql_dbapi._init_cursors_subclasses.<locals>.SSCursor   c                   #    g 7fr$   r"   r   s     r,   r   SAsyncAdapt_aiomysql_dbapi._init_cursors_subclasses.<locals>.SSCursor._show_warnings   r   r   r"   Nr   r   r"   r/   r,   r?   r      r   r/   r?   )r=   r(   r?   )r*   r(   r?   s      r,   rp   2AsyncAdapt_aiomysql_dbapi._init_cursors_subclasses   s9    	T]])) 		t}}-- 	 r/   )r(   r?   r=   rn   rm   N)r=   r   rm   r   ra   )r   r   r   r   r1   rB   )r1   z-Tuple[AsyncIODBAPICursor, AsyncIODBAPICursor])	r3   r4   r5   r6   rq   ro   r   rp   r8   r"   r/   r,   ri   ri   |   s    E=4 	6 r/   ri   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     SU 4S jjjr        SU 4S jjrSS	 jr    SS
 jrSrU =r$ )MySQLDialect_aiomysql   r=   Tc                >    [        [        S5      [        S5      5      $ )Nr=   rm   )ri   
__import__)clss    r,   import_dbapi"MySQLDialect_aiomysql.import_dbapi   s    (z"Jy$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_aiomysql.get_pool_class   s>    '7?;;~&&555---r/   c                $    UR                  5         g r$   )	terminate)r*   dbapi_connections     r,   do_terminate"MySQLDialect_aiomysql.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)r*   r   r   	__class__s      r,   r   )MySQLDialect_aiomysql.create_connect_args   s(     w*v!E + 
 	
r/   c                l   > [         TU ]  XU5      (       a  g[        U5      R                  5       nSU;   $ )NTznot connected)r   is_disconnectstrlower)r*   er+   r%   str_er   s        r,   r   #MySQLDialect_aiomysql.is_disconnect   s4     7 77FLLNE"e++r/   c                &    SSK Jn  UR                  $ )Nr   )CLIENT)pymysql.constantsr   
FOUND_ROWS)r*   r   s     r,   _found_rows_client_flag-MySQLDialect_aiomysql._found_rows_client_flag   s    ,   r/   c                    UR                   $ r$   )rF   r)   s     r,   get_driver_connection+MySQLDialect_aiomysql.get_driver_connection   s     %%%r/   r"   )r1   ri   )r   r   r1   type)r   r   r1   r`   r$   )r   r   r   zOptional[Dict[str, Any]]r1   r   )r   zDBAPIModule.Errorr+   z7Optional[Union[PoolProxiedConnection, DBAPIConnection]]r%   zOptional[DBAPICursor]r1   r_   )r1   int)r+   r   r1   r   )r3   r4   r5   r6   driversupports_statement_cachesupports_server_side_cursorsr:   	_sscursoris_asynchas_terminateclassmethodr   r   r   r   r   r   r   r8   __classcell__)r   s   @r,   r   r      s    F##' -IHM
 

 . .% EI

)A
	
 

,
, L
, &	
,
 

,!
&)&	& &r/   r   N)+__doc__
__future__r   typesr   typingr   r   r   r   r	   r
   rm   r    r   r   connectors.asyncior   r   r   r   r   util.concurrencyr   r   r   r   engine.interfacesr   r   r   r   r   
engine.urlr   r    r:   rB   re   ri   r   dialectr"   r/   r,   <module>r      s   . #         )   = 9 9 < 6 . *<84400:!F!8 F

 :

!5!@*-K *A  7 A H7&0 7&t  r/   