Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package python-ipykernel for 
openSUSE:Factory checked in at 2025-10-27 14:37:18
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-ipykernel (Old)
 and      /work/SRC/openSUSE:Factory/.python-ipykernel.new.1980 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-ipykernel"

Mon Oct 27 14:37:18 2025 rev:54 rq:1313518 version:6.31.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-ipykernel/python-ipykernel.changes        
2025-10-16 17:38:01.926608026 +0200
+++ 
/work/SRC/openSUSE:Factory/.python-ipykernel.new.1980/python-ipykernel.changes  
    2025-10-27 14:37:34.809164230 +0100
@@ -1,0 +2,9 @@
+Mon Oct 20 15:11:47 UTC 2025 - Markéta Machová <[email protected]>
+
+- Update to 6.31.0
+  * Store display outputs in history for %notebook magic
+  * update tests for 3.14
+  * Update PEP-639 license values in pyproject.toml
+  * Replace @flaky.flaky decorate with pytest fixture
+
+-------------------------------------------------------------------

Old:
----
  ipykernel-6.30.1.tar.gz

New:
----
  ipykernel-6.31.0.tar.gz

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

Other differences:
------------------
++++++ python-ipykernel.spec ++++++
--- /var/tmp/diff_new_pack.bhgWT5/_old  2025-10-27 14:37:35.833207470 +0100
+++ /var/tmp/diff_new_pack.bhgWT5/_new  2025-10-27 14:37:35.837207638 +0100
@@ -18,7 +18,7 @@
 
 %{?sle15_python_module_pythons}
 Name:           python-ipykernel
-Version:        6.30.1
+Version:        6.31.0
 Release:        0
 Summary:        IPython Kernel for Jupyter
 License:        BSD-3-Clause

++++++ ipykernel-6.30.1.tar.gz -> ipykernel-6.31.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ipykernel-6.30.1/.github/workflows/ci.yml 
new/ipykernel-6.31.0/.github/workflows/ci.yml
--- old/ipykernel-6.30.1/.github/workflows/ci.yml       2020-02-02 
01:00:00.000000000 +0100
+++ new/ipykernel-6.31.0/.github/workflows/ci.yml       2020-02-02 
01:00:00.000000000 +0100
@@ -22,13 +22,30 @@
       fail-fast: false
       matrix:
         os: [ubuntu-latest, windows-latest, macos-latest]
+        qt:
+          - qt5
+          - qt6
         python-version:
           - "3.9"
           - "3.10"
           - "3.11"
           - "3.12"
           - "3.13"
-          - "pypy-3.10"
+          - "3.14"
+          # 3.14t needs a jupyter-core release
+          # - "3.14t"
+          - "pypy-3.11"
+        exclude:
+          # qt6 not supported on 3.14 yet
+          - python-version: "3.14"
+            qt: qt6
+          - python-version: "3.13"
+            qt: qt5
+          - python-version: "3.12"
+            qt: qt5
+          - python-version: "3.11"
+            qt: qt5
+
     steps:
       - name: Checkout
         uses: actions/checkout@v4
@@ -37,6 +54,11 @@
         with:
           python-version: ${{ matrix.python-version }}
 
+      - name: set qt env
+        run: |
+          echo "QT=${{ matrix.qt }}" >> $GITHUB_ENV
+        shell: bash
+
       - name: Install hatch
         run: |
           python --version
@@ -52,7 +74,7 @@
         timeout-minutes: 15
         if: ${{ startsWith( matrix.python-version, 'pypy' ) }}
         run: |
-          hatch run test:nowarn
+          hatch run test:nowarn --ignore=tests/test_debugger.py -k "not 
closure"
 
       - name: Run the tests on Windows
         timeout-minutes: 15
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ipykernel-6.30.1/CHANGELOG.md 
new/ipykernel-6.31.0/CHANGELOG.md
--- old/ipykernel-6.30.1/CHANGELOG.md   2020-02-02 01:00:00.000000000 +0100
+++ new/ipykernel-6.31.0/CHANGELOG.md   2020-02-02 01:00:00.000000000 +0100
@@ -2,6 +2,31 @@
 
 <!-- <START NEW CHANGELOG ENTRY> -->
 
+## 6.31.0
+
+IPykernel 6.31.0 fixes an issue where display outputs such as Matplotlib plots 
were not included when using `%notebook` magic to save sessions as `.ipynb` 
files. This is enabled using the traitlet 
`ZMQDisplayPublisher.store_display_history` which defaults to the previous 
behaviour of `False`. This is a minor release rather than a patch release due 
to the addition of the new traitlet.
+
+([Full 
Changelog](https://github.com/ipython/ipykernel/compare/v6.30.1...01c1e8fe43047050f29d8728eabf4e4de14b624b))
+
+### Enhancements made
+
+- Backport PR #1435: Store display outputs in history for `%notebook` magic 
[#1461](https://github.com/ipython/ipykernel/pull/1461) 
([@Darshan808](https://github.com/Darshan808))
+
+### Maintenance and upkeep improvements
+
+- Backport PR #1453: update tests for 3.14 
[#1460](https://github.com/ipython/ipykernel/pull/1460) 
([@minrk](https://github.com/minrk))
+- Backport PR #1444: Test on PyPy 3.11 instead of 3.10 
[#1459](https://github.com/ipython/ipykernel/pull/1459) 
([@cclauss](https://github.com/cclauss))
+- 6.x: Update PEP-639 license values in pyproject.toml 
[#1446](https://github.com/ipython/ipykernel/pull/1446) 
([@bollwyvl](https://github.com/bollwyvl))
+- Backport PR #1411: Replace `@flaky.flaky` decorate with pytest fixture 
[#1421](https://github.com/ipython/ipykernel/pull/1421) 
([@mgorny](https://github.com/mgorny))
+
+### Contributors to this release
+
+([GitHub contributors page for this 
release](https://github.com/ipython/ipykernel/graphs/contributors?from=2025-08-04&to=2025-10-20&type=c))
+
+[@bollwyvl](https://github.com/search?q=repo%3Aipython%2Fipykernel+involves%3Abollwyvl+updated%3A2025-08-04..2025-10-20&type=Issues)
 | 
[@cclauss](https://github.com/search?q=repo%3Aipython%2Fipykernel+involves%3Acclauss+updated%3A2025-08-04..2025-10-20&type=Issues)
 | 
[@Darshan808](https://github.com/search?q=repo%3Aipython%2Fipykernel+involves%3ADarshan808+updated%3A2025-08-04..2025-10-20&type=Issues)
 | 
[@ianthomas23](https://github.com/search?q=repo%3Aipython%2Fipykernel+involves%3Aianthomas23+updated%3A2025-08-04..2025-10-20&type=Issues)
 | 
[@krassowski](https://github.com/search?q=repo%3Aipython%2Fipykernel+involves%3Akrassowski+updated%3A2025-08-04..2025-10-20&type=Issues)
 | 
[@lumberbot-app](https://github.com/search?q=repo%3Aipython%2Fipykernel+involves%3Alumberbot-app+updated%3A2025-08-04..2025-10-20&type=Issues)
 | 
[@meeseeksmachine](https://github.com/search?q=repo%3Aipython%2Fipykernel+involves%3Ameeseeksmachine+updated%3A2025-08-04..2025-10-20&type=Issues)
 | [@mgorny](https:
 
//github.com/search?q=repo%3Aipython%2Fipykernel+involves%3Amgorny+updated%3A2025-08-04..2025-10-20&type=Issues)
 | 
[@minrk](https://github.com/search?q=repo%3Aipython%2Fipykernel+involves%3Aminrk+updated%3A2025-08-04..2025-10-20&type=Issues)
+
+<!-- <END NEW CHANGELOG ENTRY> -->
+
 ## 6.30.1
 
 This is a bugfix release to fix a significant bug introduced in 6.30.0 that 
allowed control messages to be handled concurrently rather than sequentially 
which broke debugging in JupyterLab and VSCode.
@@ -22,8 +47,6 @@
 
 
[@ianthomas23](https://github.com/search?q=repo%3Aipython%2Fipykernel+involves%3Aianthomas23+updated%3A2025-07-21..2025-08-04&type=Issues)
 
-<!-- <END NEW CHANGELOG ENTRY> -->
-
 ## 6.30.0
 
 This release fixes three bugs but is primarily a maintenance release bringing 
support for Python 3.13 and updating dependencies. It does not include 
subshells which will be in the upcoming 7.0.0 release. Users and downstream 
libraries that wish to avoid subshells should pin to `ipykernel < 7`.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ipykernel-6.30.1/PKG-INFO 
new/ipykernel-6.31.0/PKG-INFO
--- old/ipykernel-6.30.1/PKG-INFO       2020-02-02 01:00:00.000000000 +0100
+++ new/ipykernel-6.31.0/PKG-INFO       2020-02-02 01:00:00.000000000 +0100
@@ -1,42 +1,13 @@
 Metadata-Version: 2.4
 Name: ipykernel
-Version: 6.30.1
+Version: 6.31.0
 Summary: IPython Kernel for Jupyter
 Project-URL: Homepage, https://ipython.org
 Project-URL: Documentation, https://ipykernel.readthedocs.io
 Project-URL: Source, https://github.com/ipython/ipykernel
 Project-URL: Tracker, https://github.com/ipython/ipykernel/issues
 Author-email: IPython Development Team <[email protected]>
-License: BSD 3-Clause License
-        
-        Copyright (c) 2015, IPython Development Team
-        
-        All rights reserved.
-        
-        Redistribution and use in source and binary forms, with or without
-        modification, are permitted provided that the following conditions are 
met:
-        
-        1. Redistributions of source code must retain the above copyright 
notice, this
-           list of conditions and the following disclaimer.
-        
-        2. Redistributions in binary form must reproduce the above copyright 
notice,
-           this list of conditions and the following disclaimer in the 
documentation
-           and/or other materials provided with the distribution.
-        
-        3. Neither the name of the copyright holder nor the names of its
-           contributors may be used to endorse or promote products derived from
-           this software without specific prior written permission.
-        
-        THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
"AS IS"
-        AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 
THE
-        IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 
PURPOSE ARE
-        DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE 
LIABLE
-        FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 
CONSEQUENTIAL
-        DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE 
GOODS OR
-        SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
HOWEVER
-        CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 
LIABILITY,
-        OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF 
THE USE
-        OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+License-Expression: BSD-3-Clause
 License-File: LICENSE
 Keywords: Interactive,Interpreter,Shell,Web
 Classifier: Intended Audience :: Developers
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ipykernel-6.30.1/ipykernel/_version.py 
new/ipykernel-6.31.0/ipykernel/_version.py
--- old/ipykernel-6.30.1/ipykernel/_version.py  2020-02-02 01:00:00.000000000 
+0100
+++ new/ipykernel-6.31.0/ipykernel/_version.py  2020-02-02 01:00:00.000000000 
+0100
@@ -4,7 +4,7 @@
 import re
 
 # Version string must appear intact for hatch versioning
-__version__ = "6.30.1"
+__version__ = "6.31.0"
 
 # Build up version_info tuple for backwards compatibility
 pattern = r"(?P<major>\d+).(?P<minor>\d+).(?P<patch>\d+)(?P<rest>.*)"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ipykernel-6.30.1/ipykernel/zmqshell.py 
new/ipykernel-6.31.0/ipykernel/zmqshell.py
--- old/ipykernel-6.30.1/ipykernel/zmqshell.py  2020-02-02 01:00:00.000000000 
+0100
+++ new/ipykernel-6.31.0/ipykernel/zmqshell.py  2020-02-02 01:00:00.000000000 
+0100
@@ -33,12 +33,17 @@
 from IPython.utils.process import arg_split, system  # 
type:ignore[attr-defined]
 from jupyter_client.session import Session, extract_header
 from jupyter_core.paths import jupyter_runtime_dir
-from traitlets import Any, CBool, CBytes, Dict, Instance, Type, default, 
observe
+from traitlets import Any, Bool, CBool, CBytes, Dict, Instance, Type, default, 
observe
 
 from ipykernel import connect_qtconsole, get_connection_file, 
get_connection_info
 from ipykernel.displayhook import ZMQShellDisplayHook
 from ipykernel.jsonutil import encode_images, json_clean
 
+try:
+    from IPython.core.history import HistoryOutput
+except ImportError:
+    HistoryOutput = None  # type: ignore[assignment,misc]
+
 # -----------------------------------------------------------------------------
 # Functions and classes
 # -----------------------------------------------------------------------------
@@ -52,6 +57,11 @@
     parent_header = Dict({})
     topic = CBytes(b"display_data")
 
+    store_display_history = Bool(
+        False,
+        help="If set to True, store display outputs in the history manager. 
Default is False.",
+    ).tag(config=True)
+
     # thread_local:
     # An attribute used to ensure the correct output message
     # is processed. See ipykernel Issue 113 for a discussion.
@@ -100,6 +110,21 @@
         update : bool, optional, keyword-only
             If True, send an update_display_data message instead of 
display_data.
         """
+        if (
+            self.store_display_history
+            and self.shell is not None
+            and hasattr(self.shell, "history_manager")
+            and HistoryOutput is not None
+        ):
+            # Reference: github.com/ipython/ipython/pull/14998
+            exec_count = self.shell.execution_count
+            if getattr(self.shell.display_pub, "_in_post_execute", False):
+                exec_count -= 1
+            outputs = getattr(self.shell.history_manager, "outputs", None)
+            if outputs is not None:
+                outputs.setdefault(exec_count, []).append(
+                    HistoryOutput(output_type="display_data", bundle=data)
+                )
         self._flush_streams()
         if metadata is None:
             metadata = {}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ipykernel-6.30.1/pyproject.toml 
new/ipykernel-6.31.0/pyproject.toml
--- old/ipykernel-6.30.1/pyproject.toml 2020-02-02 01:00:00.000000000 +0100
+++ new/ipykernel-6.31.0/pyproject.toml 2020-02-02 01:00:00.000000000 +0100
@@ -1,12 +1,12 @@
 [build-system]
-requires = ["hatchling>=1.4", "jupyter_client>=6"]
+requires = ["hatchling>=1.22", "jupyter_client>=6"]
 build-backend = "hatchling.build"
 
 [project]
 name = "ipykernel"
 dynamic = ["version"]
 authors = [{name = "IPython Development Team", email = 
"[email protected]"}]
-license = {file = "LICENSE"}
+license = "BSD-3-Clause"
 readme = "README.md"
 description = "IPython Kernel for Jupyter"
 keywords = ["Interactive", "Interpreter", "Shell", "Web"]
@@ -101,13 +101,10 @@
 test = "python -m pytest -vv --cov ipykernel --cov-branch --cov-report 
term-missing:skip-covered {args}"
 nowarn = "test -W default {args}"
 
-[[tool.hatch.envs.cov.matrix]]
-qt = ["qt5", "qt6"]
-
 [tool.hatch.envs.cov.overrides]
-matrix.qt.features = [
-  { value = "pyqt5", if = ["qt5"] },
-  { value = "pyside6", if = ["qt6"] },
+env.QT.features = [
+    { value = "pyqt5", if = ["qt5"] },
+    { value = "pyside6", if = ["qt6"] },
 ]
 
 [tool.hatch.envs.typing]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/ipykernel-6.30.1/tests/inprocess/test_kernelmanager.py 
new/ipykernel-6.31.0/tests/inprocess/test_kernelmanager.py
--- old/ipykernel-6.30.1/tests/inprocess/test_kernelmanager.py  2020-02-02 
01:00:00.000000000 +0100
+++ new/ipykernel-6.31.0/tests/inprocess/test_kernelmanager.py  2020-02-02 
01:00:00.000000000 +0100
@@ -4,7 +4,6 @@
 import unittest
 
 import pytest
-from flaky import flaky
 
 from ipykernel.inprocess.manager import InProcessKernelManager
 
@@ -21,7 +20,7 @@
         if self.km.has_kernel:
             self.km.shutdown_kernel()
 
-    @flaky
+    @pytest.mark.flaky()
     def test_interface(self):
         """Does the in-process kernel manager implement the basic KM 
interface?"""
         km = self.km
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ipykernel-6.30.1/tests/test_embed_kernel.py 
new/ipykernel-6.31.0/tests/test_embed_kernel.py
--- old/ipykernel-6.30.1/tests/test_embed_kernel.py     2020-02-02 
01:00:00.000000000 +0100
+++ new/ipykernel-6.31.0/tests/test_embed_kernel.py     2020-02-02 
01:00:00.000000000 +0100
@@ -12,7 +12,6 @@
 from subprocess import PIPE, Popen
 
 import pytest
-from flaky import flaky
 from jupyter_client.blocking.client import BlockingKernelClient
 from jupyter_core import paths
 
@@ -91,7 +90,7 @@
                 fid.close()
 
 
-@flaky(max_runs=3)
[email protected](max_runs=3)
 def test_embed_kernel_basic():
     """IPython.embed_kernel() is basically functional"""
     cmd = "\n".join(
@@ -127,7 +126,7 @@
         assert "10" in text
 
 
-@flaky(max_runs=3)
[email protected](max_runs=3)
 def test_embed_kernel_namespace():
     """IPython.embed_kernel() inherits calling namespace"""
     cmd = "\n".join(
@@ -166,7 +165,7 @@
         assert not content["found"]
 
 
-@flaky(max_runs=3)
[email protected](max_runs=3)
 def test_embed_kernel_reentrant():
     """IPython.embed_kernel() can be called multiple times"""
     cmd = "\n".join(
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ipykernel-6.30.1/tests/test_kernel.py 
new/ipykernel-6.31.0/tests/test_kernel.py
--- old/ipykernel-6.30.1/tests/test_kernel.py   2020-02-02 01:00:00.000000000 
+0100
+++ new/ipykernel-6.31.0/tests/test_kernel.py   2020-02-02 01:00:00.000000000 
+0100
@@ -17,7 +17,6 @@
 import IPython
 import psutil
 import pytest
-from flaky import flaky
 from IPython.paths import locate_profile
 
 from .utils import (
@@ -210,10 +209,14 @@
     assert "" in sys_path
 
 
-@flaky(max_runs=3)
+# the subprocess print tests fail in pytest,
+# but manual tests in notebooks work fine...
+
+
[email protected](max_runs=3)
 @pytest.mark.skipif(
-    sys.platform == "win32" or (sys.platform == "darwin" and sys.version_info 
>= (3, 8)),
-    reason="subprocess prints fail on Windows and MacOS Python 3.8+",
+    sys.platform in {"win32", "darwin"} or sys.version_info >= (3, 14),
+    reason="test doesn't reliably reproduce subprocess output capture",
 )
 def test_subprocess_print():
     """printing from forked mp.Process"""
@@ -242,7 +245,7 @@
         _check_master(kc, expected=True, stream="stderr")
 
 
-@flaky(max_runs=3)
[email protected](max_runs=3)
 def test_subprocess_noprint():
     """mp.Process without print doesn't trigger iostream mp_mode"""
     with kernel() as kc:
@@ -265,10 +268,10 @@
         _check_master(kc, expected=True, stream="stderr")
 
 
-@flaky(max_runs=3)
[email protected](max_runs=3)
 @pytest.mark.skipif(
-    sys.platform == "win32" or (sys.platform == "darwin" and sys.version_info 
>= (3, 8)),
-    reason="subprocess prints fail on Windows and MacOS Python 3.8+",
+    sys.platform in {"win32", "darwin"} or sys.version_info >= (3, 14),
+    reason="test doesn't reliably reproduce subprocess output capture",
 )
 def test_subprocess_error():
     """error in mp.Process doesn't crash"""
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ipykernel-6.30.1/tests/test_start_kernel.py 
new/ipykernel-6.31.0/tests/test_start_kernel.py
--- old/ipykernel-6.30.1/tests/test_start_kernel.py     2020-02-02 
01:00:00.000000000 +0100
+++ new/ipykernel-6.31.0/tests/test_start_kernel.py     2020-02-02 
01:00:00.000000000 +0100
@@ -2,7 +2,6 @@
 from textwrap import dedent
 
 import pytest
-from flaky import flaky
 
 from .test_embed_kernel import setup_kernel
 
@@ -12,7 +11,7 @@
     pytest.skip("skipping tests on windows", allow_module_level=True)
 
 
-@flaky(max_runs=3)
[email protected](max_runs=3)
 def test_ipython_start_kernel_userns():
     import IPython
 
@@ -51,7 +50,7 @@
         assert EXPECTED in text
 
 
-@flaky(max_runs=3)
[email protected](max_runs=3)
 def test_ipython_start_kernel_no_userns():
     # Issue #4188 - user_ns should be passed to shell as None, not {}
     cmd = dedent(
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ipykernel-6.30.1/tests/test_zmq_shell.py 
new/ipykernel-6.31.0/tests/test_zmq_shell.py
--- old/ipykernel-6.30.1/tests/test_zmq_shell.py        2020-02-02 
01:00:00.000000000 +0100
+++ new/ipykernel-6.31.0/tests/test_zmq_shell.py        2020-02-02 
01:00:00.000000000 +0100
@@ -22,6 +22,11 @@
     ZMQInteractiveShell,
 )
 
+try:
+    from IPython.core.history import HistoryOutput
+except ImportError:
+    HistoryOutput = None  # type: ignore[assignment,misc]
+
 
 class NoReturnDisplayHook:
     """
@@ -209,6 +214,35 @@
         second = self.disp_pub.unregister_hook(hook)
         assert not bool(second)
 
+    @unittest.skipIf(HistoryOutput is None, "HistoryOutput not available")
+    def test_display_stored_in_history(self):
+        """
+        Test that published display data gets stored in shell history
+        for %notebook magic support, and not stored when disabled.
+        """
+        for enable in [False, True]:
+            # Mock shell with history manager
+            mock_shell = MagicMock()
+            mock_shell.execution_count = 1
+            mock_shell.history_manager.outputs = dict()
+            mock_shell.display_pub._in_post_execute = False
+
+            self.disp_pub.shell = mock_shell
+            self.disp_pub.store_display_history = enable
+
+            data = {"text/plain": "test output"}
+            self.disp_pub.publish(data)
+
+            if enable:
+                # Check that output was stored in history
+                stored_outputs = mock_shell.history_manager.outputs[1]
+                assert len(stored_outputs) == 1
+                assert stored_outputs[0].output_type == "display_data"
+                assert stored_outputs[0].bundle == data
+            else:
+                # Should not store anything in history
+                assert mock_shell.history_manager.outputs == {}
+
 
 def test_magics(tmp_path):
     context = zmq.Context()

Reply via email to