o
    8Î®cß  ã                   @   sÌ   d Z ddlZddlmZ ddlmZmZmZmZ eƒ Z	e	j
Ze	jZe	jZeG dd„ deƒƒZeG dd„ deƒƒZeG d	d
„ d
eƒƒZG dd„ deƒZeejƒG dd„ deƒƒZeejƒG dd„ deƒƒZdS )z
Typing for enums.
é    N)Útypes)ÚAbstractTemplateÚAttributeTemplateÚ	signatureÚRegistryc                   @   ó   e Zd ZejZdd„ ZdS )ÚEnumAttributec                 C   s   |j S ©N)Údtype)ÚselfÚty© r   úA/tmp/pip-target-vg8gfxp4/lib/python/numba/core/typing/enumdecl.pyÚresolve_value   s   zEnumAttribute.resolve_valueN)Ú__name__Ú
__module__Ú__qualname__r   Ú
EnumMemberÚkeyr   r   r   r   r   r      ó    r   c                   @   r   )ÚEnumClassAttributec                 C   s   ||j jv r	|jS dS )zF
        Resolve attributes of an enum class as enum members.
        N)Úinstance_classÚ__members__Úmember_type)r   r   Úattrr   r   r   Úgeneric_resolve   s   ÿz"EnumClassAttribute.generic_resolveN)r   r   r   r   Ú	EnumClassr   r   r   r   r   r   r      r   r   c                   @   s   e Zd ZdZdd„ ZdS )ÚEnumClassStaticGetItemÚstatic_getitemc                 C   s:   |\}}t |tjƒr||jjv rt|jg|¢R Ž S d S d S r	   )Ú
isinstancer   r   r   r   r   r   )r   ÚargsÚkwsÚenumÚidxr   r   r   Úgeneric'   s   
ÿþzEnumClassStaticGetItem.genericN)r   r   r   r   r$   r   r   r   r   r   #   s    r   c                   @   s   e Zd Zdd„ ZdS )ÚEnumComparec                 C   sB   |\}}t |tjƒrt |tjƒr||krttj||ƒS d S d S d S r	   )r   r   r   r   Úboolean)r   r    r!   ÚlhsÚrhsr   r   r   r$   0   s   
ÿþýzEnumCompare.genericN)r   r   r   r$   r   r   r   r   r%   .   s    r%   c                   @   ó   e Zd ZdS )ÚEnumEqN©r   r   r   r   r   r   r   r*   8   ó    r*   c                   @   r)   )ÚEnumNeNr+   r   r   r   r   r-   >   r,   r-   )Ú__doc__ÚoperatorÚ
numba.corer   Únumba.core.typing.templatesr   r   r   r   ÚregistryÚregisterÚinferÚregister_globalÚinfer_globalÚregister_attrÚinfer_getattrr   r   r   r%   Úeqr*   Úner-   r   r   r   r   Ú<module>   s&    

