JFIF$        dd7 

Viewing File: /opt/imunify360/venv/lib/python3.11/site-packages/playhouse/__pycache__/pool.cpython-311.pyc

�

����;��(�dZddlZddlZddlZddlZddlZddlmZddlm	Z		ddl
mZddl
mZddl
m
Z
n#e$r	dxZxZZ
YnwxYw	ddlmZn#e$rYnwxYwdd	lmZdd
lmZddlmZejd��Zd
�ZGd�de��Zedd��ZGd�de��Zd�ZGd�de��ZGd�dee��ZGd�de��Z Gd�de e��Z!	ddl"m#Z#Gd�de e#��Z$n
#e$rdZ$YnwxYw	dd l%m&Z&Gd!�d"ee&��Z'n
#e$rdZ'YnwxYwGd#�d$e��Z(Gd%�d&e(e��Z)	dd'l*m+Z+Gd(�d)e(e+��Z,n
#e$rdZ,YnwxYw	dd*l*m-Z-Gd+�d,e(e-��Z.dS#e$rdZ.YdSwxYw)-aG
Lightweight connection pooling for peewee.

In a multi-threaded application, up to `max_connections` will be opened. Each
thread (or, if using gevent, greenlet) will have it's own connection.

In a single-threaded application, only one connection will be created. It will
be continually recycled until either it exceeds the stale timeout or is closed
explicitly (using `.manual_close()`).

By default, all your application needs to do is ensure that connections are
closed when you are finished with them, and they will be returned to the pool.
For web applications, this typically means that at the beginning of a request,
you will open a connection, and when you return a response, you will close the
connection.

Simple Postgres pool example code:

    # Use the special postgresql extensions.
    from playhouse.pool import PooledPostgresqlExtDatabase

    db = PooledPostgresqlExtDatabase(
        'my_app',
        max_connections=32,
        stale_timeout=300,  # 5 minutes.
        user='postgres')

    class BaseModel(Model):
        class Meta:
            database = db

That's it!
�N)�
namedtuple)�chain)�TRANSACTION_STATUS_IDLE)�TRANSACTION_STATUS_INERROR)�TRANSACTION_STATUS_UNKNOWN)�TransactionStatus)�
MySQLDatabase)�PostgresqlDatabase)�SqliteDatabasezpeewee.poolc�`�|�+t|ttf��st|��S|S�N)�
isinstance�int�float)�vals �n/builddir/build/BUILD/imunify360-venv-2.6.0/opt/imunify360/venv/lib/python3.11/site-packages/playhouse/pool.py�make_intr>s)��
��z�#��U�|�<�<���3�x�x���J�c��eZdZdS)�MaxConnectionsExceededN��__name__�
__module__�__qualname__�rrrrDs�������rr�PoolConnection)�	timestamp�
connection�checked_outc��eZdZd�ZdS)�	_sentinelc��dS�NTr)�self�others  r�__lt__z_sentinel.__lt__Ks���trN)rrrr&rrrr!r!Js#����������rr!c�F��tj����fd���}|S)Nc�^��|j5�|g|�Ri|��cddd��S#1swxYwYdSr
)�
_pool_lock)r$�args�kwargs�fns   �r�innerzlocked.<locals>.innerPs����
�_�	-�	-��2�d�,�T�,�,�,�V�,�,�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-����	-�	-�	-�	-�	-�	-s�"�&�&)�	functools�wraps)r,r-s` r�lockedr0Os8����_�R���-�-�-�-���-��Lrc����eZdZ		d�fd�	Z		d�fd�	Zd�fd�	Ze�fd���Zd�Zd	�Z	d
�Z
ed�fd�	��Zed���Zed
���Z
edd���Zed���Z�xZS)�PooledDatabase�Nc�d��t|��|_t|��|_t|��|_|jdkrt	d��|_tj��|_g|_i|_	t|_tt|��j|fi|��dS�Nr�inf)r�_max_connections�_stale_timeout�
_wait_timeoutr�	threading�RLockr)�_connections�_in_use�id�conn_key�superr2�__init__)r$�database�max_connections�
stale_timeout�timeoutr+�	__class__s      �rrAzPooledDatabase.__init__Xs���� (�� 9� 9���&�}�5�5���%�g�.�.������"�"�!&�u���D��#�/�+�+������
�����
�,��n�d�#�#�,�X�@�@��@�@�@�@�@rc���tt|��j|fi|��|�t|��|_|�t|��|_|�5t|��|_|jdkrtd��|_dSdSdSr5)r@r2�initrr7r8r9r)r$rBrCrDrE�connect_kwargsrFs      �rrHzPooledDatabase.initrs����(��n�d�#�#�(��D�D�^�D�D�D��&�$,�_�$=�$=�D�!��$�"*�=�"9�"9�D����!)�'�!2�!2�D���!�Q�&�&�%*�5�\�\��"�"�"���&�&rFc���|js(tt|���|��St	j��|jz}|t	j��krf	tt|���|��}|S#t
$rt	jd��YnwxYw|t	j��k�ftd���)Ng�������?z:Max connections exceeded, timed out attempting to connect.)r9r@r2�connect�timer�sleep)r$�
reuse_if_open�expires�retrFs    �rrKzPooledDatabase.connect~s�����!�	F����.�.�6�6�}�E�E�E��)�+�+�� 2�2����	���#�#�
��N�D�1�1�9�9�-�H�H���
��*�
 �
 �
 ��
�3������
 ������	���#�#�%�&>�?�?�	?s�$(B�B/�.B/c�t��		tj|j��\}}}|}|�|��}|�|��r t
�d|��dx}}n�|jrK|�|��r6t
�d|��|�	|d��dx}}n/n/#t$r!dx}}t
�d��YnwxYw��|��|jr,t|j
��|jkrtd���tt |�����}t%j��}|�|��}t
�d|��t'||t%j����|j
|<|S)NTzConnection %s was closed.z!Connection %s was stale, closing.z No connection available in pool.zExceeded maximum connections.zCreated new connection %s.)�heapq�heappopr<r?�
_is_closed�logger�debugr8�	_is_stale�_close�
IndexErrorr7�lenr=rr@r2�_connectrLr)r$�ts�_�c_conn�conn�keyrFs      �rr[zPooledDatabase._connect�s����	�
� %�
�d�.?� @� @�
��A�v����m�m�D�)�)���?�?�4�(�(���L�L�!<�c�B�B�B� $�$�B����(�	�T�^�^�B�-?�-?�	�
�L�L�!D�c�J�J�J��K�K��d�+�+�+� $�$�B�����-�
�
�
� � ��T����?�@�@�@���
����
	�<�<��$�
N����%�%��)>�>�>�,�-L�M�M�M����.�.�7�7�9�9�D�����B��-�-��%�%�C��L�L�5�s�;�;�;�*�2�t�T�Y�[�[�A�A���S���s�4C�(C+�*C+c�@�tj��|z
|jkSr
)rLr8)r$rs  rrWzPooledDatabase._is_stale�s���	���i�'�4�+>�>�>rc��dS)NFr�r$r_s  rrTzPooledDatabase._is_closed�s���urc��dSr#rrcs  r�
_can_reusezPooledDatabase._can_reuse�s���trc���|�|��}|r*tt|���|��dS||jvr�|j�|��}|jr_|�|j��rEt�
d|��tt|���|��dS|�|��rKt�
d|��tj
|j|jt��|f��dSt�
d|��dSdS)NzClosing stale connection %s.zReturning %s to pool.z
Closed %s.)r?r@r2rXr=�popr8rWrrUrVrerR�heappushr<r!)r$r_�
close_connr`�	pool_connrFs     �rrXzPooledDatabase._close�sB����m�m�D�!�!���	0��.�$�'�'�.�.�t�4�4�4�4�4�
�D�L�
 �
 ���(�(��-�-�I��"�
0�t�~�~�i�6I�'J�'J�
0����;�S�A�A�A��n�d�+�+�2�2�4�8�8�8�8�8�����&�&�
0����4�c�:�:�:���t�0� )� 3�Y�[�[�$�G�I�I�I�I�I����\�3�/�/�/�/�/�!�
 rc��|���rdS|���}|j�|�|��d��|���|�|d���dS)zS
        Close the underlying connection without returning it to the pool.
        FNT�ri)�	is_closedrr=rgr?�closerXrcs  r�manual_closezPooledDatabase.manual_close�s{��
�>�>���	��5���� � ��	
�������t�,�,�d�3�3�3��
�
�������D�T��*�*�*�*�*rc�^�|jD]\}}}|�|d����g|_dS�NTrl)r<rX)r$r]r_s   r�
close_idlezPooledDatabase.close_idle�sC���+�	/�	/�J�A�q�$��K�K���K�.�.�.�.�����r�Xc���i}tj��|z
}d}|j���D]7\}}|j|kr"|�|jd���|dz
}�2|||<�8||_|S)NrTrl�)rLr=�itemsrrXr)r$�age�in_use�cutoff�nr`rjs       r�close_stalezPooledDatabase.close_stale�s���������s�"��
��"�l�0�0�2�2�	(�	(�N�C���$�v�-�-����I�0�T��B�B�B��Q����'��s�������rc��|���|jD]\}}}|�|d����|j���D]}|�|jd����g|_i|_dSrq)rnr<rXr=�valuesr)r$r]r_rjs    r�	close_allzPooledDatabase.close_alls���	
�
�
�����+�	/�	/�J�A�q�$��K�K���K�.�.�.�.���,�,�.�.�	?�	?�I��K�K�	�,��K�>�>�>�>��������r)r3NN)NNN�F)rs)rrrrArHrKr0r[rWrTrerXrorrr{r~�
__classcell__)rFs@rr2r2Ws}�������CG��A�A�A�A�A�A�4BF��
2�
2�
2�
2�
2�
2�
?�
?�
?�
?�
?�
?��)�)�)�)��V�)�V?�?�?�
�������0�0�0�0�0��V�0� �+�+��V�+�$����V���
�
�
��V�
��	�	��V�	�	�	�	�	rr2c��eZdZd�ZdS)�PooledMySQLDatabasec�X�|jddkrd}nd}	|j|�dS#YdSxYw)Nr�rrFT)�server_version�ping)r$r_r*s   rrTzPooledMySQLDatabase._is_closedsL����q�!�Q�&�&��D�D��D�	��D�I�t����5��	��4�4���s�
$�)N�rrrrTrrrr�r�
s#������
�
�
�
�
rr�c��eZdZd�Zd�ZdS)�_PooledPostgresqlDatabasec��|jrdS|���}|tkrdS|tkr|���dS�NTF)�closed�get_transaction_statusrr�rollback�r$r_�
txn_statuss   rrTz$_PooledPostgresqlDatabase._is_closedsQ���;�	��4��0�0�2�2�
��3�3�3��4�
�2�
2�
2��M�M�O�O�O��urc���|���}|tkrdS|tkr|���n|tkr|���dS�NFT)r�rr�resetrr�r�s   rrez$_PooledPostgresqlDatabase._can_reuse's_���0�0�2�2�
��3�3�3��5�
�5�
5�
5��J�J�L�L�L�L�
�2�
2�
2��M�M�O�O�O��trN�rrrrTrerrrr�r�s2������	�	�	�����rr�c��eZdZdS)�PooledPostgresqlDatabaseNrrrrr�r�4��������Drr�)�PostgresqlExtDatabasec��eZdZdS)�PooledPostgresqlExtDatabaseNrrrrr�r�:��������rr�)�Psycopg3Databasec��eZdZd�Zd�ZdS)�PooledPsycopg3Databasec��|jrdS|jj}|tjkrdS|tjkr|���dSr�)r��pgconn�transaction_statusr�UNKNOWN�IDLEr�r�s   rrTz!PooledPsycopg3Database._is_closedDsP���{�
��t���7�J��.�6�6�6��t��0�5�5�5��
�
�����5rc���|jj}|tjkrdS|tjkr|���n$|tjkr|���dSr�)r�r�rr��INERRORr�r�r�r�s   rrez!PooledPsycopg3Database._can_reuseOsa����7�J��.�6�6�6��u��0�8�8�8��
�
������0�5�5�5��
�
�����4rNr�rrrr�r�Cs2������		�		�		�	�	�	�	�	rr�c��eZdZd�ZdS)�_PooledSqliteDatabasec�&�	|jdS#YdSxYwr�)�
total_changesrcs  rrTz _PooledSqliteDatabase._is_closed`s'��	�����5��	��4�4���s��Nr�rrrr�r�_s#����������rr�c��eZdZdS)�PooledSqliteDatabaseNrrrrr�r�hr�rr�)�SqliteExtDatabasec��eZdZdS)�PooledSqliteExtDatabaseNrrrrr�r�nr�rr�)�CSqliteExtDatabasec��eZdZdS)�PooledCSqliteExtDatabaseNrrrrr�r�vr�rr�)/�__doc__r.rR�loggingr:rL�collectionsr�	itertoolsr�psycopg2.extensionsrrr�ImportError�
psycopg.pqr�peeweer	r
r�	getLoggerrUr�
ValueErrorrr�objectr!r0r2r�r�r��playhouse.postgres_extr�r��playhouse.psycopg3_extr�r�r�r��playhouse.sqlite_extr�r�r�r�rrr�<module>r�s��� � �B��������������������"�"�"�"�"�"�������.�;�;�;�;�;�;�>�>�>�>�>�>�>�>�>�>�>�>�>���.�.�.�*.�.��.�&�&�&�&�.����	�,�,�,�,�,�,�,���	�	�	��D�	����!� � � � � �%�%�%�%�%�%�!�!�!�!�!�!�	��	�=�	)�	)�����/�.�.�.�.�Z�.�.�.���,�/>�?�?�����������
���s�s�s�s�s�V�s�s�s�l�����.�-�������������2	�	�	�	�	�8�:L�	�	�	�'�<�<�<�<�<�<�
�
�
�
�
�&?�AV�
�
�
�
���'�'�'�"&����'����"�7�7�7�7�7�7�������1A������0�"�"�"�!����"���������N����	�	�	�	�	�0�.�	�	�	�#�6�6�6�6�6�6�
�
�
�
�
�"7�9J�
�
�
�
���#�#�#�"����#����$�7�7�7�7�7�7�
�
�
�
�
�#8�:L�
�
�
�
�
���$�$�$�#�����$���si�7�A�A�	A�A�A�&C<�<D�D�
D � D*�)D*�E!�!E+�*E+�/F�F�F
Back to Directory  nL+D550H?Mx ,D"v]qv;6*Zqn)ZP0!1 A "#a$2Qr D8 a Ri[f\mIykIw0cuFcRı?lO7к_f˓[C$殷WF<_W ԣsKcëIzyQy/_LKℂ;C",pFA:/]=H  ~,ls/9ć:[=/#f;)x{ٛEQ )~ =𘙲r*2~ a _V=' kumFD}KYYC)({ *g&f`툪ry`=^cJ.I](*`wq1dđ#̩͑0;H]u搂@:~וKL Nsh}OIR*8:2 !lDJVo(3=M(zȰ+i*NAr6KnSl)!JJӁ* %݉?|D}d5:eP0R;{$X'xF@.ÊB {,WJuQɲRI;9QE琯62fT.DUJ;*cP A\ILNj!J۱+O\͔]ޒS߼Jȧc%ANolՎprULZԛerE2=XDXgVQeӓk yP7U*omQIs,K`)6\G3t?pgjrmۛجwluGtfh9uyP0D;Uڽ"OXlif$)&|ML0Zrm1[HXPlPR0'G=i2N+0e2]]9VTPO׮7h(F*癈'=QVZDF,d߬~TX G[`le69CR(!S2!P <0x<!1AQ "Raq02Br#SCTb ?Ζ"]mH5WR7k.ۛ!}Q~+yԏz|@T20S~Kek *zFf^2X*(@8r?CIuI|֓>^ExLgNUY+{.RѪ τV׸YTD I62'8Y27'\TP.6d&˦@Vqi|8-OΕ]ʔ U=TL8=;6c| !qfF3aů&~$l}'NWUs$Uk^SV:U# 6w++s&r+nڐ{@29 gL u"TÙM=6(^"7r}=6YݾlCuhquympǦ GjhsǜNlɻ}o7#S6aw4!OSrD57%|?x>L |/nD6?/8w#[)L7+6〼T ATg!%5MmZ/c-{1_Je"|^$'O&ޱմTrb$w)R$& N1EtdU3Uȉ1pM"N*(DNyd96.(jQ)X 5cQɎMyW?Q*!R>6=7)Xj5`J]e8%t!+'!1Q5 !1 AQaqё#2"0BRb?Gt^## .llQT $v,,m㵜5ubV =sY+@d{N! dnO<.-B;_wJt6;QJd.Qc%p{ 1,sNDdFHI0ГoXшe黅XۢF:)[FGXƹ/w_cMeD,ʡcc.WDtA$j@:) -# u c1<@ۗ9F)KJ-hpP]_x[qBlbpʖw q"LFGdƶ*s+ډ_Zc"?%t[IP 6J]#=ɺVvvCGsGh1 >)6|ey?Lӣm,4GWUi`]uJVoVDG< SB6ϏQ@ TiUlyOU0kfV~~}SZ@*WUUi##; s/[=!7}"WN]'(L! ~y5g9T̅JkbM' +s:S +B)v@Mj e Cf jE 0Y\QnzG1д~Wo{T9?`Rmyhsy3!HAD]mc1~2LSu7xT;j$`}4->L#vzŏILS ֭T{rjGKC;bpU=-`BsK.SFw4Mq]ZdHS0)tLg