---
source: crates/ruff_linter/src/rules/ruff/mod.rs
---
RUF052 [*] Local dummy variable `_var` is accessed
  --> RUF052_0.py:92:9
   |
90 | class Class_:
91 |     def fun(self):
92 |         _var = "method variable" # [RUF052]
   |         ^^^^
93 |         return _var
   |
help: Remove leading underscores
   |
91 |     def fun(self):
   -         _var = "method variable" # [RUF052]
   -         return _var
92 +         var = "method variable" # [RUF052]
93 +         return var
94 |
   |
note: This is an unsafe fix and may change runtime behavior

RUF052 [*] Local dummy variable `_list` is accessed
   --> RUF052_0.py:99:5
    |
 98 | def fun():
 99 |     _list = "built-in" # [RUF052]
    |     ^^^^^
100 |     return _list
    |
help: Prefer using trailing underscores to avoid shadowing a built-in
    |
98  | def fun():
    -     _list = "built-in" # [RUF052]
    -     return _list
99  +     list_ = "built-in" # [RUF052]
100 +     return list_
101 |
    |
note: This is an unsafe fix and may change runtime behavior

RUF052 [*] Local dummy variable `_x` is accessed
   --> RUF052_0.py:106:5
    |
104 | def fun():
105 |     global x
106 |     _x = "shadows global" # [RUF052]
    |     ^^
107 |     return _x
    |
help: Prefer using trailing underscores to avoid shadowing a variable
    |
105 |     global x
    -     _x = "shadows global" # [RUF052]
    -     return _x
106 +     x_ = "shadows global" # [RUF052]
107 +     return x_
108 |
    |
note: This is an unsafe fix and may change runtime behavior

RUF052 [*] Local dummy variable `_x` is accessed
   --> RUF052_0.py:113:5
    |
111 |   def bar():
112 |     nonlocal x
113 |     _x = "shadows nonlocal" # [RUF052]
    |     ^^
114 |     return _x
115 |   bar()
    |
help: Prefer using trailing underscores to avoid shadowing a variable
    |
112 |     nonlocal x
    -     _x = "shadows nonlocal" # [RUF052]
    -     return _x
113 +     x_ = "shadows nonlocal" # [RUF052]
114 +     return x_
115 |   bar()
    |
note: This is an unsafe fix and may change runtime behavior

RUF052 [*] Local dummy variable `_x` is accessed
   --> RUF052_0.py:120:5
    |
118 | def fun():
119 |     x = "local"
120 |     _x = "shadows local" # [RUF052]
    |     ^^
121 |     return _x
    |
help: Prefer using trailing underscores to avoid shadowing a variable
    |
119 |     x = "local"
    -     _x = "shadows local" # [RUF052]
    -     return _x
120 +     x_ = "shadows local" # [RUF052]
121 +     return x_
122 |
    |
note: This is an unsafe fix and may change runtime behavior

RUF052 Local dummy variable `_GLOBAL_1` is accessed
   --> RUF052_0.py:128:5
    |
127 | def unfixables():
128 |     _GLOBAL_1 = "foo"
    |     ^^^^^^^^^
129 |     # unfixable because the rename would shadow a global variable
130 |     print(_GLOBAL_1)  # [RUF052]
    |
help: Prefer using trailing underscores to avoid shadowing a variable

RUF052 Local dummy variable `_local` is accessed
   --> RUF052_0.py:136:5
    |
135 |     # unfixable because the rename would shadow a local variable
136 |     _local = "local3"  # [RUF052]
    |     ^^^^^^
137 |     print(_local)
    |
help: Prefer using trailing underscores to avoid shadowing a variable

RUF052 Local dummy variable `_GLOBAL_1` is accessed
   --> RUF052_0.py:140:9
    |
139 |     def nested():
140 |         _GLOBAL_1 = "foo"
    |         ^^^^^^^^^
141 |         # unfixable because the rename would shadow a global variable
142 |         print(_GLOBAL_1)  # [RUF052]
    |
help: Prefer using trailing underscores to avoid shadowing a variable

RUF052 Local dummy variable `_local` is accessed
   --> RUF052_0.py:145:9
    |
144 |         # unfixable because the rename would shadow a variable from the outer function
145 |         _local = "local4"
    |         ^^^^^^
146 |         print(_local)
    |
help: Prefer using trailing underscores to avoid shadowing a variable

RUF052 [*] Local dummy variable `_P` is accessed
   --> RUF052_0.py:153:5
    |
151 |     from collections import namedtuple
152 |
153 |     _P = ParamSpec("_P")
    |     ^^
154 |     _T = TypeVar(name="_T", covariant=True, bound=int|str)
155 |     _NT = NamedTuple("_NT", [("foo", int)])
    |
help: Remove leading underscores
    |
152 |
    -     _P = ParamSpec("_P")
153 +     P = ParamSpec("P")
154 |     _T = TypeVar(name="_T", covariant=True, bound=int|str)
--------------------------------------------------------------------------------
161 |
    -     print(_T, _P, _NT, _E, _NT2, _NT3, _DynamicClass, _NotADynamicClass)
162 +     print(_T, P, _NT, _E, _NT2, _NT3, _DynamicClass, _NotADynamicClass)
163 |
    |
note: This is an unsafe fix and may change runtime behavior

RUF052 [*] Local dummy variable `_T` is accessed
   --> RUF052_0.py:154:5
    |
153 |     _P = ParamSpec("_P")
154 |     _T = TypeVar(name="_T", covariant=True, bound=int|str)
    |     ^^
155 |     _NT = NamedTuple("_NT", [("foo", int)])
156 |     _E = Enum("_E", ["a", "b", "c"])
    |
help: Remove leading underscores
    |
153 |     _P = ParamSpec("_P")
    -     _T = TypeVar(name="_T", covariant=True, bound=int|str)
154 +     T = TypeVar(name="T", covariant=True, bound=int|str)
155 |     _NT = NamedTuple("_NT", [("foo", int)])
--------------------------------------------------------------------------------
161 |
    -     print(_T, _P, _NT, _E, _NT2, _NT3, _DynamicClass, _NotADynamicClass)
162 +     print(T, _P, _NT, _E, _NT2, _NT3, _DynamicClass, _NotADynamicClass)
163 |
    |
note: This is an unsafe fix and may change runtime behavior

RUF052 [*] Local dummy variable `_NT` is accessed
   --> RUF052_0.py:155:5
    |
153 |     _P = ParamSpec("_P")
154 |     _T = TypeVar(name="_T", covariant=True, bound=int|str)
155 |     _NT = NamedTuple("_NT", [("foo", int)])
    |     ^^^
156 |     _E = Enum("_E", ["a", "b", "c"])
157 |     _NT2 = namedtuple("_NT2", ['x', 'y', 'z'])
    |
help: Remove leading underscores
    |
154 |     _T = TypeVar(name="_T", covariant=True, bound=int|str)
    -     _NT = NamedTuple("_NT", [("foo", int)])
155 +     NT = NamedTuple("NT", [("foo", int)])
156 |     _E = Enum("_E", ["a", "b", "c"])
--------------------------------------------------------------------------------
161 |
    -     print(_T, _P, _NT, _E, _NT2, _NT3, _DynamicClass, _NotADynamicClass)
162 +     print(_T, _P, NT, _E, _NT2, _NT3, _DynamicClass, _NotADynamicClass)
163 |
    |
note: This is an unsafe fix and may change runtime behavior

RUF052 [*] Local dummy variable `_E` is accessed
   --> RUF052_0.py:156:5
    |
154 |     _T = TypeVar(name="_T", covariant=True, bound=int|str)
155 |     _NT = NamedTuple("_NT", [("foo", int)])
156 |     _E = Enum("_E", ["a", "b", "c"])
    |     ^^
157 |     _NT2 = namedtuple("_NT2", ['x', 'y', 'z'])
158 |     _NT3 = namedtuple(typename="_NT3", field_names=['x', 'y', 'z'])
    |
help: Remove leading underscores
    |
155 |     _NT = NamedTuple("_NT", [("foo", int)])
    -     _E = Enum("_E", ["a", "b", "c"])
156 +     E = Enum("E", ["a", "b", "c"])
157 |     _NT2 = namedtuple("_NT2", ['x', 'y', 'z'])
--------------------------------------------------------------------------------
161 |
    -     print(_T, _P, _NT, _E, _NT2, _NT3, _DynamicClass, _NotADynamicClass)
162 +     print(_T, _P, _NT, E, _NT2, _NT3, _DynamicClass, _NotADynamicClass)
163 |
    |
note: This is an unsafe fix and may change runtime behavior

RUF052 [*] Local dummy variable `_NT2` is accessed
   --> RUF052_0.py:157:5
    |
155 |     _NT = NamedTuple("_NT", [("foo", int)])
156 |     _E = Enum("_E", ["a", "b", "c"])
157 |     _NT2 = namedtuple("_NT2", ['x', 'y', 'z'])
    |     ^^^^
158 |     _NT3 = namedtuple(typename="_NT3", field_names=['x', 'y', 'z'])
159 |     _DynamicClass = type("_DynamicClass", (), {})
    |
help: Remove leading underscores
    |
156 |     _E = Enum("_E", ["a", "b", "c"])
    -     _NT2 = namedtuple("_NT2", ['x', 'y', 'z'])
157 +     NT2 = namedtuple("NT2", ['x', 'y', 'z'])
158 |     _NT3 = namedtuple(typename="_NT3", field_names=['x', 'y', 'z'])
159 |     _DynamicClass = type("_DynamicClass", (), {})
160 |     _NotADynamicClass = type("_NotADynamicClass")
161 |
    -     print(_T, _P, _NT, _E, _NT2, _NT3, _DynamicClass, _NotADynamicClass)
162 +     print(_T, _P, _NT, _E, NT2, _NT3, _DynamicClass, _NotADynamicClass)
163 |
    |
note: This is an unsafe fix and may change runtime behavior

RUF052 [*] Local dummy variable `_NT3` is accessed
   --> RUF052_0.py:158:5
    |
156 |     _E = Enum("_E", ["a", "b", "c"])
157 |     _NT2 = namedtuple("_NT2", ['x', 'y', 'z'])
158 |     _NT3 = namedtuple(typename="_NT3", field_names=['x', 'y', 'z'])
    |     ^^^^
159 |     _DynamicClass = type("_DynamicClass", (), {})
160 |     _NotADynamicClass = type("_NotADynamicClass")
    |
help: Remove leading underscores
    |
157 |     _NT2 = namedtuple("_NT2", ['x', 'y', 'z'])
    -     _NT3 = namedtuple(typename="_NT3", field_names=['x', 'y', 'z'])
158 +     NT3 = namedtuple(typename="NT3", field_names=['x', 'y', 'z'])
159 |     _DynamicClass = type("_DynamicClass", (), {})
160 |     _NotADynamicClass = type("_NotADynamicClass")
161 |
    -     print(_T, _P, _NT, _E, _NT2, _NT3, _DynamicClass, _NotADynamicClass)
162 +     print(_T, _P, _NT, _E, _NT2, NT3, _DynamicClass, _NotADynamicClass)
163 |
    |
note: This is an unsafe fix and may change runtime behavior

RUF052 [*] Local dummy variable `_DynamicClass` is accessed
   --> RUF052_0.py:159:5
    |
157 |     _NT2 = namedtuple("_NT2", ['x', 'y', 'z'])
158 |     _NT3 = namedtuple(typename="_NT3", field_names=['x', 'y', 'z'])
159 |     _DynamicClass = type("_DynamicClass", (), {})
    |     ^^^^^^^^^^^^^
160 |     _NotADynamicClass = type("_NotADynamicClass")
    |
help: Remove leading underscores
    |
158 |     _NT3 = namedtuple(typename="_NT3", field_names=['x', 'y', 'z'])
    -     _DynamicClass = type("_DynamicClass", (), {})
159 +     DynamicClass = type("DynamicClass", (), {})
160 |     _NotADynamicClass = type("_NotADynamicClass")
161 |
    -     print(_T, _P, _NT, _E, _NT2, _NT3, _DynamicClass, _NotADynamicClass)
162 +     print(_T, _P, _NT, _E, _NT2, _NT3, DynamicClass, _NotADynamicClass)
163 |
    |
note: This is an unsafe fix and may change runtime behavior

RUF052 [*] Local dummy variable `_NotADynamicClass` is accessed
   --> RUF052_0.py:160:5
    |
158 |     _NT3 = namedtuple(typename="_NT3", field_names=['x', 'y', 'z'])
159 |     _DynamicClass = type("_DynamicClass", (), {})
160 |     _NotADynamicClass = type("_NotADynamicClass")
    |     ^^^^^^^^^^^^^^^^^
161 |
162 |     print(_T, _P, _NT, _E, _NT2, _NT3, _DynamicClass, _NotADynamicClass)
    |
help: Remove leading underscores
    |
159 |     _DynamicClass = type("_DynamicClass", (), {})
    -     _NotADynamicClass = type("_NotADynamicClass")
160 +     NotADynamicClass = type("_NotADynamicClass")
161 |
    -     print(_T, _P, _NT, _E, _NT2, _NT3, _DynamicClass, _NotADynamicClass)
162 +     print(_T, _P, _NT, _E, _NT2, _NT3, _DynamicClass, NotADynamicClass)
163 |
    |
note: This is an unsafe fix and may change runtime behavior

RUF052 [*] Local dummy variable `_dummy_var` is accessed
   --> RUF052_0.py:182:5
    |
181 | def foo():
182 |     _dummy_var = 42
    |     ^^^^^^^^^^
183 |
184 |     def bar():
    |
help: Prefer using trailing underscores to avoid shadowing a variable
    |
181 | def foo():
    -     _dummy_var = 42
182 +     dummy_var_ = 42
183 |
184 |     def bar():
185 |         dummy_var = 43
    -         print(_dummy_var)
186 +         print(dummy_var_)
187 |
    |
note: This is an unsafe fix and may change runtime behavior

RUF052 Local dummy variable `_dummy_var` is accessed
   --> RUF052_0.py:192:5
    |
190 |     # Unfixable because both possible candidates for the new name are shadowed
191 |     # in the scope of one of the references to the variable
192 |     _dummy_var = 42
    |     ^^^^^^^^^^
193 |
194 |     def bar():
    |
help: Prefer using trailing underscores to avoid shadowing a variable
