From 79caa2186ee2f29a8dc71012337eaecf24466ee2 Mon Sep 17 00:00:00 2001 From: Dave Halter Date: Thu, 9 Apr 2015 00:46:31 +0200 Subject: [PATCH] list(open().read()) should work now, fixes #412. --- jedi/evaluate/compiled/fake.py | 6 ++++-- jedi/evaluate/compiled/fake/io.pym | 5 ++++- test/completion/basic.py | 3 +++ 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/jedi/evaluate/compiled/fake.py b/jedi/evaluate/compiled/fake.py index 6242483d..0037cfc7 100644 --- a/jedi/evaluate/compiled/fake.py +++ b/jedi/evaluate/compiled/fake.py @@ -100,8 +100,10 @@ def _faked(module, obj, name): def get_faked(module, obj, name=None): obj = obj.__class__ if is_class_instance(obj) else obj result = _faked(module, obj, name) - # TODO may this ever happen? result None? if so, document! - if not isinstance(result, pt.Class) and result is not None: + if result is None or isinstance(result, pt.Class): + # We're not interested in classes. What we want is functions. + return None + else: # Set the docstr which was previously not set (faked modules don't # contain it). doc = '"""%s"""' % obj.__doc__ # TODO need escapes. diff --git a/jedi/evaluate/compiled/fake/io.pym b/jedi/evaluate/compiled/fake/io.pym index 8225477a..87b02eed 100644 --- a/jedi/evaluate/compiled/fake/io.pym +++ b/jedi/evaluate/compiled/fake/io.pym @@ -1,3 +1,6 @@ class TextIOWrapper(): def __next__(self): - return 'hacked io return' + return str() + + def __iter__(self): + yield str() diff --git a/test/completion/basic.py b/test/completion/basic.py index 97155bcc..8337b8dd 100644 --- a/test/completion/basic.py +++ b/test/completion/basic.py @@ -143,6 +143,9 @@ ret()[0] with open('') as f: #? ['closed'] f.closed + for line in f: + #? str() + line with open('') as f1, open('') as f2: #? ['closed']