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 2023-08-07 15:28:56
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-ipykernel (Old)
 and      /work/SRC/openSUSE:Factory/.python-ipykernel.new.22712 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-ipykernel"

Mon Aug  7 15:28:56 2023 rev:39 rq:1102582 version:6.25.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-ipykernel/python-ipykernel.changes        
2023-07-04 15:22:32.542264197 +0200
+++ 
/work/SRC/openSUSE:Factory/.python-ipykernel.new.22712/python-ipykernel.changes 
    2023-08-07 15:29:01.448289243 +0200
@@ -1,0 +2,20 @@
+Sat Aug  5 16:08:00 UTC 2023 - Arun Persaud <[email protected]>
+
+- update to version 6.25.0:
+  * Enhancements made
+    - feat: let display hook handle clear_output #1135
+      (@maartenbreddels)
+  * Bugs fixed
+    - Merge connection info into existing connection file if it
+      already exists #1133 (@jasongrout)
+  * Maintenance and upkeep improvements
+    - Clean up lint #1134 (@blink1073)
+
+- change from version 6.24.0:
+  * New features added
+    - Let get_parent decide the channel to get parent header
+      #1128 (@dby-tmwctw)
+  * Bugs fixed
+    - Bugfix: binary stdout/stderr handling #1129 (@arieleiz)
+
+-------------------------------------------------------------------

Old:
----
  ipykernel-6.23.3.tar.gz

New:
----
  ipykernel-6.25.0.tar.gz

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

Other differences:
------------------
++++++ python-ipykernel.spec ++++++
--- /var/tmp/diff_new_pack.dlT8ea/_old  2023-08-07 15:29:02.160293664 +0200
+++ /var/tmp/diff_new_pack.dlT8ea/_new  2023-08-07 15:29:02.164293689 +0200
@@ -18,7 +18,7 @@
 
 %{?sle15_python_module_pythons}
 Name:           python-ipykernel
-Version:        6.23.3
+Version:        6.25.0
 Release:        0
 Summary:        IPython Kernel for Jupyter
 License:        BSD-3-Clause

++++++ ipykernel-6.23.3.tar.gz -> ipykernel-6.25.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ipykernel-6.23.3/.github/workflows/ci.yml 
new/ipykernel-6.25.0/.github/workflows/ci.yml
--- old/ipykernel-6.23.3/.github/workflows/ci.yml       2020-02-02 
01:00:00.000000000 +0100
+++ new/ipykernel-6.25.0/.github/workflows/ci.yml       2020-02-02 
01:00:00.000000000 +0100
@@ -137,7 +137,7 @@
           pip freeze
 
       - name: Run the tests
-        timeout-minutes: 10
+        timeout-minutes: 15
         run: pytest -W default -vv || pytest --vv -W default --lf
 
   test_miniumum_versions:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ipykernel-6.23.3/.pre-commit-config.yaml 
new/ipykernel-6.25.0/.pre-commit-config.yaml
--- old/ipykernel-6.23.3/.pre-commit-config.yaml        2020-02-02 
01:00:00.000000000 +0100
+++ new/ipykernel-6.25.0/.pre-commit-config.yaml        2020-02-02 
01:00:00.000000000 +0100
@@ -21,7 +21,7 @@
       - id: trailing-whitespace
 
   - repo: https://github.com/python-jsonschema/check-jsonschema
-    rev: 0.23.1
+    rev: 0.23.2
     hooks:
       - id: check-github-workflows
 
@@ -35,8 +35,8 @@
     hooks:
       - id: black
 
-  - repo: https://github.com/charliermarsh/ruff-pre-commit
-    rev: v0.0.270
+  - repo: https://github.com/astral-sh/ruff-pre-commit
+    rev: v0.0.278
     hooks:
       - id: ruff
         args: ["--fix"]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ipykernel-6.23.3/CHANGELOG.md 
new/ipykernel-6.25.0/CHANGELOG.md
--- old/ipykernel-6.23.3/CHANGELOG.md   2020-02-02 01:00:00.000000000 +0100
+++ new/ipykernel-6.25.0/CHANGELOG.md   2020-02-02 01:00:00.000000000 +0100
@@ -2,6 +2,48 @@
 
 <!-- <START NEW CHANGELOG ENTRY> -->
 
+## 6.25.0
+
+([Full 
Changelog](https://github.com/ipython/ipykernel/compare/v6.24.0...09c3c359addf60e26078207990ad2ca932cf2613))
+
+### Enhancements made
+
+- feat: let display hook handle clear_output 
[#1135](https://github.com/ipython/ipykernel/pull/1135) 
([@maartenbreddels](https://github.com/maartenbreddels))
+
+### Bugs fixed
+
+- Merge connection info into existing connection file if it already exists 
[#1133](https://github.com/ipython/ipykernel/pull/1133) 
([@jasongrout](https://github.com/jasongrout))
+
+### Maintenance and upkeep improvements
+
+- Clean up lint [#1134](https://github.com/ipython/ipykernel/pull/1134) 
([@blink1073](https://github.com/blink1073))
+
+### Contributors to this release
+
+([GitHub contributors page for this 
release](https://github.com/ipython/ipykernel/graphs/contributors?from=2023-07-03&to=2023-07-25&type=c))
+
+[@blink1073](https://github.com/search?q=repo%3Aipython%2Fipykernel+involves%3Ablink1073+updated%3A2023-07-03..2023-07-25&type=Issues)
 | 
[@fecet](https://github.com/search?q=repo%3Aipython%2Fipykernel+involves%3Afecet+updated%3A2023-07-03..2023-07-25&type=Issues)
 | 
[@jasongrout](https://github.com/search?q=repo%3Aipython%2Fipykernel+involves%3Ajasongrout+updated%3A2023-07-03..2023-07-25&type=Issues)
 | 
[@maartenbreddels](https://github.com/search?q=repo%3Aipython%2Fipykernel+involves%3Amaartenbreddels+updated%3A2023-07-03..2023-07-25&type=Issues)
 | 
[@pre-commit-ci](https://github.com/search?q=repo%3Aipython%2Fipykernel+involves%3Apre-commit-ci+updated%3A2023-07-03..2023-07-25&type=Issues)
+
+<!-- <END NEW CHANGELOG ENTRY> -->
+
+## 6.24.0
+
+([Full 
Changelog](https://github.com/ipython/ipykernel/compare/v6.23.3...0c1db099a32c4cb28bfb4b3508bb808d8b4092e7))
+
+### New features added
+
+- Let get_parent decide the channel to get parent header 
[#1128](https://github.com/ipython/ipykernel/pull/1128) 
([@dby-tmwctw](https://github.com/dby-tmwctw))
+
+### Bugs fixed
+
+- Bugfix: binary stdout/stderr handling 
[#1129](https://github.com/ipython/ipykernel/pull/1129) 
([@arieleiz](https://github.com/arieleiz))
+
+### Contributors to this release
+
+([GitHub contributors page for this 
release](https://github.com/ipython/ipykernel/graphs/contributors?from=2023-06-23&to=2023-07-03&type=c))
+
+[@arieleiz](https://github.com/search?q=repo%3Aipython%2Fipykernel+involves%3Aarieleiz+updated%3A2023-06-23..2023-07-03&type=Issues)
 | 
[@dby-tmwctw](https://github.com/search?q=repo%3Aipython%2Fipykernel+involves%3Adby-tmwctw+updated%3A2023-06-23..2023-07-03&type=Issues)
 | 
[@minrk](https://github.com/search?q=repo%3Aipython%2Fipykernel+involves%3Aminrk+updated%3A2023-06-23..2023-07-03&type=Issues)
+
 ## 6.23.3
 
 ([Full 
Changelog](https://github.com/ipython/ipykernel/compare/v6.23.2...ea3e6479aca70f87282ec0b60412f2cfba59eb35))
@@ -16,8 +58,6 @@
 
 
[@blink1073](https://github.com/search?q=repo%3Aipython%2Fipykernel+involves%3Ablink1073+updated%3A2023-06-12..2023-06-23&type=Issues)
 | 
[@fecet](https://github.com/search?q=repo%3Aipython%2Fipykernel+involves%3Afecet+updated%3A2023-06-12..2023-06-23&type=Issues)
 
-<!-- <END NEW CHANGELOG ENTRY> -->
-
 ## 6.23.2
 
 ([Full 
Changelog](https://github.com/ipython/ipykernel/compare/v6.23.1...112ca66da0ee8156b983094b2c8e2926ed63cfcb))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ipykernel-6.23.3/PKG-INFO 
new/ipykernel-6.25.0/PKG-INFO
--- old/ipykernel-6.23.3/PKG-INFO       2020-02-02 01:00:00.000000000 +0100
+++ new/ipykernel-6.25.0/PKG-INFO       2020-02-02 01:00:00.000000000 +0100
@@ -1,6 +1,6 @@
 Metadata-Version: 2.1
 Name: ipykernel
-Version: 6.23.3
+Version: 6.25.0
 Summary: IPython Kernel for Jupyter
 Project-URL: Homepage, https://ipython.org
 Author-email: IPython Development Team <[email protected]>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ipykernel-6.23.3/ipykernel/_version.py 
new/ipykernel-6.25.0/ipykernel/_version.py
--- old/ipykernel-6.23.3/ipykernel/_version.py  2020-02-02 01:00:00.000000000 
+0100
+++ new/ipykernel-6.25.0/ipykernel/_version.py  2020-02-02 01:00:00.000000000 
+0100
@@ -5,7 +5,7 @@
 from typing import List
 
 # Version string must appear intact for hatch versioning
-__version__ = "6.23.3"
+__version__ = "6.25.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.23.3/ipykernel/comm/comm.py 
new/ipykernel-6.25.0/ipykernel/comm/comm.py
--- old/ipykernel-6.23.3/ipykernel/comm/comm.py 2020-02-02 01:00:00.000000000 
+0100
+++ new/ipykernel-6.25.0/ipykernel/comm/comm.py 2020-02-02 01:00:00.000000000 
+0100
@@ -3,7 +3,6 @@
 # Copyright (c) IPython Development Team.
 # Distributed under the terms of the Modified BSD License.
 
-import threading
 import uuid
 from typing import Optional
 from warnings import warn
@@ -12,7 +11,6 @@
 import traitlets.config
 from traitlets import Bool, Bytes, Instance, Unicode, default
 
-from ipykernel.control import CONTROL_THREAD_NAME
 from ipykernel.jsonutil import json_clean
 from ipykernel.kernelbase import Kernel
 
@@ -32,11 +30,6 @@
         metadata = {} if metadata is None else metadata
         content = json_clean(dict(data=data, comm_id=self.comm_id, **keys))
 
-        if threading.current_thread().name == CONTROL_THREAD_NAME:
-            channel_from_which_to_get_parent_header = "control"
-        else:
-            channel_from_which_to_get_parent_header = "shell"
-
         if self.kernel is None:
             self.kernel = Kernel.instance()
 
@@ -45,7 +38,7 @@
             msg_type,
             content,
             metadata=json_clean(metadata),
-            
parent=self.kernel.get_parent(channel_from_which_to_get_parent_header),
+            parent=self.kernel.get_parent(),
             ident=self.topic,
             buffers=buffers,
         )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ipykernel-6.23.3/ipykernel/debugger.py 
new/ipykernel-6.25.0/ipykernel/debugger.py
--- old/ipykernel-6.23.3/ipykernel/debugger.py  2020-02-02 01:00:00.000000000 
+0100
+++ new/ipykernel-6.25.0/ipykernel/debugger.py  2020-02-02 01:00:00.000000000 
+0100
@@ -657,7 +657,7 @@
                 }
             )
             if reply["success"]:
-                repr_data, repr_metadata = eval(reply["body"]["result"], {}, 
{})
+                repr_data, repr_metadata = eval(reply["body"]["result"], {}, 
{})  # noqa[S307]
 
         body = {
             "data": repr_data,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ipykernel-6.23.3/ipykernel/iostream.py 
new/ipykernel-6.25.0/ipykernel/iostream.py
--- old/ipykernel-6.23.3/ipykernel/iostream.py  2020-02-02 01:00:00.000000000 
+0100
+++ new/ipykernel-6.25.0/ipykernel/iostream.py  2020-02-02 01:00:00.000000000 
+0100
@@ -29,6 +29,8 @@
 MASTER = 0
 CHILD = 1
 
+PIPE_BUFFER_SIZE = 1000
+
 # -----------------------------------------------------------------------------
 # IO classes
 # -----------------------------------------------------------------------------
@@ -367,11 +369,11 @@
         """
 
         try:
-            bts = os.read(self._fid, 1000)
+            bts = os.read(self._fid, PIPE_BUFFER_SIZE)
             while bts and self._should_watch:
-                self.write(bts.decode())
+                self.write(bts.decode(errors='replace'))
                 os.write(self._original_stdstream_copy, bts)
-                bts = os.read(self._fid, 1000)
+                bts = os.read(self._fid, PIPE_BUFFER_SIZE)
         except Exception:
             self._exc = sys.exc_info()
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ipykernel-6.23.3/ipykernel/ipkernel.py 
new/ipykernel-6.25.0/ipykernel/ipkernel.py
--- old/ipykernel-6.23.3/ipykernel/ipkernel.py  2020-02-02 01:00:00.000000000 
+0100
+++ new/ipykernel-6.25.0/ipykernel/ipkernel.py  2020-02-02 01:00:00.000000000 
+0100
@@ -675,7 +675,6 @@
                 "error",
                 reply_content,
                 ident=self._topic("error"),
-                channel="shell",
             )
             self.log.info("Exception in apply request:\n%s", 
"\n".join(reply_content["traceback"]))
             result_buf = []
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ipykernel-6.23.3/ipykernel/kernelapp.py 
new/ipykernel-6.25.0/ipykernel/kernelapp.py
--- old/ipykernel-6.23.3/ipykernel/kernelapp.py 2020-02-02 01:00:00.000000000 
+0100
+++ new/ipykernel-6.25.0/ipykernel/kernelapp.py 2020-02-02 01:00:00.000000000 
+0100
@@ -24,7 +24,6 @@
 )
 from IPython.core.profiledir import ProfileDir
 from IPython.core.shellapp import InteractiveShellApp, shell_aliases, 
shell_flags
-from jupyter_client import write_connection_file
 from jupyter_client.connect import ConnectionFileMixin
 from jupyter_client.session import Session, session_aliases, session_flags
 from jupyter_core.paths import jupyter_runtime_dir
@@ -44,10 +43,11 @@
 from traitlets.utils.importstring import import_item
 from zmq.eventloop.zmqstream import ZMQStream
 
-from .control import ControlThread
-from .heartbeat import Heartbeat
+from .connect import get_connection_info, write_connection_file
 
 # local imports
+from .control import ControlThread
+from .heartbeat import Heartbeat
 from .iostream import IOPubThread
 from .ipkernel import IPythonKernel
 from .parentpoller import ParentPollerUnix, ParentPollerWindows
@@ -260,12 +260,7 @@
     def write_connection_file(self):
         """write connection info to JSON file"""
         cf = self.abs_connection_file
-        if os.path.exists(cf):
-            self.log.debug("Connection file %s already exists", cf)
-            return
-        self.log.debug("Writing connection file: %s", cf)
-        write_connection_file(
-            cf,
+        connection_info = dict(
             ip=self.ip,
             key=self.session.key,
             transport=self.transport,
@@ -275,6 +270,19 @@
             iopub_port=self.iopub_port,
             control_port=self.control_port,
         )
+        if os.path.exists(cf):
+            # If the file exists, merge our info into it. For example, if the
+            # original file had port number 0, we update with the actual port
+            # used.
+            existing_connection_info = get_connection_info(cf, unpack=True)
+            connection_info = dict(existing_connection_info, **connection_info)
+            if connection_info == existing_connection_info:
+                self.log.debug("Connection file %s with current information 
already exists", cf)
+                return
+
+        self.log.debug("Writing connection file: %s", cf)
+
+        write_connection_file(cf, **connection_info)
 
     def cleanup_connection_file(self):
         """Clean up our connection file."""
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ipykernel-6.23.3/ipykernel/kernelbase.py 
new/ipykernel-6.25.0/ipykernel/kernelbase.py
--- old/ipykernel-6.23.3/ipykernel/kernelbase.py        2020-02-02 
01:00:00.000000000 +0100
+++ new/ipykernel-6.25.0/ipykernel/kernelbase.py        2020-02-02 
01:00:00.000000000 +0100
@@ -11,6 +11,7 @@
 import os
 import socket
 import sys
+import threading
 import time
 import typing as t
 import uuid
@@ -19,6 +20,8 @@
 from functools import partial
 from signal import SIGINT, SIGTERM, Signals, default_int_handler, signal
 
+from .control import CONTROL_THREAD_NAME
+
 if sys.platform != "win32":
     from signal import SIGKILL
 else:
@@ -187,7 +190,7 @@
             DeprecationWarning,
             stacklevel=2,
         )
-        return self.get_parent(channel="shell")
+        return self.get_parent()
 
     # Time to sleep after flushing the stdout/err buffers in each execute
     # cycle.  While this introduces a hard limit on the minimal latency of the
@@ -598,7 +601,7 @@
             self.iopub_socket,
             "debug_event",
             event,
-            parent=self.get_parent("control"),
+            parent=self.get_parent(),
             ident=self._topic("debug_event"),
         )
 
@@ -614,7 +617,7 @@
         self._parent_ident[channel] = ident
         self._parents[channel] = parent
 
-    def get_parent(self, channel="shell"):
+    def get_parent(self, channel=None):
         """Get the parent request associated with a channel.
 
         .. versionadded:: 6
@@ -629,6 +632,14 @@
         message : dict
             the parent message for the most recent request on the channel.
         """
+
+        if channel is None:
+            # If a channel is not specified, get information from current 
thread
+            if threading.current_thread().name == CONTROL_THREAD_NAME:
+                channel = "control"
+            else:
+                channel = "shell"
+
         return self._parents.get(channel, {})
 
     def send_response(
@@ -641,7 +652,7 @@
         track=False,
         header=None,
         metadata=None,
-        channel="shell",
+        channel=None,
     ):
         """Send a response to the message we're currently processing.
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ipykernel-6.23.3/ipykernel/pickleutil.py 
new/ipykernel-6.25.0/ipykernel/pickleutil.py
--- old/ipykernel-6.23.3/ipykernel/pickleutil.py        2020-02-02 
01:00:00.000000000 +0100
+++ new/ipykernel-6.25.0/ipykernel/pickleutil.py        2020-02-02 
01:00:00.000000000 +0100
@@ -179,7 +179,7 @@
         if g is None:
             g = {}
 
-        return eval(self.name, g)
+        return eval(self.name, g)  # noqa[S307]
 
 
 class CannedCell(CannedObject):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/ipykernel-6.23.3/ipykernel/tests/test_ipkernel_direct.py 
new/ipykernel-6.25.0/ipykernel/tests/test_ipkernel_direct.py
--- old/ipykernel-6.23.3/ipykernel/tests/test_ipkernel_direct.py        
2020-02-02 01:00:00.000000000 +0100
+++ new/ipykernel-6.25.0/ipykernel/tests/test_ipkernel_direct.py        
2020-02-02 01:00:00.000000000 +0100
@@ -20,7 +20,7 @@
     __dict__ = {}
 
 
-async def test_properities(ipkernel: IPythonKernel) -> None:
+async def test_properties(ipkernel: IPythonKernel) -> None:
     ipkernel.user_module = user_mod()
     ipkernel.user_ns = {}
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ipykernel-6.23.3/ipykernel/tests/test_kernelapp.py 
new/ipykernel-6.25.0/ipykernel/tests/test_kernelapp.py
--- old/ipykernel-6.23.3/ipykernel/tests/test_kernelapp.py      2020-02-02 
01:00:00.000000000 +0100
+++ new/ipykernel-6.25.0/ipykernel/tests/test_kernelapp.py      2020-02-02 
01:00:00.000000000 +0100
@@ -1,13 +1,17 @@
+import json
 import os
 import threading
 import time
 from unittest.mock import patch
 
 import pytest
+from jupyter_core.paths import secure_write
+from traitlets.config.loader import Config
 
 from ipykernel.kernelapp import IPKernelApp
 
 from .conftest import MockKernel
+from .utils import TemporaryWorkingDirectory
 
 try:
     import trio
@@ -47,6 +51,73 @@
     app.close()
 
 
[email protected](os.name == "nt", reason="permission errors on windows")
+def test_merge_connection_file():
+    cfg = Config()
+    with TemporaryWorkingDirectory() as d:
+        cfg.ProfileDir.location = d
+        cf = os.path.join(d, "kernel.json")
+        initial_connection_info = {
+            "ip": "*",
+            "transport": "tcp",
+            "shell_port": 0,
+            "hb_port": 0,
+            "iopub_port": 0,
+            "stdin_port": 0,
+            "control_port": 53555,
+            "key": "abc123",
+            "signature_scheme": "hmac-sha256",
+            "kernel_name": "My Kernel",
+        }
+        # We cannot use connect.write_connection_file since
+        # it replaces port number 0 with a random port
+        # and we want IPKernelApp to do that replacement.
+        with secure_write(cf) as f:
+            json.dump(initial_connection_info, f)
+        assert os.path.exists(cf)
+
+        app = IPKernelApp(config=cfg, connection_file=cf)
+
+        # Calling app.initialize() does not work in the test, so we call the 
relevant functions that initialize() calls
+        # We must pass in an empty argv, otherwise the default is to try to 
parse the test runner's argv
+        super(IPKernelApp, app).initialize(argv=[""])
+        app.init_connection_file()
+        app.init_sockets()
+        app.init_heartbeat()
+        app.write_connection_file()
+
+        # Initialize should have merged the actual connection info
+        # with the connection info in the file
+        assert cf == app.abs_connection_file
+        assert os.path.exists(cf)
+
+        with open(cf) as f:
+            new_connection_info = json.load(f)
+
+        # ports originally set as 0 have been replaced
+        for port in ("shell", "hb", "iopub", "stdin"):
+            key = f"{port}_port"
+            # We initially had the port as 0
+            assert initial_connection_info[key] == 0
+            # the port is not 0 now
+            assert new_connection_info[key] > 0
+            # the port matches the port the kernel actually used
+            assert new_connection_info[key] == getattr(app, key), f"{key}"
+            del new_connection_info[key]
+            del initial_connection_info[key]
+
+        # The wildcard ip address was also replaced
+        assert new_connection_info["ip"] != "*"
+        del new_connection_info["ip"]
+        del initial_connection_info["ip"]
+
+        # everything else in the connection file is the same
+        assert initial_connection_info == new_connection_info
+
+        app.close()
+        os.remove(cf)
+
+
 @pytest.mark.skipif(trio is None, reason="requires trio")
 def test_trio_loop():
     app = IPKernelApp(trio_loop=True)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ipykernel-6.23.3/ipykernel/zmqshell.py 
new/ipykernel-6.25.0/ipykernel/zmqshell.py
--- old/ipykernel-6.23.3/ipykernel/zmqshell.py  2020-02-02 01:00:00.000000000 
+0100
+++ new/ipykernel-6.25.0/ipykernel/zmqshell.py  2020-02-02 01:00:00.000000000 
+0100
@@ -144,11 +144,17 @@
         """
         content = dict(wait=wait)
         self._flush_streams()
+        msg = self.session.msg("clear_output", json_clean(content), 
parent=self.parent_header)
+
+        # see publish() for details on how this works
+        for hook in self._hooks:
+            msg = hook(msg)
+            if msg is None:
+                return
+
         self.session.send(
             self.pub_socket,
-            "clear_output",
-            content,
-            parent=self.parent_header,
+            msg,
             ident=self.topic,
         )
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ipykernel-6.23.3/ipykernel_launcher.py 
new/ipykernel-6.25.0/ipykernel_launcher.py
--- old/ipykernel-6.23.3/ipykernel_launcher.py  2020-02-02 01:00:00.000000000 
+0100
+++ new/ipykernel-6.25.0/ipykernel_launcher.py  2020-02-02 01:00:00.000000000 
+0100
@@ -9,7 +9,7 @@
 if __name__ == "__main__":
     # Remove the CWD from sys.path while we load stuff.
     # This is added back by InteractiveShellApp.init_path()
-    if sys.path[0] == "":  # noqa
+    if sys.path[0] == "":
         del sys.path[0]
 
     from ipykernel import kernelapp as app
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ipykernel-6.23.3/pyproject.toml 
new/ipykernel-6.25.0/pyproject.toml
--- old/ipykernel-6.23.3/pyproject.toml 2020-02-02 01:00:00.000000000 +0100
+++ new/ipykernel-6.25.0/pyproject.toml 2020-02-02 01:00:00.000000000 +0100
@@ -117,7 +117,7 @@
 test = "mypy --install-types --non-interactive {args:.}"
 
 [tool.hatch.envs.lint]
-dependencies = ["black==23.3.0", "mdformat>0.7", "ruff==0.0.270"]
+dependencies = ["black==23.3.0", "mdformat>0.7", "ruff==0.0.278"]
 detached = true
 [tool.hatch.envs.lint.scripts]
 style = [
@@ -278,6 +278,8 @@
   "SIM105",
   # S110 `try`-`except`-`pass` detected
   "S110",
+  # RUF012 Mutable class attributes should be annotated with `typing.ClassVar`
+  "RUF012",
 ]
 unfixable = [
   # Don't touch print statements

Reply via email to