Hello community,
here is the log from the commit of package python-qtconsole for
openSUSE:Factory checked in at 2019-06-13 23:03:40
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-qtconsole (Old)
and /work/SRC/openSUSE:Factory/.python-qtconsole.new.4811 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-qtconsole"
Thu Jun 13 23:03:40 2019 rev:2 rq:709553 version:4.5.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-qtconsole/python-qtconsole.changes
2019-05-22 11:13:54.826557198 +0200
+++
/work/SRC/openSUSE:Factory/.python-qtconsole.new.4811/python-qtconsole.changes
2019-06-13 23:03:40.943375905 +0200
@@ -1,0 +2,12 @@
+Wed Jun 12 19:55:58 UTC 2019 - Todd R <[email protected]>
+
+- Update to version 4.5.1
+ * Only use setuptools in setup.py to fix uploading tarballs to PyPI.
+- Update to version 4.5
+ + Additions
+ * Add Comms to qtconsole.
+ * Add kernel language name as an attribute of JupyterWidget.
+ + Changes
+ * Use new traitlets API with decorators.
+
+-------------------------------------------------------------------
Old:
----
qtconsole-4.4.4.tar.gz
New:
----
qtconsole-4.5.1.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-qtconsole.spec ++++++
--- /var/tmp/diff_new_pack.PF44Nb/_old 2019-06-13 23:03:42.531374524 +0200
+++ /var/tmp/diff_new_pack.PF44Nb/_new 2019-06-13 23:03:42.531374524 +0200
@@ -18,8 +18,8 @@
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
Name: python-qtconsole
-Version: 4.4.4
-%define doc_ver 4.4.3
+Version: 4.5.1
+%define doc_ver 4.5.1
Release: 0
Summary: Jupyter Qt console
License: BSD-3-Clause
@@ -88,7 +88,7 @@
Provides: python-qtconsole-doc = %{version}
Provides: %{python_module qtconsole-doc = %{version}}
Provides: %{python_module jupyter_qtconsole-doc = %{version}}
-Obsoletes: %{python_module jupyter_qtconsole-doc <= %{version}}
+Obsoletes: %{python_module jupyter_qtconsole-doc < %{version}}
%description -n jupyter-qtconsole-doc
Documentation and help files for Jupyter's Qt console.
++++++ qtconsole-4.4.4.tar.gz -> qtconsole-4.5.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/qtconsole-4.4.4/MANIFEST.in
new/qtconsole-4.5.1/MANIFEST.in
--- old/qtconsole-4.4.4/MANIFEST.in 1970-01-01 01:00:00.000000000 +0100
+++ new/qtconsole-4.5.1/MANIFEST.in 2018-08-12 00:38:18.000000000 +0200
@@ -0,0 +1,22 @@
+include LICENSE
+include CONTRIBUTING.md
+include README.md
+
+# Documentation
+graft docs
+exclude docs/\#*
+
+# Examples
+graft examples
+
+# docs subdirs we want to skip
+prune docs/build
+prune docs/gh-pages
+prune docs/dist
+
+# Patterns to exclude from any directory
+global-exclude *~
+global-exclude *.pyc
+global-exclude *.pyo
+global-exclude .git
+global-exclude .ipynb_checkpoints
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/qtconsole-4.4.4/PKG-INFO new/qtconsole-4.5.1/PKG-INFO
--- old/qtconsole-4.4.4/PKG-INFO 2019-05-03 11:31:58.000000000 +0200
+++ new/qtconsole-4.5.1/PKG-INFO 2019-05-27 15:10:45.000000000 +0200
@@ -1,12 +1,86 @@
-Metadata-Version: 1.1
+Metadata-Version: 2.1
Name: qtconsole
-Version: 4.4.4
+Version: 4.5.1
Summary: Jupyter Qt console
Home-page: http://jupyter.org
Author: Jupyter Development Team
Author-email: [email protected]
+Maintainer: Spyder Development Team
License: BSD
-Description: Qt-based console for Jupyter with support for rich media output
+Description: # Jupyter QtConsole
+
+ [](https://travis-ci.org/jupyter/qtconsole)
+ [](https://coveralls.io/github/jupyter/qtconsole?branch=master)
+ [](https://qtconsole.readthedocs.io/en/stable/)
+ [](https://groups.google.com/forum/#!forum/jupyter)
+
+ A rich Qt-based console for working with Jupyter kernels,
+ supporting rich media output, session export, and more.
+
+ The Qtconsole is a very lightweight application that largely feels
like a terminal, but
+ provides a number of enhancements only possible in a GUI, such as
inline
+ figures, proper multiline editing with syntax highlighting, graphical
calltips,
+ and more.
+
+

+
+ ## Install Qtconsole
+ The Qtconsole requires Python bindings for Qt, such as
[PyQt5](http://www.riverbankcomputing.com/software/pyqt/intro),
+ [PyQt4](https://www.riverbankcomputing.com/software/pyqt/download),
+ or [PySide](http://pyside.github.io/docs/pyside).
+
+ Although [pip](https://pypi.python.org/pypi/pip) and
+ [conda](http://conda.pydata.org/docs) may be used to install the
Qtconsole, conda
+ is simpler to use since it automatically installs PyQt5. Alternatively,
+ the Qtconsole installation with pip needs additional steps since pip
doesn't install
+ the Qt requirement.
+
+ ### Install using conda
+ To install:
+
+ conda install qtconsole
+
+ **Note:** If the Qtconsole is installed using conda, it will
**automatically**
+ install the Qt requirement as well.
+
+ ### Install using pip
+ To install:
+
+ pip install qtconsole
+
+ **Note:** Make sure that Qt is installed. Unfortunately, Qt is not
+ installed when using pip. The next section gives instructions on doing
it.
+
+ ### Installing Qt (if needed)
+ You can install PyQt5 with pip using the following command:
+
+ pip install pyqt5
+
+ or with a system package manager on Linux. For Windows, PyQt binary
packages may be
+ used.
+
+ **Note:** Additional information about using a system package manager
may be
+ found in the [qtconsole
documentation](https://qtconsole.readthedocs.io).
+
+ More installation instructions for PyQt can be found in the [PyQt5
documentation](http://pyqt.sourceforge.net/Docs/PyQt5/installation.html) and
[PyQt4 documentation](http://pyqt.sourceforge.net/Docs/PyQt4/installation.html)
+
+ Source packages for Windows/Linux/MacOS can be found here:
[PyQt5](https://www.riverbankcomputing.com/software/pyqt/download5) and
[PyQt4](https://riverbankcomputing.com/software/pyqt/download).
+
+
+ ## Usage
+ To run the Qtconsole:
+
+ jupyter qtconsole
+
+ ## Resources
+ - [Project Jupyter website](https://jupyter.org)
+ - Documentation for the Qtconsole
+ * [latest version](https://qtconsole.readthedocs.io/en/latest/)
[[PDF](https://media.readthedocs.org/pdf/qtconsole/latest/qtconsole.pdf)]
+ * [stable version](https://qtconsole.readthedocs.io/en/stable/)
[[PDF](https://media.readthedocs.org/pdf/qtconsole/stable/qtconsole.pdf)]
+ - [Documentation for Project
Jupyter](https://jupyter.readthedocs.io/en/latest/index.html)
[[PDF](https://media.readthedocs.org/pdf/jupyter/latest/jupyter.pdf)]
+ - [Issues](https://github.com/jupyter/qtconsole/issues)
+ - [Technical support - Jupyter Google
Group](https://groups.google.com/forum/#!forum/jupyter)
+
Keywords: Interactive,Interpreter,Shell
Platform: Linux
Platform: Mac OS X
@@ -18,6 +92,9 @@
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3
-Classifier: Programming Language :: Python :: 3.3
-Classifier: Programming Language :: Python :: 3.4
Classifier: Programming Language :: Python :: 3.5
+Classifier: Programming Language :: Python :: 3.6
+Classifier: Programming Language :: 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-4.4.4/README.md
new/qtconsole-4.5.1/README.md
--- old/qtconsole-4.4.4/README.md 2018-10-12 22:41:34.000000000 +0200
+++ new/qtconsole-4.5.1/README.md 2019-05-27 15:00:29.000000000 +0200
@@ -1,29 +1,29 @@
-# Jupyter Qt Console
+# Jupyter QtConsole
-[](https://groups.google.com/forum/#!forum/jupyter)
[](https://travis-ci.org/jupyter/qtconsole)
[](https://coveralls.io/github/jupyter/qtconsole?branch=master)
[](https://qtconsole.readthedocs.io/en/stable/)
+[](https://groups.google.com/forum/#!forum/jupyter)
A rich Qt-based console for working with Jupyter kernels,
supporting rich media output, session export, and more.
-The Qt console is a very lightweight application that largely feels like a
terminal, but
+The Qtconsole is a very lightweight application that largely feels like a
terminal, but
provides a number of enhancements only possible in a GUI, such as inline
figures, proper multiline editing with syntax highlighting, graphical calltips,
and more.
-
+
-## Install Qt console
-The Qt console requires Qt, such as
[PyQt5](http://www.riverbankcomputing.com/software/pyqt/intro),
+## Install Qtconsole
+The Qtconsole requires Python bindings for Qt, such as
[PyQt5](http://www.riverbankcomputing.com/software/pyqt/intro),
[PyQt4](https://www.riverbankcomputing.com/software/pyqt/download),
or [PySide](http://pyside.github.io/docs/pyside).
Although [pip](https://pypi.python.org/pypi/pip) and
-[conda](http://conda.pydata.org/docs) may be used to install the Qt console,
conda
-is simpler to use since it automatically installs PyQt. Alternatively,
-the Qt console installation with pip needs additional steps since pip cannot
install
+[conda](http://conda.pydata.org/docs) may be used to install the Qtconsole,
conda
+is simpler to use since it automatically installs PyQt5. Alternatively,
+the Qtconsole installation with pip needs additional steps since pip doesn't
install
the Qt requirement.
### Install using conda
@@ -31,7 +31,7 @@
conda install qtconsole
-**Note:** If the Qt console is installed using conda, it will **automatically**
+**Note:** If the Qtconsole is installed using conda, it will **automatically**
install the Qt requirement as well.
### Install using pip
@@ -39,33 +39,33 @@
pip install qtconsole
-**Note:** Make sure that Qt is installed. Unfortunately, Qt cannot be
-installed using pip. The next section gives instructions on installing Qt.
+**Note:** Make sure that Qt is installed. Unfortunately, Qt is not
+installed when using pip. The next section gives instructions on doing it.
### Installing Qt (if needed)
-We recommend installing PyQt with [conda](http://conda.pydata.org/docs):
+You can install PyQt5 with pip using the following command:
- conda install pyqt
+ pip install pyqt5
-or with a system package manager. For Windows, PyQt binary packages may be
+or with a system package manager on Linux. For Windows, PyQt binary packages
may be
used.
**Note:** Additional information about using a system package manager may be
found in the [qtconsole documentation](https://qtconsole.readthedocs.io).
-More installation instructions for PyQT can be found in the [PyQt5
documentation](http://pyqt.sourceforge.net/Docs/PyQt5/installation.html) and
[PyQt4 documentation](http://pyqt.sourceforge.net/Docs/PyQt4/installation.html)
+More installation instructions for PyQt can be found in the [PyQt5
documentation](http://pyqt.sourceforge.net/Docs/PyQt5/installation.html) and
[PyQt4 documentation](http://pyqt.sourceforge.net/Docs/PyQt4/installation.html)
Source packages for Windows/Linux/MacOS can be found here:
[PyQt5](https://www.riverbankcomputing.com/software/pyqt/download5) and
[PyQt4](https://riverbankcomputing.com/software/pyqt/download).
## Usage
-To run the Qt console:
+To run the Qtconsole:
jupyter qtconsole
## Resources
- [Project Jupyter website](https://jupyter.org)
-- Documentation for the Qt console
+- Documentation for the Qtconsole
* [latest version](https://qtconsole.readthedocs.io/en/latest/)
[[PDF](https://media.readthedocs.org/pdf/qtconsole/latest/qtconsole.pdf)]
* [stable version](https://qtconsole.readthedocs.io/en/stable/)
[[PDF](https://media.readthedocs.org/pdf/qtconsole/stable/qtconsole.pdf)]
- [Documentation for Project
Jupyter](https://jupyter.readthedocs.io/en/latest/index.html)
[[PDF](https://media.readthedocs.org/pdf/jupyter/latest/jupyter.pdf)]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/qtconsole-4.4.4/docs/source/changelog.rst
new/qtconsole-4.5.1/docs/source/changelog.rst
--- old/qtconsole-4.4.4/docs/source/changelog.rst 2019-05-03
11:21:50.000000000 +0200
+++ new/qtconsole-4.5.1/docs/source/changelog.rst 2019-05-27
15:08:39.000000000 +0200
@@ -3,6 +3,27 @@
Changes in Jupyter Qt console
=============================
+.. _4.5.1:
+
+`4.5.1 on GitHub <https://github.com/jupyter/qtconsole/milestones/4.5.1>`__
+
+- Only use setuptools in setup.py to fix uploading tarballs to PyPI.
+
+
+.. _4.5:
+
+`4.5 on GitHub <https://github.com/jupyter/qtconsole/milestones/4.5>`__
+
+Additions
+~~~~~~~~~
+- Add Comms to qtconsole.
+- Add kernel language name as an attribute of JupyterWidget.
+
+Changes
+~~~~~~~
+- Use new traitlets API with decorators.
+
+
.. _4.4.4:
`4.4.4 on GitHub <https://github.com/jupyter/qtconsole/milestones/4.4.4>`__
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/qtconsole-4.4.4/qtconsole/_version.py
new/qtconsole-4.5.1/qtconsole/_version.py
--- old/qtconsole-4.4.4/qtconsole/_version.py 2019-05-03 11:31:07.000000000
+0200
+++ new/qtconsole-4.5.1/qtconsole/_version.py 2019-05-27 15:09:58.000000000
+0200
@@ -1,2 +1,2 @@
-version_info = (4, 4, 4)
+version_info = (4, 5, 1)
__version__ = '.'.join(map(str, version_info))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/qtconsole-4.4.4/qtconsole/comms.py
new/qtconsole-4.5.1/qtconsole/comms.py
--- old/qtconsole-4.4.4/qtconsole/comms.py 1970-01-01 01:00:00.000000000
+0100
+++ new/qtconsole-4.5.1/qtconsole/comms.py 2019-05-23 13:25:43.000000000
+0200
@@ -0,0 +1,268 @@
+"""
+Based on
+https://github.com/jupyter/notebook/blob/master/notebook/static/services/kernels/comm.js
+https://github.com/ipython/ipykernel/blob/master/ipykernel/comm/manager.py
+https://github.com/ipython/ipykernel/blob/master/ipykernel/comm/comm.py
+
+
+Which are distributed under the terms of the Modified BSD License.
+"""
+import logging
+
+from traitlets.config import LoggingConfigurable
+
+from ipython_genutils.importstring import import_item
+from ipython_genutils.py3compat import string_types
+
+import uuid
+
+from qtconsole.qt import QtCore
+from qtconsole.util import MetaQObjectHasTraits, SuperQObject
+
+class CommManager(MetaQObjectHasTraits(
+ 'NewBase', (LoggingConfigurable, SuperQObject), {})):
+ """
+ Manager for Comms in the Frontend
+ """
+ def __init__(self, kernel_client, *args, **kwargs):
+ super(CommManager, self).__init__(*args, **kwargs)
+ self.comms = {}
+ self.targets = {}
+ if kernel_client:
+ self.init_kernel_client(kernel_client)
+
+ def init_kernel_client(self, kernel_client):
+ """
+ connect the kernel, and register message handlers
+ """
+ self.kernel_client = kernel_client
+ kernel_client.iopub_channel.message_received.connect(self._dispatch)
+
+ @QtCore.Slot(object)
+ def _dispatch(self, msg):
+ """Dispatch messages"""
+ msg_type = msg['header']['msg_type']
+ handled_msg_types = ['comm_open', 'comm_msg', 'comm_close']
+ if msg_type in handled_msg_types:
+ getattr(self, msg_type)(msg)
+
+ def new_comm(self, target_name, data=None, metadata=None,
+ comm_id=None, buffers=None):
+ """
+ Create a new Comm, register it, and open its Kernel-side counterpart
+ Mimics the auto-registration in `Comm.__init__` in the Jupyter Comm.
+
+ argument comm_id is optional
+ """
+ comm = Comm(target_name, self.kernel_client, comm_id)
+ self.register_comm(comm)
+ try:
+ comm.open(data, metadata, buffers)
+ except:
+ self.unregister_comm(comm)
+ raise
+ return comm
+
+ def register_target(self, target_name, f):
+ """Register a callable f for a given target name
+
+ f will be called with two arguments when a comm_open message is
+ received with `target`:
+
+ - the Comm instance
+ - the `comm_open` message itself.
+
+ f can be a Python callable or an import string for one.
+ """
+ if isinstance(f, string_types):
+ f = import_item(f)
+
+ self.targets[target_name] = f
+
+ def unregister_target(self, target_name, f):
+ """Unregister a callable registered with register_target"""
+ return self.targets.pop(target_name)
+
+ def register_comm(self, comm):
+ """Register a new comm"""
+ comm_id = comm.comm_id
+ comm.kernel_client = self.kernel_client
+ self.comms[comm_id] = comm
+ comm.sig_is_closing.connect(self.unregister_comm)
+ return comm_id
+
+ @QtCore.Slot(object)
+ def unregister_comm(self, comm):
+ """Unregister a comm, and close its counterpart."""
+ # unlike get_comm, this should raise a KeyError
+ comm.sig_is_closing.disconnect(self.unregister_comm)
+ self.comms.pop(comm.comm_id)
+
+ def get_comm(self, comm_id):
+ """Get a comm with a particular id
+
+ Returns the comm if found, otherwise None.
+
+ This will not raise an error,
+ it will log messages if the comm cannot be found.
+ """
+ try:
+ return self.comms[comm_id]
+ except KeyError:
+ self.log.warning("No such comm: %s", comm_id)
+ if self.log.isEnabledFor(logging.DEBUG):
+ # don't create the list of keys if debug messages aren't
enabled
+ self.log.debug("Current comms: %s", list(self.comms.keys()))
+
+ # comm message handlers
+ def comm_open(self, msg):
+ """Handler for comm_open messages"""
+ content = msg['content']
+ comm_id = content['comm_id']
+ target_name = content['target_name']
+ f = self.targets.get(target_name, None)
+
+ comm = Comm(target_name, self.kernel_client, comm_id)
+ self.register_comm(comm)
+
+ if f is None:
+ self.log.error("No such comm target registered: %s", target_name)
+ else:
+ try:
+ f(comm, msg)
+ return
+ except Exception:
+ self.log.error("Exception opening comm with target: %s",
+ target_name, exc_info=True)
+
+ # Failure.
+ try:
+ comm.close()
+ except:
+ self.log.error("""Could not close comm during `comm_open` failure
+ clean-up. The comm may not have been opened yet.""",
+ exc_info=True)
+
+ def comm_close(self, msg):
+ """Handler for comm_close messages"""
+ content = msg['content']
+ comm_id = content['comm_id']
+ comm = self.get_comm(comm_id)
+ if comm is None:
+ return
+
+ self.unregister_comm(comm)
+
+ try:
+ comm.handle_close(msg)
+ except Exception:
+ self.log.error('Exception in comm_close for %s', comm_id,
+ exc_info=True)
+
+ def comm_msg(self, msg):
+ """Handler for comm_msg messages"""
+ content = msg['content']
+ comm_id = content['comm_id']
+ comm = self.get_comm(comm_id)
+ if comm is None:
+ return
+ try:
+ comm.handle_msg(msg)
+ except Exception:
+ self.log.error('Exception in comm_msg for %s', comm_id,
+ exc_info=True)
+
+class Comm(MetaQObjectHasTraits(
+ 'NewBase', (LoggingConfigurable, SuperQObject), {})):
+ """
+ Comm base class
+ """
+ sig_is_closing = QtCore.Signal(object)
+
+ def __init__(self, target_name, kernel_client, comm_id=None,
+ msg_callback=None, close_callback=None):
+ """
+ Create a new comm. Must call open to use.
+ """
+ super(Comm, self).__init__(target_name=target_name)
+ self.target_name = target_name
+ self.kernel_client = kernel_client
+ if comm_id is None:
+ comm_id = uuid.uuid1().hex
+ self.comm_id = comm_id
+ self._msg_callback = msg_callback
+ self._close_callback = close_callback
+ self._send_channel = self.kernel_client.shell_channel
+
+ def __del__(self):
+ self.close()
+
+ def _send_msg(self, msg_type, content, data, metadata, buffers):
+ """
+ Send a message on the shell channel.
+ """
+ if data is None:
+ data = {}
+ if content is None:
+ content = {}
+ content['comm_id'] = self.comm_id
+ content['data'] = data
+
+ msg = self.kernel_client.session.msg(
+ msg_type, content, metadata=metadata)
+ if buffers:
+ msg['buffers'] = buffers
+ return self._send_channel.send(msg)
+
+ # methods for sending messages
+ def open(self, data=None, metadata=None, buffers=None):
+ """Open the kernel-side version of this comm"""
+ return self._send_msg(
+ 'comm_open', {'target_name': self.target_name},
+ data, metadata, buffers)
+
+ def send(self, data=None, metadata=None, buffers=None):
+ """Send a message to the kernel-side version of this comm"""
+ return self._send_msg(
+ 'comm_msg', {}, data, metadata, buffers)
+
+ def close(self, data=None, metadata=None, buffers=None):
+ """Close the kernel-side version of this comm"""
+ self.sig_is_closing.emit(self)
+ return self._send_msg(
+ 'comm_close', {}, data, metadata, buffers)
+
+ # methods for registering callbacks for incoming messages
+
+ def on_msg(self, callback):
+ """Register a callback for comm_msg
+
+ Will be called with the `data` of any comm_msg messages.
+
+ Call `on_msg(None)` to disable an existing callback.
+ """
+ self._msg_callback = callback
+
+ def on_close(self, callback):
+ """Register a callback for comm_close
+
+ Will be called with the `data` of the close message.
+
+ Call `on_close(None)` to disable an existing callback.
+ """
+ self._close_callback = callback
+
+ # methods for handling incoming messages
+ def handle_msg(self, msg):
+ """Handle a comm_msg message"""
+ self.log.debug("handle_msg[%s](%s)", self.comm_id, msg)
+ if self._msg_callback:
+ return self._msg_callback(msg)
+
+ def handle_close(self, msg):
+ """Handle a comm_close message"""
+ self.log.debug("handle_close[%s](%s)", self.comm_id, msg)
+ if self._close_callback:
+ return self._close_callback(msg)
+
+__all__ = ['CommManager']
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/qtconsole-4.4.4/qtconsole/frontend_widget.py
new/qtconsole-4.5.1/qtconsole/frontend_widget.py
--- old/qtconsole-4.4.4/qtconsole/frontend_widget.py 2018-11-09
22:01:10.000000000 +0100
+++ new/qtconsole-4.5.1/qtconsole/frontend_widget.py 2019-05-24
11:24:05.000000000 +0200
@@ -16,7 +16,7 @@
from ipython_genutils.importstring import import_item
from qtconsole.base_frontend_mixin import BaseFrontendMixin
-from traitlets import Any, Bool, Instance, Unicode, DottedObjectName
+from traitlets import Any, Bool, Instance, Unicode, DottedObjectName, default
from .bracket_matcher import BracketMatcher
from .call_tip_widget import CallTipWidget
from .history_console_widget import HistoryConsoleWidget
@@ -798,6 +798,7 @@
#------ Trait default initializers
-----------------------------------------
+ @default('banner')
def _banner_default(self):
""" Returns the standard Python banner.
"""
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/qtconsole-4.4.4/qtconsole/jupyter_widget.py
new/qtconsole-4.5.1/qtconsole/jupyter_widget.py
--- old/qtconsole-4.4.4/qtconsole/jupyter_widget.py 2018-11-09
21:59:15.000000000 +0100
+++ new/qtconsole-4.5.1/qtconsole/jupyter_widget.py 2019-05-24
11:24:05.000000000 +0200
@@ -21,7 +21,7 @@
from pygments.lexers import get_lexer_by_name
from pygments.util import ClassNotFound
from qtconsole import __version__
-from traitlets import Bool, Unicode
+from traitlets import Bool, Unicode, observe, default
from .frontend_widget import FrontendWidget
from . import styles
@@ -133,6 +133,9 @@
else:
self.set_default_style()
+ # Initialize language name.
+ self.language_name = None
+
#---------------------------------------------------------------------------
# 'BaseFrontendMixin' abstract interface
#
@@ -288,7 +291,7 @@
def _handle_kernel_info_reply(self, rep):
"""Handle kernel info replies."""
content = rep['content']
- language_name = content['language_info']['name']
+ self.language_name = content['language_info']['name']
pygments_lexer = content['language_info'].get('pygments_lexer', '')
try:
@@ -299,7 +302,7 @@
elif pygments_lexer == 'ipython2':
lexer = IPythonLexer()
else:
- lexer = get_lexer_by_name(language_name)
+ lexer = get_lexer_by_name(self.language_name)
self._highlighter._lexer = lexer
except ClassNotFound:
pass
@@ -558,7 +561,8 @@
#------ Trait change handlers --------------------------------------------
- def _style_sheet_changed(self):
+ @observe('style_sheet')
+ def _style_sheet_changed(self, changed=None):
""" Set the style sheets of the underlying widgets.
"""
self.setStyleSheet(self.style_sheet)
@@ -568,7 +572,8 @@
if self._page_control is not None:
self._page_control.document().setDefaultStyleSheet(self.style_sheet)
- def _syntax_style_changed(self):
+ @observe('syntax_style')
+ def _syntax_style_changed(self, changed=None):
""" Set the style for the syntax highlighter.
"""
if self._highlighter is None:
@@ -582,6 +587,7 @@
#------ Trait default initializers
-----------------------------------------
+ @default('banner')
def _banner_default(self):
return "Jupyter QtConsole {version}\n".format(version=__version__)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/qtconsole-4.4.4/qtconsole/kernel_mixins.py
new/qtconsole-4.5.1/qtconsole/kernel_mixins.py
--- old/qtconsole-4.4.4/qtconsole/kernel_mixins.py 2015-12-20
15:40:14.000000000 +0100
+++ new/qtconsole-4.5.1/qtconsole/kernel_mixins.py 2019-05-23
13:25:43.000000000 +0200
@@ -7,6 +7,7 @@
from traitlets import HasTraits, Type
from .util import MetaQObjectHasTraits, SuperQObject
+from .comms import CommManager
class QtKernelRestarterMixin(MetaQObjectHasTraits('NewBase', (HasTraits,
SuperQObject), {})):
@@ -35,6 +36,9 @@
# 'KernelClient' interface
#---------------------------------------------------------------------------
+ def __init__(self, *args, **kwargs):
+ super(QtKernelClientMixin, self).__init__(*args, **kwargs)
+ self.comm_manager = None
#------ Channel management
-------------------------------------------------
def start_channels(self, *args, **kw):
@@ -42,9 +46,11 @@
"""
super(QtKernelClientMixin, self).start_channels(*args, **kw)
self.started_channels.emit()
+ self.comm_manager = CommManager(parent=self, kernel_client=self)
def stop_channels(self):
""" Reimplemented to emit signal.
"""
super(QtKernelClientMixin, self).stop_channels()
self.stopped_channels.emit()
+ self.comm_manager = None
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/qtconsole-4.4.4/qtconsole/tests/test_comms.py
new/qtconsole-4.5.1/qtconsole/tests/test_comms.py
--- old/qtconsole-4.4.4/qtconsole/tests/test_comms.py 1970-01-01
01:00:00.000000000 +0100
+++ new/qtconsole-4.5.1/qtconsole/tests/test_comms.py 2019-05-23
13:25:43.000000000 +0200
@@ -0,0 +1,154 @@
+import time
+import sys
+
+import unittest
+
+from jupyter_client.blocking.channels import Empty
+
+from qtconsole.manager import QtKernelManager
+
+PY2 = sys.version[0] == '2'
+if PY2:
+ TimeoutError = RuntimeError
+
+class Tests(unittest.TestCase):
+
+ def setUp(self):
+ """Open a kernel."""
+ self.kernel_manager = QtKernelManager()
+ self.kernel_manager.start_kernel()
+ self.kernel_client = self.kernel_manager.client()
+ self.kernel_client.start_channels(shell=True, iopub=True)
+ self.blocking_client = self.kernel_client.blocking_client()
+ self.blocking_client.start_channels(shell=True, iopub=True)
+ self.comm_manager = self.kernel_client.comm_manager
+
+ # Check if client is working
+ self.blocking_client.execute('print(0)')
+ try:
+ self._get_next_msg()
+ self._get_next_msg()
+ except TimeoutError:
+ # Maybe it works now?
+ self.blocking_client.execute('print(0)')
+ self._get_next_msg()
+ self._get_next_msg()
+
+
+ def tearDown(self):
+ """Close the kernel."""
+ if self.kernel_manager:
+ self.kernel_manager.shutdown_kernel(now=True)
+ if self.kernel_client:
+ self.kernel_client.shutdown()
+
+ def _get_next_msg(self, timeout=10):
+ # Get status messages
+ timeout_time = time.time() + timeout
+ msg_type = 'status'
+ while msg_type == 'status':
+ if timeout_time < time.time():
+ raise TimeoutError
+ try:
+ msg = self.blocking_client.get_iopub_msg(timeout=3)
+ msg_type = msg['header']['msg_type']
+ except Empty:
+ pass
+ return msg
+
+ def test_kernel_to_frontend(self):
+ """Communicate from the kernel to the frontend."""
+ comm_manager = self.comm_manager
+ blocking_client = self.blocking_client
+
+ class DummyCommHandler():
+ def __init__(self):
+ comm_manager.register_target('test_api', self.comm_open)
+ self.last_msg = None
+
+ def comm_open(self, comm, msg):
+ comm.on_msg(self.comm_message)
+ comm.on_close(self.comm_message)
+ self.last_msg = msg['content']['data']
+ self.comm = comm
+
+ def comm_message(self, msg):
+ self.last_msg = msg['content']['data']
+
+ handler = DummyCommHandler()
+ blocking_client.execute(
+ "from ipykernel.comm import Comm\n"
+ "comm = Comm(target_name='test_api', data='open')\n"
+ "comm.send('message')\n"
+ "comm.close('close')\n"
+ "del comm\n"
+ "print('Done')\n"
+ )
+ # Get input
+ msg = self._get_next_msg()
+ assert msg['header']['msg_type'] == 'execute_input'
+ # Open comm
+ msg = self._get_next_msg()
+ assert msg['header']['msg_type'] == 'comm_open'
+ comm_manager._dispatch(msg)
+ assert handler.last_msg == 'open'
+ assert handler.comm.comm_id == msg['content']['comm_id']
+ # Get message
+ msg = self._get_next_msg()
+ assert msg['header']['msg_type'] == 'comm_msg'
+ comm_manager._dispatch(msg)
+ assert handler.last_msg == 'message'
+ assert handler.comm.comm_id == msg['content']['comm_id']
+ # Get close
+ msg = self._get_next_msg()
+ assert msg['header']['msg_type'] == 'comm_close'
+ comm_manager._dispatch(msg)
+ assert handler.last_msg == 'close'
+ assert handler.comm.comm_id == msg['content']['comm_id']
+ # Get close
+ msg = self._get_next_msg()
+ assert msg['header']['msg_type'] == 'stream'
+
+ def test_frontend_to_kernel(self):
+ """Communicate from the frontend to the kernel."""
+ comm_manager = self.comm_manager
+ blocking_client = self.blocking_client
+ blocking_client.execute(
+ "class DummyCommHandler():\n"
+ " def __init__(self):\n"
+ " get_ipython().kernel.comm_manager.register_target(\n"
+ " 'test_api', self.comm_open)\n"
+ " def comm_open(self, comm, msg):\n"
+ " comm.on_msg(self.comm_message)\n"
+ " comm.on_close(self.comm_message)\n"
+ " print(msg['content']['data'])\n"
+ " def comm_message(self, msg):\n"
+ " print(msg['content']['data'])\n"
+ "dummy = DummyCommHandler()\n"
+ )
+ # Get input
+ msg = self._get_next_msg()
+ assert msg['header']['msg_type'] == 'execute_input'
+ # Open comm
+ comm = comm_manager.new_comm('test_api', data='open')
+ msg = self._get_next_msg()
+ assert msg['header']['msg_type'] == 'stream'
+ assert msg['content']['text'] == 'open\n'
+ # Get message
+ comm.send('message')
+ msg = self._get_next_msg()
+ assert msg['header']['msg_type'] == 'stream'
+ assert msg['content']['text'] == 'message\n'
+ # Get close
+ comm.close('close')
+ msg = self._get_next_msg()
+ # For some reason ipykernel notifies me that it is closing,
+ # even though I closed the comm
+ assert msg['header']['msg_type'] == 'comm_close'
+ assert comm.comm_id == msg['content']['comm_id']
+ msg = self._get_next_msg()
+ assert msg['header']['msg_type'] == 'stream'
+ assert msg['content']['text'] == 'close\n'
+
+if __name__ == "__main__":
+ unittest.main()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/qtconsole-4.4.4/qtconsole.egg-info/PKG-INFO
new/qtconsole-4.5.1/qtconsole.egg-info/PKG-INFO
--- old/qtconsole-4.4.4/qtconsole.egg-info/PKG-INFO 1970-01-01
01:00:00.000000000 +0100
+++ new/qtconsole-4.5.1/qtconsole.egg-info/PKG-INFO 2019-05-27
15:10:44.000000000 +0200
@@ -0,0 +1,100 @@
+Metadata-Version: 2.1
+Name: qtconsole
+Version: 4.5.1
+Summary: Jupyter Qt console
+Home-page: http://jupyter.org
+Author: Jupyter Development Team
+Author-email: [email protected]
+Maintainer: Spyder Development Team
+License: BSD
+Description: # Jupyter QtConsole
+
+ [](https://travis-ci.org/jupyter/qtconsole)
+ [](https://coveralls.io/github/jupyter/qtconsole?branch=master)
+ [](https://qtconsole.readthedocs.io/en/stable/)
+ [](https://groups.google.com/forum/#!forum/jupyter)
+
+ A rich Qt-based console for working with Jupyter kernels,
+ supporting rich media output, session export, and more.
+
+ The Qtconsole is a very lightweight application that largely feels
like a terminal, but
+ provides a number of enhancements only possible in a GUI, such as
inline
+ figures, proper multiline editing with syntax highlighting, graphical
calltips,
+ and more.
+
+

+
+ ## Install Qtconsole
+ The Qtconsole requires Python bindings for Qt, such as
[PyQt5](http://www.riverbankcomputing.com/software/pyqt/intro),
+ [PyQt4](https://www.riverbankcomputing.com/software/pyqt/download),
+ or [PySide](http://pyside.github.io/docs/pyside).
+
+ Although [pip](https://pypi.python.org/pypi/pip) and
+ [conda](http://conda.pydata.org/docs) may be used to install the
Qtconsole, conda
+ is simpler to use since it automatically installs PyQt5. Alternatively,
+ the Qtconsole installation with pip needs additional steps since pip
doesn't install
+ the Qt requirement.
+
+ ### Install using conda
+ To install:
+
+ conda install qtconsole
+
+ **Note:** If the Qtconsole is installed using conda, it will
**automatically**
+ install the Qt requirement as well.
+
+ ### Install using pip
+ To install:
+
+ pip install qtconsole
+
+ **Note:** Make sure that Qt is installed. Unfortunately, Qt is not
+ installed when using pip. The next section gives instructions on doing
it.
+
+ ### Installing Qt (if needed)
+ You can install PyQt5 with pip using the following command:
+
+ pip install pyqt5
+
+ or with a system package manager on Linux. For Windows, PyQt binary
packages may be
+ used.
+
+ **Note:** Additional information about using a system package manager
may be
+ found in the [qtconsole
documentation](https://qtconsole.readthedocs.io).
+
+ More installation instructions for PyQt can be found in the [PyQt5
documentation](http://pyqt.sourceforge.net/Docs/PyQt5/installation.html) and
[PyQt4 documentation](http://pyqt.sourceforge.net/Docs/PyQt4/installation.html)
+
+ Source packages for Windows/Linux/MacOS can be found here:
[PyQt5](https://www.riverbankcomputing.com/software/pyqt/download5) and
[PyQt4](https://riverbankcomputing.com/software/pyqt/download).
+
+
+ ## Usage
+ To run the Qtconsole:
+
+ jupyter qtconsole
+
+ ## Resources
+ - [Project Jupyter website](https://jupyter.org)
+ - Documentation for the Qtconsole
+ * [latest version](https://qtconsole.readthedocs.io/en/latest/)
[[PDF](https://media.readthedocs.org/pdf/qtconsole/latest/qtconsole.pdf)]
+ * [stable version](https://qtconsole.readthedocs.io/en/stable/)
[[PDF](https://media.readthedocs.org/pdf/qtconsole/stable/qtconsole.pdf)]
+ - [Documentation for Project
Jupyter](https://jupyter.readthedocs.io/en/latest/index.html)
[[PDF](https://media.readthedocs.org/pdf/jupyter/latest/jupyter.pdf)]
+ - [Issues](https://github.com/jupyter/qtconsole/issues)
+ - [Technical support - Jupyter Google
Group](https://groups.google.com/forum/#!forum/jupyter)
+
+Keywords: Interactive,Interpreter,Shell
+Platform: Linux
+Platform: Mac OS X
+Platform: Windows
+Classifier: Intended Audience :: Developers
+Classifier: Intended Audience :: System Administrators
+Classifier: Intended Audience :: Science/Research
+Classifier: License :: OSI Approved :: BSD License
+Classifier: Programming Language :: Python
+Classifier: Programming Language :: Python :: 2.7
+Classifier: Programming Language :: Python :: 3
+Classifier: Programming Language :: Python :: 3.5
+Classifier: Programming Language :: Python :: 3.6
+Classifier: Programming Language :: 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-4.4.4/qtconsole.egg-info/SOURCES.txt
new/qtconsole-4.5.1/qtconsole.egg-info/SOURCES.txt
--- old/qtconsole-4.4.4/qtconsole.egg-info/SOURCES.txt 1970-01-01
01:00:00.000000000 +0100
+++ new/qtconsole-4.5.1/qtconsole.egg-info/SOURCES.txt 2019-05-27
15:10:44.000000000 +0200
@@ -0,0 +1,73 @@
+CONTRIBUTING.md
+LICENSE
+MANIFEST.in
+README.md
+setup.cfg
+setup.py
+docs/Makefile
+docs/autogen_config.py
+docs/environment.yml
+docs/gh-pages.py
+docs/source/changelog.rst
+docs/source/conf.py
+docs/source/index.rst
+docs/source/installation.rst
+docs/source/_images/qtconsole.png
+docs/source/figs/besselj.png
+docs/source/figs/colors_dark.png
+docs/source/figs/jn.html
+docs/source/figs/jn.xhtml
+examples/embed_qtconsole.py
+examples/inprocess_qtconsole.py
+examples/jupyter-qtconsole.desktop
+qtconsole/__init__.py
+qtconsole/__main__.py
+qtconsole/_version.py
+qtconsole/ansi_code_processor.py
+qtconsole/base_frontend_mixin.py
+qtconsole/bracket_matcher.py
+qtconsole/call_tip_widget.py
+qtconsole/client.py
+qtconsole/comms.py
+qtconsole/completion_html.py
+qtconsole/completion_plain.py
+qtconsole/completion_widget.py
+qtconsole/console_widget.py
+qtconsole/frontend_widget.py
+qtconsole/history_console_widget.py
+qtconsole/inprocess.py
+qtconsole/ipython_widget.py
+qtconsole/jupyter_widget.py
+qtconsole/kernel_mixins.py
+qtconsole/kill_ring.py
+qtconsole/mainwindow.py
+qtconsole/manager.py
+qtconsole/pygments_highlighter.py
+qtconsole/qt.py
+qtconsole/qt_loaders.py
+qtconsole/qtconsoleapp.py
+qtconsole/rich_ipython_widget.py
+qtconsole/rich_jupyter_widget.py
+qtconsole/rich_text.py
+qtconsole/styles.py
+qtconsole/svg.py
+qtconsole/usage.py
+qtconsole/util.py
+qtconsole.egg-info/PKG-INFO
+qtconsole.egg-info/SOURCES.txt
+qtconsole.egg-info/dependency_links.txt
+qtconsole.egg-info/entry_points.txt
+qtconsole.egg-info/requires.txt
+qtconsole.egg-info/top_level.txt
+qtconsole/resources/icon/JupyterConsole.svg
+qtconsole/tests/__init__.py
+qtconsole/tests/test_ansi_code_processor.py
+qtconsole/tests/test_app.py
+qtconsole/tests/test_comms.py
+qtconsole/tests/test_completion_widget.py
+qtconsole/tests/test_console_widget.py
+qtconsole/tests/test_frontend_widget.py
+qtconsole/tests/test_jupyter_widget.py
+qtconsole/tests/test_kill_ring.py
+qtconsole/tests/test_styles.py
+scripts/jupyter-qtconsole
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/qtconsole-4.4.4/qtconsole.egg-info/dependency_links.txt
new/qtconsole-4.5.1/qtconsole.egg-info/dependency_links.txt
--- old/qtconsole-4.4.4/qtconsole.egg-info/dependency_links.txt 1970-01-01
01:00:00.000000000 +0100
+++ new/qtconsole-4.5.1/qtconsole.egg-info/dependency_links.txt 2019-05-27
15:10:44.000000000 +0200
@@ -0,0 +1 @@
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/qtconsole-4.4.4/qtconsole.egg-info/entry_points.txt
new/qtconsole-4.5.1/qtconsole.egg-info/entry_points.txt
--- old/qtconsole-4.4.4/qtconsole.egg-info/entry_points.txt 1970-01-01
01:00:00.000000000 +0100
+++ new/qtconsole-4.5.1/qtconsole.egg-info/entry_points.txt 2019-05-27
15:10:44.000000000 +0200
@@ -0,0 +1,3 @@
+[gui_scripts]
+jupyter-qtconsole = qtconsole.qtconsoleapp:main
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/qtconsole-4.4.4/qtconsole.egg-info/requires.txt
new/qtconsole-4.5.1/qtconsole.egg-info/requires.txt
--- old/qtconsole-4.4.4/qtconsole.egg-info/requires.txt 1970-01-01
01:00:00.000000000 +0100
+++ new/qtconsole-4.5.1/qtconsole.egg-info/requires.txt 2019-05-27
15:10:44.000000000 +0200
@@ -0,0 +1,15 @@
+traitlets
+ipython_genutils
+jupyter_core
+jupyter_client>=4.1
+pygments
+ipykernel>=4.1
+
+[doc]
+Sphinx>=1.3
+
+[test]
+pytest
+
+[test:python_version=="2.7"]
+mock
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/qtconsole-4.4.4/qtconsole.egg-info/top_level.txt
new/qtconsole-4.5.1/qtconsole.egg-info/top_level.txt
--- old/qtconsole-4.4.4/qtconsole.egg-info/top_level.txt 1970-01-01
01:00:00.000000000 +0100
+++ new/qtconsole-4.5.1/qtconsole.egg-info/top_level.txt 2019-05-27
15:10:44.000000000 +0200
@@ -0,0 +1 @@
+qtconsole
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/qtconsole-4.4.4/setup.cfg
new/qtconsole-4.5.1/setup.cfg
--- old/qtconsole-4.4.4/setup.cfg 2018-08-12 00:38:18.000000000 +0200
+++ new/qtconsole-4.5.1/setup.cfg 2019-05-27 15:10:45.000000000 +0200
@@ -1,5 +1,7 @@
[bdist_wheel]
-universal=1
+universal = 1
+
+[egg_info]
+tag_build =
+tag_date = 0
-[metadata]
-license_file = LICENSE
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/qtconsole-4.4.4/setup.py new/qtconsole-4.5.1/setup.py
--- old/qtconsole-4.4.4/setup.py 2018-11-10 04:10:20.000000000 +0100
+++ new/qtconsole-4.5.1/setup.py 2019-05-26 14:11:39.000000000 +0200
@@ -27,14 +27,14 @@
# get on with it
#-----------------------------------------------------------------------------
-import os
from glob import glob
+import io
+import os
-from distutils.core import setup
+from setuptools import setup
pjoin = os.path.join
here = os.path.abspath(os.path.dirname(__file__))
-pkg_root = pjoin(here, name)
packages = []
for d, _, _ in os.walk(pjoin(here, name)):
@@ -49,22 +49,45 @@
with open(pjoin(here, name, '_version.py')) as f:
exec(f.read(), {}, version_ns)
+with io.open(os.path.join(here, 'README.md'), encoding='utf-8') as f:
+ long_description = f.read()
+
setup_args = dict(
- name = name,
- version = version_ns['__version__'],
- scripts = glob(pjoin('scripts', '*')),
- packages = packages,
- package_data = package_data,
- description = "Jupyter Qt console",
- long_description= "Qt-based console for Jupyter with support for rich
media output",
- author = 'Jupyter Development Team',
- author_email = '[email protected]',
- url = 'http://jupyter.org',
- license = 'BSD',
- platforms = "Linux, Mac OS X, Windows",
- keywords = ['Interactive', 'Interpreter', 'Shell'],
- classifiers = [
+ name = name,
+ version = version_ns['__version__'],
+ scripts = glob(pjoin('scripts', '*')),
+ packages = packages,
+ package_data = package_data,
+ description = "Jupyter Qt console",
+ long_description = long_description,
+ long_description_content_type = 'text/markdown',
+ author = 'Jupyter Development Team',
+ author_email = '[email protected]',
+ maintainer = 'Spyder Development Team',
+ url = 'http://jupyter.org',
+ license = 'BSD',
+ platforms = "Linux, Mac OS X, Windows",
+ keywords = ['Interactive', 'Interpreter', 'Shell'],
+ install_requires = [
+ 'traitlets',
+ 'ipython_genutils',
+ 'jupyter_core',
+ 'jupyter_client>=4.1',
+ 'pygments',
+ 'ipykernel>=4.1', # not a real dependency, but require the reference
kernel
+ ],
+ extras_require = {
+ 'test': ['pytest'],
+ 'test:python_version=="2.7"': ['mock'],
+ 'doc': 'Sphinx>=1.3',
+ },
+ entry_points = {
+ 'gui_scripts': [
+ 'jupyter-qtconsole = qtconsole.qtconsoleapp:main',
+ ]
+ },
+ classifiers = [
'Intended Audience :: Developers',
'Intended Audience :: System Administrators',
'Intended Audience :: Science/Research',
@@ -72,39 +95,11 @@
'Programming Language :: Python',
'Programming Language :: Python :: 2.7',
'Programming Language :: Python :: 3',
- 'Programming Language :: Python :: 3.3',
- 'Programming Language :: Python :: 3.4',
'Programming Language :: Python :: 3.5',
+ 'Programming Language :: Python :: 3.6',
+ 'Programming Language :: Python :: 3.7',
],
)
-if 'develop' in sys.argv or any(a.startswith('bdist') for a in sys.argv):
- import setuptools
-
-setuptools_args = {}
-install_requires = setuptools_args['install_requires'] = [
- 'traitlets',
- 'ipython_genutils',
- 'jupyter_core',
- 'jupyter_client>=4.1',
- 'pygments',
- 'ipykernel>=4.1', # not a real dependency, but require the reference kernel
-]
-
-extras_require = setuptools_args['extras_require'] = {
- 'test': ['pytest'],
- 'test:python_version=="2.7"': ['mock'],
- 'doc': 'Sphinx>=1.3',
-}
-
-if 'setuptools' in sys.modules:
- setup_args['entry_points'] = {
- 'gui_scripts': [
- 'jupyter-qtconsole = qtconsole.qtconsoleapp:main',
- ]
- }
- setup_args.pop('scripts')
- setup_args.update(setuptools_args)
-
if __name__ == '__main__':
setup(**setup_args)
++++++ qtconsole.pdf ++++++
(binary differes)
++++++ qtconsole.zip ++++++
Binary files /var/tmp/diff_new_pack.PF44Nb/_old and
/var/tmp/diff_new_pack.PF44Nb/_new differ