o
    ËÄ.jp  ã                   @  sT   d Z ddlmZ ddlmZ ddlmZmZmZ G dd„ deƒZ	G dd„ deƒZ
d	S )
zR
hyperframe/flags
~~~~~~~~~~~~~~~~

Defines basic Flag and Flags data structures.
é    )Úannotations)Ú
MutableSet)ÚIterableÚIteratorÚ
NamedTuplec                   @  s   e Zd ZU ded< ded< dS )ÚFlagÚstrÚnameÚintÚbitN)Ú__name__Ú
__module__Ú__qualname__Ú__annotations__© r   r   úI/home/thesage/.local/lib/python3.10/site-packages/jh2/hyperframe/flags.pyr      s   
 r   c                   @  sV   e Zd ZdZddd„Zddd	„Zddd„Zddd„Zd dd„Zd!dd„Z	d!dd„Z
dS )"ÚFlagszÓ
    A simple MutableSet implementation that will only accept known flags as
    elements.

    Will behave like a regular set(), except that a ValueError will be thrown
    when .add()ing unexpected flags.
    Údefined_flagsúIterable[Flag]c                 C  s   dd„ |D ƒ| _ tƒ | _d S )Nc                 S  s   h | ]}|j ’qS r   )r	   )Ú.0Úflagr   r   r   Ú	<setcomp>   s    z!Flags.__init__.<locals>.<setcomp>)Ú_valid_flagsÚsetÚ_flags)Úselfr   r   r   r   Ú__init__   s   zFlags.__init__Úreturnr   c                 C  s   t tt| jƒƒƒS ©N)ÚreprÚsortedÚlistr   ©r   r   r   r   Ú__repr__    s   zFlags.__repr__ÚxÚobjectÚboolc                 C  ó   | j  |¡S r   )r   Ú__contains__)r   r$   r   r   r   r(   #   ó   zFlags.__contains__úIterator[str]c                 C  ó
   | j  ¡ S r   )r   Ú__iter__r"   r   r   r   r,   &   ó   
zFlags.__iter__r
   c                 C  r+   r   )r   Ú__len__r"   r   r   r   r.   )   r-   zFlags.__len__ÚvalueÚNonec                 C  r'   r   )r   Údiscard©r   r/   r   r   r   r1   ,   r)   zFlags.discardc                 C  s(   || j vrtd || j ¡ƒ‚| j |¡S )Nz(Unexpected flag: {}. Valid flags are: {})r   Ú
ValueErrorÚformatr   Úaddr2   r   r   r   r5   /   s   
ÿÿz	Flags.addN)r   r   )r   r   )r$   r%   r   r&   )r   r*   )r   r
   )r/   r   r   r0   )r   r   r   Ú__doc__r   r#   r(   r,   r.   r1   r5   r   r   r   r   r      s    





r   N)r6   Ú
__future__r   Úcollections.abcr   Útypingr   r   r   r   r   r   r   r   r   Ú<module>   s    