???<!-- GIF89;a -->
123123123123
.....................................................................................................................................???<!-- GIF89;a -->
123123123123
.....................................................................................................................................
]V                 @   s   d  d l  Z  d  d l m Z d  d l m Z m Z d d d g Z d d   Z d	 d
   Z d d   Z	 d d   Z
 Gd d   d e  Z d Z Gd d   d e  Z Gd d   d d e Z Gd d   d e e  Z d d   Z d d   Z d S)    N)OrderedDict)MappingProxyTypeDynamicClassAttributeEnumIntEnumuniquec             C   s+   t  |  d  p* t  |  d  p* t  |  d  S)N__get____set__
__delete__)hasattr)obj r   )/opt/alt/python35/lib64/python3.5/enum.py_is_descriptor   s    r   c             C   sl   |  d  d  |  d d   k o+ d k n ok |  d d  d k ok |  d d  d k ok t  |   d k S)	N   __   _   r   )len)namer   r   r   
_is_dunder   s    0r   c             C   s`   |  d |  d k o d k n o_ |  d d  d k o_ |  d d  d k o_ t  |   d k S)Nr      r   r   r   r   )r   )r   r   r   r   
_is_sunder   s    $r   c             C   s"   d d   } | |  _  d |  _ d  S)Nc             S   s   t  d |    d  S)Nz%r cannot be pickled)	TypeError)selfprotor   r   r   _break_on_call_reduce"   s    z6_make_class_unpicklable.<locals>._break_on_call_reducez	<unknown>)__reduce_ex__
__module__)clsr    r   r   r   _make_class_unpicklable    s    	r$   c                   s4   e  Z d  Z   f d d   Z   f d d   Z   S)	_EnumDictc                s   t    j   g  |  _ d  S)N)super__init___member_names)r   )	__class__r   r   r'   /   s    z_EnumDict.__init__c                s   t  |  r t d   nm t |  r* n^ | |  j k rL t d |   n< t |  s | |  k rx t d |  |   |  j j |  t   j | |  d  S)Nz(_names_ are reserved for future Enum usezAttempted to reuse key: %rzKey already defined as: %r)	r   
ValueErrorr   r(   r   r   appendr&   __setitem__)r   keyvalue)r)   r   r   r,   3   s    	z_EnumDict.__setitem__)__name__r"   __qualname__r'   r,   r   r   )r)   r   r%   (   s   r%   c                   sH  e  Z d  Z e d d    Z   f d d   Z d d   Z d d d d	 d d
 d d d d d Z d d   Z   f d d   Z	 d d   Z
 d d   Z d d   Z d d   Z d d   Z e d d    Z d d    Z d! d"   Z   f d# d$   Z d d d d	 d d
 d d d d% d& Z e d' d(    Z e d) d*    Z   S)+EnumMetac             C   s   t    S)N)r%   )metaclsr#   basesr   r   r   __prepare__T   s    zEnumMeta.__prepare__c                s^  |  j  |  \  } |  j    |  \ } } }   f d d     j D } x   j D] }	   |	 =qY Wt |  d h @}
 |
 r t d j d j |
     d   k r d   d <t   j |  | |    } g  | _	 t
   | _  | _ d d	   | j   D } i  | _ d
   k rY t k	 rYd } t  f d d   | D  sYt |  xk  j D]`} | | } t | t  s| f } n | }  t k r| f } | s| |  } t | d  s| | _ n- | | |  } t | d  s |   | _ | j } | | _ | | _ | j |   xF | j j   D]% \ }	 } | j | j k r;| } Pq;W| j	 j |  | | k rt | | |  | | j | <y | | j | <Wqct k
 rYqcXqcWxi d D]a }	 t | |	  } t  |	 d   } t | |	 d   } | d  k	 r| | k rt | |	 |  qWt d  k	 rZ| rN| | _ t j | _ | S)Nc                s   i  |  ] }   | |  q Sr   r   ).0k)	classdictr   r   
<dictcomp>c   s   	 z$EnumMeta.__new__.<locals>.<dictcomp>mrozInvalid enum member name: {0},__doc__zAn enumeration.c             S   s&   h  |  ] } | j  D] } |  q q Sr   )__dict__)r5   bar   r   r   	<setcomp>y   s   	 z#EnumMeta.__new__.<locals>.<setcomp>r!   __getnewargs_ex____getnewargs__
__reduce__c             3   s   |  ] } |   j  k Vq d  S)N)r<   )r5   m)member_typer   r   	<genexpr>   s    z#EnumMeta.__new__.<locals>.<genexpr>_value___repr____str__
__format__)r@   rA   r!   rB   )rG   rH   rI   r!   ) _get_mixins_
_find_new_r(   setr*   formatjoinr&   __new___member_names_r   _member_map__member_type_r9   _value2member_map_objectanyr$   
isinstancetupler   rF   _name___objclass__r'   itemsr+   setattrr   getattrr   __new_member__)r2   r#   r3   r7   
first_enumrO   save_newuse_argsmembersr   invalid_names
enum_classbase_attributesmethodsmember_namer.   argsenum_membercanonical_memberclass_method
obj_methodenum_method)r)   )r7   rD   r   rO   X   s    	
			 

						zEnumMeta.__new__c             C   s   d S)NTr   )r   r   r   r   __bool__   s    zEnumMeta.__bool__Nmodulequalnametypestartr   c            C   sD   | d  k r |  j  |  |  S|  j | | d | d | d | d | S)Nrn   ro   rp   rq   )rO   _create_)r#   r.   namesrn   ro   rp   rq   r   r   r   __call__   s    zEnumMeta.__call__c             C   s   t  | |   o | j |  j k S)N)rV   rX   rQ   )r#   memberr   r   r   __contains__   s    zEnumMeta.__contains__c                s6   | |  j  k r" t d |  j   t   j |  d  S)Nz%s: cannot delete Enum member.)rQ   AttributeErrorr/   r&   __delattr__)r#   attr)r)   r   r   rx      s    zEnumMeta.__delattr__c             C   s   d d d d g |  j  S)Nr)   r;   __members__r"   )rP   )r   r   r   r   __dir__   s    zEnumMeta.__dir__c             C   sO   t  |  r t |   y |  j | SWn! t k
 rJ t |  d   Yn Xd  S)N)r   rw   rQ   KeyError)r#   r   r   r   r   __getattr__  s    	zEnumMeta.__getattr__c             C   s   |  j  | S)N)rQ   )r#   r   r   r   r   __getitem__  s    zEnumMeta.__getitem__c                s     f d d     j  D S)Nc             3   s   |  ] }   j  | Vq d  S)N)rQ   )r5   r   )r#   r   r   rE     s    z$EnumMeta.__iter__.<locals>.<genexpr>)rP   )r#   r   )r#   r   __iter__  s    zEnumMeta.__iter__c             C   s   t  |  j  S)N)r   rP   )r#   r   r   r   __len__  s    zEnumMeta.__len__c             C   s   t  |  j  S)N)r   rQ   )r#   r   r   r   rz     s    zEnumMeta.__members__c             C   s   d |  j  S)Nz	<enum %r>)r/   )r#   r   r   r   rG   '  s    zEnumMeta.__repr__c                s      f d d   t    j  D S)Nc             3   s   |  ] }   j  | Vq d  S)N)rQ   )r5   r   )r#   r   r   rE   +  s    z(EnumMeta.__reversed__.<locals>.<genexpr>)reversedrP   )r#   r   )r#   r   __reversed__*  s    zEnumMeta.__reversed__c                sD   |  j  j d i   } | | k r- t d   t   j | |  d  S)NrQ   zCannot reassign members.)r<   getrw   r&   __setattr__)r#   r   r.   
member_map)r)   r   r   r   -  s    zEnumMeta.__setattr__c            C   s  |  j  } | d  k r |  f n	 | |  f } | j | |  }	 t | t  rc | j d d  j   } t | t t f  r t | d t  r d d   t | |  D } xG | D]? }
 t |
 t  r |
 | |
 } } n |
 \ } } | |	 | <q W| j	 | | | |	  } | d  k r]y t
 j d  j d } Wn+ t t f k
 r\} z WYd  d  } ~ Xn X| d  k rvt |  n	 | | _ | d  k	 r| | _ | S)Nr:    r   c             S   s"   g  |  ] \ } } | | f  q Sr   r   )r5   ier   r   r   
<listcomp>N  s   	 z%EnumMeta._create_.<locals>.<listcomp>r   r/   )r)   r4   rV   strreplacesplitrW   list	enumeraterO   sys	_getframe	f_globalsrw   r*   r$   r"   r0   )r#   
class_namers   rn   ro   rp   rq   r2   r3   r7   itemrf   member_valuerc   excr   r   r   rr   :  s0    	!(		zEnumMeta._create_c             C   s   |  s t  t f Sd  } } x> |  D]6 } | t k	 r! t | t  r! | j r! t d   q! Wt | t  sv t d   t |  d t  s |  d } |  d } nN xK |  d j D]< } t | t  r | d  k r | } q | d  k r | } q W| | f S)NzCannot extend enumerationszHnew enumerations must be created as `ClassName([mixin_type,] enum_type)`r   r   r   )rT   r   
issubclassrP   r   __mro__)r3   rD   r^   baser   r   r   rJ   i  s(    

	
	
zEnumMeta._get_mixins_c       	      C   s   |  j  d d   } | d  k	 } | d  k r xu d D]d } xN | | f D]@ } t | | d   } | d  d  j t j t j h k rD | } PqD W| d  k	 r1 Pq1 Wt j } | t j k r d } n d } | | | f S)NrO   r]   FT)r]   rO   )r   r\   rO   rT   r   )	r7   rD   r^   rO   r_   methodpossibletargetr`   r   r   r   rK     s(    		zEnumMeta._find_new_)r/   r"   r0   classmethodr4   rO   rm   rt   rv   rx   r{   r}   r~   r   r   propertyrz   rG   r   r   rr   staticmethodrJ   rK   r   r   )r)   r   r1   R   s$   y'
'/-r1   c               @   s   e  Z d  Z d d   Z d d   Z d d   Z d d   Z d	 d
   Z d d   Z d d   Z	 e
 d d    Z e
 d d    Z e d d d   Z d S)r   c             C   s   t  |  |  k r | Sy | |  j k r3 |  j | SWn? t k
 ru x* |  j j   D] } | j | k rT | SqT WYn Xt d | |  j f   d  S)Nz%r is not a valid %s)rp   rS   r   rQ   valuesrF   r*   r/   )r#   r.   ru   r   r   r   rO     s    zEnum.__new__c             C   s   d |  j  j |  j |  j f S)Nz<%s.%s: %r>)r)   r/   rX   rF   )r   r   r   r   rG     s    zEnum.__repr__c             C   s   d |  j  j |  j f S)Nz%s.%s)r)   r/   rX   )r   r   r   r   rH     s    zEnum.__str__c                s3     f d d     j  j   D } d d d g | S)Nc                sE   g  |  ]; } | j  D]+ } | d  d k r |   j k r |  q q S)r   r   )r<   rQ   )r5   r#   rC   )r   r   r   r     s   	z Enum.__dir__.<locals>.<listcomp>r)   r;   r"   )r)   r9   )r   added_behaviorr   )r   r   r{     s    zEnum.__dir__c             C   sF   |  j  t k r$ t } t |   } n |  j  } |  j } | j | |  S)N)rR   rT   r   rF   rI   )r   format_specr#   valr   r   r   rI     s    		zEnum.__format__c             C   s   t  |  j  S)N)hashrX   )r   r   r   r   __hash__  s    zEnum.__hash__c             C   s   |  j  |  j f f S)N)r)   rF   )r   r   r   r   r   r!      s    zEnum.__reduce_ex__c             C   s   |  j  S)N)rX   )r   r   r   r   r   
  s    z	Enum.namec             C   s   |  j  S)N)rF   )r   r   r   r   r.     s    z
Enum.valueNc                s   t  t j |  } | r( t  |  } n | }   f d d   | j   D } |  | | d | }  t |  _ | j |  j  |  | | <|  S)Nc                s+   i  |  ]! \ } }   |  r | |  q Sr   r   )r5   r   r.   )filterr   r   r8   #  s   	 	z!Enum._convert.<locals>.<dictcomp>rn   )varsr   modulesrZ   _reduce_ex_by_namer!   updaterz   )r#   r   rn   r   sourcemodule_globalsra   r   )r   r   _convert  s    
	
zEnum._convert)r/   r"   r0   rO   rG   rH   r{   rI   r   r!   r   r   r.   r   r   r   r   r   r   r     s   	
	metaclassc               @   s   e  Z d  Z d S)r   N)r/   r"   r0   r   r   r   r   r   ,  s   c             C   s   |  j  S)N)r   )r   r   r   r   r   r   0  s    r   c             C   s   g  } xB |  j  j   D]1 \ } } | | j k r | j | | j f  q W| r d j d d   | D  } t d |  | f   |  S)Nz, c             S   s&   g  |  ] \ } } d  | | f  q S)z%s -> %sr   )r5   aliasr   r   r   r   r   ;  s   	 zunique.<locals>.<listcomp>z duplicate values found in %r: %s)rz   rZ   r   r+   rN   r*   )enumeration
duplicatesr   ru   alias_detailsr   r   r   r   3  s    )r   collectionsr   typesr   r   __all__r   r   r   r$   dictr%   r   rp   r1   intr   r   r   r   r   r   r   <module>   s   ' tg