diff --git a/jedi/evaluate/representation.py b/jedi/evaluate/representation.py index d202117b..42dc90cf 100644 --- a/jedi/evaluate/representation.py +++ b/jedi/evaluate/representation.py @@ -144,44 +144,6 @@ class Instance(use_metaclass(CachedMetaClass, Executed)): except IndexError: return None - @memoize_default([]) - def get_self_attributes(self, add_mro=True): - names = [] - # This loop adds the names of the self object, copies them and removes - # the self. - for sub in self.base.subscopes: - if isinstance(sub, pr.Class): - continue - # Get the self name, if there's one. - self_name = self._get_func_self_name(sub) - if self_name is None: - continue - - if sub.name.value == '__init__' and not self.is_generated: - # ``__init__`` is special because the params need are injected - # this way. Therefore an execution is necessary. - if not sub.get_decorators(): - # __init__ decorators should generally just be ignored, - # because to follow them and their self variables is too - # complicated. - sub = self._get_method_execution(sub) - for name_list in sub.names_dict.values(): - for name in name_list: - if name.value == self_name and name.prev_sibling() is None: - trailer = name.next_sibling() - if pr.is_node(trailer, 'trailer') \ - and len(trailer.children) == 2: - name = trailer.children[1] # After dot. - if name.is_definition(): - names.append(get_instance_el(self._evaluator, self, name)) - - if add_mro: - for s in self.base.py__mro__(self._evaluator)[1:]: - if not isinstance(s, compiled.CompiledObject): - for inst in self._evaluator.execute(s): - names += inst.get_self_attributes(add_mro=False) - return names - def _self_names_dict(self, add_mro=True): names = {} # This loop adds the names of the self object, copies them and removes @@ -212,12 +174,6 @@ class Instance(use_metaclass(CachedMetaClass, Executed)): if name.is_definition(): arr = names.setdefault(name.value, []) arr.append(get_instance_el(self._evaluator, self, name)) - - if add_mro and False: # TODO ADD!!!! - for s in self.base.py__mro__(self._evaluator)[1:]: - if not isinstance(s, compiled.CompiledObject): - for inst in self._evaluator.execute(s): - names += inst.get_self_attributes(add_mro=False) return names def get_subscope_by_name(self, name): @@ -603,21 +559,6 @@ class LambdaWrapper(Function): return self -class LazyDict(object): - def __init__(self, old_dct, copy_func): - self._copy_func = copy_func - self._old_dct = old_dct - - def __getitem__(self, key): - return self._copy_func(self._old_dct[key]) - - @underscore_memoization - def values(self): - # TODO REMOVE this. Not necessary with correct name lookups. - for calls in self._old_dct.values(): - yield self._copy_func(calls) - - class FunctionExecution(Executed): """ This class is used to evaluate functions and their returns. @@ -812,46 +753,11 @@ class ModuleWrapper(use_metaclass(CachedMetaClass, pr.Module, Wrapper)): return dict((n, [helpers.LazyName(n, parent_callback, is_definition=True)]) for n in names) - @memoize_default() - def _module_attributes(self): - def parent_callback(): - return self._evaluator.execute(compiled.create(self._evaluator, str))[0] - - names = ['__file__', '__package__', '__doc__', '__name__'] - # All the additional module attributes are strings. - return [helpers.LazyName(n, parent_callback) for n in names] - @property @memoize_default() def name(self): return helpers.FakeName(unicode(self.base.name), self, (1, 0)) - @memoize_default() - def _sub_modules(self): - """ - Lists modules in the directory of this module (if this module is a - package). - """ - path = self._module.path - names = [] - if path is not None and path.endswith(os.path.sep + '__init__.py'): - mods = pkgutil.iter_modules([os.path.dirname(path)]) - for module_loader, name, is_pkg in mods: - name = helpers.FakeName(name) - # It's obviously a relative import to the current module. - imp = helpers.FakeImport(name, self, level=1) - name.parent = imp - names.append(name) - - # TODO add something like this in the future, its cleaner than the - # import hacks. - # ``os.path`` is a hardcoded exception, because it's a - # ``sys.modules`` modification. - #if str(self.name) == 'os': - # names.append(helpers.FakeName('path', parent=self)) - - return names - @memoize_default() def _sub_modules_dict(self): """