
    gj                     X    d Z ddlmZ ddlmZmZmZmZ  G d de      Z G d de      Z	y)	zR
hyperframe/flags
~~~~~~~~~~~~~~~~

Defines basic Flag and Flags data structures.
    )
MutableSet)
NamedTupleIterableSetIteratorc                   "    e Zd ZU eed<   eed<   y)FlagnamebitN)__name__
__module____qualname__str__annotations__int     E/var/www/openai/venv/lib/python3.12/site-packages/hyperframe/flags.pyr	   r	      s    
I	Hr   r	   c                   |    e Zd ZdZdee   fdZdefdZde	de
fdZdee   fdZdefd	Zd
eddfdZd
eddf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.
    defined_flagsc                 P    t        d |D              | _        t               | _        y )Nc              3   4   K   | ]  }|j                     y wN)r
   ).0flags     r   	<genexpr>z!Flags.__init__.<locals>.<genexpr>   s     Dmd		ms   )set_valid_flags_flags)selfr   s     r   __init__zFlags.__init__   s    DmDD #r   returnc                 P    t        t        t        | j                                    S r   )reprsortedlistr    r!   s    r   __repr__zFlags.__repr__   s    F4,-..r   xc                 8    | j                   j                  |      S r   )r    __contains__)r!   r*   s     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   r0   zFlags.__len__&   s    {{""$$r   valueNc                 8    | j                   j                  |      S r   )r    discardr!   r1   s     r   r3   zFlags.discard)   s    {{""5))r   c                     || j                   vr%t        dj                  || j                               | j                  j	                  |      S )Nz(Unexpected flag: {}. Valid flags are: {})r   
ValueErrorformatr    addr4   s     r   r8   z	Flags.add,   sK    ))):AA4,, 
 {{u%%r   )r   r   r   __doc__r   r	   r"   r   r)   objectboolr,   r   r.   r   r0   r3   r8   r   r   r   r   r      sx    &htn &/# /+f + +&(3- &% %*S *T *& & &r   r   N)
r9   collections.abcr   typingr   r   r   r   r	   r   r   r   r   <module>r>      s-    ' 6 6: 
"&J "&r   