Ë
    kQêjpK  ã                   óÆ  — d Z ddlmZmZmZ ddlmZmZ ddlm	Z	 ddl
Z
ddlmZmZmZmZmZ ddlmZ dd	lmZ g d
¢ZdZ ed«      Zed   Z ed¬«       G d„ d«      «       Z ed¬«       G d„ d«      «       Z G d„ dee	«      Z ed¬«       G d„ d«      «       Z ed¬«       G d„ d«      «       Z ed¬«       G d„ d«      «       Z ed¬«       G d„ d«      «       Z  ed¬«       G d„ d«      «       Z!d2d ed!ee   d"efd#„Z"d$eeef   d"efd%„Z#d&ee$   d"dfd'„Z%d$eeef   d"efd(„Z&d$e'd"efd)„Z(d$e'd"efd*„Z) G d+„ d,«      Z*d-ee   d"efd.„Z+d-ee   d"ee   fd/„Z, G d0„ d1«      Z-y)3a(  Deployment-wide authorization through ``catalog.authz``.

ACLs grant one privilege on an object to a principal, group, or role. Role
bindings grant a role to a principal or group. Identity-provider group membership
is read-only. Name resolution and permission checks are performed by the server.
é    )ÚAsyncIteratorÚIteratorÚSequence)Ú	dataclassÚfield)ÚEnumN)ÚLiteralÚOptionalÚTypeVarÚUnionÚcasté   )Ú_lancedb)ÚLOOP)
ÚAuthorizationÚAsyncAuthorizationÚSubjectÚObjectÚ	PrivilegeÚAccessControlEntryÚRoleBindingÚIdentityInfoÚPrincipalInfoÚ	GroupInfoéd   Ú_T)Úprincipal_idÚprincipal_nameÚgroup_idÚ
group_nameÚroleÚprincipal_api_keyÚunknownT)Úfrozenc                   ó\  — e Zd ZU dZeed<    ed¬«      Zeed<    eddd¬«      Z	e
j                  ed<   d„ Zed	ed
d fd„«       Zeded
d fd„«       Zed	ed
d fd„«       Zeded
d fd„«       Zeded
d fd„«       Zeded
d fd„«       Zd
efd„Zed
efd„«       Zd„ Zd
efd„Zeded
d fd„«       Zy)r   aÊ  An immutable identity selector. Prefer the named factory methods.

    IDs are stable; names must resolve unambiguously on the server. API-key
    selectors identify the subject of an operation, not its authenticated caller.
    Secret values are omitted from representations. Unknown canonical subject
    kinds returned by newer servers use ``kind="unknown"`` and preserve the full
    wire string in ``value``; they can be passed back to ACL methods.
    ÚkindF)ÚreprÚ_value©Úinitr'   ÚcompareÚ_innerc                 ó‚   — t         j                  | dt        j                  | j                  | j
                  «      «       y ©Nr,   )ÚobjectÚ__setattr__r   ÚAuthzSubjectr&   r(   ©Úselfs    úR/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/lancedb/authz.pyÚ__post_init__zSubject.__post_init__>   s,   € Ü×ÑØ�(œH×1Ñ1°$·)±)¸T¿[¹[ÓIõ	
ó    ÚidÚreturnc                 ó   —  | d|«      S )z5Select a principal by canonical identity-provider ID.r   © ©Úclsr7   s     r4   r   zSubject.principal_idC   s   € ñ �> 2Ó&Ð&r6   Únamec                 ó   —  | d|«      S )z3Select a principal by an unambiguous provider name.r   r:   ©r<   r=   s     r4   r   zSubject.principal_nameH   s   € ñ Ð# TÓ*Ð*r6   c                 ó   —  | d|«      S )z1Select a group by canonical identity-provider ID.r   r:   r;   s     r4   r   zSubject.group_idM   s   € ñ �:˜rÓ"Ð"r6   c                 ó   —  | d|«      S )z/Select a group by an unambiguous provider name.r    r:   r?   s     r4   r    zSubject.group_nameR   s   € ñ �< Ó&Ð&r6   c                 ó   —  | d|«      S )z8Select a LanceDB-managed role, without an ``r:`` prefix.r!   r:   r?   s     r4   r!   zSubject.roleW   s   € ñ �6˜4Ó Ð r6   Úapi_keyc                 ó   —  | d|«      S )z1Select the principal holding this secret API key.r"   r:   )r<   rC   s     r4   r"   zSubject.principal_api_key\   s   € ñ Ð&¨Ó0Ð0r6   c                 óT   — | j                   j                  }d| j                  › d|›d�S )NzSubject.ú(ú))r,   Údisplay_valuer&   )r3   Úvalues     r4   Ú__repr__zSubject.__repr__a   s*   € Ø—‘×)Ñ)ˆØ˜$Ÿ)™)˜ A e Y¨aÐ0Ð0r6   c                 ó   — | j                   S )zpThe selected value, or full wire string for unknown subject kinds.

        API-key values are secrets.
        )r(   r2   s    r4   rI   zSubject.valuee   s   € ð �{‰{Ðr6   c                 óH   — t        | «      | j                  | j                  ffS ©N)Útyper&   r(   r2   s    r4   Ú
__reduce__zSubject.__reduce__m   s   € Ü�D‹z˜DŸI™I t§{¡{Ð3Ð3Ð3r6   c                 ó6   — | j                   j                  «       S rM   )r,   Úto_wirer2   s    r4   Ú_wirezSubject._wirep   s   € Ø�{‰{×"Ñ"Ó$Ð$r6   rI   c                 ó–   — t         j                  j                  |«      } | t        t        |j
                  «      |j                  «      S rM   )r   r1   Úfrom_canonicalr   Ú_SubjectKindr&   rI   )r<   rI   Úinners      r4   Ú
_canonicalzSubject._canonicals   s4   € ä×%Ñ%×4Ñ4°UÓ;ˆÙ”4œ e§j¡jÓ1°5·;±;Ó?Ð?r6   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__rU   Ú__annotations__r   r(   Ústrr,   r   r1   r5   Úclassmethodr   r   r   r    r!   r"   rJ   ÚpropertyrI   rO   rR   rW   r:   r6   r4   r   r   .   sf  … ñð ÓÙ˜UÔ#€FˆCÓ#á$)¨u¸5È%Ô$P€FˆH×!Ñ!ÓPò
ð
 ð'˜cð ' iò 'ó ð'ð ð+ #ð +¨)ò +ó ð+ð ð#˜#ð # )ò #ó ð#ð ð'˜cð ' iò 'ó ð'ð ð!˜ð ! 	ò !ó ð!ð ð1¨ð 1°	ò 1ó ð1ð1˜#ó 1ð ð�sò ó ðò4ð%�só %ð ð@˜sð @ yò @ó ñ@r6   r   c            
       óv  — e Zd ZU dZeed<    eddd¬«      Zej                  ed<   d„ Z
edd„«       Zed	edd fd
„«       Zeddœdedee   dd fd„«       Zeddœded	edee   dd fd„«       Zeddœded	edee   dd fd„«       Zeddœded	edee   dd fd„«       Zeddœded	edee   dd fd„«       Zdefd„Zd„ Zy)r   aq  An immutable resource name in the authorization syntax.

    Use the builders to avoid interpreting separators as part of a name.
    Methods also accept raw object strings, validated by the same Rust parser.
    Unknown resource types are preserved for compatibility with newer servers.
    Omitted or empty namespace paths select the database's public namespace.
    r(   Fr)   r,   c                 ól   — t         j                  | dt        j                  | j                  «      «       y r.   )r/   r0   r   ÚAuthzObjectr(   r2   s    r4   r5   zObject.__post_init__†   s#   € Ü×Ñ˜4 ¬8×+?Ñ+?ÀÇÁÓ+LÕMr6   r8   c                 ó\   —  | t        t        j                  j                  «       «      «      S )z"The deployment-wide system object.)r]   r   rb   Úsystem)r<   s    r4   rd   zObject.system‰   s#   € ñ ”3”x×+Ñ+×2Ñ2Ó4Ó5Ó6Ð6r6   r=   c                 ó^   —  | t        t        j                  j                  |«      «      «      S )z?A database; slash-containing names remain one logical database.)r]   r   rb   Údatabaser?   s     r4   rf   zObject.databaseŽ   s%   € ñ ”3”x×+Ñ+×4Ñ4°TÓ:Ó;Ó<Ð<r6   )Úpublic)Únamespace_pathrf   rh   c                ó`   —  | t        t        j                  j                  ||«      «      «      S )z@A namespace path, defaulting to the database's public namespace.)r]   r   rb   Ú	namespace)r<   rf   rh   s      r4   rj   zObject.namespace“   s'   € ñ
 ”3”x×+Ñ+×5Ñ5°hÀÓOÓPÓQÐQr6   c          	      ób   —  | t        t        j                  j                  |||«      «      «      S )z7A table, defaulting to the database's public namespace.)r]   r   rb   Útable©r<   rf   r=   rh   s       r4   rl   zObject.tableš   s)   € ñ
 ”3”x×+Ñ+×1Ñ1°(¸NÈDÓQÓRÓSÐSr6   c          	      ób   —  | t        t        j                  j                  |||«      «      «      S )z6A view, defaulting to the database's public namespace.)r]   r   rb   Úviewrm   s       r4   ro   zObject.view¡   s)   € ñ
 ”3”x×+Ñ+×0Ñ0°¸>È4ÓPÓQÓRÐRr6   c          	      ób   —  | t        t        j                  j                  |||«      «      «      S )z8A secret, defaulting to the database's public namespace.)r]   r   rb   Úsecretrm   s       r4   rq   zObject.secret¨   s)   € ñ
 ”3”x×+Ñ+×2Ñ2°8¸^ÈTÓRÓSÓTÐTr6   c          	      ób   —  | t        t        j                  j                  |||«      «      «      S )z:A function, defaulting to the database's public namespace.)r]   r   rb   Úfunctionrm   s       r4   rs   zObject.function¯   s)   € ñ
 ”3”x×+Ñ+×4Ñ4°X¸~ÈtÓTÓUÓVÐVr6   c                 ó,   — t        | j                  «      S rM   )r]   r,   r2   s    r4   Ú__str__zObject.__str__¶   s   € Ü�4—;‘;ÓÐr6   c                 ó2   — t        | «      | j                  ffS rM   )rN   r(   r2   s    r4   rO   zObject.__reduce__¹   s   € Ü�D‹z˜DŸK™K˜>Ð)Ð)r6   N)r8   r   )rX   rY   rZ   r[   r]   r\   r   r,   r   rb   r5   r^   rd   rf   r   rj   rl   ro   rq   rs   ru   rO   r:   r6   r4   r   r   y   s°  … ñð ƒKÙ#(¨e¸%ÈÔ#O€FˆH× Ñ ÓOòNð ò7ó ð7ð ð=˜Cð = Hò =ó ð=ð à?JòRØðRØ/7¸©}ðRà	òRó ðRð àJUòTØðTØ%(ðTØ:BÀ3¹-ðTà	òTó ðTð àJUòSØðSØ%(ðSØ:BÀ3¹-ðSà	òSó ðSð àJUòUØðUØ%(ðUØ:BÀ3¹-ðUà	òUó ðUð àJUòWØðWØ%(ðWØ:BÀ3¹-ðWà	òWó ðWð ˜ó  ó*r6   r   c                   óT   — e Zd ZdZdefd„ZdZdZdZdZ	dZ
d	Zd
ZdZdZdZdZdZdZdZy)r   a§  Known privileges, validated and serialized by Rust.

    ACL methods also accept strings such as ``"SELECT"`` and future privilege
    names such as ``"PRIVILEGE20"``. Future names are preserved verbatim;
    their meaning and validity are determined by the server.

    Grant ``CREATE_SECRET`` or ``CREATE_FUNCTION`` on a namespace to delegate
    creation of those resources without transferring namespace ownership.
    rI   c                 ó|   — t        t        j                  |«      «      }t         j                  | |«      }||_        |S rM   )r]   r   ÚAuthzPrivilegeÚ__new__Ú_value_)r<   rI   Ú	canonicalÚmembers       r4   rz   zPrivilege.__new__È   s3   € Üœ×/Ñ/°Ó6Ó7ˆ	Ü—‘˜S )Ó,ˆØ"ˆŒØˆr6   Ú	OWNERSHIPÚUSAGEÚSELECTÚINSERTÚUPDATEÚDELETEÚCREATE_DATABASEÚCREATE_NAMESPACEÚCREATE_TABLEÚCREATE_MATERIALIZED_VIEWÚCREATE_VIEWÚCREATE_SECRETÚCREATE_FUNCTIONÚOPERATEN)rX   rY   rZ   r[   r]   rz   r~   r   r€   r�   r‚   rƒ   r„   r…   r†   r‡   rˆ   r‰   rŠ   r‹   r:   r6   r4   r   r   ½   s]   „ ñð˜Có ð €IØ€EØ€FØ€FØ€FØ€FØ'€OØ)ÐØ!€LØ9ÐØ€KØ#€MØ'€OØ�Gr6   r   c                   ó@   — e Zd ZU dZeed<   eed<   ee   ed<   eed<   y)r   zLOne object/subject/privilege grant; subject contains a canonical ID or role.r/   ÚsubjectÚsubject_nameÚ	privilegeN)rX   rY   rZ   r[   r]   r\   r   r
   r:   r6   r4   r   r   Þ   s   … áVàƒKØÓØ˜3‘-ÓØ„Nr6   r   c                   ó6   — e Zd ZU dZeed<   ee   ed<   eed<   y)r   zFA direct principal/group role binding, not an expanded effective role.r�   rŽ   r!   N)rX   rY   rZ   r[   r   r\   r
   r]   r:   r6   r4   r   r   è   s   … áPàÓØ˜3‘-ÓØ
„Ir6   r   c                   ó0   — e Zd ZU dZeed<   dZee   ed<   y)r   z?A canonical identity-provider ID and its optional display name.r7   Nr=   )rX   rY   rZ   r[   r]   r\   r=   r
   r:   r6   r4   r   r   ñ   s   … áIàƒGØ€Dˆ(�3‰-Ôr6   r   c                   óL   — e Zd ZU dZeed<   ee   ed<   ee   ed<   ee   ed<   y)r   zJA principal's groups and effective roles, including group-inherited roles.r   r   ÚgroupsÚrolesN©	rX   rY   rZ   r[   r]   r\   r
   Úlistr   r:   r6   r4   r   r   ù   s*   … áTàÓØ˜S‘MÓ!Ø�ÑÓØ�‰9Ôr6   r   c                   óL   — e Zd ZU dZeed<   ee   ed<   ee   ed<   ee   ed<   y)r   zDA group's provider-managed members and LanceDB-managed direct roles.r   r    Ú
principalsr”   Nr•   r:   r6   r4   r   r     s)   … áNàƒMØ˜‘ÓØ�\Ñ"Ó"Ø�‰9Ôr6   r   r�   Úcontextr8   c                 ón   — t        | t        «      st        d«      ‚| j                  j	                  |«      S )Nz"subject must be a Subject selector)Ú
isinstancer   Ú
ValueErrorr,   rQ   )r�   r™   s     r4   Ú_subjectr�     s-   € Ü�gœwÔ'ÜÐ=Ó>Ð>Ø�>‰>×!Ñ! 'Ó*Ð*r6   rI   c                 óÌ   — t        | t        t        f«      rt        | «      st        d«      ‚t        | t        «      rt        | «      S t        t	        j
                  | «      «      S )Nz*object must be a nonempty string or Object)r›   r]   r   rœ   r   rb   ©rI   s    r4   Ú_objectr      sK   € Ü�eœc¤6˜]Ô+´3°u´:ÜÐEÓFÐFÜ# E¬6Ô2Œ3ˆu‹:ÐX¼¼H×<PÑ<PÐQVÓ<WÓ8XÐXr6   Úlimitc                 ój   — | �1t        | t        «      st        | t        «      r| dk  rt        d«      ‚y y )Nr   z+limit must be a nonnegative integer or None)r›   ÚboolÚintrœ   )r¡   s    r4   Ú_limitr¥     s9   € ØÐÜ�5œ$Ô¤z°%¼Ô'=ÀÈÂäÐFÓGÐGð BKð r6   c                 ót   — t        | t        «      st        d«      ‚t        t        j                  | «      «      S )Nz'privilege must be a string or Privilege)r›   r]   rœ   r   ry   rŸ   s    r4   Ú
_privileger§      s.   € Ü�eœSÔ!ÜÐBÓCÐCÜŒx×&Ñ& uÓ-Ó.Ð.r6   c                 ót   — t        | d   t        j                  | d   «      | j                  d«      | d   «      S )Nr/   Ú
subject_idrŽ   r�   )r   r   rW   ÚgetrŸ   s    r4   Ú_entryr«   &  s=   € ÜØˆh‰Ü×Ñ˜5 Ñ.Ó/Ø�	‰	�.Ó!ØˆkÑó	ð r6   c                 ól   — t        t        j                  | d   «      | j                  d«      | d   «      S )Nr©   rŽ   r!   )r   r   rW   rª   rŸ   s    r4   Ú_bindingr­   /  s5   € ÜÜ×Ñ˜5 Ñ.Ó/Ø�	‰	�.Ó!Øˆf‰óð r6   c            
       óh  — e Zd ZdZdej
                  fd„Zdedede	e
   fd„Zdddd	œd
e	eeef      de	e   de	e
   dee   fd„Zd
eeef   dedeeef   ddfd„Zd
eeef   dedeeef   ddfd„Zddddœde	e   de	e   de	e
   dee   fd„Zdededdfd„Zdededdfd„Zdedefd„Zdedefd„Zy)r   aw  Async authorization returned by ``AsyncCatalog.authz``.

    HTTP failures raise [HttpError][lancedb.remote.errors.HttpError], preserving
    status and request ID. Invalid local arguments raise ValueError. Lists are
    lazy async iterators: failures can occur during iteration after some results
    have been yielded. Iteration does not provide a consistent snapshot.
    rV   c                 ó   — || _         y rM   ©r,   ©r3   rV   s     r4   Ú__init__zAsyncAuthorization.__init__@  ó	   € Øˆ�r6   ÚrequestÚkeyr¡   c                óŠ  K  — d}|�||k  r´|€t         nt        t         ||z
  «      |d<   t        j                   |t        j                  |«      «      ƒ d {  –—† «      }||   D ]  }|­–— |dz  }|€Œ||k\  sŒ y  |j                  d«      }|sy ||j                  d«      k(  rt        d«      ‚||d<   |€Œ­||k  rŒ³y y 7 Œi­w)Nr   Úmax_resultsr   Úcontinuation_tokenz<Authorization listing returned a repeated continuation token)Ú
_PAGE_SIZEÚminÚjsonÚloadsÚdumpsrª   ÚRuntimeError)	r3   Úmethodr´   rµ   r¡   ÚyieldedÚresponserI   Útokens	            r4   Ú_pageszAsyncAuthorization._pagesC  sß   è ø€ ØˆØˆm˜w¨šà#˜m•
´´ZÀÈÁÓ1Qð �MÑ"ô —z‘z©¬t¯z©z¸'Ó/BÓ(C×"CÓDˆHØ! #™ò �Ø“Ø˜1‘�ØÑ$¨°EÓ)9Ùð	ð
 —L‘LÐ!5Ó6ˆEÙØØ˜Ÿ™Ð$8Ó9Ò9Ü"ØRóð ð -2ˆGÐ(Ñ)ð# ‰m˜w¨�ð #Dús*   ‚ACÁCÁCÁ5CÁ;=CÂ9CÂ?CN©r/   r�   r¡   r/   r�   r8   c                ó~   ‡ ‡‡— t        ‰«       i Š|�t        |«      ‰d<   |�t        |«      ‰d<   ˆˆˆ fd„} |«       S )a8  Iterate grants, optionally filtered by exact object and/or subject.

        Requires USAGE on the supplied object, or on system if object is omitted.
        ``limit`` bounds yielded entries across all pages; None lists all and zero
        makes no requests. Missing matches produce an empty iterator.
        r/   r�   c                 ó”   •K  — ‰j                  ‰j                  j                  ‰d‰«      2 3 d {  –—† } t        | «      ­–— Œ7 Œ6 y ­w)NÚentries)rÃ   r,   Ú	list_aclsr«   ©rI   r¡   r´   r3   s    €€€r4   rÇ   z-AsyncAuthorization.list_acls.<locals>.entriesl  sI   øè ø€ Ø#Ÿ{™{Ø—‘×%Ñ% w°	¸5ó ÷ $ð $�eô ˜U“mÔ#ð$øñ  ùó%   ƒ)A¬A°A±A´AÁAÁA)r¥   r    r�   )r3   r/   r�   r¡   rÇ   r´   s   `  ` @r4   rÈ   zAsyncAuthorization.list_aclsX  sI   ú€ ô 	ˆuŒØˆØÐÜ '¨£ˆG�HÑØÐÜ!)¨'Ó!2ˆG�IÑö	$ñ ‹yÐr6   r�   c          	   ƒ   óº   K  — | j                   j                  t        j                  t	        |«      t        |«      t        |«      dœ«      «      ƒ d{  –—†  y7 Œ­w)zÚGrant one privilege; requires OWNERSHIP on the object.

        A duplicate grant raises HTTP 409. Granting OWNERSHIP transfers ownership.
        Writes are not automatically retried after ambiguous failures.
        ©r/   r�   r�   N)r,   Úadd_aclr»   r½   r    r�   r§   ©r3   r/   r�   r�   s       r4   rÍ   zAsyncAuthorization.add_aclt  sL   è ø€ ð �k‰k×!Ñ!Ü�J‰Jä% f›oÜ'¨Ó0Ü!+¨IÓ!6ñóó
÷ 	
ò 	
úó   ‚AAÁAÁAc          	   ƒ   óº   K  — | j                   j                  t        j                  t	        |«      t        |«      t        |«      dœ«      «      ƒ d{  –—†  y7 Œ­w)zŽRevoke one privilege; requires OWNERSHIP on the object.

        A missing grant raises HTTP 404. OWNERSHIP itself cannot be deleted.
        rÌ   N)r,   Ú
delete_aclr»   r½   r    r�   r§   rÎ   s       r4   rÑ   zAsyncAuthorization.delete_aclŠ  sL   è ø€ ð �k‰k×$Ñ$Ü�J‰Jä% f›oÜ'¨Ó0Ü!+¨IÓ!6ñóó
÷ 	
ò 	
úrÏ   ©r�   r!   r¡   r!   c                ón   ‡ ‡‡— t        ‰«       i Š|�t        |d«      ‰d<   |�|‰d<   ˆˆˆ fd„} |«       S )zöIterate direct bindings, optionally filtered by principal/group and role.

        Requires USAGE on system. Limit semantics match ``list_acls``. Principals'
        roles inherited through groups are available through ``get_principal``.
        Úrole_memberr�   r!   c                 ó”   •K  — ‰j                  ‰j                  j                  ‰d‰«      2 3 d {  –—† } t        | «      ­–— Œ7 Œ6 y ­w)NÚbindings)rÃ   r,   Úlist_role_bindingsr­   rÉ   s    €€€r4   rÖ   z7AsyncAuthorization.list_role_bindings.<locals>.bindings²  sI   øè ø€ Ø#Ÿ{™{Ø—‘×.Ñ.°¸ÀUó ÷ &ð &�eô ˜u“oÔ%ð&øñ  ùrÊ   )r¥   r�   )r3   r�   r!   r¡   rÖ   r´   s   `  ` @r4   r×   z%AsyncAuthorization.list_role_bindingsŸ  sF   ú€ ô 	ˆuŒØˆØÐÜ!)¨'°=Ó!AˆG�IÑØÐØ"ˆG�F‰Oö	&ñ ‹zÐr6   c             ƒ   ó–   K  — | j                   j                  t        j                  t	        |d«      |dœ«      «      ƒ d{  –—†  y7 Œ­w)ú6Grant a role idempotently; requires OPERATE on system.rÔ   ©r�   r!   N)r,   Úadd_role_bindingr»   r½   r�   ©r3   r�   r!   s      r4   rÛ   z#AsyncAuthorization.add_role_bindingº  s:   è ø€ à�k‰k×*Ñ*Ü�J‰J¤8¨G°]Ó#CÈTÑRÓSó
÷ 	
ò 	
úó   ‚?A	ÁAÁA	c             ƒ   ó–   K  — | j                   j                  t        j                  t	        |d«      |dœ«      «      ƒ d{  –—†  y7 Œ­w)ú7Idempotently revoke a role; requires OPERATE on system.rÔ   rÚ   N)r,   Údelete_role_bindingr»   r½   r�   rÜ   s      r4   rà   z&AsyncAuthorization.delete_role_bindingÀ  s:   è ø€ à�k‰k×-Ñ-Ü�J‰J¤8¨G°]Ó#CÈTÑRÓSó
÷ 	
ò 	
úrÝ   c              ƒ   ó<  K  — t        j                  | j                  j                  t        j                  dt        |d«      i«      «      ƒ d{  –—† «      }t        |d   |j                  d«      |d   D �cg c]  }t        di |¤Ž‘Œ c}|d   «      S 7 ŒEc c}w ­w)zäLook up groups and effective roles; requires USAGE on system.

        Select by ID, name, or API key. Missing/ambiguous identities raise HTTP
        404/409; unavailable or unconfigured resolution raises HTTP 503/501.
        Ú	principalNr   r   r“   r”   r:   )	r»   r¼   r,   Úget_principalr½   r�   r   rª   r   )r3   r�   rI   Úgroups       r4   rã   z AsyncAuthorization.get_principalÆ  s•   è ø€ ô —
‘
Ø—+‘+×+Ñ+Ü—
‘
˜K¬°'¸;Ó)GÐHÓIó÷ ó
ˆô
 Ø�.Ñ!Ø�I‰IÐ&Ó'Ø05°h±Ö@ uŒ\Ñ"˜EÓ"Ò@Ø�'‰Nó	
ð 	
ð	úò Aùó$   ‚ABÁBÁ(BÁ8BÂ
BÂBc              ƒ   ó<  K  — t        j                  | j                  j                  t        j                  dt        |d«      i«      «      ƒ d{  –—† «      }t        |d   |j                  d«      |d   D �cg c]  }t        di |¤Ž‘Œ c}|d   «      S 7 ŒEc c}w ­w)zâLook up a group's members and roles by ID/name; requires USAGE on system.

        Membership is read-only and comes from the identity provider. Lookup
        errors have the same HTTP semantics as ``get_principal``.
        rä   Nr   r    r˜   r”   r:   )	r»   r¼   r,   Ú	get_groupr½   r�   r   rª   r   )r3   r�   rI   râ   s       r4   rç   zAsyncAuthorization.get_groupØ  s•   è ø€ ô —
‘
Ø—+‘+×'Ñ'Ü—
‘
˜G¤X¨g°wÓ%?Ð@ÓAó÷ ó
ˆô
 Ø�*ÑØ�I‰I�lÓ#Ø8=¸lÑ8KÖL¨9Œ\Ñ&˜IÓ&ÒLØ�'‰Nó	
ð 	
ð	úò Mùrå   )rX   rY   rZ   r[   r   ÚAuthorizationClientr²   Údictr]   r
   r¤   rÃ   r   r   r   r   r   rÈ   r   rÍ   rÑ   r   r×   rÛ   rà   r   rã   r   rç   r:   r6   r4   r   r   7  s®  „ ñð˜h×:Ñ:ó ð2¨Dð 2°sð 2À8ÈCÁ=ó 2ð0 04Ø%)Ø#òð ˜˜s F˜{Ñ+Ñ,ðð ˜'Ñ"ð	ð
 ˜‰}ðð 
Ð)Ñ	*óð8
ð �c˜6�kÑ"ð
ð ð	
ð
 ˜˜i˜Ñ(ð
ð 
ó
ð,
ð �c˜6�kÑ"ð
ð ð	
ð
 ˜˜i˜Ñ(ð
ð 
ó
ð0 &*Ø"Ø#òð ˜'Ñ"ðð �s‰mð	ð
 ˜‰}ðð 
�{Ñ	#óð6
°ð 
Àð 
Èó 
ð
°Gð 
À3ð 
È4ó 
ð
¨7ð 
°}ó 
ð$
 wð 
°9ô 
r6   r   Úiteratorc              ƒ   ó>   K  — | j                  «       ƒ d {  –—† S 7 Œ­wrM   )Ú	__anext__)rê   s    r4   Ú_nextrí   ë  s   è ø€ Ø×#Ñ#Ó%×%Ð%Ð%ús   ‚–—c              #   ó   K  — 	 	 t        j                  t        | «      «      –— Œ!# t        $ r- Y t	        | dd «      }|�t        j                   |«       «       y y w xY w# t	        | dd «      }|�t        j                   |«       «       w w xY w­w)NÚaclose)r   Úrunrí   ÚStopAsyncIterationÚgetattr)rê   Úcloses     r4   Ú
_sync_iterrô   ï  sˆ   è ø€ ðØÜ—(‘(œ5 ›?Ó+Ò+ð øäò Øä˜ (¨DÓ1ˆØÐÜ�H‰H‘U“WÕð ð	ûô ˜ (¨DÓ1ˆØÐÜ�H‰H‘U“WÕð üs0   ‚B„"& ¦	A¯A °+BÁAÁA Á,BÂBc            
       ó:  — e Zd ZdZdefd„Zddddœdeeee	f      dee
   dee   d	ee   fd
„Zdeee	f   de
deeef   d	dfd„Zdeee	f   de
deeef   d	dfd„Zddddœdee
   dee   dee   d	ee   fd„Zde
ded	dfd„Zde
ded	dfd„Zde
d	efd„Zde
d	efd„Zy)r   zÝSynchronous authorization returned by ``Catalog.authz``.

    Shares the async API's permissions, errors, and lazy pagination behavior.
    Group membership comes from the identity provider and cannot be edited here.
    rV   c                 ó   — || _         y rM   r°   r±   s     r4   r²   zAuthorization.__init__  r³   r6   NrÄ   r/   r�   r¡   r8   c                óP   — t        | j                  j                  |||¬«      «      S )znIterate grants.

        See [list_acls][lancedb.authz.AsyncAuthorization.list_acls] for permissions.
        rÄ   )rô   r,   rÈ   )r3   r/   r�   r¡   s       r4   rÈ   zAuthorization.list_acls  s*   € ô Ø�K‰K×!Ñ!¨¸ÈÐ!ÓNó
ð 	
r6   r�   c                óf   — t        j                  | j                  j                  |||¬«      «       y)z^Grant a privilege; duplicates raise HTTP 409.

        OWNERSHIP transfers ownership.
        rÌ   N)r   rð   r,   rÍ   rÎ   s       r4   rÍ   zAuthorization.add_acl  s)   € ô 	�‰Ø�K‰K×Ñ v°wÈ)ÐÓTõ	
r6   c                óf   — t        j                  | j                  j                  |||¬«      «       y)zaRevoke a privilege. Missing grants raise HTTP 404.

        OWNERSHIP cannot be deleted.
        rÌ   N)r   rð   r,   rÑ   rÎ   s       r4   rÑ   zAuthorization.delete_acl#  s)   € ô 	�‰Ø�K‰K×"Ñ"¨&¸'ÈYÐ"ÓWõ	
r6   rÒ   r!   c                óP   — t        | j                  j                  |||¬«      «      S )zJIterate direct role bindings, using the same limit semantics as list_acls.rÒ   )rô   r,   r×   )r3   r�   r!   r¡   s       r4   r×   z Authorization.list_role_bindings2  s*   € ô Ø�K‰K×*Ñ*°7ÀÈUÐ*ÓSó
ð 	
r6   c                ód   — t        j                  | j                  j                  ||¬«      «       y)rÙ   rÚ   N)r   rð   r,   rÛ   rÜ   s      r4   rÛ   zAuthorization.add_role_binding>  s"   € ä�‰�—‘×-Ñ-°gÀDÐ-ÓIÕJr6   c                ód   — t        j                  | j                  j                  ||¬«      «       y)rß   rÚ   N)r   rð   r,   rà   rÜ   s      r4   rà   z!Authorization.delete_role_bindingB  s"   € ä�‰�—‘×0Ñ0¸ÀtÐ0ÓLÕMr6   c                 ó^   — t        j                  | j                  j                  |«      «      S )z=Look up groups and effective roles; requires USAGE on system.)r   rð   r,   rã   ©r3   r�   s     r4   rã   zAuthorization.get_principalF  s    € ä�x‰x˜Ÿ™×1Ñ1°'Ó:Ó;Ð;r6   c                 ó^   — t        j                  | j                  j                  |«      «      S )z>Look up a group's members and roles; requires USAGE on system.)r   rð   r,   rç   rþ   s     r4   rç   zAuthorization.get_groupJ  s    € ä�x‰x˜Ÿ™×-Ñ-¨gÓ6Ó7Ð7r6   )rX   rY   rZ   r[   r   r²   r
   r   r]   r   r   r¤   r   r   rÈ   r   rÍ   rÑ   r   r×   rÛ   rà   r   rã   r   rç   r:   r6   r4   r   r   û  s“  „ ñðÐ0ó ð 04Ø%)Ø#ò
ð ˜˜s F˜{Ñ+Ñ,ð
ð ˜'Ñ"ð	
ð
 ˜‰}ð
ð 
Ð$Ñ	%ó
ð
ð �c˜6�kÑ"ð
ð ð	
ð
 ˜˜i˜Ñ(ð
ð 
ó
ð
ð �c˜6�kÑ"ð
ð ð	
ð
 ˜˜i˜Ñ(ð
ð 
ó
ð$ &*Ø"Ø#ò

ð ˜'Ñ"ð

ð �s‰mð	

ð
 ˜‰}ð

ð 
�+Ñ	ó

ðK¨7ð K¸#ð KÀ$ó KðN¨gð N¸Sð NÀTó Nð< Wð <°ó <ð8 ð 8¨Yô 8r6   r   rM   ).r[   Úcollections.abcr   r   r   Údataclassesr   r   Úenumr   r»   Útypingr	   r
   r   r   r   Ú r   Úbackground_loopr   Ú__all__r¹   r   rU   r   r   r]   r   r   r   r   r   r   r�   r    r¤   r¥   r§   ré   r«   r­   r   rí   rô   r   r:   r6   r4   ú<module>r     s   ðñ÷ >Ñ =ß (Ý Û ß :Õ :å Ý !ò€ð €
ÙˆTƒ]€Øðñ€ñ �$Ô÷G@ð G@ó ðG@ñT �$Ô÷@*ð @*ó ð@*ôF��Tô ñB �$Ô÷ð ó ðñ �$Ô÷ð ó ðñ �$Ô÷ð ó ðñ �$Ô÷ð ó ðñ �$Ô÷ð ó ðñ+�gð +¨°©ð +Àó +ðY�5˜˜f˜Ñ%ð Y¨#ó YðH�(˜3‘-ð H Dó Hð/�e˜C ˜NÑ+ð /°ó /ð�$ð Ð-ó ð�Dð ˜[ó ÷q
ñ q
ðh&˜-¨Ñ+ð &°ó &ð	˜ rÑ*ð 	¨x¸©|ó 	÷Q8ò Q8r6   