
    ^i                    `    S r SSKJr  SSKJrJrJr  SSKJr   " S S\5      r	 " S S\5      r
g	)
z'
Basic Flag and Flags data structures.
    )annotations)IterableIterator
MutableSet)
NamedTuplec                  *    \ rS rSr% S\S'   S\S'   Srg)Flag
   strnameintbit N)__name__
__module____qualname____firstlineno____annotations____static_attributes__r       J/home/james-whalen/.local/lib/python3.13/site-packages/hyperframe/flags.pyr	   r	   
   s    
I	Hr   r	   c                  ^    \ rS rSrSrSS jrSS jrSS jrSS jrSS jr	SS jr
SS	 jrS
rg)Flags   z
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                n    U Vs1 s H  o"R                   iM     snU l        [        5       U l        g s  snf N)r   _valid_flagsset_flags)selfdefined_flagsflags      r   __init__Flags.__init__   s*    3@A=4YY=A # Bs   2c                >    [        [        U R                  5      5      $ r   )reprsortedr   r    s    r   __repr__Flags.__repr__   s    F4;;'((r   c                8    U R                   R                  U5      $ r   )r   __contains__)r    xs     r   r,   Flags.__contains__   s    {{''**r   c                6    U R                   R                  5       $ r   )r   __iter__r(   s    r   r0   Flags.__iter__"   s    {{##%%r   c                6    U R                   R                  5       $ r   )r   __len__r(   s    r   r3   Flags.__len__%   s    {{""$$r   c                8    U R                   R                  U5      $ r   )r   discard)r    values     r   r6   Flags.discard(   s    {{""5))r   c                    XR                   ;  a  SU SU R                    3n[        U5      eU R                  R                  U5      $ )NzUnexpected flag: z. Valid flags are: )r   
ValueErrorr   add)r    r7   msgs      r   r;   	Flags.add+   sE    )))%eW,?@Q@Q?RSCS/!{{u%%r   )r   r   N)r!   zIterable[Flag]returnNone)r>   r   )r-   objectr>   bool)r>   zIterator[str])r>   r   )r7   r   r>   r?   )r   r   r   r   __doc__r#   r)   r,   r0   r3   r6   r;   r   r   r   r   r   r      s*    &)+&%*&r   r   N)rB   
__future__r   collections.abcr   r   r   typingr   r	   r   r   r   r   <module>rF      s0    # : : : 
 &J  &r   