From ae99a62b2a2fae80b9c9af58f569fe5036317ff5 Mon Sep 17 00:00:00 2001 From: DistroBaker Date: Fri, 5 Feb 2021 23:23:22 +0000 Subject: [PATCH] Merged update from upstream sources This is an automated DistroBaker update from upstream sources. If you do not know what this is about or would like to opt out, contact the OSCI team. Source: https://src.fedoraproject.org/rpms/ipython.git#b7e3bf371c924e624f112b543e8759ef17476b85 --- ipython.spec | 14 ++++- py310.patch | 164 +++++++++++++++++++++++++++++++++++++++++++++++++++ sources | 2 +- 3 files changed, 177 insertions(+), 3 deletions(-) create mode 100644 py310.patch diff --git a/ipython.spec b/ipython.spec index 2818bd1..e5bb66f 100644 --- a/ipython.spec +++ b/ipython.spec @@ -13,8 +13,8 @@ %endif Name: ipython -Version: 7.19.0 -Release: 2%{?dist} +Version: 7.20.0 +Release: 1%{?dist} Summary: An enhanced interactive Python shell # See bug #603178 for a quick overview for the choice of licenses @@ -24,6 +24,10 @@ License: (BSD and MIT and Python) and GPLv2+ URL: http://ipython.org/ Source0: %pypi_source +# Fix tests for Python 3.10 +# Proposed upstream: https://github.com/ipython/ipython/pull/12759 +Patch0: py310.patch + BuildArch: noarch BuildRequires: make BuildRequires: python3-devel @@ -264,6 +268,12 @@ rm -r %{buildroot}%{python3_sitelib}/IPython/*/tests %changelog +* Tue Feb 02 2021 Lumír Balhar - 7.20.0-1 +- Fix tests with Python 3.10.0a4 +Resolves: rhbz#1901141 +- Update to 7.20.0 +Resolves: rhbz#1923782 + * Tue Jan 26 2021 Fedora Release Engineering - 7.19.0-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild diff --git a/py310.patch b/py310.patch new file mode 100644 index 0000000..1871b05 --- /dev/null +++ b/py310.patch @@ -0,0 +1,164 @@ +From 3987f6d04b6eb737d03ba4b05ef6638fea3d7e00 Mon Sep 17 00:00:00 2001 +From: Lumir Balhar +Date: Thu, 7 Jan 2021 14:41:11 +0100 +Subject: [PATCH 1/3] Update test_oinspect for postponed evaulation of + annotations + +Newer Pythons stores annotations as strings and evaluate them later. +--- + IPython/core/tests/test_oinspect.py | 8 ++++++++ + 1 file changed, 8 insertions(+) + +diff --git a/IPython/core/tests/test_oinspect.py b/IPython/core/tests/test_oinspect.py +index 19c6db7c4..edb3a7aac 100644 +--- a/IPython/core/tests/test_oinspect.py ++++ b/IPython/core/tests/test_oinspect.py +@@ -421,6 +421,14 @@ def long_function( + long_function.__name__, + ) + nt.assert_in(sig, [ ++ # Python >=3.10 with delayed annotations evaulation ++ '''\ ++long_function( ++ a_really_long_parameter: 'int', ++ and_another_long_one: 'bool' = False, ++ let_us_make_sure_this_is_looong: 'Optional[str]' = None, ++) -> 'bool'\ ++''', + # Python >=3.9 + '''\ + long_function( +-- +2.29.2 + +From d0934ea03e8bf47de4614ddb214b55e3b397b970 Mon Sep 17 00:00:00 2001 +From: Lumir Balhar +Date: Thu, 7 Jan 2021 14:42:34 +0100 +Subject: [PATCH 2/3] Update test_magic_arguments for new argparse module + +New argparse module uses "options" instead "optional arguments". + +https://github.com/python/cpython/commit/41b223d29cdfeb1f222c12c3abaccc3bc128f5e7 +--- + IPython/core/tests/test_magic_arguments.py | 15 +++++++++------ + 1 file changed, 9 insertions(+), 6 deletions(-) + +diff --git a/IPython/core/tests/test_magic_arguments.py b/IPython/core/tests/test_magic_arguments.py +index 5dea32dd8..ae3fa26a6 100644 +--- a/IPython/core/tests/test_magic_arguments.py ++++ b/IPython/core/tests/test_magic_arguments.py +@@ -7,6 +7,7 @@ + #----------------------------------------------------------------------------- + + import argparse ++import sys + from nose.tools import assert_equal + + from IPython.core.magic_arguments import (argument, argument_group, kwds, +@@ -74,7 +75,9 @@ def foo(self, args): + + + def test_magic_arguments(): +- assert_equal(magic_foo1.__doc__, '::\n\n %foo1 [-f FOO]\n\n A docstring.\n\noptional arguments:\n -f FOO, --foo FOO an argument\n') ++ optional = "optional arguments:" if sys.version_info < (3, 10, 0) else "options:" ++ ++ assert_equal(magic_foo1.__doc__, f'::\n\n %foo1 [-f FOO]\n\n A docstring.\n\n{optional}\n -f FOO, --foo FOO an argument\n') + assert_equal(getattr(magic_foo1, 'argcmd_name', None), None) + assert_equal(real_name(magic_foo1), 'foo1') + assert_equal(magic_foo1(None, ''), argparse.Namespace(foo=None)) +@@ -86,32 +89,32 @@ def test_magic_arguments(): + assert_equal(magic_foo2(None, ''), argparse.Namespace()) + assert hasattr(magic_foo2, 'has_arguments') + +- assert_equal(magic_foo3.__doc__, '::\n\n %foo3 [-f FOO] [-b BAR] [-z BAZ]\n\n A docstring.\n\noptional arguments:\n -f FOO, --foo FOO an argument\n\nGroup:\n -b BAR, --bar BAR a grouped argument\n\nSecond Group:\n -z BAZ, --baz BAZ another grouped argument\n') ++ assert_equal(magic_foo3.__doc__, f'::\n\n %foo3 [-f FOO] [-b BAR] [-z BAZ]\n\n A docstring.\n\n{optional}\n -f FOO, --foo FOO an argument\n\nGroup:\n -b BAR, --bar BAR a grouped argument\n\nSecond Group:\n -z BAZ, --baz BAZ another grouped argument\n') + assert_equal(getattr(magic_foo3, 'argcmd_name', None), None) + assert_equal(real_name(magic_foo3), 'foo3') + assert_equal(magic_foo3(None, ''), + argparse.Namespace(bar=None, baz=None, foo=None)) + assert hasattr(magic_foo3, 'has_arguments') + +- assert_equal(magic_foo4.__doc__, '::\n\n %foo4 [-f FOO]\n\n A docstring.\n\noptional arguments:\n -f FOO, --foo FOO an argument\n') ++ assert_equal(magic_foo4.__doc__, f'::\n\n %foo4 [-f FOO]\n\n A docstring.\n\n{optional}\n -f FOO, --foo FOO an argument\n') + assert_equal(getattr(magic_foo4, 'argcmd_name', None), None) + assert_equal(real_name(magic_foo4), 'foo4') + assert_equal(magic_foo4(None, ''), argparse.Namespace()) + assert hasattr(magic_foo4, 'has_arguments') + +- assert_equal(magic_foo5.__doc__, '::\n\n %frobnicate [-f FOO]\n\n A docstring.\n\noptional arguments:\n -f FOO, --foo FOO an argument\n') ++ assert_equal(magic_foo5.__doc__, f'::\n\n %frobnicate [-f FOO]\n\n A docstring.\n\n{optional}\n -f FOO, --foo FOO an argument\n') + assert_equal(getattr(magic_foo5, 'argcmd_name', None), 'frobnicate') + assert_equal(real_name(magic_foo5), 'frobnicate') + assert_equal(magic_foo5(None, ''), argparse.Namespace(foo=None)) + assert hasattr(magic_foo5, 'has_arguments') + +- assert_equal(magic_magic_foo.__doc__, '::\n\n %magic_foo [-f FOO]\n\n A docstring.\n\noptional arguments:\n -f FOO, --foo FOO an argument\n') ++ assert_equal(magic_magic_foo.__doc__, f'::\n\n %magic_foo [-f FOO]\n\n A docstring.\n\n{optional}\n -f FOO, --foo FOO an argument\n') + assert_equal(getattr(magic_magic_foo, 'argcmd_name', None), None) + assert_equal(real_name(magic_magic_foo), 'magic_foo') + assert_equal(magic_magic_foo(None, ''), argparse.Namespace(foo=None)) + assert hasattr(magic_magic_foo, 'has_arguments') + +- assert_equal(foo.__doc__, '::\n\n %foo [-f FOO]\n\n A docstring.\n\noptional arguments:\n -f FOO, --foo FOO an argument\n') ++ assert_equal(foo.__doc__, f'::\n\n %foo [-f FOO]\n\n A docstring.\n\n{optional}\n -f FOO, --foo FOO an argument\n') + assert_equal(getattr(foo, 'argcmd_name', None), None) + assert_equal(real_name(foo), 'foo') + assert_equal(foo(None, ''), argparse.Namespace(foo=None)) +-- +2.29.2 + +From 098823bbf70c55d2de1e05811307a92da1142f8c Mon Sep 17 00:00:00 2001 +From: Lumir Balhar +Date: Thu, 7 Jan 2021 14:43:46 +0100 +Subject: [PATCH 3/3] xxlimited module is xxlimited_35 in Python 3.10 + +--- + IPython/lib/tests/test_pretty.py | 13 +++++++++---- + 1 file changed, 9 insertions(+), 4 deletions(-) + +diff --git a/IPython/lib/tests/test_pretty.py b/IPython/lib/tests/test_pretty.py +index ba4c32966..9cba39adf 100644 +--- a/IPython/lib/tests/test_pretty.py ++++ b/IPython/lib/tests/test_pretty.py +@@ -6,15 +6,16 @@ + + + from collections import Counter, defaultdict, deque, OrderedDict ++from importlib import import_module + import os + import types + import string ++import sys + import unittest + + import nose.tools as nt + + from IPython.lib import pretty +-from IPython.testing.decorators import skip_without + + from io import StringIO + +@@ -118,13 +119,17 @@ def test_sets(): + yield nt.assert_equal, got_output, expected_output + + +-@skip_without('xxlimited') + def test_pprint_heap_allocated_type(): + """ + Test that pprint works for heap allocated types. + """ +- import xxlimited +- output = pretty.pretty(xxlimited.Null) ++ module_name = "xxlimited" if sys.version_info < (3, 10, 0) else "xxlimited_35" ++ try: ++ module = import_module(module_name) ++ except ImportError: ++ pytest.skip(f"Module {module_name} is not available.") ++ ++ output = pretty.pretty(getattr(module, "Null")) + nt.assert_equal(output, 'xxlimited.Null') + + def test_pprint_nomod(): +-- +2.29.2 + diff --git a/sources b/sources index 9031451..4bf1e81 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (ipython-7.19.0.tar.gz) = 5350a125da3050acaea4899939a3b9d779009a2f5769fc9f3aa514ce029df050069ef9310d3255ad62f28912b4dec39207267248d3a2c3e9131cffd691322622 +SHA512 (ipython-7.20.0.tar.gz) = 2fff1a64c3d83e794e76bcbdf54e105f499321d9a7e5d3221cdc3e15a96e90543fd465b8dbee4836965286e7c1f1ea6d13e4d3d88c095164858bf71c161111fe