From 2c687133e4fcdd73ae3afa2e79be2160b150bb82 Mon Sep 17 00:00:00 2001 From: Pierre Sassoulas Date: Tue, 23 Nov 2021 09:36:10 +0100 Subject: Consistency in functional tests for extension's name --- tests/functional/ext/check_elif/check_elif.py | 27 +++++++++ tests/functional/ext/check_elif/check_elif.rc | 2 + tests/functional/ext/check_elif/check_elif.txt | 2 + tests/functional/ext/check_elif/elif_checker.py | 27 --------- tests/functional/ext/check_elif/elif_checker.rc | 2 - tests/functional/ext/check_elif/elif_checker.txt | 2 - .../ext/comparetozero/compare_to_zero_extension.py | 28 --------- .../ext/comparetozero/compare_to_zero_extension.rc | 2 - .../comparetozero/compare_to_zero_extension.txt | 4 -- .../functional/ext/comparetozero/comparetozero.py | 28 +++++++++ .../functional/ext/comparetozero/comparetozero.rc | 2 + .../functional/ext/comparetozero/comparetozero.txt | 4 ++ tests/functional/ext/docstyle/docstyle.py | 41 +++++++++++++ tests/functional/ext/docstyle/docstyle.rc | 2 + tests/functional/ext/docstyle/docstyle.txt | 7 +++ .../functional/ext/docstyle/docstyle_extension.py | 41 ------------- .../functional/ext/docstyle/docstyle_extension.rc | 2 - .../functional/ext/docstyle/docstyle_extension.txt | 7 --- .../redefined_variable_type.txt | 2 +- .../set_membership_use_set_membership.py | 40 ------------- .../set_membership_use_set_membership.rc | 2 - .../set_membership_use_set_membership.txt | 11 ---- .../ext/set_membership/use_set_membership.py | 40 +++++++++++++ .../ext/set_membership/use_set_membership.rc | 2 + .../ext/set_membership/use_set_membership.txt | 11 ++++ .../functional/ext/typing/consider_using_alias.py | 69 ++++++++++++++++++++++ .../functional/ext/typing/consider_using_alias.rc | 9 +++ .../functional/ext/typing/consider_using_alias.txt | 20 +++++++ .../typing/consider_using_alias_without_future.py | 66 +++++++++++++++++++++ .../typing/consider_using_alias_without_future.rc | 9 +++ .../typing/consider_using_alias_without_future.txt | 20 +++++++ .../functional/ext/typing/consider_using_union.py | 47 +++++++++++++++ .../functional/ext/typing/consider_using_union.rc | 9 +++ .../functional/ext/typing/consider_using_union.txt | 10 ++++ .../ext/typing/consider_using_union_py310.py | 45 ++++++++++++++ .../ext/typing/consider_using_union_py310.rc | 8 +++ .../ext/typing/consider_using_union_py310.txt | 18 ++++++ .../typing/consider_using_union_without_future.py | 45 ++++++++++++++ .../typing/consider_using_union_without_future.rc | 9 +++ .../typing/consider_using_union_without_future.txt | 10 ++++ tests/functional/ext/typing/deprecated_alias.py | 66 +++++++++++++++++++++ tests/functional/ext/typing/deprecated_alias.rc | 8 +++ tests/functional/ext/typing/deprecated_alias.txt | 28 +++++++++ .../ext/typing/typing_consider_using_alias.py | 69 ---------------------- .../ext/typing/typing_consider_using_alias.rc | 9 --- .../ext/typing/typing_consider_using_alias.txt | 20 ------- .../typing_consider_using_alias_without_future.py | 66 --------------------- .../typing_consider_using_alias_without_future.rc | 9 --- .../typing_consider_using_alias_without_future.txt | 20 ------- .../ext/typing/typing_consider_using_union.py | 47 --------------- .../ext/typing/typing_consider_using_union.rc | 9 --- .../ext/typing/typing_consider_using_union.txt | 10 ---- .../typing/typing_consider_using_union_py310.py | 45 -------------- .../typing/typing_consider_using_union_py310.rc | 8 --- .../typing/typing_consider_using_union_py310.txt | 18 ------ .../typing_consider_using_union_without_future.py | 45 -------------- .../typing_consider_using_union_without_future.rc | 9 --- .../typing_consider_using_union_without_future.txt | 10 ---- .../ext/typing/typing_deprecated_alias.py | 66 --------------------- .../ext/typing/typing_deprecated_alias.rc | 8 --- .../ext/typing/typing_deprecated_alias.txt | 28 --------- 61 files changed, 665 insertions(+), 665 deletions(-) create mode 100644 tests/functional/ext/check_elif/check_elif.py create mode 100644 tests/functional/ext/check_elif/check_elif.rc create mode 100644 tests/functional/ext/check_elif/check_elif.txt delete mode 100644 tests/functional/ext/check_elif/elif_checker.py delete mode 100644 tests/functional/ext/check_elif/elif_checker.rc delete mode 100644 tests/functional/ext/check_elif/elif_checker.txt delete mode 100644 tests/functional/ext/comparetozero/compare_to_zero_extension.py delete mode 100644 tests/functional/ext/comparetozero/compare_to_zero_extension.rc delete mode 100644 tests/functional/ext/comparetozero/compare_to_zero_extension.txt create mode 100644 tests/functional/ext/comparetozero/comparetozero.py create mode 100644 tests/functional/ext/comparetozero/comparetozero.rc create mode 100644 tests/functional/ext/comparetozero/comparetozero.txt create mode 100644 tests/functional/ext/docstyle/docstyle.py create mode 100644 tests/functional/ext/docstyle/docstyle.rc create mode 100644 tests/functional/ext/docstyle/docstyle.txt delete mode 100644 tests/functional/ext/docstyle/docstyle_extension.py delete mode 100644 tests/functional/ext/docstyle/docstyle_extension.rc delete mode 100644 tests/functional/ext/docstyle/docstyle_extension.txt delete mode 100644 tests/functional/ext/set_membership/set_membership_use_set_membership.py delete mode 100644 tests/functional/ext/set_membership/set_membership_use_set_membership.rc delete mode 100644 tests/functional/ext/set_membership/set_membership_use_set_membership.txt create mode 100644 tests/functional/ext/set_membership/use_set_membership.py create mode 100644 tests/functional/ext/set_membership/use_set_membership.rc create mode 100644 tests/functional/ext/set_membership/use_set_membership.txt create mode 100644 tests/functional/ext/typing/consider_using_alias.py create mode 100644 tests/functional/ext/typing/consider_using_alias.rc create mode 100644 tests/functional/ext/typing/consider_using_alias.txt create mode 100644 tests/functional/ext/typing/consider_using_alias_without_future.py create mode 100644 tests/functional/ext/typing/consider_using_alias_without_future.rc create mode 100644 tests/functional/ext/typing/consider_using_alias_without_future.txt create mode 100644 tests/functional/ext/typing/consider_using_union.py create mode 100644 tests/functional/ext/typing/consider_using_union.rc create mode 100644 tests/functional/ext/typing/consider_using_union.txt create mode 100644 tests/functional/ext/typing/consider_using_union_py310.py create mode 100644 tests/functional/ext/typing/consider_using_union_py310.rc create mode 100644 tests/functional/ext/typing/consider_using_union_py310.txt create mode 100644 tests/functional/ext/typing/consider_using_union_without_future.py create mode 100644 tests/functional/ext/typing/consider_using_union_without_future.rc create mode 100644 tests/functional/ext/typing/consider_using_union_without_future.txt create mode 100644 tests/functional/ext/typing/deprecated_alias.py create mode 100644 tests/functional/ext/typing/deprecated_alias.rc create mode 100644 tests/functional/ext/typing/deprecated_alias.txt delete mode 100644 tests/functional/ext/typing/typing_consider_using_alias.py delete mode 100644 tests/functional/ext/typing/typing_consider_using_alias.rc delete mode 100644 tests/functional/ext/typing/typing_consider_using_alias.txt delete mode 100644 tests/functional/ext/typing/typing_consider_using_alias_without_future.py delete mode 100644 tests/functional/ext/typing/typing_consider_using_alias_without_future.rc delete mode 100644 tests/functional/ext/typing/typing_consider_using_alias_without_future.txt delete mode 100644 tests/functional/ext/typing/typing_consider_using_union.py delete mode 100644 tests/functional/ext/typing/typing_consider_using_union.rc delete mode 100644 tests/functional/ext/typing/typing_consider_using_union.txt delete mode 100644 tests/functional/ext/typing/typing_consider_using_union_py310.py delete mode 100644 tests/functional/ext/typing/typing_consider_using_union_py310.rc delete mode 100644 tests/functional/ext/typing/typing_consider_using_union_py310.txt delete mode 100644 tests/functional/ext/typing/typing_consider_using_union_without_future.py delete mode 100644 tests/functional/ext/typing/typing_consider_using_union_without_future.rc delete mode 100644 tests/functional/ext/typing/typing_consider_using_union_without_future.txt delete mode 100644 tests/functional/ext/typing/typing_deprecated_alias.py delete mode 100644 tests/functional/ext/typing/typing_deprecated_alias.rc delete mode 100644 tests/functional/ext/typing/typing_deprecated_alias.txt diff --git a/tests/functional/ext/check_elif/check_elif.py b/tests/functional/ext/check_elif/check_elif.py new file mode 100644 index 000000000..b9722f349 --- /dev/null +++ b/tests/functional/ext/check_elif/check_elif.py @@ -0,0 +1,27 @@ +"""Checks use of "else if" triggers a refactor message""" + + +def my_function(): + """docstring""" + myint = 2 + if myint > 5: + pass + else: + if myint <= 5: # [else-if-used] + pass + else: + myint = 3 + if myint > 2: + if myint > 3: + pass + elif myint == 3: + pass + elif myint < 3: + pass + else: + if myint: # [else-if-used] + pass + else: + if myint: + pass + myint = 4 diff --git a/tests/functional/ext/check_elif/check_elif.rc b/tests/functional/ext/check_elif/check_elif.rc new file mode 100644 index 000000000..b9b1de49d --- /dev/null +++ b/tests/functional/ext/check_elif/check_elif.rc @@ -0,0 +1,2 @@ +[MASTER] +load-plugins=pylint.extensions.check_elif, diff --git a/tests/functional/ext/check_elif/check_elif.txt b/tests/functional/ext/check_elif/check_elif.txt new file mode 100644 index 000000000..43d1e3b1e --- /dev/null +++ b/tests/functional/ext/check_elif/check_elif.txt @@ -0,0 +1,2 @@ +else-if-used:10:8:my_function:"Consider using ""elif"" instead of ""else if""":HIGH +else-if-used:22:20:my_function:"Consider using ""elif"" instead of ""else if""":HIGH diff --git a/tests/functional/ext/check_elif/elif_checker.py b/tests/functional/ext/check_elif/elif_checker.py deleted file mode 100644 index b9722f349..000000000 --- a/tests/functional/ext/check_elif/elif_checker.py +++ /dev/null @@ -1,27 +0,0 @@ -"""Checks use of "else if" triggers a refactor message""" - - -def my_function(): - """docstring""" - myint = 2 - if myint > 5: - pass - else: - if myint <= 5: # [else-if-used] - pass - else: - myint = 3 - if myint > 2: - if myint > 3: - pass - elif myint == 3: - pass - elif myint < 3: - pass - else: - if myint: # [else-if-used] - pass - else: - if myint: - pass - myint = 4 diff --git a/tests/functional/ext/check_elif/elif_checker.rc b/tests/functional/ext/check_elif/elif_checker.rc deleted file mode 100644 index b9b1de49d..000000000 --- a/tests/functional/ext/check_elif/elif_checker.rc +++ /dev/null @@ -1,2 +0,0 @@ -[MASTER] -load-plugins=pylint.extensions.check_elif, diff --git a/tests/functional/ext/check_elif/elif_checker.txt b/tests/functional/ext/check_elif/elif_checker.txt deleted file mode 100644 index 43d1e3b1e..000000000 --- a/tests/functional/ext/check_elif/elif_checker.txt +++ /dev/null @@ -1,2 +0,0 @@ -else-if-used:10:8:my_function:"Consider using ""elif"" instead of ""else if""":HIGH -else-if-used:22:20:my_function:"Consider using ""elif"" instead of ""else if""":HIGH diff --git a/tests/functional/ext/comparetozero/compare_to_zero_extension.py b/tests/functional/ext/comparetozero/compare_to_zero_extension.py deleted file mode 100644 index 29fd13994..000000000 --- a/tests/functional/ext/comparetozero/compare_to_zero_extension.py +++ /dev/null @@ -1,28 +0,0 @@ -# pylint: disable=literal-comparison,missing-docstring - -X = 123 -Y = len('test') - -if X is 0: # [compare-to-zero] - pass - -if Y is not 0: # [compare-to-zero] - pass - -if X == 0: # [compare-to-zero] - pass - -if Y != 0: # [compare-to-zero] - pass - -if X > 0: - pass - -if X < 0: - pass - -if 0 < X: - pass - -if 0 > X: - pass diff --git a/tests/functional/ext/comparetozero/compare_to_zero_extension.rc b/tests/functional/ext/comparetozero/compare_to_zero_extension.rc deleted file mode 100644 index e9b836539..000000000 --- a/tests/functional/ext/comparetozero/compare_to_zero_extension.rc +++ /dev/null @@ -1,2 +0,0 @@ -[MASTER] -load-plugins=pylint.extensions.comparetozero, diff --git a/tests/functional/ext/comparetozero/compare_to_zero_extension.txt b/tests/functional/ext/comparetozero/compare_to_zero_extension.txt deleted file mode 100644 index c5862e1b7..000000000 --- a/tests/functional/ext/comparetozero/compare_to_zero_extension.txt +++ /dev/null @@ -1,4 +0,0 @@ -compare-to-zero:6:3::Avoid comparisons to zero:HIGH -compare-to-zero:9:3::Avoid comparisons to zero:HIGH -compare-to-zero:12:3::Avoid comparisons to zero:HIGH -compare-to-zero:15:3::Avoid comparisons to zero:HIGH diff --git a/tests/functional/ext/comparetozero/comparetozero.py b/tests/functional/ext/comparetozero/comparetozero.py new file mode 100644 index 000000000..29fd13994 --- /dev/null +++ b/tests/functional/ext/comparetozero/comparetozero.py @@ -0,0 +1,28 @@ +# pylint: disable=literal-comparison,missing-docstring + +X = 123 +Y = len('test') + +if X is 0: # [compare-to-zero] + pass + +if Y is not 0: # [compare-to-zero] + pass + +if X == 0: # [compare-to-zero] + pass + +if Y != 0: # [compare-to-zero] + pass + +if X > 0: + pass + +if X < 0: + pass + +if 0 < X: + pass + +if 0 > X: + pass diff --git a/tests/functional/ext/comparetozero/comparetozero.rc b/tests/functional/ext/comparetozero/comparetozero.rc new file mode 100644 index 000000000..e9b836539 --- /dev/null +++ b/tests/functional/ext/comparetozero/comparetozero.rc @@ -0,0 +1,2 @@ +[MASTER] +load-plugins=pylint.extensions.comparetozero, diff --git a/tests/functional/ext/comparetozero/comparetozero.txt b/tests/functional/ext/comparetozero/comparetozero.txt new file mode 100644 index 000000000..c5862e1b7 --- /dev/null +++ b/tests/functional/ext/comparetozero/comparetozero.txt @@ -0,0 +1,4 @@ +compare-to-zero:6:3::Avoid comparisons to zero:HIGH +compare-to-zero:9:3::Avoid comparisons to zero:HIGH +compare-to-zero:12:3::Avoid comparisons to zero:HIGH +compare-to-zero:15:3::Avoid comparisons to zero:HIGH diff --git a/tests/functional/ext/docstyle/docstyle.py b/tests/functional/ext/docstyle/docstyle.py new file mode 100644 index 000000000..a5b6161b0 --- /dev/null +++ b/tests/functional/ext/docstyle/docstyle.py @@ -0,0 +1,41 @@ +"""Checks of Dosctrings 'docstring-first-line-empty' 'bad-docstring-quotes'""" + + +def check_messages(*messages): # [docstring-first-line-empty] + """ + docstring""" + return messages + + +def function2(): + """Test Ok""" + + +class FFFF: # [docstring-first-line-empty] + """ + Test Docstring First Line Empty + """ + + def method1(self): # [docstring-first-line-empty, bad-docstring-quotes] + ''' + Test Triple Single Quotes docstring + ''' + + def method2(self): # [bad-docstring-quotes] + "bad docstring 1" + + def method3(self): # [bad-docstring-quotes] + 'bad docstring 2' + + def method4(self): # [bad-docstring-quotes] + ' """bad docstring 3 ' + + @check_messages("bad-open-mode", "redundant-unittest-assert", "deprecated-module") + def method5(self): + """Test OK 1 with decorators""" + + def method6(self): + r"""Test OK 2 with raw string""" + + def method7(self): + u"""Test OK 3 with unicode string""" diff --git a/tests/functional/ext/docstyle/docstyle.rc b/tests/functional/ext/docstyle/docstyle.rc new file mode 100644 index 000000000..5128289ff --- /dev/null +++ b/tests/functional/ext/docstyle/docstyle.rc @@ -0,0 +1,2 @@ +[MASTER] +load-plugins=pylint.extensions.docstyle, diff --git a/tests/functional/ext/docstyle/docstyle.txt b/tests/functional/ext/docstyle/docstyle.txt new file mode 100644 index 000000000..8a30eedee --- /dev/null +++ b/tests/functional/ext/docstyle/docstyle.txt @@ -0,0 +1,7 @@ +docstring-first-line-empty:4:0:check_messages:First line empty in function docstring:HIGH +docstring-first-line-empty:14:0:FFFF:First line empty in class docstring:HIGH +bad-docstring-quotes:19:4:FFFF.method1:"Bad docstring quotes in method, expected """""", given '''":HIGH +docstring-first-line-empty:19:4:FFFF.method1:First line empty in method docstring:HIGH +bad-docstring-quotes:24:4:FFFF.method2:"Bad docstring quotes in method, expected """""", given """:HIGH +bad-docstring-quotes:27:4:FFFF.method3:"Bad docstring quotes in method, expected """""", given '":HIGH +bad-docstring-quotes:30:4:FFFF.method4:"Bad docstring quotes in method, expected """""", given '":HIGH diff --git a/tests/functional/ext/docstyle/docstyle_extension.py b/tests/functional/ext/docstyle/docstyle_extension.py deleted file mode 100644 index a5b6161b0..000000000 --- a/tests/functional/ext/docstyle/docstyle_extension.py +++ /dev/null @@ -1,41 +0,0 @@ -"""Checks of Dosctrings 'docstring-first-line-empty' 'bad-docstring-quotes'""" - - -def check_messages(*messages): # [docstring-first-line-empty] - """ - docstring""" - return messages - - -def function2(): - """Test Ok""" - - -class FFFF: # [docstring-first-line-empty] - """ - Test Docstring First Line Empty - """ - - def method1(self): # [docstring-first-line-empty, bad-docstring-quotes] - ''' - Test Triple Single Quotes docstring - ''' - - def method2(self): # [bad-docstring-quotes] - "bad docstring 1" - - def method3(self): # [bad-docstring-quotes] - 'bad docstring 2' - - def method4(self): # [bad-docstring-quotes] - ' """bad docstring 3 ' - - @check_messages("bad-open-mode", "redundant-unittest-assert", "deprecated-module") - def method5(self): - """Test OK 1 with decorators""" - - def method6(self): - r"""Test OK 2 with raw string""" - - def method7(self): - u"""Test OK 3 with unicode string""" diff --git a/tests/functional/ext/docstyle/docstyle_extension.rc b/tests/functional/ext/docstyle/docstyle_extension.rc deleted file mode 100644 index 5128289ff..000000000 --- a/tests/functional/ext/docstyle/docstyle_extension.rc +++ /dev/null @@ -1,2 +0,0 @@ -[MASTER] -load-plugins=pylint.extensions.docstyle, diff --git a/tests/functional/ext/docstyle/docstyle_extension.txt b/tests/functional/ext/docstyle/docstyle_extension.txt deleted file mode 100644 index 8a30eedee..000000000 --- a/tests/functional/ext/docstyle/docstyle_extension.txt +++ /dev/null @@ -1,7 +0,0 @@ -docstring-first-line-empty:4:0:check_messages:First line empty in function docstring:HIGH -docstring-first-line-empty:14:0:FFFF:First line empty in class docstring:HIGH -bad-docstring-quotes:19:4:FFFF.method1:"Bad docstring quotes in method, expected """""", given '''":HIGH -docstring-first-line-empty:19:4:FFFF.method1:First line empty in method docstring:HIGH -bad-docstring-quotes:24:4:FFFF.method2:"Bad docstring quotes in method, expected """""", given """:HIGH -bad-docstring-quotes:27:4:FFFF.method3:"Bad docstring quotes in method, expected """""", given '":HIGH -bad-docstring-quotes:30:4:FFFF.method4:"Bad docstring quotes in method, expected """""", given '":HIGH diff --git a/tests/functional/ext/redefined_variable_type/redefined_variable_type.txt b/tests/functional/ext/redefined_variable_type/redefined_variable_type.txt index a0205c7aa..e2d52aed7 100644 --- a/tests/functional/ext/redefined_variable_type/redefined_variable_type.txt +++ b/tests/functional/ext/redefined_variable_type/redefined_variable_type.txt @@ -3,7 +3,7 @@ redefined-variable-type:21:8:MyClass.__init__:Redefinition of a_str type from bo redefined-variable-type:33:12:MyClass.some_method.func:Redefinition of var type from int to str:HIGH redefined-variable-type:37:8:MyClass.some_method:Redefinition of myint type from int to bool:HIGH redefined-variable-type:39:0::Redefinition of _OK type from bool to str:HIGH -redefined-variable-type:49:4:other_function:Redefinition of instance type from functional.r.redefined_variable_type.MyClass to bool:HIGH +redefined-variable-type:49:4:other_function:Redefinition of instance type from redefined_variable_type.MyClass to bool:HIGH redefined-variable-type:51:0::Redefinition of SOME_FLOAT type from float to int:HIGH redefined-variable-type:71:8:func2:Redefinition of var3 type from str to int:HIGH redefined-variable-type:75:4:func2:Redefinition of var type from bool to int:HIGH diff --git a/tests/functional/ext/set_membership/set_membership_use_set_membership.py b/tests/functional/ext/set_membership/set_membership_use_set_membership.py deleted file mode 100644 index 50e07f4dd..000000000 --- a/tests/functional/ext/set_membership/set_membership_use_set_membership.py +++ /dev/null @@ -1,40 +0,0 @@ -# pylint: disable=invalid-name,missing-docstring,pointless-statement,unnecessary-comprehension,undefined-variable - -x = 1 -var = frozenset({1, 2, 3}) - -x in var -x in {1, 2, 3} -x in (1, 2, 3) # [use-set-for-membership] -x in [1, 2, 3] # [use-set-for-membership] - -if x in var: - pass -if x in {1, 2, 3}: - pass -if x in (1, 2, 3): # [use-set-for-membership] - pass -if x in [1, 2, 3]: # [use-set-for-membership] - pass - -42 if x in [1, 2, 3] else None # [use-set-for-membership] -assert x in [1, 2, 3] # [use-set-for-membership] -(x for x in var if x in [1, 2, 3]) # [use-set-for-membership] -while x in [1, 2, 3]: # [use-set-for-membership] - break - -# Stacked operators, rightmost pair is evaluated first -# Doesn't make much sense in practice since `in` will only return `bool` -True == x in [1, 2, 3] # [use-set-for-membership] # noqa: E712 -1 >= x in [1, 2, 3] # [use-set-for-membership] # noqa: E712 - - -# Test hashable heuristic -x in (1, "Hello World", False, None) # [use-set-for-membership] -x in (1, []) # List is not hashable - -if some_var: - var2 = 2 -else: - var2 = [] -x in (1, var2) # var2 can be a list diff --git a/tests/functional/ext/set_membership/set_membership_use_set_membership.rc b/tests/functional/ext/set_membership/set_membership_use_set_membership.rc deleted file mode 100644 index 688dcbc31..000000000 --- a/tests/functional/ext/set_membership/set_membership_use_set_membership.rc +++ /dev/null @@ -1,2 +0,0 @@ -[MASTER] -load-plugins=pylint.extensions.set_membership diff --git a/tests/functional/ext/set_membership/set_membership_use_set_membership.txt b/tests/functional/ext/set_membership/set_membership_use_set_membership.txt deleted file mode 100644 index b2adb9ecd..000000000 --- a/tests/functional/ext/set_membership/set_membership_use_set_membership.txt +++ /dev/null @@ -1,11 +0,0 @@ -use-set-for-membership:8:5::Consider using set for membership test:HIGH -use-set-for-membership:9:5::Consider using set for membership test:HIGH -use-set-for-membership:15:8::Consider using set for membership test:HIGH -use-set-for-membership:17:8::Consider using set for membership test:HIGH -use-set-for-membership:20:11::Consider using set for membership test:HIGH -use-set-for-membership:21:12::Consider using set for membership test:HIGH -use-set-for-membership:22:24::Consider using set for membership test:HIGH -use-set-for-membership:23:11::Consider using set for membership test:HIGH -use-set-for-membership:28:13::Consider using set for membership test:HIGH -use-set-for-membership:29:10::Consider using set for membership test:HIGH -use-set-for-membership:33:5::Consider using set for membership test:HIGH diff --git a/tests/functional/ext/set_membership/use_set_membership.py b/tests/functional/ext/set_membership/use_set_membership.py new file mode 100644 index 000000000..50e07f4dd --- /dev/null +++ b/tests/functional/ext/set_membership/use_set_membership.py @@ -0,0 +1,40 @@ +# pylint: disable=invalid-name,missing-docstring,pointless-statement,unnecessary-comprehension,undefined-variable + +x = 1 +var = frozenset({1, 2, 3}) + +x in var +x in {1, 2, 3} +x in (1, 2, 3) # [use-set-for-membership] +x in [1, 2, 3] # [use-set-for-membership] + +if x in var: + pass +if x in {1, 2, 3}: + pass +if x in (1, 2, 3): # [use-set-for-membership] + pass +if x in [1, 2, 3]: # [use-set-for-membership] + pass + +42 if x in [1, 2, 3] else None # [use-set-for-membership] +assert x in [1, 2, 3] # [use-set-for-membership] +(x for x in var if x in [1, 2, 3]) # [use-set-for-membership] +while x in [1, 2, 3]: # [use-set-for-membership] + break + +# Stacked operators, rightmost pair is evaluated first +# Doesn't make much sense in practice since `in` will only return `bool` +True == x in [1, 2, 3] # [use-set-for-membership] # noqa: E712 +1 >= x in [1, 2, 3] # [use-set-for-membership] # noqa: E712 + + +# Test hashable heuristic +x in (1, "Hello World", False, None) # [use-set-for-membership] +x in (1, []) # List is not hashable + +if some_var: + var2 = 2 +else: + var2 = [] +x in (1, var2) # var2 can be a list diff --git a/tests/functional/ext/set_membership/use_set_membership.rc b/tests/functional/ext/set_membership/use_set_membership.rc new file mode 100644 index 000000000..688dcbc31 --- /dev/null +++ b/tests/functional/ext/set_membership/use_set_membership.rc @@ -0,0 +1,2 @@ +[MASTER] +load-plugins=pylint.extensions.set_membership diff --git a/tests/functional/ext/set_membership/use_set_membership.txt b/tests/functional/ext/set_membership/use_set_membership.txt new file mode 100644 index 000000000..b2adb9ecd --- /dev/null +++ b/tests/functional/ext/set_membership/use_set_membership.txt @@ -0,0 +1,11 @@ +use-set-for-membership:8:5::Consider using set for membership test:HIGH +use-set-for-membership:9:5::Consider using set for membership test:HIGH +use-set-for-membership:15:8::Consider using set for membership test:HIGH +use-set-for-membership:17:8::Consider using set for membership test:HIGH +use-set-for-membership:20:11::Consider using set for membership test:HIGH +use-set-for-membership:21:12::Consider using set for membership test:HIGH +use-set-for-membership:22:24::Consider using set for membership test:HIGH +use-set-for-membership:23:11::Consider using set for membership test:HIGH +use-set-for-membership:28:13::Consider using set for membership test:HIGH +use-set-for-membership:29:10::Consider using set for membership test:HIGH +use-set-for-membership:33:5::Consider using set for membership test:HIGH diff --git a/tests/functional/ext/typing/consider_using_alias.py b/tests/functional/ext/typing/consider_using_alias.py new file mode 100644 index 000000000..3d4037fdf --- /dev/null +++ b/tests/functional/ext/typing/consider_using_alias.py @@ -0,0 +1,69 @@ +"""Test pylint.extension.typing - consider-using-alias + +'py-version' needs to be set to '3.7' or '3.8' and 'runtime-typing=no'. +With 'from __future__ import annotations' present. +""" +# pylint: disable=missing-docstring,invalid-name,unused-argument,line-too-long +from __future__ import annotations + +import collections +import collections.abc +import typing +from collections.abc import Awaitable +from dataclasses import dataclass +from typing import Dict, List, Set, Union, TypedDict, Callable, Tuple, Type + +var1: typing.Dict[str, int] # [consider-using-alias] +var2: List[int] # [consider-using-alias] +var3: collections.abc.Iterable[int] +var4: typing.OrderedDict[str, int] # [consider-using-alias] +var5: typing.Awaitable[None] # [consider-using-alias] +var6: typing.Iterable[int] # [consider-using-alias] +var7: typing.Hashable # [consider-using-alias] +var8: typing.ContextManager[str] # [consider-using-alias] +var9: typing.Pattern[str] # [consider-using-alias] +var10: typing.re.Match[str] # [consider-using-alias] +var11: list[int] +var12: collections.abc +var13: Awaitable[None] +var14: collections.defaultdict[str, str] + +Alias1 = Set[int] +Alias2 = Dict[int, List[int]] +Alias3 = Union[int, typing.List[str]] +Alias4 = List # [consider-using-alias] + +var21: Type[object] # [consider-using-alias] +var22: Tuple[str] # [consider-using-alias] +var23: Callable[..., str] # [consider-using-alias] +var31: type[object] +var32: tuple[str] +var33: collections.abc.Callable[..., str] + + +def func1(arg1: List[int], /, *args: List[int], arg2: set[int], **kwargs: Dict[str, int]) -> typing.Tuple[int]: + # -1:[consider-using-alias,consider-using-alias,consider-using-alias,consider-using-alias] + pass + +def func2(arg1: list[int]) -> tuple[int, int]: + pass + +class CustomIntList(typing.List[int]): + pass + +cast_variable = [1, 2, 3] +cast_variable = typing.cast(List[int], cast_variable) + +(lambda x: 2)(List[int]) + +class CustomNamedTuple(typing.NamedTuple): + my_var: List[int] # [consider-using-alias] + +CustomTypedDict1 = TypedDict("CustomTypedDict1", my_var=List[int]) + +class CustomTypedDict2(TypedDict): + my_var: List[int] # [consider-using-alias] + +@dataclass +class CustomDataClass: + my_var: List[int] # [consider-using-alias] diff --git a/tests/functional/ext/typing/consider_using_alias.rc b/tests/functional/ext/typing/consider_using_alias.rc new file mode 100644 index 000000000..f77f58ef4 --- /dev/null +++ b/tests/functional/ext/typing/consider_using_alias.rc @@ -0,0 +1,9 @@ +[master] +py-version=3.8 +load-plugins=pylint.extensions.typing + +[testoptions] +min_pyver=3.8 + +[typing] +runtime-typing=no diff --git a/tests/functional/ext/typing/consider_using_alias.txt b/tests/functional/ext/typing/consider_using_alias.txt new file mode 100644 index 000000000..e3deddf7e --- /dev/null +++ b/tests/functional/ext/typing/consider_using_alias.txt @@ -0,0 +1,20 @@ +consider-using-alias:16:6::'typing.Dict' will be deprecated with PY39, consider using 'dict' instead +consider-using-alias:17:6::'typing.List' will be deprecated with PY39, consider using 'list' instead +consider-using-alias:19:6::'typing.OrderedDict' will be deprecated with PY39, consider using 'collections.OrderedDict' instead +consider-using-alias:20:6::'typing.Awaitable' will be deprecated with PY39, consider using 'collections.abc.Awaitable' instead +consider-using-alias:21:6::'typing.Iterable' will be deprecated with PY39, consider using 'collections.abc.Iterable' instead +consider-using-alias:22:6::'typing.Hashable' will be deprecated with PY39, consider using 'collections.abc.Hashable' instead +consider-using-alias:23:6::'typing.ContextManager' will be deprecated with PY39, consider using 'contextlib.AbstractContextManager' instead +consider-using-alias:24:6::'typing.Pattern' will be deprecated with PY39, consider using 're.Pattern' instead +consider-using-alias:25:7::'typing.Match' will be deprecated with PY39, consider using 're.Match' instead +consider-using-alias:34:9::'typing.List' will be deprecated with PY39, consider using 'list' instead +consider-using-alias:36:7::'typing.Type' will be deprecated with PY39, consider using 'type' instead +consider-using-alias:37:7::'typing.Tuple' will be deprecated with PY39, consider using 'tuple' instead +consider-using-alias:38:7::'typing.Callable' will be deprecated with PY39, consider using 'collections.abc.Callable' instead +consider-using-alias:44:74:func1:'typing.Dict' will be deprecated with PY39, consider using 'dict' instead +consider-using-alias:44:16:func1:'typing.List' will be deprecated with PY39, consider using 'list' instead +consider-using-alias:44:37:func1:'typing.List' will be deprecated with PY39, consider using 'list' instead +consider-using-alias:44:93:func1:'typing.Tuple' will be deprecated with PY39, consider using 'tuple' instead +consider-using-alias:60:12:CustomNamedTuple:'typing.List' will be deprecated with PY39, consider using 'list' instead +consider-using-alias:65:12:CustomTypedDict2:'typing.List' will be deprecated with PY39, consider using 'list' instead +consider-using-alias:69:12:CustomDataClass:'typing.List' will be deprecated with PY39, consider using 'list' instead diff --git a/tests/functional/ext/typing/consider_using_alias_without_future.py b/tests/functional/ext/typing/consider_using_alias_without_future.py new file mode 100644 index 000000000..bdc792186 --- /dev/null +++ b/tests/functional/ext/typing/consider_using_alias_without_future.py @@ -0,0 +1,66 @@ +"""Test pylint.extension.typing - consider-using-alias + +'py-version' needs to be set to '3.7' or '3.8' and 'runtime-typing=no'. +""" +# pylint: disable=missing-docstring,invalid-name,unused-argument,line-too-long,unsubscriptable-object +import collections +import collections.abc +import typing +from collections.abc import Awaitable +from dataclasses import dataclass +from typing import Dict, List, Set, Union, TypedDict, Callable, Tuple, Type + +var1: typing.Dict[str, int] # [consider-using-alias] +var2: List[int] # [consider-using-alias] +var3: collections.abc.Iterable[int] +var4: typing.OrderedDict[str, int] # [consider-using-alias] +var5: typing.Awaitable[None] # [consider-using-alias] +var6: typing.Iterable[int] # [consider-using-alias] +var7: typing.Hashable # [consider-using-alias] +var8: typing.ContextManager[str] # [consider-using-alias] +var9: typing.Pattern[str] # [consider-using-alias] +var10: typing.re.Match[str] # [consider-using-alias] +var11: list[int] +var12: collections.abc +var13: Awaitable[None] +var14: collections.defaultdict[str, str] + +Alias1 = Set[int] +Alias2 = Dict[int, List[int]] +Alias3 = Union[int, typing.List[str]] +Alias4 = List # [consider-using-alias] + +var21: Type[object] # [consider-using-alias] +var22: Tuple[str] # [consider-using-alias] +var23: Callable[..., str] # [consider-using-alias] +var31: type[object] +var32: tuple[str] +var33: collections.abc.Callable[..., str] + + +def func1(arg1: List[int], /, *args: List[int], arg2: set[int], **kwargs: Dict[str, int]) -> typing.Tuple[int]: + # -1:[consider-using-alias,consider-using-alias,consider-using-alias,consider-using-alias] + pass + +def func2(arg1: list[int]) -> tuple[int, int]: + pass + +class CustomIntList(typing.List[int]): + pass + +cast_variable = [1, 2, 3] +cast_variable = typing.cast(List[int], cast_variable) + +(lambda x: 2)(List[int]) + +class CustomNamedTuple(typing.NamedTuple): + my_var: List[int] # [consider-using-alias] + +CustomTypedDict1 = TypedDict("CustomTypedDict1", my_var=List[int]) + +class CustomTypedDict2(TypedDict): + my_var: List[int] # [consider-using-alias] + +@dataclass +class CustomDataClass: + my_var: List[int] # [consider-using-alias] diff --git a/tests/functional/ext/typing/consider_using_alias_without_future.rc b/tests/functional/ext/typing/consider_using_alias_without_future.rc new file mode 100644 index 000000000..f77f58ef4 --- /dev/null +++ b/tests/functional/ext/typing/consider_using_alias_without_future.rc @@ -0,0 +1,9 @@ +[master] +py-version=3.8 +load-plugins=pylint.extensions.typing + +[testoptions] +min_pyver=3.8 + +[typing] +runtime-typing=no diff --git a/tests/functional/ext/typing/consider_using_alias_without_future.txt b/tests/functional/ext/typing/consider_using_alias_without_future.txt new file mode 100644 index 000000000..f60436dc8 --- /dev/null +++ b/tests/functional/ext/typing/consider_using_alias_without_future.txt @@ -0,0 +1,20 @@ +consider-using-alias:13:6::'typing.Dict' will be deprecated with PY39, consider using 'dict' instead. Add 'from __future__ import annotations' as well +consider-using-alias:14:6::'typing.List' will be deprecated with PY39, consider using 'list' instead. Add 'from __future__ import annotations' as well +consider-using-alias:16:6::'typing.OrderedDict' will be deprecated with PY39, consider using 'collections.OrderedDict' instead. Add 'from __future__ import annotations' as well +consider-using-alias:17:6::'typing.Awaitable' will be deprecated with PY39, consider using 'collections.abc.Awaitable' instead. Add 'from __future__ import annotations' as well +consider-using-alias:18:6::'typing.Iterable' will be deprecated with PY39, consider using 'collections.abc.Iterable' instead. Add 'from __future__ import annotations' as well +consider-using-alias:19:6::'typing.Hashable' will be deprecated with PY39, consider using 'collections.abc.Hashable' instead +consider-using-alias:20:6::'typing.ContextManager' will be deprecated with PY39, consider using 'contextlib.AbstractContextManager' instead. Add 'from __future__ import annotations' as well +consider-using-alias:21:6::'typing.Pattern' will be deprecated with PY39, consider using 're.Pattern' instead. Add 'from __future__ import annotations' as well +consider-using-alias:22:7::'typing.Match' will be deprecated with PY39, consider using 're.Match' instead. Add 'from __future__ import annotations' as well +consider-using-alias:31:9::'typing.List' will be deprecated with PY39, consider using 'list' instead +consider-using-alias:33:7::'typing.Type' will be deprecated with PY39, consider using 'type' instead. Add 'from __future__ import annotations' as well +consider-using-alias:34:7::'typing.Tuple' will be deprecated with PY39, consider using 'tuple' instead. Add 'from __future__ import annotations' as well +consider-using-alias:35:7::'typing.Callable' will be deprecated with PY39, consider using 'collections.abc.Callable' instead. Add 'from __future__ import annotations' as well +consider-using-alias:41:74:func1:'typing.Dict' will be deprecated with PY39, consider using 'dict' instead. Add 'from __future__ import annotations' as well +consider-using-alias:41:16:func1:'typing.List' will be deprecated with PY39, consider using 'list' instead. Add 'from __future__ import annotations' as well +consider-using-alias:41:37:func1:'typing.List' will be deprecated with PY39, consider using 'list' instead. Add 'from __future__ import annotations' as well +consider-using-alias:41:93:func1:'typing.Tuple' will be deprecated with PY39, consider using 'tuple' instead. Add 'from __future__ import annotations' as well +consider-using-alias:57:12:CustomNamedTuple:'typing.List' will be deprecated with PY39, consider using 'list' instead. Add 'from __future__ import annotations' as well +consider-using-alias:62:12:CustomTypedDict2:'typing.List' will be deprecated with PY39, consider using 'list' instead. Add 'from __future__ import annotations' as well +consider-using-alias:66:12:CustomDataClass:'typing.List' will be deprecated with PY39, consider using 'list' instead. Add 'from __future__ import annotations' as well diff --git a/tests/functional/ext/typing/consider_using_union.py b/tests/functional/ext/typing/consider_using_union.py new file mode 100644 index 000000000..2f27b40da --- /dev/null +++ b/tests/functional/ext/typing/consider_using_union.py @@ -0,0 +1,47 @@ +"""Test pylint.extension.typing - consider-alternative-union-syntax + +'py-version' needs to be set to >= '3.7' and 'runtime-typing=no'. +With 'from __future__ import annotations' present. +""" +# pylint: disable=missing-docstring,invalid-name,unused-argument,line-too-long +# pylint: disable=consider-using-alias +from __future__ import annotations +from dataclasses import dataclass +import typing +from typing import Dict, List, Optional, Union, TypedDict + +var1: Union[int, str] # [consider-alternative-union-syntax] +var2: List[Union[int, None]] # [consider-alternative-union-syntax] +var3: Dict[str, typing.Union[int, str]] # [consider-alternative-union-syntax] +var4: Optional[int] # [consider-alternative-union-syntax] + +Alias1 = Union[int, str] +Alias2 = List[Union[int, None]] +Alias3 = Dict[str, typing.Union[int, str]] +Alias4 = Optional[int] + +def func1( + arg1: Optional[int], # [consider-alternative-union-syntax] + **kwargs: Dict[str, Union[int, str]] # [consider-alternative-union-syntax] +) -> Union[str, None]: # [consider-alternative-union-syntax] + pass + +class Custom1(List[Union[str, int]]): + pass + +cast_variable = [1, 2, 3] +cast_variable = typing.cast(Union[List[int], None], cast_variable) + +(lambda x: 2)(Optional[int]) + +class CustomNamedTuple(typing.NamedTuple): + my_var: Union[int, str] # [consider-alternative-union-syntax] + +CustomTypedDict1 = TypedDict("CustomTypedDict1", my_var=Optional[int]) + +class CustomTypedDict2(TypedDict): + my_var: Dict[str, List[Union[str, int]]] # [consider-alternative-union-syntax] + +@dataclass +class CustomDataClass: + my_var: Optional[int] # [consider-alternative-union-syntax] diff --git a/tests/functional/ext/typing/consider_using_union.rc b/tests/functional/ext/typing/consider_using_union.rc new file mode 100644 index 000000000..f77f58ef4 --- /dev/null +++ b/tests/functional/ext/typing/consider_using_union.rc @@ -0,0 +1,9 @@ +[master] +py-version=3.8 +load-plugins=pylint.extensions.typing + +[testoptions] +min_pyver=3.8 + +[typing] +runtime-typing=no diff --git a/tests/functional/ext/typing/consider_using_union.txt b/tests/functional/ext/typing/consider_using_union.txt new file mode 100644 index 000000000..330a7165f --- /dev/null +++ b/tests/functional/ext/typing/consider_using_union.txt @@ -0,0 +1,10 @@ +consider-alternative-union-syntax:13:6::Consider using alternative Union syntax instead of 'Union' +consider-alternative-union-syntax:14:11::Consider using alternative Union syntax instead of 'Union' +consider-alternative-union-syntax:15:16::Consider using alternative Union syntax instead of 'Union' +consider-alternative-union-syntax:16:6::Consider using alternative Union syntax instead of 'Optional' +consider-alternative-union-syntax:24:10:func1:Consider using alternative Union syntax instead of 'Optional' +consider-alternative-union-syntax:25:24:func1:Consider using alternative Union syntax instead of 'Union' +consider-alternative-union-syntax:26:5:func1:Consider using alternative Union syntax instead of 'Union' +consider-alternative-union-syntax:38:12:CustomNamedTuple:Consider using alternative Union syntax instead of 'Union' +consider-alternative-union-syntax:43:27:CustomTypedDict2:Consider using alternative Union syntax instead of 'Union' +consider-alternative-union-syntax:47:12:CustomDataClass:Consider using alternative Union syntax instead of 'Optional' diff --git a/tests/functional/ext/typing/consider_using_union_py310.py b/tests/functional/ext/typing/consider_using_union_py310.py new file mode 100644 index 000000000..1018c3670 --- /dev/null +++ b/tests/functional/ext/typing/consider_using_union_py310.py @@ -0,0 +1,45 @@ +"""Test pylint.extension.typing - consider-alternative-union-syntax + +'py-version' needs to be set to >= '3.10'. +""" +# pylint: disable=missing-docstring,invalid-name,unused-argument,line-too-long +# pylint: disable=deprecated-typing-alias +from dataclasses import dataclass +import typing +from typing import Dict, List, Optional, Union, TypedDict + +var1: Union[int, str] # [consider-alternative-union-syntax] +var2: List[Union[int, None]] # [consider-alternative-union-syntax] +var3: Dict[str, typing.Union[int, str]] # [consider-alternative-union-syntax] +var4: Optional[int] # [consider-alternative-union-syntax] + +Alias1 = Union[int, str] # [consider-alternative-union-syntax] +Alias2 = List[Union[int, None]] # [consider-alternative-union-syntax] +Alias3 = Dict[str, typing.Union[int, str]] # [consider-alternative-union-syntax] +Alias4 = Optional[int] # [consider-alternative-union-syntax] + +def func1( + arg1: Optional[int], # [consider-alternative-union-syntax] + **kwargs: Dict[str, Union[int, str]] # [consider-alternative-union-syntax] +) -> Union[str, None]: # [consider-alternative-union-syntax] + pass + +class Custom1(List[Union[str, int]]): # [consider-alternative-union-syntax] + pass + +cast_variable = [1, 2, 3] +cast_variable = typing.cast(Union[List[int], None], cast_variable) # [consider-alternative-union-syntax] + +(lambda x: 2)(Optional[int]) # [consider-alternative-union-syntax] + +class CustomNamedTuple(typing.NamedTuple): + my_var: Union[int, str] # [consider-alternative-union-syntax] + +CustomTypedDict1 = TypedDict("CustomTypedDict1", my_var=Optional[int]) # [consider-alternative-union-syntax] + +class CustomTypedDict2(TypedDict): + my_var: Dict[str, List[Union[str, int]]] # [consider-alternative-union-syntax] + +@dataclass +class CustomDataClass: + my_var: Optional[int] # [consider-alternative-union-syntax] diff --git a/tests/functional/ext/typing/consider_using_union_py310.rc b/tests/functional/ext/typing/consider_using_union_py310.rc new file mode 100644 index 000000000..65b4e34fc --- /dev/null +++ b/tests/functional/ext/typing/consider_using_union_py310.rc @@ -0,0 +1,8 @@ +[master] +py-version=3.10 +load-plugins=pylint.extensions.typing + +[testoptions] +min_pyver=3.10 + +[typing] diff --git a/tests/functional/ext/typing/consider_using_union_py310.txt b/tests/functional/ext/typing/consider_using_union_py310.txt new file mode 100644 index 000000000..4402eb218 --- /dev/null +++ b/tests/functional/ext/typing/consider_using_union_py310.txt @@ -0,0 +1,18 @@ +consider-alternative-union-syntax:11:6::Consider using alternative Union syntax instead of 'Union' +consider-alternative-union-syntax:12:11::Consider using alternative Union syntax instead of 'Union' +consider-alternative-union-syntax:13:16::Consider using alternative Union syntax instead of 'Union' +consider-alternative-union-syntax:14:6::Consider using alternative Union syntax instead of 'Optional' +consider-alternative-union-syntax:16:9::Consider using alternative Union syntax instead of 'Union' +consider-alternative-union-syntax:17:14::Consider using alternative Union syntax instead of 'Union' +consider-alternative-union-syntax:18:19::Consider using alternative Union syntax instead of 'Union' +consider-alternative-union-syntax:19:9::Consider using alternative Union syntax instead of 'Optional' +consider-alternative-union-syntax:22:10:func1:Consider using alternative Union syntax instead of 'Optional' +consider-alternative-union-syntax:23:24:func1:Consider using alternative Union syntax instead of 'Union' +consider-alternative-union-syntax:24:5:func1:Consider using alternative Union syntax instead of 'Union' +consider-alternative-union-syntax:27:19:Custom1:Consider using alternative Union syntax instead of 'Union' +consider-alternative-union-syntax:31:28::Consider using alternative Union syntax instead of 'Union' +consider-alternative-union-syntax:33:14::Consider using alternative Union syntax instead of 'Optional' +consider-alternative-union-syntax:36:12:CustomNamedTuple:Consider using alternative Union syntax instead of 'Union' +consider-alternative-union-syntax:38:56::Consider using alternative Union syntax instead of 'Optional' +consider-alternative-union-syntax:41:27:CustomTypedDict2:Consider using alternative Union syntax instead of 'Union' +consider-alternative-union-syntax:45:12:CustomDataClass:Consider using alternative Union syntax instead of 'Optional' diff --git a/tests/functional/ext/typing/consider_using_union_without_future.py b/tests/functional/ext/typing/consider_using_union_without_future.py new file mode 100644 index 000000000..f459d047b --- /dev/null +++ b/tests/functional/ext/typing/consider_using_union_without_future.py @@ -0,0 +1,45 @@ +"""Test pylint.extension.typing - consider-alternative-union-syntax + +'py-version' needs to be set to >= '3.7' and 'runtime-typing=no'. +""" +# pylint: disable=missing-docstring,invalid-name,unused-argument,line-too-long +# pylint: disable=consider-using-alias +from dataclasses import dataclass +import typing +from typing import Dict, List, Optional, Union, TypedDict + +var1: Union[int, str] # [consider-alternative-union-syntax] +var2: List[Union[int, None]] # [consider-alternative-union-syntax] +var3: Dict[str, typing.Union[int, str]] # [consider-alternative-union-syntax] +var4: Optional[int] # [consider-alternative-union-syntax] + +Alias1 = Union[int, str] +Alias2 = List[Union[int, None]] +Alias3 = Dict[str, typing.Union[int, str]] +Alias4 = Optional[int] + +def func1( + arg1: Optional[int], # [consider-alternative-union-syntax] + **kwargs: Dict[str, Union[int, str]] # [consider-alternative-union-syntax] +) -> Union[str, None]: # [consider-alternative-union-syntax] + pass + +class Custom1(List[Union[str, int]]): + pass + +cast_variable = [1, 2, 3] +cast_variable = typing.cast(Union[List[int], None], cast_variable) + +(lambda x: 2)(Optional[int]) + +class CustomNamedTuple(typing.NamedTuple): + my_var: Union[int, str] # [consider-alternative-union-syntax] + +CustomTypedDict1 = TypedDict("CustomTypedDict1", my_var=Optional[int]) + +class CustomTypedDict2(TypedDict): + my_var: Dict[str, List[Union[str, int]]] # [consider-alternative-union-syntax] + +@dataclass +class CustomDataClass: + my_var: Optional[int] # [consider-alternative-union-syntax] diff --git a/tests/functional/ext/typing/consider_using_union_without_future.rc b/tests/functional/ext/typing/consider_using_union_without_future.rc new file mode 100644 index 000000000..f77f58ef4 --- /dev/null +++ b/tests/functional/ext/typing/consider_using_union_without_future.rc @@ -0,0 +1,9 @@ +[master] +py-version=3.8 +load-plugins=pylint.extensions.typing + +[testoptions] +min_pyver=3.8 + +[typing] +runtime-typing=no diff --git a/tests/functional/ext/typing/consider_using_union_without_future.txt b/tests/functional/ext/typing/consider_using_union_without_future.txt new file mode 100644 index 000000000..c43cbc3ce --- /dev/null +++ b/tests/functional/ext/typing/consider_using_union_without_future.txt @@ -0,0 +1,10 @@ +consider-alternative-union-syntax:11:6::Consider using alternative Union syntax instead of 'Union'. Add 'from __future__ import annotations' as well +consider-alternative-union-syntax:12:11::Consider using alternative Union syntax instead of 'Union'. Add 'from __future__ import annotations' as well +consider-alternative-union-syntax:13:16::Consider using alternative Union syntax instead of 'Union'. Add 'from __future__ import annotations' as well +consider-alternative-union-syntax:14:6::Consider using alternative Union syntax instead of 'Optional'. Add 'from __future__ import annotations' as well +consider-alternative-union-syntax:22:10:func1:Consider using alternative Union syntax instead of 'Optional'. Add 'from __future__ import annotations' as well +consider-alternative-union-syntax:23:24:func1:Consider using alternative Union syntax instead of 'Union'. Add 'from __future__ import annotations' as well +consider-alternative-union-syntax:24:5:func1:Consider using alternative Union syntax instead of 'Union'. Add 'from __future__ import annotations' as well +consider-alternative-union-syntax:36:12:CustomNamedTuple:Consider using alternative Union syntax instead of 'Union'. Add 'from __future__ import annotations' as well +consider-alternative-union-syntax:41:27:CustomTypedDict2:Consider using alternative Union syntax instead of 'Union'. Add 'from __future__ import annotations' as well +consider-alternative-union-syntax:45:12:CustomDataClass:Consider using alternative Union syntax instead of 'Optional'. Add 'from __future__ import annotations' as well diff --git a/tests/functional/ext/typing/deprecated_alias.py b/tests/functional/ext/typing/deprecated_alias.py new file mode 100644 index 000000000..5b84319dd --- /dev/null +++ b/tests/functional/ext/typing/deprecated_alias.py @@ -0,0 +1,66 @@ +"""Test pylint.extension.typing - deprecated-typing-alias + +'py-version' needs to be set to >= '3.9'. +""" +# pylint: disable=missing-docstring,invalid-name,unused-argument,line-too-long,unsubscriptable-object +import collections +import collections.abc +import typing +from collections.abc import Awaitable +from dataclasses import dataclass +from typing import Dict, List, Set, Union, TypedDict, Callable, Tuple, Type + +var1: typing.Dict[str, int] # [deprecated-typing-alias] +var2: List[int] # [deprecated-typing-alias] +var3: collections.abc.Iterable[int] +var4: typing.OrderedDict[str, int] # [deprecated-typing-alias] +var5: typing.Awaitable[None] # [deprecated-typing-alias] +var6: typing.Iterable[int] # [deprecated-typing-alias] +var7: typing.Hashable # [deprecated-typing-alias] +var8: typing.ContextManager[str] # [deprecated-typing-alias] +var9: typing.Pattern[str] # [deprecated-typing-alias] +var10: typing.re.Match[str] # [deprecated-typing-alias] +var11: list[int] +var12: collections.abc +var13: Awaitable[None] +var14: collections.defaultdict[str, str] + +Alias1 = Set[int] # [deprecated-typing-alias] +Alias2 = Dict[int, List[int]] # [deprecated-typing-alias,deprecated-typing-alias] +Alias3 = Union[int, typing.List[str]] # [deprecated-typing-alias] +Alias4 = List # [deprecated-typing-alias] + +var21: Type[object] # [deprecated-typing-alias] +var22: Tuple[str] # [deprecated-typing-alias] +var23: Callable[..., str] # [deprecated-typing-alias] +var31: type[object] +var32: tuple[str] +var33: collections.abc.Callable[..., str] + + +def func1(arg1: List[int], /, *args: List[int], arg2: set[int], **kwargs: Dict[str, int]) -> typing.Tuple[int]: + # -1:[deprecated-typing-alias,deprecated-typing-alias,deprecated-typing-alias,deprecated-typing-alias] + pass + +def func2(arg1: list[int]) -> tuple[int, int]: + pass + +class CustomIntList(typing.List[int]): # [deprecated-typing-alias] + pass + +cast_variable = [1, 2, 3] +cast_variable = typing.cast(List[int], cast_variable) # [deprecated-typing-alias] + +(lambda x: 2)(List[int]) # [deprecated-typing-alias] + +class CustomNamedTuple(typing.NamedTuple): + my_var: List[int] # [deprecated-typing-alias] + +CustomTypedDict1 = TypedDict("CustomTypedDict1", my_var=List[int]) # [deprecated-typing-alias] + +class CustomTypedDict2(TypedDict): + my_var: List[int] # [deprecated-typing-alias] + +@dataclass +class CustomDataClass: + my_var: List[int] # [deprecated-typing-alias] diff --git a/tests/functional/ext/typing/deprecated_alias.rc b/tests/functional/ext/typing/deprecated_alias.rc new file mode 100644 index 000000000..abd4136bb --- /dev/null +++ b/tests/functional/ext/typing/deprecated_alias.rc @@ -0,0 +1,8 @@ +[master] +py-version=3.9 +load-plugins=pylint.extensions.typing + +[testoptions] +min_pyver=3.9 + +[typing] diff --git a/tests/functional/ext/typing/deprecated_alias.txt b/tests/functional/ext/typing/deprecated_alias.txt new file mode 100644 index 000000000..3da7cfefe --- /dev/null +++ b/tests/functional/ext/typing/deprecated_alias.txt @@ -0,0 +1,28 @@ +deprecated-typing-alias:13:6::'typing.Dict' is deprecated, use 'dict' instead +deprecated-typing-alias:14:6::'typing.List' is deprecated, use 'list' instead +deprecated-typing-alias:16:6::'typing.OrderedDict' is deprecated, use 'collections.OrderedDict' instead +deprecated-typing-alias:17:6::'typing.Awaitable' is deprecated, use 'collections.abc.Awaitable' instead +deprecated-typing-alias:18:6::'typing.Iterable' is deprecated, use 'collections.abc.Iterable' instead +deprecated-typing-alias:19:6::'typing.Hashable' is deprecated, use 'collections.abc.Hashable' instead +deprecated-typing-alias:20:6::'typing.ContextManager' is deprecated, use 'contextlib.AbstractContextManager' instead +deprecated-typing-alias:21:6::'typing.Pattern' is deprecated, use 're.Pattern' instead +deprecated-typing-alias:22:7::'typing.Match' is deprecated, use 're.Match' instead +deprecated-typing-alias:28:9::'typing.Set' is deprecated, use 'set' instead +deprecated-typing-alias:29:9::'typing.Dict' is deprecated, use 'dict' instead +deprecated-typing-alias:29:19::'typing.List' is deprecated, use 'list' instead +deprecated-typing-alias:30:20::'typing.List' is deprecated, use 'list' instead +deprecated-typing-alias:31:9::'typing.List' is deprecated, use 'list' instead +deprecated-typing-alias:33:7::'typing.Type' is deprecated, use 'type' instead +deprecated-typing-alias:34:7::'typing.Tuple' is deprecated, use 'tuple' instead +deprecated-typing-alias:35:7::'typing.Callable' is deprecated, use 'collections.abc.Callable' instead +deprecated-typing-alias:41:74:func1:'typing.Dict' is deprecated, use 'dict' instead +deprecated-typing-alias:41:16:func1:'typing.List' is deprecated, use 'list' instead +deprecated-typing-alias:41:37:func1:'typing.List' is deprecated, use 'list' instead +deprecated-typing-alias:41:93:func1:'typing.Tuple' is deprecated, use 'tuple' instead +deprecated-typing-alias:48:20:CustomIntList:'typing.List' is deprecated, use 'list' instead +deprecated-typing-alias:52:28::'typing.List' is deprecated, use 'list' instead +deprecated-typing-alias:54:14::'typing.List' is deprecated, use 'list' instead +deprecated-typing-alias:57:12:CustomNamedTuple:'typing.List' is deprecated, use 'list' instead +deprecated-typing-alias:59:56::'typing.List' is deprecated, use 'list' instead +deprecated-typing-alias:62:12:CustomTypedDict2:'typing.List' is deprecated, use 'list' instead +deprecated-typing-alias:66:12:CustomDataClass:'typing.List' is deprecated, use 'list' instead diff --git a/tests/functional/ext/typing/typing_consider_using_alias.py b/tests/functional/ext/typing/typing_consider_using_alias.py deleted file mode 100644 index 3d4037fdf..000000000 --- a/tests/functional/ext/typing/typing_consider_using_alias.py +++ /dev/null @@ -1,69 +0,0 @@ -"""Test pylint.extension.typing - consider-using-alias - -'py-version' needs to be set to '3.7' or '3.8' and 'runtime-typing=no'. -With 'from __future__ import annotations' present. -""" -# pylint: disable=missing-docstring,invalid-name,unused-argument,line-too-long -from __future__ import annotations - -import collections -import collections.abc -import typing -from collections.abc import Awaitable -from dataclasses import dataclass -from typing import Dict, List, Set, Union, TypedDict, Callable, Tuple, Type - -var1: typing.Dict[str, int] # [consider-using-alias] -var2: List[int] # [consider-using-alias] -var3: collections.abc.Iterable[int] -var4: typing.OrderedDict[str, int] # [consider-using-alias] -var5: typing.Awaitable[None] # [consider-using-alias] -var6: typing.Iterable[int] # [consider-using-alias] -var7: typing.Hashable # [consider-using-alias] -var8: typing.ContextManager[str] # [consider-using-alias] -var9: typing.Pattern[str] # [consider-using-alias] -var10: typing.re.Match[str] # [consider-using-alias] -var11: list[int] -var12: collections.abc -var13: Awaitable[None] -var14: collections.defaultdict[str, str] - -Alias1 = Set[int] -Alias2 = Dict[int, List[int]] -Alias3 = Union[int, typing.List[str]] -Alias4 = List # [consider-using-alias] - -var21: Type[object] # [consider-using-alias] -var22: Tuple[str] # [consider-using-alias] -var23: Callable[..., str] # [consider-using-alias] -var31: type[object] -var32: tuple[str] -var33: collections.abc.Callable[..., str] - - -def func1(arg1: List[int], /, *args: List[int], arg2: set[int], **kwargs: Dict[str, int]) -> typing.Tuple[int]: - # -1:[consider-using-alias,consider-using-alias,consider-using-alias,consider-using-alias] - pass - -def func2(arg1: list[int]) -> tuple[int, int]: - pass - -class CustomIntList(typing.List[int]): - pass - -cast_variable = [1, 2, 3] -cast_variable = typing.cast(List[int], cast_variable) - -(lambda x: 2)(List[int]) - -class CustomNamedTuple(typing.NamedTuple): - my_var: List[int] # [consider-using-alias] - -CustomTypedDict1 = TypedDict("CustomTypedDict1", my_var=List[int]) - -class CustomTypedDict2(TypedDict): - my_var: List[int] # [consider-using-alias] - -@dataclass -class CustomDataClass: - my_var: List[int] # [consider-using-alias] diff --git a/tests/functional/ext/typing/typing_consider_using_alias.rc b/tests/functional/ext/typing/typing_consider_using_alias.rc deleted file mode 100644 index f77f58ef4..000000000 --- a/tests/functional/ext/typing/typing_consider_using_alias.rc +++ /dev/null @@ -1,9 +0,0 @@ -[master] -py-version=3.8 -load-plugins=pylint.extensions.typing - -[testoptions] -min_pyver=3.8 - -[typing] -runtime-typing=no diff --git a/tests/functional/ext/typing/typing_consider_using_alias.txt b/tests/functional/ext/typing/typing_consider_using_alias.txt deleted file mode 100644 index e3deddf7e..000000000 --- a/tests/functional/ext/typing/typing_consider_using_alias.txt +++ /dev/null @@ -1,20 +0,0 @@ -consider-using-alias:16:6::'typing.Dict' will be deprecated with PY39, consider using 'dict' instead -consider-using-alias:17:6::'typing.List' will be deprecated with PY39, consider using 'list' instead -consider-using-alias:19:6::'typing.OrderedDict' will be deprecated with PY39, consider using 'collections.OrderedDict' instead -consider-using-alias:20:6::'typing.Awaitable' will be deprecated with PY39, consider using 'collections.abc.Awaitable' instead -consider-using-alias:21:6::'typing.Iterable' will be deprecated with PY39, consider using 'collections.abc.Iterable' instead -consider-using-alias:22:6::'typing.Hashable' will be deprecated with PY39, consider using 'collections.abc.Hashable' instead -consider-using-alias:23:6::'typing.ContextManager' will be deprecated with PY39, consider using 'contextlib.AbstractContextManager' instead -consider-using-alias:24:6::'typing.Pattern' will be deprecated with PY39, consider using 're.Pattern' instead -consider-using-alias:25:7::'typing.Match' will be deprecated with PY39, consider using 're.Match' instead -consider-using-alias:34:9::'typing.List' will be deprecated with PY39, consider using 'list' instead -consider-using-alias:36:7::'typing.Type' will be deprecated with PY39, consider using 'type' instead -consider-using-alias:37:7::'typing.Tuple' will be deprecated with PY39, consider using 'tuple' instead -consider-using-alias:38:7::'typing.Callable' will be deprecated with PY39, consider using 'collections.abc.Callable' instead -consider-using-alias:44:74:func1:'typing.Dict' will be deprecated with PY39, consider using 'dict' instead -consider-using-alias:44:16:func1:'typing.List' will be deprecated with PY39, consider using 'list' instead -consider-using-alias:44:37:func1:'typing.List' will be deprecated with PY39, consider using 'list' instead -consider-using-alias:44:93:func1:'typing.Tuple' will be deprecated with PY39, consider using 'tuple' instead -consider-using-alias:60:12:CustomNamedTuple:'typing.List' will be deprecated with PY39, consider using 'list' instead -consider-using-alias:65:12:CustomTypedDict2:'typing.List' will be deprecated with PY39, consider using 'list' instead -consider-using-alias:69:12:CustomDataClass:'typing.List' will be deprecated with PY39, consider using 'list' instead diff --git a/tests/functional/ext/typing/typing_consider_using_alias_without_future.py b/tests/functional/ext/typing/typing_consider_using_alias_without_future.py deleted file mode 100644 index bdc792186..000000000 --- a/tests/functional/ext/typing/typing_consider_using_alias_without_future.py +++ /dev/null @@ -1,66 +0,0 @@ -"""Test pylint.extension.typing - consider-using-alias - -'py-version' needs to be set to '3.7' or '3.8' and 'runtime-typing=no'. -""" -# pylint: disable=missing-docstring,invalid-name,unused-argument,line-too-long,unsubscriptable-object -import collections -import collections.abc -import typing -from collections.abc import Awaitable -from dataclasses import dataclass -from typing import Dict, List, Set, Union, TypedDict, Callable, Tuple, Type - -var1: typing.Dict[str, int] # [consider-using-alias] -var2: List[int] # [consider-using-alias] -var3: collections.abc.Iterable[int] -var4: typing.OrderedDict[str, int] # [consider-using-alias] -var5: typing.Awaitable[None] # [consider-using-alias] -var6: typing.Iterable[int] # [consider-using-alias] -var7: typing.Hashable # [consider-using-alias] -var8: typing.ContextManager[str] # [consider-using-alias] -var9: typing.Pattern[str] # [consider-using-alias] -var10: typing.re.Match[str] # [consider-using-alias] -var11: list[int] -var12: collections.abc -var13: Awaitable[None] -var14: collections.defaultdict[str, str] - -Alias1 = Set[int] -Alias2 = Dict[int, List[int]] -Alias3 = Union[int, typing.List[str]] -Alias4 = List # [consider-using-alias] - -var21: Type[object] # [consider-using-alias] -var22: Tuple[str] # [consider-using-alias] -var23: Callable[..., str] # [consider-using-alias] -var31: type[object] -var32: tuple[str] -var33: collections.abc.Callable[..., str] - - -def func1(arg1: List[int], /, *args: List[int], arg2: set[int], **kwargs: Dict[str, int]) -> typing.Tuple[int]: - # -1:[consider-using-alias,consider-using-alias,consider-using-alias,consider-using-alias] - pass - -def func2(arg1: list[int]) -> tuple[int, int]: - pass - -class CustomIntList(typing.List[int]): - pass - -cast_variable = [1, 2, 3] -cast_variable = typing.cast(List[int], cast_variable) - -(lambda x: 2)(List[int]) - -class CustomNamedTuple(typing.NamedTuple): - my_var: List[int] # [consider-using-alias] - -CustomTypedDict1 = TypedDict("CustomTypedDict1", my_var=List[int]) - -class CustomTypedDict2(TypedDict): - my_var: List[int] # [consider-using-alias] - -@dataclass -class CustomDataClass: - my_var: List[int] # [consider-using-alias] diff --git a/tests/functional/ext/typing/typing_consider_using_alias_without_future.rc b/tests/functional/ext/typing/typing_consider_using_alias_without_future.rc deleted file mode 100644 index f77f58ef4..000000000 --- a/tests/functional/ext/typing/typing_consider_using_alias_without_future.rc +++ /dev/null @@ -1,9 +0,0 @@ -[master] -py-version=3.8 -load-plugins=pylint.extensions.typing - -[testoptions] -min_pyver=3.8 - -[typing] -runtime-typing=no diff --git a/tests/functional/ext/typing/typing_consider_using_alias_without_future.txt b/tests/functional/ext/typing/typing_consider_using_alias_without_future.txt deleted file mode 100644 index f60436dc8..000000000 --- a/tests/functional/ext/typing/typing_consider_using_alias_without_future.txt +++ /dev/null @@ -1,20 +0,0 @@ -consider-using-alias:13:6::'typing.Dict' will be deprecated with PY39, consider using 'dict' instead. Add 'from __future__ import annotations' as well -consider-using-alias:14:6::'typing.List' will be deprecated with PY39, consider using 'list' instead. Add 'from __future__ import annotations' as well -consider-using-alias:16:6::'typing.OrderedDict' will be deprecated with PY39, consider using 'collections.OrderedDict' instead. Add 'from __future__ import annotations' as well -consider-using-alias:17:6::'typing.Awaitable' will be deprecated with PY39, consider using 'collections.abc.Awaitable' instead. Add 'from __future__ import annotations' as well -consider-using-alias:18:6::'typing.Iterable' will be deprecated with PY39, consider using 'collections.abc.Iterable' instead. Add 'from __future__ import annotations' as well -consider-using-alias:19:6::'typing.Hashable' will be deprecated with PY39, consider using 'collections.abc.Hashable' instead -consider-using-alias:20:6::'typing.ContextManager' will be deprecated with PY39, consider using 'contextlib.AbstractContextManager' instead. Add 'from __future__ import annotations' as well -consider-using-alias:21:6::'typing.Pattern' will be deprecated with PY39, consider using 're.Pattern' instead. Add 'from __future__ import annotations' as well -consider-using-alias:22:7::'typing.Match' will be deprecated with PY39, consider using 're.Match' instead. Add 'from __future__ import annotations' as well -consider-using-alias:31:9::'typing.List' will be deprecated with PY39, consider using 'list' instead -consider-using-alias:33:7::'typing.Type' will be deprecated with PY39, consider using 'type' instead. Add 'from __future__ import annotations' as well -consider-using-alias:34:7::'typing.Tuple' will be deprecated with PY39, consider using 'tuple' instead. Add 'from __future__ import annotations' as well -consider-using-alias:35:7::'typing.Callable' will be deprecated with PY39, consider using 'collections.abc.Callable' instead. Add 'from __future__ import annotations' as well -consider-using-alias:41:74:func1:'typing.Dict' will be deprecated with PY39, consider using 'dict' instead. Add 'from __future__ import annotations' as well -consider-using-alias:41:16:func1:'typing.List' will be deprecated with PY39, consider using 'list' instead. Add 'from __future__ import annotations' as well -consider-using-alias:41:37:func1:'typing.List' will be deprecated with PY39, consider using 'list' instead. Add 'from __future__ import annotations' as well -consider-using-alias:41:93:func1:'typing.Tuple' will be deprecated with PY39, consider using 'tuple' instead. Add 'from __future__ import annotations' as well -consider-using-alias:57:12:CustomNamedTuple:'typing.List' will be deprecated with PY39, consider using 'list' instead. Add 'from __future__ import annotations' as well -consider-using-alias:62:12:CustomTypedDict2:'typing.List' will be deprecated with PY39, consider using 'list' instead. Add 'from __future__ import annotations' as well -consider-using-alias:66:12:CustomDataClass:'typing.List' will be deprecated with PY39, consider using 'list' instead. Add 'from __future__ import annotations' as well diff --git a/tests/functional/ext/typing/typing_consider_using_union.py b/tests/functional/ext/typing/typing_consider_using_union.py deleted file mode 100644 index 2f27b40da..000000000 --- a/tests/functional/ext/typing/typing_consider_using_union.py +++ /dev/null @@ -1,47 +0,0 @@ -"""Test pylint.extension.typing - consider-alternative-union-syntax - -'py-version' needs to be set to >= '3.7' and 'runtime-typing=no'. -With 'from __future__ import annotations' present. -""" -# pylint: disable=missing-docstring,invalid-name,unused-argument,line-too-long -# pylint: disable=consider-using-alias -from __future__ import annotations -from dataclasses import dataclass -import typing -from typing import Dict, List, Optional, Union, TypedDict - -var1: Union[int, str] # [consider-alternative-union-syntax] -var2: List[Union[int, None]] # [consider-alternative-union-syntax] -var3: Dict[str, typing.Union[int, str]] # [consider-alternative-union-syntax] -var4: Optional[int] # [consider-alternative-union-syntax] - -Alias1 = Union[int, str] -Alias2 = List[Union[int, None]] -Alias3 = Dict[str, typing.Union[int, str]] -Alias4 = Optional[int] - -def func1( - arg1: Optional[int], # [consider-alternative-union-syntax] - **kwargs: Dict[str, Union[int, str]] # [consider-alternative-union-syntax] -) -> Union[str, None]: # [consider-alternative-union-syntax] - pass - -class Custom1(List[Union[str, int]]): - pass - -cast_variable = [1, 2, 3] -cast_variable = typing.cast(Union[List[int], None], cast_variable) - -(lambda x: 2)(Optional[int]) - -class CustomNamedTuple(typing.NamedTuple): - my_var: Union[int, str] # [consider-alternative-union-syntax] - -CustomTypedDict1 = TypedDict("CustomTypedDict1", my_var=Optional[int]) - -class CustomTypedDict2(TypedDict): - my_var: Dict[str, List[Union[str, int]]] # [consider-alternative-union-syntax] - -@dataclass -class CustomDataClass: - my_var: Optional[int] # [consider-alternative-union-syntax] diff --git a/tests/functional/ext/typing/typing_consider_using_union.rc b/tests/functional/ext/typing/typing_consider_using_union.rc deleted file mode 100644 index f77f58ef4..000000000 --- a/tests/functional/ext/typing/typing_consider_using_union.rc +++ /dev/null @@ -1,9 +0,0 @@ -[master] -py-version=3.8 -load-plugins=pylint.extensions.typing - -[testoptions] -min_pyver=3.8 - -[typing] -runtime-typing=no diff --git a/tests/functional/ext/typing/typing_consider_using_union.txt b/tests/functional/ext/typing/typing_consider_using_union.txt deleted file mode 100644 index 330a7165f..000000000 --- a/tests/functional/ext/typing/typing_consider_using_union.txt +++ /dev/null @@ -1,10 +0,0 @@ -consider-alternative-union-syntax:13:6::Consider using alternative Union syntax instead of 'Union' -consider-alternative-union-syntax:14:11::Consider using alternative Union syntax instead of 'Union' -consider-alternative-union-syntax:15:16::Consider using alternative Union syntax instead of 'Union' -consider-alternative-union-syntax:16:6::Consider using alternative Union syntax instead of 'Optional' -consider-alternative-union-syntax:24:10:func1:Consider using alternative Union syntax instead of 'Optional' -consider-alternative-union-syntax:25:24:func1:Consider using alternative Union syntax instead of 'Union' -consider-alternative-union-syntax:26:5:func1:Consider using alternative Union syntax instead of 'Union' -consider-alternative-union-syntax:38:12:CustomNamedTuple:Consider using alternative Union syntax instead of 'Union' -consider-alternative-union-syntax:43:27:CustomTypedDict2:Consider using alternative Union syntax instead of 'Union' -consider-alternative-union-syntax:47:12:CustomDataClass:Consider using alternative Union syntax instead of 'Optional' diff --git a/tests/functional/ext/typing/typing_consider_using_union_py310.py b/tests/functional/ext/typing/typing_consider_using_union_py310.py deleted file mode 100644 index 1018c3670..000000000 --- a/tests/functional/ext/typing/typing_consider_using_union_py310.py +++ /dev/null @@ -1,45 +0,0 @@ -"""Test pylint.extension.typing - consider-alternative-union-syntax - -'py-version' needs to be set to >= '3.10'. -""" -# pylint: disable=missing-docstring,invalid-name,unused-argument,line-too-long -# pylint: disable=deprecated-typing-alias -from dataclasses import dataclass -import typing -from typing import Dict, List, Optional, Union, TypedDict - -var1: Union[int, str] # [consider-alternative-union-syntax] -var2: List[Union[int, None]] # [consider-alternative-union-syntax] -var3: Dict[str, typing.Union[int, str]] # [consider-alternative-union-syntax] -var4: Optional[int] # [consider-alternative-union-syntax] - -Alias1 = Union[int, str] # [consider-alternative-union-syntax] -Alias2 = List[Union[int, None]] # [consider-alternative-union-syntax] -Alias3 = Dict[str, typing.Union[int, str]] # [consider-alternative-union-syntax] -Alias4 = Optional[int] # [consider-alternative-union-syntax] - -def func1( - arg1: Optional[int], # [consider-alternative-union-syntax] - **kwargs: Dict[str, Union[int, str]] # [consider-alternative-union-syntax] -) -> Union[str, None]: # [consider-alternative-union-syntax] - pass - -class Custom1(List[Union[str, int]]): # [consider-alternative-union-syntax] - pass - -cast_variable = [1, 2, 3] -cast_variable = typing.cast(Union[List[int], None], cast_variable) # [consider-alternative-union-syntax] - -(lambda x: 2)(Optional[int]) # [consider-alternative-union-syntax] - -class CustomNamedTuple(typing.NamedTuple): - my_var: Union[int, str] # [consider-alternative-union-syntax] - -CustomTypedDict1 = TypedDict("CustomTypedDict1", my_var=Optional[int]) # [consider-alternative-union-syntax] - -class CustomTypedDict2(TypedDict): - my_var: Dict[str, List[Union[str, int]]] # [consider-alternative-union-syntax] - -@dataclass -class CustomDataClass: - my_var: Optional[int] # [consider-alternative-union-syntax] diff --git a/tests/functional/ext/typing/typing_consider_using_union_py310.rc b/tests/functional/ext/typing/typing_consider_using_union_py310.rc deleted file mode 100644 index 65b4e34fc..000000000 --- a/tests/functional/ext/typing/typing_consider_using_union_py310.rc +++ /dev/null @@ -1,8 +0,0 @@ -[master] -py-version=3.10 -load-plugins=pylint.extensions.typing - -[testoptions] -min_pyver=3.10 - -[typing] diff --git a/tests/functional/ext/typing/typing_consider_using_union_py310.txt b/tests/functional/ext/typing/typing_consider_using_union_py310.txt deleted file mode 100644 index 4402eb218..000000000 --- a/tests/functional/ext/typing/typing_consider_using_union_py310.txt +++ /dev/null @@ -1,18 +0,0 @@ -consider-alternative-union-syntax:11:6::Consider using alternative Union syntax instead of 'Union' -consider-alternative-union-syntax:12:11::Consider using alternative Union syntax instead of 'Union' -consider-alternative-union-syntax:13:16::Consider using alternative Union syntax instead of 'Union' -consider-alternative-union-syntax:14:6::Consider using alternative Union syntax instead of 'Optional' -consider-alternative-union-syntax:16:9::Consider using alternative Union syntax instead of 'Union' -consider-alternative-union-syntax:17:14::Consider using alternative Union syntax instead of 'Union' -consider-alternative-union-syntax:18:19::Consider using alternative Union syntax instead of 'Union' -consider-alternative-union-syntax:19:9::Consider using alternative Union syntax instead of 'Optional' -consider-alternative-union-syntax:22:10:func1:Consider using alternative Union syntax instead of 'Optional' -consider-alternative-union-syntax:23:24:func1:Consider using alternative Union syntax instead of 'Union' -consider-alternative-union-syntax:24:5:func1:Consider using alternative Union syntax instead of 'Union' -consider-alternative-union-syntax:27:19:Custom1:Consider using alternative Union syntax instead of 'Union' -consider-alternative-union-syntax:31:28::Consider using alternative Union syntax instead of 'Union' -consider-alternative-union-syntax:33:14::Consider using alternative Union syntax instead of 'Optional' -consider-alternative-union-syntax:36:12:CustomNamedTuple:Consider using alternative Union syntax instead of 'Union' -consider-alternative-union-syntax:38:56::Consider using alternative Union syntax instead of 'Optional' -consider-alternative-union-syntax:41:27:CustomTypedDict2:Consider using alternative Union syntax instead of 'Union' -consider-alternative-union-syntax:45:12:CustomDataClass:Consider using alternative Union syntax instead of 'Optional' diff --git a/tests/functional/ext/typing/typing_consider_using_union_without_future.py b/tests/functional/ext/typing/typing_consider_using_union_without_future.py deleted file mode 100644 index f459d047b..000000000 --- a/tests/functional/ext/typing/typing_consider_using_union_without_future.py +++ /dev/null @@ -1,45 +0,0 @@ -"""Test pylint.extension.typing - consider-alternative-union-syntax - -'py-version' needs to be set to >= '3.7' and 'runtime-typing=no'. -""" -# pylint: disable=missing-docstring,invalid-name,unused-argument,line-too-long -# pylint: disable=consider-using-alias -from dataclasses import dataclass -import typing -from typing import Dict, List, Optional, Union, TypedDict - -var1: Union[int, str] # [consider-alternative-union-syntax] -var2: List[Union[int, None]] # [consider-alternative-union-syntax] -var3: Dict[str, typing.Union[int, str]] # [consider-alternative-union-syntax] -var4: Optional[int] # [consider-alternative-union-syntax] - -Alias1 = Union[int, str] -Alias2 = List[Union[int, None]] -Alias3 = Dict[str, typing.Union[int, str]] -Alias4 = Optional[int] - -def func1( - arg1: Optional[int], # [consider-alternative-union-syntax] - **kwargs: Dict[str, Union[int, str]] # [consider-alternative-union-syntax] -) -> Union[str, None]: # [consider-alternative-union-syntax] - pass - -class Custom1(List[Union[str, int]]): - pass - -cast_variable = [1, 2, 3] -cast_variable = typing.cast(Union[List[int], None], cast_variable) - -(lambda x: 2)(Optional[int]) - -class CustomNamedTuple(typing.NamedTuple): - my_var: Union[int, str] # [consider-alternative-union-syntax] - -CustomTypedDict1 = TypedDict("CustomTypedDict1", my_var=Optional[int]) - -class CustomTypedDict2(TypedDict): - my_var: Dict[str, List[Union[str, int]]] # [consider-alternative-union-syntax] - -@dataclass -class CustomDataClass: - my_var: Optional[int] # [consider-alternative-union-syntax] diff --git a/tests/functional/ext/typing/typing_consider_using_union_without_future.rc b/tests/functional/ext/typing/typing_consider_using_union_without_future.rc deleted file mode 100644 index f77f58ef4..000000000 --- a/tests/functional/ext/typing/typing_consider_using_union_without_future.rc +++ /dev/null @@ -1,9 +0,0 @@ -[master] -py-version=3.8 -load-plugins=pylint.extensions.typing - -[testoptions] -min_pyver=3.8 - -[typing] -runtime-typing=no diff --git a/tests/functional/ext/typing/typing_consider_using_union_without_future.txt b/tests/functional/ext/typing/typing_consider_using_union_without_future.txt deleted file mode 100644 index c43cbc3ce..000000000 --- a/tests/functional/ext/typing/typing_consider_using_union_without_future.txt +++ /dev/null @@ -1,10 +0,0 @@ -consider-alternative-union-syntax:11:6::Consider using alternative Union syntax instead of 'Union'. Add 'from __future__ import annotations' as well -consider-alternative-union-syntax:12:11::Consider using alternative Union syntax instead of 'Union'. Add 'from __future__ import annotations' as well -consider-alternative-union-syntax:13:16::Consider using alternative Union syntax instead of 'Union'. Add 'from __future__ import annotations' as well -consider-alternative-union-syntax:14:6::Consider using alternative Union syntax instead of 'Optional'. Add 'from __future__ import annotations' as well -consider-alternative-union-syntax:22:10:func1:Consider using alternative Union syntax instead of 'Optional'. Add 'from __future__ import annotations' as well -consider-alternative-union-syntax:23:24:func1:Consider using alternative Union syntax instead of 'Union'. Add 'from __future__ import annotations' as well -consider-alternative-union-syntax:24:5:func1:Consider using alternative Union syntax instead of 'Union'. Add 'from __future__ import annotations' as well -consider-alternative-union-syntax:36:12:CustomNamedTuple:Consider using alternative Union syntax instead of 'Union'. Add 'from __future__ import annotations' as well -consider-alternative-union-syntax:41:27:CustomTypedDict2:Consider using alternative Union syntax instead of 'Union'. Add 'from __future__ import annotations' as well -consider-alternative-union-syntax:45:12:CustomDataClass:Consider using alternative Union syntax instead of 'Optional'. Add 'from __future__ import annotations' as well diff --git a/tests/functional/ext/typing/typing_deprecated_alias.py b/tests/functional/ext/typing/typing_deprecated_alias.py deleted file mode 100644 index 5b84319dd..000000000 --- a/tests/functional/ext/typing/typing_deprecated_alias.py +++ /dev/null @@ -1,66 +0,0 @@ -"""Test pylint.extension.typing - deprecated-typing-alias - -'py-version' needs to be set to >= '3.9'. -""" -# pylint: disable=missing-docstring,invalid-name,unused-argument,line-too-long,unsubscriptable-object -import collections -import collections.abc -import typing -from collections.abc import Awaitable -from dataclasses import dataclass -from typing import Dict, List, Set, Union, TypedDict, Callable, Tuple, Type - -var1: typing.Dict[str, int] # [deprecated-typing-alias] -var2: List[int] # [deprecated-typing-alias] -var3: collections.abc.Iterable[int] -var4: typing.OrderedDict[str, int] # [deprecated-typing-alias] -var5: typing.Awaitable[None] # [deprecated-typing-alias] -var6: typing.Iterable[int] # [deprecated-typing-alias] -var7: typing.Hashable # [deprecated-typing-alias] -var8: typing.ContextManager[str] # [deprecated-typing-alias] -var9: typing.Pattern[str] # [deprecated-typing-alias] -var10: typing.re.Match[str] # [deprecated-typing-alias] -var11: list[int] -var12: collections.abc -var13: Awaitable[None] -var14: collections.defaultdict[str, str] - -Alias1 = Set[int] # [deprecated-typing-alias] -Alias2 = Dict[int, List[int]] # [deprecated-typing-alias,deprecated-typing-alias] -Alias3 = Union[int, typing.List[str]] # [deprecated-typing-alias] -Alias4 = List # [deprecated-typing-alias] - -var21: Type[object] # [deprecated-typing-alias] -var22: Tuple[str] # [deprecated-typing-alias] -var23: Callable[..., str] # [deprecated-typing-alias] -var31: type[object] -var32: tuple[str] -var33: collections.abc.Callable[..., str] - - -def func1(arg1: List[int], /, *args: List[int], arg2: set[int], **kwargs: Dict[str, int]) -> typing.Tuple[int]: - # -1:[deprecated-typing-alias,deprecated-typing-alias,deprecated-typing-alias,deprecated-typing-alias] - pass - -def func2(arg1: list[int]) -> tuple[int, int]: - pass - -class CustomIntList(typing.List[int]): # [deprecated-typing-alias] - pass - -cast_variable = [1, 2, 3] -cast_variable = typing.cast(List[int], cast_variable) # [deprecated-typing-alias] - -(lambda x: 2)(List[int]) # [deprecated-typing-alias] - -class CustomNamedTuple(typing.NamedTuple): - my_var: List[int] # [deprecated-typing-alias] - -CustomTypedDict1 = TypedDict("CustomTypedDict1", my_var=List[int]) # [deprecated-typing-alias] - -class CustomTypedDict2(TypedDict): - my_var: List[int] # [deprecated-typing-alias] - -@dataclass -class CustomDataClass: - my_var: List[int] # [deprecated-typing-alias] diff --git a/tests/functional/ext/typing/typing_deprecated_alias.rc b/tests/functional/ext/typing/typing_deprecated_alias.rc deleted file mode 100644 index abd4136bb..000000000 --- a/tests/functional/ext/typing/typing_deprecated_alias.rc +++ /dev/null @@ -1,8 +0,0 @@ -[master] -py-version=3.9 -load-plugins=pylint.extensions.typing - -[testoptions] -min_pyver=3.9 - -[typing] diff --git a/tests/functional/ext/typing/typing_deprecated_alias.txt b/tests/functional/ext/typing/typing_deprecated_alias.txt deleted file mode 100644 index 3da7cfefe..000000000 --- a/tests/functional/ext/typing/typing_deprecated_alias.txt +++ /dev/null @@ -1,28 +0,0 @@ -deprecated-typing-alias:13:6::'typing.Dict' is deprecated, use 'dict' instead -deprecated-typing-alias:14:6::'typing.List' is deprecated, use 'list' instead -deprecated-typing-alias:16:6::'typing.OrderedDict' is deprecated, use 'collections.OrderedDict' instead -deprecated-typing-alias:17:6::'typing.Awaitable' is deprecated, use 'collections.abc.Awaitable' instead -deprecated-typing-alias:18:6::'typing.Iterable' is deprecated, use 'collections.abc.Iterable' instead -deprecated-typing-alias:19:6::'typing.Hashable' is deprecated, use 'collections.abc.Hashable' instead -deprecated-typing-alias:20:6::'typing.ContextManager' is deprecated, use 'contextlib.AbstractContextManager' instead -deprecated-typing-alias:21:6::'typing.Pattern' is deprecated, use 're.Pattern' instead -deprecated-typing-alias:22:7::'typing.Match' is deprecated, use 're.Match' instead -deprecated-typing-alias:28:9::'typing.Set' is deprecated, use 'set' instead -deprecated-typing-alias:29:9::'typing.Dict' is deprecated, use 'dict' instead -deprecated-typing-alias:29:19::'typing.List' is deprecated, use 'list' instead -deprecated-typing-alias:30:20::'typing.List' is deprecated, use 'list' instead -deprecated-typing-alias:31:9::'typing.List' is deprecated, use 'list' instead -deprecated-typing-alias:33:7::'typing.Type' is deprecated, use 'type' instead -deprecated-typing-alias:34:7::'typing.Tuple' is deprecated, use 'tuple' instead -deprecated-typing-alias:35:7::'typing.Callable' is deprecated, use 'collections.abc.Callable' instead -deprecated-typing-alias:41:74:func1:'typing.Dict' is deprecated, use 'dict' instead -deprecated-typing-alias:41:16:func1:'typing.List' is deprecated, use 'list' instead -deprecated-typing-alias:41:37:func1:'typing.List' is deprecated, use 'list' instead -deprecated-typing-alias:41:93:func1:'typing.Tuple' is deprecated, use 'tuple' instead -deprecated-typing-alias:48:20:CustomIntList:'typing.List' is deprecated, use 'list' instead -deprecated-typing-alias:52:28::'typing.List' is deprecated, use 'list' instead -deprecated-typing-alias:54:14::'typing.List' is deprecated, use 'list' instead -deprecated-typing-alias:57:12:CustomNamedTuple:'typing.List' is deprecated, use 'list' instead -deprecated-typing-alias:59:56::'typing.List' is deprecated, use 'list' instead -deprecated-typing-alias:62:12:CustomTypedDict2:'typing.List' is deprecated, use 'list' instead -deprecated-typing-alias:66:12:CustomDataClass:'typing.List' is deprecated, use 'list' instead -- cgit v1.2.1