bgdZddlmZddlmZddlmZddlm Z ddl m Z m Z ddl mZerddlmZGd d e ZddZdS)z,Checks for magic values instead of literals.) annotations)match) TYPE_CHECKING)nodes) BaseCheckerutils)HIGH)PyLinterceZdZdZdZddiZddddd d ffZdfd ZddZd dZ d!dZ d"dZ e d#dZ ejdd!dZxZS)$MagicValueCheckerz$Checks for constants in comparisons.z magic-valueR2004)z;Consider using a named constant or an enum instead of '%s'.magic-value-comparisonzUsing named constants instead of magic values helps improve readability and maintainability of your code, try to avoid them in comparisons.zvalid-magic-values)r__main__csvzzList of valid magic values that `magic-value-compare` will not detect. Supports integers, floats, negative numbers, for empty string enter ``''``, for backslash values just use one backslash e.g \n.)defaulttypemetavarhelplinterr returnNonecZt|d|_dS)zInitialize checker instance.rN)super__init__valid_magic_vals)selfr __class__s n/builddir/build/BUILD/cloudlinux-venv-1.0.7/venv/lib/python3.11/site-packages/pylint/extensions/magic_value.pyrzMagicValueChecker.__init__0s, '''9;cr1tfdjjjD_dSjjj_dS)Nc3BK|]}|VdSN)_parse_rcfile_magic_numbers).0valuer!s r# z)MagicValueChecker.open..8sE**0077******r$)_magic_vals_ext_configuredtuplerconfigvalid_magic_valuesr r!s`r#openzMagicValueChecker.open5sv  * * , , J$)****![/B***%%D ! ! ! %)K$6$ID ! ! !r$boolcLt|jjjt Sr') isinstancerr.r/r-r0s r#r,z,MagicValueChecker._magic_vals_ext_configured?sdk0CUKKKKr$node nodes.Comparecg}d}d}|j}|t|tj|jdd}|t|tjt |rdSd}||r||r|j}n$||r||r|j}| | d||tdSdS)z Magic values in any side of the comparison should be avoided, Detects comparisons that `comparison-of-constants` core checker cannot detect. rrNr)r5args confidence) leftappendr4rConstopsall_is_magic_valuer* add_messager )r!r5const_operands LEFT_OPERAND RIGHT_OPERAND left_operand right_operand operand_values r#_check_constants_comparisonz-MagicValueChecker._check_constants_comparisonBs   y ju{CCDDD A j DDEEE ~    F , ' 0D,@,@,N,N 0(.MM M * 0t/C/CM/R/R 0)/M  $   (#       % $r$ nodes.ConstcHtj| o |j|jvSr')ris_singleton_constr*r r!r5s r#r?z!MagicValueChecker._is_magic_valuebs*,T222 Jt4 5 r$ parsed_valstr float | strc|d}|dr|dr |ddSt d|}|rt |n|S)Nunicode_escape'rrz[-+]?\d+(\.0*)?$)encodedecode startswithendswith regex_matchfloat)rL is_numbers r#r(z-MagicValueChecker._parse_rcfile_magic_numbersgs&&((//0@AA   % % $**=*=c*B*B $ad# # 3Z@@ $-=uZ   :=r$zmagic-comparisonc0||dSr')rGrKs r# visit_comparezMagicValueChecker.visit_compareqs ((.....r$rr rr)rr)rr2)r5r6rr)r5rHrr2)rLrMrrN)__name__ __module__ __qualname____doc__namemsgsoptionsrr1r,rGr? staticmethodr(ronly_required_for_messagesrZ __classcell__)r"s@r#r r s).. D  D !5-H     G<<<<<< JJJJLLLL@    >>>\>&U%&899///:9/////r$r rr rrcJ|t|dSr')register_checkerr rs r#registerrhvs% -f5566666r$Nr[)r_ __future__rrerrVtypingrastroidrpylint.checkersrrpylint.interfacesr pylint.lintr r rhrr$r#rps 32""""""###### ........""""""%$$$$$$^/^/^/^/^/ ^/^/^/B777777r$