commit python-qtconsole for openSUSE:Factory
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 2021-02-01 13:27:40 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-qtconsole (Old) and /work/SRC/openSUSE:Factory/.python-qtconsole.new.28504 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Package is "python-qtconsole" Mon Feb 1 13:27:40 2021 rev:15 rq:868157 version:5.0.2 Changes: -------- --- /work/SRC/openSUSE:Factory/python-qtconsole/python-qtconsole.changes 2020-12-16 11:01:07.519607486 +0100 +++ /work/SRC/openSUSE:Factory/.python-qtconsole.new.28504/python-qtconsole.changes 2021-02-01 13:29:40.390240279 +0100 @@ -1,0 +2,10 @@ +Sat Jan 30 20:21:58 UTC 2021 - Arun Persaud <arun@gmx.de> + +- specfile: + * update copyright year + +- update to version 5.0.2: + * Fix launching issue with Big Sur + * Remove partial prompt on copy + +------------------------------------------------------------------- Old: ---- qtconsole-5.0.1.tar.gz New: ---- qtconsole-5.0.2.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-qtconsole.spec ++++++ --- /var/tmp/diff_new_pack.fDS9u2/_old 2021-02-01 13:29:41.114241406 +0100 +++ /var/tmp/diff_new_pack.fDS9u2/_new 2021-02-01 13:29:41.118241413 +0100 @@ -1,7 +1,7 @@ # # spec file for package python-qtconsole # -# Copyright (c) 2020 SUSE LLC +# Copyright (c) 2021 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -19,7 +19,7 @@ %{?!python_module:%define python_module() python-%{**} python3-%{**}} %define skip_python2 1 Name: python-qtconsole -Version: 5.0.1 +Version: 5.0.2 Release: 0 Summary: Jupyter Qt console License: BSD-3-Clause ++++++ qtconsole-5.0.1.tar.gz -> qtconsole-5.0.2.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtconsole-5.0.1/PKG-INFO new/qtconsole-5.0.2/PKG-INFO --- old/qtconsole-5.0.1/PKG-INFO 2020-11-24 18:27:25.000000000 +0100 +++ new/qtconsole-5.0.2/PKG-INFO 2021-01-21 18:30:43.370558000 +0100 @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: qtconsole -Version: 5.0.1 +Version: 5.0.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.0.1/docs/source/changelog.rst new/qtconsole-5.0.2/docs/source/changelog.rst --- old/qtconsole-5.0.1/docs/source/changelog.rst 2020-11-24 18:22:55.000000000 +0100 +++ new/qtconsole-5.0.2/docs/source/changelog.rst 2021-01-21 18:24:15.000000000 +0100 @@ -8,6 +8,14 @@ 5.0 ~~~ +5.0.2 +----- + +`5.0.2 on GitHub <https://github.com/jupyter/qtconsole/milestones/5.0.2>`__ + +* Fix launching issue with Big Sur +* Remove partial prompt on copy + 5.0.1 ----- diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtconsole-5.0.1/qtconsole/_version.py new/qtconsole-5.0.2/qtconsole/_version.py --- old/qtconsole-5.0.1/qtconsole/_version.py 2020-11-24 18:26:22.000000000 +0100 +++ new/qtconsole-5.0.2/qtconsole/_version.py 2021-01-21 18:25:51.000000000 +0100 @@ -1,2 +1,2 @@ -version_info = (5, 0, 1) +version_info = (5, 0, 2) __version__ = '.'.join(map(str, version_info)) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtconsole-5.0.1/qtconsole/console_widget.py new/qtconsole-5.0.2/qtconsole/console_widget.py --- old/qtconsole-5.0.1/qtconsole/console_widget.py 2020-11-21 05:27:38.000000000 +0100 +++ new/qtconsole-5.0.2/qtconsole/console_widget.py 2021-01-21 18:20:43.000000000 +0100 @@ -2176,35 +2176,55 @@ cursor.insertText(line) cursor.endEditBlock() - def _in_buffer(self, position=None): - """ Returns whether the current cursor (or, if specified, a position) is - inside the editing region. + def _in_buffer(self, position): + """ + Returns whether the specified position is inside the editing region. + """ + return position == self._move_position_in_buffer(position) + + def _move_position_in_buffer(self, position): + """ + Return the next position in buffer. """ cursor = self._control.textCursor() - if position is None: - position = cursor.position() - else: - cursor.setPosition(position) + cursor.setPosition(position) line = cursor.blockNumber() prompt_line = self._get_prompt_cursor().blockNumber() if line == prompt_line: - return position >= self._prompt_pos - elif line > prompt_line: + if position >= self._prompt_pos: + return position + return self._prompt_pos + if line > prompt_line: cursor.movePosition(QtGui.QTextCursor.StartOfBlock) prompt_pos = cursor.position() + len(self._continuation_prompt) - return position >= prompt_pos - return False + if position >= prompt_pos: + return position + return prompt_pos + return self._prompt_pos def _keep_cursor_in_buffer(self): """ Ensures that the cursor is inside the editing region. Returns whether the cursor was moved. """ - moved = not self._in_buffer() - if moved: - cursor = self._control.textCursor() + cursor = self._control.textCursor() + endpos = cursor.selectionEnd() + if endpos < self._prompt_pos: + # Cursor is not in buffer, move to the end cursor.movePosition(QtGui.QTextCursor.End) self._control.setTextCursor(cursor) - return moved + return True + + startpos = cursor.selectionStart() + + new_endpos = self._move_position_in_buffer(endpos) + new_startpos = self._move_position_in_buffer(startpos) + if new_endpos == endpos and new_startpos == startpos: + return False + + cursor.setPosition(new_startpos) + cursor.setPosition(new_endpos, QtGui.QTextCursor.KeepAnchor) + self._control.setTextCursor(cursor) + return True def _keyboard_quit(self): """ Cancels the current editing task ala Ctrl-G in Emacs. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtconsole-5.0.1/qtconsole/frontend_widget.py new/qtconsole-5.0.2/qtconsole/frontend_widget.py --- old/qtconsole-5.0.1/qtconsole/frontend_widget.py 2020-11-21 05:27:38.000000000 +0100 +++ new/qtconsole-5.0.2/qtconsole/frontend_widget.py 2021-01-21 18:20:43.000000000 +0100 @@ -215,11 +215,52 @@ elif self._control.hasFocus(): text = self._control.textCursor().selection().toPlainText() if text: - # Remove prompts. - lines = text.splitlines() - lines = map(self._highlighter.transform_classic_prompt, lines) - lines = map(self._highlighter.transform_ipy_prompt, lines) - text = '\n'.join(lines) + first_line_selection, *remaining_lines = text.splitlines() + + # Get preceding text + cursor = self._control.textCursor() + cursor.setPosition(cursor.selectionStart()) + cursor.setPosition(cursor.block().position(), + QtGui.QTextCursor.KeepAnchor) + preceding_text = cursor.selection().toPlainText() + + def remove_prompts(line): + """Remove all prompts from line.""" + line = self._highlighter.transform_classic_prompt(line) + return self._highlighter.transform_ipy_prompt(line) + + # Get first line promp len + first_line = preceding_text + first_line_selection + len_with_prompt = len(first_line) + first_line = remove_prompts(first_line) + prompt_len = len_with_prompt - len(first_line) + + # Remove not selected part + if prompt_len < len(preceding_text): + first_line = first_line[len(preceding_text) - prompt_len:] + + # Remove partial prompt last line + if len(remaining_lines) > 0 and remaining_lines[-1]: + cursor = self._control.textCursor() + cursor.setPosition(cursor.selectionEnd()) + block = cursor.block() + start_pos = block.position() + length = block.length() + cursor.setPosition(start_pos) + cursor.setPosition(start_pos + length - 1, + QtGui.QTextCursor.KeepAnchor) + last_line_full = cursor.selection().toPlainText() + prompt_len = ( + len(last_line_full) + - len(remove_prompts(last_line_full))) + if len(remaining_lines[-1]) < prompt_len: + # This is a partial prompt + remaining_lines[-1] = "" + + # Remove prompts for other lines. + remaining_lines = map(remove_prompts, remaining_lines) + text = '\n'.join([first_line, *remaining_lines]) + # Needed to prevent errors when copying the prompt. # See issue 264 try: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtconsole-5.0.1/qtconsole/qtconsoleapp.py new/qtconsole-5.0.2/qtconsole/qtconsoleapp.py --- old/qtconsole-5.0.1/qtconsole/qtconsoleapp.py 2020-11-21 05:27:38.000000000 +0100 +++ new/qtconsole-5.0.2/qtconsole/qtconsoleapp.py 2021-01-21 18:20:43.000000000 +0100 @@ -7,6 +7,7 @@ # Copyright (c) Jupyter Development Team. # Distributed under the terms of the Modified BSD License. +from distutils.version import LooseVersion import os import signal import sys @@ -57,7 +58,7 @@ except AttributeError: pass -from qtpy import QtCore, QtGui, QtWidgets +from qtpy import QtCore, QtGui, QtWidgets, QT_VERSION from traitlets.config.application import boolean_flag from traitlets.config.application import catch_config_error @@ -410,6 +411,10 @@ @catch_config_error def initialize(self, argv=None): + # Fixes launching issues with Big Sur + # https://bugreports.qt.io/browse/QTBUG-87014, fixed in qt 5.15.2 + if sys.platform == 'darwin' and LooseVersion(QT_VERSION) < LooseVersion('5.15.2'): + os.environ['QT_MAC_WANTS_LAYER'] = '1' self._init_asyncio_patch() self.init_qt_app() super().initialize(argv) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtconsole-5.0.1/qtconsole/tests/test_jupyter_widget.py new/qtconsole-5.0.2/qtconsole/tests/test_jupyter_widget.py --- old/qtconsole-5.0.1/qtconsole/tests/test_jupyter_widget.py 2020-11-21 23:57:26.000000000 +0100 +++ new/qtconsole-5.0.2/qtconsole/tests/test_jupyter_widget.py 2021-01-21 18:20:43.000000000 +0100 @@ -2,7 +2,7 @@ import sys import pytest -from qtpy import QtWidgets +from qtpy import QtWidgets, QtGui from qtconsole.client import QtKernelClient from qtconsole.jupyter_widget import JupyterWidget @@ -82,3 +82,28 @@ '<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>' )) + + def test_copy_paste_prompt(self): + """Test copy/paste removes partial and full prompts.""" + w = JupyterWidget(kind='rich') + w._show_interpreter_prompt(1) + control = w._control + + code = " if True:\n print('a')" + w._set_input_buffer(code) + assert code not in control.toPlainText() + + cursor = w._get_prompt_cursor() + + pos = cursor.position() + cursor.setPosition(pos - 3) + cursor.movePosition(QtGui.QTextCursor.End, + QtGui.QTextCursor.KeepAnchor) + control.setTextCursor(cursor) + control.hasFocus = lambda: True + w.copy() + clipboard = QtWidgets.QApplication.clipboard() + assert clipboard.text() == code + w.paste() + expected = "In [1]: if True:\n ...: print('a')" + assert expected in control.toPlainText() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtconsole-5.0.1/qtconsole.egg-info/PKG-INFO new/qtconsole-5.0.2/qtconsole.egg-info/PKG-INFO --- old/qtconsole-5.0.1/qtconsole.egg-info/PKG-INFO 2020-11-24 18:27:23.000000000 +0100 +++ new/qtconsole-5.0.2/qtconsole.egg-info/PKG-INFO 2021-01-21 18:30:40.000000000 +0100 @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: qtconsole -Version: 5.0.1 +Version: 5.0.2 Summary: Jupyter Qt console Home-page: http://jupyter.org Author: Jupyter Development Team
participants (1)
-
Source-Sync