o
    æûõjÇ  ã                   @   sð   d dl Z d dlmZmZmZ d dlmZmZmZm	Z	m
Z
 er%ddlmZ neZedƒZeddd	�Zed
ƒZG dd„ dee ƒZG dd„ dee ƒZee ee B eeeef  B dB ZG dd„ deeef ƒZG dd„ dee eeef ƒZdS )é    N)ÚIterableÚMappingÚMutableMapping)ÚTYPE_CHECKINGÚProtocolÚTypeVarÚUnionÚoverloadé   )ÚistrÚ_VÚ_V_coT)Ú	covariantÚ_Tc                   @   ó0   e Zd Zdee fdd„Zdedefdd„ZdS )ÚSupportsKeysÚreturnc                 C   ó   d S ©N© ©Úselfr   r   úA/opt/steambot/venv/lib/python3.10/site-packages/multidict/_abc.pyÚkeys   ó    zSupportsKeys.keysÚkeyc                C   r   r   r   ©r   r   r   r   r   Ú__getitem__   r   zSupportsKeys.__getitem__N)Ú__name__Ú
__module__Ú__qualname__r   Ústrr   r   r   r   r   r   r   r      ó    r   c                   @   r   )ÚSupportsIKeysr   c                 C   r   r   r   r   r   r   r   r      r   zSupportsIKeys.keysr   c                C   r   r   r   r   r   r   r   r      r   zSupportsIKeys.__getitem__N)r   r   r    r   r   r   r   r   r   r   r   r   r#      r"   r#   c                	   @   sÞ   e Zd Zededee fdd„ƒZedededee eB fdd„ƒZe	j
ddededee eB fdd„ƒZededefd	d
„ƒZedededeeB fdd
„ƒZe	j
ddededeeB fdd
„ƒZdeeee f fdd„ZdS )ÚMultiMappingr   r   c                 C   r   r   r   r   r   r   r   Úgetall   ó   zMultiMapping.getallÚdefaultc                 C   r   r   r   ©r   r   r'   r   r   r   r%      r&   .c                 C   ó   dS )zReturn all values for key.Nr   r(   r   r   r   r%   !   r   c                 C   r   r   r   r   r   r   r   Úgetone%   r&   zMultiMapping.getonec                 C   r   r   r   r(   r   r   r   r*   '   r&   c                 C   r)   )zReturn first value for key.Nr   r(   r   r   r   r*   )   r   c                 C   s(   i }| D ]}||vr|   |¡||< q|S )aØ  Return a dict with lists of all values for each key.

        Deliberately concrete, not abstract: ``MultiMapping`` is public, so
        requiring a new method would stop every existing subclass outside
        this project from being instantiated. Subclasses whose keys compare
        equal under a normalisation the iteration does not apply, such as
        case-insensitive mappings, must override this; the default would
        emit one entry per spelling.
        )r%   )r   Úresultr   r   r   r   Úto_dict-   s   
€zMultiMapping.to_dictN©.)r   r   r    r	   r!   Úlistr   r%   r   ÚabcÚabstractmethodr*   Údictr,   r   r   r   r   r$      s     "r$   c                	   @   s$  e Zd Zejdededdfdd„ƒZejddee deddfd	d
„ƒZ	ejddee deddfdd„ƒZ
ededefdd„ƒZedededeeB fdd„ƒZejddededeeB fdd„ƒZededee fdd„ƒZedededee eB fdd„ƒZejddededee eB fdd„ƒZdS )ÚMutableMultiMappingr   Úvaluer   Nc                 C   r)   )zAdd value to list.Nr   )r   r   r3   r   r   r   ÚaddB   r   zMutableMultiMapping.addÚargÚkwargsc                K   r)   )z2Add everything from arg and kwargs to the mapping.Nr   ©r   r5   r6   r   r   r   ÚextendF   r   zMutableMultiMapping.extendc                K   r)   )z1Merge into the mapping, adding non-existing keys.Nr   r7   r   r   r   ÚmergeJ   r   zMutableMultiMapping.mergec                 C   r   r   r   r   r   r   r   ÚpoponeN   r&   zMutableMultiMapping.poponer'   c                 C   r   r   r   r(   r   r   r   r:   P   r&   .c                 C   r)   )z8Remove specified key and return the corresponding value.Nr   r(   r   r   r   r:   R   r   c                 C   r   r   r   r   r   r   r   ÚpopallV   r&   zMutableMultiMapping.popallc                 C   r   r   r   r(   r   r   r   r;   X   r&   c                 C   r)   )zJRemove all occurrences of key and return the list of corresponding values.Nr   r(   r   r   r   r;   Z   r   r   r-   )r   r   r    r/   r0   r!   r   r4   ÚMDArgr8   r9   r	   r:   r   r.   r;   r   r   r   r   r2   A   s&     &r2   )r/   Úcollections.abcr   r   r   Útypingr   r   r   r   r	   Ú_multidict_pyr   r!   r   r   r   r   r#   Útupler<   r$   r2   r   r   r   r   Ú<module>   s    $"%