- Update to 8.24.0:

* Improve inference from return type annotations in completer and the
    introduction of the optional target ipython[matplotlib] to explicitly
    request the matplotlib optional dependencies.
  * Move of the matplotlib backend handling from IPython to matplotlib.
  * pytest 8 compatibility.
  * typing-extension now needs 4.6 or newer. It was already the case, but
    not explicated.
  * Attempt to speed running code under debugger in some cases.
- Add patch support-pytest-8.1.patch:
  * Support pytest >= 8.1 with the pytest plugin.

OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:jupyter/python-ipython?expand=0&rev=129
This commit is contained in:
Steve Kowalik 2024-05-23 05:21:58 +00:00 committed by Git OBS Bridge
parent 74d9bc9984
commit 138ab35c4c
5 changed files with 150 additions and 7 deletions

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:2dcaad9049f9056f1fef63514f176c7d41f930daa78d05b82a176202818f2c14
size 5490399

3
ipython-8.24.0.tar.gz Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:010db3f8a728a578bb641fdd06c063b9fb8e96a9464c63aec6310fbcb5e80501
size 5491819

View File

@ -1,3 +1,18 @@
-------------------------------------------------------------------
Thu May 23 05:20:42 UTC 2024 - Steve Kowalik <steven.kowalik@suse.com>
- Update to 8.24.0:
* Improve inference from return type annotations in completer and the
introduction of the optional target ipython[matplotlib] to explicitly
request the matplotlib optional dependencies.
* Move of the matplotlib backend handling from IPython to matplotlib.
* pytest 8 compatibility.
* typing-extension now needs 4.6 or newer. It was already the case, but
not explicated.
* Attempt to speed running code under debugger in some cases.
- Add patch support-pytest-8.1.patch:
* Support pytest >= 8.1 with the pytest plugin.
-------------------------------------------------------------------
Fri Mar 29 17:16:13 UTC 2024 - Ben Greiner <code@bnavigator.de>

View File

@ -35,14 +35,15 @@
%define skip_python39 1
%{?sle15_python_module_pythons}
Name: python-ipython%{psuffix}
Version: 8.22.2
Version: 8.24.0
Release: 0
Summary: Rich architecture for interactive computing with Python
License: BSD-3-Clause
Group: Development/Languages/Python
URL: https://github.com/ipython/ipython
Source: https://files.pythonhosted.org/packages/source/i/ipython/ipython-%{version}.tar.gz
Source1: https://raw.githubusercontent.com/jupyter/qtconsole/4.0.0/qtconsole/resources/icon/JupyterConsole.svg
# PATCH-FIX-UPSTREAM gh#ipython/ipython#14441
Patch0: support-pytest-8.1.patch
BuildRequires: %{python_module base >= 3.10}
BuildRequires: %{python_module pip}
BuildRequires: %{python_module setuptools >= 61.2}
@ -63,6 +64,9 @@ Requires: (python-prompt_toolkit >= 3.0.41 with python-prompt_toolkit < 3.
%if %{python_version_nodots} < 311
Requires: python-exceptiongroup
%endif
%if %{python_version_nodots} < 312
Requires: python-typing_extensions >= 4.6
%endif
Recommends: jupyter
Recommends: python-ipykernel
Recommends: python-ipyparallel
@ -85,12 +89,11 @@ Obsoletes: python-jupyter_ipython-doc-pdf < %{version}
BuildArch: noarch
%if %{with test}
BuildRequires: %{python_module ipython = %{version}}
BuildRequires: %{python_module matplotlib}
BuildRequires: %{python_module numpy >= 1.23}
BuildRequires: %{python_module pandas}
BuildRequires: %{python_module pickleshare}
BuildRequires: %{python_module pytest < 8}
BuildRequires: %{python_module pytest-asyncio}
BuildRequires: %{python_module pytest}
BuildRequires: %{python_module testpath}
BuildRequires: %{python_module trio}
%endif

125
support-pytest-8.1.patch Normal file
View File

@ -0,0 +1,125 @@
From 7df70a3cd79068be6f98596e427d60a5d0cfe5b3 Mon Sep 17 00:00:00 2001
From: Steve Kowalik <steven@wedontsleep.org>
Date: Thu, 23 May 2024 13:00:43 +1000
Subject: [PATCH] Support pytest 8.1+ changes in pytest plugin
Pytest 8.1 has also changed the plugin API, as well as required new
keyword arguments. I've shifted the pytest version calculation to the
module level so we can use it everywhere, and continue supporting all
versions of pytest that we can.
Fixes #14390
---
IPython/testing/plugin/pytest_ipdoctest.py | 36 ++++++++++++++++------
1 file changed, 26 insertions(+), 10 deletions(-)
diff --git a/IPython/testing/plugin/pytest_ipdoctest.py b/IPython/testing/plugin/pytest_ipdoctest.py
index fc8af13b579..40a3ae92b40 100644
--- a/IPython/testing/plugin/pytest_ipdoctest.py
+++ b/IPython/testing/plugin/pytest_ipdoctest.py
@@ -38,7 +38,11 @@
from _pytest.compat import safe_getattr
from _pytest.config import Config
from _pytest.config.argparsing import Parser
-from _pytest.fixtures import FixtureRequest
+
+try:
+ from _pytest.fixtures import TopRequest as FixtureRequest
+except ImportError:
+ from _pytest.fixtures import FixtureRequest
from _pytest.nodes import Collector
from _pytest.outcomes import OutcomeException
from _pytest.pathlib import fnmatch_ex, import_path
@@ -69,6 +73,8 @@
# Lazy definition of output checker class
CHECKER_CLASS: Optional[Type["IPDoctestOutputChecker"]] = None
+pytest_version = tuple([int(part) for part in pytest.__version__.split(".")])
+
def pytest_addoption(parser: Parser) -> None:
parser.addini(
@@ -143,7 +149,7 @@ def pytest_collect_file(
return None
-if int(pytest.__version__.split(".")[0]) < 7:
+if pytest_version[0] < 7:
_collect_file = pytest_collect_file
def pytest_collect_file(
@@ -448,7 +454,7 @@ def reportinfo(self) -> Tuple[Union["os.PathLike[str]", str], Optional[int], str
assert self.dtest is not None
return self.path, self.dtest.lineno, "[ipdoctest] %s" % self.name
- if int(pytest.__version__.split(".")[0]) < 7:
+ if pytest_version[0] < 7:
@property
def path(self) -> Path:
@@ -521,7 +527,7 @@ def collect(self) -> Iterable[IPDoctestItem]:
self, name=test.name, runner=runner, dtest=test
)
- if int(pytest.__version__.split(".")[0]) < 7:
+ if pytest_version[0] < 7:
@property
def path(self) -> Path:
@@ -636,20 +642,26 @@ def _find(
)
if self.path.name == "conftest.py":
- if int(pytest.__version__.split(".")[0]) < 7:
+ if pytest_version[0] < 7:
module = self.config.pluginmanager._importconftest(
self.path,
self.config.getoption("importmode"),
)
else:
+ kwargs = {"rootpath": self.config.rootpath}
+ if pytest_version >= (8, 1):
+ kwargs["consider_namespace_packages"] = False
module = self.config.pluginmanager._importconftest(
self.path,
self.config.getoption("importmode"),
- rootpath=self.config.rootpath,
+ **kwargs,
)
else:
try:
- module = import_path(self.path, root=self.config.rootpath)
+ kwargs = {"root": self.config.rootpath}
+ if pytest_version >= (8, 1):
+ kwargs["consider_namespace_packages"] = False
+ module = import_path(self.path, **kwargs)
except ImportError:
if self.config.getvalue("ipdoctest_ignore_import_errors"):
pytest.skip("unable to import module %r" % self.path)
@@ -671,7 +683,7 @@ def _find(
self, name=test.name, runner=runner, dtest=test
)
- if int(pytest.__version__.split(".")[0]) < 7:
+ if pytest_version[0] < 7:
@property
def path(self) -> Path:
@@ -701,11 +713,15 @@ def func() -> None:
doctest_item.funcargs = {} # type: ignore[attr-defined]
fm = doctest_item.session._fixturemanager
+ kwargs = {"node": doctest_item, "func": func, "cls": None}
+ if pytest_version <= (8, 0):
+ kwargs["funcargs"] = False
doctest_item._fixtureinfo = fm.getfixtureinfo( # type: ignore[attr-defined]
- node=doctest_item, func=func, cls=None, funcargs=False
+ **kwargs
)
fixture_request = FixtureRequest(doctest_item, _ispytest=True)
- fixture_request._fillfixtures()
+ if pytest_version <= (8, 0):
+ fixture_request._fillfixtures()
return fixture_request