@@ -35,18 +35,24 @@ def get_parent_ignoring_unary(node: ast.AST) -> ast.AST | None:
3535 node = parent
3636
3737
38- def count_unary_operator (
38+ def count_consecutive_unary_operator (
3939 node : ast .AST ,
4040 operator : type [ast .unaryop ],
41- amount : int = 0 ,
41+ counter : int = 0 ,
42+ max_counter : int = 0 ,
4243) -> int :
43- """Returns amount of unary operators matching input ."""
44+ """Counts the maximum number of consecutive identical unary operators ."""
4445 parent = get_parent (node )
45- if parent is None or not isinstance (parent , ast .UnaryOp ):
46- return amount
46+ if not isinstance (parent , ast .UnaryOp ):
47+ return max (counter , max_counter )
48+
4749 if isinstance (parent .op , operator ):
48- return count_unary_operator (parent , operator , amount + 1 )
49- return count_unary_operator (parent , operator , amount )
50+ return count_consecutive_unary_operator (
51+ parent , operator , counter + 1 , max_counter
52+ )
53+ if counter > max_counter :
54+ return count_consecutive_unary_operator (parent , operator , 0 , counter )
55+ return count_consecutive_unary_operator (parent , operator , 0 , max_counter )
5056
5157
5258def get_reduced_unary_operators (
0 commit comments