
    ,h'                         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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"
    )

    )deque   )MySQLDialect_pymysql   )pool)util)AdaptedConnection)asyncio)await_fallback)
await_onlyc                       \ rS rSrSrSrS r\S 5       r\S 5       r	\S 5       r
\
R                  S 5       r
\S	 5       rS
 rSS jrS rS rS rS rS rS rSS jrS rSrg)AsyncAdapt_aiomysql_cursor+   F)_adapt_connection_connectionawait__cursor_rowsc                    Xl         UR                  U l        UR                  U l        U R                  R                  UR                  R
                  5      nU R                  UR                  5       5      U l        [        5       U l	        g N)
r   r   r   cursordbapiCursor
__aenter__r   r   r   selfadapt_connectionr   s      Z/var/www/auris/envauris/lib/python3.13/site-packages/sqlalchemy/dialects/mysql/aiomysql.py__init__#AsyncAdapt_aiomysql_cursor.__init__7   sj    !1+77&--!!(()9)?)?)F)FG {{6#4#4#67W
    c                 .    U R                   R                  $ r   )r   descriptionr   s    r   r#   &AsyncAdapt_aiomysql_cursor.descriptionB   s    ||'''r!   c                 .    U R                   R                  $ r   )r   rowcountr$   s    r   r'   #AsyncAdapt_aiomysql_cursor.rowcountF   s    ||$$$r!   c                 .    U R                   R                  $ r   r   	arraysizer$   s    r   r+   $AsyncAdapt_aiomysql_cursor.arraysizeJ       ||%%%r!   c                 $    XR                   l        g r   r*   r   values     r   r+   r,   N   s    !&r!   c                 .    U R                   R                  $ r   )r   	lastrowidr$   s    r   r2   $AsyncAdapt_aiomysql_cursor.lastrowidR   r-   r!   c                 8    U R                   R                  5         g r   )r   clearr$   s    r   close AsyncAdapt_aiomysql_cursor.closeV   s     	

r!   Nc                 B    U R                  U R                  X5      5      $ r   )r   _execute_async)r   	operation
parameterss      r   execute"AsyncAdapt_aiomysql_cursor.execute`   s    {{4..yEFFr!   c                 B    U R                  U R                  X5      5      $ r   )r   _executemany_asyncr   r:   seq_of_parameterss      r   executemany&AsyncAdapt_aiomysql_cursor.executemanyc   s!    {{##IA
 	
r!   c                 z  #    U R                   R                   IS h  vN   U R                  R                  X5      I S h  vN nU R                  (       d0  [        U R                  R                  5       I S h  vN 5      U l        UsS S S 5      IS h  vN   $  N{ NZ N$ N! , IS h  vN  (       d  f       g = f7fr   )r   _execute_mutexr   r<   server_sider   fetchallr   )r   r:   r;   results       r   r9   )AsyncAdapt_aiomysql_cursor._execute_asynch   sz     ))888<<//	FFF##
 #)>)>)@#@A
 988F $A 9888sh   B;BB;B! B7B!8B
9B!B;BB;B!B!B;!B8'B*(B84B;c                    #    U R                   R                   IS h  vN   U R                  R                  X5      I S h  vN sS S S 5      IS h  vN   $  N8 N N	! , IS h  vN  (       d  f       g = f7fr   )r   rE   r   rB   r@   s      r   r?   -AsyncAdapt_aiomysql_cursor._executemany_asynct   sH     ))88811)OO 988O 9888sV   A6AA6A AAA6AA6AA6A3"A%#A3/A6c                     g r    )r   
inputsizess     r   setinputsizes(AsyncAdapt_aiomysql_cursor.setinputsizesx   s    r!   c              #      #    U R                   (       a0  U R                   R                  5       v   U R                   (       a  M/  g g 7fr   r   popleftr$   s    r   __iter__#AsyncAdapt_aiomysql_cursor.__iter__{   s*     jj**$$&& jjjs   ?AAc                 Z    U R                   (       a  U R                   R                  5       $ g r   rR   r$   s    r   fetchone#AsyncAdapt_aiomysql_cursor.fetchone   s    ::::%%''r!   c                     Uc  U R                   nU R                  n[        [        U[	        U5      5      5       Vs/ s H  o2R                  5       PM     sn$ s  snf r   )r+   r   rangeminlenrS   )r   sizerr_s       r   	fetchmany$AsyncAdapt_aiomysql_cursor.fetchmany   sG    <>>DZZ&+Cc"g,>&?@&?

&?@@@s   Ac                 d    [        U R                  5      nU R                  R                  5         U$ r   )listr   r5   )r   retvals     r   rG   #AsyncAdapt_aiomysql_cursor.fetchall   s%    djj!

r!   )r   r   r   r   r   r   )__name__
__module____qualname____firstlineno__rF   	__slots__r   propertyr#   r'   r+   setterr2   r6   r<   rB   r9   r?   rO   rT   rW   r`   rG   __static_attributes__rM   r!   r   r   r   +   s     KI	 ( ( % % & & ' ' & &G


P'Ar!   r   c                   >    \ rS rSrSrSrS rS rS rSS jr	S	 r
S
rg)AsyncAdapt_aiomysql_ss_cursor   rM   Tc                     Xl         UR                  U l        UR                  U l        U R                  R                  UR                  R
                  5      nU R                  UR                  5       5      U l        g r   )r   r   r   r   r   SSCursorr   r   r   s      r   r   &AsyncAdapt_aiomysql_ss_cursor.__init__   s_    !1+77&--!!(()9)?)?)H)HI{{6#4#4#67r!   c                     U R                   b1  U R                  U R                   R                  5       5        S U l         g g r   )r   r   r6   r$   s    r   r6   #AsyncAdapt_aiomysql_ss_cursor.close   s1    <<#KK**,-DL $r!   c                 T    U R                  U R                  R                  5       5      $ r   )r   r   rW   r$   s    r   rW   &AsyncAdapt_aiomysql_ss_cursor.fetchone       {{4<<00233r!   Nc                 R    U R                  U R                  R                  US95      $ )N)r]   )r   r   r`   )r   r]   s     r   r`   'AsyncAdapt_aiomysql_ss_cursor.fetchmany   s#    {{4<<11t1<==r!   c                 T    U R                  U R                  R                  5       5      $ r   )r   r   rG   r$   s    r   rG   &AsyncAdapt_aiomysql_ss_cursor.fetchall   rx   r!   )r   r   r   r   r   )rf   rg   rh   ri   rj   rF   r   r6   rW   r`   rG   rm   rM   r!   r   ro   ro      s'     IK8 
4>4r!   ro   c                   f    \ rS rSr\" \5      rSrS rS r	S r
S rSS jrS rS	 rS
 rSS jrSrg)AsyncAdapt_aiomysql_connection   )r   rE   c                 P    Xl         X l        [        R                  " 5       U l        g r   )r   r   r
   LockrE   )r   r   
connections      r   r   'AsyncAdapt_aiomysql_connection.__init__   s    
%%llnr!   c                 V    U R                  U R                  R                  U5      5      $ r   )r   r   ping)r   	reconnects     r   r   #AsyncAdapt_aiomysql_connection.ping   s"    {{4++00;<<r!   c                 6    U R                   R                  5       $ r   )r   character_set_namer$   s    r   r   1AsyncAdapt_aiomysql_connection.character_set_name   s    2244r!   c                 X    U R                  U R                  R                  U5      5        g r   )r   r   
autocommitr/   s     r   r   )AsyncAdapt_aiomysql_connection.autocommit   s    D$$//67r!   c                 <    U(       a  [        U 5      $ [        U 5      $ r   )ro   r   )r   rF   s     r   r   %AsyncAdapt_aiomysql_connection.cursor   s    066-d33r!   c                 V    U R                  U R                  R                  5       5        g r   )r   r   rollbackr$   s    r   r   'AsyncAdapt_aiomysql_connection.rollback   s    D$$--/0r!   c                 V    U R                  U R                  R                  5       5        g r   )r   r   commitr$   s    r   r   %AsyncAdapt_aiomysql_connection.commit   s    D$$++-.r!   c                 8    U R                   R                  5         g r   )r   r6   r$   s    r   	terminate(AsyncAdapt_aiomysql_connection.terminate   s     r!   Nc                 V    U R                  U R                  R                  5       5        g r   )r   r   ensure_closedr$   s    r   r6   $AsyncAdapt_aiomysql_connection.close   s    D$$2245r!   )r   rE   r   )FreturnN)rf   rg   rh   ri   staticmethodr   r   rj   r   r   r   r   r   r   r   r   r6   rm   rM   r!   r   r~   r~      s@     *%F+I-
=5841/!6r!   r~   c                   (    \ rS rSrSr\" \5      rSrg)&AsyncAdaptFallback_aiomysql_connection   rM   N)	rf   rg   rh   ri   rj   r   r   r   rm   rM   r!   r   r   r      s     I.)Fr!   r   c                   ,    \ rS rSrS rS rS rS 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)aiomysqlpymysql
paramstyle_init_dbapi_attributes_init_cursors_subclassesr   rr   )r   r   r   s      r   r   "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OperationalErrorr   IntegrityErrorProgrammingErrorInternalErrorNotSupportedError)NUMBERSTRINGDATETIMEBINARY	TIMESTAMPBinary)setattrgetattrr   r   )r   names     r   r   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   asboolr   r   r~   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 rSrg)BAsyncAdapt_aiomysql_dbapi._init_cursors_subclasses.<locals>.Cursori  c                    #    g 7fr   rM   r   conns     r   _show_warningsQAsyncAdapt_aiomysql_dbapi._init_cursors_subclasses.<locals>.Cursor._show_warnings          rM   Nrf   rg   rh   ri   r   rm   rM   r!   r   r   r         r!   r   c                       \ rS rSrS rSrg)DAsyncAdapt_aiomysql_dbapi._init_cursors_subclasses.<locals>.SSCursori  c                    #    g 7fr   rM   r   s     r   r   SAsyncAdapt_aiomysql_dbapi._init_cursors_subclasses.<locals>.SSCursor._show_warnings  r   r   rM   Nr   rM   r!   r   rr   r     r   r!   rr   )r   r   rr   )r   r   rr   s      r   r   2AsyncAdapt_aiomysql_dbapi._init_cursors_subclasses  s9    	T]])) 		t}}-- 	 r!   )r   rr   r   r   r   N)	rf   rg   rh   ri   r   r   r   r   rm   rM   r!   r   r   r      s    E=4
 r!   r   c                      ^  \ rS rSrSrSrSr\rSr	Sr
\S 5       r\S 5       rSS jrU 4S jrU 4S jrS	 rS
 rSrU =r$ )MySQLDialect_aiomysqli  r   Tc                 >    [        [        S5      [        S5      5      $ )Nr   r   )r   
__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   )r   )r   dbapi_connections     r   do_terminate"MySQLDialect_aiomysql.do_terminate7  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   	__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?  s2    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_flagF  s    ,   r!   c                     UR                   $ r   )r   )r   r   s     r   get_driver_connection+MySQLDialect_aiomysql.get_driver_connectionK  s    %%%r!   rM   r   )rf   rg   rh   ri   driversupports_statement_cachesupports_server_side_cursorsro   	_sscursoris_asynchas_terminateclassmethodr   r   r   r   r   r  r	  rm   __classcell__)r   s   @r   r   r     sg    F##' -IHM
 

 . .%

,!
& &r!   r   N)__doc__collectionsr   r   r    r   r   enginer	   util.concurrencyr
   r   r   r   ro   r~   r   r   r   dialectrM   r!   r   <module>r     sy   .  )   ' ' . *d dN4$> 4<%6%6 %6P*-K *;  ; |.&0 .&b  r!   