From a895561f1a7a8d3e702e593310841f647e9f71c8 Mon Sep 17 00:00:00 2001 From: David Halter Date: Tue, 13 Aug 2013 15:39:26 +0430 Subject: [PATCH] fixed a problem that combined __getattr__ and usages --- jedi/api.py | 4 ++++ test/completion/usages.py | 10 ++++++++++ 2 files changed, 14 insertions(+) diff --git a/jedi/api.py b/jedi/api.py index 64231d02..f29fee87 100644 --- a/jedi/api.py +++ b/jedi/api.py @@ -434,6 +434,10 @@ class Script(object): for d in set(definitions): if isinstance(d, pr.Module): names.append(api_classes.Usage(d, d)) + elif isinstance(d, er.Instance): + # Instances can be ignored, because they are being created by + # ``__getattr__``. + pass else: names.append(api_classes.Usage(d.names[-1], d)) diff --git a/test/completion/usages.py b/test/completion/usages.py index 003fd41f..f81de013 100644 --- a/test/completion/usages.py +++ b/test/completion/usages.py @@ -132,6 +132,16 @@ class TestInstanceVar(): self._instance_var +class NestedClass(): + def __getattr__(self, name): + return self + +# Shouldn't find a definition, because there's no name defined (used ``getattr``). + +#< (0, 14), +NestedClass().instance + + # ----------------- # inheritance # -----------------