
    LKi                         S SK r S SKrS SKJrJr  S SKJrJr  S SKrS SK	J
r
  S SKJr   " S S5      r " S S	\5      r " S
 S\5      r " S S\5      rg)    N)ABCabstractmethod)AnySet)override)	Annotatedc            
           \ rS rSr% SrS\S'   \\S'   \R                  \S'   SSS\S	\	S
\
S\
4
S jrSS\S\R                  4S jjrSS jrSS jrS\R                  4S jrSS jrSrg)
Connection
   zBA threadpool connection that returns itself to the pool on close()Pool_pool_db_file_connpooldb_fileis_uriargskwargsc                     Xl         X l        [        R                  " U/UQ7SSUS.UD6U l        S U R                  l        g )Ni  F)timeoutcheck_same_threaduri)r   r   sqlite3connectr   isolation_level)selfr   r   r   r   r   s         ^/var/www/html/dynamic-report/venv/lib/python3.13/site-packages/chromadb/db/impl/sqlite_pool.py__init__Connection.__init__   sK     
__
IM
!U
QW

 &*

"    sqlreturnc                 x    USL a  U R                   R                  U5      $ U R                   R                  X5      $ )N.)r   execute)r   r!   
parameterss      r   r$   Connection.execute   s4    ::%%c**zz!!#22r    Nc                 8    U R                   R                  5         g N)r   commitr   s    r   r)   Connection.commit    s    

r    c                 8    U R                   R                  5         g r(   )r   rollbackr*   s    r   r-   Connection.rollback#   s    

r    c                 6    U R                   R                  5       $ r(   )r   cursorr*   s    r   r0   Connection.cursor&   s    zz  ""r    c                 8    U R                   R                  5         g)z(Actually closes the connection to the dbN)r   closer*   s    r   close_actualConnection.close_actual)   s    

r    )r   r   r   ).r"   N)__name__
__module____qualname____firstlineno____doc____annotations__strr   r
   boolr   r   Cursorr$   r)   r-   r0   r4   __static_attributes__ r    r   r
   r
   
   s~    LMM**%(*26*?B*NQ*33 37>> 3
# #r    r
   c                       \ rS rSrSr\S\S\SS4S j5       r\S\	S	\	S\
4S
 j5       r\SS j5       r\S\
SS4S j5       rSrg)r   .   zCAbstract base class for a pool of connections to a sqlite database.r   r   r"   Nc                     g r(   rA   r   r   r   s      r   r   Pool.__init__1       r    r   r   c                     g)z"Return a connection from the pool.NrA   )r   r   r   s      r   r   Pool.connect5        	r    c                     g)z"Close all connections in the pool.NrA   r*   s    r   r3   
Pool.close:   rJ   r    connc                     g)z Return a connection to the pool.NrA   r   rM   s     r   return_to_poolPool.return_to_pool?   rJ   r    rA   r6   )r7   r8   r9   r:   r;   r   r=   r>   r   r   r
   r   r3   rP   r@   rA   r    r   r   r   .   s    M T d   S C J     : $  r    r   c                       \ rS rSr% Sr\\\R                  \	4      \
S'   \R                  \
S'   \R                  \
S'   \\
S'   \\
S'   SS\S	\4S
 jjr\S\S\S\	4S j5       r\S\	SS4S j5       r\SS j5       rSrg)LockPoolE   a=  A pool that has a single connection per thread but uses a lock to ensure that only one thread can use it at a time.
This is used because sqlite does not support multithreaded access with connection timeouts when using the
shared cache mode. We use the shared cache mode to allow multiple threads to share a database.
_connections_lock_connectionr   _is_urir   r   c                     [        5       U l        [        R                  " 5       U l        [        R
                  " 5       U l        Xl        X l        g r(   )	setrU   	threadinglocalrW   RLockrV   r   rX   rE   s      r   r   LockPool.__init__Q   s3    E$??,__&
r    r   r   r"   c                    U R                   R                  5         [        U R                  S5      (       a-  U R                  R                  b  U R                  R                  $ [        X R                  U R                  /UQ70 UD6nX0R                  l        U R                  R                  [        R                  " U5      5        U$ NrM   )rV   acquirehasattrrW   rM   r
   r   rX   rU   addweakrefrefr   r   r   new_connections       r   r   LockPool.connectX   s    

4##V,,1A1A1F1F1R##((('mmT\\48<BN %3!!!'++n"=>!!r    rM   Nc                 Z     U R                   R                  5         g ! [         a     g f = fr(   )rV   releaseRuntimeErrorrO   s     r   rP   LockPool.return_to_poole   s)    	JJ  		s    
**c                 &   U R                    H"  nU" 5       c  M  U" 5       R                  5         M$     U R                   R                  5         [        R                  " 5       U l         U R                  R                  5         g ! [         a     g f = fr(   )	rU   r4   clearr[   r\   rW   rV   rj   rk   rO   s     r   r3   LockPool.closel   sr    %%Dv!##% & 	!$??,	JJ  		s   (B 
BBrW   rU   r   rX   rV   Fr6   )r7   r8   r9   r:   r;   r   r   rd   ReferenceTyper
   r<   r[   r]   r\   r=   r>   r   r   r   r   rP   r3   r@   rA   r    r   rS   rS   E   s    
 i 5 5z ABCC?? MM T  
"S 
"C 
"J 
" 
" : $   	 	r    rS   c                       \ rS rSr% Sr\\\R                  \	4      \
S'   \R                  \
S'   \R                  \
S'   \\
S'   \\
S'   SS\S	\4S
 jjr\S\S\S\	4S j5       r\SS j5       r\S\	SS4S j5       rSrg)PerThreadPooly   zMaintains a connection per thread. For now this does not maintain a cap on the number of connections, but it could be
extended to do so and block on connect() if the cap is reached.
rU   rV   rW   r   _is_uri_r   r   c                     [        5       U l        [        R                  " 5       U l        [        R
                  " 5       U l        Xl        X l        g r(   )	rZ   rU   r[   r\   rW   LockrV   r   rX   rE   s      r   r   PerThreadPool.__init__   s3    E$??,^^%
r    r   r   r"   c                    [        U R                  S5      (       a-  U R                  R                  b  U R                  R                  $ [        X R                  U R
                  /UQ70 UD6nX0R                  l        U R                     U R                  R                  [        R                  " U5      5        S S S 5        U$ ! , (       d  f       U$ = fr`   )rb   rW   rM   r
   r   rX   rV   rU   rc   rd   re   rf   s       r   r   PerThreadPool.connect   s    4##V,,1A1A1F1F1R##((('mmT\\48<BN %3!!!%%gkk.&AB !! !!s   	0C
CNc                    U R                      U R                   H"  nU" 5       c  M  U" 5       R                  5         M$     U R                  R                  5         [        R
                  " 5       U l        S S S 5        g ! , (       d  f       g = fr(   )rV   rU   r4   rn   r[   r\   rW   rO   s     r   r3   PerThreadPool.close   s\    ZZ))6%F'') * ##%(0D ZZs   A=AA==
BrM   c                     g r(   rA   rO   s     r   rP   PerThreadPool.return_to_pool   rG   r    rp   rq   r6   )r7   r8   r9   r:   r;   r   r   rd   rr   r
   r<   r[   rx   r\   r=   r>   r   r   r   r   r3   rP   r@   rA   r    r   rt   rt   y   s     i 5 5z ABCC>> MN T  
"S 
"C 
"J 
" 
" 1 1 : $  r    rt   )r   rd   abcr   r   typingr   r   r[   	overridesr   typing_extensionsr   r
   r   rS   rt   rA   r    r   <module>r      sJ      #    '! !H3 .1t 1h*D *r    