
    b?i                          S SK r S SKrS SKrSSKJr  SSKJrJrJr    S	S jr	  S	S jr
 " S S\ R                  5      rg)
    N   )connect)_PoolContextManager_PoolConnectionContextManager_PoolAcquireContextManagerc           	      6    [        SXUX4S.UD6n[        U5      $ )Nminsizemaxsizeechopool_recycleloop )_create_poolr   )r
   r   r   r   r   kwargscoros          Q/var/www/html/livechat/backend/venv/lib/python3.13/site-packages/aiomysql/pool.pycreate_poolr      s.     Ht%1H@FHDt$$    c           	      *  #    Uc  [         R                  " 5       n[        SXUX4S.UD6nU S:  a@  UR                   IS h  vN   UR	                  S5      I S h  vN   S S S 5      IS h  vN   U$ U$  N1 N N! , IS h  vN  (       d  f       U$ = f7f)Nr	   r   Fr   )asyncioget_event_loopPool_cond_fill_free_pool)r
   r   r   r   r   r   pools          r   r   r      s     |%%' @t)@8>@D{:::&&u--- :K4K - ::KsY   >B A2BA8A4A8B)A6*	B4A86B8B>B?BBc                       \ rS rSrSrS r\S 5       r\S 5       r\S 5       r	\S 5       r
\S 5       rS	 r\S
 5       rS rS rS rS rS rS rS rS rS rS rS rS rS rS rSrg)r   !   zConnection poolc                 l   US:  a  [        S5      eX!:  a  US:w  a  [        S5      eXl        XPl        X`l        SU l        [
        R                  " U=(       d    S S9U l        [        R                  " 5       U l
        [        5       U l        [        5       U l        SU l        SU l        X0l        X@l        g )Nr   z!minsize should be zero or greaterz'maxsize should be not less than minsize)maxlenF)
ValueError_minsize_loop_conn_kwargs
_acquiringcollectionsdeque_freer   	Conditionr   set_used_terminated_closing_closed_echo_recycle)selfr
   r   r   r   r   r   s          r   __init__Pool.__init__$   s    Q;@AAAFGG
" &&go>
&&(
U
5
$r   c                     U R                   $ N)r/   r1   s    r   r   	Pool.echo6   s    zzr   c                     U R                   $ r5   )r"   r6   s    r   r
   Pool.minsize:   s    }}r   c                 .    U R                   R                  $ r5   )r(   r    r6   s    r   r   Pool.maxsize>   s    zz   r   c                 `    U R                   [        U R                  5      -   U R                  -   $ r5   )freesizelenr+   r%   r6   s    r   size	Pool.sizeB   s"    }}s4::.@@r   c                 ,    [        U R                  5      $ r5   )r>   r(   r6   s    r   r=   Pool.freesizeF   s    4::r   c                 v  #    U R                    ISh  vN   U R                  (       aE  U R                  R                  5       nUR                  5       I Sh  vN   U R                  (       a  ME  U R                   R	                  5         SSS5      ISh  vN   g N ND N	! , ISh  vN  (       d  f       g= f7f)z#Close all free connections in pool.N)r   r(   popleftensure_closednotifyr1   conns     r   clear
Pool.clearJ   so     :::**zz))+((*** *** JJ	 :: + :::s\   B9BB9?BBB.BB9BB9BB9B6%B(&B62B9c                     U R                   $ )zG
The readonly property that returns ``True`` if connections is closed.
)r.   r6   s    r   closedPool.closedR   s    
 ||r   c                 6    U R                   (       a  gSU l        g)zClose pool.

Mark all pool connections to be closed on getting back to pool.
Closed pool doesn't allow to acquire new connections.
NT)r.   r-   r6   s    r   close
Pool.closeY   s     <<r   c                     U R                  5         [        U R                  5       H.  nUR                  5         U R                  R	                  U5        M0     U R                  R                  5         g)zRTerminate pool.

Close pool with instantly closing all acquired connections also.
N)rO   listr+   r,   addrI   rG   s     r   	terminatePool.terminatec   sO     	

$DJJL  & % 	

r   c                 L  #    U R                   (       a  gU R                  (       d  [        S5      eU R                  (       a=  U R                  R	                  5       nUR                  5         U R                  (       a  M=  U R                   ISh  vN   U R                  U R                  :  a>  U R                  R                  5       I Sh  vN   U R                  U R                  :  a  M>  SSS5      ISh  vN   SU l         g Nt N: N! , ISh  vN  (       d  f       N%= f7f)z(Wait for closing all pool's connections.Nz..wait_closed() should be called after .close()T)
r.   r-   RuntimeErrorr(   rD   rO   r   r?   r=   waitrG   s     r   wait_closedPool.wait_closedq   s      <<}}  0 1 1 jj::%%'DJJL jjj :::))dmm+jjoo''' ))dmm+ : 	 ' :::s`   A;D$?D$DD$8D
DD
,D$7D8D$D
D$
D!DD!D$c                 8    U R                  5       n[        X5      $ )z&Acquire free connection from the pool.)_acquirer   )r1   r   s     r   acquirePool.acquire   s    }})$55r   c                 P  #    U R                   (       a  [        S5      eU R                   IS h  vN    U R                  S5      I S h  vN   U R                  (       a  U R                  R                  5       nUR                  (       a   U5       eXR                  ;  d   XR                  45       eU R                  R                  U5        UsS S S 5      IS h  vN   $ U R                  R                  5       I S h  vN   M   N N N- N! , IS h  vN  (       d  f       g = f7f)Nz,Cannot acquire connection after closing poolT)
r-   rW   r   r   r(   rD   rL   r+   rS   rX   rG   s     r   r\   Pool._acquire   s     ==MNN:::**4000::::--/D#{{0D0?zz1ED**3EE1JJNN4( :: **//+++  0  , ::su   -D&DD&D	D
BDD&DD& D=D
>DD&DD&
DD#DD#D&c                   #    [        U R                  5      nSnX2:  GaU  U R                  S   nUR                  R                  5       (       d  UR                  R	                  5       (       a+  U R                  R                  5         UR                  5         OUR                  R                  (       a+  U R                  R                  5         UR                  5         OU R                  S:  a`  U R                  R                  5       UR                  -
  U R                  :  a+  U R                  R                  5         UR                  5         OU R                  R                  5         US-  nX2:  a  GMU  U R                  U R                  :  a  U =R                  S-  sl         [!        SU R"                  U R                  S.U R$                  D6I S h  vN nU R                  R'                  U5        U R(                  R+                  5         U =R                  S-  sl        U R                  U R                  :  a  M  U R                  (       a  g U(       a  U R,                  (       a  U R                  U R,                  :  a  U =R                  S-  sl         [!        SU R"                  U R                  S.U R$                  D6I S h  vN nU R                  R'                  U5        U R(                  R+                  5         U =R                  S-  sl        g g g  GNF! U =R                  S-  sl        f = f Nn! U =R                  S-  sl        f = f7f)Nr   r   )r   r   r   )r>   r(   _readerat_eof	exceptionpoprO   eof_receivedr0   r#   time
last_usagerotater?   r
   r%   r   r/   r$   appendr   rF   r   )r1   override_min	free_sizenrH   s        r   r   Pool._fill_free_pool   sS    

O	m::b>D||""$$(>(>(@(@

 

 **

 

--"$**//#doo5E

 

 

!!#FA+ m. ii$,,&OOq O%$ :$**4:: :'+'8'8: : 

!!$'

!!#1$ ii$,,& ::T\\1IOOq O%$ :$**4:: :'+'8'8: : 

!!$'

!!#1$ 2J<: 1$: 1$sg   E0M5/M%/L L9L /M?AM/L9 L7	9L9 ML L44M7L9 9MMc                    #    U R                    IS h  vN   U R                   R                  5         S S S 5      IS h  vN   g  N/ N! , IS h  vN  (       d  f       g = f7fr5   )r   rF   r6   s    r   _wakeupPool._wakeup   s-     :::JJ :::::sA   A!AA!AA!AA!A!AAAA!c                    U R                   R                  5       nUR                  S5        XR                  ;   a5  UR                  (       d   U5       eU R                  R                  U5        U$ XR                  ;   d   XR                  45       eU R                  R                  U5        UR                  (       d  UR                  5       nU(       a  UR                  5         U$ U R                  (       a  UR                  5         OU R                  R                  U5        U R                   R                  U R                  5       5      nU$ )zSRelease free connection back to the connection pool.

This is **NOT** a coroutine.
N)r#   create_future
set_resultr,   rL   remover+   get_transaction_statusrO   r-   r(   rk   create_taskrq   )r1   rH   futin_transs       r   releasePool.release   s    
 jj&&(t###;;$$;##D)Jzz!5D**#55!

${{224H


}}



!!$'**((8C
r   c                     [        S5      e)Nz9"yield from" should be used as context manager expression)rW   r6   s    r   	__enter__Pool.__enter__   s    GI 	Ir   c                     g r5   r   )r1   argss     r   __exit__Pool.__exit__   s     	r   c              #   T   #    U R                  5        S h  vN n[        X5      $  N7fr5   )r]   r   rG   s     r   __iter__Pool.__iter__   s%      ,,.(,T88 )s   (&(c              #      #    Sn[         R                  " U[        SS9  U R                  5        S h  vN n[	        X5      $  N7f)NzPwith await pool as conn deprecated, useasync with pool.acquire() as conn instead   )
stacklevel)warningswarnDeprecationWarningr]   r   )r1   msgrH   s      r   	__await__Pool.__await__  s;     :c-!<,,.(,T88 )s   0AAAc                    #    U $ 7fr5   r   r6   s    r   
__aenter__Pool.__aenter__	  s
     s   c                 `   #    U R                  5         U R                  5       I S h  vN   g  N7fr5   )rO   rY   )r1   exc_typeexc_valexc_tbs       r   	__aexit__Pool.__aexit__  s      

   s   $.,.)r%   r.   r-   r   r$   r/   r(   r#   r"   r0   r,   r+   N)__name__
__module____qualname____firstlineno____doc__r2   propertyr   r
   r   r?   r=   rI   rL   rO   rT   rY   r]   r\   r   rq   r{   r~   r   r   r   r   r   __static_attributes__r   r   r   r   r   !   s    %$     ! ! A A     &6
,1%f 4I
9 9!r   r   )r   
   Frb   N)r   r&   r   
connectionr   utilsr   r   r   r   r   AbstractServerr   r   r   r   <module>r      sO       0 0 AC% HJ 
m!7!! m!r   