diff options
Diffstat (limited to 'dev-python/rope/files/rope-0.9.3-python2.7.patch')
-rw-r--r-- | dev-python/rope/files/rope-0.9.3-python2.7.patch | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/dev-python/rope/files/rope-0.9.3-python2.7.patch b/dev-python/rope/files/rope-0.9.3-python2.7.patch new file mode 100644 index 00000000000..f1a4fe4d2d3 --- /dev/null +++ b/dev-python/rope/files/rope-0.9.3-python2.7.patch @@ -0,0 +1,76 @@ +Apply upstream changesets: +https://bitbucket.org/agr/rope/changeset/1c100ebabc16 +https://bitbucket.org/agr/rope/changeset/f5eb880e0be2 + +to fix issues with python 2.7 + +https://bugs.gentoo.org/show_bug.cgi?id=326401 +https://bitbucket.org/agr/rope/issue/8/ + +--- a/rope/base/ast.py ++++ b/rope/base/ast.py +@@ -27,6 +27,10 @@ + method_name = '_' + node.__class__.__name__ + method = getattr(walker, method_name, None) + if method is not None: ++ if isinstance(node, _ast.ImportFrom) and node.module is None: ++ # In python < 2.7 ``node.module == ''`` for relative imports ++ # but for python 2.7 it is None. Generalizing it to ''. ++ node.module = '' + return method(node) + for child in get_child_nodes(node): + walk(child, walker) +--- a/rope/base/oi/runmod.py ++++ b/rope/base/oi/runmod.py +@@ -187,6 +187,7 @@ + + def close(self): + self.sender.close() ++ sys.settrace(None) + + def _realpath(path): + return os.path.realpath(os.path.abspath(os.path.expanduser(path))) +--- a/rope/refactor/importutils/module_imports.py ++++ b/rope/refactor/importutils/module_imports.py +@@ -428,7 +428,8 @@ + if node.level: + level = node.level + import_info = importinfo.FromImport( +- node.module, level, self._get_names(node.names)) ++ node.module or '', # see comment at rope.base.ast.walk ++ level, self._get_names(node.names)) + start_line = node.lineno + self.imports.append(importinfo.ImportStatement( + import_info, node.lineno, end_line, +--- a/rope/refactor/patchedast.py ++++ b/rope/refactor/patchedast.py +@@ -350,7 +350,8 @@ + children = ['from'] + if node.level: + children.append('.' * node.level) +- children.extend([node.module, 'import']) ++ children.extend([node.module or '', # see comment at rope.base.ast.walk ++ 'import']) + children.extend(self._child_nodes(node.names, ',')) + self._handle(node, children) + +--- a/ropetest/refactor/patchedasttest.py ++++ b/ropetest/refactor/patchedasttest.py +@@ -441,6 +441,17 @@ + 'import', ' ', 'alias']) + checker.check_children('alias', ['y', ' ', 'as', ' ', 'z']) + ++ @testutils.run_only_for_25 ++ def test_from_node_relative_import(self): ++ source = 'from . import y as z\n' ++ ast = patchedast.get_patched_ast(source, True) ++ checker = _ResultChecker(self, ast) ++ checker.check_region('ImportFrom', 0, len(source) - 1) ++ checker.check_children( ++ 'ImportFrom', ['from', ' ', '.', '', '', ' ', ++ 'import', ' ', 'alias']) ++ checker.check_children('alias', ['y', ' ', 'as', ' ', 'z']) ++ + def test_simple_gen_expr_node(self): + source = 'zip(i for i in x)\n' + ast = patchedast.get_patched_ast(source, True) |