§
    Âi¾  ã                   ó€   — 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dS )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j        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'dS )Ú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                 óh   — t          ¦   «         | _        |D ]\  }}|                      ||¦  «         Œd S ©N)r   Ú	_metadataÚadd)Úselfr   Úmd_keyÚmd_values       ú\/var/www/html/jarvis.com/web/backend/venv/lib/python3.11/site-packages/grpc/aio/_metadata.pyÚ__init__zMetadata.__init__$   sB   € Ý$™œˆŒØ $ð 	'ð 	'ÑˆF�HØ�HŠH�V˜XÑ&Ô&Ð&Ð&ð	'ð 	'ó    Úraw_metadatac                 ó$   — |r | |Ž S  | ¦   «         S r   © )Úclsr   s     r   Ú
from_tuplezMetadata.from_tuple)   s"   € àð 	&Ø�3˜Ð%Ð%Øˆs‰uŒuˆr   ÚkeyÚvaluec                 ó|   — | j                              |g ¦  «         | j         |                              |¦  «         d S r   )r   Ú
setdefaultÚappend)r   r   r   s      r   r   zMetadata.add/   s;   € ØŒ×!Ò! # rÑ*Ô*Ð*ØŒ�sÔ×"Ò" 5Ñ)Ô)Ð)Ð)Ð)r   c                 ót   — t          t          t          | 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×1Ò1Ñ3Ô3Ñ4Ô4Ñ5Ô5Ð5r   c                 ó‚   — 	 | 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   sT   € ð	-Ø”> #Ô& qÔ)Ð)øÝ�JÐ'ð 	-ð 	-ð 	-Ø˜
ˆIÝ˜9Ñ%Ô%¨1Ð,øøøøð	-øøøs   ‚ •>¦9¹>c                 ó|   — || vr|g| j         |<   dS |                      |¦  «        }|g|dd…         ¢| j         |<   dS )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   sU   € ð �dˆ?ˆ?Ø#( 'ˆDŒN˜3ÑÐÐà!Ÿ\š\¨#Ñ.Ô.ˆNØ#(Ð">¨>¸!¸"¸"Ô+=Ð">ˆDŒN˜3ÑÐÐr   c                 ó�   — |                       |¦  «        }|st          t          |¦  «        ¦  «        ‚|dd…         | j        |<   dS )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   sJ   € àŸš cÑ*Ô*ˆØð 	&Ý�4 ™9œ9Ñ%Ô%Ð%Ø,¨Q¨R¨RÔ0ˆŒ�sÑÐÐr   c                 ó   — | j         |= dS )zDelete all mappings for <key>.N©r   ©r   r   s     r   Ú
delete_allzMetadata.delete_allT   s   € àŒN˜3ÐÐÐr   c              #   ó^   K  — | j                              ¦   «         D ]\  }}|D ]}||fV — Œ	Œd S r   )r   Úitems)r   r   r'   r   s       r   Ú__iter__zMetadata.__iter__X   sX   è è € Øœ>×/Ò/Ñ1Ô1ð 	#ð 	#‰KˆC�Øð #ð #�Ø˜E�lÐ"Ð"Ð"Ð"ð#ð	#ð 	#r   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                 ó8   — 	 | |         S # t           $ r |cY S w xY wr   )r-   )r   r   rG   s      r   ÚgetzMetadata.getf   s5   € ð	Ø˜”9ÐøÝð 	ð 	ð 	ØˆNˆNˆNð	øøøs   ‚
 Š˜c                 ó8   — | 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         |<   d S 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Ð$Ð$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   sN   € Ý�e˜Tœ^Ñ,Ô,ð 	5Ø”> 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__�   s`   € Ý�e˜Tœ^Ñ,Ô,ð 	;Ý�e D™kœk­E°%©L¬LÑ8Ð:Ð:Ý�e�UÑ#Ô#ð 	4Ý�e D™kœk¨EÑ1Ð3Ð3ÝÐr   c                 ó`   — t          | ¦  «        }d                     | j        j        |¦  «        S )Nz
{0}({1!r}))rS   ÚformatrR   Ú__name__)r   Úviews     r   Ú__repr__zMetadata.__repr__ˆ   s(   € Ý�T‰{Œ{ˆØ×"Ò" 4¤>Ô#:¸DÑAÔ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ð 6ð 6ð 6ð-˜{ð -¨}ð -ð -ð -ð -ð?˜{ð ?°=ð ?ÀTð ?ð ?ð ?ð ?ð1˜{ð 1¨tð 1ð 1ð 1ð 1ð ˜kð  ¨dð  ð  ð  ð  ð#˜( 5¨°mÐ)CÔ#DÔEð #ð #ð #ð #ð
"�c”lð "ð "ð "ð "ð$˜œð $ð $ð $ð $ð#�s”}ð #ð #ð #ð #ð :>ðð ØðØ)6ðà	�-Ô	 ðð ð ð ð+˜;ð +¨4°Ô+>ð +ð +ð +ð +ð%˜;ð %°°]Ô0Cð %Èð %ð %ð %ð %ð% ð %°ð %ð %ð %ð %ð˜Fð  tð ð ð ð ð˜Sð  Zð ð ð ð ðB˜#ð Bð Bð Bð Bð 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Ð IØ #Ð #Ð #Ð #Ð #Ð #Ø Ð Ð Ð Ð Ð Ø >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ð >à€Ø�c˜5�jÔ!€ðsBð sBð sBð sBð sBˆsŒ~ñ sBô sBð sBð sBð sBr   