o ?Og@sddlZddlmZmZgdZddZddZdd Zd d Zd d Z e Z GdddZ Gddde ZdZGdddeZGdddedZGdddeeZddZGdddeZGdddeeZdd Zd!d"Zd#d$ZdS)%N)MappingProxyTypeDynamicClassAttribute)EnumMetaEnumIntEnumFlagIntFlagautouniquecCs t|dpt|dpt|dS)N__get____set__ __delete__)hasattr)objr+/opt/alt/python310/lib64/python3.10/enum.py_is_descriptor s  rcCsN t|dko&|dd|ddkodkno&|ddko&|ddkS)N___lennamerrr _is_dunders &  rcCsN t|dko&|d|dkodkno&|dddko&|dddkS)Nrrrrrrrrr _is_sunder!s r cCs^d|f}t|}t||kr-||r-|||ddgkr-|ddks+|ddkr-dSdS)Nz_%s__rrrrTF)r startswith)cls_namerpatternpat_lenrrr _is_private,s  r%cCs dd}||_d|_dS)NcSs td|)Nz%r cannot be pickled) TypeErrorselfprotorrr_break_on_call_reduce>s z6_make_class_unpicklable.._break_on_call_reducez ) __reduce_ex__ __module__)clsr*rrr_make_class_unpicklable:s r.c@seZdZ eZdS)r N)__name__r, __qualname__ _auto_nullvaluerrrrr Dsr cs*eZdZ fddZfddZZS) _EnumDictcs&tg|_g|_g|_d|_dS)NF)super__init__ _member_names _last_values_ignore _auto_calledr( __class__rrr5Rs  z_EnumDict.__init__cs t|j|rddl}|jd|ftddt|r`|dvr"td|dkr4|jr-tdt |d |n|d kr_t |t rF| d d  }nt|}||_t|t|j@}|r_td |fn[t|rk|dkrjd}nP||jvrvtd|||jvr|n?t|s||vrtd|||ft |tr|jtkr||dt|j|jdd|_d|_|j}|j||j|t||dS)Nrz@private variables, such as %r, will be normal attributes in 3.11r stacklevel)_order__create_pseudo_member__generate_next_value_ _missing__ignore_z(_names_ are reserved for future Enum userAz4_generate_next_value_ must be defined before members_generate_next_valuerC, z-_ignore_ cannot specify already set names: %r __order__r?zAttempted to reuse key: %rz%r already defined as: %rrT)r% _cls_namewarningswarnDeprecationWarningr ValueErrorr9r&setattr isinstancestrreplacesplitlistr8setr6rrr r2r1rDrr7appendr4 __setitem__)r(keyr2rIalreadyr;rrrUYsl          z_EnumDict.__setitem__)r/r,r0r5rU __classcell__rrr;rr3Ks r3cseZdZ eddZfddZddZd,ddddd d d Zd d ZfddZ ddZ ddZ ddZ ddZ ddZeddZddZddZfd d!Zddddd d"d#Zd,d$d%Zed&d'Zed(d)Zed*d+ZZS)-rcKsD|||t}||_|||\}}|dur t|dd|d<|S)NrA)_check_for_existing_membersr3rH _get_mixins_getattr)metaclsr-baseskwds enum_dict member_type first_enumrrr __prepare__s zEnumMeta.__prepare__c sdgdd}|D]}|dq|||\}||\}} } fddjD} jD]} | =q7dd} t| ddh@}|rWtdd |d vr_d d <t j |||fi|}g|_ i|_ |_d d |D}i|_d vrՈturd}tfdd|Dsdvrt|n6d}|D]+}|jD]turqtfdd|Drd}n djvrd}nq|durnq|rt|jD]}| |}t|ts|f}n|}tur|f}| s||}t|ds||_n||g|R}t|dstur||_n||_|j}||_||_|j||j D]\} }|j|jkr=|}nq.|j |||vrPt|||||j |<z||j|<WqtyfYqwdD]+} | vrrqit || }t | d}t || d}|dur||urt|| |qit!dur| r||_"t!j |_ | durt| t#r| $dd%} | |j krtd|S)NrCcsi|]}||qSrr).0k) classdictrr sz$EnumMeta.__new__..r?mrozInvalid enum member name: {0}rE__doc__zAn enumeration.cSs.h|]}|jD] \}}t|tr |q qSr)__dict__itemsrNr)rccrdvrrr sz#EnumMeta.__new__..r+)__getnewargs_ex____getnewargs__r+ __reduce__c3|]}|jvVqdSNrjrcm)r`rr z#EnumMeta.__new__..__new__c3rrrsrtru)baserrrwrxFT_value_)__repr____str__ __format__r+rFz#member order does not match _order_)& setdefaultrTpoprZ _find_new_r6rSrLformatjoinr4ry_member_names_ _member_map_ _member_type_rg_value2member_map_objectanyr.__mro__rjrNtuplerr{_name_ __objclass__r5rkrMr&r[r__new_member__rOrPrQ)r\r-r]rer^ignorerVrarysave_newuse_args enum_membersrr? invalid_names enum_classdynamic_attributesmethodssabotagechain member_namer2args enum_membercanonical_member class_method obj_method enum_methodr;)rzrer`rrys                           zEnumMeta.__new__cCs dS)NTrr:rrr__bool__aszEnumMeta.__bool__NrmodulequalnametypestartcCs, |dur |||S|j||||||dS)Nr)ry_create_)r-r2namesrrrrrrr__call__gs zEnumMeta.__call__cCsRt|tsddl}|jdtddtdt|j|jjft||o(|j |j vS)Nrzpin 3.12 __contains__ will no longer raise TypeError, but will return True if obj is a member or a member's valuerr=3unsupported operand type(s) for 'in': '%s' and '%s') rNrrIrJrKr&rr0r<rr)r-rrIrrr __contains__s zEnumMeta.__contains__cs(||jvr td|jt|dS)Nz%s: cannot delete Enum member.)rAttributeErrorr/r4 __delattr__)r-attrr;rrrs zEnumMeta.__delattr__cCsgd|jS)N)r<ri __members__r,rr:rrr__dir__szEnumMeta.__dir__cCs8 t|r t|z|j|WStyt|dwrs)rrrKeyErrorr-rrrr __getattr__s   zEnumMeta.__getattr__cCs |j|Srsrrrrr __getitem__ zEnumMeta.__getitem__cs fddjDS)Nc3|]}j|VqdSrsrrcrr-rrrwrxz$EnumMeta.__iter__..rrrrr__iter__szEnumMeta.__iter__cC t|jSrs)rrrrrr__len__rzEnumMeta.__len__cCs t|jSrs)rrrrrrrs zEnumMeta.__members__cCs d|jS)Nz )r/rrrrr|rzEnumMeta.__repr__cs fddtjDS)Nc3rrsrrrrrrwrxz(EnumMeta.__reversed__..)reversedrrrrr __reversed__szEnumMeta.__reversed__cs2 |jdi}||vrtdt||dS)NrzCannot reassign members.)rjgetrr4 __setattr__)r-rr2 member_mapr;rrrs zEnumMeta.__setattr__c Csh |j}|dur |fn||f}|||\} } |||} t|tr*|dd}t|ttfrb|rbt|dtrb|g} }g} t | D]\}}| |||| dd}| || ||fqE|D]}t|trs|||}}n|\}}|| |<qd| |||| }|durz t djd}Wn tttfyYnw|durt|n||_|dur||_|S)NrErFrrr/)r<rZrbrNrOrPrQrrR enumeraterArTrysys _getframe f_globalsrrLrr.r,r0)r- class_namerrrrrr\r]rrareoriginal_names last_valuescountrr2itemr member_valuerrrrrs@         zEnumMeta._create_cs ttj|}|rt|}n|}fdd|D}z |jdddWnty7|jdddYnw||||d}t|_||j |||<|S)Ncs g|] \}}|r||fqSrr)rcrr2filterrr )s z&EnumMeta._convert_..cSs|d|dfS)Nrrrtrrr/sz$EnumMeta._convert_..)rVcSs|dSNrrrrrrr2s)r) varsrmodulesrksortr&_reduce_ex_by_namer+updater)r-rrrsourcemodule_globalsmembersrrr _convert_s$    zEnumMeta._convert_cCs<|D]}|jD]}t|tr|jrtd||jfqqdS)Nz %s: cannot extend enumeration %r)r issubclassrrr&r/)rr]rrzrrrrY9s z$EnumMeta._check_for_existing_memberscsV |sttfSfdd}|d}t|tstd||pt}|jr'td||fS)Ncst}|D]:}d}|jD]2}|turq t|tr&|jtur%||jnq d|jvr:t|tr1q ||p6|n|p=|}q qt|dkrNt d|f|rT| SdS)Nryrz%r: too many data types: %r) rSrrrrraddrjrr&r)r] data_typesr candidaterzrrr_find_data_typeNs.        z.EnumMeta._get_mixins_.._find_data_typerzZnew enumerations should be created as `EnumName([mixin_type, ...] [data_type,] enum_type)`zCannot extend enumerations)rrrr&r)rr]rrar`rrrrZCs   zEnumMeta._get_mixins_c Cs |dd}|du}|dur9dD]$}||fD]}t||d}|ddjtjtjhvr.|}nq|dur5nqtj}|tjurAd}nd}|||fS)Nry)rryFT)rr[ryrr) rer`raryrmethodpossibletargetrrrrrrs0     zEnumMeta._find_new_rs)r/r,r0 classmethodrbryrrrrrrrrrpropertyrr|rrrr staticmethodrYrZrrXrrr;rrs8  .%     5!  .rc@sreZdZ ddZddZeddZddZd d Zd d Z d dZ ddZ ddZ e ddZe ddZdS)rc Cst||ur|Sz|j|WStyYnty2|jD] }|j|kr/|YSq"Ynwz d}||}WntyR}z |}d}WYd}~nd}~wwz6t ||r`|Wd}d}St d||j f}|durs|durs||durtd|j |f}t |t s||_ |d}d}w)N%r is not a valid %szDerror in %s._missing_: returned %r instead of None or a valid member)rrrr&rvaluesr{rB ExceptionrNrLr0r/ __context__)r-r2memberexcresulteve_excrrrrysP        z Enum.__new__c Cs4 t|D]}z|dWStyYqw|SNr)rr&)rrrr last_valuerrrrAs  zEnum._generate_next_value_cCsdSrsr)r-r2rrrrBszEnum._missing_cCsd|jj|j|jfS)N <%s.%s: %r>)r<r/rr{r:rrrr|sz Enum.__repr__cCsd|jj|jfS)N%s.%s)r<r/rr:rrrr}sz Enum.__str__cs6 fddjDddjD}gd|S)Ncs2g|]}|jD]}|ddkr|jvr|qqSrr)rjr)rcr-rvr:rrrsz Enum.__dir__..cSsg|] }|ddkr|qSrrrurrrr)r<rir,)r<rgrj)r(added_behaviorrr:rrs  z Enum.__dir__cCsL t|jtjtjfv}|jtus|rt}t|}n|j}|j}|||Srs) rr}rrrrrOr{r~)r( format_specstr_overriddenr-valrrrr~s  zEnum.__format__cCrrs)hashrr:rrr__hash__rz Enum.__hash__cCs|j|jffSrsr<r{r'rrrr+szEnum.__reduce_ex__cC |jSrs)rr:rrrrz Enum.namecCrrsr{r:rrrr2!rz Enum.valueN)r/r,r0ryrArrBr|r}rr~rr+rrr2rrrrrs .   r) metaclassc@s eZdZdS)rN)r/r,r0rrrrr'srcC|jSrsrr'rrrr+src@sneZdZ ddZeddZeddZddZd d Zd d Z d dZ ddZ ddZ ddZ ddZdS)rc CsZ |s |dur |SdSt|D]}zt|}Wnty&td|dwd|dS)NrzInvalid Flag value: %rr)r _high_bitrr&)rrrrrhigh_bitrrrrA3s   zFlag._generate_next_value_cCs0 |}|dkr |}||}|dkr|}|Sr)r@)r-r2original_valuepossible_memberrrrrBFs zFlag._missing_cCsd |j|d}|dur0t||\}}|rtd||jft|}d|_||_|j ||}|SNr) rr _decomposerLr0rryrr{r)r-r2 pseudo_memberr extra_flagsrrrr@Ss zFlag._create_pseudo_member_cCs: t||jstdt|j|jjf|j|j@|jkS)Nr)rNr<r&rr0r{r(otherrrrrgs zFlag.__contains__cCsV|j}|jdurd|j|j|jfSt||j\}}d|jddd|D|jfS)Nr|cSg|] }t|jp |jqSrrOrr{rurrrrxrz!Flag.__repr__..)r<rr/r{rrr(r-r uncoveredrrrr|qs z Flag.__repr__cCs||j}|jdurd|j|jfSt||j\}}t|dkr/|djdur/d|j|djfSd|jddd|DfS)Nrrrz%s.%rr cSrrrrurrrrrz Flag.__str__..)r<rr/rr{rrrrrrr}|s z Flag.__str__cCrrs)boolr{r:rrrrrz Flag.__bool__cCs"t||jstS||j|jBSrsrNr<NotImplementedr{r rrr__or__ z Flag.__or__cCs"t||jstS||j|j@Srsrr rrr__and__rz Flag.__and__cCs"t||jstS||j|jASrsrr rrr__xor__rz Flag.__xor__cCsNt|j|j\}}|d}|jD]}||vr!|j|j@s!||B}q||Sr)rr<r{)r(rrinvertedrvrrr __invert__s   zFlag.__invert__N)r/r,r0rArrBr@rr|r}rrrrrrrrrr.s      rc@sReZdZ eddZeddZddZddZd d ZeZ eZ eZ d d Z d S)rcCs, t|tstd||jf||}|Sr)rNintrLr0r@)r-r2 new_memberrrrrBs   zIntFlag._missing_cCs |j|d}|durV|g}t||\}}|r %sr)rcaliasrrrrrrzunique..z duplicate values found in %r: %s)rrkrrTrrL) enumeration duplicatesrr alias_detailsrrrr s  r c Cs |}|dk}g}|D]}|j}|r"||@|kr"||||M}q |sH|}|rHdt|}||jvrA||j|||M}||M}|s)|sW||jvrW||j||jddddt|dkrr|dj|krr|d||fS)NrrcSrrsr)rvrrrrsz_decompose..T)rVreverser)r2rTrrrrr) flagr2 not_coverednegativerrrtmprrrrrs2       r)rtypesrr__all__rrr r%r.rr1r dictr3rrrrrrrrrr rrrrrs4    TvI