eaiovnaovbqoebvqoeavibavo B YI~d@s&ddlZddlmZmZyddlmZWn ek rHddlmZYnXdddddd d gZd d Z d dZ ddZ ddZ e ZGdd d ZGdddeZdZGdddeZGdddedZGdddeeZddZGdddeZGdddeeZddZd d Zd!d"Zd#d$ZdS)%N)MappingProxyTypeDynamicClassAttribute) OrderedDictEnumMetaEnumIntEnumFlagIntFlagautouniquecCst|dpt|dpt|dS)N__get____set__ __delete__)hasattr)objr)/opt/alt/python37/lib64/python3.7/enum.py_is_descriptors  rcCsLt|dkoJ|dd|ddko.dknoJ|ddkoJ|ddkS)N___)len)namerrr _is_dunders ( rcCsLt|dkoJ|d|dko&dknoJ|dddkoJ|dddkS)Nrrrr)r)rrrr _is_sunder"s  rcCsdd}||_d|_dS)NcSstd|dS)Nz%r cannot be pickled) TypeError)selfprotorrr_break_on_call_reduce,sz6_make_class_unpicklable.._break_on_call_reducez ) __reduce_ex__ __module__)clsr#rrr_make_class_unpicklable*sr'c@seZdZeZdS)r N)__name__r% __qualname__ _auto_nullvaluerrrrr 2scs(eZdZfddZfddZZS) _EnumDictcs&tg|_g|_g|_d|_dS)NF)super__init__ _member_names _last_values_ignore _auto_called)r!) __class__rrr.@s  z_EnumDict.__init__csdt|r|dkrtd|dkr<|jr.tdt|d|nV|dkrt|tr`|dd}nt |}||_ t |t |j @}|rtd |fnt |r|d krd }n||j krtd |n||j krnt|sR||krtd |||ft|tr:d|_|jtkr4||dt|j |jdd|_|j}|j ||j|t||dS)N)_order__create_pseudo_member__generate_next_value_ _missing__ignore_z(_names_ are reserved for future Enum user6z4_generate_next_value_ must be defined before members_generate_next_valuer8, z-_ignore_ cannot specify already set names: %r __order__r4zAttempted to reuse key: %rz%r already defined as: %rTr)r ValueErrorr2r setattr isinstancestrreplacesplitlistr1setr/rrr r+r*r9rr0appendr- __setitem__)r!keyr+already)r3rrrFGsD       "  z_EnumDict.__setitem__)r(r%r)r.rF __classcell__rr)r3rr,9s r,cseZdZeddZfddZddZd(ddddd d d Zd d ZfddZ ddZ ddZ ddZ ddZ ddZeddZddZddZfd d!Zddddd d"d#Zed$d%Zed&d'ZZS))rcCs0t}||\}}|dk r,t|dd|d<|S)Nr6)r, _get_mixins_getattr)metaclsr&bases enum_dict member_type first_enumrrr __prepare__s zEnumMeta.__prepare__c s"dgdd}x|D]}|dq W||\}||\}}} fddjD} xjD] } | =qrWdd} t| ddh@} | rtdd | d krd d <t |||}g|_ t |_|_d d |D}i|_d kr:tk r:d}tfdd|Ds:t|x6jD]*}| |}t|tsf|f}n|}tkrz|f}| s||}t|ds||_n6||f|}t|ds҈tkr||_n ||_|j}||_||_|j|x8|jD]\} }|j|jkr|}PqW|j |||kr>t|||||j|<y||j|<Wntk rlYnXqDWxPdD]H} t|| }t| d}t|| d}|dk rz||krzt|| |qzWt dk r|r||_!t j |_ | dk rt| t"r | #dd$} | |j krtd|S)Nr8csi|]}||qSrr).0k) classdictrr sz$EnumMeta.__new__..r4mrozInvalid enum member name: {0}r:__doc__zAn enumeration.cSs.h|]&}|jD]\}}t|tr|qqSr)__dict__itemsr?r)rRcrSvrrr sz#EnumMeta.__new__..r$)__getnewargs_ex____getnewargs__r$ __reduce__c3s|]}|jkVqdS)N)rY)rRm)rOrr sz#EnumMeta.__new__.._value_)__repr____str__ __format__r$r;z#member order does not match _order_)% setdefaultrEpoprJ _find_new_r/rDr=formatjoinr-__new___member_names_r _member_map_ _member_type_rV_value2member_map_objectanyr'r?tuplerrc_name_ __objclass__r.rZr>r rKr__new_member__r@rArB)rLr&rMrTignorerGrPrlsave_newuse_args enum_membersrr4 invalid_names enum_classdynamic_attributesmethods member_namer+args enum_membercanonical_member class_method obj_method enum_method)r3)rTrOrrls                           zEnumMeta.__new__cCsdS)NTr)r!rrr__bool__szEnumMeta.__bool__Nr)modulequalnametypestartcCs*|dkr|||S|j||||||dS)N)rrrr)rl_create_)r&r+namesrrrrrrr__call__!s zEnumMeta.__call__cCs6t|ts ddl}|dtdt||o4|j|jkS)NrzHusing non-Enums in containment checks will raise TypeError in Python 3.8r)r?rwarningswarnDeprecationWarningrtrn)r&memberrrrr __contains__?s  zEnumMeta.__contains__cs(||jkrtd|jt|dS)Nz%s: cannot delete Enum member.)rnAttributeErrorr(r- __delattr__)r&attr)r3rrrHs  zEnumMeta.__delattr__cCsddddg|jS)Nr3rX __members__r%)rm)r!rrr__dir__Ps zEnumMeta.__dir__cCs>t|rt|y |j|Stk r8t|dYnXdS)N)rrrnKeyError)r&rrrr __getattr__Ts  zEnumMeta.__getattr__cCs |j|S)N)rn)r&rrrr __getitem__dszEnumMeta.__getitem__csfddjDS)Nc3s|]}j|VqdS)N)rn)rRr)r&rrrbhsz$EnumMeta.__iter__..)rm)r&r)r&r__iter__gszEnumMeta.__iter__cCs t|jS)N)rrm)r&rrr__len__jszEnumMeta.__len__cCs t|jS)N)rrn)r&rrrrmszEnumMeta.__members__cCs d|jS)Nz )r()r&rrrrdwszEnumMeta.__repr__csfddtjDS)Nc3s|]}j|VqdS)N)rn)rRr)r&rrrb{sz(EnumMeta.__reversed__..)reversedrm)r&r)r&r __reversed__zszEnumMeta.__reversed__cs0|jdi}||krtdt||dS)NrnzCannot reassign members.)rYgetrr- __setattr__)r&rr+ member_map)r3rrr}szEnumMeta.__setattr__c Cs|j}|dkr|fn||f}||\} } |||} t|trP|dd}t|ttfr|rt|dtr|g} }g} xDt | D]8\}}| |||| dd}| || ||fqWx6|D].}t|tr|||}}n|\}}|| |<qW| |||| }|dkrVyt djd}Wn*tttfk rT}zWdd}~XYnX|dkrjt|n||_|dk r||_|S)Nr:r;rrr()r3rJrQr?r@rArBrsrC enumerater6rErlsys _getframe f_globalsrr=rr'r%r))r& class_namerrrrrrLrMrrPrToriginal_names last_valuescountrr+itemr member_valuer|excrrrrs<             zEnumMeta._create_cCsP|s ttfSdd}|d}t|ts.td||p8t}|jrHtd||fS)NcSsHxB|D]:}x4|jD]*}|tkr"qqd|jkrt|tr8q|SqWqWdS)Nrl)__mro__rqrY issubclassr)rMchainbaserrr_find_data_types    z.EnumMeta._get_mixins_.._find_data_typerzZnew enumerations should be created as `EnumName([mixin_type, ...] [data_type,] enum_type)`zCannot extend enumerations)rqrrr rm)rMrrPrOrrrrJs   zEnumMeta._get_mixins_c Cs|dd}|dk }|dkrtxVdD]H}x8||fD],}t||d}|ddjtjtjhkr0|}Pq0W|dk r"Pq"Wtj}|tjkrd}nd}|||fS)Nrl)rvrlFT)rrKrlrqr) rTrOrPrlrxmethodpossibletargetryrrrris(     zEnumMeta._find_new_)N)r(r%r) classmethodrQrlrrrrrrrrrpropertyrrdrrr staticmethodrJrirIrr)r3rrs&    5 c@s~eZdZddZddZeddZddZd d Zd d Z d dZ ddZ ddZ e ddZe ddZedddZdS)rc Cst||kr|Sy |j|Stk r.Yn6tk rbx |jD]}|j|krH|SqHWYnXyd}||}Wn*tk r}z |}d}Wdd}~XYnXt ||r|St d||j f}|dkr|dkr|n|dkrtd|j |f}||_ |dS)Nz%r is not a valid %szDerror in %s._missing_: returned %r instead of None or a valid member) rrprr rnvaluesrcr7 Exceptionr?r=r( __context__)r&r+rrresulteve_excrrrrls6    z Enum.__new__c Cs8x2t|D]"}y|dStk r*Yq Xq W|SdS)Nr)rr )rrrr last_valuerrrr6;s  zEnum._generate_next_value_cCstd||jfdS)Nz%r is not a valid %s)r=r()r&r+rrrr7DszEnum._missing_cCsd|jj|j|jfS)Nz <%s.%s: %r>)r3r(rtrc)r!rrrrdHsz Enum.__repr__cCsd|jj|jfS)Nz%s.%s)r3r(rt)r!rrrreLsz Enum.__str__cs&fddjD}dddg|S)Ncs2g|]*}|jD]}|ddkr|jkr|qqS)rr)rYrn)rRr&ra)r!rr Qs z Enum.__dir__..r3rXr%)r3rV)r!added_behaviorr)r!rrOs z Enum.__dir__cCs0|jtkrt}t|}n |j}|j}|||S)N)rorqr@rcrf)r! format_specr&valrrrrfXs   zEnum.__format__cCs t|jS)N)hashrt)r!rrr__hash__gsz Enum.__hash__cCs|j|jffS)N)r3rc)r!r"rrrr$jszEnum.__reduce_ex__cCs|jS)N)rt)r!rrrrtsz Enum.namecCs|jS)N)rc)r!rrrr+ysz Enum.valueNcsttj|}rtn|fddD}y|jdddWn$tk rp|jdddYnX||||d}t|_||j |||<|S)Ncs g|]}|r||fqSrr)rRr)filtersourcerrrsz!Enum._convert..cSs|d|dfS)Nrrr)trrrzEnum._convert..)rGcSs|dS)Nrr)rrrrrr)r) varsrmoduleskeyssortr _reduce_ex_by_namer$updater)r&rrrrmodule_globalsmembersr)rrr_convert~s     z Enum._convert)N)r(r%r)rlr6rr7rdrerrfrr$rrr+rrrrrr s(    ) metaclassc@s eZdZdS)rN)r(r%r)rrrrrscCs|jS)N)r)r!r"rrrrsrc@sleZdZddZeddZeddZddZd d Zd d Z d dZ ddZ ddZ ddZ ddZdS)rc Csd|s|dk r|SdSxBt|D]6}yt|}PWqtk rRtd|dYqXqWd|dS)NrzInvalid Flag value: %rr)r _high_bitrr )rrrrrhigh_bitrrrr6s zFlag._generate_next_value_cCs.|}|dkr|}||}|dkr*|}|S)Nr)r5)r&r+original_valuepossible_memberrrrr7s zFlag._missing_cCsb|j|d}|dkr^t||\}}|r:td||jft|}d|_||_|j ||}|S)Nz%r is not a valid %s) rpr _decomposer=r(rqrlrtrcrg)r&r+ pseudo_memberr extra_flagsrrrr5s zFlag._create_pseudo_member_cCs8t||js&ddl}|dtddS|j|j@|jkS)NrzHusing non-Flags in containment checks will raise TypeError in Python 3.8rF)r?r3rrrrc)r!otherrrrrrs zFlag.__contains__cCsV|j}|jdk r$d|j|j|jfSt||j\}}d|jddd|D|jfS)Nz <%s.%s: %r>|cSsg|]}t|jp|jqSr)r@rtrc)rRrarrrrsz!Flag.__repr__..)r3rtr(rcrrk)r!r&r uncoveredrrrrds z Flag.__repr__cCs|j}|jdk r d|j|jfSt||j\}}t|dkr^|djdkr^d|j|djfSd|jddd|DfSdS)Nz%s.%srrz%s.%rrcSsg|]}t|jp|jqSr)r@rtrc)rRrarrrrsz Flag.__str__..)r3rtr(rrcrrk)r!r&rrrrrres z Flag.__str__cCs t|jS)N)boolrc)r!rrrrsz Flag.__bool__cCs"t||jstS||j|jBS)N)r?r3NotImplementedrc)r!rrrr__or__s z Flag.__or__cCs"t||jstS||j|j@S)N)r?r3rrc)r!rrrr__and__s z Flag.__and__cCs"t||jstS||j|jAS)N)r?r3rrc)r!rrrr__xor__ s z Flag.__xor__cCsRt|j|j\}}|d}x*|jD] }||kr$|j|j@s$||B}q$W||S)Nr)rr3rc)r!rrinvertedrarrr __invert__s    zFlag.__invert__N)r(r%r)r6rr7r5rrdrerrrrrrrrrrs    c@sPeZdZeddZeddZddZddZd d ZeZ eZ eZ d d Z d S)r cCs*t|tstd||jf||}|S)Nz%r is not a valid %s)r?intr=r(r5)r&r+ new_memberrrrr7s  zIntFlag._missing_cCs|j|d}|dkr|g}t||\}}xL|rvt|}d|}||jkr\||kr\|||| krld}q,||N}q,Wx6t|D]*}t||}d|_||_ |j ||}qW|S)Nrr) rprrrrErrrlrtrcrg)r&r+rneed_to_createrrbit flag_valuerrrr5%s&     zIntFlag._create_pseudo_member_cCs0t||jtfstS||j||jB}|S)N)r?r3rrrc)r!rrrrrrCszIntFlag.__or__cCs,t||jtfstS||j||j@S)N)r?r3rrrc)r!rrrrrIszIntFlag.__and__cCs,t||jtfstS||j||jAS)N)r?r3rrrc)r!rrrrrNszIntFlag.__xor__cCs||j}|S)N)r3rc)r!rrrrrWszIntFlag.__invert__N) r(r%r)rr7r5rrr__ror____rand____rxor__rrrrrr s  cCs |dS)Nr) bit_length)r+rrrr\srcCsbg}x0|jD]"\}}||jkr|||jfqW|r^ddd|D}td||f|S)Nz, cSsg|]\}}d||fqS)z%s -> %sr)rRaliasrrrrrhszunique..z duplicate values found in %r: %s)rrZrrErkr=) enumeration duplicatesrr alias_detailsrrrr `s  cCs|}|dk}|r*ddt|jD}nddt|jD}g}x4|D],\}}|rL||@|krL||||M}qLW|s||jkr||j||jddddt|d kr|dj|kr|d||fS) NrcSs"g|]\}}|jdk r||fqS)N)r)rRr\rarrrrxsz_decompose..cSs*g|]"\}}|jdk st|r||fqS)N)r _power_of_two)rRr\rarrrrscSs|jS)N)rc)rarrrrrz_decompose..T)rGreverser)rCrprZrErrr+rh)flagr+ not_coverednegativeflags_to_checkrrrrrrrms$  rcCs|dkr dS|dt|kS)NrFr)r)r+rrrrsr)rtypesrr _collectionsr ImportError collections__all__rrrr'rqr*r dictr,rrrrrrrr rr rrrrrrs<DqA #