Skip to content

Commit 737beaa

Browse files
committed
Revert "Make undefined-variable flag type annotation without value assignment (pylint-dev#5158)"
This reverts commit b1c4735.
1 parent df6d52d commit 737beaa

File tree

3 files changed

+32
-84
lines changed

3 files changed

+32
-84
lines changed

pylint/checkers/variables.py

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1193,8 +1193,6 @@ def visit_name(self, node: nodes.Name) -> None:
11931193
self.add_message(
11941194
"undefined-variable", node=node, args=node.name
11951195
)
1196-
elif self._is_only_type_assignment(node, defstmt):
1197-
self.add_message("undefined-variable", node=node, args=node.name)
11981196

11991197
current_consumer.mark_as_consumed(node.name, found_nodes)
12001198
# check it's not a loop variable used outside the loop
@@ -1555,20 +1553,6 @@ def _is_variable_violation(
15551553

15561554
return maybee0601, annotation_return, use_outer_definition
15571555

1558-
@staticmethod
1559-
def _is_only_type_assignment(node: nodes.Name, defstmt: nodes.Statement) -> bool:
1560-
"""Check if variable only gets assigned a type and never a value"""
1561-
if not isinstance(defstmt, nodes.AnnAssign) or defstmt.value:
1562-
return False
1563-
for ref_node in node.scope().locals[node.name][1:]:
1564-
if ref_node.lineno < node.lineno:
1565-
if not (
1566-
isinstance(ref_node.parent, nodes.AnnAssign)
1567-
and ref_node.parent.value
1568-
):
1569-
return False
1570-
return True
1571-
15721556
def _ignore_class_scope(self, node):
15731557
"""
15741558
Return True if the node is in a local class scope, as an assignment.

tests/functional/u/undefined/undefined_variable.py

Lines changed: 0 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -338,37 +338,3 @@ def decorated4(x):
338338
else:
339339
from types import GenericAlias
340340
object().__class_getitem__ = classmethod(GenericAlias)
341-
342-
# Tests for annotation of variables and potentially undefinition
343-
344-
def value_and_type_assignment():
345-
"""The variable assigned a value and type"""
346-
variable: int = 2
347-
print(variable)
348-
349-
350-
def only_type_assignment():
351-
"""The variable never gets assigned a value"""
352-
variable: int
353-
print(variable) # [undefined-variable]
354-
355-
356-
def both_type_and_value_assignment():
357-
"""The variable first gets a type and subsequently a value"""
358-
variable: int
359-
variable = 1
360-
print(variable)
361-
362-
363-
def value_assignment_after_access():
364-
"""The variable gets a value after it has been accessed"""
365-
variable: int
366-
print(variable) # [undefined-variable]
367-
variable = 1
368-
369-
370-
def value_assignment_from_iterator():
371-
"""The variables gets a value from an iterator"""
372-
variable: int
373-
for variable in (1, 2):
374-
print(variable)
Lines changed: 32 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,32 @@
1-
undefined-variable:11:19::Undefined variable 'unknown':HIGH
2-
undefined-variable:17:10:in_method:Undefined variable 'nomoreknown':HIGH
3-
undefined-variable:20:19::Undefined variable '__revision__':HIGH
4-
undefined-variable:22:8::Undefined variable '__revision__':HIGH
5-
undefined-variable:26:29:bad_default:Undefined variable 'unknown2':HIGH
6-
undefined-variable:29:10:bad_default:Undefined variable 'xxxx':HIGH
7-
undefined-variable:30:4:bad_default:Undefined variable 'augvar':HIGH
8-
undefined-variable:31:8:bad_default:Undefined variable 'vardel':HIGH
9-
undefined-variable:33:19:<lambda>:Undefined variable 'doesnotexist':HIGH
10-
undefined-variable:34:23:<lambda>:Undefined variable 'z':HIGH
11-
used-before-assignment:42:4::Using variable 'POUETT' before assignment:HIGH
12-
used-before-assignment:55:4::Using variable 'PLOUF' before assignment:HIGH
13-
used-before-assignment:64:11:if_branch_test:Using variable 'xxx' before assignment:HIGH
14-
used-before-assignment:90:23:test_arguments:Using variable 'TestClass' before assignment:HIGH
15-
used-before-assignment:94:16:TestClass:Using variable 'Ancestor' before assignment:HIGH
16-
used-before-assignment:97:26:TestClass.MissingAncestor:Using variable 'Ancestor1' before assignment:HIGH
17-
used-before-assignment:104:36:TestClass.test1.UsingBeforeDefinition:Using variable 'Empty' before assignment:HIGH
18-
undefined-variable:118:10:Self:Undefined variable 'Self':HIGH
19-
undefined-variable:134:7::Undefined variable 'BAT':HIGH
20-
used-before-assignment:145:31:KeywordArgument.test1:Using variable 'enabled' before assignment:HIGH
21-
undefined-variable:148:32:KeywordArgument.test2:Undefined variable 'disabled':HIGH
22-
undefined-variable:153:22:KeywordArgument.<lambda>:Undefined variable 'arg':HIGH
23-
undefined-variable:165:4::Undefined variable 'unicode_2':HIGH
24-
undefined-variable:170:4::Undefined variable 'unicode_3':HIGH
25-
undefined-variable:225:25:LambdaClass4.<lambda>:Undefined variable 'LambdaClass4':HIGH
26-
undefined-variable:233:25:LambdaClass5.<lambda>:Undefined variable 'LambdaClass5':HIGH
27-
used-before-assignment:254:26:func_should_fail:Using variable 'datetime' before assignment:HIGH
28-
undefined-variable:281:18:not_using_loop_variable_accordingly:Undefined variable 'iteree':HIGH
29-
undefined-variable:292:27:undefined_annotation:Undefined variable 'x':HIGH
30-
used-before-assignment:293:7:undefined_annotation:Using variable 'x' before assignment:HIGH
31-
undefined-variable:323:11:decorated3:Undefined variable 'x':HIGH
32-
undefined-variable:328:19:decorated4:Undefined variable 'y':HIGH
33-
undefined-variable:353:10:only_type_assignment:Undefined variable 'variable':HIGH
34-
undefined-variable:366:10:value_assignment_after_access:Undefined variable 'variable':HIGH
1+
undefined-variable:11:19::Undefined variable 'unknown'
2+
undefined-variable:17:10:in_method:Undefined variable 'nomoreknown'
3+
undefined-variable:20:19::Undefined variable '__revision__'
4+
undefined-variable:22:8::Undefined variable '__revision__'
5+
undefined-variable:26:29:bad_default:Undefined variable 'unknown2'
6+
undefined-variable:29:10:bad_default:Undefined variable 'xxxx'
7+
undefined-variable:30:4:bad_default:Undefined variable 'augvar'
8+
undefined-variable:31:8:bad_default:Undefined variable 'vardel'
9+
undefined-variable:33:19:<lambda>:Undefined variable 'doesnotexist'
10+
undefined-variable:34:23:<lambda>:Undefined variable 'z'
11+
used-before-assignment:42:4::Using variable 'POUETT' before assignment
12+
used-before-assignment:55:4::Using variable 'PLOUF' before assignment
13+
used-before-assignment:64:11:if_branch_test:Using variable 'xxx' before assignment
14+
used-before-assignment:90:23:test_arguments:Using variable 'TestClass' before assignment
15+
used-before-assignment:94:16:TestClass:Using variable 'Ancestor' before assignment
16+
used-before-assignment:97:26:TestClass.MissingAncestor:Using variable 'Ancestor1' before assignment
17+
used-before-assignment:104:36:TestClass.test1.UsingBeforeDefinition:Using variable 'Empty' before assignment
18+
undefined-variable:118:10:Self:Undefined variable 'Self'
19+
undefined-variable:134:7::Undefined variable 'BAT'
20+
used-before-assignment:145:31:KeywordArgument.test1:Using variable 'enabled' before assignment
21+
undefined-variable:148:32:KeywordArgument.test2:Undefined variable 'disabled'
22+
undefined-variable:153:22:KeywordArgument.<lambda>:Undefined variable 'arg'
23+
undefined-variable:165:4::Undefined variable 'unicode_2'
24+
undefined-variable:170:4::Undefined variable 'unicode_3'
25+
undefined-variable:225:25:LambdaClass4.<lambda>:Undefined variable 'LambdaClass4'
26+
undefined-variable:233:25:LambdaClass5.<lambda>:Undefined variable 'LambdaClass5'
27+
used-before-assignment:254:26:func_should_fail:Using variable 'datetime' before assignment
28+
undefined-variable:281:18:not_using_loop_variable_accordingly:Undefined variable 'iteree'
29+
undefined-variable:292:27:undefined_annotation:Undefined variable 'x'
30+
used-before-assignment:293:7:undefined_annotation:Using variable 'x' before assignment
31+
undefined-variable:323:11:decorated3:Undefined variable 'x'
32+
undefined-variable:328:19:decorated4:Undefined variable 'y'

0 commit comments

Comments
 (0)