� l\�g]3����ddlmZddlZddlmZddlmZddlmZddlmZddlmZdd lm Z dd lm Z dd lm Z d d l m Z d dl mZejr d dlmZd dlmZGd�de je ��ZdS)�)� annotationsN)�Any)�Optional)�Type)�Union�)�ConnectionPoolEntry)�Pool)�PoolProxiedConnection)�PoolResetState�)�event)�util)�Engine)�DBAPIConnectionc���eZdZdZdZeZejd��e d)d �����Z e d*d���Z d+d�Z d+d�Z d,d�Zd-d�Zejdddgd���d.d ���Zd/d#�Zd/d$�Zd+d%�Zd+d&�Zd0d'�Zd(S)1� PoolEventsa�Available events for :class:`_pool.Pool`. The methods here define the name of an event as well as the names of members that are passed to listener functions. e.g.:: from sqlalchemy import event def my_on_checkout(dbapi_conn, connection_rec, connection_proxy): "handle an on checkout event" event.listen(Pool, "checkout", my_on_checkout) In addition to accepting the :class:`_pool.Pool` class and :class:`_pool.Pool` instances, :class:`_events.PoolEvents` also accepts :class:`_engine.Engine` objects and the :class:`_engine.Engine` class as targets, which will be resolved to the ``.pool`` attribute of the given engine or the :class:`_pool.Pool` class:: engine = create_engine("postgresql+psycopg2://scott:tiger@localhost/test") # will associate with engine.pool event.listen(engine, "checkout", my_on_checkout) �SomeEngineOrPoolzsqlalchemy.engine�target�-Union[Pool, Type[Pool], Engine, Type[Engine]]� identifier�str�return�!Optional[Union[Pool, Type[Pool]]]c�|�tjstjjj}t |t��r0t||��rtSt|t��sJ�|St ||��r|j St |t��r|St|d��r|� ��dSdS)N�_no_async_engine_events) �typing� TYPE_CHECKINGr� preloaded�enginer� isinstance�type� issubclassr �pool�hasattrr)�clsrrrs �f/home/asafur/pinokio/api/open-webui.git/app/env/lib/python3.11/site-packages/sqlalchemy/pool/events.py� _accept_withzPoolEvents._accept_with=s����#� 2��^�*�1�F� �f�d� #� #� ��&�&�)�)� �� �!�&�$�/�/�/�/�/�� � ��� '� '� ��;� � ��� %� %� ��M� �V�6� 7� 7� � � *� *� ,� ,� ,� ,� ,��4�� event_key�event._EventKey[Pool]�kwr�Nonec �d�|j}|�d|j��|jdi|��dS)N�asyncio�)�dispatch_target� setdefault� _is_asyncio� base_listen)r&r*r,rs r'�_listenzPoolEvents._listenVsB�� �*�� � � �i��!3�4�4�4�� ��#�#��#�#�#�#�#r)�dbapi_connectionr�connection_recordr c��dS)aCalled at the moment a particular DBAPI connection is first created for a given :class:`_pool.Pool`. This event allows one to capture the point directly after which the DBAPI module-level ``.connect()`` method has been used in order to produce a new DBAPI connection. :param dbapi_connection: a DBAPI connection. The :attr:`.ConnectionPoolEntry.dbapi_connection` attribute. :param connection_record: the :class:`.ConnectionPoolEntry` managing the DBAPI connection. Nr0��selfr6r7s r'�connectzPoolEvents.connectb����r)c��dS)a)Called exactly once for the first time a DBAPI connection is checked out from a particular :class:`_pool.Pool`. The rationale for :meth:`_events.PoolEvents.first_connect` is to determine information about a particular series of database connections based on the settings used for all connections. Since a particular :class:`_pool.Pool` refers to a single "creator" function (which in terms of a :class:`_engine.Engine` refers to the URL and connection options used), it is typically valid to make observations about a single connection that can be safely assumed to be valid about all subsequent connections, such as the database version, the server and client encoding settings, collation settings, and many others. :param dbapi_connection: a DBAPI connection. The :attr:`.ConnectionPoolEntry.dbapi_connection` attribute. :param connection_record: the :class:`.ConnectionPoolEntry` managing the DBAPI connection. Nr0r9s r'� first_connectzPoolEvents.first_connectvr<r)�connection_proxyr c��dS)a�Called when a connection is retrieved from the Pool. :param dbapi_connection: a DBAPI connection. The :attr:`.ConnectionPoolEntry.dbapi_connection` attribute. :param connection_record: the :class:`.ConnectionPoolEntry` managing the DBAPI connection. :param connection_proxy: the :class:`.PoolProxiedConnection` object which will proxy the public interface of the DBAPI connection for the lifespan of the checkout. If you raise a :class:`~sqlalchemy.exc.DisconnectionError`, the current connection will be disposed and a fresh connection retrieved. Processing of all checkout listeners will abort and restart using the new connection. .. seealso:: :meth:`_events.ConnectionEvents.engine_connect` - a similar event which occurs upon creation of a new :class:`_engine.Connection`. Nr0)r:r6r7r?s r'�checkoutzPoolEvents.checkout�r<r)�Optional[DBAPIConnection]c��dS)a�Called when a connection returns to the pool. Note that the connection may be closed, and may be None if the connection has been invalidated. ``checkin`` will not be called for detached connections. (They do not return to the pool.) :param dbapi_connection: a DBAPI connection. The :attr:`.ConnectionPoolEntry.dbapi_connection` attribute. :param connection_record: the :class:`.ConnectionPoolEntry` managing the DBAPI connection. Nr0r9s r'�checkinzPoolEvents.checkin�r<r)z2.0c� �||fS)Nr0)r6r7� reset_states r'�<lambda>zPoolEvents.<lambda>�s�� � �B �r)rFr c��dS)a�Called before the "reset" action occurs for a pooled connection. This event represents when the ``rollback()`` method is called on the DBAPI connection before it is returned to the pool or discarded. A custom "reset" strategy may be implemented using this event hook, which may also be combined with disabling the default "reset" behavior using the :paramref:`_pool.Pool.reset_on_return` parameter. The primary difference between the :meth:`_events.PoolEvents.reset` and :meth:`_events.PoolEvents.checkin` events are that :meth:`_events.PoolEvents.reset` is called not just for pooled connections that are being returned to the pool, but also for connections that were detached using the :meth:`_engine.Connection.detach` method as well as asyncio connections that are being discarded due to garbage collection taking place on connections before the connection was checked in. Note that the event **is not** invoked for connections that were invalidated using :meth:`_engine.Connection.invalidate`. These events may be intercepted using the :meth:`.PoolEvents.soft_invalidate` and :meth:`.PoolEvents.invalidate` event hooks, and all "connection close" events may be intercepted using :meth:`.PoolEvents.close`. The :meth:`_events.PoolEvents.reset` event is usually followed by the :meth:`_events.PoolEvents.checkin` event, except in those cases where the connection is discarded immediately after reset. :param dbapi_connection: a DBAPI connection. The :attr:`.ConnectionPoolEntry.dbapi_connection` attribute. :param connection_record: the :class:`.ConnectionPoolEntry` managing the DBAPI connection. :param reset_state: :class:`.PoolResetState` instance which provides information about the circumstances under which the connection is being reset. .. versionadded:: 2.0 .. seealso:: :ref:`pool_reset_on_return` :meth:`_events.ConnectionEvents.rollback` :meth:`_events.ConnectionEvents.commit` Nr0)r:r6r7rFs r'�resetzPoolEvents.reset�r<r)� exception�Optional[BaseException]c��dS)a!Called when a DBAPI connection is to be "invalidated". This event is called any time the :meth:`.ConnectionPoolEntry.invalidate` method is invoked, either from API usage or via "auto-invalidation", without the ``soft`` flag. The event occurs before a final attempt to call ``.close()`` on the connection occurs. :param dbapi_connection: a DBAPI connection. The :attr:`.ConnectionPoolEntry.dbapi_connection` attribute. :param connection_record: the :class:`.ConnectionPoolEntry` managing the DBAPI connection. :param exception: the exception object corresponding to the reason for this invalidation, if any. May be ``None``. .. seealso:: :ref:`pool_connection_invalidation` Nr0�r:r6r7rJs r'� invalidatezPoolEvents.invalidater<r)c��dS)aNCalled when a DBAPI connection is to be "soft invalidated". This event is called any time the :meth:`.ConnectionPoolEntry.invalidate` method is invoked with the ``soft`` flag. Soft invalidation refers to when the connection record that tracks this connection will force a reconnect after the current connection is checked in. It does not actively close the dbapi_connection at the point at which it is called. :param dbapi_connection: a DBAPI connection. The :attr:`.ConnectionPoolEntry.dbapi_connection` attribute. :param connection_record: the :class:`.ConnectionPoolEntry` managing the DBAPI connection. :param exception: the exception object corresponding to the reason for this invalidation, if any. May be ``None``. Nr0rMs r'�soft_invalidatezPoolEvents.soft_invalidate!r<r)c��dS)a�Called when a DBAPI connection is closed. The event is emitted before the close occurs. The close of a connection can fail; typically this is because the connection is already closed. If the close operation fails, the connection is discarded. The :meth:`.close` event corresponds to a connection that's still associated with the pool. To intercept close events for detached connections use :meth:`.close_detached`. :param dbapi_connection: a DBAPI connection. The :attr:`.ConnectionPoolEntry.dbapi_connection` attribute. :param connection_record: the :class:`.ConnectionPoolEntry` managing the DBAPI connection. Nr0r9s r'�closezPoolEvents.close=r<r)c��dS)a�Called when a DBAPI connection is "detached" from a pool. This event is emitted after the detach occurs. The connection is no longer associated with the given connection record. :param dbapi_connection: a DBAPI connection. The :attr:`.ConnectionPoolEntry.dbapi_connection` attribute. :param connection_record: the :class:`.ConnectionPoolEntry` managing the DBAPI connection. Nr0r9s r'�detachzPoolEvents.detachVr<r)c��dS)a�Called when a detached DBAPI connection is closed. The event is emitted before the close occurs. The close of a connection can fail; typically this is because the connection is already closed. If the close operation fails, the connection is discarded. :param dbapi_connection: a DBAPI connection. The :attr:`.ConnectionPoolEntry.dbapi_connection` attribute. Nr0)r:r6s r'�close_detachedzPoolEvents.close_detachedhr<r)N)rrrrrr)r*r+r,rrr-)r6rr7r rr-)r6rr7r r?r rr-)r6rBr7r rr-)r6rr7r rFr rr-)r6rr7r rJrKrr-)r6rrr-)�__name__� __module__� __qualname__�__doc__�_target_class_docr �_dispatch_targetr�preload_module� classmethodr(r5r;r>rArDr�_legacy_signaturerIrNrPrRrTrVr0r)r'rrs���������<+�����T��,�-�-������[�.�-��.� $� $� $��[� $� � � � �( � � � �: � � � �: � � � �&�U�� � �0�1� � ���6 �6 �6 ���6 �p � � � �< � � � �8 � � � �2 � � � �$  �  �  �  �  �  r)r)� __future__rrrrrr�baser r r r �rrrr r�engine.interfacesr�Eventsrr0r)r'�<module>resJ��#�"�"�"�"�"� � � � �������������������������%�%�%�%�%�%�������'�'�'�'�'�'� � � � � � ������������� ��4�������3�3�3�3�3�3�Y �Y �Y �Y �Y ���d�#�Y �Y �Y �Y �Y r)
Memory