Ë
    øÿæiÝ  ã                  óæ   — d Z ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlm	Z	 ddlm
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 eZeeef   Zeeef   Zedee   f   Z G d„ de«      Zy)zCImplementation of the metadata abstraction for gRPC Asyncio Python.é    )Úannotations)ÚOrderedDict)Ú
Collection)Ú	ItemsView)ÚIterable)ÚIterator)ÚKeysView)ÚSequence)Ú
ValuesView)ÚAnyÚListÚOptionalÚTupleÚUnion)ÚSelfÚMetadatac                  óÚ   — e Zd ZdZdd„Zedd„«       Ze	 	 	 	 dd„«       Zdd„Zdd„Z	dd„Z
dd„Zdd	„Zdd
„Zdd„Zdd„Zd d„Zd!d„Z	 d"	 	 	 	 	 d#d„Zd$d„Zd%d„Zd&d„Zd'd„Zd(d„Zd)d„Zy)*r   aÍ  Metadata abstraction for the asynchronous calls and interceptors.

    The metadata is a mapping from str -> List[str]

    Traits
        * Multiple entries are allowed for the same key
        * The order of the values by key is preserved
        * Getting by an element by key, retrieves the first mapped value
        * Supports an immutable view of the data
        * Allows partial mutation on the data without recreating the new object from scratch.
    c                óZ   — t        «       | _        |D ]  \  }}| j                  ||«       Œ y ©N)r   Ú	_metadataÚadd)ÚselfÚargsÚmd_keyÚmd_values       úg/Volumes/fast/ai/experiments/voice-extract-mac/.venv/lib/python3.12/site-packages/grpc/aio/_metadata.pyÚ__init__zMetadata.__init__0   s(   € Ü$›ˆŒÛ $ÑˆF�HØ�H‰H�V˜XÕ&ñ !%ó    c                ó   — |r | |Ž S  | «       S r   © ©ÚclsÚraw_metadatas     r   Ú
from_tuplezMetadata.from_tuple5   s   € ñ Ù˜Ð%Ð%Ù‹uˆr   c                óR   — |€
t        «       S t        || «      r|S |r | |Ž S  | «       S r   )r   Ú
isinstancer!   s     r   Ú_createzMetadata._create=   s7   € ð ÐÜ“:ÐÜ�l CÔ(ØÐÙÙ˜Ð%Ð%Ù‹uˆr   c                óx   — | j                   j                  |g «       | j                   |   j                  |«       y r   )r   Ú
setdefaultÚappend)r   ÚkeyÚvalues      r   r   zMetadata.addL   s-   € Ø�‰×!Ñ! # rÔ*Ø�‰�sÑ×"Ñ" 5Õ)r   c                ód   — t        t        t        | j                  j	                  «       «      «      S )z€Return the total number of elements that there are in the metadata,
        including multiple values for the same key.
        )ÚsumÚmapÚlenr   Úvalues©r   s    r   Ú__len__zMetadata.__len__P   s#   € ô ”3”s˜DŸN™N×1Ñ1Ó3Ó4Ó5Ð5r   c                ót   — 	 | j                   |   d   S # t        t        f$ r}|›}t        |«      |‚d}~ww xY w)zmWhen calling <metadata>[<key>], the first element of all those
        mapped for <key> is returned.
        r   N)r   Ú
ValueErrorÚ
IndexErrorÚKeyError)r   r+   ÚeÚ	error_msgs       r   Ú__getitem__zMetadata.__getitem__V   sD   € ð	-Ø—>‘> #Ñ& qÑ)Ð)øÜœJÐ'ò 	-Ø˜'ˆIÜ˜9Ó%¨1Ð,ûð	-ús   ‚ ”7£2²7c                óz   — || vr|g| j                   |<   y| j                  |«      }|g|dd ¢| j                   |<   y)z_Calling metadata[<key>] = <value>
        Maps <value> to the first instance of <key>.
        é   N)r   Úget_all)r   r+   r,   Úcurrent_valuess       r   Ú__setitem__zMetadata.__setitem__`   sF   € ð �d‰?Ø#( 'ˆD�N‰N˜3Òà!Ÿ\™\¨#Ó.ˆNØ#(Ð">¨>¸!¸"Ð+=Ð">ˆD�N‰N˜3Òr   c                óv   — | j                  |«      }|st        t        |«      «      ‚|dd | j                  |<   y)z<``del metadata[<key>]`` deletes the first mapping for <key>.r<   N)r=   r7   Úreprr   )r   r+   r>   s      r   Ú__delitem__zMetadata.__delitem__j   s7   € àŸ™ cÓ*ˆÙÜœ4 ›9Ó%Ð%Ø,¨Q¨RÐ0ˆ�‰�sÒr   c                ó   — | j                   |= y)zDelete all mappings for <key>.N©r   ©r   r+   s     r   Ú
delete_allzMetadata.delete_allq   s   € à�N‰N˜3Ñr   c              #  ój   K  — | j                   j                  «       D ]  \  }}|D ]  }||f–— Œ
 Œ y ­wr   )r   Úitems)r   r+   r1   r,   s       r   Ú__iter__zMetadata.__iter__u   s5   è ø€ ØŸ>™>×/Ñ/Ö1‰KˆC�Û�Ø˜E�lÓ"ñ  ñ 2ùs   ‚13c                ó,   — t        | j                  «      S r   )r	   r   r2   s    r   ÚkeyszMetadata.keysz   s   € Ü˜Ÿ™Ó'Ð'r   c                ó,   — t        | j                  «      S r   )r   r   r2   s    r   r1   zMetadata.values}   s   € Ü˜$Ÿ.™.Ó)Ð)r   c                ó,   — t        | j                  «      S r   )r   r   r2   s    r   rH   zMetadata.items€   s   € Ü˜Ÿ™Ó(Ð(r   Nc                ó0   — 	 | |   S # t         $ r |cY S w xY wr   )r7   )r   r+   Údefaults      r   ÚgetzMetadata.getƒ   s%   € ð	Ø˜‘9ÐøÜò 	ØŠNð	ús   ‚ ‡”c                ó:   — | j                   j                  |g «      S )z�For compatibility with other Metadata abstraction objects (like in Java),
        this would return all items under the desired <key>.
        )r   rP   rE   s     r   r=   zMetadata.get_all‹   s   € ð �~‰~×!Ñ! # rÓ*Ð*r   c                ó"   — || j                   |<   y r   rD   )r   r+   r1   s      r   Úset_allzMetadata.set_all‘   s   € Ø$ˆ�‰�sÒr   c                ó   — || j                   v S r   rD   rE   s     r   Ú__contains__zMetadata.__contains__”   s   € Ø�d—n‘nÐ$Ð$r   c                ó¨   — t        || j                  «      r| j                  |j                  k(  S t        |t        «      rt        | «      |k(  S t        S r   )r&   Ú	__class__r   ÚtupleÚNotImplemented©r   Úothers     r   Ú__eq__zMetadata.__eq__—   sB   € Ü�e˜TŸ^™^Ô,Ø—>‘> U§_¡_Ñ4Ð4Ü�eœUÔ#Ü˜“; %Ñ'Ð'ÜÐr   c                ó¼   — t        || j                  «      rt        t        | «      t        |«      z   Ž S t        |t        «      rt        t        | «      |z   Ž S t        S r   )r&   rW   r   rX   rY   rZ   s     r   Ú__add__zMetadata.__add__ž   sL   € Ü�e˜TŸ^™^Ô,Üœe D›k¬E°%«LÑ8Ð:Ð:Ü�eœUÔ#Üœe D›k¨EÑ1Ð3Ð3ÜÐr   c                ód   — t        | «      }dj                  | j                  j                  |«      S )Nz
{0}({1!r}))rX   ÚformatrW   Ú__name__)r   Úviews     r   Ú__repr__zMetadata.__repr__¥   s(   € Ü�T‹{ˆØ×"Ñ" 4§>¡>×#:Ñ#:¸DÓAÐAr   )r   ÚMetadatumTypeÚreturnÚNone)r#   rX   )r#   z*Union[None, Self, Iterable[MetadatumType]]re   r   )r+   ÚMetadataKeyr,   ÚMetadataValuere   rf   )re   Úint)r+   rg   re   rh   )r+   rg   re   rf   )re   z+Iterator[Tuple[MetadataKey, MetadataValue]])re   r	   )re   r   )re   r   r   )r+   rg   rO   úOptional[MetadataValue]re   rj   )r+   rg   re   úList[MetadataValue])r+   rg   r1   rk   re   rf   )r+   rg   re   Úbool)r[   Úobjectre   rl   )r[   r   re   z
'Metadata')re   Ústr)ra   Ú
__module__Ú__qualname__Ú__doc__r   Úclassmethodr$   r'   r   r3   r:   r?   rB   rF   rI   rK   r1   rH   rP   r=   rS   rU   r\   r^   rc   r    r   r   r   r   #   s»   „ ñ
ó'ð
 òó ðð ðà@ðð 
òó ðó*ó6ó-ó?ó1ó ó#ó
(ó*ó)ð DHðØðØ)@ðà	 óó+ó%ó%óóôBr   N)rq   Ú
__future__r   Úcollectionsr   Úcollections.abcr   r   r   r   r	   r
   r   Útypingr   r   r   r   r   Útyping_extensionsr   rn   rg   Úbytesrh   rd   ÚMetadataTyper   r    r   r   Ú<module>rz      su   ðñ JÝ "å #Ý &Ý %Ý $Ý $Ý $Ý $Ý &ß 4Õ 4å "à€Ø�c˜5�jÑ!€Ø�k =Ð0Ñ1€Ø�Z ¨-Ñ!8Ð8Ñ9€ôDBˆzõ DBr   