o
    i                     @  sf  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 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 d dlmZ ddlmZ ddlmZ erWd dlmZ neZeeeeef Zee	e e
edf eeef df Zedee
e e
eef f ZG dd dZG dd deZedddZG dd deZedddZG dd deZd#d!d"Z dS )$    )annotations)ABC)abstractmethod)datetime)Any)Dict)List)Tuple)TYPE_CHECKING)TypeVar)Union   )	ResultSet)Value)ReadableBuffer.N	Statementc                   @  s:   e Zd ZU ded< ded< ddddZeddddZdS )r   strsqlInArgsargsNc                 C  s   || _ || _d S N)r   r   )selfr   r    r   H/home/ubuntu/.local/lib/python3.10/site-packages/libsql_client/client.py__init__   s   
zStatement.__init__stmtInStatementreturnc                 C  s   t | tr1t| dkrt| d |S t| dkr"tdt|  d|r(tdt| d | d S t | tr>|r<td| S t| |S )Nr   r      z2Statement must be a 1-tuple or 2-tuple, but got a z-tuplez:Cannot pass additional args to a statement passed as tuplez3Cannot pass additional args to a Statement instance)
isinstancetuplelenr   	TypeError)r   r   r   r   r   convert#   s&   


zStatement.convertr   )r   r   r   r   )r   r   r   r   r   r   )__name__
__module____qualname____annotations__r   staticmethodr#   r   r   r   r   r      s   
 c                      s0   e Zd ZU ded< ded< d fddZ  ZS )LibsqlErrorr   codeexplanationmessagec                   s*   t t| | d|  || _|| _d S )Nz: )superRuntimeErrorr   r*   r+   )r   r,   r*   	__class__r   r   r   =   s   
zLibsqlError.__init__)r,   r   r*   r   )r$   r%   r&   r'   r   __classcell__r   r   r/   r   r)   9   s   
 r)   TClientClient)boundc                   @  sl   e Zd Zed"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	d(ddZ
d)d d!ZdS )*r3   Nr   r   r   r   r   r   c                      d S r   r   r   r   r   r   r   r   executeG      zClient.executestmtsList[InStatement]List[ResultSet]c                   r5   r   r   )r   r9   r   r   r   batchK   r8   zClient.batchTransactionc                 C     d S r   r   r   r   r   r   transactionO      zClient.transactionNonec                   r5   r   r   r?   r   r   r   closeS   r8   zClient.closeboolc                 C  r>   r   r   r?   r   r   r   closedW      zClient.closedr   r2   c                   s   | S r   r   r?   r   r   r   
__aenter__\   s   zClient.__aenter__exc_typer   exc_valexc_tbc                   s   |   I d H  d S r   rC   r   rH   rI   rJ   r   r   r   	__aexit___   s   zClient.__aexit__r   r   r   r   r   r   r   )r9   r:   r   r;   )r   r=   r   rB   r   rD   )r   r2   r   r2   rH   r   rI   r   rJ   r   r   rB   )r$   r%   r&   r   r7   r<   r@   rC   propertyrE   rG   rM   r   r   r   r   r3   F       
TTransactionr=   c                   @  sl   e Zd Zed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	d"ddZ
d#ddZdS )$r=   Nr   r   r   r   r   r   c                   r5   r   r   r6   r   r   r   r7   g   r8   zTransaction.executerB   c                   r5   r   r   r?   r   r   r   rollbackk   r8   zTransaction.rollbackc                   r5   r   r   r?   r   r   r   commito   r8   zTransaction.commitc                 C  r>   r   r   r?   r   r   r   rC   s   rA   zTransaction.closerD   c                 C  r>   r   r   r?   r   r   r   rE   w   rF   zTransaction.closedr   rT   c                 C  s   | S r   r   r?   r   r   r   	__enter__|   s   zTransaction.__enter__rH   r   rI   rJ   c                 C  s   |    d S r   rK   rL   r   r   r   __exit__   s   zTransaction.__exit__r   rN   rO   rP   )r   rT   r   rT   rQ   )r$   r%   r&   r   r7   rU   rV   rC   rR   rE   rW   rX   r   r   r   r   r=   f   rS   in_valueInValuer   r   c                 C  sT   t | trt|  d S t | trt| S t | tttfs"| d u r$| S tt| S )Ni  )	r   r   int	timestamprD   r   floatbytes
memoryview)rY   r   r   r   _normalize_value   s   

r`   )rY   rZ   r   r   )!
__future__r   abcr   r   r   typingr   r   r   r	   r
   r   r   resultr   r   	_typeshedr   r^   rD   rZ   r   r   r   r   r.   r)   r2   r3   rT   r=   r`   r   r   r   r   <module>   s4    $
