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