Explicitly handle a not in b operator comparison

This avoids a `KeyError` from operator_to_magic_method lookup for
this case. Jedi probably could check for `__contains__` here, however
as it doesn't do so for `in` checks I'm following that lead for now.

Fixes https://github.com/davidhalter/jedi/issues/1594.
This commit is contained in:
Peter Law
2020-05-23 12:47:30 +01:00
parent 860d5e8889
commit c62cbd6654
2 changed files with 10 additions and 1 deletions

View File

@@ -641,7 +641,7 @@ def _infer_comparison_part(inference_state, context, left, operator, right):
_bool_to_value(inference_state, True),
_bool_to_value(inference_state, False)
])
elif str_operator == 'in':
elif str_operator in ('in', 'not in'):
return NO_VALUES
def check(obj):

View File

@@ -100,6 +100,15 @@ else:
#? str() int()
a
if 'X' not in 'Y':
b = 3
else:
b = ''
# For now don't really check for truth values. So in should return both
# results.
#? str() int()
b
# -----------------
# for flow assignments
# -----------------