]V@sddlZddlmZddlmZmZdddgZddZd d Zd d Z d dZ Gddde Z dZ GdddeZGddddeZ Gdddee ZddZddZdS)N) OrderedDict)MappingProxyTypeDynamicClassAttributeEnumIntEnumuniquecCs+t|dp*t|dp*t|dS)N__get____set__ __delete__)hasattr)objr )/opt/alt/python35/lib64/python3.5/enum.py_is_descriptorsrcCsl|dd|ddko+dknok|dddkok|dddkokt|dkS) N___r)len)namer r r _is_dunders0rcCs`|d|dkodkno_|dddko_|dddko_t|dkS)Nrrrrr)r)rr r r _is_sunders$rcCs"dd}||_d|_dS)NcSstd|dS)Nz%r cannot be pickled) TypeError)selfprotor r r_break_on_call_reduce"sz6_make_class_unpicklable.._break_on_call_reducez ) __reduce_ex__ __module__)clsr r r r_make_class_unpicklable s  r$cs4eZdZfddZfddZS) _EnumDictcstjg|_dS)N)super__init__ _member_names)r) __class__r rr'/s z_EnumDict.__init__cst|rtdnmt|r*n^||jkrLtd|n<t|s||krxtd|||jj|tj||dS)Nz(_names_ are reserved for future Enum usezAttempted to reuse key: %rzKey already defined as: %r) r ValueErrorrr(rrappendr& __setitem__)rkeyvalue)r)r rr,3s    z_EnumDict.__setitem__)__name__r" __qualname__r'r,r r )r)rr%(s r%c sHeZdZeddZfddZddZdddd dd dd d d dZddZfddZ ddZ ddZ ddZ ddZ ddZeddZdd Zd!d"Zfd#d$Zdddd dd dd d d%d&Zed'd(Zed)d*ZS)+EnumMetacCstS)N)r%)metaclsr#basesr r r __prepare__TszEnumMeta.__prepare__c s^|j|\}|j|\}}}fddjD}xjD] } | =qYWt|dh@} | rtdjdj| dkrddcs z$EnumMeta.__new__..mrozInvalid enum member name: {0},__doc__zAn enumeration.cSs&h|]}|jD] }|qqSr )__dict__)r5bar r r ys z#EnumMeta.__new__..r!__getnewargs_ex____getnewargs__ __reduce__c3s|]}|jkVqdS)N)r<)r5m) member_typer r sz#EnumMeta.__new__.._value___repr____str__ __format__)r@rAr!rB)rGrHrIr!) _get_mixins_ _find_new_r(setr*formatjoinr&__new___member_names_r _member_map_ _member_type_r9_value2member_map_objectanyr$ isinstancetupler rF_name_ __objclass__r'itemsr+setattrrgetattrr__new_member__)r2r#r3r7 first_enumrOsave_newuse_argsmembersr invalid_names enum_classbase_attributesmethods member_namer.args enum_membercanonical_member class_method obj_method enum_method)r))r7rDrrOXs                             zEnumMeta.__new__cCsdS)NTr )rr r r__bool__szEnumMeta.__bool__Nmodulequalnametypestartrc CsD|dkr|j||S|j||d|d|d|d|S)Nrnrorprq)rO_create_)r#r.namesrnrorprqr r r__call__s zEnumMeta.__call__cCst||o|j|jkS)N)rVrXrQ)r#memberr r r __contains__szEnumMeta.__contains__cs6||jkr"td|jtj|dS)Nz%s: cannot delete Enum member.)rQAttributeErrorr/r& __delattr__)r#attr)r)r rrxszEnumMeta.__delattr__cCsddddg|jS)Nr)r; __members__r")rP)rr r r__dir__szEnumMeta.__dir__c CsOt|rt|y|j|SWn!tk rJt|dYnXdS)N)rrwrQKeyError)r#rr r r __getattr__s   zEnumMeta.__getattr__cCs |j|S)N)rQ)r#rr r r __getitem__szEnumMeta.__getitem__csfddjDS)Nc3s|]}j|VqdS)N)rQ)r5r)r#r rrEsz$EnumMeta.__iter__..)rP)r#r )r#r__iter__szEnumMeta.__iter__cCs t|jS)N)rrP)r#r r r__len__szEnumMeta.__len__cCs t|jS)N)rrQ)r#r r rrzszEnumMeta.__members__cCs d|jS)Nz )r/)r#r r rrG'szEnumMeta.__repr__cs fddtjDS)Nc3s|]}j|VqdS)N)rQ)r5r)r#r rrE+sz(EnumMeta.__reversed__..)reversedrP)r#r )r#r __reversed__*szEnumMeta.__reversed__csD|jjdi}||kr-tdtj||dS)NrQzCannot reassign members.)r<getrwr& __setattr__)r#rr. member_map)r)r rr-s  zEnumMeta.__setattr__cCs|j}|dkr|fn ||f}|j||} t|trc|jddj}t|ttfrt|dtrddt||D}xG|D]?} t| tr| || } } n | \} } | | | Ns z%EnumMeta._create_..rr/)r)r4rVstrreplacesplitrWlist enumeraterOsys _getframe f_globalsrwr*r$r"r0)r# class_namersrnrorprqr2r3r7itemrf member_valuercexcr r rrr:s0 !(        zEnumMeta._create_cCs|sttfSd}}x>|D]6}|tk r!t|tr!|jr!tdq!Wt|tsvtdt|dts|d}|d}nNxK|djD]<}t|tr|dkr|}q|dkr|}qW||fS)NzCannot extend enumerationszHnew enumerations must be created as `ClassName([mixin_type,] enum_type)`rrr)rTr issubclassrPr__mro__)r3rDr^baser r rrJis(            zEnumMeta._get_mixins_c Cs|jdd}|dk }|dkrxudD]d}xN||fD]@}t||d}|ddjtjtjhkrD|}PqDW|dk r1Pq1Wtj}|tjkrd}nd}|||fS)NrOr]FT)r]rO)rr\rOrTr) r7rDr^rOr_methodpossibletargetr`r r rrKs(       zEnumMeta._find_new_)r/r"r0 classmethodr4rOrmrtrvrxr{r}r~rrpropertyrzrGrrrr staticmethodrJrKr r )r)rr1Rs$ y '         '/-r1c@seZdZddZddZddZddZd d Zd d Zd dZ e ddZ e ddZ e dddZdS)rc Cst||kr|Sy||jkr3|j|SWn?tk rux*|jjD]}|j|krT|SqTWYnXtd||jfdS)Nz%r is not a valid %s)rprSrrQvaluesrFr*r/)r#r.rur r rrOs  z Enum.__new__cCsd|jj|j|jfS)Nz <%s.%s: %r>)r)r/rXrF)rr r rrGsz Enum.__repr__cCsd|jj|jfS)Nz%s.%s)r)r/rX)rr r rrHsz Enum.__str__cs3fddjjD}dddg|S)NcsEg|];}|jD]+}|ddkr|jkr|qqS)rr)r<rQ)r5r#rC)rr rrs  z Enum.__dir__..r)r;r")r)r9)radded_behaviorr )rrr{sz Enum.__dir__cCsF|jtkr$t}t|}n|j}|j}|j||S)N)rRrTrrFrI)r format_specr#valr r rrIs   zEnum.__format__cCs t|jS)N)hashrX)rr r r__hash__sz Enum.__hash__cCs|j|jffS)N)r)rF)rrr r rr!szEnum.__reduce_ex__cCs|jS)N)rX)rr r rr sz Enum.namecCs|jS)N)rF)rr r rr.sz Enum.valueNcsttj|}|r(t|}n|}fdd|jD}|||d|}t|_|j|j|||<|S)Ncs+i|]!\}}|r||qSr r )r5rr.)filterr rr8#s z!Enum._convert..rn)varsrmodulesrZ_reduce_ex_by_namer!updaterz)r#rrnrsourcemodule_globalsrar )rr_converts   z Enum._convert)r/r"r0rOrGrHr{rIrr!rrr.rrr r r rrs        metaclassc@seZdZdS)rN)r/r"r0r r r rr,s cCs|jS)N)r)rrr r rr0srcCsg}xB|jjD]1\}}||jkr|j||jfqW|rdjdd|D}td||f|S)Nz, cSs&g|]\}}d||fqS)z%s -> %sr )r5aliasrr r rr;s zunique..z duplicate values found in %r: %s)rzrZrr+rNr*) enumeration duplicatesrru alias_detailsr r rr3s)r collectionsrtypesrr__all__rrrr$dictr%rrpr1intrrrr r r rs     'tg