Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package python-nbclient for openSUSE:Factory 
checked in at 2026-02-23 16:12:53
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-nbclient (Old)
 and      /work/SRC/openSUSE:Factory/.python-nbclient.new.1977 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-nbclient"

Mon Feb 23 16:12:53 2026 rev:37 rq:1334431 version:0.10.4

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-nbclient/python-nbclient.changes  
2025-12-15 12:04:41.103198228 +0100
+++ 
/work/SRC/openSUSE:Factory/.python-nbclient.new.1977/python-nbclient.changes    
    2026-02-23 16:14:52.431084136 +0100
@@ -1,0 +2,17 @@
+Mon Feb 23 09:18:16 UTC 2026 - Dirk Müller <[email protected]>
+
+- update to 0.10.4:
+  * Allow `display_id` to be `None` #338 (@davidbrochart,
+    @YannickJadoul, @slayoo)
+
+-------------------------------------------------------------------
+Sat Dec 20 17:30:30 UTC 2025 - Ben Greiner <[email protected]>
+
+- Update to 0.10.3
+  * Drop Python 3.9, test 3.14 and pypy-3.11 #337 (@davidbrochart)
+  * correct execution count in test for ipython 9.8 and above #335
+    (@drorspei, @davidbrochart)
+  * Update contribution with pytest instructions, remove tox. #331
+    (@dgrahn, @davidbrochart)
+
+-------------------------------------------------------------------

Old:
----
  nbclient-0.10.2.tar.gz

New:
----
  nbclient-0.10.4.tar.gz

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

Other differences:
------------------
++++++ python-nbclient.spec ++++++
--- /var/tmp/diff_new_pack.4Hafg5/_old  2026-02-23 16:14:52.939105082 +0100
+++ /var/tmp/diff_new_pack.4Hafg5/_new  2026-02-23 16:14:52.939105082 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package python-nbclient
 #
-# Copyright (c) 2025 SUSE LLC and contributors
+# Copyright (c) 2026 SUSE LLC and contributors
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -34,7 +34,7 @@
 %{?sle15_python_module_pythons}
 
 Name:           python-nbclient%{psuffix}
-Version:        0.10.2
+Version:        0.10.4
 Release:        0
 Summary:        A client library for executing notebooks
 License:        BSD-3-Clause
@@ -46,7 +46,7 @@
 BuildRequires:  fdupes
 BuildRequires:  python-rpm-macros
 Requires:       python-jupyter-client >= 6.1.12
-Requires:       python-nbformat >= 5.1
+Requires:       python-nbformat >= 5.1.3
 Requires:       python-traitlets >= 5.4
 Requires:       ((python-jupyter-core >= 4.12 with python-jupyter-core < 5) or 
python-jupyter-core >= 5.1)
 BuildArch:      noarch
@@ -64,8 +64,8 @@
 BuildRequires:  %{python_module ipywidgets}
 BuildRequires:  %{python_module nbclient = %{version}}
 BuildRequires:  %{python_module nbconvert >= 7}
-BuildRequires:  %{python_module pytest >= 7}
-BuildRequires:  %{python_module pytest-asyncio}
+BuildRequires:  %{python_module pytest >= 9.0.1}
+BuildRequires:  %{python_module pytest-asyncio >= 1.3.0}
 BuildRequires:  %{python_module testpath}
 BuildRequires:  %{python_module xmltodict}
 %endif

++++++ nbclient-0.10.2.tar.gz -> nbclient-0.10.4.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nbclient-0.10.2/PKG-INFO new/nbclient-0.10.4/PKG-INFO
--- old/nbclient-0.10.2/PKG-INFO        2020-02-02 01:00:00.000000000 +0100
+++ new/nbclient-0.10.4/PKG-INFO        2020-02-02 01:00:00.000000000 +0100
@@ -1,6 +1,6 @@
 Metadata-Version: 2.4
 Name: nbclient
-Version: 0.10.2
+Version: 0.10.4
 Summary: A client library for executing notebooks. Formerly nbconvert's 
ExecutePreprocessor.
 Project-URL: Documentation, https://nbclient.readthedocs.io
 Project-URL: Funding, https://numfocus.org/
@@ -46,15 +46,15 @@
 Classifier: License :: OSI Approved :: BSD License
 Classifier: Programming Language :: Python
 Classifier: Programming Language :: Python :: 3
-Classifier: Programming Language :: Python :: 3.9
 Classifier: Programming Language :: Python :: 3.10
 Classifier: Programming Language :: Python :: 3.11
 Classifier: Programming Language :: Python :: 3.12
 Classifier: Programming Language :: Python :: 3.13
-Requires-Python: >=3.9.0
+Classifier: Programming Language :: Python :: 3.14
+Requires-Python: >=3.10.0
 Requires-Dist: jupyter-client>=6.1.12
 Requires-Dist: jupyter-core!=5.0.*,>=4.12
-Requires-Dist: nbformat>=5.1
+Requires-Dist: nbformat>=5.1.3
 Requires-Dist: traitlets>=5.4
 Provides-Extra: dev
 Requires-Dist: pre-commit; extra == 'dev'
@@ -68,9 +68,9 @@
 Requires-Dist: moto; extra == 'docs'
 Requires-Dist: myst-parser; extra == 'docs'
 Requires-Dist: nbconvert>=7.1.0; extra == 'docs'
-Requires-Dist: pytest-asyncio; extra == 'docs'
+Requires-Dist: pytest-asyncio>=1.3.0; extra == 'docs'
 Requires-Dist: pytest-cov>=4.0; extra == 'docs'
-Requires-Dist: pytest<8,>=7.0; extra == 'docs'
+Requires-Dist: pytest<10,>=9.0.1; extra == 'docs'
 Requires-Dist: sphinx-book-theme; extra == 'docs'
 Requires-Dist: sphinx>=1.7; extra == 'docs'
 Requires-Dist: sphinxcontrib-spelling; extra == 'docs'
@@ -82,9 +82,9 @@
 Requires-Dist: ipython; extra == 'test'
 Requires-Dist: ipywidgets; extra == 'test'
 Requires-Dist: nbconvert>=7.1.0; extra == 'test'
-Requires-Dist: pytest-asyncio; extra == 'test'
+Requires-Dist: pytest-asyncio>=1.3.0; extra == 'test'
 Requires-Dist: pytest-cov>=4.0; extra == 'test'
-Requires-Dist: pytest<8,>=7.0; extra == 'test'
+Requires-Dist: pytest<10,>=9.0.1; extra == 'test'
 Requires-Dist: testpath; extra == 'test'
 Requires-Dist: xmltodict; extra == 'test'
 Description-Content-Type: text/markdown
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nbclient-0.10.2/nbclient/_version.py 
new/nbclient-0.10.4/nbclient/_version.py
--- old/nbclient-0.10.2/nbclient/_version.py    2020-02-02 01:00:00.000000000 
+0100
+++ new/nbclient-0.10.4/nbclient/_version.py    2020-02-02 01:00:00.000000000 
+0100
@@ -3,7 +3,7 @@
 
 import re
 
-__version__ = "0.10.2"
+__version__ = "0.10.4"
 
 # 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/nbclient-0.10.2/nbclient/client.py 
new/nbclient-0.10.4/nbclient/client.py
--- old/nbclient-0.10.2/nbclient/client.py      2020-02-02 01:00:00.000000000 
+0100
+++ new/nbclient-0.10.4/nbclient/client.py      2020-02-02 01:00:00.000000000 
+0100
@@ -476,7 +476,7 @@
         self.widget_buffers: dict[str, dict[tuple[str, ...], dict[str, str]]] 
= {}
         # maps to list of hooks, where the last is used, this is used
         # to support nested use of output widgets.
-        self.output_hook_stack: t.Any = collections.defaultdict(list)
+        self.output_hook_stack: dict[str, list[OutputWidget]] = 
collections.defaultdict(list)
         # our front-end mimicking Output widgets
         self.comm_objects: dict[str, t.Any] = {}
 
@@ -776,7 +776,7 @@
         while True:
             try:
                 if error_on_timeout_execute_reply:
-                    msg = error_on_timeout_execute_reply  # 
type:ignore[unreachable]
+                    msg = error_on_timeout_execute_reply
                     msg["parent_header"] = {"msg_id": msg_id}
                 else:
                     msg = await 
ensure_async(self.kc.shell_channel.get_msg(timeout=new_timeout))
@@ -1136,7 +1136,11 @@
         return None
 
     def output(
-        self, outs: list[NotebookNode], msg: dict[str, t.Any], display_id: 
str, cell_index: int
+        self,
+        outs: list[NotebookNode],
+        msg: dict[str, t.Any],
+        display_id: str | None,
+        cell_index: int,
     ) -> NotebookNode | None:
         """Handle output."""
 
@@ -1251,7 +1255,7 @@
         encoded_buffers = []
         paths = msg["content"]["data"]["buffer_paths"]
         buffers = msg["buffers"]
-        for path, buffer in zip(paths, buffers):
+        for path, buffer in zip(paths, buffers, strict=False):
             encoded_buffers.append(
                 {
                     "data": base64.b64encode(buffer).decode("utf-8"),
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nbclient-0.10.2/nbclient/output_widget.py 
new/nbclient-0.10.4/nbclient/output_widget.py
--- old/nbclient-0.10.2/nbclient/output_widget.py       2020-02-02 
01:00:00.000000000 +0100
+++ new/nbclient-0.10.4/nbclient/output_widget.py       2020-02-02 
01:00:00.000000000 +0100
@@ -72,7 +72,7 @@
         self._publish_msg("comm_msg", data=data, metadata=metadata, 
buffers=buffers)
 
     def output(
-        self, outs: list[NotebookNode], msg: dict[str, Any], display_id: str, 
cell_index: int
+        self, outs: list[NotebookNode], msg: dict[str, Any], display_id: str | 
None, cell_index: int
     ) -> None:
         """Handle output."""
         if self.clear_before_next_output:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nbclient-0.10.2/nbclient/util.py 
new/nbclient-0.10.4/nbclient/util.py
--- old/nbclient-0.10.2/nbclient/util.py        2020-02-02 01:00:00.000000000 
+0100
+++ new/nbclient-0.10.4/nbclient/util.py        2020-02-02 01:00:00.000000000 
+0100
@@ -5,7 +5,8 @@
 from __future__ import annotations
 
 import inspect
-from typing import Any, Callable
+from collections.abc import Callable
+from typing import Any
 
 from jupyter_core.utils import ensure_async, run_sync
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nbclient-0.10.2/pyproject.toml 
new/nbclient-0.10.4/pyproject.toml
--- old/nbclient-0.10.2/pyproject.toml  2020-02-02 01:00:00.000000000 +0100
+++ new/nbclient-0.10.4/pyproject.toml  2020-02-02 01:00:00.000000000 +0100
@@ -12,7 +12,7 @@
 description = "A client library for executing notebooks. Formerly nbconvert's 
ExecutePreprocessor."
 readme = "README.md"
 license = { file = "LICENSE" }
-requires-python = ">=3.9.0"
+requires-python = ">=3.10.0"
 authors = [
     { name = "Jupyter Development Team", email = "[email protected]" },
 ]
@@ -29,16 +29,16 @@
     "License :: OSI Approved :: BSD License",
     "Programming Language :: Python",
     "Programming Language :: Python :: 3",
-    "Programming Language :: Python :: 3.9",
     "Programming Language :: Python :: 3.10",
     "Programming Language :: Python :: 3.11",
     "Programming Language :: Python :: 3.12",
     "Programming Language :: Python :: 3.13",
+    "Programming Language :: Python :: 3.14",
 ]
 dependencies = [
     "jupyter_client>=6.1.12",
     "jupyter_core>=4.12,!=5.0.*",
-    "nbformat>=5.1",
+    "nbformat>=5.1.3",
     "traitlets>=5.4",
 ]
 
@@ -49,9 +49,9 @@
     "ipython",
     "ipywidgets",
     "nbconvert>=7.1.0",
-    "pytest-asyncio",
+    "pytest-asyncio >=1.3.0",
     "pytest-cov>=4.0",
-    "pytest>=7.0,<8",
+    "pytest>=9.0.1,<10",
     "testpath",
     "xmltodict",
 ]
@@ -142,8 +142,9 @@
   "module:subprocess .* is still running:ResourceWarning",
   "module:Unclosed context <zmq:ResourceWarning",
   "module:datetime.datetime.utc:DeprecationWarning",
+  "module:'asyncio.WindowsSelectorEventLoopPolicy' is deprecated and slated 
for removal in Python 3.16:DeprecationWarning",
+  "module:'asyncio.set_event_loop_policy' is deprecated and slated for removal 
in Python 3.16:DeprecationWarning",
 ]
-asyncio_mode = "auto"
 
 [tool.coverage.report]
 exclude_lines = [
@@ -165,7 +166,7 @@
 
 [tool.mypy]
 files = "nbclient"
-python_version = "3.8"
+python_version = "3.10"
 strict = true
 enable_error_code = ["ignore-without-code", "redundant-expr", "truthy-bool"]
 warn_unreachable = true
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nbclient-0.10.2/tests/files/update-display-id.ipynb 
new/nbclient-0.10.4/tests/files/update-display-id.ipynb
--- old/nbclient-0.10.2/tests/files/update-display-id.ipynb     2020-02-02 
01:00:00.000000000 +0100
+++ new/nbclient-0.10.4/tests/files/update-display-id.ipynb     2020-02-02 
01:00:00.000000000 +0100
@@ -11,6 +11,8 @@
     "ip = get_ipython()\n",
     "\n",
     "from IPython.display import display\n",
+    "import IPython\n",
+    "do_minus_one = IPython.version_info >= (9, 8)\n",
     "\n",
     "\n",
     "def display_with_id(obj, display_id, update=False, 
execute_result=False):\n",
@@ -21,7 +23,7 @@
     "    content = {\"data\": data, \"metadata\": md, \"transient\": 
transient}\n",
     "    if execute_result:\n",
     "        msg_type = \"execute_result\"\n",
-    "        content[\"execution_count\"] = ip.execution_count\n",
+    "        content[\"execution_count\"] = ip.execution_count - (1 if 
do_minus_one else 0)\n",
     "    else:\n",
     "        msg_type = \"update_display_data\" if update else 
\"display_data\"\n",
     "    session.send(iopub, msg_type, content, parent=ip.parent_header)"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nbclient-0.10.2/tests/test_client.py 
new/nbclient-0.10.4/tests/test_client.py
--- old/nbclient-0.10.2/tests/test_client.py    2020-02-02 01:00:00.000000000 
+0100
+++ new/nbclient-0.10.4/tests/test_client.py    2020-02-02 01:00:00.000000000 
+0100
@@ -283,7 +283,7 @@
     actual_cells = actual["cells"]
     assert len(expected_cells) == len(actual_cells)
 
-    for expected_cell, actual_cell in zip(expected_cells, actual_cells):
+    for expected_cell, actual_cell in zip(expected_cells, actual_cells, 
strict=False):
         # Uncomment these to help debug test failures better
         # from pprint import pprint
         # pprint(expected_cell)

Reply via email to