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 2022-04-11 23:48:46 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-qtconsole (Old) and /work/SRC/openSUSE:Factory/.python-qtconsole.new.1900 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-qtconsole" Mon Apr 11 23:48:46 2022 rev:23 rq:968071 version:5.3.0 Changes: -------- --- /work/SRC/openSUSE:Factory/python-qtconsole/python-qtconsole.changes 2022-02-04 21:52:02.715296741 +0100 +++ /work/SRC/openSUSE:Factory/.python-qtconsole.new.1900/python-qtconsole.changes 2022-04-11 23:50:12.106414540 +0200 @@ -1,0 +2,9 @@ +Sat Apr 9 22:04:33 UTC 2022 - Ben Greiner <c...@bnavigator.de> + +- Update to version 5.3.0 + * Add support for PyQt6. + * Don't show spurious blank lines when running input statements. + * Fix showing Latex images with dark background colors. + * Drop support for Python 3.6 + +------------------------------------------------------------------- Old: ---- qtconsole-5.2.2.tar.gz New: ---- qtconsole-5.3.0.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-qtconsole.spec ++++++ --- /var/tmp/diff_new_pack.rFkT8c/_old 2022-04-11 23:50:12.694407832 +0200 +++ /var/tmp/diff_new_pack.rFkT8c/_new 2022-04-11 23:50:12.698407786 +0200 @@ -24,7 +24,7 @@ %bcond_with libalternatives %endif Name: python-qtconsole -Version: 5.2.2 +Version: 5.3.0 Release: 0 Summary: Jupyter Qt console License: BSD-3-Clause @@ -32,6 +32,7 @@ URL: https://github.com/jupyter/qtconsole Source0: https://files.pythonhosted.org/packages/source/q/qtconsole/qtconsole-%{version}.tar.gz Source100: python-qtconsole-rpmlintrc +BuildRequires: %{python_module base >= 3.7} BuildRequires: %{python_module jupyter-core} BuildRequires: %{python_module setuptools} BuildRequires: desktop-file-utils @@ -45,7 +46,7 @@ Requires: (python-qt5 or python-pyside2) Requires: jupyter-qtconsole = %{version} Requires: python-Pygments -Requires: python-QtPy +Requires: python-QtPy >= 2.0.1 Requires: python-ipykernel >= 4.1 Requires: python-ipython_genutils Requires: python-jupyter-client >= 4.1 @@ -63,7 +64,7 @@ %endif # SECTION test requirements BuildRequires: %{python_module Pygments} -BuildRequires: %{python_module QtPy} +BuildRequires: %{python_module QtPy >= 2.0.1} BuildRequires: %{python_module flaky} BuildRequires: %{python_module ipykernel >= 4.1} BuildRequires: %{python_module ipython_genutils} ++++++ qtconsole-5.2.2.tar.gz -> qtconsole-5.3.0.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtconsole-5.2.2/CONTRIBUTING.md new/qtconsole-5.3.0/CONTRIBUTING.md --- old/qtconsole-5.2.2/CONTRIBUTING.md 2020-10-24 17:40:21.000000000 +0200 +++ new/qtconsole-5.3.0/CONTRIBUTING.md 2022-03-27 20:25:58.000000000 +0200 @@ -11,7 +11,7 @@ ``` conda create -n qtdev python=3 conda activate qtdev -conda install qtpy pyqt +conda env update --file requirements/environment.yml ``` To run after the changes have been made to source (preferred): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtconsole-5.2.2/PKG-INFO new/qtconsole-5.3.0/PKG-INFO --- old/qtconsole-5.2.2/PKG-INFO 2021-12-13 18:55:15.354424500 +0100 +++ new/qtconsole-5.3.0/PKG-INFO 2022-03-28 19:04:57.685921200 +0200 @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: qtconsole -Version: 5.2.2 +Version: 5.3.0 Summary: Jupyter Qt console Home-page: http://jupyter.org Author: Jupyter Development Team @@ -17,11 +17,11 @@ Classifier: License :: OSI Approved :: BSD License Classifier: Programming Language :: Python Classifier: Programming Language :: Python :: 3 -Classifier: Programming Language :: Python :: 3.6 Classifier: Programming Language :: Python :: 3.7 Classifier: Programming Language :: Python :: 3.8 Classifier: Programming Language :: Python :: 3.9 -Requires-Python: >= 3.6 +Classifier: Programming Language :: Python :: 3.10 +Requires-Python: >= 3.7 Description-Content-Type: text/markdown Provides-Extra: test Provides-Extra: doc diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtconsole-5.2.2/docs/source/changelog.rst new/qtconsole-5.3.0/docs/source/changelog.rst --- old/qtconsole-5.2.2/docs/source/changelog.rst 2021-12-13 18:53:18.000000000 +0100 +++ new/qtconsole-5.3.0/docs/source/changelog.rst 2022-03-28 19:03:21.000000000 +0200 @@ -3,6 +3,28 @@ Changes in Jupyter Qt console ============================= +.. _5.3: + +5.3 +~~~ + +5.3.0 +----- + +`5.3.0 on GitHub <https://github.com/jupyter/qtconsole/milestones/5.3.0>`__ + +Additions ++++++++++ + +* Add support for PyQt6. + +Changes ++++++++ + +* Don't show spurious blank lines when running input statements. +* Fix showing Latex images with dark background colors. +* Drop support for Python 3.6 + .. _5.2: 5.2 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtconsole-5.2.2/qtconsole/_version.py new/qtconsole-5.3.0/qtconsole/_version.py --- old/qtconsole-5.2.2/qtconsole/_version.py 2021-12-13 18:54:03.000000000 +0100 +++ new/qtconsole-5.3.0/qtconsole/_version.py 2022-03-28 19:04:07.000000000 +0200 @@ -1,2 +1,2 @@ -version_info = (5, 2, 2) +version_info = (5, 3, 0) __version__ = '.'.join(map(str, version_info)) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtconsole-5.2.2/qtconsole/call_tip_widget.py new/qtconsole-5.3.0/qtconsole/call_tip_widget.py --- old/qtconsole-5.2.2/qtconsole/call_tip_widget.py 2021-11-23 17:22:26.000000000 +0100 +++ new/qtconsole-5.3.0/qtconsole/call_tip_widget.py 2022-03-27 20:25:58.000000000 +0200 @@ -3,6 +3,7 @@ from unicodedata import category # System library imports +from qtpy import QT6 from qtpy import QtCore, QtGui, QtWidgets @@ -171,7 +172,10 @@ # location based trying to minimize the area that goes off-screen. padding = 3 # Distance in pixels between cursor bounds and tip box. cursor_rect = text_edit.cursorRect(cursor) - screen_rect = QtWidgets.QApplication.instance().desktop().screenGeometry(text_edit) + if QT6: + screen_rect = text_edit.screen().geometry() + else: + screen_rect = QtWidgets.QApplication.instance().desktop().screenGeometry(text_edit) point = text_edit.mapToGlobal(cursor_rect.bottomRight()) point.setY(point.y() + padding) tip_height = self.size().height() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtconsole-5.2.2/qtconsole/completion_widget.py new/qtconsole-5.3.0/qtconsole/completion_widget.py --- old/qtconsole-5.2.2/qtconsole/completion_widget.py 2021-12-13 18:48:13.000000000 +0100 +++ new/qtconsole-5.3.0/qtconsole/completion_widget.py 2022-03-27 20:25:58.000000000 +0200 @@ -3,6 +3,7 @@ import os import sys +from qtpy import QT6 from qtpy import QtCore, QtGui, QtWidgets @@ -132,7 +133,10 @@ self.addItem(list_item) height = self.sizeHint().height() - screen_rect = QtWidgets.QApplication.desktop().availableGeometry(self) + if QT6: + screen_rect = self.screen().availableGeometry() + else: + screen_rect = QtWidgets.QApplication.desktop().availableGeometry(self) if (screen_rect.size().height() + screen_rect.y() - point.y() - height < 0): point = text_edit.mapToGlobal(text_edit.cursorRect().topRight()) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtconsole-5.2.2/qtconsole/console_widget.py new/qtconsole-5.3.0/qtconsole/console_widget.py --- old/qtconsole-5.2.2/qtconsole/console_widget.py 2021-11-23 17:22:26.000000000 +0100 +++ new/qtconsole-5.3.0/qtconsole/console_widget.py 2022-03-28 18:38:07.000000000 +0200 @@ -13,13 +13,16 @@ from unicodedata import category import webbrowser +from qtpy import QT6 from qtpy import QtCore, QtGui, QtPrintSupport, QtWidgets -from traitlets.config.configurable import LoggingConfigurable from qtconsole.rich_text import HtmlExporter from qtconsole.util import MetaQObjectHasTraits, get_font, superQ + from ipython_genutils.text import columnize +from traitlets.config.configurable import LoggingConfigurable from traitlets import Bool, Enum, Integer, Unicode + from .ansi_code_processor import QtAnsiCodeProcessor from .completion_widget import CompletionWidget from .completion_html import CompletionHtml @@ -432,7 +435,7 @@ # Make middle-click paste safe. elif getattr(event, 'button', False) and \ etype == QtCore.QEvent.MouseButtonRelease and \ - event.button() == QtCore.Qt.MidButton and \ + event.button() == QtCore.Qt.MiddleButton and \ obj == self._control.viewport(): cursor = self._control.cursorForPosition(event.pos()) self._control.setTextCursor(cursor) @@ -465,7 +468,11 @@ elif etype == QtCore.QEvent.MouseMove: anchor = self._control.anchorAt(event.pos()) - QtWidgets.QToolTip.showText(event.globalPos(), anchor) + if QT6: + pos = event.globalPosition().toPoint() + else: + pos = event.globalPos() + QtWidgets.QToolTip.showText(pos, anchor) return super().eventFilter(obj, event) @@ -1659,8 +1666,9 @@ t = time.time() self._insert_plain_text(self._get_end_cursor(), text, flush=True) # Set the flush interval to equal the maximum time to update text. - self._pending_text_flush_interval.setInterval(max(100, - (time.time()-t)*1000)) + self._pending_text_flush_interval.setInterval( + int(max(100, (time.time() - t) * 1000)) + ) def _format_as_columns(self, items, separator=' '): """ Transform a list of strings into a single string with columns. @@ -2408,7 +2416,12 @@ if password: self._show_prompt('Warning: QtConsole does not support password mode, '\ 'the text you type will be visible.', newline=True) - self._show_prompt(prompt, newline=False) + + if 'ipdb' not in prompt.lower(): + # This is a prompt that asks for input from the user. + self._show_prompt(prompt, newline=False, separator=False) + else: + self._show_prompt(prompt, newline=False) if callback is None: self._reading_callback = None @@ -2454,7 +2467,8 @@ self._control.ensureCursorVisible() self._control.setTextCursor(original_cursor) - def _show_prompt(self, prompt=None, html=False, newline=True): + def _show_prompt(self, prompt=None, html=False, newline=True, + separator=True): """ Writes a new prompt at the end of the buffer. Parameters @@ -2470,6 +2484,9 @@ newline : bool, optional (default True) If set, a new line will be written before showing the prompt if there is not already a newline at the end of the buffer. + + separator : bool, optional (default True) + If set, a separator will be written before the prompt. """ self._flush_pending_stream() cursor = self._get_end_cursor() @@ -2494,7 +2511,8 @@ self._append_block() # Write the prompt. - self._append_plain_text(self._prompt_sep) + if separator: + self._append_plain_text(self._prompt_sep) if prompt is None: if self._prompt_html is None: self._append_plain_text(self._prompt) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtconsole-5.2.2/qtconsole/mainwindow.py new/qtconsole-5.3.0/qtconsole/mainwindow.py --- old/qtconsole-5.2.2/qtconsole/mainwindow.py 2021-03-17 02:07:09.000000000 +0100 +++ new/qtconsole-5.3.0/qtconsole/mainwindow.py 2022-03-27 20:25:58.000000000 +0200 @@ -36,6 +36,7 @@ confirm_exit=True, new_frontend_factory=None, slave_frontend_factory=None, connection_frontend_factory=None, + parent=None ): """ Create a tabbed MainWindow for managing FrontendWidgets @@ -53,7 +54,7 @@ JupyterWidget instance, attached to the same kernel. """ - super().__init__() + super().__init__(parent=parent) self._kernel_counter = 0 self._external_kernel_counter = 0 self._app = app diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtconsole-5.2.2/qtconsole/qtconsoleapp.py new/qtconsole-5.3.0/qtconsole/qtconsoleapp.py --- old/qtconsole-5.2.2/qtconsole/qtconsoleapp.py 2021-03-17 02:07:09.000000000 +0100 +++ new/qtconsole-5.3.0/qtconsole/qtconsoleapp.py 2022-03-27 20:25:58.000000000 +0200 @@ -259,8 +259,11 @@ def init_qt_app(self): # separate from qt_elements, because it must run first - self.app = QtWidgets.QApplication(['jupyter-qtconsole']) - self.app.setApplicationName('jupyter-qtconsole') + if QtWidgets.QApplication.instance() is None: + self.app = QtWidgets.QApplication(['jupyter-qtconsole']) + self.app.setApplicationName('jupyter-qtconsole') + else: + self.app = QtWidgets.QApplication.instance() def init_qt_elements(self): # Create the widget. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtconsole-5.2.2/qtconsole/rich_jupyter_widget.py new/qtconsole-5.3.0/qtconsole/rich_jupyter_widget.py --- old/qtconsole-5.2.2/qtconsole/rich_jupyter_widget.py 2021-03-17 02:07:09.000000000 +0100 +++ new/qtconsole-5.3.0/qtconsole/rich_jupyter_widget.py 2022-03-27 20:25:58.000000000 +0200 @@ -10,9 +10,11 @@ from ipython_genutils.path import ensure_dir_exists from traitlets import Bool +from pygments.util import ClassNotFound + from qtconsole.svg import save_svg, svg_to_clipboard, svg_to_image from .jupyter_widget import JupyterWidget - +from .styles import get_colors try: from IPython.lib.latextools import latex_to_png @@ -212,19 +214,30 @@ return True return False + def _get_color(self, color): + """Get color from the current syntax style if loadable.""" + try: + return get_colors(self.syntax_style)[color] + except ClassNotFound: + # The syntax_style has been sideloaded (e.g. by spyder). + # In this case the overloading class should override this method. + return get_colors('default')[color] + def _append_latex(self, latex, before_prompt=False, metadata=None): """ Append latex data to the widget.""" png = None if self._is_latex_math(latex): - png = latex_to_png(latex, wrap=False, backend='dvipng') + png = latex_to_png(latex, wrap=False, backend='dvipng', + color=self._get_color('fgcolor')) # Matplotlib only supports strings enclosed in dollar signs if png is None and latex.startswith('$') and latex.endswith('$'): # To avoid long and ugly errors, like the one reported in # spyder-ide/spyder#7619 try: - png = latex_to_png(latex, wrap=False, backend='matplotlib') + png = latex_to_png(latex, wrap=False, backend='matplotlib', + color=self._get_color('fgcolor')) except Exception: pass diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtconsole-5.2.2/qtconsole/tests/test_00_console_widget.py new/qtconsole-5.3.0/qtconsole/tests/test_00_console_widget.py --- old/qtconsole-5.2.2/qtconsole/tests/test_00_console_widget.py 2021-11-14 20:26:45.000000000 +0100 +++ new/qtconsole-5.3.0/qtconsole/tests/test_00_console_widget.py 2022-03-27 20:25:58.000000000 +0200 @@ -3,11 +3,13 @@ from flaky import flaky import pytest + from qtpy import QtCore, QtGui, QtWidgets from qtpy.QtTest import QTest from qtconsole.console_widget import ConsoleWidget from qtconsole.qtconsoleapp import JupyterQtConsoleApp + from . import no_display from IPython.core.inputtransformer2 import TransformerManager @@ -23,10 +25,12 @@ console = JupyterQtConsoleApp() console.initialize(argv=[]) - qtbot.addWidget(console.window) console.window.confirm_exit = False console.window.show() - return console + + yield console + + console.window.close() @flaky(max_runs=3) @@ -272,10 +276,9 @@ cursor.insertText('') def test_link_handling(self): - noKeys = QtCore.Qt - noButton = QtCore.Qt.MouseButton(0) - noButtons = QtCore.Qt.MouseButtons(0) - noModifiers = QtCore.Qt.KeyboardModifiers(0) + noButton = QtCore.Qt.NoButton + noButtons = QtCore.Qt.NoButton + noModifiers = QtCore.Qt.NoModifier MouseMove = QtCore.QEvent.MouseMove QMouseEvent = QtGui.QMouseEvent @@ -287,20 +290,20 @@ self.assertEqual(tip.text(), '') # should be somewhere else - elsewhereEvent = QMouseEvent(MouseMove, QtCore.QPoint(50,50), + elsewhereEvent = QMouseEvent(MouseMove, QtCore.QPointF(50, 50), noButton, noButtons, noModifiers) w.eventFilter(obj, elsewhereEvent) self.assertEqual(tip.isVisible(), False) self.assertEqual(tip.text(), '') # should be over text - overTextEvent = QMouseEvent(MouseMove, QtCore.QPoint(1,5), + overTextEvent = QMouseEvent(MouseMove, QtCore.QPointF(1, 5), noButton, noButtons, noModifiers) w.eventFilter(obj, overTextEvent) self.assertEqual(tip.isVisible(), True) self.assertEqual(tip.text(), "http://python.org") # should still be over text - stillOverTextEvent = QMouseEvent(MouseMove, QtCore.QPoint(1,5), + stillOverTextEvent = QMouseEvent(MouseMove, QtCore.QPointF(1, 5), noButton, noButtons, noModifiers) w.eventFilter(obj, stillOverTextEvent) self.assertEqual(tip.isVisible(), True) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtconsole-5.2.2/qtconsole/tests/test_jupyter_widget.py new/qtconsole-5.3.0/qtconsole/tests/test_jupyter_widget.py --- old/qtconsole-5.2.2/qtconsole/tests/test_jupyter_widget.py 2021-03-17 02:07:09.000000000 +0100 +++ new/qtconsole-5.3.0/qtconsole/tests/test_jupyter_widget.py 2022-03-27 20:25:58.000000000 +0200 @@ -2,12 +2,14 @@ import sys import pytest +from qtpy import QT6 from qtpy import QtWidgets, QtGui +from qtpy.QtTest import QTest from qtconsole.client import QtKernelClient from qtconsole.jupyter_widget import JupyterWidget + from . import no_display -from qtpy.QtTest import QTest @pytest.mark.skipif(no_display, reason="Doesn't work without a display") @@ -70,18 +72,34 @@ )) # Check proper syntax highlighting - self.assertEqual(document.toHtml(), ( - '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">\n' - '<html><head><meta name="qrichtext" content="1" /><style type="text/css">\n' - 'p, li { white-space: pre-wrap; }\n' - '</style></head><body style=" font-family:\'Monospace\'; font-size:9pt; font-weight:400; font-style:normal;">\n' - '<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Header</p>\n' - '<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>\n' - '<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" color:#000080;">[other] In [</span><span style=" font-weight:600; color:#000080;">1</span><span style=" color:#000080;">]:</span> a = 1 + 1</p>\n' - '<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" color:#000080;">\xa0\xa0\xa0\xa0\xa0\xa0\xa0\xa0\xa0\xa0\xa0...:</span> b = range(10)</p>\n' - '<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>\n' - '<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" color:#000080;">In [</span><span style=" font-weight:600; color:#000080;">2</span><span style=" color:#000080;">]:</span> </p></body></html>' - )) + if QT6: + html = ( + '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">\n' + '<html><head><meta name="qrichtext" content="1" /><meta charset="utf-8" /><style type="text/css">\n' + 'p, li { white-space: pre-wrap; }\n' + '</style></head><body style=\" font-family:\'Monospace\'; font-size:9pt; font-weight:400; font-style:normal;\">\n' + '<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Header</p>\n' + '<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>\n' + '<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" color:#000080;">[other] In [</span><span style=" font-weight:700; color:#000080;">1</span><span style=" color:#000080;">]:</span> a = 1 + 1</p>\n' + '<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" color:#000080;">\xa0\xa0\xa0\xa0\xa0\xa0\xa0\xa0\xa0\xa0\xa0...:</span> b = range(10)</p>\n' + '<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>\n' + '<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" color:#000080;">In [</span><span style=" font-weight:700; color:#000080;">2</span><span style=" color:#000080;">]:</span> </p></body></html>' + ) + else: + html = ( + '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">\n' + '<html><head><meta name="qrichtext" content="1" /><style type="text/css">\n' + 'p, li { white-space: pre-wrap; }\n' + '</style></head><body style=" font-family:\'Monospace\'; font-size:9pt; font-weight:400; font-style:normal;">\n' + '<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Header</p>\n' + '<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>\n' + '<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" color:#000080;">[other] In [</span><span style=" font-weight:600; color:#000080;">1</span><span style=" color:#000080;">]:</span> a = 1 + 1</p>\n' + '<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" color:#000080;">\xa0\xa0\xa0\xa0\xa0\xa0\xa0\xa0\xa0\xa0\xa0...:</span> b = range(10)</p>\n' + '<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>\n' + '<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" color:#000080;">In [</span><span style=" font-weight:600; color:#000080;">2</span><span style=" color:#000080;">]:</span> </p></body></html>' + ) + + self.assertEqual(document.toHtml(), html) def test_copy_paste_prompt(self): """Test copy/paste removes partial and full prompts.""" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtconsole-5.2.2/qtconsole.egg-info/PKG-INFO new/qtconsole-5.3.0/qtconsole.egg-info/PKG-INFO --- old/qtconsole-5.2.2/qtconsole.egg-info/PKG-INFO 2021-12-13 18:55:15.000000000 +0100 +++ new/qtconsole-5.3.0/qtconsole.egg-info/PKG-INFO 2022-03-28 19:04:57.000000000 +0200 @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: qtconsole -Version: 5.2.2 +Version: 5.3.0 Summary: Jupyter Qt console Home-page: http://jupyter.org Author: Jupyter Development Team @@ -17,11 +17,11 @@ Classifier: License :: OSI Approved :: BSD License Classifier: Programming Language :: Python Classifier: Programming Language :: Python :: 3 -Classifier: Programming Language :: Python :: 3.6 Classifier: Programming Language :: Python :: 3.7 Classifier: Programming Language :: Python :: 3.8 Classifier: Programming Language :: Python :: 3.9 -Requires-Python: >= 3.6 +Classifier: Programming Language :: Python :: 3.10 +Requires-Python: >= 3.7 Description-Content-Type: text/markdown Provides-Extra: test Provides-Extra: doc diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtconsole-5.2.2/qtconsole.egg-info/entry_points.txt new/qtconsole-5.3.0/qtconsole.egg-info/entry_points.txt --- old/qtconsole-5.2.2/qtconsole.egg-info/entry_points.txt 2021-12-13 18:55:15.000000000 +0100 +++ new/qtconsole-5.3.0/qtconsole.egg-info/entry_points.txt 2022-03-28 19:04:57.000000000 +0200 @@ -1,3 +1,2 @@ [gui_scripts] jupyter-qtconsole = qtconsole.qtconsoleapp:main - diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtconsole-5.2.2/qtconsole.egg-info/requires.txt new/qtconsole-5.3.0/qtconsole.egg-info/requires.txt --- old/qtconsole-5.2.2/qtconsole.egg-info/requires.txt 2021-12-13 18:55:15.000000000 +0100 +++ new/qtconsole-5.3.0/qtconsole.egg-info/requires.txt 2022-03-28 19:04:57.000000000 +0200 @@ -4,7 +4,7 @@ jupyter_client>=4.1 pygments ipykernel>=4.1 -qtpy +qtpy>=2.0.1 pyzmq>=17.1 [doc] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtconsole-5.2.2/setup.py new/qtconsole-5.3.0/setup.py --- old/qtconsole-5.2.2/setup.py 2021-03-17 02:07:09.000000000 +0100 +++ new/qtconsole-5.3.0/setup.py 2022-03-27 20:25:58.000000000 +0200 @@ -13,8 +13,8 @@ import sys v = sys.version_info -if v[0] >= 3 and v[:2] < (3, 5): - error = "ERROR: %s requires Python version 3.6 or above." % name +if v[0] >= 3 and v[:2] < (3, 6): + error = "ERROR: %s requires Python version 3.7 or above." % name print(error, file=sys.stderr) sys.exit(1) @@ -66,7 +66,7 @@ license = 'BSD', platforms = "Linux, Mac OS X, Windows", keywords = ['Interactive', 'Interpreter', 'Shell'], - python_requires = '>= 3.6', + python_requires = '>= 3.7', install_requires = [ 'traitlets', 'ipython_genutils', @@ -74,7 +74,7 @@ 'jupyter_client>=4.1', 'pygments', 'ipykernel>=4.1', # not a real dependency, but require the reference kernel - 'qtpy', + 'qtpy>=2.0.1', 'pyzmq>=17.1' ], extras_require = { @@ -93,10 +93,10 @@ 'License :: OSI Approved :: BSD License', 'Programming Language :: Python', 'Programming Language :: Python :: 3', - 'Programming Language :: Python :: 3.6', 'Programming Language :: Python :: 3.7', 'Programming Language :: Python :: 3.8', 'Programming Language :: Python :: 3.9', + 'Programming Language :: Python :: 3.10', ], )