Ë
    lQêj�  ã                   óª   — d dl mZmZ d dlmZ d dlmZmZ d dlm	Z	 dede
deee   ee   f   fd„Z	 	 ddede
d
ee   dee   deee   ee   f   f
d„Zy	)é    )ÚOptionalÚTuple)ÚUserIdentity)ÚDEFAULT_DATABASEÚDEFAULT_TENANT)ÚChromaAuthErrorÚuser_identityÚ4overwrite_singleton_tenant_database_access_from_authÚreturnc                 ó´   — |syd}d}| j                   }| j                  }|r|dk7  r|}|r+t        |«      }t        |«      dk(  rd|vrt	        |«      d   }||fS )a(  
    If settings.chroma_overwrite_singleton_tenant_database_access_from_auth
    is False, this function always returns (None, None).

    If settings.chroma_overwrite_singleton_tenant_database_access_from_auth
    is True, follows the following logic:
    - If the user only has access to a single tenant, this function will
        return that tenant as its first return value.
    - If the user only has access to a single database, this function will
        return that database as its second return value. If the user has
        access to multiple tenants and/or databases, including "*", this
        function will return None for the corresponding value(s).
    - If the user has access to multiple tenants and/or databases this
        function will return None for the corresponding value(s).
    ©NNNÚ*é   r   )ÚtenantÚ	databasesÚsetÚlenÚlist)r	   r
   r   ÚdatabaseÚuser_tenantÚuser_databasesÚuser_databases_sets          úa/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/chromadb/auth/utils/__init__.pyÚ(_singleton_tenant_database_if_applicabler      sy   € ñ& @ØØ€FØ€HØ×&Ñ&€KØ"×,Ñ,€NÙ�{ cÒ)ØˆÙÜ  Ó0ÐÜÐ!Ó" aÒ'¨CÐ7IÑ,IÜÐ.Ó/°Ñ2ˆHØ�8ÐÐó    NÚuser_provided_tenantÚuser_provided_databasec                 óö   — t        | |¬«      \  }}|r"|t        k7  r|r||k7  rt        d|› d|› d�«      ‚|r"|t        k7  r|r||k7  rt        d|› d|› d�«      ‚|r	|t        k(  r|r|}|r	|t        k(  r|r|}||fS )N)r	   r
   zTenant z does not match z5 from the server. Are you sure the tenant is correct?z	Database z7 from the server. Are you sure the database is correct?)r   r   r   r   )r	   r
   r   r   Ú
new_tenantÚnew_databases         r   Úmaybe_set_tenant_and_databaser!   *   sÝ   € ô 	1Ø#Ø=qô	ñØØñ 	Ø ¤NÒ2ÙØÐ.Ò.ä Ð(<Ð'=Ð=MÈjÈ\ð  ZOð  Pó  Qð  	QáØ"Ô&6Ò6ÙØÐ2Ò2ä 	Ð*@Ð)AÐAQÐR^ÐQ_ð  `Wð  Xó  Yð  	Yñ !Ð$8¼NÒ$JÙ
Ø)Ðá"Ð&<Ô@PÒ&PÙ
Ø!-ÐàÐ!7Ð7Ð7r   r   )Útypingr   r   Úchromadb.authr   Úchromadb.configr   r   Úchromadb.errorsr   ÚboolÚstrr   r!   © r   r   ú<module>r)      s˜   ðß "å &ß <Ý +ðØðà:>ðð ˆ8�C‰=˜( 3™-Ð'Ñ(óðJ +/Ø,0ñ	,8Øð,8à:>ð,8ð # 3™-ð,8ð % S™Mð	,8ð
 ˆ8�C‰=˜( 3™-Ð'Ñ(ô,8r   