Ë
    lQêj)  ã                   óŒ   — d dl Z d dlmZ d dlmZ d dlmZ d dlmZm	Z	 dZ
dedeeeef   fd	„Zd
edededefd„Zdededdfd„Zy)é    N)ÚTuple)ÚUUID)ÚSqlDB)ÚSegmentManagerÚVectorReaderz?persistent:\/\/(?P<tenant>.+)\/(?P<namespace>.+)\/(?P<topic>.+)Ú
topic_nameÚreturnc                 óº   — t        j                  t        | «      }|st        d| › �«      ‚|j	                  d«      |j	                  d«      |j	                  d«      fS )z>Parse the topic name into the tenant, namespace and topic namezInvalid topic name: ÚtenantÚ	namespaceÚtopic)ÚreÚmatchÚtopic_regexÚ
ValueErrorÚgroup)r   r   s     ú_/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/chromadb/ingest/impl/utils.pyÚparse_topic_namer      sP   € ä�H‰H”[ *Ó-€EÙÜÐ/°
¨|Ð<Ó=Ð=Ø�;‰;�xÓ  %§+¡+¨kÓ":¸E¿K¹KÈÓ<PÐPÐPó    r   r   Úcollection_idc                 ó*   — d| › d|› dt        |«      › �S )Nzpersistent://ú/)Ústr)r   r   r   s      r   Úcreate_topic_namer      s!   € Ø˜6˜( ! I ;¨a´°MÓ0BÐ/CÐDÐDr   ÚdbÚsegment_managerc                 ó$  — | j                  «       5 }|j                  d«       |j                  «       D �cg c]  }|d   ‘Œ	 }}ddd«       t        «      dk(  ry|D ]!  }|j	                  t        |«      t        «       Œ# yc c}w # 1 sw Y   ŒDxY w)uM  
    Trigger the migration of vector segments' max_seq_id from the pickled metadata file to SQLite.

    Vector segments migrate this field automatically on initâ€”so this should be used when we know segments are likely unmigrated and unloaded.

    This is a no-op if all vector segments have already migrated their max_seq_id.
    zÙ
            SELECT collection
            FROM "segments"
            WHERE "id" NOT IN (SELECT "segment_id" FROM "max_seq_id") AND
                  "type" = 'urn:chroma:segment/vector/hnsw-local-persisted'
        r   N)ÚtxÚexecuteÚfetchallÚlenÚget_segmentr   r   )r   r   ÚcurÚrowÚ'collection_ids_with_unmigrated_segmentsr   s         r   Ú,trigger_vector_segments_max_seq_id_migrationr&      sš   € ð 
�‰‹ð 	U�CØ�‰ðô	
ð FIÇ\Á\Ã^Ö2T¸c°3°q³6Ð2TÐ/Ð2T÷	Uô Ð2Ó3°qÒ8Øà@ò Gˆà×#Ñ#¤D¨Ó$7¼ÕFñGùò 3U÷	Uð 	Uús   ‘$BµBÁBÂBÂB)r   Útypingr   Úuuidr   Úchromadb.db.baser   Úchromadb.segmentr   r   r   r   r   r   r&   © r   r   ú<module>r,      s�   ðÛ 	Ý Ý å "ß 9àP€ðQ ð Q¨¨s°C¸¨}Ñ)=ó QðE˜cð E¨cð EÀ$ð EÈ3ó EðGØðGØ .ðGà	ôGr   