
    LKi)9                        S SK JrJrJr  S SKrS SKJr  S SKJr	  S SK
Jr  S SKJr  S SKrS SKJrJrJr  S SKJrJrJr  S S	KJr  S S
KJrJrJrJrJrJ r J!r!J"r"J#r#J$r$J%r%J&r&J'r'J(r(J)r)J*r*J+r+J,r,J-r-J.r.J/r/J0r0J1r1J2r2J3r3J4r4J5r5J6r6J7r7J8r8J9r9  S SK:J;r;  S SK<J=r=J>r>J?r?J@r@  S SKAJBrB  S SKCrC/ SQrDS SKEJFrF  \R                  " \H5      rI\" 5       qJSrKS\L4S jrM\M" 5       rNSrO S SKPJQrQ  \QrO\O(       d}  S SKSrS\SR                  S:  ai  \N(       aZ  S SKUrUS SKVrV\UR                  " \VR                  SSSS/5        \Y" S5        \VR                  R                  S5      \VR                  S'   O\\" S5      eS:S jr]S\4S jr^S\\4S\\   S \_S!\_S\4S" jjr`S#S\\4S$\\_\B4   S\\   S \_S!\_S\4
S% jjraSS\\4S$\\_   S\\   S \_S!\_S\4
S& jjrbS'S(SSS\\4S)\_S*\cS+\LS,\\\_\_4      S\\   S \_S!\_S\4S- jjrdS'S(SSS\\4S)\_S*\cS+\LS,\\\_\_4      S\\   S \_S!\_S\4S. jjre    S;S/S0S1S2.S \\_   S!\\_   S3\\_   S\\   S4\_S5\cS6\LS\4S7 jjjrf[        \\4S\S \_S!\_S\4S8 jjr\" 5       4S\S\4S9 jjrg! \R a    SrO GNf = f)<    )DictOptionalUnionN)Client)AdminClient)AsyncClient)TokenTransportHeader)DEFAULT_DATABASEDEFAULT_TENANTSettings)AdminAPIAsyncClientAPI	ClientAPI)
Collection)CmekCollectionMetadataUpdateMetadata	DocumentsEmbeddingFunction
EmbeddingsURIURIsIDsIncludeMetadata	Metadatas	ReadLevelWhereQueryResult	GetResultWhereDocumentUpdateCollectionMetadataSparseVectorSparseVectorsSparseEmbeddingFunctionSchemaVectorIndexConfigHnswIndexConfigSpannIndexConfigFtsIndexConfigSparseVectorIndexConfigStringInvertedIndexConfigIntInvertedIndexConfigFloatInvertedIndexConfigBoolInvertedIndexConfig)Search)KeyKKnnRrf)Path)%r   r   r   r   r   r!   r   r   r   r   r   r   r   r   r   r"   r   r    r	   r0   r1   r2   r3   r4   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   )CloudClientArgz1.5.1returnc                  .     SS K n g! [         a     gf = f)Nr   TF)google.colabImportError)googles    S/var/www/html/dynamic-report/venv/lib/python3.13/site-packages/chromadb/__init__.pyis_in_colabr=   s   s     s    
F)is_thin_client)   #   r   z-mpipinstallzpysqlite3-binary	pysqlite3sqlite3z[91mYour system has an unsupported version of sqlite3. Chroma                     requires sqlite3 >= 3.35.0.[0m
[94mPlease visit                     https://docs.trychroma.com/troubleshooting#sqlite to learn how                     to upgrade.[0mc                  D    [         R                  R                  " S0 U D6qg)zGOverride Chroma's default settings, environment variables or .env filesN )chromadbconfigr   
__settings)kwargss    r<   	configurerK      s     ))3F3J    c                      [         $ )N)rI   rF   rL   r<   get_settingsrN      s    rL   settingstenantdatabasec                 j    U c
  [        5       n SU l        [        U5      n[        U5      n[        XUS9$ )a  Create an in-memory client for local use.

This client stores all data in memory and does not persist to disk.
It is intended for testing and development.

Args:
    settings: Optional settings to override defaults.
    tenant: Tenant name to use for requests. Defaults to the default tenant.
    database: Database name to use for requests. Defaults to the default database.

Returns:
    ClientAPI: A configured client instance.
FrO   rP   rQ   )r   is_persistentstrClientCreatorrS   s      r<   EphemeralClientrW      s:    $ :"H [F8}H(HMMrL   z./chromapathc                     Uc
  [        5       n[        U 5      Ul        SUl        [        U5      n[        U5      n[	        X#US9$ )a  Create a persistent client that stores data on disk.

This client is intended for local development and testing. For production,
prefer a server-backed Chroma instance.

Args:
    path: Directory to store persisted data.
    settings: Optional settings to override defaults.
    tenant: Tenant name to use for requests.
    database: Database name to use for requests.

Returns:
    ClientAPI: A configured client instance.
TrP   rQ   rO   )r   rU   persist_directoryrT   rV   rX   rO   rP   rQ   s       r<   PersistentClientr]      sF    ( :!$TH!H [F8}HHMMrL   c                     Uc
  [        5       nSUl        U SLUl        U =(       d    SUl        [	        U5      n[	        U5      n[        X#US9$ )a  
Creates an ephemeral or persistance instance of Chroma that saves to disk.
This is useful for testing and development, but not recommended for production use.

Args:
    path: An optional directory to save Chroma's data to. The client is ephemeral if a None value is provided. Defaults to None.
    tenant: The tenant to use for this client.
    database: The database to use for this client.
Nz!chromadb.api.rust.RustBindingsAPI rZ   )r   chroma_api_implrT   r[   rU   rV   r\   s       r<   
RustClientra      sS     :BH!-H!%H [F8}HHMMrL   	localhosti@  hostportsslheadersc                    Uc
  [        5       n[        U 5      n [        U5      n[        U5      n[        U5      n[        U5      nSUl        UR
                  (       a,  UR
                  U :w  a  [        SUR
                   SU  S35      eXl        UR                  (       a,  UR                  U:w  a  [        SUR                   SU S35      eXl        X$l        X4l	        [        XVUS9$ )a
  Create a client that connects to a Chroma server.

Args:
    host: Hostname of the Chroma server.
    port: HTTP port of the Chroma server.
    ssl: Whether to enable SSL for the connection.
    headers: Optional headers to send with each request.
    settings: Optional settings to override defaults.
    tenant: Tenant name to use for requests.
    database: Database name to use for requests.

Returns:
    ClientAPI: A configured client instance.

Raises:
    ValueError: If settings specify a different host or port.
chromadb.api.fastapi.FastAPI(Chroma server host provided in settings[3] is different to the one provided in HttpClient: []-Chroma server http port provided in settings[rZ   )r   rU   intboolr`   chroma_server_host
ValueErrorchroma_server_http_portchroma_server_ssl_enabledchroma_server_headersrV   rc   rd   re   rf   rO   rP   rQ   s          r<   
HttpClientru     s   6 : t9Dt9D
s)C[F8}H=H""x'B'Bd'J6x7R7R6S  TG  HL  GM  MN  O
 	
 #'''H,L,LPT,T;H<\<\;]  ^Q  RV  QW  WX  Y
 	
 (,$),&%,"HMMrL   c                   #    Uc
  [        5       n[        U 5      n [        U5      n[        U5      n[        U5      n[        U5      nSUl        UR
                  (       a,  UR
                  U :w  a  [        SUR
                   SU  S35      eXl        UR                  (       a,  UR                  U:w  a  [        SUR                   SU S35      eXl        X$l        X4l	        [        R                  " XVUS9I Sh  vN $  N7f)a  Create an async client that connects to a Chroma HTTP server.

This supports multiple clients connecting to the same server and is the
recommended production configuration.

Args:
    host: Hostname of the Chroma server.
    port: HTTP port of the Chroma server.
    ssl: Whether to enable SSL for the connection.
    headers: Optional headers to send with each request.
    settings: Optional settings to override defaults.
    tenant: Tenant name to use for requests.
    database: Database name to use for requests.

Returns:
    AsyncClientAPI: A configured async client instance.

Raises:
    ValueError: If settings specify a different host or port.
Nz'chromadb.api.async_fastapi.AsyncFastAPIri   rj   rk   rl   rZ   )r   rU   rm   rn   r`   ro   rp   rq   rr   rs   AsyncClientCreatorcreatert   s          r<   AsyncHttpClientry   8  s0    < : t9Dt9D
s)C[F8}HHH""x'B'Bd'J6x7R7R6S  TG  HL  GM  MN  O
 	
 #'''H,L,LPT,T;H<\<\;]  ^Q  RV  QW  WX  Y
 	
 (,$),&%,"#**8   s   C6C?8C=9C?zapi.trychroma.comi  T)
cloud_host
cloud_port
enable_sslapi_keyrz   r{   r|   c                    [        SSUS9/n[        U Vs/ s H  oR                  PM     sn5      (       dJ  U HD  nUR                  =(       d)    [        R                  R                  UR                  5      Ul        MF     U Vs/ s H  oR                  b  M  UPM     n	nU	(       ac  [        SSR                  U	 Vs/ s H  oR                  PM     sn5       SSR                  U	 Vs/ s H  oR                  PM     sn5       35      eUc
  [        5       nU =(       d    [        R                  R                  S5      n U b  [        U 5      n U=(       d    [        R                  R                  S5      nUb  [        U5      n[        U5      n[        U5      n[        U5      n[        U5      nS	Ul        XCl        XSl        Xcl        S
Ul        X#l        [(        R*                  Ul        SUl        [1        XUS9$ s  snf s  snf s  snf s  snf )a;  Create a client for Chroma Cloud.

If not provided, `tenant`, `database`, and `api_key` will be inferred from the environment variables `CHROMA_TENANT`, `CHROMA_DATABASE`, and `CHROMA_API_KEY`.

Args:
    tenant: Tenant name to use, or None to infer from credentials.
    database: Database name to use, or None to infer from credentials.
    api_key: API key for Chroma Cloud.
    settings: Optional settings to override defaults.

Returns:
    ClientAPI: A configured client instance.

Raises:
    ValueError: If no API key is provided or available in the environment.
r}   CHROMA_API_KEY)nameenv_varvaluezMissing required arguments: z, z8. Please provide them or set the environment variables: CHROMA_TENANTCHROMA_DATABASErh   z1chromadb.auth.token_authn.TokenAuthClientProviderTrZ   )r6   allr   osenvirongetr   rp   joinr   r   rU   rm   rn   r`   ro   rq   rr   chroma_client_auth_providerchroma_client_auth_credentialsr	   X_CHROMA_TOKEN"chroma_auth_token_transport_header;chroma_overwrite_singleton_tenant_database_access_from_authrV   )
rP   rQ   r}   rO   rz   r{   r|   required_argsargmissing_argss
             r<   CloudClientr   s  s   8 	I/?wOM
 ]3]c		]344 C		@RZZ^^CKK%@CI ! $1F=CIIC=LF*499,5W,3hh,5W+X*Y ZEEIYYgsOtgs`cP[P[gsOtEuDvx
 	

 : 6rzz~~o6FV<2::>>*;<Hx='lGZJZJj!J=H",'1$)3& 	< ( /6+2F2U2UH/KOHHHMMM 4 G 6XOts   G<HH=H)Hc                 B    [        U5      n[        U5      n[        XU S9$ )z
Return a running chroma.API instance

tenant: The tenant to use for this client. Defaults to the default tenant.
database: The database to use for this client. Defaults to the default database.
rZ   )rU   rV   rS   s      r<   r   r     s#     [F8}HHMMrL   c                     [        U S9$ )z:Create an admin client for tenant and database management.rO   )AdminClientCreatorr   s    r<   r   r     s    x00rL   )r7   N)NNNN)gtypingr   r   r   loggingchromadb.api.clientr   rV   r   r   chromadb.api.async_clientr   rw   chromadb.auth.token_authnr	   chromadb.configrG   r
   r   r   chromadb.apir   r   r   chromadb.api.models.Collectionr   chromadb.api.typesr   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.   r/   "chromadb.execution.expression.planr0   &chromadb.execution.expression.operatorr1   r2   r3   r4   pathlibr5   r   __all__chromadb.typesr6   	getLogger__name__loggerrI   __version__rn   r=   IN_COLAB	is_clientchromadb.is_thin_clientr>   r:   rD   sqlite_version_info
subprocesssys
check_call
executable
__import__modulespopRuntimeErrorrK   rN   rU   rW   r]   ra   rm   ru   ry   r   rF   rL   r<   <module>r      s0   ( (  7 H :  F F < < 5                 F 6   	)V *			8	$Z
T  =	6I ""Z/!!ui9KL {#%([[__[%ACKK	"( 4h 
 $( $Nx NN N 	N< (#' $	N
T	
Nx N N 	N
 NB #' $	N
3-Nx N N 	N
 N< (,#' $3N
3N
3N 
3N d38n%	3N
 x 3N 3N 3N 3Nn (,#' $8
8
8 
8 d38n%	8
 x 8 8 8 8x !"!#'	FN *FNSMFNsmFN c]FN x 	FN FN FN FN FNT $ $NNN N 	N& &.Z 1( 1H 1Y
  Is   I% %I10I1