Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package python-rope for openSUSE:Factory 
checked in at 2021-04-17 00:01:43
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-rope (Old)
 and      /work/SRC/openSUSE:Factory/.python-rope.new.12324 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-rope"

Sat Apr 17 00:01:43 2021 rev:23 rq:885884 version:0.18.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-rope/python-rope.changes  2020-10-20 
16:20:50.694306259 +0200
+++ /work/SRC/openSUSE:Factory/.python-rope.new.12324/python-rope.changes       
2021-04-17 00:01:52.825604976 +0200
@@ -1,0 +2,6 @@
+Wed Mar 31 12:05:06 UTC 2021 - Ben Greiner <[email protected]>
+
+- Add rope-pr333-py39.patch for python39 compatibility
+  gh#python-rope/rope#333
+
+-------------------------------------------------------------------

New:
----
  rope-pr333-py39.patch

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-rope.spec ++++++
--- /var/tmp/diff_new_pack.EFvTzy/_old  2021-04-17 00:01:53.257605657 +0200
+++ /var/tmp/diff_new_pack.EFvTzy/_new  2021-04-17 00:01:53.257605657 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package python-rope
 #
-# Copyright (c) 2020 SUSE LLC
+# Copyright (c) 2021 SUSE LLC
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -26,6 +26,8 @@
 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
@@ -59,6 +61,7 @@
 %license COPYING
 %doc README.rst
 %doc docs/
-%{python_sitelib}/
+%{python_sitelib}/rope
+%{python_sitelib}/rope-%{version}*-info
 
 %changelog

++++++ rope-pr333-py39.patch ++++++
>From 5fbce2b97ba49c0900d882043acf3ff46e936d38 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Mat=C4=9Bj=20Cepl?= <[email protected]>
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 <[email protected]>
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 <ExtSlice> cannot be found
FAILED 
ropetest/refactor/patchedasttest.py::PatchedASTTest::test_simple_subscript - 
AssertionError: False is not true : Expected <Index> but was <Constant>

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 <[email protected]>
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 <[email protected]>
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))

Reply via email to