Ë
    òmxi¾  ã                   ó|   — 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	m
Z
 eZe
eef   Z G d„ dej                  «      Zy)zCImplementation of the metadata abstraction for gRPC Asyncio Python.é    )ÚOrderedDict)Úabc)ÚAnyÚIteratorÚListÚOptionalÚTupleÚUnionc                   óª  — e Zd ZdZdeeef   ddfd„Zede	fd„«       Z
ded	eddfd
„Zdefd„Zdedefd„Zded	eddfd„Zdeddfd„Zdeddfd„Zdeeeef      fd„Zdej*                  fd„Zdej.                  fd„Zdej2                  fd„Z	 ddededee   fd„Zdedee   fd„Zdedee   ddfd„Zdede fd„Z!de"de fd„Z#de$dd fd„Z%de&fd„Z'y)ÚMetadataaÍ  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.
    ÚargsÚreturnNc                 óZ   — t        «       | _        |D ]  \  }}| j                  ||«       Œ y ©N)r   Ú	_metadataÚadd)Úselfr   Úmd_keyÚmd_values       úI/home/htdocs/ttos/venv/lib/python3.12/site-packages/grpc/aio/_metadata.pyÚ__init__zMetadata.__init__$   s-   € Ü$›ˆŒØ $ò 	'ÑˆF�HØ�H‰H�V˜XÕ&ñ	'ó    Úraw_metadatac                 ó   — |r | |Ž S  | «       S r   © )Úclsr   s     r   Ú
from_tuplezMetadata.from_tuple)   s   € áÙ˜Ð%Ð%Ù‹uˆr   ÚkeyÚvaluec                 óx   — | j                   j                  |g «       | j                   |   j                  |«       y r   )r   Ú
setdefaultÚappend)r   r   r   s      r   r   zMetadata.add/   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__3   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__9   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__C   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>.r2   N)r3   r-   Úreprr   )r   r   r4   s      r   Ú__delitem__zMetadata.__delitem__M   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_allT   s   € à�N‰N˜3Ñr   c              #   ój   K  — | j                   j                  «       D ]  \  }}|D ]  }||f–— Œ
 Œ y ­wr   )r   Úitems)r   r   r'   r   s       r   Ú__iter__zMetadata.__iter__X   s?   è ø€ ØŸ>™>×/Ñ/Ó1ò 	#‰KˆC�Øò #�Ø˜E�lÓ"ñ#ñ	#ùs   ‚13c                 ó,   — t        j                  | «      S r   )r   ÚKeysViewr(   s    r   ÚkeyszMetadata.keys]   s   € Ü�|‰|˜DÓ!Ð!r   c                 ó,   — t        j                  | «      S r   )r   Ú
ValuesViewr(   s    r   r'   zMetadata.values`   s   € Ü�~‰~˜dÓ#Ð#r   c                 ó,   — t        j                  | «      S r   )r   Ú	ItemsViewr(   s    r   r>   zMetadata.itemsc   s   € Ü�}‰}˜TÓ"Ð"r   Údefaultc                 ó0   — 	 | |   S # t         $ r |cY S w xY wr   )r-   )r   r   rG   s      r   ÚgetzMetadata.getf   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   rI   r;   s     r   r3   zMetadata.get_alln   s   € ð �~‰~×!Ñ! # rÓ*Ð*r   r'   c                 ó"   — || j                   |<   y r   r:   )r   r   r'   s      r   Úset_allzMetadata.set_allt   s   € Ø$ˆ�‰�sÒr   c                 ó   — || j                   v S r   r:   r;   s     r   Ú__contains__zMetadata.__contains__w   s   € Ø�d—n‘nÐ$Ð$r   Úotherc                 ó¨   — t        || j                  «      r| j                  |j                  k(  S t        |t        «      rt        | «      |k(  S t        S r   )Ú
isinstanceÚ	__class__r   ÚtupleÚNotImplemented©r   rO   s     r   Ú__eq__zMetadata.__eq__z   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   )rQ   rR   r   rS   rT   rU   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}))rS   ÚformatrR   Ú__name__)r   Úviews     r   Ú__repr__zMetadata.__repr__ˆ   s(   € Ü�T‹{ˆØ×"Ñ" 4§>¡>×#:Ñ#:¸DÓAÐAr   r   )(r[   Ú
__module__Ú__qualname__Ú__doc__r	   ÚMetadataKeyÚMetadataValuer   ÚclassmethodrS   r   r   Úintr)   r0   r5   r8   r<   r   r?   r   rA   rB   rD   r'   rF   r>   r   rI   r   r3   rL   ÚboolrN   ÚobjectrV   r   rX   Ústrr]   r   r   r   r   r      s¨  „ ñ
ð'˜e K°Ð$>Ñ?ð 'ÀDó 'ð
 ð eò ó ðð
*�{ð *¨=ð *¸Tó *ð6˜ó 6ð-˜{ð -¨}ó -ð?˜{ð ?°=ð ?ÀTó ?ð1˜{ð 1¨tó 1ð ˜kð  ¨dó  ð#˜( 5¨°mÐ)CÑ#DÑEó #ð
"�c—l‘ló "ð$˜Ÿ™ó $ð#�s—}‘}ó #ð :>ñØðØ)6ðà	�-Ñ	 óð+˜;ð +¨4°Ñ+>ó +ð%˜;ð %°°]Ñ0Cð %Èó %ð% ð %°ó %ð˜Fð  tó ð˜Sð  Zó ðB˜#ô Br   r   N)r`   Úcollectionsr   r   Útypingr   r   r   r   r	   r
   rg   ra   Úbytesrb   Ú
Collectionr   r   r   r   ú<module>rl      s>   ðñ JÝ #Ý ß >× >à€Ø�c˜5�jÑ!€ôsBˆs�~‰~õ sBr   