Ë
    lQêja)  ã                   óà  — d dl mZ d dlmZmZmZmZmZmZ d dl	Z	d dl
mZmZmZ d dlZd dlmZmZ d dlmZ d dlmZ d dlmZ d d	lmZmZmZ d d
lmZmZmZm Z m!Z! d dl"m#Z#m$Z$m%Z%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/  e+j`                  «       dk7  rd dl1Z1n e+j`                  «       dk(  rd dl2Z2ejf                  dejh                  dejj                  diZ6 G d„ de«      Z7dede dedefd„Z8y)é    )ÚLock)ÚSegmentImplementationÚSegmentManagerÚMetadataReaderÚSegmentTypeÚVectorReaderÚSN)ÚSegmentLRUCacheÚ
BasicCacheÚSegmentCache)ÚSystemÚ	get_class)ÚSysDB)Úoverride)ÚPersistentLocalHnswSegment)ÚOpenTelemetryClientÚOpenTelemetryGranularityÚtrace_method)Ú
CollectionÚ	OperationÚSegmentÚSegmentScopeÚMetadata)ÚDictÚTypeÚSequenceÚOptionalÚcast)ÚUUIDÚuuid4)ÚLRUCache)Úget_directory_sizeÚWindowsz;chromadb.segment.impl.metadata.sqlite.SqliteMetadataSegmentz8chromadb.segment.impl.vector.local_hnsw.LocalHnswSegmentzMchromadb.segment.impl.vector.local_persistent_hnsw.PersistentLocalHnswSegmentc                   ó¾  ‡ — e Zd ZU eed<   eed<   eed<   eee	f   ed<   e
eef   ed<   ej                  Zeed<   eed<   eed<   d	efˆ fd
„Z edej(                  «      deddfd„«       Zed%ˆ fd„«       Zed%ˆ fd„«       Zed%ˆ fd„«       Z edej(                  «      ededee   fd„«       «       Z edej(                  «      ededee   fd„«       «       Zdedefd„Z edej(                  «      dede defd„«       Z! edej(                  «      dede"e#   de#fd„«       Z$ ed ej(                  «      eded!e%ddfd"„«       «       Z&dede"e	   fd#„Z'dede	fd$„Z(ˆ xZ)S )&ÚLocalSegmentManagerÚ_sysdbÚ_systemÚ_opentelemetry_clientÚ
_instancesÚ#_vector_instances_file_handle_cacheÚ_vector_segment_typeÚ_lockÚ_max_file_handlesÚsystemc                 ó6  •‡ — t         ‰‰ �  |«       ‰ j                  t        «      ‰ _        |‰ _        |j                  t        «      ‰ _        t        j                  t        «      ‰ _        i ‰ _        t        j                  t        «       i‰ _        |j"                  j$                  dk(  r]|j"                  j&                  dkD  rDt)        |j"                  j&                  ˆ fd„ˆ fd„¬«      ‰ j                   t        j*                  <   n%t        «       ‰ j                   t        j*                  <   t-        «       ‰ _        ‰ j
                  j"                  j                  d«      rºt0        j2                  ‰ _        t7        j8                  «       dk7  r,t;        j<                  t:        j>                  «      d   ‰ _         n-tB        jD                  jF                  jI                  «       ‰ _         ‰ j@                  tK        jL                  «       z  }tO        |d„ ¬	«      ‰ _(        y y )
NÚLRUr   c                 ó&   •— ‰j                  |«      S ©N)Úcallback_cache_evict)ÚkÚvÚselfs     €úh/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/chromadb/segment/impl/manager/local.pyú<lambda>z.LocalSegmentManager.__init__.<locals>.<lambda>N   s   ø€  d×&?Ñ&?ÀÓ&B€ ó    c                 ó&   •— ‰j                  | «      S r2   )Ú_get_segment_disk_size)r4   r6   s    €r7   r8   z.LocalSegmentManager.__init__.<locals>.<lambda>O   s   ø€  D×$?Ñ$?ÀÓ$B€ r9   )ÚcapacityÚcallbackÚ	size_funcÚis_persistentr#   c                 ó"   — |j                  «       S r2   )Úclose_persistent_index)Ú_r5   s     r7   r8   z.LocalSegmentManager.__init__.<locals>.<lambda>d   s   € °Q×5MÑ5MÓ5O€ r9   )r=   ))ÚsuperÚ__init__Úrequirer   r&   r'   r   r(   ÚloggingÚ	getLoggerÚ__name__Úloggerr)   r   ÚMETADATAr   Úsegment_cacheÚsettingsÚchroma_segment_cache_policyÚchroma_memory_limit_bytesr
   ÚVECTORr   r,   r   ÚHNSW_LOCAL_PERSISTEDr+   Úplatformr.   ÚresourceÚ	getrlimitÚRLIMIT_NOFILEr-   ÚctypesÚwindllÚmsvcrtÚ_getmaxstdior   Úget_file_handle_countr!   r*   )r6   r.   Úsegment_limitÚ	__class__s   `  €r7   rD   zLocalSegmentManager.__init__>   sŽ  ù€ Ü‰Ñ˜Ô Ø—l‘l¤5Ó)ˆŒØˆŒØ%+§^¡^Ô4GÓ%HˆÔ"Ü×'Ñ'¬Ó1ˆŒØˆŒä×!Ñ!¤:£<ð@
ˆÔð �O‰O×7Ñ7¸5Ò@Ø—‘×9Ñ9¸AÒ=ä6EØŸ™×BÑBÛBÛBô7ˆD×Ñœ|×2Ñ2Ò3ô 7A³lˆD×Ñœ|×2Ñ2Ñ3ä“VˆŒ
ð �<‰<× Ñ ×(Ñ(¨Ô9Ü(3×(HÑ(HˆDÔ%Ü�‰Ó  IÒ-Ü)1×);Ñ);¼H×<RÑ<RÓ)SÐTUÑ)V�Õ&ä)/¯©×)=Ñ)=×)JÑ)JÓ)L�Ô&à×&Ñ&ä-×CÑCÓEñFð ô
 8@ØÑ(Oô8ˆDÕ4ð :r9   z(LocalSegmentManager.callback_cache_evictÚsegmentÚreturnNc                 ó¬   — |d   }| j                   j                  d|› �«       | j                  |«      }|j                  «        | j                  |d   = y )NÚ
collectionzLRU cache evict collection Úid)rI   ÚinfoÚ	_instanceÚstopr)   )r6   r\   Úcollection_idÚinstances       r7   r3   z(LocalSegmentManager.callback_cache_evictg   sO   € ð
   Ñ-ˆØ�‰×ÑÐ6°}°oÐFÔGØ—>‘> 'Ó*ˆØ�‰ŒØ�O‰O˜G D™MÑ*r9   c                 ó€   •— | j                   j                  «       D ]  }|j                  «        Œ t        ‰| �	  «        y r2   )r)   ÚvaluesÚstartrC   ©r6   re   r[   s     €r7   rh   zLocalSegmentManager.startr   s2   ø€ àŸ™×.Ñ.Ó0ò 	ˆHØ�N‰NÕð	ä‰‰�r9   c                 ó€   •— | j                   j                  «       D ]  }|j                  «        Œ t        ‰| �	  «        y r2   )r)   rg   rc   rC   ri   s     €r7   rc   zLocalSegmentManager.stopx   s1   ø€ àŸ™×.Ñ.Ó0ò 	ˆHØ�M‰M�Oð	ä‰‰�r9   c                 ó  •— | j                   j                  «       D ]"  }|j                  «        |j                  «        Œ$ i | _         | j                  t
        j                     j                  «        t        ‰| �  «        y r2   )	r)   rg   rc   Úreset_staterK   r   rO   ÚresetrC   ri   s     €r7   rl   zLocalSegmentManager.reset_state~   se   ø€ àŸ™×.Ñ.Ó0ò 	#ˆHØ�M‰MŒOØ× Ñ Õ"ð	#ð ˆŒØ×Ñœ<×.Ñ.Ñ/×5Ñ5Ô7Ü‰ÑÕr9   z7LocalSegmentManager.prepare_segments_for_new_collectionr_   c                 ó¦   — t        | j                  t        j                  |«      }t        t        j
                  t        j                  |«      }||gS r2   )Ú_segmentr+   r   rO   r   ÚSQLITErJ   )r6   r_   Úvector_segmentÚmetadata_segments       r7   Ú#prepare_segments_for_new_collectionz7LocalSegmentManager.prepare_segments_for_new_collection‡   sO   € ô "Ø×%Ñ%¤|×':Ñ':¸Jó
ˆô $Ü×Ñ¤× 5Ñ 5°zó
Ðð Ð 0Ð1Ð1r9   z#LocalSegmentManager.delete_segmentsrd   c                 óà  — | j                   j                  |¬«      }|D �]5  }|d   | j                  v r�|d   t        j                  j
                  k(  r'| j                  |t        «      }|j                  «        nF|d   t        j                  j
                  k(  r&| j                  |t        «      }|j                  «        | j                  |d   = |d   t        j                  u r,| j                  t        j                     j                  |«       |d   t        j                  u s�Œ
| j                  t        j                     j                  |«       �Œ8 |D �cg c]  }|d   ‘Œ	 c}S c c}w )N)r_   r`   ÚtypeÚscope)r&   Úget_segmentsr)   r   rP   ÚvalueÚget_segmentr   Údeleterp   r   r   rO   rK   ÚpoprJ   )r6   rd   Úsegmentsr\   re   Úss         r7   Údelete_segmentsz#LocalSegmentManager.delete_segments—   s2  € ð —;‘;×+Ñ+°}Ð+ÓEˆØó 	MˆGØ�t‰} §¡Ñ/Ø˜6‘?¤k×&FÑ&F×&LÑ&LÒLØ#×/Ñ/°¼|ÓL�HØ—O‘OÕ%Ø˜V‘_¬×(:Ñ(:×(@Ñ(@Ò@Ø#×/Ñ/°¼~ÓN�HØ—O‘OÔ%Ø—O‘O G¨D¡MÐ2Ø�wÑ¤<×#6Ñ#6Ñ6Ø×"Ñ"¤<×#6Ñ#6Ñ7×;Ñ;¸MÔJØ�wÑ¤<×#8Ñ#8Ó8Ø×"Ñ"¤<×#8Ñ#8Ñ9×=Ñ=¸mÖLð	Mð "*Ö*˜A��$“Ò*Ð*ùÒ*s   ÅE+c           	      ó0  — | j                   j                  |t        j                  ¬«      }t	        |«      dk(  ryt        t        j                  j                  | j                  j                  j                  d«      t        |d   d   «      «      «      }|S )N©r_   rv   r   Úpersist_directoryr`   )r&   rw   r   rO   Úlenr"   ÚosÚpathÚjoinr'   rL   rE   Ústr)r6   rd   r|   Úsizes       r7   r;   z*LocalSegmentManager._get_segment_disk_size­   s‚   € Ø—;‘;×+Ñ+Ø$¬L×,?Ñ,?ð ,ó 
ˆô ˆx‹=˜AÒØä!Ü�G‰G�L‰LØ—‘×%Ñ%×-Ñ-Ð.AÓBÜ�H˜Q‘K Ñ%Ó&óó
ˆð ˆr9   z&LocalSegmentManager._get_segment_sysdbrv   c                 óæ   ‡— | j                   j                  ||¬«      }t        t        j	                  «       D �cg c]  }|j
                  ‘Œ c}«      Št        t        ˆfd„|«      «      }|S c c}w )Nr€   c                 ó   •— | d   ‰v S ©Nru   © )r}   Úknown_typess    €r7   r8   z8LocalSegmentManager._get_segment_sysdb.<locals>.<lambda>Ä   s   ø€ ¨¨&©	°[Ð(@€ r9   )r&   rw   ÚsetÚSEGMENT_TYPE_IMPLSÚkeysrx   ÚnextÚfilter)r6   rd   rv   r|   r4   r\   rŒ   s         @r7   Ú_get_segment_sysdbz&LocalSegmentManager._get_segment_sysdb¼   s^   ø€ ð
 —;‘;×+Ñ+°}ÈEÐ+ÓRˆÜÔ,>×,CÑ,CÓ,EÖF q˜1Ÿ7›7ÒFÓGˆä”vÓ@À(ÓKÓLˆØˆùò Gs   ºA.zLocalSegmentManager.get_segmentru   c                 ó¬  — |t         k(  rt        j                  }n(|t        k(  rt        j                  }nt        d|› �«      ‚| j                  |   j                  |«      }|€1| j                  ||«      }| j                  |   j                  ||«       | j                  5  | j                  |«      }d d d «       t        t        «      S # 1 sw Y   ŒxY w)NzInvalid segment type: )r   r   rJ   r   rO   Ú
ValueErrorrK   Úgetr’   r�   r,   rb   r   r	   )r6   rd   ru   rv   r\   re   s         r7   ry   zLocalSegmentManager.get_segmentÇ   sÃ   € ð
 ”>Ò!Ü ×)Ñ)‰EØ”\Ò!Ü ×'Ñ'‰EäÐ5°d°VÐ<Ó=Ð=à×$Ñ$ UÑ+×/Ñ/°Ó>ˆØˆ?Ø×-Ñ-¨m¸UÓCˆGØ×Ñ˜uÑ%×)Ñ)¨-¸ÔAð �Z‰Zñ 	/Ø—~‘~ gÓ.ˆH÷	/ä”A�xÓ Ð ÷	/ð 	/ús   Â C
Ã
Cz'LocalSegmentManager.hint_use_collectionÚ	hint_typec                 ó"  — t         t        fD ]€  }| j                  ||«      }|t        k(  sŒ| j                  j                  j                  d«      sŒEt        t        |«      }|j                  «        | j                  j                  ||«       Œ‚ y )Nr?   )r   r   ry   r'   rL   rE   r   r   Úopen_persistent_indexr*   r�   )r6   rd   r–   ru   re   s        r7   Úhint_use_collectionz'LocalSegmentManager.hint_use_collectionÞ   s|   € ô $¤\Ð2ò 	VˆDà×'Ñ'¨°tÓ<ˆHð ”|Ó#¨¯©×(=Ñ(=×(EÑ(EÀoÕ(VÜÔ :¸HÓE�Ø×.Ñ.Ô0Ø×8Ñ8×<Ñ<¸]ÈHÕUñ	Vr9   c                 óP   — t         t        |d   «         }t        |t        «      }|S rŠ   )rŽ   r   r   r   )r6   r\   Ú	classnameÚclss       r7   Ú_clszLocalSegmentManager._clsð   s'   € Ü&¤{°7¸6±?Ó'CÑDˆ	Ü˜	Ô#8Ó9ˆØˆ
r9   c                 óÔ   — |d   | j                   vrF| j                  |«      } || j                  |«      }|j                  «        || j                   |d   <   | j                   |d      S )Nr`   )r)   r�   r'   rh   )r6   r\   rœ   re   s       r7   rb   zLocalSegmentManager._instanceõ   s_   € Ø�4‰= §¡Ñ/Ø—)‘)˜GÓ$ˆCÙ˜4Ÿ<™<¨Ó1ˆHØ�N‰NÔØ-5ˆD�O‰O˜G D™MÑ*Ø�‰˜w t™}Ñ-Ð-r9   )r]   N)*rH   Ú
__module__Ú__qualname__r   Ú__annotations__r   r   r   r   r   r!   r   r   ÚHNSW_LOCAL_MEMORYr+   r   ÚintrD   r   r   ÚOPERATION_AND_SEGMENTr   r3   r   rh   rc   rl   r   r   rs   r~   r;   r   r’   r   r	   ry   r   r™   r�   rb   Ú__classcell__)r[   s   @r7   r%   r%   2   s[  ø… ØƒMØƒOØ.Ó.Ø�TÐ0Ð0Ñ1Ó1Ø)1ØÐ(Ð(ñ*ó ð )4×(EÑ(EÐ˜+ÓEØƒKØÓð'˜võ 'ñR Ø2Ø ×6Ñ6óð+¨Gð +¸ò +ó	ð+ð ôó ðð
 ôó ðð
 ôó ðñ ØAØ ×6Ñ6óð ð	2Ø$ð	2à	�'Ñ	ò	2ó ó	ð
	2ñ Ø-Ø ×6Ñ6óð ð+¨Tð +°h¸t±nò +ó ó	ð
+ð"°Dð ¸Só ñ Ø0Ø ×6Ñ6óð°ð ¸\ð Ègò ó	ðñ Ø)Ø ×6Ñ6óð!¨ð !°T¸!±Wð !Àò !ó	ð!ñ& Ø1Ø ×6Ñ6óð ðV°ð VÀ)ð VÐPTò Vó ó	ð
Vð˜Gð ¨Ð-BÑ(Có ð
. ð .Ð-B÷ .r9   r%   ru   rv   r_   r]   c                 óÌ   — t        t        |    t        «      }|j                  }d}|r|j	                  |«      }t        t        «       | j                  ||j                  |i ¬«      S )zRCreate a metadata dict, propagating metadata correctly for the given segment type.N)r`   ru   rv   r_   ÚmetadataÚ
file_paths)	r   rŽ   r   r§   Úpropagate_collection_metadatar   r    rx   r`   )ru   rv   r_   rœ   Úcollection_metadatar§   s         r7   ro   ro   þ   sc   € ä
Ô& tÑ,Ô.CÓ
D€CØ$×-Ñ-ÐØ#'€HÙØ×4Ñ4Ð5HÓIˆäÜ‹7Ø�Z‰ZØØ—=‘=ØØôð r9   )9Ú	threadingr   Úchromadb.segmentr   r   r   r   r   r	   rF   Ú)chromadb.segment.impl.manager.cache.cacher
   r   r   rƒ   Úchromadb.configr   r   Úchromadb.db.systemr   Ú	overridesr   Ú2chromadb.segment.impl.vector.local_persistent_hnswr   Ú chromadb.telemetry.opentelemetryr   r   r   Úchromadb.typesr   r   r   r   r   Útypingr   r   r   r   r   Úuuidr   r    rQ   Úchromadb.utils.lru_cacher!   Úchromadb.utils.directoryr"   r.   rR   rU   rp   r¢   rP   rŽ   r%   ro   r‹   r9   r7   ú<module>r¸      sâ   ðÝ ÷÷ ó ÷ñ ó
 
ç -Ý $Ý õ÷ñ ÷
 RÕ Qß 7Õ 7ß Û å -Ý 7ð €8‡?�?Ó˜	Ò!ÜØ€X‡_�_Ó˜)Ò#Ûð ×ÑÐUØ×!Ñ!Ð#]Ø×$Ñ$Ð&uðÐ ôI.˜.ô I.ðX�;ð  |ð Àð ÐPWô r9   