mirror of
https://github.com/astral-sh/ruff.git
synced 2025-08-02 18:02:23 +00:00
[flake8-pyi
]: Stabilize: Provide more automated fixes for duplicate-union-members
(PYI016
) (#15342)
This commit is contained in:
parent
225dd0a027
commit
8e8a07144d
4 changed files with 1041 additions and 118 deletions
|
@ -111,3 +111,12 @@ field33: typing.Union[typing.Union[int | int] | typing.Union[int | int]] # Error
|
||||||
|
|
||||||
# Test case for mixed union type
|
# Test case for mixed union type
|
||||||
field34: typing.Union[list[int], str] | typing.Union[bytes, list[int]] # Error
|
field34: typing.Union[list[int], str] | typing.Union[bytes, list[int]] # Error
|
||||||
|
|
||||||
|
field35: "int | str | int" # Error
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# Technically, this falls into the domain of the rule but it is an unlikely edge case,
|
||||||
|
# only works if you have from `__future__ import annotations` at the top of the file,
|
||||||
|
# and stringified annotations are discouraged in stub files.
|
||||||
|
field36: "int | str" | int # Ok
|
|
@ -93,40 +93,38 @@ pub(crate) fn duplicate_union_member<'a>(checker: &mut Checker, expr: &'a Expr)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if checker.settings.preview.is_enabled() {
|
// Mark [`Fix`] as unsafe when comments are in range.
|
||||||
// Mark [`Fix`] as unsafe when comments are in range.
|
let applicability = if checker.comment_ranges().intersects(expr.range()) {
|
||||||
let applicability = if checker.comment_ranges().intersects(expr.range()) {
|
Applicability::Unsafe
|
||||||
Applicability::Unsafe
|
} else {
|
||||||
} else {
|
Applicability::Safe
|
||||||
Applicability::Safe
|
};
|
||||||
};
|
|
||||||
|
|
||||||
// Generate the flattened fix once.
|
// Generate the flattened fix once.
|
||||||
let fix = if let &[edit_expr] = unique_nodes.as_slice() {
|
let fix = if let &[edit_expr] = unique_nodes.as_slice() {
|
||||||
// Generate a [`Fix`] for a single type expression, e.g. `int`.
|
// Generate a [`Fix`] for a single type expression, e.g. `int`.
|
||||||
Some(Fix::applicable_edit(
|
Some(Fix::applicable_edit(
|
||||||
Edit::range_replacement(checker.generator().expr(edit_expr), expr.range()),
|
Edit::range_replacement(checker.generator().expr(edit_expr), expr.range()),
|
||||||
|
applicability,
|
||||||
|
))
|
||||||
|
} else {
|
||||||
|
match union_type {
|
||||||
|
// See redundant numeric union
|
||||||
|
UnionKind::PEP604 => Some(generate_pep604_fix(
|
||||||
|
checker,
|
||||||
|
unique_nodes,
|
||||||
|
expr,
|
||||||
applicability,
|
applicability,
|
||||||
))
|
)),
|
||||||
} else {
|
UnionKind::TypingUnion => {
|
||||||
match union_type {
|
generate_union_fix(checker, unique_nodes, expr, applicability).ok()
|
||||||
// See redundant numeric union
|
|
||||||
UnionKind::PEP604 => Some(generate_pep604_fix(
|
|
||||||
checker,
|
|
||||||
unique_nodes,
|
|
||||||
expr,
|
|
||||||
applicability,
|
|
||||||
)),
|
|
||||||
UnionKind::TypingUnion => {
|
|
||||||
generate_union_fix(checker, unique_nodes, expr, applicability).ok()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
};
|
}
|
||||||
|
};
|
||||||
|
|
||||||
if let Some(fix) = fix {
|
if let Some(fix) = fix {
|
||||||
for diagnostic in &mut diagnostics {
|
for diagnostic in &mut diagnostics {
|
||||||
diagnostic.set_fix(fix.clone());
|
diagnostic.set_fix(fix.clone());
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,8 @@
|
||||||
---
|
---
|
||||||
source: crates/ruff_linter/src/rules/flake8_pyi/mod.rs
|
source: crates/ruff_linter/src/rules/flake8_pyi/mod.rs
|
||||||
|
snapshot_kind: text
|
||||||
---
|
---
|
||||||
PYI016.py:7:15: PYI016 Duplicate union member `str`
|
PYI016.py:7:15: PYI016 [*] Duplicate union member `str`
|
||||||
|
|
|
|
||||||
6 | # Should emit for duplicate field types.
|
6 | # Should emit for duplicate field types.
|
||||||
7 | field2: str | str # PYI016: Duplicate union member `str`
|
7 | field2: str | str # PYI016: Duplicate union member `str`
|
||||||
|
@ -11,7 +12,17 @@ PYI016.py:7:15: PYI016 Duplicate union member `str`
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `str`
|
= help: Remove duplicate union member `str`
|
||||||
|
|
||||||
PYI016.py:10:23: PYI016 Duplicate union member `int`
|
ℹ Safe fix
|
||||||
|
4 4 | field1: str
|
||||||
|
5 5 |
|
||||||
|
6 6 | # Should emit for duplicate field types.
|
||||||
|
7 |-field2: str | str # PYI016: Duplicate union member `str`
|
||||||
|
7 |+field2: str # PYI016: Duplicate union member `str`
|
||||||
|
8 8 |
|
||||||
|
9 9 | # Should emit for union types in arguments.
|
||||||
|
10 10 | def func1(arg1: int | int): # PYI016: Duplicate union member `int`
|
||||||
|
|
||||||
|
PYI016.py:10:23: PYI016 [*] Duplicate union member `int`
|
||||||
|
|
|
|
||||||
9 | # Should emit for union types in arguments.
|
9 | # Should emit for union types in arguments.
|
||||||
10 | def func1(arg1: int | int): # PYI016: Duplicate union member `int`
|
10 | def func1(arg1: int | int): # PYI016: Duplicate union member `int`
|
||||||
|
@ -20,7 +31,17 @@ PYI016.py:10:23: PYI016 Duplicate union member `int`
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `int`
|
= help: Remove duplicate union member `int`
|
||||||
|
|
||||||
PYI016.py:14:22: PYI016 Duplicate union member `str`
|
ℹ Safe fix
|
||||||
|
7 7 | field2: str | str # PYI016: Duplicate union member `str`
|
||||||
|
8 8 |
|
||||||
|
9 9 | # Should emit for union types in arguments.
|
||||||
|
10 |-def func1(arg1: int | int): # PYI016: Duplicate union member `int`
|
||||||
|
10 |+def func1(arg1: int): # PYI016: Duplicate union member `int`
|
||||||
|
11 11 | print(arg1)
|
||||||
|
12 12 |
|
||||||
|
13 13 | # Should emit for unions in return types.
|
||||||
|
|
||||||
|
PYI016.py:14:22: PYI016 [*] Duplicate union member `str`
|
||||||
|
|
|
|
||||||
13 | # Should emit for unions in return types.
|
13 | # Should emit for unions in return types.
|
||||||
14 | def func2() -> str | str: # PYI016: Duplicate union member `str`
|
14 | def func2() -> str | str: # PYI016: Duplicate union member `str`
|
||||||
|
@ -29,7 +50,17 @@ PYI016.py:14:22: PYI016 Duplicate union member `str`
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `str`
|
= help: Remove duplicate union member `str`
|
||||||
|
|
||||||
PYI016.py:18:15: PYI016 Duplicate union member `str`
|
ℹ Safe fix
|
||||||
|
11 11 | print(arg1)
|
||||||
|
12 12 |
|
||||||
|
13 13 | # Should emit for unions in return types.
|
||||||
|
14 |-def func2() -> str | str: # PYI016: Duplicate union member `str`
|
||||||
|
14 |+def func2() -> str: # PYI016: Duplicate union member `str`
|
||||||
|
15 15 | return "my string"
|
||||||
|
16 16 |
|
||||||
|
17 17 | # Should emit in longer unions, even if not directly adjacent.
|
||||||
|
|
||||||
|
PYI016.py:18:15: PYI016 [*] Duplicate union member `str`
|
||||||
|
|
|
|
||||||
17 | # Should emit in longer unions, even if not directly adjacent.
|
17 | # Should emit in longer unions, even if not directly adjacent.
|
||||||
18 | field3: str | str | int # PYI016: Duplicate union member `str`
|
18 | field3: str | str | int # PYI016: Duplicate union member `str`
|
||||||
|
@ -39,7 +70,17 @@ PYI016.py:18:15: PYI016 Duplicate union member `str`
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `str`
|
= help: Remove duplicate union member `str`
|
||||||
|
|
||||||
PYI016.py:19:15: PYI016 Duplicate union member `int`
|
ℹ Safe fix
|
||||||
|
15 15 | return "my string"
|
||||||
|
16 16 |
|
||||||
|
17 17 | # Should emit in longer unions, even if not directly adjacent.
|
||||||
|
18 |-field3: str | str | int # PYI016: Duplicate union member `str`
|
||||||
|
18 |+field3: str | int # PYI016: Duplicate union member `str`
|
||||||
|
19 19 | field4: int | int | str # PYI016: Duplicate union member `int`
|
||||||
|
20 20 | field5: str | int | str # PYI016: Duplicate union member `str`
|
||||||
|
21 21 | field6: int | bool | str | int # PYI016: Duplicate union member `int`
|
||||||
|
|
||||||
|
PYI016.py:19:15: PYI016 [*] Duplicate union member `int`
|
||||||
|
|
|
|
||||||
17 | # Should emit in longer unions, even if not directly adjacent.
|
17 | # Should emit in longer unions, even if not directly adjacent.
|
||||||
18 | field3: str | str | int # PYI016: Duplicate union member `str`
|
18 | field3: str | str | int # PYI016: Duplicate union member `str`
|
||||||
|
@ -50,7 +91,17 @@ PYI016.py:19:15: PYI016 Duplicate union member `int`
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `int`
|
= help: Remove duplicate union member `int`
|
||||||
|
|
||||||
PYI016.py:20:21: PYI016 Duplicate union member `str`
|
ℹ Safe fix
|
||||||
|
16 16 |
|
||||||
|
17 17 | # Should emit in longer unions, even if not directly adjacent.
|
||||||
|
18 18 | field3: str | str | int # PYI016: Duplicate union member `str`
|
||||||
|
19 |-field4: int | int | str # PYI016: Duplicate union member `int`
|
||||||
|
19 |+field4: int | str # PYI016: Duplicate union member `int`
|
||||||
|
20 20 | field5: str | int | str # PYI016: Duplicate union member `str`
|
||||||
|
21 21 | field6: int | bool | str | int # PYI016: Duplicate union member `int`
|
||||||
|
22 22 |
|
||||||
|
|
||||||
|
PYI016.py:20:21: PYI016 [*] Duplicate union member `str`
|
||||||
|
|
|
|
||||||
18 | field3: str | str | int # PYI016: Duplicate union member `str`
|
18 | field3: str | str | int # PYI016: Duplicate union member `str`
|
||||||
19 | field4: int | int | str # PYI016: Duplicate union member `int`
|
19 | field4: int | int | str # PYI016: Duplicate union member `int`
|
||||||
|
@ -60,7 +111,17 @@ PYI016.py:20:21: PYI016 Duplicate union member `str`
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `str`
|
= help: Remove duplicate union member `str`
|
||||||
|
|
||||||
PYI016.py:21:28: PYI016 Duplicate union member `int`
|
ℹ Safe fix
|
||||||
|
17 17 | # Should emit in longer unions, even if not directly adjacent.
|
||||||
|
18 18 | field3: str | str | int # PYI016: Duplicate union member `str`
|
||||||
|
19 19 | field4: int | int | str # PYI016: Duplicate union member `int`
|
||||||
|
20 |-field5: str | int | str # PYI016: Duplicate union member `str`
|
||||||
|
20 |+field5: str | int # PYI016: Duplicate union member `str`
|
||||||
|
21 21 | field6: int | bool | str | int # PYI016: Duplicate union member `int`
|
||||||
|
22 22 |
|
||||||
|
23 23 | # Shouldn't emit for non-type unions.
|
||||||
|
|
||||||
|
PYI016.py:21:28: PYI016 [*] Duplicate union member `int`
|
||||||
|
|
|
|
||||||
19 | field4: int | int | str # PYI016: Duplicate union member `int`
|
19 | field4: int | int | str # PYI016: Duplicate union member `int`
|
||||||
20 | field5: str | int | str # PYI016: Duplicate union member `str`
|
20 | field5: str | int | str # PYI016: Duplicate union member `str`
|
||||||
|
@ -71,7 +132,17 @@ PYI016.py:21:28: PYI016 Duplicate union member `int`
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `int`
|
= help: Remove duplicate union member `int`
|
||||||
|
|
||||||
PYI016.py:27:22: PYI016 Duplicate union member `int`
|
ℹ Safe fix
|
||||||
|
18 18 | field3: str | str | int # PYI016: Duplicate union member `str`
|
||||||
|
19 19 | field4: int | int | str # PYI016: Duplicate union member `int`
|
||||||
|
20 20 | field5: str | int | str # PYI016: Duplicate union member `str`
|
||||||
|
21 |-field6: int | bool | str | int # PYI016: Duplicate union member `int`
|
||||||
|
21 |+field6: int | bool | str # PYI016: Duplicate union member `int`
|
||||||
|
22 22 |
|
||||||
|
23 23 | # Shouldn't emit for non-type unions.
|
||||||
|
24 24 | field7 = str | str
|
||||||
|
|
||||||
|
PYI016.py:27:22: PYI016 [*] Duplicate union member `int`
|
||||||
|
|
|
|
||||||
26 | # Should emit for strangely-bracketed unions.
|
26 | # Should emit for strangely-bracketed unions.
|
||||||
27 | field8: int | (str | int) # PYI016: Duplicate union member `int`
|
27 | field8: int | (str | int) # PYI016: Duplicate union member `int`
|
||||||
|
@ -81,7 +152,17 @@ PYI016.py:27:22: PYI016 Duplicate union member `int`
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `int`
|
= help: Remove duplicate union member `int`
|
||||||
|
|
||||||
PYI016.py:30:16: PYI016 Duplicate union member `int`
|
ℹ Safe fix
|
||||||
|
24 24 | field7 = str | str
|
||||||
|
25 25 |
|
||||||
|
26 26 | # Should emit for strangely-bracketed unions.
|
||||||
|
27 |-field8: int | (str | int) # PYI016: Duplicate union member `int`
|
||||||
|
27 |+field8: int | str # PYI016: Duplicate union member `int`
|
||||||
|
28 28 |
|
||||||
|
29 29 | # Should handle user brackets when fixing.
|
||||||
|
30 30 | field9: int | (int | str) # PYI016: Duplicate union member `int`
|
||||||
|
|
||||||
|
PYI016.py:30:16: PYI016 [*] Duplicate union member `int`
|
||||||
|
|
|
|
||||||
29 | # Should handle user brackets when fixing.
|
29 | # Should handle user brackets when fixing.
|
||||||
30 | field9: int | (int | str) # PYI016: Duplicate union member `int`
|
30 | field9: int | (int | str) # PYI016: Duplicate union member `int`
|
||||||
|
@ -90,7 +171,17 @@ PYI016.py:30:16: PYI016 Duplicate union member `int`
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `int`
|
= help: Remove duplicate union member `int`
|
||||||
|
|
||||||
PYI016.py:31:24: PYI016 Duplicate union member `str`
|
ℹ Safe fix
|
||||||
|
27 27 | field8: int | (str | int) # PYI016: Duplicate union member `int`
|
||||||
|
28 28 |
|
||||||
|
29 29 | # Should handle user brackets when fixing.
|
||||||
|
30 |-field9: int | (int | str) # PYI016: Duplicate union member `int`
|
||||||
|
30 |+field9: int | str # PYI016: Duplicate union member `int`
|
||||||
|
31 31 | field10: (str | int) | str # PYI016: Duplicate union member `str`
|
||||||
|
32 32 |
|
||||||
|
33 33 | # Should emit for nested unions.
|
||||||
|
|
||||||
|
PYI016.py:31:24: PYI016 [*] Duplicate union member `str`
|
||||||
|
|
|
|
||||||
29 | # Should handle user brackets when fixing.
|
29 | # Should handle user brackets when fixing.
|
||||||
30 | field9: int | (int | str) # PYI016: Duplicate union member `int`
|
30 | field9: int | (int | str) # PYI016: Duplicate union member `int`
|
||||||
|
@ -101,7 +192,17 @@ PYI016.py:31:24: PYI016 Duplicate union member `str`
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `str`
|
= help: Remove duplicate union member `str`
|
||||||
|
|
||||||
PYI016.py:34:21: PYI016 Duplicate union member `int`
|
ℹ Safe fix
|
||||||
|
28 28 |
|
||||||
|
29 29 | # Should handle user brackets when fixing.
|
||||||
|
30 30 | field9: int | (int | str) # PYI016: Duplicate union member `int`
|
||||||
|
31 |-field10: (str | int) | str # PYI016: Duplicate union member `str`
|
||||||
|
31 |+field10: str | int # PYI016: Duplicate union member `str`
|
||||||
|
32 32 |
|
||||||
|
33 33 | # Should emit for nested unions.
|
||||||
|
34 34 | field11: dict[int | int, str]
|
||||||
|
|
||||||
|
PYI016.py:34:21: PYI016 [*] Duplicate union member `int`
|
||||||
|
|
|
|
||||||
33 | # Should emit for nested unions.
|
33 | # Should emit for nested unions.
|
||||||
34 | field11: dict[int | int, str]
|
34 | field11: dict[int | int, str]
|
||||||
|
@ -111,7 +212,17 @@ PYI016.py:34:21: PYI016 Duplicate union member `int`
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `int`
|
= help: Remove duplicate union member `int`
|
||||||
|
|
||||||
PYI016.py:37:16: PYI016 Duplicate union member `int`
|
ℹ Safe fix
|
||||||
|
31 31 | field10: (str | int) | str # PYI016: Duplicate union member `str`
|
||||||
|
32 32 |
|
||||||
|
33 33 | # Should emit for nested unions.
|
||||||
|
34 |-field11: dict[int | int, str]
|
||||||
|
34 |+field11: dict[int, str]
|
||||||
|
35 35 |
|
||||||
|
36 36 | # Should emit for unions with more than two cases
|
||||||
|
37 37 | field12: int | int | int # Error
|
||||||
|
|
||||||
|
PYI016.py:37:16: PYI016 [*] Duplicate union member `int`
|
||||||
|
|
|
|
||||||
36 | # Should emit for unions with more than two cases
|
36 | # Should emit for unions with more than two cases
|
||||||
37 | field12: int | int | int # Error
|
37 | field12: int | int | int # Error
|
||||||
|
@ -120,7 +231,17 @@ PYI016.py:37:16: PYI016 Duplicate union member `int`
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `int`
|
= help: Remove duplicate union member `int`
|
||||||
|
|
||||||
PYI016.py:37:22: PYI016 Duplicate union member `int`
|
ℹ Safe fix
|
||||||
|
34 34 | field11: dict[int | int, str]
|
||||||
|
35 35 |
|
||||||
|
36 36 | # Should emit for unions with more than two cases
|
||||||
|
37 |-field12: int | int | int # Error
|
||||||
|
37 |+field12: int # Error
|
||||||
|
38 38 | field13: int | int | int | int # Error
|
||||||
|
39 39 |
|
||||||
|
40 40 | # Should emit for unions with more than two cases, even if not directly adjacent
|
||||||
|
|
||||||
|
PYI016.py:37:22: PYI016 [*] Duplicate union member `int`
|
||||||
|
|
|
|
||||||
36 | # Should emit for unions with more than two cases
|
36 | # Should emit for unions with more than two cases
|
||||||
37 | field12: int | int | int # Error
|
37 | field12: int | int | int # Error
|
||||||
|
@ -129,7 +250,17 @@ PYI016.py:37:22: PYI016 Duplicate union member `int`
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `int`
|
= help: Remove duplicate union member `int`
|
||||||
|
|
||||||
PYI016.py:38:16: PYI016 Duplicate union member `int`
|
ℹ Safe fix
|
||||||
|
34 34 | field11: dict[int | int, str]
|
||||||
|
35 35 |
|
||||||
|
36 36 | # Should emit for unions with more than two cases
|
||||||
|
37 |-field12: int | int | int # Error
|
||||||
|
37 |+field12: int # Error
|
||||||
|
38 38 | field13: int | int | int | int # Error
|
||||||
|
39 39 |
|
||||||
|
40 40 | # Should emit for unions with more than two cases, even if not directly adjacent
|
||||||
|
|
||||||
|
PYI016.py:38:16: PYI016 [*] Duplicate union member `int`
|
||||||
|
|
|
|
||||||
36 | # Should emit for unions with more than two cases
|
36 | # Should emit for unions with more than two cases
|
||||||
37 | field12: int | int | int # Error
|
37 | field12: int | int | int # Error
|
||||||
|
@ -140,7 +271,17 @@ PYI016.py:38:16: PYI016 Duplicate union member `int`
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `int`
|
= help: Remove duplicate union member `int`
|
||||||
|
|
||||||
PYI016.py:38:22: PYI016 Duplicate union member `int`
|
ℹ Safe fix
|
||||||
|
35 35 |
|
||||||
|
36 36 | # Should emit for unions with more than two cases
|
||||||
|
37 37 | field12: int | int | int # Error
|
||||||
|
38 |-field13: int | int | int | int # Error
|
||||||
|
38 |+field13: int # Error
|
||||||
|
39 39 |
|
||||||
|
40 40 | # Should emit for unions with more than two cases, even if not directly adjacent
|
||||||
|
41 41 | field14: int | int | str | int # Error
|
||||||
|
|
||||||
|
PYI016.py:38:22: PYI016 [*] Duplicate union member `int`
|
||||||
|
|
|
|
||||||
36 | # Should emit for unions with more than two cases
|
36 | # Should emit for unions with more than two cases
|
||||||
37 | field12: int | int | int # Error
|
37 | field12: int | int | int # Error
|
||||||
|
@ -151,7 +292,17 @@ PYI016.py:38:22: PYI016 Duplicate union member `int`
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `int`
|
= help: Remove duplicate union member `int`
|
||||||
|
|
||||||
PYI016.py:38:28: PYI016 Duplicate union member `int`
|
ℹ Safe fix
|
||||||
|
35 35 |
|
||||||
|
36 36 | # Should emit for unions with more than two cases
|
||||||
|
37 37 | field12: int | int | int # Error
|
||||||
|
38 |-field13: int | int | int | int # Error
|
||||||
|
38 |+field13: int # Error
|
||||||
|
39 39 |
|
||||||
|
40 40 | # Should emit for unions with more than two cases, even if not directly adjacent
|
||||||
|
41 41 | field14: int | int | str | int # Error
|
||||||
|
|
||||||
|
PYI016.py:38:28: PYI016 [*] Duplicate union member `int`
|
||||||
|
|
|
|
||||||
36 | # Should emit for unions with more than two cases
|
36 | # Should emit for unions with more than two cases
|
||||||
37 | field12: int | int | int # Error
|
37 | field12: int | int | int # Error
|
||||||
|
@ -162,7 +313,17 @@ PYI016.py:38:28: PYI016 Duplicate union member `int`
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `int`
|
= help: Remove duplicate union member `int`
|
||||||
|
|
||||||
PYI016.py:41:16: PYI016 Duplicate union member `int`
|
ℹ Safe fix
|
||||||
|
35 35 |
|
||||||
|
36 36 | # Should emit for unions with more than two cases
|
||||||
|
37 37 | field12: int | int | int # Error
|
||||||
|
38 |-field13: int | int | int | int # Error
|
||||||
|
38 |+field13: int # Error
|
||||||
|
39 39 |
|
||||||
|
40 40 | # Should emit for unions with more than two cases, even if not directly adjacent
|
||||||
|
41 41 | field14: int | int | str | int # Error
|
||||||
|
|
||||||
|
PYI016.py:41:16: PYI016 [*] Duplicate union member `int`
|
||||||
|
|
|
|
||||||
40 | # Should emit for unions with more than two cases, even if not directly adjacent
|
40 | # Should emit for unions with more than two cases, even if not directly adjacent
|
||||||
41 | field14: int | int | str | int # Error
|
41 | field14: int | int | str | int # Error
|
||||||
|
@ -172,7 +333,17 @@ PYI016.py:41:16: PYI016 Duplicate union member `int`
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `int`
|
= help: Remove duplicate union member `int`
|
||||||
|
|
||||||
PYI016.py:41:28: PYI016 Duplicate union member `int`
|
ℹ Safe fix
|
||||||
|
38 38 | field13: int | int | int | int # Error
|
||||||
|
39 39 |
|
||||||
|
40 40 | # Should emit for unions with more than two cases, even if not directly adjacent
|
||||||
|
41 |-field14: int | int | str | int # Error
|
||||||
|
41 |+field14: int | str # Error
|
||||||
|
42 42 |
|
||||||
|
43 43 | # Should emit for duplicate literal types; also covered by PYI030
|
||||||
|
44 44 | field15: typing.Literal[1] | typing.Literal[1] # Error
|
||||||
|
|
||||||
|
PYI016.py:41:28: PYI016 [*] Duplicate union member `int`
|
||||||
|
|
|
|
||||||
40 | # Should emit for unions with more than two cases, even if not directly adjacent
|
40 | # Should emit for unions with more than two cases, even if not directly adjacent
|
||||||
41 | field14: int | int | str | int # Error
|
41 | field14: int | int | str | int # Error
|
||||||
|
@ -182,7 +353,17 @@ PYI016.py:41:28: PYI016 Duplicate union member `int`
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `int`
|
= help: Remove duplicate union member `int`
|
||||||
|
|
||||||
PYI016.py:44:30: PYI016 Duplicate union member `typing.Literal[1]`
|
ℹ Safe fix
|
||||||
|
38 38 | field13: int | int | int | int # Error
|
||||||
|
39 39 |
|
||||||
|
40 40 | # Should emit for unions with more than two cases, even if not directly adjacent
|
||||||
|
41 |-field14: int | int | str | int # Error
|
||||||
|
41 |+field14: int | str # Error
|
||||||
|
42 42 |
|
||||||
|
43 43 | # Should emit for duplicate literal types; also covered by PYI030
|
||||||
|
44 44 | field15: typing.Literal[1] | typing.Literal[1] # Error
|
||||||
|
|
||||||
|
PYI016.py:44:30: PYI016 [*] Duplicate union member `typing.Literal[1]`
|
||||||
|
|
|
|
||||||
43 | # Should emit for duplicate literal types; also covered by PYI030
|
43 | # Should emit for duplicate literal types; also covered by PYI030
|
||||||
44 | field15: typing.Literal[1] | typing.Literal[1] # Error
|
44 | field15: typing.Literal[1] | typing.Literal[1] # Error
|
||||||
|
@ -192,7 +373,17 @@ PYI016.py:44:30: PYI016 Duplicate union member `typing.Literal[1]`
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `typing.Literal[1]`
|
= help: Remove duplicate union member `typing.Literal[1]`
|
||||||
|
|
||||||
PYI016.py:57:5: PYI016 Duplicate union member `set[int]`
|
ℹ Safe fix
|
||||||
|
41 41 | field14: int | int | str | int # Error
|
||||||
|
42 42 |
|
||||||
|
43 43 | # Should emit for duplicate literal types; also covered by PYI030
|
||||||
|
44 |-field15: typing.Literal[1] | typing.Literal[1] # Error
|
||||||
|
44 |+field15: typing.Literal[1] # Error
|
||||||
|
45 45 |
|
||||||
|
46 46 | # Shouldn't emit if in new parent type
|
||||||
|
47 47 | field16: int | dict[int, str] # OK
|
||||||
|
|
||||||
|
PYI016.py:57:5: PYI016 [*] Duplicate union member `set[int]`
|
||||||
|
|
|
|
||||||
55 | int # foo
|
55 | int # foo
|
||||||
56 | ],
|
56 | ],
|
||||||
|
@ -205,7 +396,24 @@ PYI016.py:57:5: PYI016 Duplicate union member `set[int]`
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `set[int]`
|
= help: Remove duplicate union member `set[int]`
|
||||||
|
|
||||||
PYI016.py:63:28: PYI016 Duplicate union member `int`
|
ℹ Unsafe fix
|
||||||
|
50 50 | field17: dict[int, int] # OK
|
||||||
|
51 51 |
|
||||||
|
52 52 | # Should emit in cases with newlines
|
||||||
|
53 |-field18: typing.Union[
|
||||||
|
54 |- set[
|
||||||
|
55 |- int # foo
|
||||||
|
56 |- ],
|
||||||
|
57 |- set[
|
||||||
|
58 |- int # bar
|
||||||
|
59 |- ],
|
||||||
|
60 |-] # Error, newline and comment will not be emitted in message
|
||||||
|
53 |+field18: set[int] # Error, newline and comment will not be emitted in message
|
||||||
|
61 54 |
|
||||||
|
62 55 | # Should emit in cases with `typing.Union` instead of `|`
|
||||||
|
63 56 | field19: typing.Union[int, int] # Error
|
||||||
|
|
||||||
|
PYI016.py:63:28: PYI016 [*] Duplicate union member `int`
|
||||||
|
|
|
|
||||||
62 | # Should emit in cases with `typing.Union` instead of `|`
|
62 | # Should emit in cases with `typing.Union` instead of `|`
|
||||||
63 | field19: typing.Union[int, int] # Error
|
63 | field19: typing.Union[int, int] # Error
|
||||||
|
@ -215,7 +423,17 @@ PYI016.py:63:28: PYI016 Duplicate union member `int`
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `int`
|
= help: Remove duplicate union member `int`
|
||||||
|
|
||||||
PYI016.py:66:41: PYI016 Duplicate union member `int`
|
ℹ Safe fix
|
||||||
|
60 60 | ] # Error, newline and comment will not be emitted in message
|
||||||
|
61 61 |
|
||||||
|
62 62 | # Should emit in cases with `typing.Union` instead of `|`
|
||||||
|
63 |-field19: typing.Union[int, int] # Error
|
||||||
|
63 |+field19: int # Error
|
||||||
|
64 64 |
|
||||||
|
65 65 | # Should emit in cases with nested `typing.Union`
|
||||||
|
66 66 | field20: typing.Union[int, typing.Union[int, str]] # Error
|
||||||
|
|
||||||
|
PYI016.py:66:41: PYI016 [*] Duplicate union member `int`
|
||||||
|
|
|
|
||||||
65 | # Should emit in cases with nested `typing.Union`
|
65 | # Should emit in cases with nested `typing.Union`
|
||||||
66 | field20: typing.Union[int, typing.Union[int, str]] # Error
|
66 | field20: typing.Union[int, typing.Union[int, str]] # Error
|
||||||
|
@ -225,7 +443,17 @@ PYI016.py:66:41: PYI016 Duplicate union member `int`
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `int`
|
= help: Remove duplicate union member `int`
|
||||||
|
|
||||||
PYI016.py:69:28: PYI016 Duplicate union member `int`
|
ℹ Safe fix
|
||||||
|
63 63 | field19: typing.Union[int, int] # Error
|
||||||
|
64 64 |
|
||||||
|
65 65 | # Should emit in cases with nested `typing.Union`
|
||||||
|
66 |-field20: typing.Union[int, typing.Union[int, str]] # Error
|
||||||
|
66 |+field20: typing.Union[int, str] # Error
|
||||||
|
67 67 |
|
||||||
|
68 68 | # Should emit in cases with mixed `typing.Union` and `|`
|
||||||
|
69 69 | field21: typing.Union[int, int | str] # Error
|
||||||
|
|
||||||
|
PYI016.py:69:28: PYI016 [*] Duplicate union member `int`
|
||||||
|
|
|
|
||||||
68 | # Should emit in cases with mixed `typing.Union` and `|`
|
68 | # Should emit in cases with mixed `typing.Union` and `|`
|
||||||
69 | field21: typing.Union[int, int | str] # Error
|
69 | field21: typing.Union[int, int | str] # Error
|
||||||
|
@ -235,7 +463,17 @@ PYI016.py:69:28: PYI016 Duplicate union member `int`
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `int`
|
= help: Remove duplicate union member `int`
|
||||||
|
|
||||||
PYI016.py:72:41: PYI016 Duplicate union member `int`
|
ℹ Safe fix
|
||||||
|
66 66 | field20: typing.Union[int, typing.Union[int, str]] # Error
|
||||||
|
67 67 |
|
||||||
|
68 68 | # Should emit in cases with mixed `typing.Union` and `|`
|
||||||
|
69 |-field21: typing.Union[int, int | str] # Error
|
||||||
|
69 |+field21: int | str # Error
|
||||||
|
70 70 |
|
||||||
|
71 71 | # Should emit only once in cases with multiple nested `typing.Union`
|
||||||
|
72 72 | field22: typing.Union[int, typing.Union[int, typing.Union[int, int]]] # Error
|
||||||
|
|
||||||
|
PYI016.py:72:41: PYI016 [*] Duplicate union member `int`
|
||||||
|
|
|
|
||||||
71 | # Should emit only once in cases with multiple nested `typing.Union`
|
71 | # Should emit only once in cases with multiple nested `typing.Union`
|
||||||
72 | field22: typing.Union[int, typing.Union[int, typing.Union[int, int]]] # Error
|
72 | field22: typing.Union[int, typing.Union[int, typing.Union[int, int]]] # Error
|
||||||
|
@ -245,7 +483,17 @@ PYI016.py:72:41: PYI016 Duplicate union member `int`
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `int`
|
= help: Remove duplicate union member `int`
|
||||||
|
|
||||||
PYI016.py:72:59: PYI016 Duplicate union member `int`
|
ℹ Safe fix
|
||||||
|
69 69 | field21: typing.Union[int, int | str] # Error
|
||||||
|
70 70 |
|
||||||
|
71 71 | # Should emit only once in cases with multiple nested `typing.Union`
|
||||||
|
72 |-field22: typing.Union[int, typing.Union[int, typing.Union[int, int]]] # Error
|
||||||
|
72 |+field22: int # Error
|
||||||
|
73 73 |
|
||||||
|
74 74 | # Should emit in cases with newlines
|
||||||
|
75 75 | field23: set[ # foo
|
||||||
|
|
||||||
|
PYI016.py:72:59: PYI016 [*] Duplicate union member `int`
|
||||||
|
|
|
|
||||||
71 | # Should emit only once in cases with multiple nested `typing.Union`
|
71 | # Should emit only once in cases with multiple nested `typing.Union`
|
||||||
72 | field22: typing.Union[int, typing.Union[int, typing.Union[int, int]]] # Error
|
72 | field22: typing.Union[int, typing.Union[int, typing.Union[int, int]]] # Error
|
||||||
|
@ -255,7 +503,17 @@ PYI016.py:72:59: PYI016 Duplicate union member `int`
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `int`
|
= help: Remove duplicate union member `int`
|
||||||
|
|
||||||
PYI016.py:72:64: PYI016 Duplicate union member `int`
|
ℹ Safe fix
|
||||||
|
69 69 | field21: typing.Union[int, int | str] # Error
|
||||||
|
70 70 |
|
||||||
|
71 71 | # Should emit only once in cases with multiple nested `typing.Union`
|
||||||
|
72 |-field22: typing.Union[int, typing.Union[int, typing.Union[int, int]]] # Error
|
||||||
|
72 |+field22: int # Error
|
||||||
|
73 73 |
|
||||||
|
74 74 | # Should emit in cases with newlines
|
||||||
|
75 75 | field23: set[ # foo
|
||||||
|
|
||||||
|
PYI016.py:72:64: PYI016 [*] Duplicate union member `int`
|
||||||
|
|
|
|
||||||
71 | # Should emit only once in cases with multiple nested `typing.Union`
|
71 | # Should emit only once in cases with multiple nested `typing.Union`
|
||||||
72 | field22: typing.Union[int, typing.Union[int, typing.Union[int, int]]] # Error
|
72 | field22: typing.Union[int, typing.Union[int, typing.Union[int, int]]] # Error
|
||||||
|
@ -265,7 +523,17 @@ PYI016.py:72:64: PYI016 Duplicate union member `int`
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `int`
|
= help: Remove duplicate union member `int`
|
||||||
|
|
||||||
PYI016.py:76:12: PYI016 Duplicate union member `set[int]`
|
ℹ Safe fix
|
||||||
|
69 69 | field21: typing.Union[int, int | str] # Error
|
||||||
|
70 70 |
|
||||||
|
71 71 | # Should emit only once in cases with multiple nested `typing.Union`
|
||||||
|
72 |-field22: typing.Union[int, typing.Union[int, typing.Union[int, int]]] # Error
|
||||||
|
72 |+field22: int # Error
|
||||||
|
73 73 |
|
||||||
|
74 74 | # Should emit in cases with newlines
|
||||||
|
75 75 | field23: set[ # foo
|
||||||
|
|
||||||
|
PYI016.py:76:12: PYI016 [*] Duplicate union member `set[int]`
|
||||||
|
|
|
|
||||||
74 | # Should emit in cases with newlines
|
74 | # Should emit in cases with newlines
|
||||||
75 | field23: set[ # foo
|
75 | field23: set[ # foo
|
||||||
|
@ -276,7 +544,18 @@ PYI016.py:76:12: PYI016 Duplicate union member `set[int]`
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `set[int]`
|
= help: Remove duplicate union member `set[int]`
|
||||||
|
|
||||||
PYI016.py:81:41: PYI016 Duplicate union member `int`
|
ℹ Unsafe fix
|
||||||
|
72 72 | field22: typing.Union[int, typing.Union[int, typing.Union[int, int]]] # Error
|
||||||
|
73 73 |
|
||||||
|
74 74 | # Should emit in cases with newlines
|
||||||
|
75 |-field23: set[ # foo
|
||||||
|
76 |- int] | set[int]
|
||||||
|
75 |+field23: set[int]
|
||||||
|
77 76 |
|
||||||
|
78 77 | # Should emit twice (once for each `int` in the nested union, both of which are
|
||||||
|
79 78 | # duplicates of the outer `int`), but not three times (which would indicate that
|
||||||
|
|
||||||
|
PYI016.py:81:41: PYI016 [*] Duplicate union member `int`
|
||||||
|
|
|
|
||||||
79 | # duplicates of the outer `int`), but not three times (which would indicate that
|
79 | # duplicates of the outer `int`), but not three times (which would indicate that
|
||||||
80 | # we incorrectly re-checked the nested union).
|
80 | # we incorrectly re-checked the nested union).
|
||||||
|
@ -287,7 +566,17 @@ PYI016.py:81:41: PYI016 Duplicate union member `int`
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `int`
|
= help: Remove duplicate union member `int`
|
||||||
|
|
||||||
PYI016.py:81:46: PYI016 Duplicate union member `int`
|
ℹ Safe fix
|
||||||
|
78 78 | # Should emit twice (once for each `int` in the nested union, both of which are
|
||||||
|
79 79 | # duplicates of the outer `int`), but not three times (which would indicate that
|
||||||
|
80 80 | # we incorrectly re-checked the nested union).
|
||||||
|
81 |-field24: typing.Union[int, typing.Union[int, int]] # PYI016: Duplicate union member `int`
|
||||||
|
81 |+field24: int # PYI016: Duplicate union member `int`
|
||||||
|
82 82 |
|
||||||
|
83 83 | # Should emit twice (once for each `int` in the nested union, both of which are
|
||||||
|
84 84 | # duplicates of the outer `int`), but not three times (which would indicate that
|
||||||
|
|
||||||
|
PYI016.py:81:46: PYI016 [*] Duplicate union member `int`
|
||||||
|
|
|
|
||||||
79 | # duplicates of the outer `int`), but not three times (which would indicate that
|
79 | # duplicates of the outer `int`), but not three times (which would indicate that
|
||||||
80 | # we incorrectly re-checked the nested union).
|
80 | # we incorrectly re-checked the nested union).
|
||||||
|
@ -298,7 +587,17 @@ PYI016.py:81:46: PYI016 Duplicate union member `int`
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `int`
|
= help: Remove duplicate union member `int`
|
||||||
|
|
||||||
PYI016.py:86:28: PYI016 Duplicate union member `int`
|
ℹ Safe fix
|
||||||
|
78 78 | # Should emit twice (once for each `int` in the nested union, both of which are
|
||||||
|
79 79 | # duplicates of the outer `int`), but not three times (which would indicate that
|
||||||
|
80 80 | # we incorrectly re-checked the nested union).
|
||||||
|
81 |-field24: typing.Union[int, typing.Union[int, int]] # PYI016: Duplicate union member `int`
|
||||||
|
81 |+field24: int # PYI016: Duplicate union member `int`
|
||||||
|
82 82 |
|
||||||
|
83 83 | # Should emit twice (once for each `int` in the nested union, both of which are
|
||||||
|
84 84 | # duplicates of the outer `int`), but not three times (which would indicate that
|
||||||
|
|
||||||
|
PYI016.py:86:28: PYI016 [*] Duplicate union member `int`
|
||||||
|
|
|
|
||||||
84 | # duplicates of the outer `int`), but not three times (which would indicate that
|
84 | # duplicates of the outer `int`), but not three times (which would indicate that
|
||||||
85 | # we incorrectly re-checked the nested union).
|
85 | # we incorrectly re-checked the nested union).
|
||||||
|
@ -309,7 +608,17 @@ PYI016.py:86:28: PYI016 Duplicate union member `int`
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `int`
|
= help: Remove duplicate union member `int`
|
||||||
|
|
||||||
PYI016.py:86:34: PYI016 Duplicate union member `int`
|
ℹ Safe fix
|
||||||
|
83 83 | # Should emit twice (once for each `int` in the nested union, both of which are
|
||||||
|
84 84 | # duplicates of the outer `int`), but not three times (which would indicate that
|
||||||
|
85 85 | # we incorrectly re-checked the nested union).
|
||||||
|
86 |-field25: typing.Union[int, int | int] # PYI016: Duplicate union member `int`
|
||||||
|
86 |+field25: int # PYI016: Duplicate union member `int`
|
||||||
|
87 87 |
|
||||||
|
88 88 | # Should emit in cases with nested `typing.Union`
|
||||||
|
89 89 | field26: typing.Union[typing.Union[int, int]] # PYI016: Duplicate union member `int`
|
||||||
|
|
||||||
|
PYI016.py:86:34: PYI016 [*] Duplicate union member `int`
|
||||||
|
|
|
|
||||||
84 | # duplicates of the outer `int`), but not three times (which would indicate that
|
84 | # duplicates of the outer `int`), but not three times (which would indicate that
|
||||||
85 | # we incorrectly re-checked the nested union).
|
85 | # we incorrectly re-checked the nested union).
|
||||||
|
@ -320,7 +629,17 @@ PYI016.py:86:34: PYI016 Duplicate union member `int`
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `int`
|
= help: Remove duplicate union member `int`
|
||||||
|
|
||||||
PYI016.py:89:41: PYI016 Duplicate union member `int`
|
ℹ Safe fix
|
||||||
|
83 83 | # Should emit twice (once for each `int` in the nested union, both of which are
|
||||||
|
84 84 | # duplicates of the outer `int`), but not three times (which would indicate that
|
||||||
|
85 85 | # we incorrectly re-checked the nested union).
|
||||||
|
86 |-field25: typing.Union[int, int | int] # PYI016: Duplicate union member `int`
|
||||||
|
86 |+field25: int # PYI016: Duplicate union member `int`
|
||||||
|
87 87 |
|
||||||
|
88 88 | # Should emit in cases with nested `typing.Union`
|
||||||
|
89 89 | field26: typing.Union[typing.Union[int, int]] # PYI016: Duplicate union member `int`
|
||||||
|
|
||||||
|
PYI016.py:89:41: PYI016 [*] Duplicate union member `int`
|
||||||
|
|
|
|
||||||
88 | # Should emit in cases with nested `typing.Union`
|
88 | # Should emit in cases with nested `typing.Union`
|
||||||
89 | field26: typing.Union[typing.Union[int, int]] # PYI016: Duplicate union member `int`
|
89 | field26: typing.Union[typing.Union[int, int]] # PYI016: Duplicate union member `int`
|
||||||
|
@ -330,7 +649,17 @@ PYI016.py:89:41: PYI016 Duplicate union member `int`
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `int`
|
= help: Remove duplicate union member `int`
|
||||||
|
|
||||||
PYI016.py:92:54: PYI016 Duplicate union member `int`
|
ℹ Safe fix
|
||||||
|
86 86 | field25: typing.Union[int, int | int] # PYI016: Duplicate union member `int`
|
||||||
|
87 87 |
|
||||||
|
88 88 | # Should emit in cases with nested `typing.Union`
|
||||||
|
89 |-field26: typing.Union[typing.Union[int, int]] # PYI016: Duplicate union member `int`
|
||||||
|
89 |+field26: int # PYI016: Duplicate union member `int`
|
||||||
|
90 90 |
|
||||||
|
91 91 | # Should emit in cases with nested `typing.Union`
|
||||||
|
92 92 | field27: typing.Union[typing.Union[typing.Union[int, int]]] # PYI016: Duplicate union member `int`
|
||||||
|
|
||||||
|
PYI016.py:92:54: PYI016 [*] Duplicate union member `int`
|
||||||
|
|
|
|
||||||
91 | # Should emit in cases with nested `typing.Union`
|
91 | # Should emit in cases with nested `typing.Union`
|
||||||
92 | field27: typing.Union[typing.Union[typing.Union[int, int]]] # PYI016: Duplicate union member `int`
|
92 | field27: typing.Union[typing.Union[typing.Union[int, int]]] # PYI016: Duplicate union member `int`
|
||||||
|
@ -340,7 +669,17 @@ PYI016.py:92:54: PYI016 Duplicate union member `int`
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `int`
|
= help: Remove duplicate union member `int`
|
||||||
|
|
||||||
PYI016.py:95:29: PYI016 Duplicate union member `int`
|
ℹ Safe fix
|
||||||
|
89 89 | field26: typing.Union[typing.Union[int, int]] # PYI016: Duplicate union member `int`
|
||||||
|
90 90 |
|
||||||
|
91 91 | # Should emit in cases with nested `typing.Union`
|
||||||
|
92 |-field27: typing.Union[typing.Union[typing.Union[int, int]]] # PYI016: Duplicate union member `int`
|
||||||
|
92 |+field27: int # PYI016: Duplicate union member `int`
|
||||||
|
93 93 |
|
||||||
|
94 94 | # Should emit in cases with mixed `typing.Union` and `|`
|
||||||
|
95 95 | field28: typing.Union[int | int] # Error
|
||||||
|
|
||||||
|
PYI016.py:95:29: PYI016 [*] Duplicate union member `int`
|
||||||
|
|
|
|
||||||
94 | # Should emit in cases with mixed `typing.Union` and `|`
|
94 | # Should emit in cases with mixed `typing.Union` and `|`
|
||||||
95 | field28: typing.Union[int | int] # Error
|
95 | field28: typing.Union[int | int] # Error
|
||||||
|
@ -350,7 +689,17 @@ PYI016.py:95:29: PYI016 Duplicate union member `int`
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `int`
|
= help: Remove duplicate union member `int`
|
||||||
|
|
||||||
PYI016.py:98:54: PYI016 Duplicate union member `int`
|
ℹ Safe fix
|
||||||
|
92 92 | field27: typing.Union[typing.Union[typing.Union[int, int]]] # PYI016: Duplicate union member `int`
|
||||||
|
93 93 |
|
||||||
|
94 94 | # Should emit in cases with mixed `typing.Union` and `|`
|
||||||
|
95 |-field28: typing.Union[int | int] # Error
|
||||||
|
95 |+field28: int # Error
|
||||||
|
96 96 |
|
||||||
|
97 97 | # Should emit twice in cases with multiple nested `typing.Union`
|
||||||
|
98 98 | field29: typing.Union[int, typing.Union[typing.Union[int, int]]] # Error
|
||||||
|
|
||||||
|
PYI016.py:98:54: PYI016 [*] Duplicate union member `int`
|
||||||
|
|
|
|
||||||
97 | # Should emit twice in cases with multiple nested `typing.Union`
|
97 | # Should emit twice in cases with multiple nested `typing.Union`
|
||||||
98 | field29: typing.Union[int, typing.Union[typing.Union[int, int]]] # Error
|
98 | field29: typing.Union[int, typing.Union[typing.Union[int, int]]] # Error
|
||||||
|
@ -360,7 +709,17 @@ PYI016.py:98:54: PYI016 Duplicate union member `int`
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `int`
|
= help: Remove duplicate union member `int`
|
||||||
|
|
||||||
PYI016.py:98:59: PYI016 Duplicate union member `int`
|
ℹ Safe fix
|
||||||
|
95 95 | field28: typing.Union[int | int] # Error
|
||||||
|
96 96 |
|
||||||
|
97 97 | # Should emit twice in cases with multiple nested `typing.Union`
|
||||||
|
98 |-field29: typing.Union[int, typing.Union[typing.Union[int, int]]] # Error
|
||||||
|
98 |+field29: int # Error
|
||||||
|
99 99 |
|
||||||
|
100 100 | # Should emit once in cases with multiple nested `typing.Union`
|
||||||
|
101 101 | field30: typing.Union[int, typing.Union[typing.Union[int, str]]] # Error
|
||||||
|
|
||||||
|
PYI016.py:98:59: PYI016 [*] Duplicate union member `int`
|
||||||
|
|
|
|
||||||
97 | # Should emit twice in cases with multiple nested `typing.Union`
|
97 | # Should emit twice in cases with multiple nested `typing.Union`
|
||||||
98 | field29: typing.Union[int, typing.Union[typing.Union[int, int]]] # Error
|
98 | field29: typing.Union[int, typing.Union[typing.Union[int, int]]] # Error
|
||||||
|
@ -370,7 +729,17 @@ PYI016.py:98:59: PYI016 Duplicate union member `int`
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `int`
|
= help: Remove duplicate union member `int`
|
||||||
|
|
||||||
PYI016.py:101:54: PYI016 Duplicate union member `int`
|
ℹ Safe fix
|
||||||
|
95 95 | field28: typing.Union[int | int] # Error
|
||||||
|
96 96 |
|
||||||
|
97 97 | # Should emit twice in cases with multiple nested `typing.Union`
|
||||||
|
98 |-field29: typing.Union[int, typing.Union[typing.Union[int, int]]] # Error
|
||||||
|
98 |+field29: int # Error
|
||||||
|
99 99 |
|
||||||
|
100 100 | # Should emit once in cases with multiple nested `typing.Union`
|
||||||
|
101 101 | field30: typing.Union[int, typing.Union[typing.Union[int, str]]] # Error
|
||||||
|
|
||||||
|
PYI016.py:101:54: PYI016 [*] Duplicate union member `int`
|
||||||
|
|
|
|
||||||
100 | # Should emit once in cases with multiple nested `typing.Union`
|
100 | # Should emit once in cases with multiple nested `typing.Union`
|
||||||
101 | field30: typing.Union[int, typing.Union[typing.Union[int, str]]] # Error
|
101 | field30: typing.Union[int, typing.Union[typing.Union[int, str]]] # Error
|
||||||
|
@ -380,7 +749,17 @@ PYI016.py:101:54: PYI016 Duplicate union member `int`
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `int`
|
= help: Remove duplicate union member `int`
|
||||||
|
|
||||||
PYI016.py:104:49: PYI016 Duplicate union member `int`
|
ℹ Safe fix
|
||||||
|
98 98 | field29: typing.Union[int, typing.Union[typing.Union[int, int]]] # Error
|
||||||
|
99 99 |
|
||||||
|
100 100 | # Should emit once in cases with multiple nested `typing.Union`
|
||||||
|
101 |-field30: typing.Union[int, typing.Union[typing.Union[int, str]]] # Error
|
||||||
|
101 |+field30: typing.Union[int, str] # Error
|
||||||
|
102 102 |
|
||||||
|
103 103 | # Should emit once, and fix to `typing.Union[float, int]`
|
||||||
|
104 104 | field31: typing.Union[float, typing.Union[int | int]] # Error
|
||||||
|
|
||||||
|
PYI016.py:104:49: PYI016 [*] Duplicate union member `int`
|
||||||
|
|
|
|
||||||
103 | # Should emit once, and fix to `typing.Union[float, int]`
|
103 | # Should emit once, and fix to `typing.Union[float, int]`
|
||||||
104 | field31: typing.Union[float, typing.Union[int | int]] # Error
|
104 | field31: typing.Union[float, typing.Union[int | int]] # Error
|
||||||
|
@ -390,7 +769,17 @@ PYI016.py:104:49: PYI016 Duplicate union member `int`
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `int`
|
= help: Remove duplicate union member `int`
|
||||||
|
|
||||||
PYI016.py:107:49: PYI016 Duplicate union member `int`
|
ℹ Safe fix
|
||||||
|
101 101 | field30: typing.Union[int, typing.Union[typing.Union[int, str]]] # Error
|
||||||
|
102 102 |
|
||||||
|
103 103 | # Should emit once, and fix to `typing.Union[float, int]`
|
||||||
|
104 |-field31: typing.Union[float, typing.Union[int | int]] # Error
|
||||||
|
104 |+field31: float | int # Error
|
||||||
|
105 105 |
|
||||||
|
106 106 | # Should emit once, and fix to `typing.Union[float, int]`
|
||||||
|
107 107 | field32: typing.Union[float, typing.Union[int | int | int]] # Error
|
||||||
|
|
||||||
|
PYI016.py:107:49: PYI016 [*] Duplicate union member `int`
|
||||||
|
|
|
|
||||||
106 | # Should emit once, and fix to `typing.Union[float, int]`
|
106 | # Should emit once, and fix to `typing.Union[float, int]`
|
||||||
107 | field32: typing.Union[float, typing.Union[int | int | int]] # Error
|
107 | field32: typing.Union[float, typing.Union[int | int | int]] # Error
|
||||||
|
@ -400,7 +789,17 @@ PYI016.py:107:49: PYI016 Duplicate union member `int`
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `int`
|
= help: Remove duplicate union member `int`
|
||||||
|
|
||||||
PYI016.py:107:55: PYI016 Duplicate union member `int`
|
ℹ Safe fix
|
||||||
|
104 104 | field31: typing.Union[float, typing.Union[int | int]] # Error
|
||||||
|
105 105 |
|
||||||
|
106 106 | # Should emit once, and fix to `typing.Union[float, int]`
|
||||||
|
107 |-field32: typing.Union[float, typing.Union[int | int | int]] # Error
|
||||||
|
107 |+field32: float | int # Error
|
||||||
|
108 108 |
|
||||||
|
109 109 | # Test case for mixed union type fix
|
||||||
|
110 110 | field33: typing.Union[typing.Union[int | int] | typing.Union[int | int]] # Error
|
||||||
|
|
||||||
|
PYI016.py:107:55: PYI016 [*] Duplicate union member `int`
|
||||||
|
|
|
|
||||||
106 | # Should emit once, and fix to `typing.Union[float, int]`
|
106 | # Should emit once, and fix to `typing.Union[float, int]`
|
||||||
107 | field32: typing.Union[float, typing.Union[int | int | int]] # Error
|
107 | field32: typing.Union[float, typing.Union[int | int | int]] # Error
|
||||||
|
@ -410,7 +809,17 @@ PYI016.py:107:55: PYI016 Duplicate union member `int`
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `int`
|
= help: Remove duplicate union member `int`
|
||||||
|
|
||||||
PYI016.py:110:42: PYI016 Duplicate union member `int`
|
ℹ Safe fix
|
||||||
|
104 104 | field31: typing.Union[float, typing.Union[int | int]] # Error
|
||||||
|
105 105 |
|
||||||
|
106 106 | # Should emit once, and fix to `typing.Union[float, int]`
|
||||||
|
107 |-field32: typing.Union[float, typing.Union[int | int | int]] # Error
|
||||||
|
107 |+field32: float | int # Error
|
||||||
|
108 108 |
|
||||||
|
109 109 | # Test case for mixed union type fix
|
||||||
|
110 110 | field33: typing.Union[typing.Union[int | int] | typing.Union[int | int]] # Error
|
||||||
|
|
||||||
|
PYI016.py:110:42: PYI016 [*] Duplicate union member `int`
|
||||||
|
|
|
|
||||||
109 | # Test case for mixed union type fix
|
109 | # Test case for mixed union type fix
|
||||||
110 | field33: typing.Union[typing.Union[int | int] | typing.Union[int | int]] # Error
|
110 | field33: typing.Union[typing.Union[int | int] | typing.Union[int | int]] # Error
|
||||||
|
@ -420,7 +829,17 @@ PYI016.py:110:42: PYI016 Duplicate union member `int`
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `int`
|
= help: Remove duplicate union member `int`
|
||||||
|
|
||||||
PYI016.py:110:62: PYI016 Duplicate union member `int`
|
ℹ Safe fix
|
||||||
|
107 107 | field32: typing.Union[float, typing.Union[int | int | int]] # Error
|
||||||
|
108 108 |
|
||||||
|
109 109 | # Test case for mixed union type fix
|
||||||
|
110 |-field33: typing.Union[typing.Union[int | int] | typing.Union[int | int]] # Error
|
||||||
|
110 |+field33: int # Error
|
||||||
|
111 111 |
|
||||||
|
112 112 | # Test case for mixed union type
|
||||||
|
113 113 | field34: typing.Union[list[int], str] | typing.Union[bytes, list[int]] # Error
|
||||||
|
|
||||||
|
PYI016.py:110:62: PYI016 [*] Duplicate union member `int`
|
||||||
|
|
|
|
||||||
109 | # Test case for mixed union type fix
|
109 | # Test case for mixed union type fix
|
||||||
110 | field33: typing.Union[typing.Union[int | int] | typing.Union[int | int]] # Error
|
110 | field33: typing.Union[typing.Union[int | int] | typing.Union[int | int]] # Error
|
||||||
|
@ -430,7 +849,17 @@ PYI016.py:110:62: PYI016 Duplicate union member `int`
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `int`
|
= help: Remove duplicate union member `int`
|
||||||
|
|
||||||
PYI016.py:110:68: PYI016 Duplicate union member `int`
|
ℹ Safe fix
|
||||||
|
107 107 | field32: typing.Union[float, typing.Union[int | int | int]] # Error
|
||||||
|
108 108 |
|
||||||
|
109 109 | # Test case for mixed union type fix
|
||||||
|
110 |-field33: typing.Union[typing.Union[int | int] | typing.Union[int | int]] # Error
|
||||||
|
110 |+field33: int # Error
|
||||||
|
111 111 |
|
||||||
|
112 112 | # Test case for mixed union type
|
||||||
|
113 113 | field34: typing.Union[list[int], str] | typing.Union[bytes, list[int]] # Error
|
||||||
|
|
||||||
|
PYI016.py:110:68: PYI016 [*] Duplicate union member `int`
|
||||||
|
|
|
|
||||||
109 | # Test case for mixed union type fix
|
109 | # Test case for mixed union type fix
|
||||||
110 | field33: typing.Union[typing.Union[int | int] | typing.Union[int | int]] # Error
|
110 | field33: typing.Union[typing.Union[int | int] | typing.Union[int | int]] # Error
|
||||||
|
@ -440,10 +869,51 @@ PYI016.py:110:68: PYI016 Duplicate union member `int`
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `int`
|
= help: Remove duplicate union member `int`
|
||||||
|
|
||||||
PYI016.py:113:61: PYI016 Duplicate union member `list[int]`
|
ℹ Safe fix
|
||||||
|
107 107 | field32: typing.Union[float, typing.Union[int | int | int]] # Error
|
||||||
|
108 108 |
|
||||||
|
109 109 | # Test case for mixed union type fix
|
||||||
|
110 |-field33: typing.Union[typing.Union[int | int] | typing.Union[int | int]] # Error
|
||||||
|
110 |+field33: int # Error
|
||||||
|
111 111 |
|
||||||
|
112 112 | # Test case for mixed union type
|
||||||
|
113 113 | field34: typing.Union[list[int], str] | typing.Union[bytes, list[int]] # Error
|
||||||
|
|
||||||
|
PYI016.py:113:61: PYI016 [*] Duplicate union member `list[int]`
|
||||||
|
|
|
|
||||||
112 | # Test case for mixed union type
|
112 | # Test case for mixed union type
|
||||||
113 | field34: typing.Union[list[int], str] | typing.Union[bytes, list[int]] # Error
|
113 | field34: typing.Union[list[int], str] | typing.Union[bytes, list[int]] # Error
|
||||||
| ^^^^^^^^^ PYI016
|
| ^^^^^^^^^ PYI016
|
||||||
|
114 |
|
||||||
|
115 | field35: "int | str | int" # Error
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `list[int]`
|
= help: Remove duplicate union member `list[int]`
|
||||||
|
|
||||||
|
ℹ Safe fix
|
||||||
|
110 110 | field33: typing.Union[typing.Union[int | int] | typing.Union[int | int]] # Error
|
||||||
|
111 111 |
|
||||||
|
112 112 | # Test case for mixed union type
|
||||||
|
113 |-field34: typing.Union[list[int], str] | typing.Union[bytes, list[int]] # Error
|
||||||
|
113 |+field34: typing.Union[list[int], str, bytes] # Error
|
||||||
|
114 114 |
|
||||||
|
115 115 | field35: "int | str | int" # Error
|
||||||
|
116 116 |
|
||||||
|
|
||||||
|
PYI016.py:115:23: PYI016 [*] Duplicate union member `int`
|
||||||
|
|
|
||||||
|
113 | field34: typing.Union[list[int], str] | typing.Union[bytes, list[int]] # Error
|
||||||
|
114 |
|
||||||
|
115 | field35: "int | str | int" # Error
|
||||||
|
| ^^^ PYI016
|
||||||
|
|
|
||||||
|
= help: Remove duplicate union member `int`
|
||||||
|
|
||||||
|
ℹ Safe fix
|
||||||
|
112 112 | # Test case for mixed union type
|
||||||
|
113 113 | field34: typing.Union[list[int], str] | typing.Union[bytes, list[int]] # Error
|
||||||
|
114 114 |
|
||||||
|
115 |-field35: "int | str | int" # Error
|
||||||
|
115 |+field35: "int | str" # Error
|
||||||
|
116 116 |
|
||||||
|
117 117 |
|
||||||
|
118 118 |
|
||||||
|
|
|
@ -1,7 +1,8 @@
|
||||||
---
|
---
|
||||||
source: crates/ruff_linter/src/rules/flake8_pyi/mod.rs
|
source: crates/ruff_linter/src/rules/flake8_pyi/mod.rs
|
||||||
|
snapshot_kind: text
|
||||||
---
|
---
|
||||||
PYI016.pyi:7:15: PYI016 Duplicate union member `str`
|
PYI016.pyi:7:15: PYI016 [*] Duplicate union member `str`
|
||||||
|
|
|
|
||||||
6 | # Should emit for duplicate field types.
|
6 | # Should emit for duplicate field types.
|
||||||
7 | field2: str | str # PYI016: Duplicate union member `str`
|
7 | field2: str | str # PYI016: Duplicate union member `str`
|
||||||
|
@ -11,7 +12,17 @@ PYI016.pyi:7:15: PYI016 Duplicate union member `str`
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `str`
|
= help: Remove duplicate union member `str`
|
||||||
|
|
||||||
PYI016.pyi:10:23: PYI016 Duplicate union member `int`
|
ℹ Safe fix
|
||||||
|
4 4 | field1: str
|
||||||
|
5 5 |
|
||||||
|
6 6 | # Should emit for duplicate field types.
|
||||||
|
7 |-field2: str | str # PYI016: Duplicate union member `str`
|
||||||
|
7 |+field2: str # PYI016: Duplicate union member `str`
|
||||||
|
8 8 |
|
||||||
|
9 9 | # Should emit for union types in arguments.
|
||||||
|
10 10 | def func1(arg1: int | int): # PYI016: Duplicate union member `int`
|
||||||
|
|
||||||
|
PYI016.pyi:10:23: PYI016 [*] Duplicate union member `int`
|
||||||
|
|
|
|
||||||
9 | # Should emit for union types in arguments.
|
9 | # Should emit for union types in arguments.
|
||||||
10 | def func1(arg1: int | int): # PYI016: Duplicate union member `int`
|
10 | def func1(arg1: int | int): # PYI016: Duplicate union member `int`
|
||||||
|
@ -20,7 +31,17 @@ PYI016.pyi:10:23: PYI016 Duplicate union member `int`
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `int`
|
= help: Remove duplicate union member `int`
|
||||||
|
|
||||||
PYI016.pyi:14:22: PYI016 Duplicate union member `str`
|
ℹ Safe fix
|
||||||
|
7 7 | field2: str | str # PYI016: Duplicate union member `str`
|
||||||
|
8 8 |
|
||||||
|
9 9 | # Should emit for union types in arguments.
|
||||||
|
10 |-def func1(arg1: int | int): # PYI016: Duplicate union member `int`
|
||||||
|
10 |+def func1(arg1: int): # PYI016: Duplicate union member `int`
|
||||||
|
11 11 | print(arg1)
|
||||||
|
12 12 |
|
||||||
|
13 13 | # Should emit for unions in return types.
|
||||||
|
|
||||||
|
PYI016.pyi:14:22: PYI016 [*] Duplicate union member `str`
|
||||||
|
|
|
|
||||||
13 | # Should emit for unions in return types.
|
13 | # Should emit for unions in return types.
|
||||||
14 | def func2() -> str | str: # PYI016: Duplicate union member `str`
|
14 | def func2() -> str | str: # PYI016: Duplicate union member `str`
|
||||||
|
@ -29,7 +50,17 @@ PYI016.pyi:14:22: PYI016 Duplicate union member `str`
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `str`
|
= help: Remove duplicate union member `str`
|
||||||
|
|
||||||
PYI016.pyi:18:15: PYI016 Duplicate union member `str`
|
ℹ Safe fix
|
||||||
|
11 11 | print(arg1)
|
||||||
|
12 12 |
|
||||||
|
13 13 | # Should emit for unions in return types.
|
||||||
|
14 |-def func2() -> str | str: # PYI016: Duplicate union member `str`
|
||||||
|
14 |+def func2() -> str: # PYI016: Duplicate union member `str`
|
||||||
|
15 15 | return "my string"
|
||||||
|
16 16 |
|
||||||
|
17 17 | # Should emit in longer unions, even if not directly adjacent.
|
||||||
|
|
||||||
|
PYI016.pyi:18:15: PYI016 [*] Duplicate union member `str`
|
||||||
|
|
|
|
||||||
17 | # Should emit in longer unions, even if not directly adjacent.
|
17 | # Should emit in longer unions, even if not directly adjacent.
|
||||||
18 | field3: str | str | int # PYI016: Duplicate union member `str`
|
18 | field3: str | str | int # PYI016: Duplicate union member `str`
|
||||||
|
@ -39,7 +70,17 @@ PYI016.pyi:18:15: PYI016 Duplicate union member `str`
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `str`
|
= help: Remove duplicate union member `str`
|
||||||
|
|
||||||
PYI016.pyi:19:15: PYI016 Duplicate union member `int`
|
ℹ Safe fix
|
||||||
|
15 15 | return "my string"
|
||||||
|
16 16 |
|
||||||
|
17 17 | # Should emit in longer unions, even if not directly adjacent.
|
||||||
|
18 |-field3: str | str | int # PYI016: Duplicate union member `str`
|
||||||
|
18 |+field3: str | int # PYI016: Duplicate union member `str`
|
||||||
|
19 19 | field4: int | int | str # PYI016: Duplicate union member `int`
|
||||||
|
20 20 | field5: str | int | str # PYI016: Duplicate union member `str`
|
||||||
|
21 21 | field6: int | bool | str | int # PYI016: Duplicate union member `int`
|
||||||
|
|
||||||
|
PYI016.pyi:19:15: PYI016 [*] Duplicate union member `int`
|
||||||
|
|
|
|
||||||
17 | # Should emit in longer unions, even if not directly adjacent.
|
17 | # Should emit in longer unions, even if not directly adjacent.
|
||||||
18 | field3: str | str | int # PYI016: Duplicate union member `str`
|
18 | field3: str | str | int # PYI016: Duplicate union member `str`
|
||||||
|
@ -50,7 +91,17 @@ PYI016.pyi:19:15: PYI016 Duplicate union member `int`
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `int`
|
= help: Remove duplicate union member `int`
|
||||||
|
|
||||||
PYI016.pyi:20:21: PYI016 Duplicate union member `str`
|
ℹ Safe fix
|
||||||
|
16 16 |
|
||||||
|
17 17 | # Should emit in longer unions, even if not directly adjacent.
|
||||||
|
18 18 | field3: str | str | int # PYI016: Duplicate union member `str`
|
||||||
|
19 |-field4: int | int | str # PYI016: Duplicate union member `int`
|
||||||
|
19 |+field4: int | str # PYI016: Duplicate union member `int`
|
||||||
|
20 20 | field5: str | int | str # PYI016: Duplicate union member `str`
|
||||||
|
21 21 | field6: int | bool | str | int # PYI016: Duplicate union member `int`
|
||||||
|
22 22 |
|
||||||
|
|
||||||
|
PYI016.pyi:20:21: PYI016 [*] Duplicate union member `str`
|
||||||
|
|
|
|
||||||
18 | field3: str | str | int # PYI016: Duplicate union member `str`
|
18 | field3: str | str | int # PYI016: Duplicate union member `str`
|
||||||
19 | field4: int | int | str # PYI016: Duplicate union member `int`
|
19 | field4: int | int | str # PYI016: Duplicate union member `int`
|
||||||
|
@ -60,7 +111,17 @@ PYI016.pyi:20:21: PYI016 Duplicate union member `str`
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `str`
|
= help: Remove duplicate union member `str`
|
||||||
|
|
||||||
PYI016.pyi:21:28: PYI016 Duplicate union member `int`
|
ℹ Safe fix
|
||||||
|
17 17 | # Should emit in longer unions, even if not directly adjacent.
|
||||||
|
18 18 | field3: str | str | int # PYI016: Duplicate union member `str`
|
||||||
|
19 19 | field4: int | int | str # PYI016: Duplicate union member `int`
|
||||||
|
20 |-field5: str | int | str # PYI016: Duplicate union member `str`
|
||||||
|
20 |+field5: str | int # PYI016: Duplicate union member `str`
|
||||||
|
21 21 | field6: int | bool | str | int # PYI016: Duplicate union member `int`
|
||||||
|
22 22 |
|
||||||
|
23 23 | # Shouldn't emit for non-type unions.
|
||||||
|
|
||||||
|
PYI016.pyi:21:28: PYI016 [*] Duplicate union member `int`
|
||||||
|
|
|
|
||||||
19 | field4: int | int | str # PYI016: Duplicate union member `int`
|
19 | field4: int | int | str # PYI016: Duplicate union member `int`
|
||||||
20 | field5: str | int | str # PYI016: Duplicate union member `str`
|
20 | field5: str | int | str # PYI016: Duplicate union member `str`
|
||||||
|
@ -71,7 +132,17 @@ PYI016.pyi:21:28: PYI016 Duplicate union member `int`
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `int`
|
= help: Remove duplicate union member `int`
|
||||||
|
|
||||||
PYI016.pyi:27:22: PYI016 Duplicate union member `int`
|
ℹ Safe fix
|
||||||
|
18 18 | field3: str | str | int # PYI016: Duplicate union member `str`
|
||||||
|
19 19 | field4: int | int | str # PYI016: Duplicate union member `int`
|
||||||
|
20 20 | field5: str | int | str # PYI016: Duplicate union member `str`
|
||||||
|
21 |-field6: int | bool | str | int # PYI016: Duplicate union member `int`
|
||||||
|
21 |+field6: int | bool | str # PYI016: Duplicate union member `int`
|
||||||
|
22 22 |
|
||||||
|
23 23 | # Shouldn't emit for non-type unions.
|
||||||
|
24 24 | field7 = str | str
|
||||||
|
|
||||||
|
PYI016.pyi:27:22: PYI016 [*] Duplicate union member `int`
|
||||||
|
|
|
|
||||||
26 | # Should emit for strangely-bracketed unions.
|
26 | # Should emit for strangely-bracketed unions.
|
||||||
27 | field8: int | (str | int) # PYI016: Duplicate union member `int`
|
27 | field8: int | (str | int) # PYI016: Duplicate union member `int`
|
||||||
|
@ -81,7 +152,17 @@ PYI016.pyi:27:22: PYI016 Duplicate union member `int`
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `int`
|
= help: Remove duplicate union member `int`
|
||||||
|
|
||||||
PYI016.pyi:30:16: PYI016 Duplicate union member `int`
|
ℹ Safe fix
|
||||||
|
24 24 | field7 = str | str
|
||||||
|
25 25 |
|
||||||
|
26 26 | # Should emit for strangely-bracketed unions.
|
||||||
|
27 |-field8: int | (str | int) # PYI016: Duplicate union member `int`
|
||||||
|
27 |+field8: int | str # PYI016: Duplicate union member `int`
|
||||||
|
28 28 |
|
||||||
|
29 29 | # Should handle user brackets when fixing.
|
||||||
|
30 30 | field9: int | (int | str) # PYI016: Duplicate union member `int`
|
||||||
|
|
||||||
|
PYI016.pyi:30:16: PYI016 [*] Duplicate union member `int`
|
||||||
|
|
|
|
||||||
29 | # Should handle user brackets when fixing.
|
29 | # Should handle user brackets when fixing.
|
||||||
30 | field9: int | (int | str) # PYI016: Duplicate union member `int`
|
30 | field9: int | (int | str) # PYI016: Duplicate union member `int`
|
||||||
|
@ -90,7 +171,17 @@ PYI016.pyi:30:16: PYI016 Duplicate union member `int`
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `int`
|
= help: Remove duplicate union member `int`
|
||||||
|
|
||||||
PYI016.pyi:31:24: PYI016 Duplicate union member `str`
|
ℹ Safe fix
|
||||||
|
27 27 | field8: int | (str | int) # PYI016: Duplicate union member `int`
|
||||||
|
28 28 |
|
||||||
|
29 29 | # Should handle user brackets when fixing.
|
||||||
|
30 |-field9: int | (int | str) # PYI016: Duplicate union member `int`
|
||||||
|
30 |+field9: int | str # PYI016: Duplicate union member `int`
|
||||||
|
31 31 | field10: (str | int) | str # PYI016: Duplicate union member `str`
|
||||||
|
32 32 |
|
||||||
|
33 33 | # Should emit for nested unions.
|
||||||
|
|
||||||
|
PYI016.pyi:31:24: PYI016 [*] Duplicate union member `str`
|
||||||
|
|
|
|
||||||
29 | # Should handle user brackets when fixing.
|
29 | # Should handle user brackets when fixing.
|
||||||
30 | field9: int | (int | str) # PYI016: Duplicate union member `int`
|
30 | field9: int | (int | str) # PYI016: Duplicate union member `int`
|
||||||
|
@ -101,7 +192,17 @@ PYI016.pyi:31:24: PYI016 Duplicate union member `str`
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `str`
|
= help: Remove duplicate union member `str`
|
||||||
|
|
||||||
PYI016.pyi:34:21: PYI016 Duplicate union member `int`
|
ℹ Safe fix
|
||||||
|
28 28 |
|
||||||
|
29 29 | # Should handle user brackets when fixing.
|
||||||
|
30 30 | field9: int | (int | str) # PYI016: Duplicate union member `int`
|
||||||
|
31 |-field10: (str | int) | str # PYI016: Duplicate union member `str`
|
||||||
|
31 |+field10: str | int # PYI016: Duplicate union member `str`
|
||||||
|
32 32 |
|
||||||
|
33 33 | # Should emit for nested unions.
|
||||||
|
34 34 | field11: dict[int | int, str]
|
||||||
|
|
||||||
|
PYI016.pyi:34:21: PYI016 [*] Duplicate union member `int`
|
||||||
|
|
|
|
||||||
33 | # Should emit for nested unions.
|
33 | # Should emit for nested unions.
|
||||||
34 | field11: dict[int | int, str]
|
34 | field11: dict[int | int, str]
|
||||||
|
@ -111,7 +212,17 @@ PYI016.pyi:34:21: PYI016 Duplicate union member `int`
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `int`
|
= help: Remove duplicate union member `int`
|
||||||
|
|
||||||
PYI016.pyi:37:16: PYI016 Duplicate union member `int`
|
ℹ Safe fix
|
||||||
|
31 31 | field10: (str | int) | str # PYI016: Duplicate union member `str`
|
||||||
|
32 32 |
|
||||||
|
33 33 | # Should emit for nested unions.
|
||||||
|
34 |-field11: dict[int | int, str]
|
||||||
|
34 |+field11: dict[int, str]
|
||||||
|
35 35 |
|
||||||
|
36 36 | # Should emit for unions with more than two cases
|
||||||
|
37 37 | field12: int | int | int # Error
|
||||||
|
|
||||||
|
PYI016.pyi:37:16: PYI016 [*] Duplicate union member `int`
|
||||||
|
|
|
|
||||||
36 | # Should emit for unions with more than two cases
|
36 | # Should emit for unions with more than two cases
|
||||||
37 | field12: int | int | int # Error
|
37 | field12: int | int | int # Error
|
||||||
|
@ -120,7 +231,17 @@ PYI016.pyi:37:16: PYI016 Duplicate union member `int`
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `int`
|
= help: Remove duplicate union member `int`
|
||||||
|
|
||||||
PYI016.pyi:37:22: PYI016 Duplicate union member `int`
|
ℹ Safe fix
|
||||||
|
34 34 | field11: dict[int | int, str]
|
||||||
|
35 35 |
|
||||||
|
36 36 | # Should emit for unions with more than two cases
|
||||||
|
37 |-field12: int | int | int # Error
|
||||||
|
37 |+field12: int # Error
|
||||||
|
38 38 | field13: int | int | int | int # Error
|
||||||
|
39 39 |
|
||||||
|
40 40 | # Should emit for unions with more than two cases, even if not directly adjacent
|
||||||
|
|
||||||
|
PYI016.pyi:37:22: PYI016 [*] Duplicate union member `int`
|
||||||
|
|
|
|
||||||
36 | # Should emit for unions with more than two cases
|
36 | # Should emit for unions with more than two cases
|
||||||
37 | field12: int | int | int # Error
|
37 | field12: int | int | int # Error
|
||||||
|
@ -129,7 +250,17 @@ PYI016.pyi:37:22: PYI016 Duplicate union member `int`
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `int`
|
= help: Remove duplicate union member `int`
|
||||||
|
|
||||||
PYI016.pyi:38:16: PYI016 Duplicate union member `int`
|
ℹ Safe fix
|
||||||
|
34 34 | field11: dict[int | int, str]
|
||||||
|
35 35 |
|
||||||
|
36 36 | # Should emit for unions with more than two cases
|
||||||
|
37 |-field12: int | int | int # Error
|
||||||
|
37 |+field12: int # Error
|
||||||
|
38 38 | field13: int | int | int | int # Error
|
||||||
|
39 39 |
|
||||||
|
40 40 | # Should emit for unions with more than two cases, even if not directly adjacent
|
||||||
|
|
||||||
|
PYI016.pyi:38:16: PYI016 [*] Duplicate union member `int`
|
||||||
|
|
|
|
||||||
36 | # Should emit for unions with more than two cases
|
36 | # Should emit for unions with more than two cases
|
||||||
37 | field12: int | int | int # Error
|
37 | field12: int | int | int # Error
|
||||||
|
@ -140,7 +271,17 @@ PYI016.pyi:38:16: PYI016 Duplicate union member `int`
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `int`
|
= help: Remove duplicate union member `int`
|
||||||
|
|
||||||
PYI016.pyi:38:22: PYI016 Duplicate union member `int`
|
ℹ Safe fix
|
||||||
|
35 35 |
|
||||||
|
36 36 | # Should emit for unions with more than two cases
|
||||||
|
37 37 | field12: int | int | int # Error
|
||||||
|
38 |-field13: int | int | int | int # Error
|
||||||
|
38 |+field13: int # Error
|
||||||
|
39 39 |
|
||||||
|
40 40 | # Should emit for unions with more than two cases, even if not directly adjacent
|
||||||
|
41 41 | field14: int | int | str | int # Error
|
||||||
|
|
||||||
|
PYI016.pyi:38:22: PYI016 [*] Duplicate union member `int`
|
||||||
|
|
|
|
||||||
36 | # Should emit for unions with more than two cases
|
36 | # Should emit for unions with more than two cases
|
||||||
37 | field12: int | int | int # Error
|
37 | field12: int | int | int # Error
|
||||||
|
@ -151,7 +292,17 @@ PYI016.pyi:38:22: PYI016 Duplicate union member `int`
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `int`
|
= help: Remove duplicate union member `int`
|
||||||
|
|
||||||
PYI016.pyi:38:28: PYI016 Duplicate union member `int`
|
ℹ Safe fix
|
||||||
|
35 35 |
|
||||||
|
36 36 | # Should emit for unions with more than two cases
|
||||||
|
37 37 | field12: int | int | int # Error
|
||||||
|
38 |-field13: int | int | int | int # Error
|
||||||
|
38 |+field13: int # Error
|
||||||
|
39 39 |
|
||||||
|
40 40 | # Should emit for unions with more than two cases, even if not directly adjacent
|
||||||
|
41 41 | field14: int | int | str | int # Error
|
||||||
|
|
||||||
|
PYI016.pyi:38:28: PYI016 [*] Duplicate union member `int`
|
||||||
|
|
|
|
||||||
36 | # Should emit for unions with more than two cases
|
36 | # Should emit for unions with more than two cases
|
||||||
37 | field12: int | int | int # Error
|
37 | field12: int | int | int # Error
|
||||||
|
@ -162,7 +313,17 @@ PYI016.pyi:38:28: PYI016 Duplicate union member `int`
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `int`
|
= help: Remove duplicate union member `int`
|
||||||
|
|
||||||
PYI016.pyi:41:16: PYI016 Duplicate union member `int`
|
ℹ Safe fix
|
||||||
|
35 35 |
|
||||||
|
36 36 | # Should emit for unions with more than two cases
|
||||||
|
37 37 | field12: int | int | int # Error
|
||||||
|
38 |-field13: int | int | int | int # Error
|
||||||
|
38 |+field13: int # Error
|
||||||
|
39 39 |
|
||||||
|
40 40 | # Should emit for unions with more than two cases, even if not directly adjacent
|
||||||
|
41 41 | field14: int | int | str | int # Error
|
||||||
|
|
||||||
|
PYI016.pyi:41:16: PYI016 [*] Duplicate union member `int`
|
||||||
|
|
|
|
||||||
40 | # Should emit for unions with more than two cases, even if not directly adjacent
|
40 | # Should emit for unions with more than two cases, even if not directly adjacent
|
||||||
41 | field14: int | int | str | int # Error
|
41 | field14: int | int | str | int # Error
|
||||||
|
@ -172,7 +333,17 @@ PYI016.pyi:41:16: PYI016 Duplicate union member `int`
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `int`
|
= help: Remove duplicate union member `int`
|
||||||
|
|
||||||
PYI016.pyi:41:28: PYI016 Duplicate union member `int`
|
ℹ Safe fix
|
||||||
|
38 38 | field13: int | int | int | int # Error
|
||||||
|
39 39 |
|
||||||
|
40 40 | # Should emit for unions with more than two cases, even if not directly adjacent
|
||||||
|
41 |-field14: int | int | str | int # Error
|
||||||
|
41 |+field14: int | str # Error
|
||||||
|
42 42 |
|
||||||
|
43 43 | # Should emit for duplicate literal types; also covered by PYI030
|
||||||
|
44 44 | field15: typing.Literal[1] | typing.Literal[1] # Error
|
||||||
|
|
||||||
|
PYI016.pyi:41:28: PYI016 [*] Duplicate union member `int`
|
||||||
|
|
|
|
||||||
40 | # Should emit for unions with more than two cases, even if not directly adjacent
|
40 | # Should emit for unions with more than two cases, even if not directly adjacent
|
||||||
41 | field14: int | int | str | int # Error
|
41 | field14: int | int | str | int # Error
|
||||||
|
@ -182,7 +353,17 @@ PYI016.pyi:41:28: PYI016 Duplicate union member `int`
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `int`
|
= help: Remove duplicate union member `int`
|
||||||
|
|
||||||
PYI016.pyi:44:30: PYI016 Duplicate union member `typing.Literal[1]`
|
ℹ Safe fix
|
||||||
|
38 38 | field13: int | int | int | int # Error
|
||||||
|
39 39 |
|
||||||
|
40 40 | # Should emit for unions with more than two cases, even if not directly adjacent
|
||||||
|
41 |-field14: int | int | str | int # Error
|
||||||
|
41 |+field14: int | str # Error
|
||||||
|
42 42 |
|
||||||
|
43 43 | # Should emit for duplicate literal types; also covered by PYI030
|
||||||
|
44 44 | field15: typing.Literal[1] | typing.Literal[1] # Error
|
||||||
|
|
||||||
|
PYI016.pyi:44:30: PYI016 [*] Duplicate union member `typing.Literal[1]`
|
||||||
|
|
|
|
||||||
43 | # Should emit for duplicate literal types; also covered by PYI030
|
43 | # Should emit for duplicate literal types; also covered by PYI030
|
||||||
44 | field15: typing.Literal[1] | typing.Literal[1] # Error
|
44 | field15: typing.Literal[1] | typing.Literal[1] # Error
|
||||||
|
@ -192,7 +373,17 @@ PYI016.pyi:44:30: PYI016 Duplicate union member `typing.Literal[1]`
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `typing.Literal[1]`
|
= help: Remove duplicate union member `typing.Literal[1]`
|
||||||
|
|
||||||
PYI016.pyi:57:5: PYI016 Duplicate union member `set[int]`
|
ℹ Safe fix
|
||||||
|
41 41 | field14: int | int | str | int # Error
|
||||||
|
42 42 |
|
||||||
|
43 43 | # Should emit for duplicate literal types; also covered by PYI030
|
||||||
|
44 |-field15: typing.Literal[1] | typing.Literal[1] # Error
|
||||||
|
44 |+field15: typing.Literal[1] # Error
|
||||||
|
45 45 |
|
||||||
|
46 46 | # Shouldn't emit if in new parent type
|
||||||
|
47 47 | field16: int | dict[int, str] # OK
|
||||||
|
|
||||||
|
PYI016.pyi:57:5: PYI016 [*] Duplicate union member `set[int]`
|
||||||
|
|
|
|
||||||
55 | int # foo
|
55 | int # foo
|
||||||
56 | ],
|
56 | ],
|
||||||
|
@ -205,7 +396,24 @@ PYI016.pyi:57:5: PYI016 Duplicate union member `set[int]`
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `set[int]`
|
= help: Remove duplicate union member `set[int]`
|
||||||
|
|
||||||
PYI016.pyi:63:28: PYI016 Duplicate union member `int`
|
ℹ Unsafe fix
|
||||||
|
50 50 | field17: dict[int, int] # OK
|
||||||
|
51 51 |
|
||||||
|
52 52 | # Should emit in cases with newlines
|
||||||
|
53 |-field18: typing.Union[
|
||||||
|
54 |- set[
|
||||||
|
55 |- int # foo
|
||||||
|
56 |- ],
|
||||||
|
57 |- set[
|
||||||
|
58 |- int # bar
|
||||||
|
59 |- ],
|
||||||
|
60 |-] # Error, newline and comment will not be emitted in message
|
||||||
|
53 |+field18: set[int] # Error, newline and comment will not be emitted in message
|
||||||
|
61 54 |
|
||||||
|
62 55 | # Should emit in cases with `typing.Union` instead of `|`
|
||||||
|
63 56 | field19: typing.Union[int, int] # Error
|
||||||
|
|
||||||
|
PYI016.pyi:63:28: PYI016 [*] Duplicate union member `int`
|
||||||
|
|
|
|
||||||
62 | # Should emit in cases with `typing.Union` instead of `|`
|
62 | # Should emit in cases with `typing.Union` instead of `|`
|
||||||
63 | field19: typing.Union[int, int] # Error
|
63 | field19: typing.Union[int, int] # Error
|
||||||
|
@ -215,7 +423,17 @@ PYI016.pyi:63:28: PYI016 Duplicate union member `int`
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `int`
|
= help: Remove duplicate union member `int`
|
||||||
|
|
||||||
PYI016.pyi:66:41: PYI016 Duplicate union member `int`
|
ℹ Safe fix
|
||||||
|
60 60 | ] # Error, newline and comment will not be emitted in message
|
||||||
|
61 61 |
|
||||||
|
62 62 | # Should emit in cases with `typing.Union` instead of `|`
|
||||||
|
63 |-field19: typing.Union[int, int] # Error
|
||||||
|
63 |+field19: int # Error
|
||||||
|
64 64 |
|
||||||
|
65 65 | # Should emit in cases with nested `typing.Union`
|
||||||
|
66 66 | field20: typing.Union[int, typing.Union[int, str]] # Error
|
||||||
|
|
||||||
|
PYI016.pyi:66:41: PYI016 [*] Duplicate union member `int`
|
||||||
|
|
|
|
||||||
65 | # Should emit in cases with nested `typing.Union`
|
65 | # Should emit in cases with nested `typing.Union`
|
||||||
66 | field20: typing.Union[int, typing.Union[int, str]] # Error
|
66 | field20: typing.Union[int, typing.Union[int, str]] # Error
|
||||||
|
@ -225,7 +443,17 @@ PYI016.pyi:66:41: PYI016 Duplicate union member `int`
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `int`
|
= help: Remove duplicate union member `int`
|
||||||
|
|
||||||
PYI016.pyi:69:28: PYI016 Duplicate union member `int`
|
ℹ Safe fix
|
||||||
|
63 63 | field19: typing.Union[int, int] # Error
|
||||||
|
64 64 |
|
||||||
|
65 65 | # Should emit in cases with nested `typing.Union`
|
||||||
|
66 |-field20: typing.Union[int, typing.Union[int, str]] # Error
|
||||||
|
66 |+field20: typing.Union[int, str] # Error
|
||||||
|
67 67 |
|
||||||
|
68 68 | # Should emit in cases with mixed `typing.Union` and `|`
|
||||||
|
69 69 | field21: typing.Union[int, int | str] # Error
|
||||||
|
|
||||||
|
PYI016.pyi:69:28: PYI016 [*] Duplicate union member `int`
|
||||||
|
|
|
|
||||||
68 | # Should emit in cases with mixed `typing.Union` and `|`
|
68 | # Should emit in cases with mixed `typing.Union` and `|`
|
||||||
69 | field21: typing.Union[int, int | str] # Error
|
69 | field21: typing.Union[int, int | str] # Error
|
||||||
|
@ -235,7 +463,17 @@ PYI016.pyi:69:28: PYI016 Duplicate union member `int`
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `int`
|
= help: Remove duplicate union member `int`
|
||||||
|
|
||||||
PYI016.pyi:72:41: PYI016 Duplicate union member `int`
|
ℹ Safe fix
|
||||||
|
66 66 | field20: typing.Union[int, typing.Union[int, str]] # Error
|
||||||
|
67 67 |
|
||||||
|
68 68 | # Should emit in cases with mixed `typing.Union` and `|`
|
||||||
|
69 |-field21: typing.Union[int, int | str] # Error
|
||||||
|
69 |+field21: int | str # Error
|
||||||
|
70 70 |
|
||||||
|
71 71 | # Should emit only once in cases with multiple nested `typing.Union`
|
||||||
|
72 72 | field22: typing.Union[int, typing.Union[int, typing.Union[int, int]]] # Error
|
||||||
|
|
||||||
|
PYI016.pyi:72:41: PYI016 [*] Duplicate union member `int`
|
||||||
|
|
|
|
||||||
71 | # Should emit only once in cases with multiple nested `typing.Union`
|
71 | # Should emit only once in cases with multiple nested `typing.Union`
|
||||||
72 | field22: typing.Union[int, typing.Union[int, typing.Union[int, int]]] # Error
|
72 | field22: typing.Union[int, typing.Union[int, typing.Union[int, int]]] # Error
|
||||||
|
@ -245,7 +483,17 @@ PYI016.pyi:72:41: PYI016 Duplicate union member `int`
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `int`
|
= help: Remove duplicate union member `int`
|
||||||
|
|
||||||
PYI016.pyi:72:59: PYI016 Duplicate union member `int`
|
ℹ Safe fix
|
||||||
|
69 69 | field21: typing.Union[int, int | str] # Error
|
||||||
|
70 70 |
|
||||||
|
71 71 | # Should emit only once in cases with multiple nested `typing.Union`
|
||||||
|
72 |-field22: typing.Union[int, typing.Union[int, typing.Union[int, int]]] # Error
|
||||||
|
72 |+field22: int # Error
|
||||||
|
73 73 |
|
||||||
|
74 74 | # Should emit in cases with newlines
|
||||||
|
75 75 | field23: set[ # foo
|
||||||
|
|
||||||
|
PYI016.pyi:72:59: PYI016 [*] Duplicate union member `int`
|
||||||
|
|
|
|
||||||
71 | # Should emit only once in cases with multiple nested `typing.Union`
|
71 | # Should emit only once in cases with multiple nested `typing.Union`
|
||||||
72 | field22: typing.Union[int, typing.Union[int, typing.Union[int, int]]] # Error
|
72 | field22: typing.Union[int, typing.Union[int, typing.Union[int, int]]] # Error
|
||||||
|
@ -255,7 +503,17 @@ PYI016.pyi:72:59: PYI016 Duplicate union member `int`
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `int`
|
= help: Remove duplicate union member `int`
|
||||||
|
|
||||||
PYI016.pyi:72:64: PYI016 Duplicate union member `int`
|
ℹ Safe fix
|
||||||
|
69 69 | field21: typing.Union[int, int | str] # Error
|
||||||
|
70 70 |
|
||||||
|
71 71 | # Should emit only once in cases with multiple nested `typing.Union`
|
||||||
|
72 |-field22: typing.Union[int, typing.Union[int, typing.Union[int, int]]] # Error
|
||||||
|
72 |+field22: int # Error
|
||||||
|
73 73 |
|
||||||
|
74 74 | # Should emit in cases with newlines
|
||||||
|
75 75 | field23: set[ # foo
|
||||||
|
|
||||||
|
PYI016.pyi:72:64: PYI016 [*] Duplicate union member `int`
|
||||||
|
|
|
|
||||||
71 | # Should emit only once in cases with multiple nested `typing.Union`
|
71 | # Should emit only once in cases with multiple nested `typing.Union`
|
||||||
72 | field22: typing.Union[int, typing.Union[int, typing.Union[int, int]]] # Error
|
72 | field22: typing.Union[int, typing.Union[int, typing.Union[int, int]]] # Error
|
||||||
|
@ -265,7 +523,17 @@ PYI016.pyi:72:64: PYI016 Duplicate union member `int`
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `int`
|
= help: Remove duplicate union member `int`
|
||||||
|
|
||||||
PYI016.pyi:76:12: PYI016 Duplicate union member `set[int]`
|
ℹ Safe fix
|
||||||
|
69 69 | field21: typing.Union[int, int | str] # Error
|
||||||
|
70 70 |
|
||||||
|
71 71 | # Should emit only once in cases with multiple nested `typing.Union`
|
||||||
|
72 |-field22: typing.Union[int, typing.Union[int, typing.Union[int, int]]] # Error
|
||||||
|
72 |+field22: int # Error
|
||||||
|
73 73 |
|
||||||
|
74 74 | # Should emit in cases with newlines
|
||||||
|
75 75 | field23: set[ # foo
|
||||||
|
|
||||||
|
PYI016.pyi:76:12: PYI016 [*] Duplicate union member `set[int]`
|
||||||
|
|
|
|
||||||
74 | # Should emit in cases with newlines
|
74 | # Should emit in cases with newlines
|
||||||
75 | field23: set[ # foo
|
75 | field23: set[ # foo
|
||||||
|
@ -276,7 +544,18 @@ PYI016.pyi:76:12: PYI016 Duplicate union member `set[int]`
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `set[int]`
|
= help: Remove duplicate union member `set[int]`
|
||||||
|
|
||||||
PYI016.pyi:81:41: PYI016 Duplicate union member `int`
|
ℹ Unsafe fix
|
||||||
|
72 72 | field22: typing.Union[int, typing.Union[int, typing.Union[int, int]]] # Error
|
||||||
|
73 73 |
|
||||||
|
74 74 | # Should emit in cases with newlines
|
||||||
|
75 |-field23: set[ # foo
|
||||||
|
76 |- int] | set[int]
|
||||||
|
75 |+field23: set[int]
|
||||||
|
77 76 |
|
||||||
|
78 77 | # Should emit twice (once for each `int` in the nested union, both of which are
|
||||||
|
79 78 | # duplicates of the outer `int`), but not three times (which would indicate that
|
||||||
|
|
||||||
|
PYI016.pyi:81:41: PYI016 [*] Duplicate union member `int`
|
||||||
|
|
|
|
||||||
79 | # duplicates of the outer `int`), but not three times (which would indicate that
|
79 | # duplicates of the outer `int`), but not three times (which would indicate that
|
||||||
80 | # we incorrectly re-checked the nested union).
|
80 | # we incorrectly re-checked the nested union).
|
||||||
|
@ -287,7 +566,17 @@ PYI016.pyi:81:41: PYI016 Duplicate union member `int`
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `int`
|
= help: Remove duplicate union member `int`
|
||||||
|
|
||||||
PYI016.pyi:81:46: PYI016 Duplicate union member `int`
|
ℹ Safe fix
|
||||||
|
78 78 | # Should emit twice (once for each `int` in the nested union, both of which are
|
||||||
|
79 79 | # duplicates of the outer `int`), but not three times (which would indicate that
|
||||||
|
80 80 | # we incorrectly re-checked the nested union).
|
||||||
|
81 |-field24: typing.Union[int, typing.Union[int, int]] # PYI016: Duplicate union member `int`
|
||||||
|
81 |+field24: int # PYI016: Duplicate union member `int`
|
||||||
|
82 82 |
|
||||||
|
83 83 | # Should emit twice (once for each `int` in the nested union, both of which are
|
||||||
|
84 84 | # duplicates of the outer `int`), but not three times (which would indicate that
|
||||||
|
|
||||||
|
PYI016.pyi:81:46: PYI016 [*] Duplicate union member `int`
|
||||||
|
|
|
|
||||||
79 | # duplicates of the outer `int`), but not three times (which would indicate that
|
79 | # duplicates of the outer `int`), but not three times (which would indicate that
|
||||||
80 | # we incorrectly re-checked the nested union).
|
80 | # we incorrectly re-checked the nested union).
|
||||||
|
@ -298,7 +587,17 @@ PYI016.pyi:81:46: PYI016 Duplicate union member `int`
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `int`
|
= help: Remove duplicate union member `int`
|
||||||
|
|
||||||
PYI016.pyi:86:28: PYI016 Duplicate union member `int`
|
ℹ Safe fix
|
||||||
|
78 78 | # Should emit twice (once for each `int` in the nested union, both of which are
|
||||||
|
79 79 | # duplicates of the outer `int`), but not three times (which would indicate that
|
||||||
|
80 80 | # we incorrectly re-checked the nested union).
|
||||||
|
81 |-field24: typing.Union[int, typing.Union[int, int]] # PYI016: Duplicate union member `int`
|
||||||
|
81 |+field24: int # PYI016: Duplicate union member `int`
|
||||||
|
82 82 |
|
||||||
|
83 83 | # Should emit twice (once for each `int` in the nested union, both of which are
|
||||||
|
84 84 | # duplicates of the outer `int`), but not three times (which would indicate that
|
||||||
|
|
||||||
|
PYI016.pyi:86:28: PYI016 [*] Duplicate union member `int`
|
||||||
|
|
|
|
||||||
84 | # duplicates of the outer `int`), but not three times (which would indicate that
|
84 | # duplicates of the outer `int`), but not three times (which would indicate that
|
||||||
85 | # we incorrectly re-checked the nested union).
|
85 | # we incorrectly re-checked the nested union).
|
||||||
|
@ -309,7 +608,17 @@ PYI016.pyi:86:28: PYI016 Duplicate union member `int`
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `int`
|
= help: Remove duplicate union member `int`
|
||||||
|
|
||||||
PYI016.pyi:86:34: PYI016 Duplicate union member `int`
|
ℹ Safe fix
|
||||||
|
83 83 | # Should emit twice (once for each `int` in the nested union, both of which are
|
||||||
|
84 84 | # duplicates of the outer `int`), but not three times (which would indicate that
|
||||||
|
85 85 | # we incorrectly re-checked the nested union).
|
||||||
|
86 |-field25: typing.Union[int, int | int] # PYI016: Duplicate union member `int`
|
||||||
|
86 |+field25: int # PYI016: Duplicate union member `int`
|
||||||
|
87 87 |
|
||||||
|
88 88 | # Should emit in cases with nested `typing.Union`
|
||||||
|
89 89 | field26: typing.Union[typing.Union[int, int]] # PYI016: Duplicate union member `int`
|
||||||
|
|
||||||
|
PYI016.pyi:86:34: PYI016 [*] Duplicate union member `int`
|
||||||
|
|
|
|
||||||
84 | # duplicates of the outer `int`), but not three times (which would indicate that
|
84 | # duplicates of the outer `int`), but not three times (which would indicate that
|
||||||
85 | # we incorrectly re-checked the nested union).
|
85 | # we incorrectly re-checked the nested union).
|
||||||
|
@ -320,7 +629,17 @@ PYI016.pyi:86:34: PYI016 Duplicate union member `int`
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `int`
|
= help: Remove duplicate union member `int`
|
||||||
|
|
||||||
PYI016.pyi:89:41: PYI016 Duplicate union member `int`
|
ℹ Safe fix
|
||||||
|
83 83 | # Should emit twice (once for each `int` in the nested union, both of which are
|
||||||
|
84 84 | # duplicates of the outer `int`), but not three times (which would indicate that
|
||||||
|
85 85 | # we incorrectly re-checked the nested union).
|
||||||
|
86 |-field25: typing.Union[int, int | int] # PYI016: Duplicate union member `int`
|
||||||
|
86 |+field25: int # PYI016: Duplicate union member `int`
|
||||||
|
87 87 |
|
||||||
|
88 88 | # Should emit in cases with nested `typing.Union`
|
||||||
|
89 89 | field26: typing.Union[typing.Union[int, int]] # PYI016: Duplicate union member `int`
|
||||||
|
|
||||||
|
PYI016.pyi:89:41: PYI016 [*] Duplicate union member `int`
|
||||||
|
|
|
|
||||||
88 | # Should emit in cases with nested `typing.Union`
|
88 | # Should emit in cases with nested `typing.Union`
|
||||||
89 | field26: typing.Union[typing.Union[int, int]] # PYI016: Duplicate union member `int`
|
89 | field26: typing.Union[typing.Union[int, int]] # PYI016: Duplicate union member `int`
|
||||||
|
@ -330,7 +649,17 @@ PYI016.pyi:89:41: PYI016 Duplicate union member `int`
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `int`
|
= help: Remove duplicate union member `int`
|
||||||
|
|
||||||
PYI016.pyi:92:54: PYI016 Duplicate union member `int`
|
ℹ Safe fix
|
||||||
|
86 86 | field25: typing.Union[int, int | int] # PYI016: Duplicate union member `int`
|
||||||
|
87 87 |
|
||||||
|
88 88 | # Should emit in cases with nested `typing.Union`
|
||||||
|
89 |-field26: typing.Union[typing.Union[int, int]] # PYI016: Duplicate union member `int`
|
||||||
|
89 |+field26: int # PYI016: Duplicate union member `int`
|
||||||
|
90 90 |
|
||||||
|
91 91 | # Should emit in cases with nested `typing.Union`
|
||||||
|
92 92 | field27: typing.Union[typing.Union[typing.Union[int, int]]] # PYI016: Duplicate union member `int`
|
||||||
|
|
||||||
|
PYI016.pyi:92:54: PYI016 [*] Duplicate union member `int`
|
||||||
|
|
|
|
||||||
91 | # Should emit in cases with nested `typing.Union`
|
91 | # Should emit in cases with nested `typing.Union`
|
||||||
92 | field27: typing.Union[typing.Union[typing.Union[int, int]]] # PYI016: Duplicate union member `int`
|
92 | field27: typing.Union[typing.Union[typing.Union[int, int]]] # PYI016: Duplicate union member `int`
|
||||||
|
@ -340,7 +669,17 @@ PYI016.pyi:92:54: PYI016 Duplicate union member `int`
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `int`
|
= help: Remove duplicate union member `int`
|
||||||
|
|
||||||
PYI016.pyi:95:29: PYI016 Duplicate union member `int`
|
ℹ Safe fix
|
||||||
|
89 89 | field26: typing.Union[typing.Union[int, int]] # PYI016: Duplicate union member `int`
|
||||||
|
90 90 |
|
||||||
|
91 91 | # Should emit in cases with nested `typing.Union`
|
||||||
|
92 |-field27: typing.Union[typing.Union[typing.Union[int, int]]] # PYI016: Duplicate union member `int`
|
||||||
|
92 |+field27: int # PYI016: Duplicate union member `int`
|
||||||
|
93 93 |
|
||||||
|
94 94 | # Should emit in cases with mixed `typing.Union` and `|`
|
||||||
|
95 95 | field28: typing.Union[int | int] # Error
|
||||||
|
|
||||||
|
PYI016.pyi:95:29: PYI016 [*] Duplicate union member `int`
|
||||||
|
|
|
|
||||||
94 | # Should emit in cases with mixed `typing.Union` and `|`
|
94 | # Should emit in cases with mixed `typing.Union` and `|`
|
||||||
95 | field28: typing.Union[int | int] # Error
|
95 | field28: typing.Union[int | int] # Error
|
||||||
|
@ -350,7 +689,17 @@ PYI016.pyi:95:29: PYI016 Duplicate union member `int`
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `int`
|
= help: Remove duplicate union member `int`
|
||||||
|
|
||||||
PYI016.pyi:98:54: PYI016 Duplicate union member `int`
|
ℹ Safe fix
|
||||||
|
92 92 | field27: typing.Union[typing.Union[typing.Union[int, int]]] # PYI016: Duplicate union member `int`
|
||||||
|
93 93 |
|
||||||
|
94 94 | # Should emit in cases with mixed `typing.Union` and `|`
|
||||||
|
95 |-field28: typing.Union[int | int] # Error
|
||||||
|
95 |+field28: int # Error
|
||||||
|
96 96 |
|
||||||
|
97 97 | # Should emit twice in cases with multiple nested `typing.Union`
|
||||||
|
98 98 | field29: typing.Union[int, typing.Union[typing.Union[int, int]]] # Error
|
||||||
|
|
||||||
|
PYI016.pyi:98:54: PYI016 [*] Duplicate union member `int`
|
||||||
|
|
|
|
||||||
97 | # Should emit twice in cases with multiple nested `typing.Union`
|
97 | # Should emit twice in cases with multiple nested `typing.Union`
|
||||||
98 | field29: typing.Union[int, typing.Union[typing.Union[int, int]]] # Error
|
98 | field29: typing.Union[int, typing.Union[typing.Union[int, int]]] # Error
|
||||||
|
@ -360,7 +709,17 @@ PYI016.pyi:98:54: PYI016 Duplicate union member `int`
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `int`
|
= help: Remove duplicate union member `int`
|
||||||
|
|
||||||
PYI016.pyi:98:59: PYI016 Duplicate union member `int`
|
ℹ Safe fix
|
||||||
|
95 95 | field28: typing.Union[int | int] # Error
|
||||||
|
96 96 |
|
||||||
|
97 97 | # Should emit twice in cases with multiple nested `typing.Union`
|
||||||
|
98 |-field29: typing.Union[int, typing.Union[typing.Union[int, int]]] # Error
|
||||||
|
98 |+field29: int # Error
|
||||||
|
99 99 |
|
||||||
|
100 100 | # Should emit once in cases with multiple nested `typing.Union`
|
||||||
|
101 101 | field30: typing.Union[int, typing.Union[typing.Union[int, str]]] # Error
|
||||||
|
|
||||||
|
PYI016.pyi:98:59: PYI016 [*] Duplicate union member `int`
|
||||||
|
|
|
|
||||||
97 | # Should emit twice in cases with multiple nested `typing.Union`
|
97 | # Should emit twice in cases with multiple nested `typing.Union`
|
||||||
98 | field29: typing.Union[int, typing.Union[typing.Union[int, int]]] # Error
|
98 | field29: typing.Union[int, typing.Union[typing.Union[int, int]]] # Error
|
||||||
|
@ -370,7 +729,17 @@ PYI016.pyi:98:59: PYI016 Duplicate union member `int`
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `int`
|
= help: Remove duplicate union member `int`
|
||||||
|
|
||||||
PYI016.pyi:101:54: PYI016 Duplicate union member `int`
|
ℹ Safe fix
|
||||||
|
95 95 | field28: typing.Union[int | int] # Error
|
||||||
|
96 96 |
|
||||||
|
97 97 | # Should emit twice in cases with multiple nested `typing.Union`
|
||||||
|
98 |-field29: typing.Union[int, typing.Union[typing.Union[int, int]]] # Error
|
||||||
|
98 |+field29: int # Error
|
||||||
|
99 99 |
|
||||||
|
100 100 | # Should emit once in cases with multiple nested `typing.Union`
|
||||||
|
101 101 | field30: typing.Union[int, typing.Union[typing.Union[int, str]]] # Error
|
||||||
|
|
||||||
|
PYI016.pyi:101:54: PYI016 [*] Duplicate union member `int`
|
||||||
|
|
|
|
||||||
100 | # Should emit once in cases with multiple nested `typing.Union`
|
100 | # Should emit once in cases with multiple nested `typing.Union`
|
||||||
101 | field30: typing.Union[int, typing.Union[typing.Union[int, str]]] # Error
|
101 | field30: typing.Union[int, typing.Union[typing.Union[int, str]]] # Error
|
||||||
|
@ -380,7 +749,17 @@ PYI016.pyi:101:54: PYI016 Duplicate union member `int`
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `int`
|
= help: Remove duplicate union member `int`
|
||||||
|
|
||||||
PYI016.pyi:104:49: PYI016 Duplicate union member `int`
|
ℹ Safe fix
|
||||||
|
98 98 | field29: typing.Union[int, typing.Union[typing.Union[int, int]]] # Error
|
||||||
|
99 99 |
|
||||||
|
100 100 | # Should emit once in cases with multiple nested `typing.Union`
|
||||||
|
101 |-field30: typing.Union[int, typing.Union[typing.Union[int, str]]] # Error
|
||||||
|
101 |+field30: typing.Union[int, str] # Error
|
||||||
|
102 102 |
|
||||||
|
103 103 | # Should emit once, and fix to `typing.Union[float, int]`
|
||||||
|
104 104 | field31: typing.Union[float, typing.Union[int | int]] # Error
|
||||||
|
|
||||||
|
PYI016.pyi:104:49: PYI016 [*] Duplicate union member `int`
|
||||||
|
|
|
|
||||||
103 | # Should emit once, and fix to `typing.Union[float, int]`
|
103 | # Should emit once, and fix to `typing.Union[float, int]`
|
||||||
104 | field31: typing.Union[float, typing.Union[int | int]] # Error
|
104 | field31: typing.Union[float, typing.Union[int | int]] # Error
|
||||||
|
@ -390,7 +769,17 @@ PYI016.pyi:104:49: PYI016 Duplicate union member `int`
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `int`
|
= help: Remove duplicate union member `int`
|
||||||
|
|
||||||
PYI016.pyi:107:49: PYI016 Duplicate union member `int`
|
ℹ Safe fix
|
||||||
|
101 101 | field30: typing.Union[int, typing.Union[typing.Union[int, str]]] # Error
|
||||||
|
102 102 |
|
||||||
|
103 103 | # Should emit once, and fix to `typing.Union[float, int]`
|
||||||
|
104 |-field31: typing.Union[float, typing.Union[int | int]] # Error
|
||||||
|
104 |+field31: float | int # Error
|
||||||
|
105 105 |
|
||||||
|
106 106 | # Should emit once, and fix to `typing.Union[float, int]`
|
||||||
|
107 107 | field32: typing.Union[float, typing.Union[int | int | int]] # Error
|
||||||
|
|
||||||
|
PYI016.pyi:107:49: PYI016 [*] Duplicate union member `int`
|
||||||
|
|
|
|
||||||
106 | # Should emit once, and fix to `typing.Union[float, int]`
|
106 | # Should emit once, and fix to `typing.Union[float, int]`
|
||||||
107 | field32: typing.Union[float, typing.Union[int | int | int]] # Error
|
107 | field32: typing.Union[float, typing.Union[int | int | int]] # Error
|
||||||
|
@ -400,7 +789,17 @@ PYI016.pyi:107:49: PYI016 Duplicate union member `int`
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `int`
|
= help: Remove duplicate union member `int`
|
||||||
|
|
||||||
PYI016.pyi:107:55: PYI016 Duplicate union member `int`
|
ℹ Safe fix
|
||||||
|
104 104 | field31: typing.Union[float, typing.Union[int | int]] # Error
|
||||||
|
105 105 |
|
||||||
|
106 106 | # Should emit once, and fix to `typing.Union[float, int]`
|
||||||
|
107 |-field32: typing.Union[float, typing.Union[int | int | int]] # Error
|
||||||
|
107 |+field32: float | int # Error
|
||||||
|
108 108 |
|
||||||
|
109 109 | # Test case for mixed union type fix
|
||||||
|
110 110 | field33: typing.Union[typing.Union[int | int] | typing.Union[int | int]] # Error
|
||||||
|
|
||||||
|
PYI016.pyi:107:55: PYI016 [*] Duplicate union member `int`
|
||||||
|
|
|
|
||||||
106 | # Should emit once, and fix to `typing.Union[float, int]`
|
106 | # Should emit once, and fix to `typing.Union[float, int]`
|
||||||
107 | field32: typing.Union[float, typing.Union[int | int | int]] # Error
|
107 | field32: typing.Union[float, typing.Union[int | int | int]] # Error
|
||||||
|
@ -410,7 +809,17 @@ PYI016.pyi:107:55: PYI016 Duplicate union member `int`
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `int`
|
= help: Remove duplicate union member `int`
|
||||||
|
|
||||||
PYI016.pyi:110:42: PYI016 Duplicate union member `int`
|
ℹ Safe fix
|
||||||
|
104 104 | field31: typing.Union[float, typing.Union[int | int]] # Error
|
||||||
|
105 105 |
|
||||||
|
106 106 | # Should emit once, and fix to `typing.Union[float, int]`
|
||||||
|
107 |-field32: typing.Union[float, typing.Union[int | int | int]] # Error
|
||||||
|
107 |+field32: float | int # Error
|
||||||
|
108 108 |
|
||||||
|
109 109 | # Test case for mixed union type fix
|
||||||
|
110 110 | field33: typing.Union[typing.Union[int | int] | typing.Union[int | int]] # Error
|
||||||
|
|
||||||
|
PYI016.pyi:110:42: PYI016 [*] Duplicate union member `int`
|
||||||
|
|
|
|
||||||
109 | # Test case for mixed union type fix
|
109 | # Test case for mixed union type fix
|
||||||
110 | field33: typing.Union[typing.Union[int | int] | typing.Union[int | int]] # Error
|
110 | field33: typing.Union[typing.Union[int | int] | typing.Union[int | int]] # Error
|
||||||
|
@ -420,7 +829,17 @@ PYI016.pyi:110:42: PYI016 Duplicate union member `int`
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `int`
|
= help: Remove duplicate union member `int`
|
||||||
|
|
||||||
PYI016.pyi:110:62: PYI016 Duplicate union member `int`
|
ℹ Safe fix
|
||||||
|
107 107 | field32: typing.Union[float, typing.Union[int | int | int]] # Error
|
||||||
|
108 108 |
|
||||||
|
109 109 | # Test case for mixed union type fix
|
||||||
|
110 |-field33: typing.Union[typing.Union[int | int] | typing.Union[int | int]] # Error
|
||||||
|
110 |+field33: int # Error
|
||||||
|
111 111 |
|
||||||
|
112 112 | # Test case for mixed union type
|
||||||
|
113 113 | field34: typing.Union[list[int], str] | typing.Union[bytes, list[int]] # Error
|
||||||
|
|
||||||
|
PYI016.pyi:110:62: PYI016 [*] Duplicate union member `int`
|
||||||
|
|
|
|
||||||
109 | # Test case for mixed union type fix
|
109 | # Test case for mixed union type fix
|
||||||
110 | field33: typing.Union[typing.Union[int | int] | typing.Union[int | int]] # Error
|
110 | field33: typing.Union[typing.Union[int | int] | typing.Union[int | int]] # Error
|
||||||
|
@ -430,7 +849,17 @@ PYI016.pyi:110:62: PYI016 Duplicate union member `int`
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `int`
|
= help: Remove duplicate union member `int`
|
||||||
|
|
||||||
PYI016.pyi:110:68: PYI016 Duplicate union member `int`
|
ℹ Safe fix
|
||||||
|
107 107 | field32: typing.Union[float, typing.Union[int | int | int]] # Error
|
||||||
|
108 108 |
|
||||||
|
109 109 | # Test case for mixed union type fix
|
||||||
|
110 |-field33: typing.Union[typing.Union[int | int] | typing.Union[int | int]] # Error
|
||||||
|
110 |+field33: int # Error
|
||||||
|
111 111 |
|
||||||
|
112 112 | # Test case for mixed union type
|
||||||
|
113 113 | field34: typing.Union[list[int], str] | typing.Union[bytes, list[int]] # Error
|
||||||
|
|
||||||
|
PYI016.pyi:110:68: PYI016 [*] Duplicate union member `int`
|
||||||
|
|
|
|
||||||
109 | # Test case for mixed union type fix
|
109 | # Test case for mixed union type fix
|
||||||
110 | field33: typing.Union[typing.Union[int | int] | typing.Union[int | int]] # Error
|
110 | field33: typing.Union[typing.Union[int | int] | typing.Union[int | int]] # Error
|
||||||
|
@ -440,10 +869,27 @@ PYI016.pyi:110:68: PYI016 Duplicate union member `int`
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `int`
|
= help: Remove duplicate union member `int`
|
||||||
|
|
||||||
PYI016.pyi:113:61: PYI016 Duplicate union member `list[int]`
|
ℹ Safe fix
|
||||||
|
107 107 | field32: typing.Union[float, typing.Union[int | int | int]] # Error
|
||||||
|
108 108 |
|
||||||
|
109 109 | # Test case for mixed union type fix
|
||||||
|
110 |-field33: typing.Union[typing.Union[int | int] | typing.Union[int | int]] # Error
|
||||||
|
110 |+field33: int # Error
|
||||||
|
111 111 |
|
||||||
|
112 112 | # Test case for mixed union type
|
||||||
|
113 113 | field34: typing.Union[list[int], str] | typing.Union[bytes, list[int]] # Error
|
||||||
|
|
||||||
|
PYI016.pyi:113:61: PYI016 [*] Duplicate union member `list[int]`
|
||||||
|
|
|
|
||||||
112 | # Test case for mixed union type
|
112 | # Test case for mixed union type
|
||||||
113 | field34: typing.Union[list[int], str] | typing.Union[bytes, list[int]] # Error
|
113 | field34: typing.Union[list[int], str] | typing.Union[bytes, list[int]] # Error
|
||||||
| ^^^^^^^^^ PYI016
|
| ^^^^^^^^^ PYI016
|
||||||
|
|
|
|
||||||
= help: Remove duplicate union member `list[int]`
|
= help: Remove duplicate union member `list[int]`
|
||||||
|
|
||||||
|
ℹ Safe fix
|
||||||
|
110 110 | field33: typing.Union[typing.Union[int | int] | typing.Union[int | int]] # Error
|
||||||
|
111 111 |
|
||||||
|
112 112 | # Test case for mixed union type
|
||||||
|
113 |-field34: typing.Union[list[int], str] | typing.Union[bytes, list[int]] # Error
|
||||||
|
113 |+field34: typing.Union[list[int], str, bytes] # Error
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue