
    Ig~                     \   d dl Z d dlZd dlmZmZmZmZmZmZm	Z	m
Z
 d dlmZ d dlmZ d dlmZmZ d dlmZ d dlmZmZmZmZ d dlmZmZmZ d d	lmZmZm Z m!Z! d d
l"m#Z# d dl$m%Z%m&Z& d dl'm(Z(m)Z)m*Z*m+Z+ d dl,m-Z- d dl.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7  ejp                  e9      Z: G d dee#      Z;y)    N)OptionalSequenceAnyTuplecastDictUnionSet)UUID)override)TableColumn)groupby)CollectionConfigurationInternalConfigurationParameterHNSWConfigurationInternalInvalidConfigurationError)DEFAULT_DATABASEDEFAULT_TENANTSystem)CursorSqlDBParameterValueget_sql)SysDB)NotFoundErrorUniqueConstraintError)add_attributes_to_current_spanOpenTelemetryClientOpenTelemetryGranularitytrace_method)Producer)	DatabaseOptionalArgumentSegmentMetadata
CollectionSegmentScopeTenantUnspecifiedUpdateMetadatac                   J    e Zd ZU eed<   def fdZ edej                        e
d: fd              Ze
efded	ed
eddfd       Ze
efd	ed
edefd       Ze
d	eddfd       Ze
d	edefd       ZdededdfdZ edej                        e
deddfd              Z edej                        e
dddeefded	ededee   dee   dee   ded
edede e!ef   fd              Z" edej                        e
	 	 	 d;dedee   dee   dee#   dee   f
d               Z$ ed!ej                        e
ddeeddfdee   d	ee   d
eded"ee   d#ee   dee!   fd$              Z% ed%ej                        e
dededdfd&              Z& ed'ej                        e
eefded
ededdfd(              Z' ed)ej                        e
 e(       fdedede)ee*      ddfd*              Z+ ed+ej                        e
 e(        e(        e(       fded	e)e   de)ee      de)ee*      ddf
d,              Z, ed-ej                        d.ee e-d/f      dee   fd0       Z. ed1ej                        	 d<ded2e/d3e0dede*d4ee1e      ddfd5       Z2d6ed7edefd8Z3d6e-dee   defd9Z4 xZ5S )=SqlSysDB	_producersystemc                 X    t         |   |       |j                  t              | _        y N)super__init__requirer   _opentelemetry_client)selfr/   	__class__s     U/var/www/html/answerous/venv/lib/python3.12/site-packages/chromadb/db/mixins/sysdb.pyr3   zSqlSysDB.__init__.   s"     %+^^4G%H"    zSqlSysDB.create_segmentreturnNc                 j    t         |           | j                  j                  t              | _        y r1   )r2   start_systeminstancer"   r.   )r6   r7   s    r8   r<   zSqlSysDB.start2   s$     	..x8r9   idnametenantc                    | j                         5 }t        d      }t        d      }| j                         j                  |      j	                  |j
                  |j                  |j                        j                  t        | j                  |            t        |      | j                         j                  |j
                        j                  |      j                  |j
                  t        |      k(              }t        || j                               \  }}		 |j!                  ||	       	 d d d        y # | j#                         $ r}
t%        d| d|       |
d }
~
ww xY w# 1 sw Y   y xY w)N	databasestenants	Database z already exists for tenant )txr   querybuilderintocolumnsr?   r@   	tenant_idinsertr   
uuid_to_dbselectfrom_wherer   parameter_formatexecuteunique_constraint_errorr   )r6   r?   r@   rA   currC   rD   insert_databasesqlparamses              r8   create_databasezSqlSysDB.create_database8   s;    WWY 	#k*II&G!!#iy~~y7J7JK"4??2#67"4(%%'VGJJ'U7^U7::)??@	  "/43H3H3JKKCC('	 	( //1 +v%@I)	 	s*   DE*!D==E'E""E''E**E3c                    | j                         5 }t        d      }| j                         j                  |      j	                  |j
                  |j                        j                  |j                  t        |      k(        j                  |j                  t        |      k(        }t        || j                               \  }}|j                  ||      j                         }|st        d| d| d      |d   t        d| d| d      t        t         | j#                  |d               }	t%        |	|d   |      cd d d        S # 1 sw Y   y xY w)NrC   rE   z not found for tenant z. Are you sure it exists?r      )r?   r@   rA   )rF   r   rG   rN   rM   r?   r@   rO   r   rJ   r   rP   rQ   fetchoner   r   r   uuid_from_dbr#   )
r6   r@   rA   rS   rC   qrU   rV   rowr?   s
             r8   get_databasezSqlSysDB.get_databaseU   sC   WWY 	#k*I!!#y!	inn5y~~)==>y**nV.DDE  "!T%:%:%<=KC++c6*335C#v%;F8C\]  1v~#v%;F8C\]  D$"3"3CF";<BV)	 	 	s   D3EEc                    | j                         5 }t        d      }| j                         j                  |      j	                  |j
                        j                  t        |            }t        || j                               \  }}	 |j                  ||       	 d d d        y # | j                         $ r}t        d| d      |d }~ww xY w# 1 sw Y   y xY w)NrD   Tenant  already exists)rF   r   rG   rH   rI   r?   rK   r   r   rP   rQ   rR   r   )r6   r@   rS   rD   insert_tenantrU   rV   rW   s           r8   create_tenantzSqlSysDB.create_tenantq   s    WWY 	T#I&G!!#g$t,-	  "-1F1F1HIKCTC(	T 	T //1 T+gdV?,KLRSST	T 	Ts*   A9CB''C:C

CCCc                    | j                         5 }t        d      }| j                         j                  |      j	                  |j
                        j                  |j
                  t        |      k(        }t        || j                               \  }}|j                  ||      j                         }|st        d| d      t        |      cd d d        S # 1 sw Y   y xY w)NrD   ra   
 not found)r@   )rF   r   rG   rN   rM   r?   rO   r   r   rP   rQ   r[   r   r)   )r6   r@   rS   rD   r]   rU   rV   r^   s           r8   
get_tenantzSqlSysDB.get_tenant   s    WWY 	%#I&G!!#w

#wzz^D%99:	  "!T%:%:%<=KC++c6*335C#gdV:$>??t$	% 	% 	%s   CCC&rS   segmentc                    t        t        |d         |d   |d   j                  t        |d         d       t        d      }| j	                         j                  |      j                  |j                  |j                  |j                  |j                        j                  t        | j                  |d               t        |d         t        |d   j                        t        | j                  |d                     }t        || j                               \  }}	 |j!                  ||       t        d	      }|d
   r'	 | j'                  |||j(                  |d   |d
          y y # | j#                         $ r}t%        d|d    d      |d }~ww xY w# t*        $ r}t,        j/                  d|         d }~ww xY w)Nr?   typescope
collection
segment_idsegment_typesegment_scoperl   segmentsSegment rb   segment_metadatametadataz"Error inserting segment metadata: )r   strvaluer   rG   rH   rI   r?   rj   rk   rl   rK   r   rL   r   rP   rQ   rR   r   _insert_metadatarn   	Exceptionloggererror)	r6   rS   rh   rq   insert_segmentrU   rV   rW   
metadata_ts	            r8   create_segment_with_txzSqlSysDB.create_segment_with_tx   s   &!'$-0 '!(!1!7!7!',"78		
 $T(^W##	 Vtwt}=>wv/ww/556tw|/DEF	 	  nd.C.C.EFV	KKV$ -.
:
%%))DMJ'  ++- 	'74=/9	   A!EFs0   %E/ %F /FFF	G&F??Gc                 r    | j                         5 }| j                  ||       d d d        y # 1 sw Y   y xY wr1   )rF   r}   )r6   rh   rS   s      r8   create_segmentzSqlSysDB.create_segment   s4     WWY 	6#''W5	6 	6 	6s   -6zSqlSysDB.create_collectionFconfigurationrq   rt   	dimensionget_or_createdatabasec
                    ||st        d      t        t        |      |d       | j                  |||	      }
|
r9|r(|
d   }| j                  |j                  ||	      d   dfS t        d| d      t        |||||||	d	      }| j                         5 }t        d
      }t        d      }| j                         j                  |      j                  |j                  |j                  |j                  |j                  |j                        j!                  t#        | j%                  |d               t#        |d         t#        |j'                               t#        |d         | j                         j)                  |j                        j+                  |      j-                  |j                  t#        |	      k(        j-                  |j.                  t#        |      k(              }t1        || j3                               \  }}	 |j5                  ||       t        d      }|d   r,| j9                  |||j:                  |j                  |d          |D ]  }| j=                  ||        	 d d d        |dfS # | j7                         $ r}t        d|d    d      |d }~ww xY w# 1 sw Y   |dfS xY w)Nz.id must be specified if get_or_create is Falsecollection_idcollection_name)r@   rA   r   r   )r?   rA   r   FCollection rb   r?   r@   r   rt   r   rA   r   versioncollectionsrC   r?   r@   r   collection_metadatart   T)
ValueErrorr   ru   get_collectionsr?   r   r'   rF   r   rG   rH   rI   r@   config_json_strr   database_idrK   r   rL   to_json_strrM   rN   rO   rJ   r   rP   rQ   rR   rw   r   r}   )r6   r?   r@   r   rq   rt   r   r   rA   r   existingrl   rS   r   rC   insert_collectionrU   rV   rW   r|   rh   s                        r8   create_collectionzSqlSysDB.create_collection   s    :mMNN&!$R#'	
 ''T&8'T%a[
((%==( )  	  ,k$,OPP'	

 WWY -	:#.Kk*I !!#k"NN$$//))++ "4??:d3C#DE":f#56"=#<#<#>?":k#:;%%'VILL)U9%U9>>^H-EEFU9...2HHI . ""3T5J5J5LMKCC(
 45J*%%%,,MMz* $ :++C9:Y-	:^ 4# //1 +!*T"2!3?C=-	:^ 4s2   E5J1J!AJ1J.J))J..J11J=zSqlSysDB.get_segmentsrl   rj   rk   c                 0   t        t        |      |r|nd|r|j                  ndt        |      d       t        d      }t        d      }| j	                         j                  |      j                  |j                  |j                  |j                  |j                  |j                  |j                  |j                  |j                  |j                  	      j!                  |      j#                  |j                  |j$                  k(        j'                  |j                        }|r6|j)                  |j                  t+        | j-                  |            k(        }|r'|j)                  |j                  t+        |      k(        }|r1|j)                  |j                  t+        |j                        k(        }|r6|j)                  |j                  t+        | j-                  |            k(        }| j/                         5 }t1        || j3                               \  }	}
|j5                  |	|
      j7                         }t9        |d       }g }|D ]  \  }}| j;                  t        |            }t=        |      }t        |d   d         }t?        t        |d   d               }| j;                  |d   d	         }| jA                  |      }|jC                  tE        tG        tH        |      ||||
              |cd d d        S # 1 sw Y   y xY w)N rm   rq   rs   c                 (    t        t        | d         S Nr   r   objectrs    r8   <lambda>z'SqlSysDB.get_segments.<locals>.<lambda>b  s    fad1C r9   r   rZ         )r?   rj   rk   rl   rt   )%r   ru   rv   r   rG   rN   rM   r?   rj   rk   rl   key	str_value	int_valuefloat_value
bool_value	left_joinonrn   orderbyrO   r   rL   rF   r   rP   rQ   fetchallr   r\   listr(   _metadata_from_rowsappendr%   r   r   )r6   rl   r?   rj   rk   
segments_tr|   r]   rS   rU   rV   rows
by_segmentrq   rn   segment_rowsrt   s                    r8   get_segmentszSqlSysDB.get_segments/  s    	'!"g(,"052!*o		
 :&
-.
U:V  %%$$$$&&%%
 Yz"R
!6!667WZ]]#! 	
$ 
8K)LLMA
>$+??@A
((N5;;,GGHA%%
8S)TTA WWY 	#!!T%:%:%<=KC;;sF+446D 'CDJH,6 (
L&&s:7L)471:$Sa_5!..tAwqz:
33D9b>!##-!)" -	 	 	s   C=LLzSqlSysDB.get_collectionslimitoffsetc                 
   |||t        d      t        t        |      |r|ndd       t        d      }t        d      }t        d      }	| j	                         j                  |      j                  |j                  |j                  |j                  |j                  |	j                  |	j                  |j                  |j                  |j                  |j                  |j                         j#                  |      j%                  |j                  |j&                  k(        j#                  |	      j%                  |j(                  |	j                  k(        j+                  |j                        }
|r6|
j-                  |j                  t/        | j1                  |            k(        }
|r'|
j-                  |j                  t/        |      k(        }
||r|rt        d      }	|
j-                  |j(                  | j	                         j                  |	j                        j                  |	      j-                  |	j                  t/        |      k(        j-                  |	j                  t/        |      k(        k(        }
| j3                         5 }t5        |
| j7                               \  }}|j9                  ||      j;                         }t=        |d       }g }|D ]  \  }}| j?                  t        |            }tA        |      }t        |d	   d
         }| jC                  |      }|d	   d   rtE        |d	   d         nd}|d	   d   "| jG                  t        |      |d	   d         }n| jI                  ||      }|jK                  tM        tO        tP        |      ||||t        |d	   d         t        |d	   d         d	              ||d	}||||z    }n||d }|cddd       S # 1 sw Y   yxY w)z;Get collections by name, embedding function and/or metadataNzmIf name is specified, tenant and database must also be specified in order to uniquely identify the collectionr   r   r   r   rC   c                 (    t        t        | d         S r   r   r   s    r8   r   z*SqlSysDB.get_collections.<locals>.<lambda>  s    D14F r9   r   rZ   r   r         r   ))r   r   ru   r   rG   rN   rM   r?   r@   r   r   rJ   r   r   r   r   r   r   r   r   r   r   rO   r   rL   rF   r   rP   rQ   r   r   r\   r   r   int&_load_config_from_json_str_and_migrate!_insert_config_from_legacy_paramsr   r'   r   r   )r6   r?   r@   rA   r   r   r   collections_tr|   databases_tr]   rS   rU   rV   r   by_collectionr   r   collection_rowsrt   r   r   s                         r8   r   zSqlSysDB.get_collectionsw  s    83C  	'!$R+/4R	
 m,01
K(U=!V  ""--''  %%$$$$&&%% Yz"R  J$<$<<=Y{#R))[^^;<W]%%&) 	
, ((N4??2;N,OOPA**nT.BBCA :&X,K))$$&'{#{''>(+CCD{,,v0FFGHA WWY -	#!!T%:%:%<=KC;;sF+446D#D*FGMK2? .&&s='9:O,471:33D9/3AwqzCQ
Ot	71:)$($O$OM*DGAJ%M %)$J$J%x%M ""b>!&3!)"+"471:!$T!WQZ !	'B  >F)&6E>B)&'2[-	 -	 -	s   EO99PzSqlSysDB.delete_segmentc                    t        dt        |      i       t        d      }| j                         j	                  |      j                  |j                  t        | j                  |            k(        j                         }| j                         5 }t        || j                               \  }}|dz   }|j                  ||      j                         }|st        d| d      	 ddd       y# 1 sw Y   yxY w)zDelete a segment from the SysDBrn   rq    RETURNING idrr   rf   N)r   ru   r   rG   rN   rO   r?   r   rL   deleterF   r   rP   rQ   r[   r   )	r6   rl   r?   tr]   rS   rU   rV   results	            r8   delete_segmentzSqlSysDB.delete_segment  s     	'c"g	

 *U1XU144>$//"*=>>?VX	 	
 WWY 	?#!!T%:%:%<=KC'C[[f-668F#hrd*$=>> 	? 	? 	?s   AC11C:zSqlSysDB.delete_collectionc           	         t        dt        |      i       t        d      }t        d      }| j                         j	                  |      j                  |j                  t        | j                  |            k(        j                  |j                  | j                         j                  |j                        j	                  |      j                  |j                  t        |      k(        j                  |j                  t        |      k(        k(        j                         }| j                         5 }t        || j!                               \  }}	|dz   }|j#                  ||	      j%                         }
|
st'        d| d      	 ddd       | j(                  j+                  
d          y# 1 sw Y   (xY w)	z{Delete a collection and all associated segments from the SysDB. Deletes
        the log stream for this collection as well.r   r   rC   r   r   rf   Nr   )r   ru   r   rG   rN   rO   r?   r   rL   r   rM   r@   rJ   r   rF   r   rP   rQ   r[   r   r.   
delete_log)r6   r?   rA   r   r   r   r]   rS   rU   rV   r   s              r8   delete_collectionzSqlSysDB.delete_collection  sy    	'R	

 - K(U1XU144>$//"*=>>?U$$&'{#{''>(+CCD{,,v0FFGH VX 	
 WWY 	B#!!T%:%:%<=KC'C[[f-668F#k"Z$@AA 	B 	!!&),	B 	Bs   :AF66F?zSqlSysDB.update_segmentc                    t        t        |      t        |      d       t        d      }t        d      }| j                         j	                  |      j                  |j                  t        | j                  |            k(        j                  |j                  t        | j                  |                  }| j                         5 }t        || j                               \  }}	|r|j                  ||	       || j                         j                  |      j                  |j                   t        | j                  |            k(        j#                         }t        || j                               \  }}	|j                  ||	       nd|t%               k7  rWt'        t(        |      }t'        t(        |      }| j+                  |||j                   ||t        |j-                                      d d d        y # 1 sw Y   y xY w)N)rn   rl   rq   rs   )r   ru   r   rG   updaterO   r?   r   rL   setrl   rF   r   rP   rQ   rN   rn   r   r*   r   r+   rw   keys)
r6   rl   r?   rt   r   r|   r]   rS   rU   rV   s
             r8   update_segmentzSqlSysDB.update_segment+  s    	'!"g!*o	
 :&
-.
 VJU:==N4??23F$GGHS&&tz7R(ST	 	
 WWY 	#!!T%:%:%<=KCC(%%'U:&U:00N4??SUCV4WWXVX	  &a)>)>)@AVC([]*99%%))(#	 	 	s   D)G>>HzSqlSysDB.update_collectionc                    t        dt        |      i       t        d      }t        d      }| j                         j	                  |      j                  |j                  t        | j                  |            k(        }|t               k(  s%|j                  |j                  t        |            }|t               k(  s%|j                  |j                  t        |            }| j                         5 }t        || j                               \  }	}
|	r6|	dz   }	|j!                  |	|
      }|j#                         st%        d| d      |t               k7  r| j                         j'                  |      j                  |j(                  t        | j                  |            k(        j+                         }t        || j                               \  }	}
|j!                  |	|
       |Gt-        t.        |      }| j1                  |||j(                  ||t        |j3                                      d d d        y # 1 sw Y   y xY w)Nr   r   r   r   r   rf   )r   ru   r   rG   r   rO   r?   r   rL   r*   r   r@   r   rF   r   rP   rQ   r[   r   rN   r   r   r   r+   rw   r   )r6   r?   r@   r   rt   r   r|   r]   rS   rU   rV   r   s               r8   update_collectionzSqlSysDB.update_collection]  s    	'R	

 m,01
 VM"U=##~doob6I'JJK 	
 {}$m((.*>?AKM)m--~i/HIAWWY  	#!!T%:%:%<=KCO+S&1('+bT(DEE ;=(%%'U:&U"00N4??SUCV4WW VX  &a)>)>)@AVC('#NH=H))""00 HMMO,3 	  	  	s   4D<H99IzSqlSysDB._metadata_from_rowsr   .c                     t        dt        |      i       i }|D ]l  }t        |d         }|d   t        |d         ||<   (|d   t        |d         ||<   ?|d   t	        |d         ||<   V|d   \t        |d         ||<   n |xs dS )zGiven SQL rows, return a metadata map (assuming that the last four columns
        are the key, str_value, int_value & float_value)num_rowsN)r   lenru   r   floatbool)r6   r   rt   r^   r   s        r8   r   zSqlSysDB._metadata_from_rows  s     	'CI	

 =? 		.Cc"g,C2w" #CGR$ #CGR$ %c"gR$ $SW		. 4r9   zSqlSysDB._insert_metadatatableid_col
clear_keysc                 x   t        dt        |      i       |r| j                         j                  |      j	                  |t        | j                  |            k(        j	                  |j                  j                  |D cg c]  }t        |       c}            j                         }t        || j                               \  }	}
|j                  |	|
       | j                         j                  |      j                  ||j                  |j                  |j                   |j"                  |j$                        }| j                  |      }|j'                         D ]  \  }}t)        |t*              r;|j-                  t        |      t        |      d d d t        t/        |                  }Rt)        |t0              r2|j-                  t        |      t        |      t        |      d d d       }t)        |t.              r2|j-                  t        |      t        |      d t        |      d d       }t)        |t2              r3|j-                  t        |      t        |      d d t        |      d       }| t        || j                               \  }	}
|	r|j                  |	|
       y y c c}w )Nnum_keys)r   r   rG   rN   rO   r   rL   r   isinr   r   rP   rQ   rH   rI   r   r   r   r   items
isinstancer   rK   r   ru   r   )r6   rS   r   r   r?   rt   r   kr]   rU   rV   sql_idvs                r8   rw   zSqlSysDB._insert_metadata  s[    	'CM	

 !!#uv0C!DDEuyy~~*&MQ~a'8&MNO  "!T%:%:%<=KCKKV$ T%[W		!!   	
 $NN$ (	DAq !T"HH"6*"1%"3q6* As#HH"6*"1%"1% As#HH"6*"1%"1% Au%HH"6*"1%"1% Q(	T a!6!6!89VKKV$ } 'Ns   J7r   json_strc                    	 t        j                  |      }	 t	        j
                  |      S # t         j                  $ r t        d|       w xY w# t        $ r{}|j                  d      }|r`|j                  d      }|j                  d      }|r;|r8||kD  r2|j                         D 	ci c]  \  }}	|dvr||	 nc c}	}w }}}	|j                  d|i       t	        j                  |      }
t        d      }| j                         j                  |      j                  |j                  t        |
j!                                     j#                  |j$                  t        |      k(        }t'        || j)                               \  }}| j+                         5 }|j-                  ||       d d d        n# 1 sw Y   nxY w|
cY d }~S |d }~ww xY w)Nz1Unable to decode configuration from JSON string: hnsw_configuration
batch_sizesync_threshold)r   r   r   )jsonloadsJSONDecodeErrorr   r   from_json_strr   getr   r   	from_jsonr   rG   r   r   r   r   rO   r?   r   rP   rF   rQ   )r6   r   r   config_jsonrz   r   r   r   r   r   r   r   r]   rU   rV   rS   s                   r8   r   z/SqlSysDB._load_config_from_json_str_and_migrate  s   	**X.K&	2@@JJ ## 	CH:N 	 ) $	!,1E!F!/33LA
!3!7!78H!I.Z.5P %7$<$<$>* Aq$DD 1* *& *
  &&(<>P'QR$C$M$M#%M %*-$8M))+.)99*=+D+D+FG }//>-3PPQ  #*!T-B-B-D"EKC 1cC01 1 1 )(KI$	sR   - A "A
GAG1CCG!F=4	G=G	G
GGGc                 D   ddl m} t        d      }|j                  |xs i       }t	        j
                  |      }t        t        d|      g      }|j                         }| j                         j                  |      j                  |j                  t        |            j                  |j                  t        |      k(        }	t!        |	| j#                               \  }
}| j%                         5 }|j'                  |
|       ddd       |S # 1 sw Y   |S xY w)zuInsert the configuration from legacy metadata params into the collections table, and return the configuration object.r   )PersistentHnswParamsr   r   )r@   rv   )
parametersN)(chromadb.segment.impl.vector.hnsw_paramsr   r   extractr   from_legacy_paramsr   r   r   rG   r   r   r   r   rO   r?   r   rP   rF   rQ   )r6   r   rt   r   r   hnsw_metadata_paramsr   r   configuration_json_strr]   rU   rV   rS   s                r8   r   z*SqlSysDB._insert_config_from_legacy_params>  s    	Rm,  4;;HNK6II 
 8&-5G
 "/!:!:!<VM"S--56 U=##~m'DDE 	
 a!6!6!89VWWY 	%#KKV$	%	%s   8DD)r:   N)NNNr1   )6__name__
__module____qualname__r"   __annotations__r   r3   r!   r    ALLr   r<   r   r   ru   rX   r#   r_   rd   r)   rg   r   r%   r}   r   r   r   r   r   r&   r   r   r   r'   r   r(   r   r   r   r   r*   r$   r+   r   r   r   r   r   r   r
   rw   r   r   __classcell__)r7   s   @r8   r-   r-   )   s    Iv I +-E-I-IJ9  K9 1?!+.	 8 4B  c x  6 T# T$ T T %s %v % %"0& 07 0t 0h +-E-I-IJ6g 6$ 6  K6
 .0H0L0LM (,#'#$(] ]  ]  7	] 
 7#]  8$]  C=]  ]  ]  ]  
z4	 ]   N] ~ )+C+G+GH ""(,DD TND sm	D
 %D 
'	D  IDL ,.F.J.JK ""$(# $pTNp smp 	p
 p }p p 
*	p  Lpd +-E-I-IJ? ?4 ?D ?  K?, .0H0L0LM %(	$-$- $- 	$-
 
$-  N$-L +-E-I-IJ
 @K}	.. . #8N#;<	.
 
.  K.` .0H0L0LM '2m5@]?J};; s#; $HSM2	;
 #8N#;<; 
;  N;z 02J2N2NO U38_- 	(	  P . -/G/K/KL *.U%U% U% 	U%
 U% !U% SX&U% 
U% MU%n0 0,/0	(0d& &,4X,>&	(&r9   r-   )<r   loggingtypingr   r   r   r   r   r   r	   r
   uuidr   	overridesr   pypikar   r   	itertoolsr   chromadb.api.configurationr   r   r   r   chromadb.configr   r   r   chromadb.db.baser   r   r   r   chromadb.db.systemr   chromadb.errorsr   r    chromadb.telemetry.opentelemetryr   r   r    r!   chromadb.ingestr"   chromadb.typesr#   r$   r%   r&   r'   r(   r)   r*   r+   	getLoggerr   ry   r-    r9   r8   <module>r     s      I I I       E D C C $ @  %
 
 
 
		8	${ue {r9   