Skip to content

Commit d52de49

Browse files
committed
Add tests for Final/Literal interaction
1 parent cf943cc commit d52de49

8 files changed

Lines changed: 245 additions & 207 deletions

‎conformance/results/mypy/qualifiers_final_annotation.toml‎

Lines changed: 44 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -6,45 +6,51 @@ Does not allow redefinition of private class variable that is marked `Final` in
66
Does not report modification of local `Final` variable via `for` statement.
77
"""
88
output = """
9-
qualifiers_final_annotation.py:16: error: Type in Final[...] can only be omitted if there is an initializer [misc]
10-
qualifiers_final_annotation.py:18: error: Final[...] takes at most one type argument [misc]
11-
qualifiers_final_annotation.py:34: error: Type in Final[...] can only be omitted if there is an initializer [misc]
12-
qualifiers_final_annotation.py:38: error: Final name must be initialized with a value [misc]
13-
qualifiers_final_annotation.py:54: error: Cannot assign to final attribute "ID5" [misc]
14-
qualifiers_final_annotation.py:59: error: Cannot assign to final attribute "ID6" [misc]
15-
qualifiers_final_annotation.py:62: error: Can only declare a final attribute in class body or __init__ [misc]
16-
qualifiers_final_annotation.py:63: error: Can only declare a final attribute in class body or __init__ [misc]
17-
qualifiers_final_annotation.py:65: error: Cannot assign to final attribute "ID7" [misc]
18-
qualifiers_final_annotation.py:67: error: Cannot assign to final attribute "ID7" [misc]
19-
qualifiers_final_annotation.py:71: error: Cannot assign to final name "RATE" [misc]
20-
qualifiers_final_annotation.py:81: error: Cannot assign to final attribute "DEFAULT_ID" [misc]
21-
qualifiers_final_annotation.py:94: error: Cannot assign to final name "BORDER_WIDTH" [misc]
22-
qualifiers_final_annotation.py:96: error: Cannot assign to final name "__private" [misc]
23-
qualifiers_final_annotation.py:107: error: Final can be only used as an outermost qualifier in a variable annotation [valid-type]
24-
qualifiers_final_annotation.py:108: error: Variable should not be annotated with both ClassVar and Final [misc]
25-
qualifiers_final_annotation.py:118: error: Final can be only used as an outermost qualifier in a variable annotation [valid-type]
26-
qualifiers_final_annotation.py:121: error: Final can be only used as an outermost qualifier in a variable annotation [valid-type]
27-
qualifiers_final_annotation.py:131: error: Final[...] can't be used inside a TypedDict [valid-type]
28-
qualifiers_final_annotation.py:136: error: Final[...] can't be used inside a NamedTuple [valid-type]
29-
qualifiers_final_annotation.py:145: error: Invalid "NamedTuple()" field name [misc]
30-
qualifiers_final_annotation.py:147: error: Unexpected keyword argument "x" for "N" [call-arg]
31-
qualifiers_final_annotation.py:147: error: Unexpected keyword argument "y" for "N" [call-arg]
32-
qualifiers_final_annotation.py:148: error: Unexpected keyword argument "a" for "N" [call-arg]
33-
qualifiers_final_annotation.py:149: error: Unexpected keyword argument "x" for "N" [call-arg]
34-
qualifiers_final_annotation.py:149: error: Unexpected keyword argument "y" for "N" [call-arg]
35-
qualifiers_final_annotation.py:155: error: Cannot assign to final name "ID1" [misc]
36-
qualifiers_final_annotation.py:159: error: Cannot assign to final name "x" [misc]
37-
qualifiers_final_annotation.py:161: error: Cannot assign to final name "x" [misc]
38-
qualifiers_final_annotation.py:166: error: Incompatible types in assignment (expression has type "TextIOWrapper[_WrappedBuffer]", variable has type "int") [assignment]
39-
qualifiers_final_annotation.py:169: error: Cannot assign to final name "x" [misc]
40-
qualifiers_final_annotation.py:180: error: Cannot assign to final name "TEN" [misc]
41-
qualifiers_final_annotation.py:184: error: Cannot assign to final name "PI" [misc]
9+
qualifiers_final_annotation.py:10: error: Expression is of type "int", not "Any" [assert-type]
10+
qualifiers_final_annotation.py:10: error: Parameter 1 of Literal[...] is invalid [valid-type]
11+
qualifiers_final_annotation.py:16: error: Expression is of type "Literal[1.0]", not "Any" [assert-type]
12+
qualifiers_final_annotation.py:16: error: Parameter 1 of Literal[...] is invalid [valid-type]
13+
qualifiers_final_annotation.py:20: error: Type in Final[...] can only be omitted if there is an initializer [misc]
14+
qualifiers_final_annotation.py:22: error: Final[...] takes at most one type argument [misc]
15+
qualifiers_final_annotation.py:38: error: Type in Final[...] can only be omitted if there is an initializer [misc]
16+
qualifiers_final_annotation.py:42: error: Final name must be initialized with a value [misc]
17+
qualifiers_final_annotation.py:58: error: Cannot assign to final attribute "ID5" [misc]
18+
qualifiers_final_annotation.py:63: error: Cannot assign to final attribute "ID6" [misc]
19+
qualifiers_final_annotation.py:66: error: Can only declare a final attribute in class body or __init__ [misc]
20+
qualifiers_final_annotation.py:67: error: Can only declare a final attribute in class body or __init__ [misc]
21+
qualifiers_final_annotation.py:69: error: Cannot assign to final attribute "ID7" [misc]
22+
qualifiers_final_annotation.py:71: error: Cannot assign to final attribute "ID7" [misc]
23+
qualifiers_final_annotation.py:75: error: Cannot assign to final name "RATE" [misc]
24+
qualifiers_final_annotation.py:85: error: Cannot assign to final attribute "DEFAULT_ID" [misc]
25+
qualifiers_final_annotation.py:98: error: Cannot assign to final name "BORDER_WIDTH" [misc]
26+
qualifiers_final_annotation.py:100: error: Cannot assign to final name "__private" [misc]
27+
qualifiers_final_annotation.py:111: error: Final can be only used as an outermost qualifier in a variable annotation [valid-type]
28+
qualifiers_final_annotation.py:112: error: Variable should not be annotated with both ClassVar and Final [misc]
29+
qualifiers_final_annotation.py:122: error: Final can be only used as an outermost qualifier in a variable annotation [valid-type]
30+
qualifiers_final_annotation.py:125: error: Final can be only used as an outermost qualifier in a variable annotation [valid-type]
31+
qualifiers_final_annotation.py:135: error: Final[...] can't be used inside a TypedDict [valid-type]
32+
qualifiers_final_annotation.py:140: error: Final[...] can't be used inside a NamedTuple [valid-type]
33+
qualifiers_final_annotation.py:149: error: Invalid "NamedTuple()" field name [misc]
34+
qualifiers_final_annotation.py:151: error: Unexpected keyword argument "x" for "N" [call-arg]
35+
qualifiers_final_annotation.py:151: error: Unexpected keyword argument "y" for "N" [call-arg]
36+
qualifiers_final_annotation.py:152: error: Unexpected keyword argument "a" for "N" [call-arg]
37+
qualifiers_final_annotation.py:153: error: Unexpected keyword argument "x" for "N" [call-arg]
38+
qualifiers_final_annotation.py:153: error: Unexpected keyword argument "y" for "N" [call-arg]
39+
qualifiers_final_annotation.py:159: error: Cannot assign to final name "ID1" [misc]
40+
qualifiers_final_annotation.py:163: error: Cannot assign to final name "x" [misc]
41+
qualifiers_final_annotation.py:165: error: Cannot assign to final name "x" [misc]
42+
qualifiers_final_annotation.py:170: error: Incompatible types in assignment (expression has type "TextIOWrapper[_WrappedBuffer]", variable has type "int") [assignment]
43+
qualifiers_final_annotation.py:173: error: Cannot assign to final name "x" [misc]
44+
qualifiers_final_annotation.py:184: error: Cannot assign to final name "TEN" [misc]
45+
qualifiers_final_annotation.py:188: error: Cannot assign to final name "PI" [misc]
4246
"""
4347
conformance_automated = "Fail"
4448
errors_diff = """
45-
Line 163: Expected 1 errors
46-
Line 59: Unexpected errors ['qualifiers_final_annotation.py:59: error: Cannot assign to final attribute "ID6" [misc]']
47-
Line 96: Unexpected errors ['qualifiers_final_annotation.py:96: error: Cannot assign to final name "__private" [misc]']
48-
Line 145: Unexpected errors ['qualifiers_final_annotation.py:145: error: Invalid "NamedTuple()" field name [misc]']
49-
Line 147: Unexpected errors ['qualifiers_final_annotation.py:147: error: Unexpected keyword argument "x" for "N" [call-arg]', 'qualifiers_final_annotation.py:147: error: Unexpected keyword argument "y" for "N" [call-arg]']
49+
Line 167: Expected 1 errors
50+
Line 10: Unexpected errors ['qualifiers_final_annotation.py:10: error: Expression is of type "int", not "Any" [assert-type]', 'qualifiers_final_annotation.py:10: error: Parameter 1 of Literal[...] is invalid [valid-type]']
51+
Line 16: Unexpected errors ['qualifiers_final_annotation.py:16: error: Expression is of type "Literal[1.0]", not "Any" [assert-type]', 'qualifiers_final_annotation.py:16: error: Parameter 1 of Literal[...] is invalid [valid-type]']
52+
Line 63: Unexpected errors ['qualifiers_final_annotation.py:63: error: Cannot assign to final attribute "ID6" [misc]']
53+
Line 100: Unexpected errors ['qualifiers_final_annotation.py:100: error: Cannot assign to final name "__private" [misc]']
54+
Line 149: Unexpected errors ['qualifiers_final_annotation.py:149: error: Invalid "NamedTuple()" field name [misc]']
55+
Line 151: Unexpected errors ['qualifiers_final_annotation.py:151: error: Unexpected keyword argument "x" for "N" [call-arg]', 'qualifiers_final_annotation.py:151: error: Unexpected keyword argument "y" for "N" [call-arg]']
5056
"""
Lines changed: 36 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,41 @@
1-
conformance_automated = "Pass"
1+
conformance_automated = "Fail"
22
errors_diff = """
3+
Line 10: Unexpected errors ["./qualifiers_final_annotation.py:10:12: int is not equivalent to type 'int'", "./qualifiers_final_annotation.py:10:0: Arguments to Literal[] must be None, bool, int, str, bytes, or enum members; got <class 'int'> [invalid_literal]"]
4+
Line 16: Unexpected errors ["./qualifiers_final_annotation.py:16:12: Literal[1.0] is not equivalent to type 'float'", "./qualifiers_final_annotation.py:16:0: Arguments to Literal[] must be None, bool, int, str, bytes, or enum members; got <class 'float'> [invalid_literal]"]
35
"""
46
output = """
5-
./qualifiers_final_annotation.py:16:6: Final annotation without assignment requires an explicit type [invalid_qualifier]
6-
./qualifiers_final_annotation.py:18:6: Invalid type annotation (<class 'str'>, <class 'int'>) [invalid_annotation]
7-
./qualifiers_final_annotation.py:34:9: Final annotation without assignment requires an explicit type [invalid_qualifier]
8-
./qualifiers_final_annotation.py:34:4: Final class attributes without initializers must be assigned in __init__ [invalid_qualifier]
7+
./qualifiers_final_annotation.py:10:12: int is not equivalent to type 'int'
8+
./qualifiers_final_annotation.py:10:0: Arguments to Literal[] must be None, bool, int, str, bytes, or enum members; got <class 'int'> [invalid_literal]
9+
./qualifiers_final_annotation.py:16:12: Literal[1.0] is not equivalent to type 'float'
10+
./qualifiers_final_annotation.py:16:0: Arguments to Literal[] must be None, bool, int, str, bytes, or enum members; got <class 'float'> [invalid_literal]
11+
./qualifiers_final_annotation.py:20:6: Final annotation without assignment requires an explicit type [invalid_qualifier]
12+
./qualifiers_final_annotation.py:22:6: Invalid type annotation (<class 'str'>, <class 'int'>) [invalid_annotation]
13+
./qualifiers_final_annotation.py:38:9: Final annotation without assignment requires an explicit type [invalid_qualifier]
914
./qualifiers_final_annotation.py:38:4: Final class attributes without initializers must be assigned in __init__ [invalid_qualifier]
10-
./qualifiers_final_annotation.py:54:8: Cannot assign to final name ID5 [incompatible_assignment]
11-
./qualifiers_final_annotation.py:62:18: Final instance attributes may be declared only in __init__ [invalid_qualifier]
12-
./qualifiers_final_annotation.py:63:18: Final instance attributes may be declared only in __init__ [invalid_qualifier]
13-
./qualifiers_final_annotation.py:65:8: Cannot assign to final name ID7 [incompatible_assignment]
14-
./qualifiers_final_annotation.py:67:8: Cannot assign to final name ID7 [incompatible_assignment]
15-
./qualifiers_final_annotation.py:71:0: Cannot assign to final name RATE [incompatible_assignment]
16-
./qualifiers_final_annotation.py:81:0: Cannot assign to final name DEFAULT_ID [incompatible_assignment]
17-
./qualifiers_final_annotation.py:94:4: Cannot override final attribute BORDER_WIDTH [incompatible_override]
18-
./qualifiers_final_annotation.py:107:12: Final cannot be combined with ClassVar [invalid_qualifier]
19-
./qualifiers_final_annotation.py:108:12: Final cannot be combined with ClassVar [invalid_qualifier]
20-
./qualifiers_final_annotation.py:118:3: Unrecognized annotation typing.Final[<class 'int'>] [invalid_annotation]
21-
./qualifiers_final_annotation.py:121:13: Unexpected Final annotation [invalid_qualifier]
22-
./qualifiers_final_annotation.py:131:7: Unexpected Final annotation [invalid_qualifier]
23-
./qualifiers_final_annotation.py:136:4: Final class attributes without initializers must be assigned in __init__ [invalid_qualifier]
24-
./qualifiers_final_annotation.py:148:0: In call to pycroscope.signature.N: Missing required argument 'x' [incompatible_call]
25-
./qualifiers_final_annotation.py:149:4: Incompatible argument type for x: expected int but got Literal[''] [incompatible_argument]
26-
./qualifiers_final_annotation.py:149:10: Incompatible argument type for y: expected int but got Literal[''] [incompatible_argument]
27-
./qualifiers_final_annotation.py:155:4: Cannot assign to final name ID1 [incompatible_assignment]
28-
./qualifiers_final_annotation.py:159:4: Cannot assign to final name x [incompatible_assignment]
29-
./qualifiers_final_annotation.py:161:9: Cannot assign to final name x [incompatible_assignment]
30-
./qualifiers_final_annotation.py:163:8: Cannot assign to final name x [incompatible_assignment]
31-
./qualifiers_final_annotation.py:166:29: Cannot assign to final name x [incompatible_assignment]
32-
./qualifiers_final_annotation.py:169:8: Cannot assign to final name x [incompatible_assignment]
33-
./qualifiers_final_annotation.py:180:0: Cannot assign to final name TEN [incompatible_assignment]
34-
./qualifiers_final_annotation.py:184:0: Cannot assign to final name PI [incompatible_assignment]
15+
./qualifiers_final_annotation.py:42:4: Final class attributes without initializers must be assigned in __init__ [invalid_qualifier]
16+
./qualifiers_final_annotation.py:58:8: Cannot assign to final name ID5 [incompatible_assignment]
17+
./qualifiers_final_annotation.py:66:18: Final instance attributes may be declared only in __init__ [invalid_qualifier]
18+
./qualifiers_final_annotation.py:67:18: Final instance attributes may be declared only in __init__ [invalid_qualifier]
19+
./qualifiers_final_annotation.py:69:8: Cannot assign to final name ID7 [incompatible_assignment]
20+
./qualifiers_final_annotation.py:71:8: Cannot assign to final name ID7 [incompatible_assignment]
21+
./qualifiers_final_annotation.py:75:0: Cannot assign to final name RATE [incompatible_assignment]
22+
./qualifiers_final_annotation.py:85:0: Cannot assign to final name DEFAULT_ID [incompatible_assignment]
23+
./qualifiers_final_annotation.py:98:4: Cannot override final attribute BORDER_WIDTH [incompatible_override]
24+
./qualifiers_final_annotation.py:111:12: Final cannot be combined with ClassVar [invalid_qualifier]
25+
./qualifiers_final_annotation.py:112:12: Final cannot be combined with ClassVar [invalid_qualifier]
26+
./qualifiers_final_annotation.py:122:3: Unrecognized annotation typing.Final[<class 'int'>] [invalid_annotation]
27+
./qualifiers_final_annotation.py:125:13: Unexpected Final annotation [invalid_qualifier]
28+
./qualifiers_final_annotation.py:135:7: Unexpected Final annotation [invalid_qualifier]
29+
./qualifiers_final_annotation.py:140:4: Final class attributes without initializers must be assigned in __init__ [invalid_qualifier]
30+
./qualifiers_final_annotation.py:152:0: In call to pycroscope.signature.N: Missing required argument 'x' [incompatible_call]
31+
./qualifiers_final_annotation.py:153:4: Incompatible argument type for x: expected int but got Literal[''] [incompatible_argument]
32+
./qualifiers_final_annotation.py:153:10: Incompatible argument type for y: expected int but got Literal[''] [incompatible_argument]
33+
./qualifiers_final_annotation.py:159:4: Cannot assign to final name ID1 [incompatible_assignment]
34+
./qualifiers_final_annotation.py:163:4: Cannot assign to final name x [incompatible_assignment]
35+
./qualifiers_final_annotation.py:165:9: Cannot assign to final name x [incompatible_assignment]
36+
./qualifiers_final_annotation.py:167:8: Cannot assign to final name x [incompatible_assignment]
37+
./qualifiers_final_annotation.py:170:29: Cannot assign to final name x [incompatible_assignment]
38+
./qualifiers_final_annotation.py:173:8: Cannot assign to final name x [incompatible_assignment]
39+
./qualifiers_final_annotation.py:184:0: Cannot assign to final name TEN [incompatible_assignment]
40+
./qualifiers_final_annotation.py:188:0: Cannot assign to final name PI [incompatible_assignment]
3541
"""

0 commit comments

Comments
 (0)