diff options
Diffstat (limited to 'tests/functional/u/use/use_implicit_booleaness_not_comparison.py')
-rw-r--r-- | tests/functional/u/use/use_implicit_booleaness_not_comparison.py | 60 |
1 files changed, 57 insertions, 3 deletions
diff --git a/tests/functional/u/use/use_implicit_booleaness_not_comparison.py b/tests/functional/u/use/use_implicit_booleaness_not_comparison.py index 18ca9c370..ce64fd1ed 100644 --- a/tests/functional/u/use/use_implicit_booleaness_not_comparison.py +++ b/tests/functional/u/use/use_implicit_booleaness_not_comparison.py @@ -1,5 +1,6 @@ # pylint: disable=missing-docstring, missing-module-docstring, invalid-name # pylint: disable=too-few-public-methods, line-too-long, dangerous-default-value +# pylint: disable=wrong-import-order # https://github.com/PyCQA/pylint/issues/4774 def github_issue_4774(): @@ -102,14 +103,13 @@ something_else = NoBool() empty_literals = [[], {}, ()] is_empty = any(field == something_else for field in empty_literals) -# this should work, but it doesn't since, input parameter only get the latest one, not all when inferred() h, i, j = 1, None, [1,2,3] def test(k): print(k == {}) def test_with_default(k={}): - print(k == {}) # [use-implicit-booleaness-not-comparison] + print(k == {}) print(k == 1) test(h) @@ -120,6 +120,35 @@ test_with_default(h) test_with_default(i) test_with_default(j) + +class A: + lst = [] + + @staticmethod + def test(b=1): + print(b) + return [] + + +if A.lst == []: # [use-implicit-booleaness-not-comparison] + pass + + +if [] == A.lst: # [use-implicit-booleaness-not-comparison] + pass + + +if A.test("b") == []: # [use-implicit-booleaness-not-comparison] + pass + + +def test_function(): + return [] + + +if test_function() == []: # [use-implicit-booleaness-not-comparison] + pass + # pylint: disable=import-outside-toplevel, wrong-import-position, import-error # Numpy has its own implementation of __bool__, but base class has list, that's why the comparison check is happening import numpy @@ -139,4 +168,29 @@ if pandas_df == []: if pandas_df != (): pass if pandas_df <= []: - print("truth value of a dataframe is ambiguous") + print("don't emit warning if variable can't safely be inferred") + +from typing import Union +from random import random + +var: Union[dict, bool, None] = {} +if random() > 0.5: + var = True + +if var == {}: + pass + +data = {} + +if data == {}: # [use-implicit-booleaness-not-comparison] + print("This will be printed") +if data != {}: # [use-implicit-booleaness-not-comparison] + print("This will also be printed") + +if data or not data: + print("This however won't be") + +# literal string check +long_test = {} +if long_test == { }: # [use-implicit-booleaness-not-comparison] + pass |