o
    Šåg�  ã                   @  s”   d dl mZ d dlZd dlZd dlmZ d dlmZ ejr/ddlmZ ddl	m
Z
 ddl	mZ G d	d
„ d
ejƒZG dd„ deƒZG dd„ deƒZdS )é    )ÚannotationsN)ÚAny)ÚClassVaré   )Ú
Connection)ÚDBAPIConnection)ÚDialectc                   @  sf   e Zd ZU dZdZdZded< ejddd„ƒZ	ejddd„ƒZ
ddd„Zejddd„ƒZddd„ZdS ) ÚConnectionCharacteristica÷  An abstract base for an object that can set, get and reset a
    per-connection characteristic, typically one that gets reset when the
    connection is returned to the connection pool.

    transaction isolation is the canonical example, and the
    ``IsolationLevelCharacteristic`` implementation provides this for the
    ``DefaultDialect``.

    The ``ConnectionCharacteristic`` class should call upon the ``Dialect`` for
    the implementation of each method.   The object exists strictly to serve as
    a dialect visitor that can be placed into the
    ``DefaultDialect.connection_characteristics`` dictionary where it will take
    effect for calls to :meth:`_engine.Connection.execution_options` and
    related APIs.

    .. versionadded:: 1.4

    © FúClassVar[bool]ÚtransactionalÚdialectr   Ú
dbapi_connr   ÚreturnÚNonec                 C  ó   dS )zNReset the characteristic on the DBAPI connection to its default
        value.Nr
   ©Úselfr   r   r
   r
   ú]/var/www/html/flaskapp/venv/lib/python3.10/site-packages/sqlalchemy/engine/characteristics.pyÚreset_characteristic,   ó    z-ConnectionCharacteristic.reset_characteristicÚvaluer   c                 C  r   )z<set characteristic on the DBAPI connection to a given value.Nr
   ©r   r   r   r   r
   r
   r   Úset_characteristic3   r   z+ConnectionCharacteristic.set_characteristicÚconnr   c                 C  s   |   |||¡ dS )zÜset characteristic on the :class:`_engine.Connection` to a given
        value.

        .. versionadded:: 2.0.30 - added to support elements that are local
           to the :class:`_engine.Connection` itself.

        N)r   ©r   r   r   r   r   r
   r
   r   Úset_connection_characteristic9   s   z6ConnectionCharacteristic.set_connection_characteristicc                 C  r   )zXGiven a DBAPI connection, get the current value of the
        characteristic.

        Nr
   r   r
   r
   r   Úget_characteristicI   r   z+ConnectionCharacteristic.get_characteristicc                 C  s   |   ||¡S )zæGiven a :class:`_engine.Connection`, get the current value of the
        characteristic.

        .. versionadded:: 2.0.30 - added to support elements that are local
           to the :class:`_engine.Connection` itself.

        )r   ©r   r   r   r   r
   r
   r   Úget_connection_characteristicR   s   
z6ConnectionCharacteristic.get_connection_characteristicN©r   r   r   r   r   r   ©r   r   r   r   r   r   r   r   ©
r   r   r   r   r   r   r   r   r   r   ©r   r   r   r   r   r   ©r   r   r   r   r   r   r   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú	__slots__r   Ú__annotations__ÚabcÚabstractmethodr   r   r   r   r   r
   r
   r
   r   r	      s   
 
r	   c                   @  s<   e Zd ZU dZdZded< ddd„Zddd„Zddd„ZdS )ÚIsolationLevelCharacteristicz0Manage the isolation level on a DBAPI connectionTr   r   r   r   r   r   r   r   c                 C  s   |  |¡ d S ©N)Úreset_isolation_levelr   r
   r
   r   r   d   ó   z1IsolationLevelCharacteristic.reset_characteristicr   r   c                 C  s   |  ||¡ d S r.   )Ú_assert_and_set_isolation_levelr   r
   r
   r   r   i   s   z/IsolationLevelCharacteristic.set_characteristicc                 C  s
   |  |¡S r.   )Úget_isolation_levelr   r
   r
   r   r   n   s   
z/IsolationLevelCharacteristic.get_characteristicNr    r!   r#   )	r%   r&   r'   r(   r   r*   r   r   r   r
   r
   r
   r   r-   _   s   
 

r-   c                   @  sP   e Zd ZU dZdZded< ddd„Zddd„Zddd„Zddd„Z	ddd„Z
dS )ÚLoggingTokenCharacteristiczgManage the 'logging_token' option of a :class:`_engine.Connection`.

    .. versionadded:: 2.0.30

    Fr   r   r   r   r   r   r   r   c                 C  s   d S r.   r
   r   r
   r
   r   r   }   s   z/LoggingTokenCharacteristic.reset_characteristicr   r   c                 C  ó   t ƒ ‚r.   ©ÚNotImplementedErrorr   r
   r
   r   r   ‚   ó   z-LoggingTokenCharacteristic.set_characteristicr   r   c                   s   ˆ r‡ fdd„|_ d S |` d S )Nc                   s   dˆ | f S )Nz[%s] %sr
   )Úmsg©r   r
   r   Ú<lambda>�   s    zJLoggingTokenCharacteristic.set_connection_characteristic.<locals>.<lambda>)Ú_message_formatterr   r
   r9   r   r   ‡   s   z8LoggingTokenCharacteristic.set_connection_characteristicc                 C  r4   r.   r5   r   r
   r
   r   r   “   r7   z-LoggingTokenCharacteristic.get_characteristicc                 C  s   |j  dd ¡S )NÚlogging_token)Ú_execution_optionsÚgetr   r
   r
   r   r   ˜   r0   z8LoggingTokenCharacteristic.get_connection_characteristicNr    r!   r"   r#   r$   )r%   r&   r'   r(   r   r*   r   r   r   r   r   r
   r
   r
   r   r3   t   s   
 



r3   )Ú
__future__r   r+   Útypingr   r   ÚTYPE_CHECKINGÚbaser   Ú
interfacesr   r   ÚABCr	   r-   r3   r
   r
   r
   r   Ú<module>   s   K