§ x<ˆj¬ãó–—dZddlZddlmZGd„dej¦«ZGd„d¦«ZGd„d e¦«ZGd „d e¦«ZdS) z`Connection pooling for psycopg2 This module implements thread-safe (and not) connection pools. éN)Ú extensionscó—eZdZdS)Ú PoolErrorN)Ú__name__Ú __module__Ú __qualname__©óúa/builddir/build/BUILD/cloudlinux-venv-1.0.12/venv/lib64/python3.11/site-packages/psycopg2/pool.pyrr s€€€€€Ø€Dr rcó<—eZdZdZd„Zd d„Zd„Zd d„Zd d„Zd „Z dS) ÚAbstractConnectionPoolzGeneric key-based pooling code.có—t|¦«|_t|¦«|_d|_||_||_g|_i|_i|_d|_ t|j¦«D]}|  ¦«ŒdS)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. FrN) ÚintÚminconnÚmaxconnÚclosedÚ_argsÚ_kwargsÚ_poolÚ_usedÚ_rusedÚ_keysÚrangeÚ_connect)ÚselfrrÚargsÚkwargsÚis r Ú__init__zAbstractConnectionPool.__init__'s�€õ˜7‘|”|ˆŒ ݘ7‘|”|ˆŒ ؈Œ àˆŒ ؈Œ àˆŒ ؈Œ ؈Œ ؈Œ å�t”|Ñ$Ô$ð ð ˆAØ �MŠM‰OŒOˆOˆOð ð r Ncó¸—tj|ji|j¤Ž}|�"||j|<||jt |¦«<n|j |¦«|S)z;Create a new connection and assign it to 'key' if not None.) Úpsycopg2ÚconnectrrrrÚidrÚappend©rÚkeyÚconns r rzAbstractConnectionPool._connect=s[€åÔ ¤Ð<¨t¬|Ð<Ð<ˆØ ˆ?Ø"ˆDŒJ�s‰OØ$'ˆDŒK�˜4™œÑ !Ð !à ŒJ× Ò ˜dÑ #Ô #Ð #؈ r có0—|xjdz c_|jS)zReturn a new unique key.é)r©rs r Ú_getkeyzAbstractConnectionPool._getkeyGs€à ˆ Œ �a‰ˆ Œ ØŒzÐr cóŽ—|jrtd¦«‚|€| ¦«}||jvr |j|S|jr<|j ¦«x|j|<}||jt|¦«<|St|j¦«|j krtd¦«‚|  |¦«S)ú9Get a free connection and assign it to 'key' if not None.úconnection pool is closedNzconnection pool exhausted) rrr+rrÚpoprr#Úlenrrr%s r Ú_getconnzAbstractConnectionPool._getconnLs¹€à Œ;ð 9ÝÐ7Ñ8Ô8Ð 8Ø ˆ;Ø—,’,‘.”.ˆCà �$”*Ð Ð Ø”:˜c”?Ð "à Œ:ð &Ø%)¤Z§^¢^Ñ%5Ô%5Ð 5ˆDŒJ�s‰O˜dØ$'ˆDŒK�˜4™œÑ !؈Kå�4”:‰Œ $¤,Ò.Ð.ÝÐ ;Ñ<Ô<Ð<Ø—=’= Ñ%Ô%Ð %r FcóŽ—|jrtd¦«‚|€8|j t |¦«¦«}|€td¦«‚t |j¦«|jkr”|s’|jsŠ|jj }|tj kr|  ¦«nn|tj kr/| ¦«|j |¦«n/|j |¦«n|  ¦«|jr ||jvr|j|=|jt |¦«=dSdS)zPut away a connection.r.Nz trying to put unkeyed connection)rrrÚgetr#r0rrÚinfoÚtransaction_statusÚ_extÚTRANSACTION_STATUS_UNKNOWNÚcloseÚTRANSACTION_STATUS_IDLEÚrollbackr$r)rr'r&r8Ústatuss r Ú_putconnzAbstractConnectionPool._putconn_s5€à Œ;ð 9ÝÐ7Ñ8Ô8Ð 8à ˆ;Ø”+—/’/¥" T¡(¤(Ñ+Ô+ˆC؈{ÝÐ BÑCÔCÐCå ˆtŒz‰?Œ?˜Tœ\Ò )Ð )°%Ð )ð”;ð ,ØœÔ5�Ø�TÔ<Ò<Ð<à—J’J‘L”L�L�LØ�tÔ;Ò;Ð;à—M’M‘O”O�OØ”J×%Ò% dÑ+Ô+Ð+Ð+ð”J×%Ò% dÑ+Ô+Ð+øð �JŠJ‰LŒLˆLðŒ{ð &˜c T¤ZÐ/Ð/Ø” ˜3�Ø” �B˜t™HœHÐ%Ð%Ð%ð0Ð/r cóì—|jrtd¦«‚|jt|j ¦«¦«zD]'} | ¦«Œ#t$rYŒ$wxYwd|_dS)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. r.TN)rrrÚlistrÚvaluesr8Ú Exception)rr's r Ú _closeallz AbstractConnectionPool._closeall‚sˆ€ð Œ;ð 9ÝÐ7Ñ8Ô8Ð 8Ø”J¥ d¤j×&7Ò&7Ñ&9Ô&9Ñ!:Ô!:Ñ:ð ð ˆDð Ø— ’ ‘ ” � � øÝð ð ð Ø�ð øøøàˆŒ ˆ ˆ sÁAÁ A*Á)A*©N)NF) rrrÚ__doc__rrr+r1r<rAr r r r r $s„€€€€€Ø)Ð)ðððð,ððððððð &ð&ð&ð&ð&!&ð!&ð!&ð!&ðFððððr r có<—eZdZdZejZejZej Z dS)ÚSimpleConnectionPoolz@A connection pool that can't be shared across different threads.N) rrrrCr r1Úgetconnr<ÚputconnrAÚcloseallr r r rErE“s,€€€€€ØJÐJà$Ô-€GØ$Ô-€GØ%Ô/€H€H€Hr rEcó.—eZdZdZd„Zdd„Zd d„Zd„ZdS) ÚThreadedConnectionPoolz7A connection pool that works with the threading module.cón—ddl}tj|||g|¢Ri|¤Ž| ¦«|_dS)zInitialize the threading lock.rN)Ú threadingr rÚLockÚ_lock)rrrrrrLs r rzThreadedConnectionPool.__init__žsY€àÐÐÐÝÔ'Ø �'˜7ð 5Ø%)ð 5ð 5ð 5Ø-3ð 5ð 5ð 5à—^’^Ñ%Ô%ˆŒ ˆ ˆ r NcóΗ|j ¦« | |¦«|j ¦«S#|j ¦«wxYw)r-)rNÚacquirer1Úrelease)rr&s r rFzThreadedConnectionPool.getconn¥s[€à Œ ×ÒÑÔÐð !Ø—=’= Ñ%Ô%à ŒJ× Ò Ñ Ô Ð Ð øˆDŒJ× Ò Ñ Ô Ð Ð øøøs ›A Á A$FcóÖ—|j ¦« | |||¦«|j ¦«dS#|j ¦«wxYw)zPut away an unused connection.N)rNrPr<rQ)rr'r&r8s r rGzThreadedConnectionPool.putconn­se€à Œ ×ÒÑÔÐð !Ø �MŠM˜$  UÑ +Ô +Ð +à ŒJ× Ò Ñ Ô Ð Ð Ð øˆDŒJ× Ò Ñ Ô Ð Ð øøøs ›A Á A(cóЗ|j ¦« | ¦«|j ¦«dS#|j ¦«wxYw)z6Close all connections (even the one currently in use.)N)rNrPrArQr*s r rHzThreadedConnectionPool.closeallµs_€à Œ ×ÒÑÔÐð !Ø �NŠNÑ Ô Ð à ŒJ× Ò Ñ Ô Ð Ð Ð øˆDŒJ× Ò Ñ Ô Ð Ð øøøs ›A Á A%rB)NNF)rrrrCrrFrGrHr r r rJrJ›s`€€€€€ØAÐAð&ð&ð&ð!ð!ð!ð!ð!ð!ð!ð!ð!ð!ð!ð!ð!r rJ) rCr!rr6ÚErrorrr rErJr r r úrUséðððð6€€€Ø'Ð'Ð'Ð'Ð'Ð'ð ð ð ð ð �”ñ ô ð ðlðlðlðlðlñlôlðlð^0ð0ð0ð0ð0Ð1ñ0ô0ð0ð !ð !ð !ð !ð !Ð3ñ !ô !ð !ð !ð !r