§
    YŠtjµ  ã                  óô   — d Z ddlm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mZmZmZ dd	l
mZ dd
lmZmZ ddlmZ ddlmZ ddlmZmZ ddlmZ  ej        d¦  «        Z G d„ deee         ¦  «        ZdS )z6
Psycopg null connection pool module (async version).
é    )ÚannotationsN)Úcast)ÚAsyncConnection)ÚTransactionStatusé   )ÚACTÚAsyncConnectFailedCBÚAsyncConnectionCBÚAsyncConninfoParam)ÚAsyncKwargsParam)ÚPoolTimeoutÚTooManyRequests)ÚConnectionTimeout)ÚAEvent)ÚAddConnectionÚAsyncConnectionPool)Ú_BaseNullConnectionPoolzpsycopg.poolc                  óž   ‡ — e Zd Z	 d5 eee         e¦  «        dddddddddddddddd	d
œd6ˆ fd(„Zd7d8d+„Zd9d.„Z	d:d1„Z
d;d<d2„Zd=d3„Zd>d4„Zˆ xZS )?ÚAsyncNullConnectionPoolÚ Nr   Fç      >@g      ¬@g     À‚@g     Àr@é   )Úconnection_classÚkwargsÚmin_sizeÚmax_sizeÚopenÚ	configureÚcheckÚresetÚnameÚclose_returnsÚtimeoutÚmax_waitingÚmax_lifetimeÚmax_idleÚreconnect_timeoutÚreconnect_failedÚnum_workersÚconninfor   r   ú	type[ACT]r   úAsyncKwargsParam | Noner   Úintr   ú
int | Noner   úbool | Noner   úAsyncConnectionCB[ACT] | Noner   r    r!   ú
str | Noner"   Úboolr#   Úfloatr$   r%   r&   r'   r(   úAsyncConnectFailedCB | Noner)   c               ól   •— t          ¦   «                              ||||||	||||
d||||||¬¦  «         d S )NF)r   r   r   r   r    r   r   r   r!   r"   r#   r$   r%   r&   r'   r)   )ÚsuperÚ__init__)Úselfr*   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   Ú	__class__s                      €úZ/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/psycopg_pool/null_pool_async.pyr7   z AsyncNullConnectionPool.__init__   sc   ø€ õ, 	‰Œ×ÒØØØ-ØØØØØØØØØØ#Ø%ØØ/Ø#ð# 	ñ 	
ô 	
ð 	
ð 	
ð 	
ó    ÚreturnÚNonec              ƒ  ó¬  K  — |                       ¦   «          | j        4 ƒd{V —† | j        rJ ‚t          ¦   «         | _        ddd¦  «        ƒd{V —† n# 1 ƒd{V —†swxY w Y   t                               d| j        ¦  «         |                      t          | ¦  «        ¦  «         | j         	                    |¦  «        ƒ d{V —†s-|  
                    ¦   «         ƒ d{V —† t          d|› d�¦  «        ‚| j        4 ƒd{V —† | j        sJ ‚d| _        ddd¦  «        ƒd{V —† n# 1 ƒd{V —†swxY w Y   t                               d| j        ¦  «         dS )a9  
        Create a connection for test.

        Calling this function will verify that the connectivity with the
        database works as expected. However the connection will not be stored
        in the pool.

        Close the pool, and raise `PoolTimeout`, if not ready within *timeout*
        sec.
        Nz"waiting for pool %r initializationz%pool initialization incomplete after z seczpool %r is ready to use)Ú_check_open_getconnÚ_lockÚ_pool_full_eventr   ÚloggerÚinfor!   Úrun_taskr   Úwait_timeoutÚcloser   )r8   r#   s     r:   ÚwaitzAsyncNullConnectionPool.waitF   sr  è è € ð 	× Ò Ñ"Ô"Ð"à”:ð 	-ð 	-ð 	-ð 	-ð 	-ð 	-ð 	-ð 	-ØÔ,Ð,Ð,Ð,Ý$*¡H¤HˆDÔ!ð	-ð 	-ð 	-ñ 	-ô 	-ð 	-ð 	-ð 	-ð 	-ð 	-ð 	-ð 	-ð 	-ð 	-ð 	-ð 	-ð 	-ð 	-ð 	-ð 	-ð 	-ð 	-ð 	-øøøð 	-ð 	-ð 	-ð 	-õ 	�ŠÐ8¸$¼)ÑDÔDÐDØ�Š•m DÑ)Ô)Ñ*Ô*Ð*ØÔ*×7Ò7¸Ñ@Ô@Ð@Ð@Ð@Ð@Ð@Ð@ð 	UØ—*’*‘,”,ÐÐÐÐÐÐÐÝÐSÀgÐSÐSÐSÑTÔTÐTà”:ð 	)ð 	)ð 	)ð 	)ð 	)ð 	)ð 	)ð 	)ØÔ(Ð(Ð(Ð(Ø$(ˆDÔ!ð	)ð 	)ð 	)ñ 	)ô 	)ð 	)ð 	)ð 	)ð 	)ð 	)ð 	)ð 	)ð 	)ð 	)ð 	)ð 	)ð 	)ð 	)ð 	)ð 	)ð 	)ð 	)ð 	)øøøð 	)ð 	)ð 	)ð 	)õ 	�ŠÐ-¨t¬yÑ9Ô9Ð9Ð9Ð9s#   ¤AÁ
AÁ AÄ D#Ä#
D-Ä0D-úfloat | Noneú
ACT | Nonec              ƒ  ó
  K  — |�|dk    rt          ¦   «         ‚d }| j        dk    s| j        | j        k     r^	 |                      |¬¦  «        ƒ d {V —†}n/# t          $ r"}t          t          |¦  «        ¦  «        d ‚d }~ww xY w| xj        dz  c_        no| j        rht          | j        ¦  «        | j        k    rK| j	        | j
        xx         dz  cc<   t          d| j        ›d�dt          | j        ¦  «        › d�z   ¦  «        ‚|S )	Ng        r   )r#   r   z	the pool z has alreadyú z requests waiting)r   r   Ú_nconnsÚ_connectr   Ústrr$   ÚlenÚ_waitingÚ_statsÚ_REQUESTS_ERRORSr   r!   )r8   r#   ÚconnÚexs       r:   Ú_get_ready_connectionz-AsyncNullConnectionPool._get_ready_connectionc   s:  è è € ØÐ 7¨c¢> >Ý‘-”-ÐàˆØŒ=˜AÒÐ ¤°´Ò!=Ð!=ð5Ø!Ÿ]š]°7˜]Ñ;Ô;Ð;Ð;Ð;Ð;Ð;Ð;��øÝ$ð 5ð 5ð 5Ý!¥# b¡'¤'Ñ*Ô*°Ð4øøøøð5øøøàˆLŒL˜AÑˆLŒLˆLàÔð 	¥# d¤mÑ"4Ô"4¸Ô8HÒ"HÐ"HØŒK˜Ô-Ð.Ð.Ô.°!Ñ3Ð.Ð.Ñ.Ý!Ø5˜DœIÐ5Ð5Ð5Ø;•c˜$œ-Ñ(Ô(Ð;Ð;Ð;ñ<ñô ð ð ˆs   ·A Á
B ÁA;Á;B rS   r   c              ƒ  ó€  K  — | j         4 ƒd {V —† | j        s| j        r	 d d d ¦  «        ƒd {V —† dS d |_        |j        j        t          j        k    r| j        | j	        xx         dz  cc<   |  
                    |¦  «        ƒ d {V —† | xj        dz  c_        	 d d d ¦  «        ƒd {V —† dS # 1 ƒd {V —†swxY w Y   d S )NFr   T)r@   Ú_closedrP   Ú_poolÚpgconnÚtransaction_statusr   ÚUNKNOWNrQ   Ú_RETURNS_BADÚ_close_connectionrL   ©r8   rS   s     r:   Ú_maybe_close_connectionz/AsyncNullConnectionPool._maybe_close_connectionx   s¡  è è € ð ”:ð 		ð 		ð 		ð 		ð 		ð 		ð 		ð 		Ø”<ð  D¤Mð Øð		ð 		ð 		ñ 		ô 		ð 		ð 		ð 		ð 		ð 		ð 		ð 		ð 		ð 		ð ˆDŒJØŒ{Ô-Õ1BÔ1JÒJÐJØ”˜DÔ-Ð.Ð.Ô.°!Ñ3Ð.Ð.Ñ.Ø×(Ò(¨Ñ.Ô.Ð.Ð.Ð.Ð.Ð.Ð.Ð.ØˆLŒL˜AÑˆLŒLØð		ð 		ð 		ñ 		ô 		ð 		ð 		ð 		ð 		ð 		ð 		ð 		ð 		ð 		ð 		ð 		ð 		ð 		ð 		ð 		ð 		ð 		ð 		ð 		øøøð 		ð 		ð 		ð 		ð 		ð 		s   �B-³A'B-Â-
B7Â:B7c              ƒ  ó   K  — |                       ||¦  «        \  }}t                               d| j        ||¦  «         | j        4 ƒd{V —† || _        || _        ddd¦  «        ƒd{V —† dS # 1 ƒd{V —†swxY w Y   dS )zwChange the size of the pool during runtime.

        Only *max_size* can be changed; *min_size* must remain 0.
        z&resizing %r to min_size=%s max_size=%sN)Ú_check_sizerB   rC   r!   r@   Ú	_min_sizeÚ	_max_size)r8   r   r   s      r:   ÚresizezAsyncNullConnectionPool.resize‡   s  è è € ð
 "×-Ò-¨h¸ÑAÔAÑˆ�(å�ŠØ4°d´iÀÈ8ñ	
ô 	
ð 	
ð ”:ð 	&ð 	&ð 	&ð 	&ð 	&ð 	&ð 	&ð 	&Ø%ˆDŒNØ%ˆDŒNð	&ð 	&ð 	&ñ 	&ô 	&ð 	&ð 	&ð 	&ð 	&ð 	&ð 	&ð 	&ð 	&ð 	&ð 	&ð 	&ð 	&ð 	&ð 	&ð 	&ð 	&ð 	&ð 	&ð 	&øøøð 	&ð 	&ð 	&ð 	&ð 	&ð 	&s   ÁA-Á-
A7Á:A7c              ƒ  ó
   K  — dS )z9No-op, as the pool doesn't have connections in its state.N© )r8   s    r:   r   zAsyncNullConnectionPool.check•   s   è è € àˆr;   c              ƒ  ó˜  K  — d |_         | j        4 ƒd {V —† | j        r:| j                             ¦   «                              |¦  «        ƒ d {V —†rnS| j        °:|                      |¦  «        ƒ d {V —† | j        r| j                             ¦   «          n| xj        dz  c_        	 d d d ¦  «        ƒd {V —† d S # 1 ƒd {V —†swxY w Y   d S )Nr   )rX   r@   rP   ÚpopleftÚsetr]   rA   rL   r^   s     r:   Ú_add_to_poolz$AsyncNullConnectionPool._add_to_pool™   s‰  è è € ð ˆŒ
ð ”:ð 	&ð 	&ð 	&ð 	&ð 	&ð 	&ð 	&ð 	&Ø”-ð &ð œ×.Ò.Ñ0Ô0×4Ò4°TÑ:Ô:Ð:Ð:Ð:Ð:Ð:Ð:ð Øð	 ”-ð &ð ×,Ò,¨TÑ2Ô2Ð2Ð2Ð2Ð2Ð2Ð2Ð2ð Ô(ð &ØÔ)×-Ò-Ñ/Ô/Ð/Ð/ð �L”L AÑ%�L”L�Lð!	&ð 	&ð 	&ñ 	&ô 	&ð 	&ð 	&ð 	&ð 	&ð 	&ð 	&ð 	&ð 	&ð 	&ð 	&ð 	&ð 	&ð 	&ð 	&ð 	&ð 	&ð 	&ð 	&ð 	&øøøð 	&ð 	&ð 	&ð 	&ð 	&ð 	&s   —BB9Â9
CÃC)r   )$r*   r   r   r+   r   r,   r   r-   r   r.   r   r/   r   r0   r   r0   r    r0   r!   r1   r"   r2   r#   r3   r$   r-   r%   r3   r&   r3   r'   r3   r(   r4   r)   r-   )r   )r#   r3   r<   r=   )r#   rH   r<   rI   )rS   r   r<   r2   )N)r   r-   r   r.   r<   r=   )r<   r=   )rS   r   r<   r=   )Ú__name__Ú
__module__Ú__qualname__r   Útyper   r   r7   rG   rU   r_   rd   r   rj   Ú__classcell__)r9   s   @r:   r   r      s  ø€ € € € € ð (*ð(
ð '+ d¨4°¬9°oÑ&FÔ&FØ*.ØØ#Ø Ø37Ø/3Ø/3ØØ#ØØØ'Ø#Ø#+Ø8<Øð)(
ð (
ð (
ð (
ð (
ð (
ð (
ð (
ðT:ð :ð :ð :ð :ð:ð ð ð ð*ð ð ð ð&ð &ð &ð &ð &ðð ð ð ð&ð &ð &ð &ð &ð &ð &ð &r;   r   )Ú__doc__Ú
__future__r   ÚloggingÚtypingr   Úpsycopgr   Ú
psycopg.pqr   Úabcr   r	   r
   r   r   Úerrorsr   r   Ú_compatr   Ú_acompatr   Ú
pool_asyncr   r   Úbase_null_poolr   Ú	getLoggerrB   r   rf   r;   r:   ú<module>r}      sW  ððð ð #Ð "Ð "Ð "Ð "Ð "à €€€Ø Ð Ð Ð Ð Ð à #Ð #Ð #Ð #Ð #Ð #Ø (Ð (Ð (Ð (Ð (Ð (à QÐ QÐ QÐ QÐ QÐ QÐ QÐ QÐ QÐ QÐ QÐ QØ !Ð !Ð !Ð !Ð !Ð !Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø &Ð &Ð &Ð &Ð &Ð &Ø Ð Ð Ð Ð Ð Ø :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3à	ˆÔ	˜>Ñ	*Ô	*€ðW&ð W&ð W&ð W&ð W&Ð5Ð7JÈ3Ô7Oñ W&ô W&ð W&ð W&ð W&r;   