diff --git a/python-rope.changes b/python-rope.changes index 9ac847e..e364cd6 100644 --- a/python-rope.changes +++ b/python-rope.changes @@ -1,3 +1,36 @@ +------------------------------------------------------------------- +Sun Apr 18 20:56:15 UTC 2021 - Matej Cepl + +- Update to 0.19.0: + - fixes #337 + - Fix AttributeError lineno + - Python 3.9 ast changes + - create_generate with goal_resource param + - Fix relative import offset calculation + - Fix missinge lineno attribute for AssignedName ast node + - Added _NamedExpr into `patchedast.py` + - Add support for the walrus operator. + - fix test case name for `test_ann_assign_node_without_target` + - Returned _AnnAssign and checked for support assignment without value + - fixed version restriction in tests for NamedExpr + - Removed AnnAssign, added NeamedExpr, testa are made + - Added _AnnAsign into `patchedast.py` + - Extract augmented assignment + - Fix handling of dict rename in Python 2.x + - Improve handling of generalized dict unpacking during dict rename + - Add expected failure test for comprehension variable scopes + - Implement basic scoping and rename for set and dict comprehension + - Visit subexpressions of comprehensions to collect names for scopes + - Implement rename of inline assignment expression + - Implement basic scoping and renaming of list and generator + comprehension loop variables + - Implement f-string extract refactoring + - Refactor consume_joined_string and also fix missing + ast.JoinedStr/FormattedValue in older python + - Fix some f-string corner cases + - Implement PEP-448 generalized dict-unpacking +- Removed upstreamed rope-pr333-py39.patch. + ------------------------------------------------------------------- Wed Mar 31 12:05:06 UTC 2021 - Ben Greiner diff --git a/python-rope.spec b/python-rope.spec index c1d2d7a..f568b46 100644 --- a/python-rope.spec +++ b/python-rope.spec @@ -19,15 +19,13 @@ %define upname rope %{?!python_module:%define python_module() python-%{**} python3-%{**}} Name: python-rope -Version: 0.18.0 +Version: 0.19.0 Release: 0 Summary: A python refactoring library License: LGPL-3.0-or-later Group: Development/Languages/Python URL: https://github.com/python-rope/rope Source: https://files.pythonhosted.org/packages/source/r/rope/rope-%{version}.tar.gz -# PATCH-FIX-UPSTREAM rope-pr333-py39.patch gh#python-rope/rope#333 -Patch1: rope-pr333-py39.patch BuildRequires: %{python_module pytest} BuildRequires: %{python_module setuptools} BuildRequires: fdupes diff --git a/rope-0.18.0.tar.gz b/rope-0.18.0.tar.gz deleted file mode 100644 index 6505f98..0000000 --- a/rope-0.18.0.tar.gz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:786b5c38c530d4846aa68a42604f61b4e69a493390e3ca11b88df0fbfdc3ed04 -size 249828 diff --git a/rope-0.19.0.tar.gz b/rope-0.19.0.tar.gz new file mode 100644 index 0000000..4beeec6 --- /dev/null +++ b/rope-0.19.0.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:64e6d747532e1f5c8009ec5aae3e5523a5bcedf516f39a750d57d8ed749d90da +size 252902 diff --git a/rope-pr333-py39.patch b/rope-pr333-py39.patch deleted file mode 100644 index 9478922..0000000 --- a/rope-pr333-py39.patch +++ /dev/null @@ -1,155 +0,0 @@ -From 5fbce2b97ba49c0900d882043acf3ff46e936d38 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Mat=C4=9Bj=20Cepl?= -Date: Mon, 15 Mar 2021 22:06:35 +0100 -Subject: [PATCH 1/4] Test for Python 3.9 as well - ---- - .github/workflows/main.yml | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -From a63ae26035c5493dc8b7c3bf6a70fc05dba2be98 Mon Sep 17 00:00:00 2001 -From: Matt Turner -Date: Sun, 14 Mar 2021 10:17:47 -0400 -Subject: [PATCH 2/4] Fix test expectations for Python 3.9 AST changes - -Fixes the following two tests under Python 3.9: - -FAILED ropetest/refactor/patchedasttest.py::PatchedASTTest::test_ext_slice_node - AssertionError: Node cannot be found -FAILED ropetest/refactor/patchedasttest.py::PatchedASTTest::test_simple_subscript - AssertionError: False is not true : Expected but was - -The ast module in Python 3.9 has some API changes. Quoting [1]: - - Simplified AST for subscription. Simple indices will be represented - by their value, extended slices will be represented as tuples. - Index(value) will return a value itself, ExtSlice(slices) will - return Tuple(slices, Load()). (Contributed by Serhiy Storchaka in - bpo-34822.) - -[1] https://docs.python.org/3/whatsnew/3.9.html#changes-in-the-python-api ---- - ropetest/refactor/patchedasttest.py | 18 +++++++++++++----- - 1 file changed, 13 insertions(+), 5 deletions(-) - -diff --git a/ropetest/refactor/patchedasttest.py b/ropetest/refactor/patchedasttest.py -index 04df3752..74a9d9a6 100644 ---- a/ropetest/refactor/patchedasttest.py -+++ b/ropetest/refactor/patchedasttest.py -@@ -838,8 +838,12 @@ def test_ext_slice_node(self): - source = 'x = xs[0,:]\n' - ast_frag = patchedast.get_patched_ast(source, True) - checker = _ResultChecker(self, ast_frag) -- checker.check_region('ExtSlice', 7, len(source) - 2) -- checker.check_children('ExtSlice', ['Index', '', ',', '', 'Slice']) -+ if sys.version_info >= (3, 9): -+ checker.check_region('Tuple', 7, len(source) - 2) -+ checker.check_children('Tuple', ['Num', '', ',', '', 'Slice']) -+ else: -+ checker.check_region('ExtSlice', 7, len(source) - 2) -+ checker.check_children('ExtSlice', ['Index', '', ',', '', 'Slice']) - - def test_simple_module_node(self): - source = 'pass\n' -@@ -933,9 +937,13 @@ def test_simple_subscript(self): - source = 'a[1]\n' - ast_frag = patchedast.get_patched_ast(source, True) - checker = _ResultChecker(self, ast_frag) -- checker.check_children( -- 'Subscript', ['Name', '', '[', '', 'Index', '', ']']) -- checker.check_children('Index', ['Num']) -+ if sys.version_info >= (3, 9): -+ checker.check_children( -+ 'Subscript', ['Name', '', '[', '', 'Num', '', ']']) -+ else: -+ checker.check_children( -+ 'Subscript', ['Name', '', '[', '', 'Index', '', ']']) -+ checker.check_children('Index', ['Num']) - - def test_tuple_node(self): - source = '(1, 2)\n' - -From 02284e4151c2b1d549a64175ef0e3212b7737c56 Mon Sep 17 00:00:00 2001 -From: Matt Turner -Date: Sun, 14 Mar 2021 10:54:48 -0400 -Subject: [PATCH 3/4] Handle AST.expr in _Subscript() - -The ast module in Python 3.9 has some API changes. Quoting [1]: - - Simplified AST for subscription. Simple indices will be represented - by their value, extended slices will be represented as tuples. - Index(value) will return a value itself, ExtSlice(slices) will - return Tuple(slices, Load()). (Contributed by Serhiy Storchaka in - bpo-34822.) - -[1] https://docs.python.org/3/whatsnew/3.9.html#changes-in-the-python-api - -isinstance(thing, ast.Index) always return false in Python >= 3.9, so we -need to handle... whatever the value is now. ast.expr catches 20 of the -remaining 24 failures. The remaining 4 are resolved in the next patch. - -Fixes: #299 ---- - rope/base/evaluate.py | 3 +++ - 1 file changed, 3 insertions(+) - -diff --git a/rope/base/evaluate.py b/rope/base/evaluate.py -index 610d34e0..4634981a 100644 ---- a/rope/base/evaluate.py -+++ b/rope/base/evaluate.py -@@ -307,6 +307,9 @@ def _Subscript(self, node): - elif isinstance(node.slice, ast.Slice): - self._call_function(node.value, '__getitem__', - [node.slice]) -+ elif isinstance(node.slice, ast.expr): -+ self._call_function(node.value, '__getitem__', -+ [node.value]) - - def _Slice(self, node): - self.result = self._get_builtin_name('slice') - -From 46a3403a06aaadf9d17f87b38300c4e3febe47c5 Mon Sep 17 00:00:00 2001 -From: Matt Turner -Date: Fri, 19 Mar 2021 18:41:53 -0400 -Subject: [PATCH 4/4] Handle AST.expr in static object analysis - -The ast module in Python 3.9 has some API changes. Quoting [1]: - - Simplified AST for subscription. Simple indices will be represented - by their value, extended slices will be represented as tuples. - Index(value) will return a value itself, ExtSlice(slices) will - return Tuple(slices, Load()). (Contributed by Serhiy Storchaka in - bpo-34822.) - -[1] https://docs.python.org/3/whatsnew/3.9.html#changes-in-the-python-api - -This fixes the remaining 4 failures under Python 3.9. - -FAILED ropetest/advanced_oi_test.py::NewStaticOITest::test_static_oi_for_dicts_depending_on_append_function -FAILED ropetest/advanced_oi_test.py::NewStaticOITest::test_static_oi_for_dicts_depending_on_for_loops -FAILED ropetest/advanced_oi_test.py::NewStaticOITest::test_static_oi_for_dicts_depending_on_update -FAILED ropetest/advanced_oi_test.py::NewStaticOITest::test_static_oi_for_lists_per_object_for_set_item - -Fixes: #299 ---- - rope/base/oi/soa.py | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/rope/base/oi/soa.py b/rope/base/oi/soa.py -index 8ef17aee..20ab567e 100644 ---- a/rope/base/oi/soa.py -+++ b/rope/base/oi/soa.py -@@ -126,7 +126,7 @@ def _evaluate_assign_value(self, node, nodes, type_hint=False): - for subscript, levels in nodes: - instance = evaluate.eval_node(self.scope, subscript.value) - args_pynames = [evaluate.eval_node(self.scope, -- subscript.slice.value)] -+ subscript.slice)] - value = rope.base.oi.soi._infer_assignment( - rope.base.pynames.AssignmentValue(node.value, levels, - type_hint=type_hint), -@@ -149,5 +149,5 @@ def __init__(self): - - def _added(self, node, levels): - if isinstance(node, rope.base.ast.Subscript) and \ -- isinstance(node.slice, rope.base.ast.Index): -+ isinstance(node.slice, (rope.base.ast.Index, rope.base.ast.expr)): - self.nodes.append((node, levels))