Ë
    lQêjü  ã                   óª   — d dl Z d dlZd dlmZmZ d dlmZmZ d dlZd dl	m
Z
 d dlmZ  G d„ d«      Z G d„ d	e«      Z G d
„ de«      Z G d„ de«      Zy)é    N)ÚABCÚabstractmethod)ÚAnyÚSet)Úoverride)Ú	Annotatedc            
       ó¾   — e Zd ZU dZded<   eed<   ej                  ed<   dddeded	e	d
e	f
d„Z
ddedej                  fd„Zdd„Zdd„Zdej                  fd„Zdd„Zy)Ú
ConnectionzBA threadpool connection that returns itself to the pool on close()ÚPoolÚ_poolÚ_db_fileÚ_connÚpoolÚdb_fileÚis_uriÚargsÚkwargsc                 ó†   — || _         || _        t        j                  |g|¢­dd|dœ|¤Ž| _        d | j                  _        y )Niè  F)ÚtimeoutÚcheck_same_threadÚuri)r   r   Úsqlite3Úconnectr   Úisolation_level)Úselfr   r   r   r   r   s         úa/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/chromadb/db/impl/sqlite_pool.pyÚ__init__zConnection.__init__   sO   € ð ˆŒ
ØˆŒÜ—_‘_Øð
ØIMñ
Ø!°UÀñ
ØQWñ
ˆŒ
ð &*ˆ�
‰
Õ"ó    ÚsqlÚreturnc                 óx   — |du r| j                   j                  |«      S | j                   j                  ||«      S )N.)r   Úexecute)r   r   Ú
parameterss      r   r"   zConnection.execute   s6   € Ø˜ÑØ—:‘:×%Ñ% cÓ*Ð*Ø�z‰z×!Ñ! # zÓ2Ð2r   Nc                 ó8   — | j                   j                  «        y ©N)r   Úcommit©r   s    r   r&   zConnection.commit    s   € Ø�
‰
×ÑÕr   c                 ó8   — | j                   j                  «        y r%   )r   Úrollbackr'   s    r   r)   zConnection.rollback#   s   € Ø�
‰
×ÑÕr   c                 ó6   — | j                   j                  «       S r%   )r   Úcursorr'   s    r   r+   zConnection.cursor&   s   € Ø�z‰z× Ñ Ó"Ð"r   c                 ó8   — | j                   j                  «        y)z(Actually closes the connection to the dbN)r   Úcloser'   s    r   Úclose_actualzConnection.close_actual)   s   € à�
‰
×ÑÕr   ).©r    N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú__annotations__Ústrr   r
   Úboolr   r   ÚCursorr"   r&   r)   r+   r.   © r   r   r
   r
   
   s~   … ÙLàƒMØƒMØ×ÑÓð*Øð*Ø%(ð*Ø26ð*Ø?Bð*ØNQó*ñ3˜3ð 3°7·>±>ó 3ó
óð#˜Ÿ™ó #ôr   r
   c                   óx   — e Zd ZdZedededdfd„«       Zededede	fd	„«       Z
edd
„«       Zede	ddfd„«       Zy)r   zCAbstract base class for a pool of connections to a sqlite database.r   r   r    Nc                  ó   — y r%   r8   ©r   r   r   s      r   r   zPool.__init__1   ó   € àr   r   r   c                  ó   — y)z"Return a connection from the pool.Nr8   )r   r   r   s      r   r   zPool.connect5   ó   € ð 	r   c                  ó   — y)z"Close all connections in the pool.Nr8   r'   s    r   r-   z
Pool.close:   r>   r   Úconnc                  ó   — y)z Return a connection to the pool.Nr8   ©r   r@   s     r   Úreturn_to_poolzPool.return_to_pool?   r>   r   r/   )r0   r1   r2   r3   r   r5   r6   r   r   r
   r   r-   rC   r8   r   r   r   r   .   s‹   „ ÙMàð ð ¨Tð °dò ó ðð ð˜Sð ¨Cð °Jò ó ðð òó ðð ð :ð °$ò ó ñr   r   c                   óì   — e Zd ZU dZeeej                  ef      e	d<   e
j                  e	d<   e
j                  e	d<   ee	d<   ee	d<   ddedefd	„Zed
ededefd„«       Zededdfd„«       Zedd„«       Zy)ÚLockPoolaI  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                 ó¢   — t        «       | _        t        j                  «       | _        t        j
                  «       | _        || _        || _        y r%   )	ÚsetrF   Ú	threadingÚlocalrH   ÚRLockrG   r   rI   r;   s      r   r   zLockPool.__init__Q   s7   € Ü›EˆÔÜ$Ÿ?™?Ó,ˆÔÜ—_‘_Ó&ˆŒ
ØˆŒØˆ�r   r   r   r    c                 ó†  — | j                   j                  «        t        | j                  d«      r,| j                  j                  �| j                  j                  S t        | | j                  | j                  g|¢­i |¤Ž}|| j                  _        | j                  j                  t        j                  |«      «       |S ©Nr@   )rG   ÚacquireÚhasattrrH   r@   r
   r   rI   rF   ÚaddÚweakrefÚref©r   r   r   Únew_connections       r   r   zLockPool.connectX   s¡   € à�
‰
×ÑÔÜ�4×#Ñ# VÔ,°×1AÑ1A×1FÑ1FÐ1RØ×#Ñ#×(Ñ(Ð(ä'Ø�d—m‘m T§\¡\ðØ48òØ<BñˆNð %3ˆD×ÑÔ!Ø×Ñ×!Ñ!¤'§+¡+¨nÓ"=Ô>Ø!Ð!r   r@   Nc                 óX   — 	 | j                   j                  «        y # t        $ r Y y w xY wr%   )rG   ÚreleaseÚRuntimeErrorrB   s     r   rC   zLockPool.return_to_poole   s)   € ð	Ø�J‰J×ÑÕ øÜò 	Ùð	ús   ‚ �	)¨)c                 ó  — | j                   D ]  } |«       €Œ |«       j                  «        Œ! | j                   j                  «        t        j                  «       | _        	 | j                  j                  «        y # t        $ r Y y w xY wr%   )	rF   r.   ÚclearrL   rM   rH   rG   rY   rZ   rB   s     r   r-   zLockPool.closel   sw   € à×%Ñ%ò 	&ˆDÙ‹vÑ!Ù“×#Ñ#Õ%ð	&ð 	×Ñ×ÑÔ!Ü$Ÿ?™?Ó,ˆÔð	Ø�J‰J×ÑÕ øÜò 	Ùð	ús   Á#A> Á>	B
Â	B
©Fr/   )r0   r1   r2   r3   r   r   rT   ÚReferenceTyper
   r4   rL   rN   rM   r5   r6   r   r   r   r   rC   r-   r8   r   r   rE   rE   E   s´   … ñð
 �i × 5Ñ 5°zÐ AÑBÑCÓCØ�?‰?ÓØ—‘Ó ØƒMØƒMñ ð ¨Tó ð ð
"˜Sð 
"¨Cð 
"°Jò 
"ó ð
"ð ð :ð °$ò ó ðð ò	ó ñ	r   rE   c                   óì   — e Zd ZU dZeeej                  ef      e	d<   e
j                  e	d<   e
j                  e	d<   ee	d<   ee	d<   ddedefd	„Zed
ededefd„«       Zedd„«       Zededdfd„«       Zy)ÚPerThreadPoolz¾Maintains 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.
    rF   rG   rH   r   Ú_is_uri_r   r   c                 ó¢   — t        «       | _        t        j                  «       | _        t        j
                  «       | _        || _        || _        y r%   )	rK   rF   rL   rM   rH   ÚLockrG   r   rI   r;   s      r   r   zPerThreadPool.__init__„   s7   € Ü›EˆÔÜ$Ÿ?™?Ó,ˆÔÜ—^‘^Ó%ˆŒ
ØˆŒØˆ�r   r   r   r    c                 ó–  — t        | j                  d«      r,| j                  j                  �| j                  j                  S t        | | j                  | j
                  g|¢­i |¤Ž}|| j                  _        | j                  5  | j                  j                  t        j                  |«      «       d d d «       |S # 1 sw Y   |S xY wrP   )rR   rH   r@   r
   r   rI   rG   rF   rS   rT   rU   rV   s       r   r   zPerThreadPool.connect‹   s±   € ä�4×#Ñ# VÔ,°×1AÑ1A×1FÑ1FÐ1RØ×#Ñ#×(Ñ(Ð(ä'Ø�d—m‘m T§\¡\ðØ48òØ<BñˆNð %3ˆD×ÑÔ!Ø—‘ñ CØ×!Ñ!×%Ñ%¤g§k¡k°.Ó&AÔB÷Cà!Ð!÷Cà!Ð!ús   Â/B>Â>CNc                 ó  — | j                   5  | j                  D ]  } |«       €Œ |«       j                  «        Œ! | j                  j                  «        t	        j
                  «       | _        d d d «       y # 1 sw Y   y xY wr%   )rG   rF   r.   r\   rL   rM   rH   rB   s     r   r-   zPerThreadPool.close˜   sl   € à�Z‰Zñ 	1Ø×)Ñ)ò *�Ù“6Ñ%Ù“F×'Ñ'Õ)ð*ð ×Ñ×#Ñ#Ô%Ü(Ÿ™Ó0ˆDÔ÷	1÷ 	1ñ 	1ús   �A8¥A
A8Á8Br@   c                  ó   — y r%   r8   rB   s     r   rC   zPerThreadPool.return_to_pool¡   r<   r   r]   r/   )r0   r1   r2   r3   r   r   rT   r^   r
   r4   rL   rc   rM   r5   r6   r   r   r   r   r-   rC   r8   r   r   r`   r`   y   s´   … ñð �i × 5Ñ 5°zÐ AÑBÑCÓCØ�>‰>ÓØ—‘Ó ØƒMØƒNñ ð ¨Tó ð ð
"˜Sð 
"¨Cð 
"°Jò 
"ó ð
"ð ò1ó ð1ð ð :ð °$ò ó ñr   r`   )r   rT   Úabcr   r   Útypingr   r   rL   Ú	overridesr   Útyping_extensionsr   r
   r   rE   r`   r8   r   r   ú<module>rk      sJ   ðÛ Û ß #ß Û Ý Ý '÷!ñ !ôHˆ3ô ô.1ˆtô 1ôh*�Dõ *r   