o
    wi                     @  s   d dl mZ d dlmZmZ d dlmZmZmZ d dl	m
Z
 d dlmZ ddlmZ ddlmZ dd	lmZ er@dd
lmZmZ dZG dd deZG dd deZG dd deZdS )    )annotations)ABCabstractmethod)TYPE_CHECKINGAnyoverload)	timedelta)Literal   )TransactionId)get_running_loop)DEFAULT_CONNECT_TIMEOUT)MetricsFormatDatasourceOverride)SyncAbstractEngineAsyncAbstractEnginec                   @  sN   e Zd ZU ded< dddd	d
ZedddddZedddddZdS )BaseAbstractEnginestrZdmlNtimeoutr   timedelta | NonereturnNonec                C  sN   | j |d zt }W n
 ty   Y dS w | s%|| j|d dS dS )z6Wrapper for synchronously calling close() and aclose()r   N)closer   RuntimeError	is_closedcreate_taskaclose)selfr   loop r    N/home/app/Keep/.python/lib/python3.10/site-packages/prisma/engine/_abstract.pystop   s   
zBaseAbstractEngine.stopc                C     dS )z\Synchronous method for closing the engine, useful if the underlying engine uses a subprocessNr    r   r   r    r    r!   r   %      zBaseAbstractEngine.closec                     dS )z\Asynchronous method for closing the engine, only used if an asynchronous client is generatedNr    r$   r    r    r!   r   +      zBaseAbstractEngine.aclose)r   r   r   r   )__name__
__module____qualname____annotations__r"   r   r   r   r    r    r    r!   r      s   
 r   c                   @     e Zd Zeedfd$dd	Zed%ddZed&ddZed'ddZed'ddZ	e
ed(ddZe
ed)d dZed*d#dZdS )+r   Nr   r   datasourceslist[DatasourceOverride] | Noner   r   c                 C  r#   zConnect to the engineNr    r   r   r-   r    r    r!   connect2      zSyncAbstractEngine.connectcontentr   tx_idTransactionId | Noner   c                C  r#   zExecute a GraphQL query.

        This method expects a JSON object matching this structure:

        {
            'variables': {},
            'operation_name': str,
            'query': str,
        }
        Nr    r   r3   r4   r    r    r!   query;   s   zSyncAbstractEngine.queryr   c                C  r#   znStart an interactive transaction, returns the transaction ID that can be used to perform subsequent operationsNr    r   r3   r    r    r!   start_transactionI   r%   z$SyncAbstractEngine.start_transactionc                 C  r#   zQCommit an interactive transaction, the given transaction will no longer be usableNr    r   r4   r    r    r!   commit_transactionN   r%   z%SyncAbstractEngine.commit_transactionc                 C  r#   zSRollback an interactive transaction, the given transaction will no longer be usableNr    r=   r    r    r!   rollback_transactionS   r%   z'SyncAbstractEngine.rollback_transactionformatLiteral['json']global_labelsdict[str, str] | Nonedict[str, Any]c                C     d S Nr    r   rA   rC   r    r    r!   metricsX   r2   zSyncAbstractEngine.metricsLiteral['prometheus']c                C  rF   rG   r    rH   r    r    r!   rI   a   r2   r   str | dict[str, Any]c                C  rF   rG   r    rH   r    r    r!   rI   j   s   r   r   r-   r.   r   r   r3   r   r4   r5   r   r   r3   r   r   r   r4   r   r   r   rA   rB   rC   rD   r   rE   rA   rJ   rC   rD   r   r   rA   r   rC   rD   r   rK   r(   r)   r*   r   r   r1   r8   r;   r>   r@   r   rI   r    r    r    r!   r   1   *    r   c                   @  r,   )+r   Nr   r   r-   r.   r   r   c                   r&   r/   r    r0   r    r    r!   r1   t      zAsyncAbstractEngine.connectr3   r   r4   r5   r   c                  r&   r6   r    r7   r    r    r!   r8   }   s   zAsyncAbstractEngine.queryr   c                  r&   r9   r    r:   r    r    r!   r;      r'   z%AsyncAbstractEngine.start_transactionc                   r&   r<   r    r=   r    r    r!   r>      r'   z&AsyncAbstractEngine.commit_transactionc                   r&   r?   r    r=   r    r    r!   r@      r'   z(AsyncAbstractEngine.rollback_transactionrA   rB   rC   rD   rE   c                     d S rG   r    rH   r    r    r!   rI      rU   zAsyncAbstractEngine.metricsrJ   c                  rV   rG   r    rH   r    r    r!   rI      rU   r   rK   c                  rV   rG   r    rH   r    r    r!   rI      s   rL   rM   rN   rO   rP   rQ   rR   rS   r    r    r    r!   r   s   rT   r   N)
__future__r   abcr   r   typingr   r   r   datetimer   Ztyping_extensionsr	   _typesr   _compatr   
_constantsr   typesr   r   __all__r   r   r   r    r    r    r!   <module>   s    B