Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package python-qtconsole for 
openSUSE:Factory checked in at 2026-03-30 18:31:27
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-qtconsole (Old)
 and      /work/SRC/openSUSE:Factory/.python-qtconsole.new.1999 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-qtconsole"

Mon Mar 30 18:31:27 2026 rev:39 rq:1343524 version:5.7.2

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-qtconsole/python-qtconsole.changes        
2026-03-14 22:24:41.542840301 +0100
+++ 
/work/SRC/openSUSE:Factory/.python-qtconsole.new.1999/python-qtconsole.changes  
    2026-03-30 18:34:47.171804907 +0200
@@ -1,0 +2,6 @@
+Sun Mar 29 19:46:48 UTC 2026 - Dirk Müller <[email protected]>
+
+- update to 5.7.2:
+  * Handle ANSI codes to show/hide cursor.
+
+-------------------------------------------------------------------

Old:
----
  qtconsole-5.7.1.tar.gz

New:
----
  qtconsole-5.7.2.tar.gz

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

Other differences:
------------------
++++++ python-qtconsole.spec ++++++
--- /var/tmp/diff_new_pack.xNkJMs/_old  2026-03-30 18:34:47.999839526 +0200
+++ /var/tmp/diff_new_pack.xNkJMs/_new  2026-03-30 18:34:48.003839692 +0200
@@ -22,7 +22,7 @@
 %bcond_with libalternatives
 %endif
 Name:           python-qtconsole
-Version:        5.7.1
+Version:        5.7.2
 Release:        0
 Summary:        Jupyter Qt console
 License:        BSD-3-Clause

++++++ qtconsole-5.7.1.tar.gz -> qtconsole-5.7.2.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/qtconsole-5.7.1/PKG-INFO new/qtconsole-5.7.2/PKG-INFO
--- old/qtconsole-5.7.1/PKG-INFO        2026-02-10 17:35:09.783546200 +0100
+++ new/qtconsole-5.7.2/PKG-INFO        2026-03-25 03:23:13.055505800 +0100
@@ -1,6 +1,6 @@
 Metadata-Version: 2.4
 Name: qtconsole
-Version: 5.7.1
+Version: 5.7.2
 Summary: Jupyter Qt console
 Home-page: http://jupyter.org
 Author: Jupyter Development Team
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/qtconsole-5.7.1/docs/source/changelog.rst 
new/qtconsole-5.7.2/docs/source/changelog.rst
--- old/qtconsole-5.7.1/docs/source/changelog.rst       2026-02-10 
17:31:21.000000000 +0100
+++ new/qtconsole-5.7.2/docs/source/changelog.rst       2026-03-25 
03:18:20.000000000 +0100
@@ -8,6 +8,13 @@
 5.7
 ~~~
 
+5.7.2
+-----
+
+`5.7.2 on GitHub <https://github.com/jupyter/qtconsole/milestones/5.7.2>`__
+
+* Handle ANSI codes to show/hide cursor.
+
 5.7.1
 -----
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/qtconsole-5.7.1/qtconsole/_version.py 
new/qtconsole-5.7.2/qtconsole/_version.py
--- old/qtconsole-5.7.1/qtconsole/_version.py   2026-02-10 17:33:43.000000000 
+0100
+++ new/qtconsole-5.7.2/qtconsole/_version.py   2026-03-25 03:20:42.000000000 
+0100
@@ -1,2 +1,2 @@
-version_info = (5, 7, 1)
+version_info = (5, 7, 2)
 __version__ = '.'.join(map(str, version_info))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/qtconsole-5.7.1/qtconsole/ansi_code_processor.py 
new/qtconsole-5.7.2/qtconsole/ansi_code_processor.py
--- old/qtconsole-5.7.1/qtconsole/ansi_code_processor.py        2025-09-07 
20:55:59.000000000 +0200
+++ new/qtconsole-5.7.2/qtconsole/ansi_code_processor.py        2026-03-25 
03:13:44.000000000 +0100
@@ -18,6 +18,11 @@
 # Constants and datatypes
 #-----------------------------------------------------------------------------
 
+# An action for cursor visibility requests
+CursorVisibilityAction = namedtuple(
+    'CursorVisibilityAction', ['action', 'visible']
+)
+
 # An action for erase requests (ED and EL commands).
 EraseAction = namedtuple('EraseAction', ['action', 'area', 'erase_to'])
 
@@ -42,7 +47,7 @@
 BackSpaceAction = namedtuple('BackSpaceAction', ['action'])
 
 # Regular expressions.
-CSI_COMMANDS = 'ABCDEFGHJKSTfmnsu'
+CSI_COMMANDS = 'ABCDEFGHJKSTfmnsuhl'
 CSI_SUBPATTERN = '\\[(.*?)([%s])' % CSI_COMMANDS
 OSC_SUBPATTERN = '\\](.*?)[\x07\x1b]'
 ANSI_PATTERN = ('\x01?\x1b(%s|%s)\x02?' % \
@@ -122,9 +127,16 @@
                 yield None
                 self.actions = []
             else:
-                params = [ param for param in groups[1].split(';') if param ]
+                params = []
                 if g0.startswith('['):
-                    # Case 1: CSI code.
+                    raw_params = groups[1] or ""
+
+                    # Handle private mode sequences
+                    if raw_params.startswith('?'):
+                        raw_params = raw_params[1:]
+
+                    params = [p for p in raw_params.split(';') if p]
+
                     try:
                         params = list(map(int, params))
                     except ValueError:
@@ -135,6 +147,7 @@
 
                 elif g0.startswith(']'):
                     # Case 2: OSC code.
+                    params = [param for param in groups[1].split(';') if param]
                     self.set_osc_code(params)
 
         raw = string[start:]
@@ -157,6 +170,13 @@
         params : sequence of integers, optional
             The parameter codes for the command.
         """
+
+        if command in ('h', 'l'):
+            if params == [25]:
+                visible = (command == 'h')
+                self.actions.append(
+                    CursorVisibilityAction('cursor-visibility', visible)
+                )
         if command == 'm':   # SGR - Select Graphic Rendition
             if params:
                 self.set_sgr_code(params)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/qtconsole-5.7.1/qtconsole/console_widget.py 
new/qtconsole-5.7.2/qtconsole/console_widget.py
--- old/qtconsole-5.7.1/qtconsole/console_widget.py     2025-08-05 
19:18:12.000000000 +0200
+++ new/qtconsole-5.7.2/qtconsole/console_widget.py     2026-03-25 
03:13:44.000000000 +0100
@@ -588,6 +588,7 @@
         keep_input : bool, optional (default True)
             If set, restores the old input buffer if a new prompt is written.
         """
+        self._set_cursor_visible(True)
         if self._executing:
             self._control.clear()
         else:
@@ -2257,6 +2258,8 @@
                                 QtGui.QTextCursor.MoveAnchor,
                             )
                             cursor.insertText("\n")
+                    elif act.action == 'cursor-visibility':
+                        self._set_cursor_visible(act.visible)
 
                 # simulate replacement mode
                 if substring is not None:
@@ -2658,3 +2661,6 @@
         """
         menu = self._context_menu_make(pos)
         menu.exec_(self._control.mapToGlobal(pos))
+
+    def _set_cursor_visible(self, visible):
+        self._control.setCursorWidth(1 if visible else 0)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/qtconsole-5.7.1/qtconsole/tests/test_ansi_code_processor.py 
new/qtconsole-5.7.2/qtconsole/tests/test_ansi_code_processor.py
--- old/qtconsole-5.7.1/qtconsole/tests/test_ansi_code_processor.py     
2024-10-29 00:45:58.000000000 +0100
+++ new/qtconsole-5.7.2/qtconsole/tests/test_ansi_code_processor.py     
2026-03-25 03:13:44.000000000 +0100
@@ -224,7 +224,28 @@
             else:
                 self.fail('Too many substrings.')
         self.assertEqual(i, 3, 'Too few substrings.')
+    
+    def test_cursor_visibility(self):
+        """Test for the ANSI commands for cursor visibility (?25h / ?25l)
+        """
+        # This line hides the cursor, then shows it again.
+        string = '\x1b[?25l\x1b[?25h'
+        i = -1
 
+        for i, substring in enumerate(self.processor.split_string(string)):
+            self.assertEqual(len(self.processor.actions), 1)
+
+            action = self.processor.actions[0]
+            self.assertEqual(action.action, 'cursor-visibility')
+
+            if i == 0:
+                self.assertFalse(action.visible)
+            elif i == 1:
+                self.assertTrue(action.visible)
+            else:
+                self.fail('Too many substrings.')
+
+        self.assertEqual(i, 1, 'Too few substrings.')
 
 if __name__ == '__main__':
     unittest.main()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/qtconsole-5.7.1/qtconsole.egg-info/PKG-INFO 
new/qtconsole-5.7.2/qtconsole.egg-info/PKG-INFO
--- old/qtconsole-5.7.1/qtconsole.egg-info/PKG-INFO     2026-02-10 
17:35:09.000000000 +0100
+++ new/qtconsole-5.7.2/qtconsole.egg-info/PKG-INFO     2026-03-25 
03:23:12.000000000 +0100
@@ -1,6 +1,6 @@
 Metadata-Version: 2.4
 Name: qtconsole
-Version: 5.7.1
+Version: 5.7.2
 Summary: Jupyter Qt console
 Home-page: http://jupyter.org
 Author: Jupyter Development Team

Reply via email to