From 3aeb9e0aebded96b5ee37d84fe480dc45608a4e5 Mon Sep 17 00:00:00 2001 From: David Halter Date: Fri, 23 Nov 2012 00:25:02 +0100 Subject: [PATCH] private variables are not available outside of class for completion, fixes #56 --- jedi/api.py | 15 ++++++++++----- jedi/evaluate.py | 3 --- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/jedi/api.py b/jedi/api.py index 662392b1..ef19ded9 100644 --- a/jedi/api.py +++ b/jedi/api.py @@ -135,13 +135,18 @@ class Script(object): completions += ((k, bs) for k in keywords.get_keywords( all=True)) - completions = [(c, s) for c, s in completions - if settings.case_insensitive_completion - and c.names[-1].lower().startswith(like.lower()) - or c.names[-1].startswith(like)] + comps = [] + for c, s in completions: + n = c.names[-1] + if settings.case_insensitive_completion \ + and n.lower().startswith(like.lower()) \ + or n.startswith(like): + if not evaluate.filter_private_variable(s, + self.parser.user_stmt, n): + comps.append((c, s)) needs_dot = not dot and path - completions = set(completions) + completions = set(comps) c = [api_classes.Completion( c, needs_dot, len(like), s) for c, s in completions] diff --git a/jedi/evaluate.py b/jedi/evaluate.py index 0290c996..4688ddba 100644 --- a/jedi/evaluate.py +++ b/jedi/evaluate.py @@ -1550,12 +1550,9 @@ def follow_path(path, scope, call_scope, position=None): def filter_private_variable(scope, call_scope, var_name): if isinstance(var_name, (str, unicode)) \ and var_name.startswith('__') and isinstance(scope, Instance): - #print 'a', scope, var_name, call_scope s = call_scope.get_parent_until((parsing.Class, Instance), include_current=True) if s != scope and s != scope.base.base: - #print s, scope, call_scope.parent() return True - return False