+
    }¯³j¬  ã                   óˆ   € R t ^ RIt^ RIHt  ! R R]P                  4      t ! R R4      t ! R R]4      t ! R	 R
]4      tR# )z`Connection pooling for psycopg2

This module implements thread-safe (and not) connection pools.
N)Ú
extensionsc                   ó   € ] tR t^ tRtR# )Ú	PoolError© N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__static_attributes__r   ó    ÚN/home/luca/screen-checking/.venv/lib/python3.14/site-packages/psycopg2/pool.pyr   r       s   † Ûr   r   c                   óT   a € ] tR t^$t o RtR tR
R ltR tR
R ltRR lt	R t
R	tV tR# )ÚAbstractConnectionPoolzGeneric key-based pooling code.c                óü   € \        V4      V n        \        V4      V n        RV n        W0n        W@n        . V n        / V n        / V n        ^ V n	        \        V P                  4       F  pV P                  4        K  	  R# )zÈInitialize the connection pool.

New 'minconn' connections are created immediately calling 'connfunc'
with given parameters. The connection pool will support a maximum of
about 'maxconn' connections.
FN)ÚintÚminconnÚmaxconnÚclosedÚ_argsÚ_kwargsÚ_poolÚ_usedÚ_rusedÚ_keysÚrangeÚ_connect)Úselfr   r   ÚargsÚkwargsÚis   &&&*, r   Ú__init__ÚAbstractConnectionPool.__init__'   sc   € ô ˜7“|ˆŒÜ˜7“|ˆŒØˆŒàŒ
ØŒàˆŒ
ØˆŒ
ØˆŒØˆŒ
ä�t—|‘|Ö$ˆAØ�M‰MŽOó %r   Nc                óæ   € \         P                  ! V P                  / V P                  B pVe(   W P                  V&   WP
                  \        V4      &   V# V P                  P                  V4       V# )z;Create a new connection and assign it to 'key' if not None.)	Úpsycopg2Úconnectr   r   r   r   Úidr   Úappend©r   ÚkeyÚconns   && r   r   ÚAbstractConnectionPool._connect=   s_   € ä×Ò §¡Ð<¨t¯|©|Ñ<ˆØŠ?Ø"�J‰J�s‰OØ$'�K‰Kœ˜4›Ñ!ð ˆð �J‰J×Ñ˜dÔ#Øˆr   c                óL   € V ;P                   ^,          un         V P                   # )zReturn a new unique key.)r   ©r   s   &r   Ú_getkeyÚAbstractConnectionPool._getkeyG   s   € à�
Š
�a��
Ø�z‰zÐr   c                óÒ  € V P                   '       d   \        R4      hVf   V P                  4       pWP                  9   d   V P                  V,          # V P                  '       dC   V P                  P                  4       ;V P                  V&   pWP                  \        V4      &   V# \        V P                  4      V P                  8X  d   \        R4      hV P                  V4      # )ú9Get a free connection and assign it to 'key' if not None.úconnection pool is closedzconnection pool exhausted)r   r   r-   r   r   Úpopr   r%   Úlenr   r   r'   s   && r   Ú_getconnÚAbstractConnectionPool._getconnL   s©   € à�;�;ˆ;ÜÐ7Ó8Ð8ØŠ;Ø—,‘,“.ˆCà—*‘*ÔØ—:‘:˜c•?Ð"à�:�:ˆ:Ø%)§Z¡Z§^¡^Ó%5Ð5ˆD�J‰J�s‰O˜dØ$'�K‰Kœ˜4›Ñ!ØˆKä�4—:‘:‹ $§,¡,Ô.ÜÐ ;Ó<Ð<Ø—=‘= Ó%Ð%r   c                ó
  € V P                   '       d   \        R4      hVf4   V P                  P                  \	        V4      4      pVf   \        R4      h\        V P                  4      V P                  8  d´   V'       g¬   VP                   '       g™   VP                  P                  pV\        P                  8X  d   VP                  4        MmV\        P                  8w  d-   VP                  4        V P                  P                  V4       M,V P                  P                  V4       MVP                  4        V P                   '       d   W P                   9   d&   V P                   V V P                  \	        V4       R# R# )zPut away a connection.r1   Nz trying to put unkeyed connection)r   r   r   Úgetr%   r3   r   r   ÚinfoÚtransaction_statusÚ_extÚTRANSACTION_STATUS_UNKNOWNÚcloseÚTRANSACTION_STATUS_IDLEÚrollbackr&   r   )r   r)   r(   r<   Ústatuss   &&&& r   Ú_putconnÚAbstractConnectionPool._putconn_   s  € à�;�;ˆ;ÜÐ7Ó8Ð8àŠ;Ø—+‘+—/‘/¤" T£(Ó+ˆCØŠ{ÜÐ BÓCÐCäˆt�z‰z‹?˜TŸ\™\Ô)·%ð —;—;�;ØŸ™×5Ñ5�ØœT×<Ñ<Ô<à—J‘J•LØœt×;Ñ;Ô;à—M‘M”OØ—J‘J×%Ñ% dÕ+ð —J‘J×%Ñ% dÔ+øð �J‰JŒLð �{�{ˆ{˜c§Z¡ZÔ/Ø—
‘
˜3�Ø—‘œB˜t›HÒ%ñ 0r   c                ó
  € V P                   '       d   \        R4      hV P                  \        V P                  P                  4       4      ,            F  p VP                  4        K  	  RV n         R#   \         d     K/  i ; i)z·Close all connections.

Note that this can lead to some code fail badly when trying to use
an already closed connection. If you call .closeall() make sure
your code can deal with it.
r1   TN)r   r   r   Úlistr   Úvaluesr<   Ú	Exception)r   r)   s   & r   Ú	_closeallÚ AbstractConnectionPool._closeall‚   sl   € ð �;�;ˆ;ÜÐ7Ó8Ð8Ø—J‘J¤ d§j¡j×&7Ñ&7Ó&9Ó!:×:Ð:ˆDðØ—
‘
–ñ ;ð
 ˆŽøô ô Úðús   ÁA3Á3BÂB)	r   r   r   r   r   r   r   r   r   ©N)NF)r   r   r   r	   Ú__doc__r    r   r-   r4   r@   rF   r
   Ú__classdictcell__©Ú__classdict__s   @r   r   r   $   s,   ø‡ € Ù)òô,òô
&ô&!&÷Fð r   r   c                   ób   € ] tR t^“tRt]P                  t]P                  t	]P                  tRtR# )ÚSimpleConnectionPoolz@A connection pool that can't be shared across different threads.r   N)r   r   r   r	   rI   r   r4   Úgetconnr@   ÚputconnrF   Úcloseallr
   r   r   r   rN   rN   “   s&   † ÙJà$×-Ñ-€GØ$×-Ñ-€GØ%×/Ñ/„Hr   rN   c                   óD   a € ] tR t^›t o RtR tRR ltR	R ltR tRt	V t
R# )
ÚThreadedConnectionPoolz7A connection pool that works with the threading module.c                ón   € ^ RI p\        P                  ! WV.VO5/ VB  VP                  4       V n        R# )zInitialize the threading lock.N)Ú	threadingr   r    ÚLockÚ_lock)r   r   r   r   r   rU   s   &&&*, r   r    ÚThreadedConnectionPool.__init__ž   s6   € ãÜ×'Ò'Ø˜7ð	5Ø%)ò	5Ø-3ò	5à—^‘^Ó%ˆŽ
r   Nc                óÌ   € V P                   P                  4         V P                  V4      V P                   P                  4        #   T P                   P                  4        i ; i)r0   )rW   Úacquirer4   Úrelease)r   r(   s   &&r   rO   ÚThreadedConnectionPool.getconn¥   sD   € à�
‰
×ÑÔð	!Ø—=‘= Ó%à�J‰J×ÑÕ øˆD�J‰J×ÑÕ ús   œA ÁA#c                óÒ   € V P                   P                  4         V P                  WV4       V P                   P                  4        R#   T P                   P                  4        i ; i)zPut away an unused connection.N)rW   rZ   r@   r[   )r   r)   r(   r<   s   &&&&r   rP   ÚThreadedConnectionPool.putconn­   sF   € à�
‰
×ÑÔð	!Ø�M‰M˜$ UÔ+à�J‰J×ÑÖ øˆD�J‰J×ÑÕ ús   œA
 Á
A&c                óÎ   € V P                   P                  4         V P                  4        V P                   P                  4        R#   T P                   P                  4        i ; i)z6Close all connections (even the one currently in use.)N)rW   rZ   rF   r[   r,   s   &r   rQ   ÚThreadedConnectionPool.closeallµ   sB   € à�
‰
×ÑÔð	!Ø�N‰NÔà�J‰J×ÑÖ øˆD�J‰J×ÑÕ ús   œA ÁA$)rW   rH   )NNF)r   r   r   r	   rI   r    rO   rP   rQ   r
   rJ   rK   s   @r   rS   rS   ›   s!   ø‡ € ÙAò&ô!ô!÷!ð !r   rS   )	rI   r#   r   r:   ÚErrorr   r   rN   rS   r   r   r   Ú<module>rb      sI   ðñó6 Ý 'ô	�—‘ô 	÷lñ lô^0Ð1ô 0ô !Ð3ö  !r   