bg2ddlmZddlZddlmZmZmZmZddlm Z ddl m Z m Z ddl mZmZddlmZerddlmZejd krdd lmZndd lmZGd d e ZddZdS)) annotationsN) TYPE_CHECKINGTupleTypecast)nodes) BaseCheckerutils)only_required_for_messages safe_infer) INFERENCE)PyLinter) ) TypeGuardc^eZdZdZdZddddddd d ifd Zd d ddddffZd.dZedd/dZ edd0dZ edd1dZ edd2d Z d/d!Z d2d"Zed3d(Zed4d*Zedd5d,Zd-S)6CodeStyleCheckeramCheckers that can improve code consistency. As such they don't necessarily provide a performance benefit and are often times opinionated. Before adding another checker here, consider this: 1. Does the checker provide a clear benefit, i.e. detect a common issue or improve performance => it should probably be part of the core checker classes 2. Is it something that would improve code consistency, maybe because it's slightly better with regard to performance and therefore preferred => this is the right place 3. Everything else should go into another extension code_style)z= 3.8``.z+Use '%s' to do an augmented assign directlyconsider-using-augmented-assignzEmitted when an assignment is referring to the object that it is assigning to. This can be changed to be an augmented assign. Disabled by default!default_enabledF)R6101R6102R6103R6104zmax-line-length-suggestionsintrzzMax line length for which to sill emit suggestions. Used to prevent optional suggestions which would get split by a code formatter (e.g., black). Will default to the setting for ``max-line-length``.)typedefaultmetavarhelpreturnNonec|jjj}|dk|_|jjjp|jjj|_dS)N)r)linterconfig py_version _py38_plusmax_line_length_suggestionsmax_line_length _max_length)selfr)s m/builddir/build/BUILD/cloudlinux-venv-1.0.7/venv/lib/python3.11/site-packages/pylint/extensions/code_style.pyopenzCodeStyleChecker.openZsD['2 $. K  : 2{!1 rnode nodes.Dictc0||dSN))_check_dict_consider_namedtuple_dataclassr.r2s r/ visit_dictzCodeStyleChecker.visit_dictbs 66t<<<<rDict.0_ dict_values r/ zMCodeStyleChecker._check_dict_consider_namedtuple_dataclass..sC' ' 3@1jJz5: . .' ' ' ' ' ' r1z builtins.strc3bK|]*\}}t||fV+dSr5)r as_string)rRkeyrSs r/rUzMCodeStyleChecker._check_dict_consider_namedtuple_dataclass..s9VV63499cmmoo6VVVVVVr1rrr<c3hK|]-\}}t|tjtjfV.dSr5)r>rr@rrQs r/rUzMCodeStyleChecker._check_dict_consider_namedtuple_dataclass..sM' ' : zEJ #< = =' ' ' ' ' ' r1c3JK|]}t|tjVdSr5rO)rRentrys r/rUzMCodeStyleChecker._check_dict_consider_namedtuple_dataclass..s.RRz%44RRRRRRr1)r>parentrAssign AnnAssignModuletarget AssignNamer is_assign_name_annotated_withlenitemsallrrNodeNGstrsetrrPrrWr Constpytypeaddappendtupleintersection_updaterAelts) r.r2 KeyTupleT keys_checkedrSrTrX key_tupleinferred key_tupleskeys_intersectionsub_key_tuples list_lengths r/r6z:CodeStyleChecker._check_dict_consider_namedtuple_dataclassus t{U\5?$C D D 4;-u|<< $+u77 4;-u/?@@  3DK4FPP  F tz??Q  3' ' DHJ' ' ' $ $ d5<0#56I,/55L!% 0 0 :!%*j99 (. 0 0FC!%cCMMOO >> x = 2 >>> if x: >>> ... Can be replaced by: >>> if (x := 2): >>> ... Note: Assignment expressions were added in Python 3.8 NnotrM(z := )zif :r)r2args)r>testrNameUnaryOpopoperandCompareleftrcopsprevious_siblingr_check_prev_sibling_to_if_stmtname(_check_ignore_assignment_expr_suggestionrWreplacevalue col_offsetr-rA)r.r2 node_name prev_siblingtest_str suggestions r/rIz6CodeStyleChecker._check_consider_using_assignment_exprs(, di , ,  II ty%- 0 0  %%49,ej99& )II ty%- 0 0 49>5:66 DIM""a'' II F,,..  : : ).     HHin y**,,44IINII (:(D(D(F(FIIIH +x***J+ OOdo58HHHz??T%555   0 ]      3  r1rnodes.NodeNG | Noner str | None)TypeGuard[nodes.Assign | nodes.AnnAssign]c||j|jz dkrdSt|tjrUt |jdkr=t|jdtjr|jdj|krdSt|tj r1t|j tjr|j j|krdSdS)z}Check if previous sibling is an assignment with the same name. Ignore statements which span multiple lines. NrFrMT) tolineno fromlinenor>rr]rctargetsrarr^r`)rrs r/rz/CodeStyleChecker._check_prev_sibling_to_if_stmts  <#8<;R#RVW#W#W5 |U\ 2 2 L())Q..</2E4DEE/$Q',444 |U_ 5 5 <.0@AA #(D004ur1boolcVt|jtjrd}|}t |jdkr3t|jdtjr|jd}nt|tjr|}|t|jtjr9t|jjtj r|jjj |ks/t|jtj r|jj |krdSdS)zReturn True if suggestion for assignment expr should be ignored. E.g., in cases where a match statement would be a better fit (multiple conditions). NrMrTF) r>r~rr next_siblingrcorelseIfrrr)r2r next_if_noders r/rz9CodeStyleChecker._check_ignore_assignment_expr_suggestions di / / ,0L,,..L4;1$$DKNEH)M)M$#{1~ L%(33 ,+ (|0%-@@)#<#4#95:FF)%).3t;;!,"3UZ@@<$).$66tur1 nodes.Assignctj|\}}|r/|d|d||j|jt dSdS)Nr=)r}r2liner confidence)r is_augmented_assignrAlinenorr )r.r2is_augrs r/ visit_assignzCodeStyleChecker.visit_assign:sk.t44      1XXX[?$        r1N)r#r$)r2r3r#r$)r2r9r#r$)r2rDr#r$)r2rGr#r$)rrrrr#r)r2rGrrr#r)r2rr#r$)__name__ __module__ __qualname____doc__rmsgsoptionsr0r r8rBrFrJr6rI staticmethodrrrr1r/rrs   D    : - #"5   )  DB *"K   G"      HII===JI=  677EEE87E  677EEE87E  @AA===BA=FFFFPAAAAF\2\>  ABB   CB   r1rr'rr#r$cJ|t|dSr5)register_checkerr)r's r/registerrHs% ,V4455555r1)r'rr#r$) __future__rsystypingrrrrastroidrpylint.checkersr r pylint.checkers.utilsr r pylint.interfacesr pylint.lintr version_infortyping_extensionsrrrr1r/rs: #""""" 333333333333........HHHHHHHH''''''%$$$$$$w       ++++++lllll{lll^ 666666r1