§
    ˜Štj+9  ã                   óþ  — d dl mZmZmZ dZd dlZd dlmZ d dlm	Z
 d dlmZ d dlmZ d dlZd dlmZmZmZ d d	lmZmZmZ d d
lmZ d dlmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z: d dl;m<Z< d dl=m>Z>m?Z?m@Z@mAZA d dlBmCZC d dlDZDg d¢ZEd dlFmGZG  ejH        eI¦  «        ZJ e¦   «         aKdeLfd„ZM eM¦   «         ZNdZO	 d dlPmQZQ eQZOn# eR$ r dZOY nw xY weOsld dlSZSeSjT        dk     r]eNrPd dlUZUd dlVZV eUjW        eVjX        ddddg¦  «          eYd¦  «         eVjZ         [                    d¦  «        eVjZ        d<   n e\d¦  «        ‚d:d„Z]defd„Z^deefdee         d e_d!e_defd"„Z`d#deefd$ee_eCf         dee         d e_d!e_def
d%„Zaddeefd$ee_         dee         d e_d!e_def
d&„Zbd'd(dddeefd)e_d*ecd+eLd,eee_e_f                  dee         d e_d!e_defd-„Zdd'd(dddeefd)e_d*ecd+eLd,eee_e_f                  dee         d e_d!e_defd.„Ze	 	 	 	 d;d/d0d1d2œd ee_         d!ee_         d3ee_         dee         d4e_d5ecd6eLdefd7„Zft–          eefded e_d!e_defd8„Z e¦   «         fdedefd9„Z	dS )<é    )ÚDictÚOptionalÚUnionz1.5.9N)Ú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/   )ÚCloudClientArgÚreturnc                  ó2   — 	 dd l } dS # t          $ r Y dS w xY w)Nr   TF)Úgoogle.colabÚImportError)Úgoogles    úO/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/chromadb/__init__.pyÚis_in_colabr=   u   s:   € ðØÐÐÐàˆtøÝð ð ð Øˆuˆuðøøø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                  ó2   — t          j        j        di | ¤ŽadS )zGOverride Chroma's default settings, environment variables or .env filesN© )ÚchromadbÚconfigr   Ú
__settings)Úkwargss    r<   Ú	configurerK       s    € õ ”Ô)Ð3Ð3¨FÐ3Ð3€J€J€Jó    c                  ó   — t           S ©N)rI   rF   rL   r<   Úget_settingsrO   ¦   s   € ÝÐrL   ÚsettingsÚtenantÚdatabasec                 ó�   — | €t          ¦   «         } d| _        t          |¦  «        }t          |¦  «        }t          | ||¬¦  «        S )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.
    NF©rP   rQ   rR   )r   Úis_persistentÚstrÚClientCreatorrT   s      r<   ÚEphemeralClientrX   ª   sH   € ð$ ÐÝ‘:”:ˆØ"€HÔõ �‰[Œ[€FÝ�8‰}Œ}€Hå (°6ÀHÐMÑMÔMÐMrL   z./chromaÚpathc                 ó¸   — |€t          ¦   «         }t          | ¦  «        |_        d|_        t          |¦  «        }t          |¦  «        }t	          |||¬¦  «        S )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.
    NT©rQ   rR   rP   )r   rV   Úpersist_directoryrU   rW   ©rY   rP   rQ   rR   s       r<   ÚPersistentClientr^   Ç   sV   € ð( ÐÝ‘:”:ˆÝ!$ T¡¤€HÔØ!€HÔõ �‰[Œ[€FÝ�8‰}Œ}€Hå °ÀHÐMÑMÔMÐMrL   c                 ó´   — |€t          ¦   «         }d|_        | du|_        | pd|_        t	          |¦  «        }t	          |¦  «        }t          |||¬¦  «        S )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Ú r[   )r   Úchroma_api_implrU   r\   rV   rW   r]   s       r<   Ú
RustClientrb   ç   sa   € ð ÐÝ‘:”:ˆàB€HÔØ!¨Ð-€HÔØ!% ¨€HÔõ �‰[Œ[€FÝ�8‰}Œ}€Hå °ÀHÐMÑMÔMÐMrL   Ú	localhosti@  ÚhostÚportÚsslÚheadersc                 óÖ  — |€t          ¦   «         }t          | ¦  «        } t          |¦  «        }t          |¦  «        }t          |¦  «        }t          |¦  «        }d|_        |j        r&|j        | k    rt          d|j        › d| › d�¦  «        ‚| |_        |j        r&|j        |k    rt          d|j        › d|› d�¦  «        ‚||_        ||_        ||_	        t          |||¬¦  «        S )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.
    Nú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[r[   )r   rV   ÚintÚboolra   Úchroma_server_hostÚ
ValueErrorÚchroma_server_http_portÚchroma_server_ssl_enabledÚchroma_server_headersrW   ©rd   re   rf   rg   rP   rQ   rR   s          r<   Ú
HttpClientrv     sB  € ð6 ÐÝ‘:”:ˆõ ˆt‰9Œ9€DÝˆt‰9Œ9€DÝ
ˆs‰)Œ)€CÝ�‰[Œ[€FÝ�8‰}Œ}€Hà=€HÔØÔ"ð 
 xÔ'BÀdÒ'JÐ'JÝð O°xÔ7Rð  Oð  Oð  HLð  Oð  Oð  Oñ
ô 
ð 	
ð #'€HÔØÔ'ð 
¨HÔ,LÐPTÒ,TÐ,TÝð Y¸HÔ<\ð  Yð  Yð  RVð  Yð  Yð  Yñ
ô 
ð 	
ð (,€HÔ$Ø),€HÔ&Ø%,€HÔ"å °ÀHÐMÑMÔMÐMrL   c              ƒ   óð  K  — |€t          ¦   «         }t          | ¦  «        } t          |¦  «        }t          |¦  «        }t          |¦  «        }t          |¦  «        }d|_        |j        r&|j        | k    rt          d|j        › d| › d�¦  «        ‚| |_        |j        r&|j        |k    rt          d|j        › d|› d�¦  «        ‚||_        ||_        ||_	        t          j        |||¬¦  «        ƒ d{V —†S )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.AsyncFastAPIrj   rk   rl   rm   r[   )r   rV   rn   ro   ra   rp   rq   rr   rs   rt   ÚAsyncClientCreatorÚcreateru   s          r<   ÚAsyncHttpClientrz   :  sp  è è € ð< ÐÝ‘:”:ˆõ ˆt‰9Œ9€DÝˆt‰9Œ9€DÝ
ˆs‰)Œ)€CÝ�‰[Œ[€FÝ�8‰}Œ}€HàH€HÔØÔ"ð 
 xÔ'BÀdÒ'JÐ'JÝð O°xÔ7Rð  Oð  Oð  HLð  Oð  Oð  Oñ
ô 
ð 	
ð #'€HÔØÔ'ð 
¨HÔ,LÐPTÒ,TÐ,TÝð Y¸HÔ<\ð  Yð  Yð  RVð  Yð  Yð  Yñ
ô 
ð 	
ð (,€HÔ$Ø),€HÔ&Ø%,€HÔ"å#Ô*Ø °8ðñ ô ð ð ð ð ð ð ð rL   zapi.trychroma.comi»  T)Ú
cloud_hostÚ
cloud_portÚ
enable_sslÚapi_keyr{   r|   r}   c          	      ó†  — t          dd|¬¦  «        g}t          d„ |D ¦   «         ¦  «        s5|D ]2}|j        p#t          j                             |j        ¦  «        |_        Œ3d„ |D ¦   «         }	|	rOt          dd                     d„ |	D ¦   «         ¦  «        › d	d                     d
„ |	D ¦   «         ¦  «        › �¦  «        ‚|€t          ¦   «         }| pt          j                             d¦  «        } | �t          | ¦  «        } |pt          j                             d¦  «        }|�t          |¦  «        }t          |¦  «        }t          |¦  «        }t          |¦  «        }t          |¦  «        }d|_        ||_        ||_        ||_        d|_        ||_        t&          j        |_        d|_        t/          | ||¬¦  «        S )ag  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Úvaluec                 ó   — g | ]	}|j         ‘Œ
S rF   ©rƒ   ©Ú.0Úargs     r<   ú
<listcomp>zCloudClient.<locals>.<listcomp>•  s   € Ð3Ð3Ð3˜c�”	Ð3Ð3Ð3rL   c                 ó    — g | ]}|j         ­	|‘ŒS rN   r…   r†   s     r<   r‰   zCloudClient.<locals>.<listcomp>™  s   € ÐFÐFÐF˜C°C´IÐ4E�CÐ4EÐ4EÐ4ErL   zMissing required arguments: z, c                 ó   — g | ]	}|j         ‘Œ
S rF   )r�   r†   s     r<   r‰   zCloudClient.<locals>.<listcomp>œ  s   € Ð5WÐ5WÐ5WÀ3°c´hÐ5WÐ5WÐ5WrL   z8. Please provide them or set the environment variables: c                 ó   — g | ]	}|j         ‘Œ
S rF   )r‚   r†   s     r<   r‰   zCloudClient.<locals>.<listcomp>�  s   € ÐOtÐOtÐOtÐ`cÐPSÔP[ÐOtÐOtÐOtrL   NÚCHROMA_TENANTÚCHROMA_DATABASEri   z1chromadb.auth.token_authn.TokenAuthClientProviderTr[   )r6   Úallrƒ   ÚosÚenvironÚgetr‚   rq   Újoinr   rV   rn   ro   ra   rp   rr   rs   Úchroma_client_auth_providerÚchroma_client_auth_credentialsr	   ÚX_CHROMA_TOKENÚ"chroma_auth_token_transport_headerÚ;chroma_overwrite_singleton_tenant_database_access_from_authrW   )
rQ   rR   r~   rP   r{   r|   r}   Úrequired_argsrˆ   Úmissing_argss
             r<   ÚCloudClientr›   u  së  € õ8 	˜IÐ/?ÀwÐOÑOÔOð€Mõ
 Ð3Ð3 ]Ð3Ñ3Ô3Ñ4Ô4ð AØ ð 	Að 	AˆCØœ	Ð@¥R¤Z§^¢^°C´KÑ%@Ô%@ˆCŒIˆIàFÐF =ÐFÑFÔF€LØð 
Ýðx¨4¯9ª9Ð5WÐ5WÈ,Ð5WÑ5WÔ5WÑ+XÔ+Xð xð xØEIÇYÂYÐOtÐOtÐgsÐOtÑOtÔOtÑEuÔEuðxð xñ
ô 
ð 	
ð
 ÐÝ‘:”:ˆð Ð6•r”z—~’~ oÑ6Ô6€FØÐÝ�V‘”ˆØÐ<�2œ:Ÿ>š>Ð*;Ñ<Ô<€HØÐÝ�x‘=”=ˆÝ�'‰lŒl€GÝ�Z‘”€JÝ�Z‘”€JÝ�jÑ!Ô!€Jà=€HÔØ",€HÔØ'1€HÔ$Ø)3€HÔ&ð 	<ð Ô(ð /6€HÔ+Ý2FÔ2U€HÔ/ØKO€HÔHå °ÀHÐMÑMÔMÐMrL   c                 ób   — t          |¦  «        }t          |¦  «        }t          ||| ¬¦  «        S )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.
    r[   )rV   rW   rT   s      r<   r   r   ¾  s/   € õ �‰[Œ[€FÝ�8‰}Œ}€Hå °ÀHÐMÑMÔMÐMrL   c                 ó"   — t          | ¬¦  «        S )z:Create an admin client for tenant and database management.©rP   )ÚAdminClientCreatorrž   s    r<   r   r   Ñ  s   € å xÐ0Ñ0Ô0Ð0rL   )r7   N)NNNN)gÚtypingr   r   r   Ú__version__ÚloggingÚchromadb.api.clientr   rW   r   rŸ   Úchromadb.api.async_clientr   rx   Ú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   ro   r=   ÚIN_COLABÚ	is_clientÚchromadb.is_thin_clientr>   r:   rD   Úsqlite_version_infoÚ
subprocessÚsysÚ
check_callÚ
executableÚ
__import__ÚmodulesÚpopÚRuntimeErrorrK   rO   rV   rX   r^   rb   rn   rv   rz   r›   rF   rL   r<   ú<module>r¾      sÅ  ðØ (Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ð (à€à €€€Ø 7Ð 7Ð 7Ð 7Ð 7Ð 7ðð ð ð ð ð ð HÐ GÐ GÐ GÐ GÐ GØ :Ð :Ð :Ð :Ð :Ð :Ø Ð Ð Ð Ø FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FÐ FØ <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5ð ð  ð  ð  ð  ð  ð  ð  ð  ð  ð  ð  ð  ð  ð  ð  ð  ð  ð  ð  ð  ð  ð  ð  ð  ð  ð  ð  ð  ð  ð  ð  ð  ð  ð  ð  ð  ð  ð  ð  ð  ð  ð  ð  ð  ð  ð  ð  ð  ð  ð  ð  ð  ð  ð  ð  ð  ð  ð  ð  ð  ð  ð  ð  ð  ð  ðF 6Ð 5Ð 5Ð 5Ð 5Ð 5ðð ð ð ð ð ð ð ð ð ð ð ð Ð Ð Ð Ð Ð Ø 	€	€	€	ð)ð )ð )€ðV *Ð )Ð )Ð )Ð )Ð )à	ˆÔ	˜8Ñ	$Ô	$€àˆX‰ZŒZ€
ð
�Tð ð ð ð ð ˆ;‰=Œ=€à€	ðØ6Ð6Ð6Ð6Ð6Ð6à€I€IøØð ð ð Ø€I€I€Iðøøøð ð Ø€N€N€NàÔ" ZÒ/Ð/Øð 	àÐÐÐØˆJˆJˆJà!ˆJÔ!Ø”  u¨iÐ9KÐLñô ð ð ˆJ�{Ñ#Ô#Ð#Ø%(¤[§_¢_°[Ñ%AÔ%AˆCŒK˜	Ñ"Ð"à�,ð(ñô ð ð4ð 4ð 4ð 4ð�hð ð ð ð ð
 $(Ø Ø$ðNð NØ�xÔ ðNàðNð ðNð ð	Nð Nð Nð Nð< (Ø#'Ø Ø$ð	Nð NØ
��T�	Ô
ðNà�xÔ ðNð ðNð ð	Nð
 ðNð Nð Nð NðB Ø#'Ø Ø$ð	Nð NØ
�3Œ-ðNà�xÔ ðNð ðNð ð	Nð
 ðNð Nð Nð Nð< ØØØ(,Ø#'Ø Ø$ð3Nð 3NØ
ð3Nà
ð3Nð 
ð3Nð �d˜3 ˜8”nÔ%ð	3Nð
 �xÔ ð3Nð ð3Nð ð3Nð ð3Nð 3Nð 3Nð 3Nðn ØØØ(,Ø#'Ø Ø$ð8ð 8Ø
ð8à
ð8ð 
ð8ð �d˜3 ˜8”nÔ%ð	8ð
 �xÔ ð8ð ð8ð ð8ð ð8ð 8ð 8ð 8ðx !Ø"Ø!Ø#'ð	FNð *ØØðFNð FNð FNØ�SŒMðFNà�sŒmðFNð �cŒ]ðFNð �xÔ ð	FNð ðFNð ðFNð ðFNð ðFNð FNð FNð FNõT $Ø Ø$ðNð NØðNàðNð ðNð ð	Nð Nð Nð Nð& &. X¡Z¤Zð 1ð 1˜(ð 1°Hð 1ð 1ð 1ð 1ð 1ð 1s   ÃC% Ã%C/Ã.C/