Ë
    kQêjÏ  ã                   ó  — d dl Z d dlZd dlZd dlZd dlZ G d„ d«      Z e«       Zdej                  j                  fd„Z
 e
«       adej                  j                  fd„Zdad„ Z eed	«      r ej                   e¬
«       yy)é    Nc                   ó"   — e Zd ZdZd„ Zd„ Zd„ Zy)ÚBackgroundEventLoopzˆ
    A background event loop that can run futures.

    Used to bridge sync and async code, without messing with users event loops.
    c                 ó$   — | j                  «        y ©N)Ú_start©Úselfs    ú\/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/lancedb/background_loop.pyÚ__init__zBackgroundEventLoop.__init__   s   € Ø�‰�ó    c                 óÌ   — t        j                  «       | _        t        j                  | j                  j
                  dd¬«      | _        | j                  j                  «        y )NÚLanceDBBackgroundEventLoopT)ÚtargetÚnameÚdaemon)ÚasyncioÚnew_event_loopÚloopÚ	threadingÚThreadÚrun_foreverÚthreadÚstartr   s    r
   r   zBackgroundEventLoop._start   sI   € Ü×*Ñ*Ó,ˆŒ	Ü×&Ñ&Ø—9‘9×(Ñ(Ø-Øô
ˆŒð
 	�‰×ÑÕr   c                 ó    — t        j                  || j                  «      }	 |j                  «       S # t        $ r |j                  «        ‚ w xY wr   )r   Úrun_coroutine_threadsafer   ÚresultÚBaseExceptionÚcancel)r	   ÚfutureÚconcurrent_futures      r
   ÚrunzBackgroundEventLoop.run   sK   € Ü#×<Ñ<¸VÀTÇYÁYÓOÐð	Ø$×+Ñ+Ó-Ð-øÜò 	Ø×$Ñ$Ô&Øð	ús	   ¢2 ²AN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r!   © r   r
   r   r      s   „ ñòòór   r   Úreturnc                  óB   — t         j                  j                  d¬«      S )Nzlancedb-embedding)Úthread_name_prefix)Ú
concurrentÚfuturesÚThreadPoolExecutorr&   r   r
   Ú_new_embedding_executorr-   *   s   € Ü×Ñ×0Ñ0ÐDWÐ0ÓXÐXr   c                  ó   — t         S )zBReturn the executor dedicated to running blocking embedding calls.)Ú_EMBEDDING_EXECUTORr&   r   r
   Úembedding_executorr0   6   s   € äÐr   Fc                  óŠ   — t         j                  «        t        «       at        sdat        j                  dt        d¬«       y y )NTa  lancedb fork support is experimental: the internal async runtime has been reset in the forked child, but a small chance of deadlock remains if other state was mid-operation at fork time. The 'forkserver' or 'spawn' multiprocessing start method is likely a safer alternative.é   )Ú
stacklevel)ÚLOOPr   r-   r/   Ú_FORK_WARNEDÚwarningsÚwarnÚRuntimeWarningr&   r   r
   Ú_reset_after_forkr9   >   s>   € ô 	‡K�K„Mô 2Ó3ÐåØˆÜ�‰ð-ô
 Øö	
ð r   Úregister_at_fork)Úafter_in_child)r   Úconcurrent.futuresr*   Úosr   r6   r   r4   r+   r,   r-   r/   r0   r5   r9   Úhasattrr:   r&   r   r
   ú<module>r?      s–   ðó Û Û 	Û Û ÷ñ ñ8 Ó€ðY ×!3Ñ!3×!FÑ!Fó Yñ .Ó/Ð ð˜J×.Ñ.×AÑAó ð
 €ò
ñ6 ˆ2Ð!Ô"Ø€B×ÑÐ'8Ö9ð #r   