diff --git a/jedi/evaluate/__init__.py b/jedi/evaluate/__init__.py index 5ec96a6a..d9a761b4 100644 --- a/jedi/evaluate/__init__.py +++ b/jedi/evaluate/__init__.py @@ -266,8 +266,7 @@ class Evaluator(object): # For False/True/None if element.value in ('False', 'True', 'None'): types.add(compiled.builtin_from_name(self, element.value)) - else: - raise NotImplementedError + # else: print e.g. could be evaluated like this in Python 2.7 elif element.isinstance(tree.Lambda): types = set([er.LambdaWrapper(self, element)]) elif element.isinstance(er.LambdaWrapper): diff --git a/jedi/evaluate/compiled/fake.py b/jedi/evaluate/compiled/fake.py index eaf099a6..66c8bfc3 100644 --- a/jedi/evaluate/compiled/fake.py +++ b/jedi/evaluate/compiled/fake.py @@ -111,7 +111,7 @@ def _faked(module, obj, name): def get_faked(module, obj, name=None): - obj = obj.__class__ if is_class_instance(obj) else obj + obj = type(obj) if is_class_instance(obj) else obj result = _faked(module, obj, name) if result is None or isinstance(result, pt.Class): # We're not interested in classes. What we want is functions. diff --git a/test/static_analysis/attribute_warnings.py b/test/static_analysis/attribute_warnings.py index d31058cc..0e1e5e95 100644 --- a/test/static_analysis/attribute_warnings.py +++ b/test/static_analysis/attribute_warnings.py @@ -35,7 +35,7 @@ Inherited().undefined class SetattrCls(): def __init__(self, dct): # Jedi doesn't even try to understand such code - for k, v in dct: + for k, v in dct.items(): setattr(self, k, v) self.defined = 3