
    &Xh                    `    d Z ddlmZ ddlmZmZmZ ddlmZ  G d de      Z	 G d de      Z
y	)
z'
Basic Flag and Flags data structures.
    )annotations)IterableIterator
MutableSet)
NamedTuplec                  "    e Zd ZU ded<   ded<   y)FlagstrnameintbitN)__name__
__module____qualname____annotations__     :/RAG/venv/lib/python3.12/site-packages/hyperframe/flags.pyr	   r	   
   s    
I	Hr   r	   c                  H    e Zd ZdZd
dZddZddZddZddZddZ	ddZ
y	)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.
    c                j    |D ch c]  }|j                    c}| _        t               | _        y c c}w N)r   _valid_flagsset_flags)selfdefined_flagsflags      r   __init__zFlags.__init__   s,    3@A=4TYY=A # Bs   0c                >    t        t        | j                              S r   )reprsortedr   r   s    r   __repr__zFlags.__repr__   s    F4;;'((r   c                8    | j                   j                  |      S r   )r   __contains__)r   xs     r   r&   zFlags.__contains__   s    {{''**r   c                6    | j                   j                         S r   )r   __iter__r#   s    r   r)   zFlags.__iter__"   s    {{##%%r   c                6    | j                   j                         S r   )r   __len__r#   s    r   r+   zFlags.__len__%   s    {{""$$r   c                8    | j                   j                  |      S r   )r   discard)r   values     r   r-   zFlags.discard(   s    {{""5))r   c                    || j                   vrd| d| j                    }t        |      | j                  j                  |      S )NzUnexpected flag: z. Valid flags are: )r   
ValueErrorr   add)r   r.   msgs      r   r1   z	Flags.add+   sG    )))%eW,?@Q@Q?RSCS/!{{u%%r   N)r   zIterable[Flag]returnNone)r3   r
   )r'   objectr3   bool)r3   zIterator[str])r3   r   )r.   r
   r3   r4   )r   r   r   __doc__r   r$   r&   r)   r+   r-   r1   r   r   r   r   r      s*    &)+&%*&r   r   N)r7   
__future__r   collections.abcr   r   r   typingr   r	   r   r   r   r   <module>r;      s0    # : : : 
 &J  &r   