forked from VimPlug/jedi
underscore_decorators now automatically convert generators to lists
This commit is contained in:
@@ -19,11 +19,12 @@ import sys
|
|||||||
import json
|
import json
|
||||||
import hashlib
|
import hashlib
|
||||||
import gc
|
import gc
|
||||||
|
import inspect
|
||||||
|
import shutil
|
||||||
try:
|
try:
|
||||||
import cPickle as pickle
|
import cPickle as pickle
|
||||||
except ImportError:
|
except ImportError:
|
||||||
import pickle
|
import pickle
|
||||||
import shutil
|
|
||||||
|
|
||||||
from jedi import settings
|
from jedi import settings
|
||||||
from jedi import common
|
from jedi import common
|
||||||
@@ -119,12 +120,15 @@ def underscore_memoization(func):
|
|||||||
|
|
||||||
A now has an attribute ``_x`` written by this decorator.
|
A now has an attribute ``_x`` written by this decorator.
|
||||||
"""
|
"""
|
||||||
|
name = '_' + func.__name__
|
||||||
|
|
||||||
def wrapper(self):
|
def wrapper(self):
|
||||||
name = '_' + func.__name__
|
|
||||||
try:
|
try:
|
||||||
return getattr(self, name)
|
return getattr(self, name)
|
||||||
except AttributeError:
|
except AttributeError:
|
||||||
result = func(self)
|
result = func(self)
|
||||||
|
if inspect.isgenerator(result):
|
||||||
|
result = list(result)
|
||||||
setattr(self, name, result)
|
setattr(self, name, result)
|
||||||
return result
|
return result
|
||||||
|
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ from jedi.cache import underscore_memoization
|
|||||||
|
|
||||||
|
|
||||||
class Generator(use_metaclass(CachedMetaClass, pr.Base)):
|
class Generator(use_metaclass(CachedMetaClass, pr.Base)):
|
||||||
""" Cares for `yield` statements. """
|
"""Handling of `yield` functions."""
|
||||||
def __init__(self, evaluator, func, var_args):
|
def __init__(self, evaluator, func, var_args):
|
||||||
super(Generator, self).__init__()
|
super(Generator, self).__init__()
|
||||||
self._evaluator = evaluator
|
self._evaluator = evaluator
|
||||||
@@ -28,10 +28,11 @@ class Generator(use_metaclass(CachedMetaClass, pr.Base)):
|
|||||||
executes_generator = '__next__', 'send', 'next'
|
executes_generator = '__next__', 'send', 'next'
|
||||||
for name in compiled.generator_obj.get_defined_names():
|
for name in compiled.generator_obj.get_defined_names():
|
||||||
if name.name in executes_generator:
|
if name.name in executes_generator:
|
||||||
|
print(name)
|
||||||
parent = self
|
parent = self
|
||||||
# TODO parents are fucked up
|
# TODO parents are fucked up
|
||||||
#pr.Function(module, name, [], (0, 0), None)
|
#pr.Function(module, name, [], (0, 0), None)
|
||||||
yield helpers.FakeName(name, parent)
|
yield helpers.FakeName(name.name, parent)
|
||||||
else:
|
else:
|
||||||
yield name
|
yield name
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user