PyCQA/flake8-bugbear
New check: duplicate types in type hint, or duplicate literals in set
开放
#371 创建于 2023年3月21日
enhancementhelp wanted
仓库指标
- 星标
- (1,116 个星标)
- PR 合并指标
- (平均合并 4小时 17分钟) (30 天内合并 3 个 PR)
描述
a: int | int | float = ...
b: Union[List[int, int]] = ...
c: Optional[int] | int | None = ... # can probably rely on other linters to not have to deal with this one
d: set[int] = {1, 2, 3, 3, 5}
e: Tuple[int, int] = ... # not an error
these should pretty much always be typos and/or bad copy-pastes, with very few to no false alarms. Don't think it's super common, but definitely not rare or super esoteric.
The check shouldn't have to be too complicated to implement, for the type hint probably need a whitelist of what types you look in (List/list, Set/set, Dict/dict (with special logic), OrderedDict, Optional, Union, Literal...).
For sets you only need to look inside set() (ast.Call) and inside {} (ast.Set), and probably only include literal int/float/strings.