Ë
    lQêjå¥  ã                    ó  — U d dl Z d dlZd dlZd dlZ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mZ d dlmZ d dlZd dl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+ d dl,m-Z.m/Z/ d dl0m1Z1m2Z3 d dl4m5Z5 d dl6Z6d dl7Z7d dl8Z9d dl:m;Z; d dlm<Z< d dl=m>Z>m?Z? d dlZ e6j€                  eA«      ZBg d¢ZC ejˆ                  dd«      ZE ejˆ                  d«      dk(  ZFeEeCvr eGdeE› deC› d�«      ‚dej�                  j’                  ej�                  j”                  ej�                  j–                  gej˜                  jš                  dœZNeOePef   eQd<   eFrhej¤                  j¦                  hZT eUej¤                  dd«      ZVeV�eTj¯                  eV«       eNj±                   eYd„ ej¤                  D «       «      d¬ «        ej´                  j¶                  d¬i eN¤Ž ej´                  j·                  dej´                  j¹                  d!«      d"¬#«       ej´                  j·                  d$ej´                  j¹                  d!«      d%¬#«       ej´                  j·                  d&ej´                  j¹                  d!«      d'd%¬(«       ej´                  j»                  eE«        ejˆ                  d)«      dk(  xs  ejˆ                  d*«      dk(  Z^d+Z_d,Z`d-e"d.dfd/„Za	 	 	 d§deej´                     d$eej´                     d&eej´                     d.eej´                     fd0„Zb ejˆ                  d1«      dk7  Zcec xr  ejˆ                  d2«      d3k(  Zdd4Zeee› d5e$› �Zfd6Zgd.ejÐ                  fd7„Zid­d8„Zjd.ekfd9„Zl	 	 	 	 	 	 	 	 	 	 	 d®d:ekd;emd<eeP   d=eeP   d>eeP   d?eeP   d@eeP   dAeeP   dBeeP   dCeeP   dDeeP   dEeem   d.dfdF„Znd¯d-e!dGekd.dfdH„Zo	 	 	 	 	 	 	 	 	 	 	 	 	 d°d;emdIePd=eeP   dJeeP   d>eeP   d?eeP   dKeeP   d@eeP   dAeeP   dBeeP   dCeeP   dDeeP   dEeem   d.ee&ddf   fdL„Zpd.ee&ddf   fdM„Zqd.ee&ddf   fdN„Zrd.ee&ddf   fdO„Zsd.ee&ddf   fdP„Ztd.eePekf   fdQ„Zu ejì                  «       d.ee&ddf   fdR„«       Zwd.ee&ddf   fdS„Zxd.ee&ddf   fdT„Zyd.ee&ddf   fdU„Zzd.ee&ddf   fdV„Z{	 d±dWePd.ee&ddf   fdX„Z| ejì                  «       d.ee&ddf   fdY„«       Z} ejì                  «       d.ee&ddf   fdZ„«       Z~ ejì                  d[¬\«      d.ee&ddf   fd]„«       Z ejì                  d[¬\«      d.ee&ddf   fd^„«       Z€ ejì                  d[¬\«      d.ee&ddf   fd_„«       Z� ejì                  d[¬\«      d.ee&ddf   fd`„«       Z‚ ejì                  d)e�j                  v rdagndbg¬c«      dde�j                  d.ee&ddf   fde„«       Z… ejì                  d)e�j                  v rdfgndgg¬c«      dde�j                  d.ee&ddf   fdh„«       Z†d.e
eP   fdi„Z‡d.e
eP   fdj„Zˆd.e
eg ee&ddf   f      fdk„Z‰d.e
eg ee&ddf   f      fdl„ZŠd.e
eg ee&ddf   f      fdm„Z‹d.e
eg ee&ddf   f      fdn„ZŒd.e
eg ee&ddf   f      fdo„Z� ejì                  dp eŒ«       ¬q«      dde�j                  d.ee!ddf   fdr„«       ZŽ ejì                  dp eŠ«       ¬q«      dde�j                  d.ee!ddf   fds„«       Z� ejì                   eˆ«       ¬c«      dde�j                  d.ee!ddf   fdt„«       Z� ejì                  d[ e‡«       ¬q«      dde�j                  d.ee!ddf   fdu„«       Z‘ ejì                  dp e�«       ¬q«      dde�j                  d.ee!ddf   fdv„«       Z’ ejì                  dp e‰«       ¬q«      dde�j                  d.ee!ddf   fdw„«       Z“e5 G dx„ dye3«      «       Z”e5 G dz„ d{e1«      «       Z• ejì                  d[¬\«      d|e&d.ee!ddf   fd}„«       Z– G d~„ d«      Z— ejì                  d[¬\«      d|e&d.ee—ddf   fd€„«       Z˜d�ePd.eeP   fd‚„Z™dƒe d�ePd.dfd„„Zšdƒe d.dfd…„Z› ejì                  d[¬\«      d|e&d�ePd.ee ddf   fd†„«       Zœejì                  dde�j                  d.ePfd‡„«       Z�dˆe�j<                  d.dfd‰„ZŸdŠed‹ef   d.efdŒ„Z e Z¡d�e�jD                  d.dfdŽ„Z£ ejì                  d[¬\«      d�e&d�ePd.ee ddf   fd�„«       Z¤ ejì                  d[¬\«      d‘e&d.ee ddf   fd’„«       Z¥ ejì                  d[¬\«      d“e&d.ee!ddf   fd”„«       Z¦ ejì                  d[¬\«      d•e&d.ee!ddf   fd–„«       Z§ ejì                  d[¬\«      d—e&d.ee!ddf   fd˜„«       Z¨ G d™„ dše«      Z©d›e(dœed�e	e+   džekd.eee+   ee*   f   f
dŸ„Zªd›e(dœed�e	e+   džekd.eee+   ee*   f   f
d „Z«d.e
e©   fd¡„Z¬ ejì                  dp e¬«       ¬q«      dde�j                  d.ee©ddf   fd¢„«       Z­d£e�j\                  d.dfd¤„Z¯dƒe d.emfd¥„Z° ejì                  d¬¦«      dde�j                  d.ed§   fd¨„«       Z±ejì                  d.ee>ge?f   fd©„«       Z²ejì                  dªe<d.e<fd«„«       Z³y)²é    N)	ÚAnyÚ	GeneratorÚIteratorÚListÚOptionalÚSequenceÚTupleÚCallableÚcast)ÚUUID)ÚConnectError)ÚProtocol)ÚAsyncFastAPI)ÚFastAPI)Ú	ClientAPIÚ	ServerAPIÚBaseAPI)ÚDEFAULT_DATABASEÚSettingsÚSystem)ÚProducer)ÚSeqIdÚOperationRecord)ÚClientÚAdminClient)ÚAsyncAdminClientÚAsyncClient)Úasync_class_to_sync)Ú	MagicMock)ÚMonkeyPatch©Ú	DocumentsÚ
Embeddings©ÚfastÚnormalÚslowÚPROPERTY_TESTING_PRESETr%   Ú#CHROMA_HYPOTHESIS_CI_REPRODUCE_ONLYÚ1z!Invalid property testing preset: z. Must be one of ú.i�_ )ÚdeadlineÚsuppress_health_checkÚ	verbosityÚbase_hypothesis_settingsÚexplainc              #   ó2   K  — | ]  }|t         vsŒ|–— Œ y ­w©N)Údisabled_phases)Ú.0Úphases     ú[/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/chromadb/test/conftest.pyú	<genexpr>r7   K   s   è ø€ ò 
Ø°5ÄÒ3OŒEñ
ùs   ‚�T)ÚphasesÚ
print_blobÚbaseé2   )Úmax_examplesr&   éd   r'   iô  )r<   Ústateful_step_countÚCHROMA_RUST_BINDINGS_TEST_ONLYÚCHROMA_INTEGRATION_TEST_ONLYzPSPANN creation/modification disallowed in Rust bindings or integration test modezMSPANN creation/modification allowed in Rust bindings or integration test modeÚapiÚreturnc                 ó$   — | j                  «        y r2   )Úreset)rA   s    r6   rD   rD   q   s   € Ø‡I�I…Kó    c                 ór  — g d¢}| ||dœ}|j                  t        «      }|�_|j                  j                  «       D ��ci c]  \  }}||v r||“Œ }}}t	        j
                  t        j
                  j                  fi |¤ŽS t        t        j
                  t        j
                  j                  «      S c c}}w )a%  Override Hypothesis settings for specific profiles.

    For example, to override max_examples only when the current profile is 'fast':

    override_hypothesis_profile(
        fast=hypothesis.settings(max_examples=50),
    )

    Settings will be merged with the default/active profile.
    )r,   r<   r>   r-   r$   )ÚgetÚCURRENT_PRESETÚ__dict__ÚitemsÚ
hypothesisÚsettingsÚdefaultr   )	r%   r&   r'   Úallowable_override_keysÚoverride_profilesÚoverriding_profileÚkeyÚvalueÚoverridden_settingss	            r6   Úoverride_hypothesis_profilerT   u   s¿   € ò Ðð ØØñÐð +×.Ñ.¬~Ó>ÐàÐ%ð 1×9Ñ9×?Ñ?ÓA÷
á��UØÐ-Ñ-ð �‰Jð
Ðñ 
ô ×"Ñ"¤:×#6Ñ#6×#>Ñ#>ÑVÐBUÑVÐVä”
×#Ñ#¤Z×%8Ñ%8×%@Ñ%@ÓAÐAùó
s   ¿B3ÚCHROMA_CLUSTER_TEST_ONLYÚMULTI_REGIONÚtrueztilt-spanningú+éx   c                  óL   — t         j                  j                  t        d¬«      S )Nz5Requires Kubernetes to be running with a valid config)Úreason)ÚpytestÚmarkÚskipifÚNOT_CLUSTER_ONLY© rE   r6   Úskip_if_not_clusterra   §   s$   € Ü�;‰;×ÑÜØFð ó ð rE   c                  ó€  — t         j                  j                  t         j                  j                  t         j                  j	                  t
        «      «      d«      } t        d| › �«       t         j                  j                  | «      st        d| › �«      ‚t        j                  dddddd	d
dddddddd| g«       y )Nzopenssl.cnfzConfig path: zConfig file not found at ÚopensslÚreqz-x509z-newkeyzrsa:4096z-keyoutzserverkey.pemz-outzservercert.pemz-daysÚ365z-nodesz-subjz/CN=localhostz-config)ÚosÚpathÚjoinÚdirnameÚabspathÚ__file__ÚprintÚexistsÚFileNotFoundErrorÚ
subprocessÚrun)Úconfig_paths    r6   Ú generate_self_signed_certificaterr   ®   s¨   € Ü—'‘'—,‘,Ü
�‰�‰œŸ™Ÿ™¬Ó1Ó2°Mó€Kô 
ˆM˜+˜Ð
'Ô(Ü�7‰7�>‰>˜+Ô&ÜÐ";¸K¸=Ð IÓJÐJÜ‡N�NàØØØØØØØØØØØØØØØð!	
õrE   c                  ó8  — t        j                   t         j                  t         j                  «      5 } | j                  d«       | j	                  t         j
                  t         j                  d«       | j                  «       d   cd d d «       S # 1 sw Y   y xY w)N)Ú r   é   )ÚsocketÚAF_INETÚSOCK_STREAMÚbindÚ
setsockoptÚ
SOL_SOCKETÚSO_REUSEADDRÚgetsockname)Úss    r6   Úfind_free_portr   Ë   sf   € Ü	�‰”v—~‘~¤v×'9Ñ'9Ó	:ð "¸aØ	�‰ˆwŒØ	�‰”V×&Ñ&¬×(;Ñ(;¸QÔ?Ø�}‰}‹˜qÑ!÷"÷ "ò "ús   ³ABÂBÚportÚis_persistentÚpersist_directoryÚchroma_server_authn_providerÚ$chroma_server_authn_credentials_fileÚchroma_server_authn_credentialsÚ"chroma_auth_token_transport_headerÚchroma_server_authz_providerÚchroma_server_authz_config_fileÚchroma_server_ssl_certfileÚchroma_server_ssl_keyfileÚ;chroma_overwrite_singleton_tenant_database_access_from_authc                 ó  — |r|rt        ddddd||d|||||||¬«      }nt        ddddddd|||||||¬«      }t        j                  j                  j	                  |«      }t        j                  |j                  «       d| d	d
|
|	¬«       y)zRun a Chroma server locallyúchromadb.api.segment.SegmentAPIú chromadb.db.impl.sqlite.SqliteDBú7chromadb.segment.impl.manager.local.LocalSegmentManagerT)Úchroma_api_implÚchroma_sysdb_implÚchroma_producer_implÚchroma_consumer_implÚchroma_segment_manager_implr�   r‚   Úallow_resetrƒ   r„   r…   r†   r‡   rˆ   r‹   F)r�   r‘   r’   r“   r”   r�   r•   rƒ   r„   r…   r†   r‡   rˆ   r‹   z0.0.0.0Úerroré   )Úhostr€   Ú	log_levelÚtimeout_keep_aliveÚssl_keyfileÚssl_certfileN)r   ÚchromadbÚserverÚfastapir   Úuvicornrp   Úapp)r€   r�   r‚   rƒ   r„   r…   r†   r‡   rˆ   r‰   rŠ   r‹   rL   rž   s                 r6   Ú_run_serverr¢   Ò   sÂ   € ñ Ñ*ÜØ=Ø@Ø!CØ!CØ(aØ'Ø/ØØ)EØ1UØ,KØ/QØ)EØ,Kð IDô
‰ô$ Ø=Ø@Ø!CØ!CØ(aØØØ)EØ1UØ,KØ/QØ)EØ,Kð IDô
ˆô  �_‰_×$Ñ$×,Ñ,¨XÓ6€FÜ‡K�KØ�
‰
‹ØØØØØ-Ø/örE   Úattemptsc                 ó¨   — 	 | j                  «        y # t        $ r5}|dkD  r|‚t        j                  d«       t	        | |dz   «       Y d }~y d }~ww xY w)Né   é   ru   )Ú	heartbeatr   ÚtimeÚsleepÚ_await_server)rA   r£   Úes      r6   rª   rª     sH   € ð-Ø�‰�øÜò -Ø�bŠ=ØˆGä�J‰J�qŒMÜ˜#˜x¨!™|×,Ñ,ûð-ús   ‚ “	Aœ+AÁAr�   Úchroma_client_auth_providerÚchroma_client_auth_credentialsc              #   óè  ‡‡‡‡‡
‡‡‡K  — t        «       Št        j                  d«      Š‰dd|||‰||	‰
|‰f}dt        dt        t
        ddf   fˆˆˆˆˆˆ
ˆˆfd„}| rNt        j                  «       }‰| |j                  |||‰||	‰
|‰f} ||«      E d{  –—†  	 |j                  «        y ||«      E d{  –—†  y7 Œ'# t        t        f$ r }t        j                  dk(  rn|‚Y d}~yd}~ww xY w7 Œ9­w)zmFixture generator that launches a server in a separate process, and yields a
    fastapi client connect to itÚspawnFNÚargsrB   c              3   ó¤  •K  — ‰j                  t        | d¬«      }|j                  «        t        ‰d‰d‰‰‰‰
‰
rdnd‰	¬«
      }t	        |«      }|j                  t        «      }|j                  «        t        t        |t        «      r|n
t        |«      «       |–— |j                  «        |j                  «        |j                  «        y ­w)NT)Útargetr°   ÚdaemonÚ	localhostF)
r�   Úchroma_server_hostÚchroma_server_http_portr•   r¬   r­   r†   Úchroma_server_ssl_verifyÚchroma_server_ssl_enabledr‹   )ÚProcessr¢   Ústartr   r   Úinstancer   rª   Ú
isinstancer   r   ÚstopÚkillrh   )r°   ÚprocrL   ÚsystemrA   r�   r†   r­   r¬   r‹   r‰   Úctxr€   s        €€€€€€€€r6   rp   z_fastapi_fixture.<locals>.runK  s°   øè ø€ Ø�{‰{¤+°DÀˆ{ÓFˆØ�
‰
ŒÜØ+Ø*Ø$(ØØ(CØ+IØ/QØ%?Ù.H¡dÈeð IDô
ˆô ˜Ó!ˆØ�o‰oœiÓ(ˆØ�‰ŒÜœZ¨¬WÔ5‘cÔ;NÈsÓ;SÔTØŠØ�‰ŒØ�	‰	ŒØ�	‰	�ùs   ƒCCÚnt)r   ÚmultiprocessingÚget_contextr   r   r   ÚtempfileÚTemporaryDirectoryÚnameÚcleanupÚPermissionErrorÚNotADirectoryErrorrf   )r�   r�   rƒ   r¬   r„   r…   r­   r†   r‡   rˆ   r‰   rŠ   r‹   r°   rp   r‚   r«   rÁ   r€   s    ` `  ``  ` `    @@r6   Ú_fastapi_fixturerË     s#  ÿè ø€ ô$ Ó€DÜ
×
%Ñ
% gÓ
.€Cð 	ØØØ$Ø,Ø'Ø*Ø$Ø'Ø"Ø!ØCð	ð 	ð8”#ð œ)¤F¨D°$Ð$6Ñ7÷ ô ñ0 Ü$×7Ñ7Ó9ÐàØØ×"Ñ"Ø(Ø0Ø+Ø.Ø(Ø+Ø&Ø%ØGð
ˆñ �t“9×Ðð
	Ø×%Ñ%Õ'ñ �t“9×Ñð 	ùô  Ô!3Ð4ò 	ä�w‰w˜$ŠØà�ô ûð	úð 	úsH   ŠB
C2ÂB<ÂC2ÂB> Â*C2Â6C0Â7C2Â>C-ÃC(Ã#C2Ã(C-Ã-C2c                  ó   — t        d¬«      S )NF©r�   ©rË   r`   rE   r6   rŸ   rŸ   †  s   € Ü¨%Ô0Ð0rE   c                  ó   — t        dd¬«      S )NFú'chromadb.api.async_fastapi.AsyncFastAPI)r�   r�   rÎ   r`   rE   r6   Úasync_fastapirÑ   Š  s   € ÜØØAôð rE   c                  ó   — t        d¬«      S )NTrÍ   rÎ   r`   rE   r6   Úfastapi_persistentrÓ   ‘  s   € Ü¨$Ô/Ð/rE   c                  ó2   — t        «        t        ddd¬«      S )NFz./servercert.pemz./serverkey.pem)r�   r‰   rŠ   )rr   rË   r`   rE   r6   Úfastapi_sslrÕ   •  s   € Ü$Ô&ÜØØ#5Ø"3ôð rE   c                  óî   — d} d}t        j                  d«      rYt        j                  dd«      j                  d«      d   }t        t        j                  dd«      j                  d«      d   «      } || fS )z³Get server host and port from CHROMA_SERVER_HOST environment variable.

    Returns:
        Tuple of (host, port) from environment, or defaults (localhost, 8000) if not set.
    i@  r´   ÚCHROMA_SERVER_HOSTrt   ú:r   ru   )rf   ÚgetenvÚsplitÚint)r€   r˜   s     r6   Ú_get_server_host_port_from_envrÜ   ž  sl   € ð €DØ€Dä	‡y�yÐ%Ô&Ü�y‰yÐ-¨rÓ2×8Ñ8¸Ó=¸aÑ@ˆÜ”2—9‘9Ð1°2Ó6×<Ñ<¸SÓAÀ!ÑDÓEˆà�ˆ:ÐrE   c               #   óâ   K  — t        «       \  } }t        d|| d¬«      }t        |«      }|j                  t        «      }t        |«       |j                  «        |–— |j                  «        y ­w)Núchromadb.api.fastapi.FastAPIT)r�   r¶   rµ   r•   )rÜ   r   r   r»   r   rª   rº   r½   )r˜   r€   rL   rÀ   rA   s        r6   Úbasic_http_clientrß   ®  sa   è ø€ ä/Ó1�J€Dˆ$äØ6Ø $ØØô	€Hô �HÓ€FØ
�/‰/œ)Ó
$€CÜ�#ÔØ
‡L�L„NØ
‚LØ
‡K�K…Mùs   ‚A-A/c               #   óð   K  — t        j                  ddd¬«      5 } | j                  d«       | j                  «        t	        dd| j
                  dd¬	«      D ]  }|–— Œ 	 d d d «       y # 1 sw Y   y xY w­w)
NÚwú	.htpasswdF©ÚsuffixÚdeleteúCadmin:$2y$05$e5sRb6NCcSH3YfbIxe1AGu2h5K7OOd982OXKmd8WyQ3DRQ4MvpnZS
ú;chromadb.auth.basic_authn.BasicAuthenticationServerProviderú1chromadb.auth.basic_authn.BasicAuthClientProviderúadmin:admin©r�   rƒ   r„   r¬   r­   ©rÅ   ÚNamedTemporaryFileÚwriteÚcloserË   rÇ   ©ÚfÚitems     r6   Ú0fastapi_server_basic_auth_valid_cred_single_userrò   À  st   è ø€ ô
 
×	$Ñ	$ S°ÀUÔ	Kð ÈqØ	�‰ÐVÔWØ	�‰Œ	ä$ØØ)fØ12·±Ø([Ø+8ô
ò 	ˆDð ‹Jñ	÷	÷ ñ üó   ‚A6›AA*Á!	A6Á*A3Á/A6c               #   ó8  K  — ddddœ} t        j                  ddd¬«      5 }| j                  «       D ]  \  }}|j                  |› d	|› d
�«       Œ |j	                  «        t        dd|j                  dd¬«      D ]  }|–— Œ 	 d d d «       y # 1 sw Y   y xY w­w)Nz<$2y$10$kY9hn.Wlfcj7n1Cnjmy1kuIhEFIVBsfbNWLQ5ahoKmdc2HLA4oP6iz<$2y$10$CymQ63tic/DRj8dD82915eoM4ke3d6RaNKU4dj4IVJlHyea0yeGDSz<$2y$05$e5sRb6NCcSH3YfbIxe1AGu2h5K7OOd982OXKmd8WyQ3DRQ4MvpnZS)ÚuserÚuser2Úadminrá   râ   Frã   rØ   ú
rç   rè   ré   rê   )rÅ   rì   rJ   rí   rî   rË   rÇ   )Úcredsrð   rõ   Úcredrñ   s        r6   Ú3fastapi_server_basic_auth_valid_cred_multiple_usersrû   Ó  s¬   è ø€ ð OØOØOñ€Eô
 
×	$Ñ	$ S°ÀUÔ	Kð ÈqØŸ+™+›-ò 	(‰JˆD�$Ø�G‰G�t�f˜A˜d˜V 2Ð&Õ'ð	(à	�‰Œ	ä$ØØ)fØ12·±Ø([Ø+8ô
ò 	ˆDð ‹Jñ	÷÷ ñ üs   ‚B¡A#BÂ	BÂBÂBc               #   óð   K  — t        j                  ddd¬«      5 } | j                  d«       | j                  «        t	        dd| j
                  dd¬	«      D ]  }|–— Œ 	 d d d «       y # 1 sw Y   y xY w­w)
Nrá   râ   Frã   ræ   rç   rè   zadmin:admin1rê   rë   rï   s     r6   Ú&fastapi_server_basic_auth_invalid_credrý   ê  sr   è ø€ Ü	×	$Ñ	$ S°ÀUÔ	Kð ÈqØ	�‰ÐVÔWØ	�‰Œ	ä$ØØ)fØ12·±Ø([Ø+9ô
ò 	ˆDð ‹Jñ	÷	÷ ñ üró   c               #   ó¤  K  — t        j                  ddd¬«      5 } | j                  d«       | j                  «        t        j                  ddd¬«      5 }|j                  d«       |j                  «        t	        ddd	d
| j
                  d|j
                  ¬«      D ]  }|–— Œ 	 d d d «       d d d «       y # 1 sw Y   ŒxY w# 1 sw Y   y xY w­w)Nrá   râ   Frã   ræ   z.authzaL  
roles_mapping:
    admin:
        actions:
            [
                "system:reset",
                "tenant:create_tenant",
                "tenant:get_tenant",
                "db:create_database",
                "db:get_database",
                "db:list_collections",
                "db:create_collection",
                "db:get_or_create_collection",
                "collection:get_collection",
                "collection:delete_collection",
                "collection:update_collection",
                "collection:add",
                "collection:delete",
                "collection:get",
                "collection:query",
                "collection:peek",
                "collection:update",
                "collection:upsert",
                "collection:count",
            ]
users:
- id: admin
  role: admin
    rè   ré   rç   z?chromadb.auth.simple_rbac_authz.SimpleRBACAuthorizationProvider)r�   r¬   r­   rƒ   r„   r‡   rˆ   rë   )Úserver_authn_fileÚserver_authz_filerñ   s      r6   Ú%fastapi_server_basic_authn_rbac_authzr  ù  sá   è ø€ Ü	×	$Ñ	$Ø�K¨ô
ð 5à	Ø×ÑØRô	
ð 	×ÑÔ!ä×(Ñ(Ø˜¨ô
ð -	àØ×#Ñ#ðôð> ×#Ñ#Ô%ä(Ø#Ø,_Ø/<Ø-jØ5F×5KÑ5KØ-nØ0A×0FÑ0Fôò 	�ð “
ñ	÷I-	÷5ð 5÷-	ð -	ú÷5ð 5üs5   ‚C›:CÁAB8Â'CÂ/	CÂ8C	Â=CÃCÃ	CÚsingleton_databasec           	   #   óî  K  — t        j                  d«      ret        s_t        «       \  }}t	        d||dddd¬«      }t        |«      }|j                  t        «      }t        |«       |j                  «        |–— y t        j                  dd	d¬
«      5 }|j                  d| › d�«       |j                  «        t        ddddd|j                  ¬«      D ]  }|–— Œ 	 d d d «       y # 1 sw Y   y xY w­w)Nr×   rÞ   Tz1chromadb.auth.token_authn.TokenAuthClientProviderzadmin-tokenF)r�   rµ   r¶   r•   r¬   r­   r‹   rá   z.authnrã   z�
users:
  - id: admin
    tokens:
      - admin-token
  - id: singleton_user
    tenant: singleton_tenant
    databases:
      - z%
    tokens:
      - singleton-token
z;chromadb.auth.token_authn.TokenAuthenticationServerProvider)r�   r‹   r¬   r­   rƒ   r„   )rf   rÙ   r_   rÜ   r   r   r»   r   rª   rº   rÅ   rì   rí   rî   rË   rÇ   )r  r˜   r€   rL   rÀ   rA   rð   rñ   s           r6   Ú2fastapi_fixture_admin_and_singleton_tenant_db_userr  2  sÿ   è ø€ ô 
‡y�yÐ%Ô&Õ/?ä3Ó5‰
ˆˆdäØ:Ø#Ø$(ØØ([Ø+8àHMô	
ˆô ˜Ó!ˆØ�o‰oœiÓ(ˆÜ�cÔØ�‰ŒØŠØô 
×	$Ñ	$ S°À%Ô	Hð ÈAØ	�‰ð	ð 
Ðð ðô	
ð 	
�‰Œ	ä$ØØHLØ([Ø+8Ø)fØ12·±ô
ò 	ˆDð ‹Jñ	÷#÷ ñ üs   ‚BC5ÂA
C)Ã 	C5Ã)C2Ã.C5c               #   ó„   K  — t        dd¬«      } t        | «      }|j                  «        |–— |j                  «        y­w)ú�Fixture generator for returning a client configured via environmenet
    variables, intended for externally configured integration tests
    TrÞ   ©r•   r�   N©r   r   rº   r½   ©rL   rÀ   s     r6   Úintegrationr
  h  s;   è ø€ ô
 ØÐ*Hô€Hô �HÓ€FØ
‡L�L„NØ
‚LØ
‡K�K…Mùó   ‚>A c               #   ó„   K  — t        dd¬«      } t        | «      }|j                  «        |–— |j                  «        y­w)r  TrÐ   r  Nr  r	  s     r6   Úasync_integrationr  v  s;   è ø€ ô
 ØÐ*Sô€Hô �HÓ€FØ
‡L�L„NØ
‚LØ
‡K�K…Mùr  Úfunction)Úscopec            	   #   óŽ   K  — t        ddddddd¬«      } t        | «      }|j                  «        |–— |j                  «        y­w)z>Fixture generator for segment-based API using in-memory Sqliter�   rŽ   r�   FT)r�   r‘   r’   r“   r”   r�   r•   Nr  r	  s     r6   Úpython_sqlite_ephemeralr  „  sJ   è ø€ ô Ø9Ø<Ø?Ø?Ø$]ØØô€Hô �HÓ€FØ
‡L�L„NØ
‚LØ
‡K�K…Mùs   ‚AAc            
   #   óR  K  — t        j                  «       } t        ddddddd| j                  ¬«      }t	        |«      }|j                  «        |–— |j                  «        	 | j                  «        y# t        t        f$ r }t        j                  dk(  rn|‚Y d}~yd}~ww xY w­w)z?Fixture generator for segment-based API using persistent Sqliter�   rŽ   r�   T)r�   r‘   r’   r“   r”   r•   r�   r‚   rÂ   N)rÅ   rÆ   r   rÇ   r   rº   r½   rÈ   rÉ   rÊ   rf   )Ú	save_pathrL   rÀ   r«   s       r6   Úpython_sqlite_persistentr  –  sŸ   è ø€ ô ×+Ñ+Ó-€IÜØ9Ø<Ø?Ø?Ø$]ØØØ#Ÿ.™.ô	€Hô �HÓ€FØ
‡L�L„NØ
‚LØ
‡K�K„Mð
Ø×ÑÕøô Ô/Ð0ò ä�7‰7�dŠ?ØàˆGô ûðüs0   ‚A!B'Á$A5 Á4B'Á5B$ÂBÂB'ÂB$Â$B'c            
   #   ó�   K  — t        dddddddd¬«      } t        | «      }|j                  «        |–— |j                  «        y­w)	z:Fixture generator for system using ephemeral Rust bindingsú!chromadb.api.rust.RustBindingsAPIrŽ   r�   FTrt   ©r�   r‘   r’   r“   r”   r�   r•   r‚   Nr  r	  s     r6   Úrust_sqlite_ephemeralr  ¶  sM   è ø€ ô Ø;Ø<Ø?Ø?Ø$]ØØØô	€Hô �HÓ€FØ
‡L�L„NØ
‚LØ
‡K�K…Mùs   ‚AAc            
   #   óÌ   K  — t        j                  «       } t        ddddddd| j                  ¬«      }t	        |«      }|j                  «        |–— |j                  «        y­w)z0Fixture generator for system using Rust bindingsr  rŽ   r�   Tr  N)rÅ   rÆ   r   rÇ   r   rº   r½   )r  rL   rÀ   s      r6   Úrust_sqlite_persistentr  É  s_   è ø€ ô ×+Ñ+Ó-€IÜØ;Ø<Ø?Ø?Ø$]ØØØ#Ÿ.™.ô	€Hô �HÓ€FØ
‡L�L„NØ
‚LØ
‡K�K…Mùs   ‚A"A$r  r  )ÚparamsÚrequestc                 ó8   — | j                  | j                  «      S r2   ©ÚgetfixturevalueÚparam©r  s    r6   Úsqliter"  Ý  ó   € ð ×"Ñ" 7§=¡=Ó1Ð1rE   r  r  c                 ó8   — | j                  | j                  «      S r2   r  r!  s    r6   Úsqlite_persistentr%  æ  r#  rE   c                  óø   — g d¢} dt         j                  v r"| j                  d«       | j                  d«       dt         j                  v rddg} dt         j                  v rdg} dt         j                  v rd	d
g} | S )N)rŸ   rÑ   rÓ   Úsqlite_fixturer%  ÚCHROMA_INTEGRATION_TESTr
  r  r@   rU   rß   r?   r  r  )rf   ÚenvironÚappend©Úfixturess    r6   Úfiltered_fixture_namesr-  ï  sw   € ò€Hð !¤B§J¡JÑ.Ø�‰˜Ô&Ø�‰Ð+Ô,Ø%¬¯©Ñ3Ø!Ð#6Ð7ˆØ!¤R§Z¡ZÑ/Ø'Ð(ˆØ'¬2¯:©:Ñ5Ø+Ð-EÐFˆØ€OrE   c                  óF   — t        «       D � cg c]  } | dvr| ‘Œ
 }} |S c c} w )N)r  r  r  r  )r-  )Úfixturer,  s     r6   Ú"filtered_http_server_fixture_namesr0    s=   € ô .Ó/ö
àØð
ñ
ò 	ð
€Hð 
ð €Oùò
s   �c                  ó   — t         t        g} | S r2   )rò   rû   r+  s    r6   Úsystem_fixtures_authr2    s   € ä8Ü;ð€Hð €OrE   c                  ó   — t         g} | S r2   )r  r+  s    r6   Ú system_fixtures_authn_rbac_authzr4    s   € ô 6Ð6€HØ€OrE   c                  ó   — t         g} | S r2   )r  r+  s    r6   Ú1system_fixtures_root_and_singleton_tenant_db_userr6  "  s   € ô CÐC€HØ€OrE   c                  ó   — t         g} | S r2   )rý   r+  s    r6   Úsystem_fixtures_wrong_authr8  )  s   € Ü6Ð7€HØ€OrE   c                  ó   — t         g} | S r2   )rÕ   r+  s    r6   Úsystem_fixtures_sslr:  .  s   € Üˆ}€HØ€OrE   Úmodule)r  r  c              #   ó@   K  — | j                  «       E d {  –—†  y 7 Œ­wr2   ©r   r!  s    r6   Úsystem_wrong_authr>  3  ó   è ø€ ð �}‰}‹×Òúó   ‚–—c              #   ó@   K  — | j                  «       E d {  –—†  y 7 Œ­wr2   r=  r!  s    r6   Úsystem_authn_rbac_authzrB  :  r?  r@  c                 ó8   — | j                  | j                  «      S r2   r  r!  s    r6   Úsystem_http_serverrD  A  s   € ð ×"Ñ" 7§=¡=Ó1Ð1rE   c                 ó8   — | j                  | j                  «      S r2   r  r!  s    r6   rÀ   rÀ   H  s   € à×"Ñ" 7§=¡=Ó1Ð1rE   c              #   ó@   K  — | j                  «       E d {  –—†  y 7 Œ­wr2   r=  r!  s    r6   Ú
system_sslrG  M  ó   è ø€ à�}‰}‹×Òúr@  c              #   ó@   K  — | j                  «       E d {  –—†  y 7 Œ­wr2   r=  r!  s    r6   Úsystem_authrJ  R  rH  r@  c                   ó   — e Zd Zy)ÚAsyncClientCreatorSyncN©Ú__name__Ú
__module__Ú__qualname__r`   rE   r6   rL  rL  W  ó   „ àrE   rL  c                   ó   — e Zd Zy)ÚAsyncAdminClientSyncNrM  r`   rE   r6   rS  rS  \  rQ  rE   rS  rÀ   c              #   óž   K  — | j                  «        | j                  t        «      }t        |t        «      rt        |«      }|–— y |–— y ­wr2   )Úreset_stater»   r   r¼   r   r   )rÀ   rA   Útransformeds      r6   rA   rA   a  s?   è ø€ à
×ÑÔØ
�/‰/œ)Ó
$€Cä�#”|Ô$Ü)¨#Ó.ˆØÓà‹	ùs   ‚AAc                   ó|   — e Zd ZU dZeed<   g Zee   ed<   defd„Z	de
de
defd	„Zdefd
„Zde
de
defd„Zdefd„Zy)ÚClientFactorieszÚThis allows consuming tests to be parameterized by async/sync versions of the client and papers over the async implementation.
    If you don't need to manually construct clients, use the `client` fixture instead.
    Ú_systemÚ_created_clientsrÀ   c                 ó   — || _         y r2   )rY  )ÚselfrÀ   s     r6   Ú__init__zClientFactories.__init__v  s	   € Øˆ�rE   r°   ÚkwargsrB   c                 ó¬  — |j                  d«      €| j                  j                  |d<   |j                  d«      €t        r	t        |d<   | j                  j                  j
                  dk(  r@t        t        t        j                  |i |¤Ž«      }| j                  j                  |«       |S t        |i |¤Ž}| j                  j                  |«       |S )NrL   ÚdatabaserÐ   )rG   rY  rL   ÚMULTI_REGION_ENABLEDÚDEFAULT_MCMR_DATABASEr�   r   ÚClientCreatorrL  ÚcreaterZ  r*  ©r\  r°   r^  Úclients       r6   Úcreate_clientzClientFactories.create_clienty  s¿   € Ø�:‰:�jÓ!Ð)Ø!%§¡×!6Ñ!6ˆF�:Ñà�:‰:�jÓ!Ð)Õ.BÜ!6ˆF�:Ñð �L‰L×!Ñ!×1Ñ1Ø8ò9ô œ-Ô)?×)FÑ)FÈÐ)WÐPVÑ)WÓXˆFØ×!Ñ!×(Ñ(¨Ô0ØˆMä Ð/¨Ñ/ˆØ×Ñ×$Ñ$ VÔ,ØˆrE   c                 óT  — | j                   j                  j                  dk(  rJt        t        t
        j                  | j                   «      «      }| j                  j                  |«       |S t	        j                  | j                   «      }| j                  j                  |«       |S ©NrÐ   )
rY  rL   r�   r   rc  rL  Úfrom_system_asyncrZ  r*  Úfrom_system©r\  rf  s     r6   Úcreate_client_from_systemz)ClientFactories.create_client_from_systemŒ  s†   € à�L‰L×!Ñ!×1Ñ1Ø8ò9ô ÜÔ5×GÑGÈÏÉÓUóˆFð ×!Ñ!×(Ñ(¨Ô0ØˆMä×*Ñ*¨4¯<©<Ó8ˆØ×Ñ×$Ñ$ VÔ,ØˆrE   c                 ó  — | j                   j                  j                  dk(  r6t        t        t        |i |¤Ž«      }| j                  j                  |«       |S t	        |i |¤Ž}| j                  j                  |«       |S ri  )rY  rL   r�   r   r   rS  rZ  r*  re  s       r6   Úcreate_admin_clientz#ClientFactories.create_admin_client›  sw   € à�L‰L×!Ñ!×1Ñ1Ø8ò9ô œ+Ô';¸TÐ'LÀVÑ'LÓMˆFØ×!Ñ!×(Ñ(¨Ô0ØˆMä˜dÐ- fÑ-ˆØ×Ñ×$Ñ$ VÔ,ØˆrE   c                 óT  — | j                   j                  j                  dk(  rJt        t        t
        j                  | j                   «      «      }| j                  j                  |«       |S t	        j                  | j                   «      }| j                  j                  |«       |S ri  )	rY  rL   r�   r   r   rS  rk  rZ  r*  rl  s     r6   Úcreate_admin_client_from_systemz/ClientFactories.create_admin_client_from_system¨  s�   € à�L‰L×!Ñ!×1Ñ1Ø8ò9ô œ+Ô';×'GÑ'GÈÏÉÓ'UÓVˆFØ×!Ñ!×(Ñ(¨Ô0ØˆMä×(Ñ(¨¯©Ó6ˆØ×Ñ×$Ñ$ VÔ,ØˆrE   N)rN  rO  rP  Ú__doc__r   Ú__annotations__rZ  r   r   r]  r   rc  rg  rm  r   ro  rq  r`   rE   r6   rX  rX  m  su   … ñð ƒOà(*Ð�d˜9‘oÓ*ð˜vó ð 3ð °#ð ¸-ó ð&¨=ó ð¨ð ¸ð Àó ð°ô rE   rX  c              #   ó  K  — | j                  «        t        | «      }|–— t        |j                  «      dkD  rE|j                  j	                  «       }|j                  «        ~t        |j                  «      dkD  rŒDy y ­w)Nr   )rU  rX  ÚlenrZ  ÚpopÚclear_system_cache)rÀ   Ú	factoriesrf  s      r6   Úclient_factoriesry  ¶  sl   è ø€ à
×ÑÔä Ó'€IØ
‚Oä
ˆi×(Ñ(Ó
)¨AÒ
-Ø×+Ñ+×/Ñ/Ó1ˆØ×!Ñ!Ô#Øô ˆi×(Ñ(Ó
)¨AÕ
-ùs   ‚A;B Á>B Údatabase_namec                 óh   — t        | j                  d«      «      dkD  r| j                  d«      d   S d S )NrX   ru   r   )ru  rÚ   )rz  s    r6   Úget_topology_namer|  Ã  s5   € Ü*-¨m×.AÑ.AÀ#Ó.FÓ*GÈ!Ò*Kˆ=×Ñ˜sÓ# AÑ&ÐUÐQUÐUrE   rf  c                 óˆ   — | j                  «       }|j                  dk(  rd|_        t        |«      }|j                  |«       y )NrÐ   rÞ   )Úget_settingsr�   r   Úcreate_database)rf  rz  Úadmin_settingsr÷   s       r6   r  r  Ç  s?   € Ø×(Ñ(Ó*€NØ×%Ñ%Ð)RÒRØ)GˆÔ&Ü˜Ó'€EØ	×Ñ˜-Õ(rE   c                 ó¼   — dt        t        j                  «       «      z   }t        | j                  «      }|�|dz   |z   }t        | |«       | j                  |«       y)zHCreate an isolated database for a test and updates the client to use it.Útest_NrX   )ÚstrÚuuidÚuuid4r|  r`  r  Úset_database)rf  r`  Ú	topo_names      r6   Úcreate_isolated_databaserˆ  Ï  sQ   € àœœTŸZ™Z›\Ó*Ñ*€HÜ! &§/¡/Ó2€IØÐØ˜s‘? XÑ-ˆÜ�F˜HÔ%Ø
×Ñ˜Õ!rE   c              #   ó   K  — | j                  «        | j                  j                  dk(  r&t        t        t
        j                  | |¬«      «      }nt        j                  | |¬«      }|–— |j                  «        y ­w©NrÐ   )r`  )
rU  rL   r�   r   r   rL  rj  rc  rk  rw  )rÀ   rz  rf  s      r6   rf  rf  Ù  sj   è ø€ à
×ÑÔà‡�×&Ñ&Ð*SÒSÜÜÜ"×4Ñ4°VÀmÐ4ÓTó
‰ô
 ×*Ñ*¨6¸MÔJˆà
‚LØ
×ÑÕùs   ‚A<A>c                 ó6   — t        t        | j                  «      S r2   )r   rƒ  r   r!  s    r6   rz  rz  é  s   € ä”�W—]‘]Ó#Ð#rE   Úmetafuncc                 óJ  — d| j                   v r•t        j                  t        d¬«      g}t        r^| j
                  j                  d«      rC|j                  t        j                  t        dt        j                  j                  ¬«      «       | j                  d|d¬«       y	y	)
zNParameterize database_name based on whether the test opted in to multi-region.rz  Úclassic)ÚidÚtest_with_multi_regionzmulti-region-db)r�  ÚmarksT)ÚindirectN)Úfixturenamesr\   r   r   ra  Ú
definitionÚget_closest_markerr*  rb  r]   r�  Úparametrize)rŒ  r  s     r6   Úpytest_generate_testsr—  î  s†   € à˜(×/Ñ/Ñ/Ü—,‘,Ô/°IÔ>Ð?ˆÝ H×$7Ñ$7×$JÑ$JØ$ô%
ð �M‰MÜ—‘Ü)Ø(Ü Ÿ+™+×<Ñ<ôôð 	×Ñ˜_¨f¸tÐÕDð 0rE   Ú	test_func.c                 ó@   — t         j                  j                  | «      S )zÑOpt-in decorator for multi-region testing.

    If MULTI_REGION_ENABLED: Test runs with MCMR database (tilt-spanning+default_database)
    If not MULTI_REGION_ENABLED: Test runs with default database only
    )r\   r]   r�  )r˜  s    r6   Úmulti_region_testrš  ÿ  s   € ô �;‰;×-Ñ-¨iÓ8Ð8rE   rñ   c                 óÐ   — t        | d«      rZ| j                  «       D ]2  }|j                  dk(  sŒt        rdnd}| j                  › |› �| _         y | j                  › d�| _        yy)z'Modify test names to show database typeÚiter_markersr�  z[multi-region]z[single-region]N)Úhasattrrœ  rÇ   ra  Ú_nodeid)rñ   Úmarkerrä   s      r6   Úpytest_itemcollectedr     sl   € äˆt�^Ô$Ø×'Ñ'Ó)ò 	<ˆFØ�{‰{Ð6Ó6å-AÑ)ÐGX�Ø"&§,¡, °¨xÐ8�”Ùð	<ð #Ÿl™l˜^¨?Ð;ˆD�Lð %rE   rD  c              #   ó(  K  — | j                  «        | j                  j                  dk(  r:t        t        t
        j                  | |¬«      «      }|–— |j                  «        y t        j                  | |¬«      }|–— |j                  «        y ­wrŠ  )
rU  rL   r�   r   r   rL  rj  rw  rc  rk  )rD  rz  rf  s      r6   Úhttp_clientr¢    s‹   è ø€ ð ×"Ñ"Ô$ð 	×#Ñ#×3Ñ3Ø4ò	5ô ÜÜ"×4Ñ4Ø"¨]ð 5ó ó
ˆð ŠØ×!Ñ!Õ#ä×*Ñ*Ð+=ÈÔVˆØŠØ×!Ñ!Õ#ùs   ‚BBrG  c              #   ó~   K  — | j                  «        t        j                  | «      }|–— |j                  «        y ­wr2   )rU  rc  rk  rw  )rG  rf  s     r6   Ú
client_sslr¤  2  s3   è ø€ à×ÑÔÜ×&Ñ& zÓ2€FØ
‚LØ
×ÑÕùs   ‚;=r>  c              #   ó^   K  — | j                  «        | j                  t        «      }|–— y ­wr2   ©rU  r»   r   )r>  rA   s     r6   Úapi_wrong_credr§  :  s)   è ø€ ð ×!Ñ!Ô#Ø
×
$Ñ
$¤YÓ
/€CØ
ƒIùó   ‚+-rB  c              #   ó^   K  — | j                  «        | j                  t        «      }|–— y ­wr2   r¦  )rB  rA   s     r6   Úapi_with_authn_rbac_authzrª  C  s)   è ø€ ð ×'Ñ'Ô)Ø
!×
*Ñ
*¬9Ó
5€CØ
ƒIùr¨  rJ  c              #   ób   K  — | }|j                  «        |j                  t        «      }|–— y ­wr2   r¦  )rJ  Ú_sysrA   s      r6   Úapi_with_server_authr­  L  s*   è ø€ à€DØ×ÑÔØ
�-‰-œ	Ó
"€CØ
ƒIùs   ‚-/c                   óD   — e Zd Zdededee   dedee	e   e	e
   f   f
d„Zy)Ú
ProducerFnÚproducerÚcollection_idÚ
embeddingsÚnrB   c                  ó   — y r2   r`   )r\  r°  r±  r²  r³  s        r6   Ú__call__zProducerFn.__call__X  s   € ð =@rE   N)rN  rO  rP  r   r   r   r   rÛ   r	   r   r   rµ  r`   rE   r6   r¯  r¯  W  sU   „ ð@àð@ð ð@ð ˜_Ñ-ð	@ð
 ð@ð 
ˆx˜Ñ(¨(°5©/Ð9Ñ	:ô@rE   r¯  r°  r±  r²  r³  c                 ó°   — g }g }t        |«      D ]A  }t        |«      }| j                  ||«      }|j                  |«       |j                  |«       ŒC ||fS r2   )ÚrangeÚnextÚsubmit_embeddingr*  )	r°  r±  r²  r³  Úsubmitted_embeddingsÚseq_idsÚ_r«   Úseq_ids	            r6   Úproduce_n_singler¾  a  se   € ð ÐØ€GÜ�1‹Xò ˆÜ�ÓˆØ×*Ñ*¨=¸!Ó<ˆØ×#Ñ# AÔ&Ø�‰�vÕð	ð
   Ð(Ð(rE   c                 óŽ   — g }g }t        |«      D ]  }t        |«      }|j                  |«       Œ  | j                  ||«      }||fS r2   )r·  r¸  r*  Úsubmit_embeddings)r°  r±  r²  r³  rº  r»  r¼  r«   s           r6   Úproduce_n_batchrÁ  q  sZ   € ð ÐØ!€GÜ�1‹Xò 'ˆÜ�ÓˆØ×#Ñ# AÕ&ð'ð ×(Ñ(¨Ð8LÓM€GØ Ð(Ð(rE   c                  ó   — t         t        gS r2   )r¾  rÁ  r`   rE   r6   Úproduce_fn_fixturesrÃ  €  s   € ÜœoÐ.Ð.rE   c              #   ó(   K  — | j                   –— y ­wr2   r=  r!  s    r6   Úproduce_fnsrÅ  „  s   è ø€ ð �-‰-Óùs   ‚Úconfigc                 óL   — | j                  dd«       | j                  dd«       y)zRegister custom markersÚmarkersz+dual_database: run test with both databaseszMtest_with_multi_region: run test with MCMR database when MULTI_REGION_ENABLEDN)Úaddinivalue_line)rÆ  s    r6   Úpytest_configurerÊ  ‹  s'   € à
×Ñ˜IÐ'TÔUØ
×ÑØØWõrE   c                 ó:   — | j                  «       j                  du S )ziReturns True if the client is in-process (a SQLite client), False if it's out-of-process (a HTTP client).N)r~  r¶   )rf  s    r6   Úis_client_in_processrÌ  ”  s   € à×ÑÓ ×8Ñ8¸DÐ@Ð@rE   )Úautouse)NNNc              #   ó    K  — | j                   j                  }t        j                  d|› �«       d–— t        j                  d|› �«       y­w)z2Automatically logs the start and end of each test.zStarting test: NzFinished test: )ÚnoderÇ   ÚloggerÚdebug)r  Ú	test_names     r6   Ú	log_testsrÓ  ™  sB   è ø€ ð —‘×!Ñ!€IÜ
‡L�L�? 9 +Ð.Ô/ó 
ä
‡L�L�? 9 +Ð.Õ/ùs   ‚AAc                  ó&   — dt         dt        fd„} | S )z"Return mock embeddings for testingÚinputrB   c                 óv   — | D �cg c])  }t        j                  g d¢t         j                  ¬«      ‘Œ+ c}S c c}w )N©gš™™™™™¹?gš™™™™™É?g333333Ó?)Údtype)ÚnpÚarrayÚfloat32)rÕ  r¼  s     r6   Ú_mock_embeddingsz)mock_embeddings.<locals>._mock_embeddings©  s%   € ØEJÖKÀ”—‘š´·
±
Ö;ÒKÐKùÒKs   ….6r!   )rÜ  s    r6   Úmock_embeddingsrÝ  ¥  s    € ðL¤	ð L¬jó Lð ÐrE   Úmonkeypatchc                 óè  — t        «       t        «       t        «       t        «       t        «       t        «       t        «       t        «       t        «       t        «       t        «       dœ}| j                  t        dt        t        j                  fi |¤Ž«       t        «       t        «       t        «       t        «       t        «       t        «       dœ}t        «       }t        j                  g d¢g«      |j                  _        t        j                  g d¢g«      |j                  _        |t        «       |f|d   j                  _        |j                  «       D ]  \  }}| j                  ||d¬«       Œ | S )zMock common dependencies)ÚPILÚtorchÚopenaiÚcohereÚsentence_transformersÚollamaÚInstructorEmbeddingÚvoyageaiÚtext2vecÚ	open_clipÚboto3Úmodules)z	PIL.Imagez)sentence_transformers.SentenceTransformerzollama.ClientzInstructorEmbedding.INSTRUCTORzvoyageai.Clientztext2vec.SentenceModelr×  ré  F)Úraising)r   ÚsetattrÚsysÚdictrë  rÙ  rÚ  Úencode_textÚreturn_valueÚencode_imageÚcreate_model_and_transformsrJ   )rÞ  Úmock_modulesÚmock_attributesÚ
mock_modelrg   Úmocks         r6   Úmock_common_depsrø  ¯  s$  € ô
 ‹{Ü“Ü“+Ü“+Ü!*£Ü“+Ü(›{Ü“KÜ“KÜ“[Ü“ñ€Lð ×Ñœ˜Y¬¬S¯[©[Ñ(I¸LÑ(IÔJô “[Ü5>³[Ü"›Ü*3«+Ü$›;Ü"+£+ñ€Oô “€JÜ*,¯(©(²OÐ3DÓ*E€J×ÑÔ'Ü+-¯8©8²_Ð4EÓ+F€J×ÑÔ(àÜ‹ØðJ€L�Ñ×9Ñ9ÔFð &×+Ñ+Ó-ò 7‰
ˆˆdØ×Ñ˜D $°ÐÕ6ð7ð ÐrE   )r:   )rB   N)FNNNNNNNNNF)r   )FrÞ   NNNNNNNNNNF)r  )´rÃ   rf   rv   ro   rÅ   r¨   Útypingr   r   r   r   r   r   r	   r
   r   r„  r   rK   r\   r    Úhttpxr   Útyping_extensionsr   Úchromadb.api.async_fastapir   Úchromadb.api.fastapir   Úchromadb.server.fastapir�   Úchromadb.apir   r   r   Úchromadb.configr   r   r   Úchromadb.ingestr   Úchromadb.typesr   r   Úchromadb.api.clientr   rc  r   Úchromadb.api.async_clientr   r   ÚAsyncClientCreatorÚchromadb.utils.async_to_syncr   Úloggingrî  ÚnumpyrÙ  Úunittest.mockr   r    Úchromadb.api.typesr"   r#   Ú	getLoggerrN  rÐ  ÚVALID_PRESETSrÙ   rH   ÚHYPOTHESIS_CI_REPRODUCE_ONLYÚ
ValueErrorÚHealthCheckÚdata_too_largeÚlarge_base_exampleÚfunction_scoped_fixtureÚ	VerbosityÚverboser/   rï  rƒ  rs  ÚPhaseÚshrinkr3   ÚgetattrÚexplain_phaseÚaddÚupdateÚtuplerL   Úregister_profileÚget_profileÚload_profileÚis_spann_disabled_modeÚskip_reason_spann_disabledÚskip_reason_spann_enabledrD   rT   r_   ra  ÚMULTI_REGION_TOPOLOGYrb  ÚCOMPACTION_SLEEPÚMarkDecoratorra   rr   rÛ   r   Úboolr¢   rª   rË   rŸ   rÑ   rÓ   rÕ   rÜ   r/  rß   rò   rû   rý   r  r  r
  r  r  r  r  r  r)  ÚFixtureRequestr"  r%  r-  r0  r2  r4  r6  r8  r:  r>  rB  rD  rÀ   rG  rJ  rL  rS  rA   rX  ry  r|  r  rˆ  rf  rz  ÚMetafuncr—  rš  r�  ÚItemr   r¢  r¤  r§  rª  r­  r¯  r¾  rÁ  rÃ  rÅ  ÚConfigrÊ  rÌ  rÓ  rÝ  rø  r`   rE   r6   ú<module>r*     sâ  ðÜ Û 	Û Û Û Û ÷
÷ 
õ 
õ ã Û Û Ý Ý &å 3Ý (Û ß 6Ñ 6ß >Ñ >Ý $ß 1ß D÷õ =Û Û 
Û Ý #Ý ß 4Û à	ˆ×	Ñ	˜8Ó	$€â*€Ø�—‘Ð4°fÓ=€Ø(˜rŸy™yÐ)NÓOÐSVÑVÐ à˜Ñ&Ù
Ø
+¨NÐ+;Ð;LÈ]ÈOÐ[\Ð]óð ð
 à×Ñ×-Ñ-Ø×Ñ×1Ñ1Ø×Ñ×6Ñ6ðð
 ×%Ñ%×-Ñ-ñ,Ð ˜$˜s C˜x™.ó ñ  Ø!×'Ñ'×.Ñ.Ð/€OÙ˜J×,Ñ,¨i¸Ó>€MØÐ Ø×Ñ˜MÔ*à×#Ñ#Ùñ 
Ø)×/Ñ/ô
ó 
ð ð	 $ô ð %€
× Ñ × $Ñ $Ñ HÐ/GÒ Hà 
× Ñ × $Ñ $Ø
ˆJ×Ñ×+Ñ+¨FÓ3À"ð %ô ð × Ñ × $Ñ $Øˆj×!Ñ!×-Ñ-¨fÓ5ÀCð %ô ð × Ñ × $Ñ $Ø
Ø×Ñ×#Ñ# FÓ+ØØð	 %ô ð × Ñ ×  Ñ   Ô 0ð
 €B‡I�IÐ.Ó/°3Ñ6ò 8Ø€r‡y�yÐ/Ó0°CÑ7ð ð
 Wð ð Tð ð
ˆwð ˜4ó ð
 +/Ø,0Ø*.ñ(BØ
�:×&Ñ&Ñ
'ð(Bà�Z×(Ñ(Ñ)ð(Bð �:×&Ñ&Ñ
'ð(Bð ˆj×!Ñ!Ñ"ó	(BðV �2—9‘9Ð7Ó8¸CÑ?Ð Ø+Ð+ÒS°	°·	±	¸.Ó0IÈVÑ0SÐ Ø'Ð Ø0Ð1°Ð3CÐ2DÐEÐ ØÐ ð˜V×1Ñ1ó óð:"˜ó "ð  Ø'+Ø26Ø:>Ø59Ø8<Ø26Ø59Ø04Ø/3ØRWñ;Ø
ð;àð;ð   ‘}ð;ð #+¨3¡-ð	;ð
 +3°3©-ð;ð &.¨c¡]ð;ð )1°©ð;ð #+¨3¡-ð;ð &.¨c¡]ð;ð !)¨¡ð;ð  (¨™}ð;ð BJÈ$Áð;ð 
ó;ñ|-�yð -¨Cð -¸ó -ð  Ø9Ø26Ø15Ø:>Ø59Ø48Ø8<Ø26Ø59Ø04Ø/3ØRWñhØðhàðhð #+¨3¡-ðhð "*¨#¡ð	hð
 +3°3©-ðhð &.¨c¡]ðhð %-¨S¡Mðhð )1°©ðhð #+¨3¡-ðhð &.¨c¡]ðhð !)¨¡ðhð  (¨™}ðhð BJÈ$Áðhð ˆv�t˜TÐ!Ñ"óhðV1�˜6 4¨Ð-Ñ.ó 1ð�y ¨¨tÐ!3Ñ4ó ð0˜I f¨d°DÐ&8Ñ9ó 0ð�Y˜v t¨TÐ1Ñ2ó ð¨¨c°3¨h©ó ð  €‡�Óð˜9 V¨T°4Ð%7Ñ8ò ó ðð"¸)ÀFÈDÐRVÐDVÑ:Wó ð&¸YØ
ˆD�$Ðñ>ó ð.°	¸&À$ÈÐ:LÑ0Mó ð6¨y¸ÀÀtÐ9KÑ/Ló 6ðt 3ñ3Øð3àˆv�t˜TÐ!Ñ"ó3ðl €‡�Óð
�Y˜v t¨TÐ1Ñ2ò 
ó ð
ð €‡�Óð
˜9 V¨T°4Ð%7Ñ8ò 
ó ð
ð €‡��jÔ!ð ¨6°4¸Ð+=Ñ!>ò ó "ðð" €‡��jÔ!ð )¨F°D¸$Ð,>Ñ"?ò ó "ðð> €‡��jÔ!ð˜y¨°°tÐ);Ñ<ò ó "ðð$ €‡��jÔ!ð 	¨&°$¸Ð*<Ñ =ò ó "ðð& €‡�à'¨2¯:ª:Ñ5ð $Ñ$à
#Ð	$ôð
2�F×)Ò)ð 2¨i¸ÀÀdÐ8JÑ.Kò 2óð
2ð €‡�à'¨2¯:ª:Ñ5ð %Ñ%à
$Ð	%ôð
2˜v×4Ò4ð 2¸À6È4ÐQUÐCUÑ9Vò 2óð
2ð  S¡	ó ð*¨D°©Ió ð˜d 8¨B°	¸&À$ÈÐ:LÑ0MÐ,MÑ#NÑOó ð¨$ØˆR�˜6 4¨Ð-Ñ.Ð.Ñ/ñ+ó ð¸4ØˆR�˜6 4¨Ð-Ñ.Ð.Ñ/ñ<ó ð D¨°"°iÀÈÈdÐ@RÑ6SÐ2SÑ)TÑ$Uó ð
˜T (¨2¨y¸ÀÀtÐ9KÑ/LÐ+LÑ"MÑNó ð
 €‡��hÑ'AÓ'CÔDðØ×"Ò"ðàˆy˜$ Ð$Ñ%òó Eðð €‡��hÑ'GÓ'IÔJðØ×"Ò"ðàˆy˜$ Ð$Ñ%òó Kðð €‡�Ñ9Ó;Ô<ð2Ø×"Ò"ð2àˆy˜$ Ð$Ñ%ò2ó =ð2ð €‡��jÑ)?Ó)AÔBð2�F×)Ò)ð 2¨i¸	À4ÈÐ8MÑ.Nò 2ó Cð2ð €‡��hÑ':Ó'<Ô=ð˜×-Ò-ð °)¸IÀtÈTÐ<QÑ2Rò ó >ðð €‡��hÑ';Ó'=Ô>ð˜×.Ò.ð °9¸YÈÈdÐ=RÑ3Sò ó ?ðð ô	Ð/ó 	ó ð	ð ô	Ð+ó 	ó ð	ð €‡��jÔ!ð�ð ˜9 Y°°dÐ%:Ñ;ò ó "ð÷Fñ FðR €‡��jÔ!ð	˜Vð 	¨	°/À4ÈÐ2MÑ(Nò 	ó "ð	ðV Sð V¨X°c©]ó Vð)˜Ið )°cð )¸dó )ð" Yð "°4ó "ð €‡��jÔ!ð �6ð  ¨#ð  °)¸IÀtÈTÐ<QÑ2Rò  ó "ð ð ‡�ð$˜6×0Ò0ð $°Sò $ó ð$ðE F§O¢Oð E¸ó Eð"9 ¨#¨s¨(Ñ!3ð 9¸ó 9ð +Ð ð<˜vŸ{š{ð <¨tó <ð €‡��jÔ!ð$Øð$Ø/2ð$àˆy˜$ Ð$Ñ%ò$ó "ð$ð. €‡��jÔ!ð ˜6ð   i°	¸4ÀÐ0EÑ&Fò  ó "ð ð €‡��jÔ!ðØðàˆy˜$ Ð$Ñ%òó "ðð €‡��jÔ!ðØ#ðàˆy˜$ Ð$Ñ%òó "ðð €‡��jÔ!ð fð °¸9ÀdÈDÐ;PÑ1Qò ó "ðô@�ô @ð)Øð)àð)ð ˜Ñ)ð)ð ð	)ð
 ˆ8�OÑ$ h¨u¡oÐ5Ñ6ó)ð )Øð)àð)ð ˜Ñ)ð)ð ð	)ð
 ˆ8�OÑ$ h¨u¡oÐ5Ñ6ó)ð/˜T *Ñ-ó /ð €‡��hÑ':Ó'<Ô=ðØ×"Ò"ðàˆz˜4 Ð%Ñ&òó >ðð˜VŸ]š]ð ¨tó ðA ð A¨tó Að
 €‡�˜Ôð0�v×,Ò,ð 0°Ð;KÑ1Lò 0ó ð0ð ‡�ð˜ 9 +¨zÐ"9Ñ:ò ó ðð ‡�ð, +ð ,°+ò ,ó ñ,rE   