diff --git a/jedi/api.py b/jedi/api.py index 5573cddb..b96784f8 100644 --- a/jedi/api.py +++ b/jedi/api.py @@ -41,6 +41,9 @@ class Script(object): A Script is the base for completions, goto or whatever you want to do with |jedi|. + You can either use the ``source`` parameter or ``path`` to read a file. + Usually you're going to want to use both of them (in an editor). + :param source: The source code of the current file, separated by newlines. :type source: str :param line: The line to perform actions on (starting with 1). @@ -54,12 +57,16 @@ class Script(object): ``unicode`` object (default ``'utf-8'``). :type source_encoding: str """ - def __init__(self, source, line=None, column=None, path=None, + def __init__(self, source=None, line=None, column=None, path=None, source_encoding='utf-8', source_path=None): if source_path is not None: warnings.warn("Use path instead of source_path.", DeprecationWarning) path = source_path + if source is None: + with open(path) as f: + source = f.read() + lines = source.splitlines() or [''] if source and source[-1] == '\n': lines.append('') diff --git a/test/test_absolute_import.py b/test/test_absolute_import.py index d72e3b7f..d4cfbb5a 100644 --- a/test/test_absolute_import.py +++ b/test/test_absolute_import.py @@ -35,9 +35,5 @@ def test_dont_break_imports_without_namespaces(): @helpers.cwd_at("test/absolute_import") def test_can_complete_when_shadowing(): - filename = "unittest.py" - with open(filename) as f: - lines = f.readlines() - src = "".join(lines) - script = jedi.Script(src, path=filename) + script = jedi.Script(path="unittest.py") assert script.completions()