Ë
    kQêj+)  ã                   ó¸  — d Z ddlmZ ddlmZ ddl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mZ dd
lmZmZ ddlmZ  G d„ dee   «      Z G d„ dee   «      Z G d„ d«      Z G d„ d«      Zddddddœdede	e   de	e
eeeef   f      de	e   de	e   de	e   defd„Z ddddddœdede	e   de	e
eeeef   f      de	e   de	e   de	e   defd„Z!y)zCRemote catalogs manage databases through a server's root namespace.é    )Úcached_property)Ú	timedelta)ÚAnyÚAsyncIteratorÚIteratorÚOptionalÚUnioné   )Ú_lancedb)ÚLOOP)ÚAsyncAuthorizationÚAuthorization)ÚAsyncConnectionÚDBConnection)ÚClientConfigÚOAuthConfig)ÚRemoteDBConnectionc                   ób   — e Zd ZdZdej
                  fd„Zd
d„Zdefd„Z	de
fd„Zdee   fd„Zy	)ÚAsyncDatabaseNamesz�An async iterator of database names with pagination state.

    Returned by [list_databases][lancedb.catalog.AsyncCatalog.list_databases].
    Úinnerc                 ó   — || _         y ©N©Ú_inner©Úselfr   s     úT/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/lancedb/catalog.pyÚ__init__zAsyncDatabaseNames.__init__   ó	   € Øˆ�ó    Úreturnc                 ó   — | S r   © ©r   s    r   Ú	__aiter__zAsyncDatabaseNames.__aiter__   ó   € Øˆr    c              ƒ   óR   K  — | j                   j                  «       ƒ d {  –—† S 7 Œ­wr   )r   Ú	__anext__r$   s    r   r(   zAsyncDatabaseNames.__anext__   s   è ø€ Ø—[‘[×*Ñ*Ó,×,Ð,Ð,ús   ‚' %¡'c                 ó6   — | j                   j                  «       S ©zBReturn the number of names available without another REST request.©r   Únum_page_resultsr$   s    r   r,   z#AsyncDatabaseNames.num_page_results!   ó   € à�{‰{×+Ñ+Ó-Ð-r    c                 ó6   — | j                   j                  «       S )aÂ  Return the token for the next REST request.

        Before the first request, this is the supplied starting token (``None``
        starts at the beginning). After the final page is fetched, it is ``None``,
        even if names remain cached. Drain the cache before saving a token to
        avoid skipping those names when resuming. A failed request terminates
        iteration and leaves its token available for resuming a new iterator.
        ©r   Ú
page_tokenr$   s    r   r0   zAsyncDatabaseNames.page_token%   s   € ð �{‰{×%Ñ%Ó'Ð'r    N)r!   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   ÚDatabaseNamesr   r%   Ústrr(   Úintr,   r   r0   r#   r    r   r   r      sF   „ ñð
˜h×4Ñ4ó óð- ó -ð. #ó .ð	(˜H S™Mô 	(r    r   c                   óN   — e Zd ZdZdefd„Zd
d„Zdefd„Zde	fd„Z
dee   fd„Zy	)r5   z—A synchronous iterator of database names with pagination state.

    Returned by [Catalog.list_databases][lancedb.catalog.Catalog.list_databases].
    r   c                 ó   — || _         y r   r   r   s     r   r   zDatabaseNames.__init__7   r   r    r!   c                 ó   — | S r   r#   r$   s    r   Ú__iter__zDatabaseNames.__iter__:   r&   r    c                 ó†   — 	 t        j                  | j                  j                  «       «      S # t        $ r t
        d ‚w xY wr   )r   Úrunr   r(   ÚStopAsyncIterationÚStopIterationr$   s    r   Ú__next__zDatabaseNames.__next__=   s:   € ð	*Ü—8‘8˜DŸK™K×1Ñ1Ó3Ó4Ð4øÜ!ò 	*Ü TÐ)ð	*ús	   ‚,/ ¯A c                 ó6   — | j                   j                  «       S r*   r+   r$   s    r   r,   zDatabaseNames.num_page_resultsC   r-   r    c                 ó6   — | j                   j                  «       S )zºReturn the token for the next REST request.

        See [page_token][lancedb.catalog.AsyncDatabaseNames.page_token]
        for initial, cached, final-page, and error behavior.
        r/   r$   s    r   r0   zDatabaseNames.page_tokenG   s   € ð �{‰{×%Ñ%Ó'Ð'r    N)r!   r5   )r1   r2   r3   r4   r   r   r;   r6   r@   r7   r,   r   r0   r#   r    r   r5   r5   1   sA   „ ñð
Ð0ó óð*˜#ó *ð. #ó .ð(˜H S™Mô (r    r5   c            	       óÎ   — e Zd ZdZdej
                  fd„Zedefd„«       Z	e
defd„«       Zddœd	ed
edefd„Zd	edefd„Zdddœdee   dee   defd„Zdddœd	edededdfd„Zy)ÚAsyncCataloga  An asynchronous remote catalog returned by
    [connect_catalog_async][lancedb.connect_catalog_async].

    Create/connect return ordinary [AsyncConnection][lancedb.db.AsyncConnection]
    instances. Drop uses restricted behavior: remove the database's tables first.
    r   c                 ó   — || _         y r   r   r   s     r   r   zAsyncCatalog.__init__X   r   r    r!   c                 ó@   — t        | j                  j                  «      S ©z;Authorization sharing this catalog's scope and credentials.)r   r   Úauthzr$   s    r   rH   zAsyncCatalog.authz[   s   € ô " $§+¡+×"3Ñ"3Ó4Ð4r    c                 ó.   — | j                   j                  S ©z&The catalog's root namespace endpoint.©r   Úurir$   s    r   rL   zAsyncCatalog.uri`   ó   € ð �{‰{�‰Ðr    F©Úexist_okÚnamerO   c             ƒ   ój   K  — t        | j                  j                  ||¬«      ƒ d{  –—† «      S 7 Œ­w)úBCreate a database, or open an existing one when ``exist_ok=True``.rN   N)r   r   Úcreate_database)r   rP   rO   s      r   rS   zAsyncCatalog.create_databasee   s2   è ø€ ô Ø—+‘+×-Ñ-¨d¸XÐ-ÓF×Fó
ð 	
ØFús   ‚&3¨1©	3c              ƒ   óf   K  — t        | j                  j                  |«      ƒ d{  –—† «      S 7 Œ­w)ú4Connect to an existing database by its logical name.N)r   r   Úconnect_database©r   rP   s     r   rV   zAsyncCatalog.connect_databasem   s&   è ø€ ä T§[¡[×%AÑ%AÀ$Ó%G×GÓHÐHÐGús   ‚$1¦/§	1N©r0   Ú
page_limitr0   rY   c                óN   — t        | j                  j                  ||¬«      «      S )aÎ  Iterate lazily over all database names using ``async for``.

        ``page_token`` resumes from a saved token; ``None`` starts at the beginning.
        ``page_limit`` sets the maximum names per REST response (not the total);
        ``None`` uses the server default. Request errors are raised during iteration.

        Examples
        --------
        ```python
        async for name in catalog.list_databases():
            print(name)
        ```
        rX   )r   r   Úlist_databases©r   r0   rY   s      r   r[   zAsyncCatalog.list_databasesq   s(   € ô  "Ø�K‰K×&Ñ&°*ÈÐ&ÓTó
ð 	
r    ©Úignore_missingÚcascader^   r_   c             ƒ   ó\   K  — | j                   j                  |||¬«      ƒ d{  –—†  y7 Œ­w©zÉDrop a database. A nonempty database is an error unless ``cascade`` is set,
        which drops everything in it first; the name stays taken until the server
        finishes cleaning up their storage.r]   N)r   Údrop_database©r   rP   r^   r_   s       r   rb   zAsyncCatalog.drop_database…   s0   è ø€ ð �k‰k×'Ñ'Ø ¸ð (ó 
÷ 	
ò 	
ús   ‚",¤*¥,)r1   r2   r3   r4   r   ÚCatalogr   r   r   rH   Úpropertyr6   rL   Úboolr   rS   rV   r   r7   r   r[   rb   r#   r    r   rD   rD   P   sà   „ ñð˜h×.Ñ.ó ð ð5Ð)ò 5ó ð5ð ð�Sò ó ðð
 .3ò
Øð
Ø&*ð
à	ó
ðI¨3ð I°?ó Ið
 .2Ètò
Ø% c™]ð
Ø?GÈ¹}ð
à	ó
ð* 49È%ò
Øð
Ø,0ð
ØCGð
à	ô
r    rD   c            	       óî   — e Zd ZdZdddddœdedee   dee   fd„Ze	de
fd	„«       Zedefd
„«       Zddœdededefd„Zdedefd„Zdededefd„Zdddœdee   dee   defd„Zdddœdedededdfd„Zy)rd   a^  A synchronous remote catalog returned by
    [connect_catalog][lancedb.connect_catalog].

    Examples
    --------
    ```python
    catalog = lancedb.connect_catalog("https://my-server.example", api_key="secret")
    db = catalog.create_database("analytics", exist_ok=True)
    for name in catalog.list_databases():
        print(name)
    ```
    N©Úapi_keyÚclient_configÚsql_host_overrideÚoauth_configr   rk   rl   c                óJ   — || _         || _        || _        || _        || _        y r   )r   Ú_api_keyÚ_client_configÚ_sql_host_overrideÚ_oauth_config)r   r   ri   rj   rk   rl   s         r   r   zCatalog.__init__ž   s*   € ð ˆŒØˆŒØ+ˆÔØ"3ˆÔØ)ˆÕr    r!   c                 ó@   — t        | j                  j                  «      S rG   )r   r   rH   r$   s    r   rH   zCatalog.authz­   s   € ô ˜TŸ[™[×.Ñ.Ó/Ð/r    c                 ó.   — | j                   j                  S rJ   rK   r$   s    r   rL   zCatalog.uri²   rM   r    FrN   rP   rO   c                ó†   — t        j                  | j                  j                  ||¬«      «      }| j	                  ||«      S )rR   rN   )r   r=   r   rS   Ú_wrap_database)r   rP   rO   r   s       r   rS   zCatalog.create_database·   s7   € ä—‘˜Ÿ™×4Ñ4°TÀHÐ4ÓMÓNˆØ×"Ñ" 4¨Ó/Ð/r    c                 ó~   — | j                  |t        j                  | j                  j	                  |«      «      «      S )rU   )ru   r   r=   r   rV   rW   s     r   rV   zCatalog.connect_database¼   s-   € à×"Ñ" 4¬¯©°$·+±+×2NÑ2NÈtÓ2TÓ)UÓVÐVr    c           	      óœ   — t        j                  ||| j                  | j                  | j                  | j
                  | j                  «      S r   )r   Ú_from_catalogrL   rn   ro   rq   rp   )r   rP   r   s      r   ru   zCatalog._wrap_databaseÀ   sD   € Ü!×/Ñ/ØØØ�H‰HØ�M‰MØ×ÑØ×ÑØ×#Ñ#ó
ð 	
r    rX   r0   rY   c                óN   — t        | j                  j                  ||¬«      «      S )aJ  Iterate lazily over database names, fetching more results as needed.

        ``page_token`` resumes from a saved token; ``None`` starts at the beginning.
        ``page_limit`` sets the maximum names per REST response (not the total);
        ``None`` uses the server default. Request errors are raised during iteration.
        rX   )r5   r   r[   r\   s      r   r[   zCatalog.list_databasesË   s(   € ô Ø�K‰K×&Ñ&°*ÈÐ&ÓTó
ð 	
r    r]   r^   r_   c                óf   — t        j                  | j                  j                  |||¬«      «       yra   )r   r=   r   rb   rc   s       r   rb   zCatalog.drop_databaseØ   s.   € ô 	�‰Ø�K‰K×%Ñ%Ø ^¸Wð &ó õ	
r    )r1   r2   r3   r4   rD   r   r6   r   r   r   r   rH   re   rL   rf   r   rS   rV   r   ru   r7   r5   r[   rb   r#   r    r   rd   rd   �   s  „ ñð" ØØ+/Ø.2ò*àð*ð $ C™=ð*ð ˜{Ñ+ó*ð ð0�}ò 0ó ð0ð ð�Sò ó ðð >Cò 0 Cð 0°dð 0À|ó 0ð
W Sð W¨\ó Wð	
 3ð 	
¨ð 	
À<ó 	
ð .2Ètò
Ø% c™]ð
Ø?GÈ¹}ð
à	ó
ð 49È%ò

Øð

Ø,0ð

ØCGð

à	ô

r    rd   N©ri   rj   rk   Úread_consistency_intervalrl   Úendpointri   rj   rk   r|   rl   r!   c             ƒ   óÜ   K  — t        |t        «      rt        di |¤Ž}|€
t        «       }t        j                  | ||||�|j                  «       nd|¬«      ƒ d{  –—† }t        |«      S 7 Œ­w)a©  Connect to an HTTP(S) server's root catalog.

    Root requests omit database-selection headers. API key, client configuration,
    OAuth, and table read consistency settings are inherited by opened databases.
    Database names containing slashes remain single logical names.
    Set ``sql_host_override`` to the SQL service endpoint to execute SQL through
    returned connections when the catalog endpoint uses HTTPS.
    Nr{   r#   )Ú
isinstanceÚdictr   r   Úconnect_catalogÚtotal_secondsrD   )r}   ri   rj   rk   r|   rl   r   s          r   Úconnect_catalog_asyncrƒ   å   s{   è ø€ ô" �-¤Ô&Ü$Ñ5 }Ñ5ˆØÐÜ$›ˆÜ×*Ñ*ØØØ#Ø+ð )Ð4ð &×3Ñ3Ô5àà!ô÷ €Eô ˜ÓÐðús   ‚AA,ÁA*ÁA,c                óf   — t        t        j                  t        | |||||¬«      «      ||||¬«      S )zÎConnect synchronously to an HTTP(S) server's root catalog.

    See [connect_catalog_async][lancedb.connect_catalog_async] for options.
    Local filesystem and object-store catalogs are not supported.
    r{   rh   )rd   r   r=   rƒ   )r}   ri   rj   rk   r|   rl   s         r   r�   r�   	  sE   € ô Ü�‰Ü!ØØØ+Ø"3Ø*CØ)ôó		
ð Ø#Ø+Ø!ôð r    )"r4   Ú	functoolsr   Údatetimer   Útypingr   r   r   r   r	   Ú r   Úbackground_loopr   rH   r   r   Údbr   r   Úremoter   r   Ú	remote.dbr   r6   r   r5   rD   rd   r€   rƒ   r�   r#   r    r   ú<module>r�      si  ðñ Jå %Ý ß @Õ @å Ý !ß 4ß -ß -Ý )ô(˜ sÑ+ô (ô>(�H˜S‘Mô (÷>=
ñ =
÷@R
ñ R
ðp "ØCGØ'+Ø59Ø*.ò!Øð!ð �c‰]ð!ð ˜E ,°°S¸#°X±Ð">Ñ?Ñ@ð	!ð
   ‘}ð!ð  (¨	Ñ2ð!ð ˜;Ñ'ð!ð ó!ðN "ØCGØ'+Ø59Ø*.òØðð �c‰]ðð ˜E ,°°S¸#°X±Ð">Ñ?Ñ@ð	ð
   ‘}ðð  (¨	Ñ2ðð ˜;Ñ'ðð ôr    