U
    ½){fj  ã                   @   sL   d Z ddlmZ ddlmZ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.
é    )Ú
MutableSet)Ú
NamedTupleÚIterableÚSetÚIteratorc                   @   s   e Zd ZU eed< eed< dS )ÚFlagÚnameÚbitN)Ú__name__Ú
__module__Ú__qualname__ÚstrÚ__annotations__Úint© r   r   úO/var/www/html/Darija-Ai-API/env/lib/python3.8/site-packages/hyperframe/flags.pyr      s   
r   c                   @   s€   e Zd ZdZee dœdd„Zedœdd„Ze	e
dœd	d
„Zee dœdd„Zedœdd„Zeddœdd„Zed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_flagsc                 C   s    t dd„ |D ƒƒ| _t ƒ | _d S )Nc                 s   s   | ]}|j V  qd S ©N)r   )Ú.0Úflagr   r   r   Ú	<genexpr>   s     z!Flags.__init__.<locals>.<genexpr>)ÚsetÚ_valid_flagsÚ_flags)Úselfr   r   r   r   Ú__init__   s    zFlags.__init__)Úreturnc                 C   s   t tt| jƒƒƒS r   )ÚreprÚsortedÚlistr   ©r   r   r   r   Ú__repr__   s    zFlags.__repr__)Úxr   c                 C   s   | j  |¡S r   )r   Ú__contains__)r   r#   r   r   r   r$       s    zFlags.__contains__c                 C   s
   | j  ¡ S r   )r   Ú__iter__r!   r   r   r   r%   #   s    zFlags.__iter__c                 C   s
   | j  ¡ S r   )r   Ú__len__r!   r   r   r   r&   &   s    zFlags.__len__N)Úvaluer   c                 C   s   | j  |¡S r   )r   Údiscard©r   r'   r   r   r   r(   )   s    zFlags.discardc                 C   s(   || j krtd || j ¡ƒ‚| j |¡S )Nz(Unexpected flag: {}. Valid flags are: {})r   Ú
ValueErrorÚformatr   Úaddr)   r   r   r   r,   ,   s    
 ÿÿz	Flags.add)r
   r   r   Ú__doc__r   r   r   r   r"   ÚobjectÚboolr$   r   r%   r   r&   r(   r,   r   r   r   r   r      s   r   N)
r-   Úcollections.abcr   Útypingr   r   r   r   r   r   r   r   r   r   Ú<module>   s   