o
    ùj×  ã                   @   s(   d dl mZ G dd„ deƒZdd„ ZdS )é    )ÚSimpleModelc                   @   s*   e Zd ZdZeddd„ƒZedd„ ƒZdS )ÚEnumBaseNc                 C   s   | j d u r|| _ dS )NT)Ú__namespace__)ÚclsÚ
default_nsÚtags© r   úP/var/www/html/LicenciasMiG/venv/lib/python3.10/site-packages/spyne/model/enum.pyÚresolve_namespace   s   
zEnumBase.resolve_namespacec                 C   s   t  | |¡o
|| jv S ©N)r   Úvalidate_stringÚ
__values__)r   Úvaluer   r   r	   r   !   s   ÿzEnumBase.validate_stringr   )Ú__name__Ú
__module__Ú__qualname__r   Ústaticmethodr
   r   r   r   r   r	   r      s    r   c                     s˜   |  dd¡‰|  dd¡‰ ˆdu rtdƒ‚tˆƒdksJ dƒ‚tˆƒ‰G ‡‡fdd	„d	tƒ}G ‡ ‡‡fd
d„dtƒ}tˆƒD ]\}}t||||ƒƒ q=|S )a­  The enum type that can only return ``True`` when compared to types of
    own type.

    Here's how it's supposed to work:

    >>> from spyne.model.enum import Enum
    >>> SomeEnum = Enum("SomeValue", "SomeOtherValue", type_name="SomeEnum")
    >>> SomeEnum.SomeValue == SomeEnum.SomeOtherValue
    False
    >>> SomeEnum.SomeValue == SomeEnum.SomeValue
    True
    >>> SomeEnum.SomeValue is SomeEnum.SomeValue
    True
    >>> SomeEnum.SomeValue == 0
    False
    >>> SomeEnum2 = Enum("SomeValue", "SomeOtherValue", type_name="SomeEnum")
    >>> SomeEnum2.SomeValue == SomeEnum.SomeValue
    False

    In the above example, ``SomeEnum`` can be used as a regular Spyne model.
    Ú	type_nameNÚdocÚ z0Please specify 'type_name' as a keyword argumentr   zEmpty enums are meaninglessc                       sR   e Zd ZdZdd„ Zdd„ Zdd„ Z‡ ‡fdd	„Zd
d„ Zdd„ Z	‡fdd„Z
dS )zEnum.<locals>.EnumValue)Ú__valuec                 S   s
   || _ d S r   ©Ú_EnumValue__value)Úselfr   r   r   r	   Ú__init__J   ó   
z Enum.<locals>.EnumValue.__init__c                 S   ó
   t | jƒS r   )Úhashr   ©r   r   r   r	   Ú__hash__M   r   z Enum.<locals>.EnumValue.__hash__c                 S   s.   t | t|ƒƒrt| j|jƒS tt| ƒt|ƒƒS r   )Ú
isinstanceÚtypeÚcmpr   Úid)r   Úotherr   r   r	   Ú__cmp__P   s   zEnum.<locals>.EnumValue.__cmp__c                    s   ˆˆ | j   S r   r   r   ©ÚmaximumÚvaluesr   r	   Ú
__invert__V   ó   z"Enum.<locals>.EnumValue.__invert__c                 S   r   r   ©Úboolr   r   r   r   r	   Ú__nonzero__Y   r   z#Enum.<locals>.EnumValue.__nonzero__c                 S   r   r   r+   r   r   r   r	   Ú__bool__\   r   z Enum.<locals>.EnumValue.__bool__c                    s   t ˆ | j ƒS r   )Ústrr   r   ©r(   r   r	   Ú__repr___   r*   z Enum.<locals>.EnumValue.__repr__N)r   r   r   Ú	__slots__r   r   r%   r)   r-   r.   r1   r   r&   r   r	   Ú	EnumValueG   s    r3   c                       sT   e Zd Z” Z”Z”Z‡fdd„Z‡fdd„Z‡fdd„Z‡fdd„Z	‡fd	d
„Z
dS )zEnum.<locals>.EnumTypec                    ó   t ˆ ƒS r   )Úiterr   r0   r   r	   Ú__iter__g   ó   zEnum.<locals>.EnumType.__iter__c                    r4   r   )Úlenr   r0   r   r	   Ú__len__j   r7   zEnum.<locals>.EnumType.__len__c                    s   ˆ | S r   r   )r   Úir0   r   r	   Ú__getitem__m   r7   z"Enum.<locals>.EnumType.__getitem__c                    s   dt tˆ ƒƒ S )NÚEnum)r/   Ú	enumerater   r0   r   r	   r1   p   s   zEnum.<locals>.EnumType.__repr__c                    s   dt ˆ ƒ S )Nzenum )r/   r   r0   r   r	   Ú__str__s   s   zEnum.<locals>.EnumType.__str__N)r   r   r   Ú__doc__Ú__type_name__r   r6   r9   r;   r1   r>   r   )Údocstrr   r(   r   r	   ÚEnumTypeb   s    rB   )ÚgetÚ	Exceptionr8   Úobjectr   r=   Úsetattr)r(   Úkwargsr3   rB   r:   Úvr   )rA   r'   r   r(   r	   r<   '   s   r<   N)Úspyne.modelr   r   r<   r   r   r   r	   Ú<module>   s   