Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-jupyter_console for
openSUSE:Factory checked in at 2021-04-15 16:58:03
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-jupyter_console (Old)
and /work/SRC/openSUSE:Factory/.python-jupyter_console.new.12324 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-jupyter_console"
Thu Apr 15 16:58:03 2021 rev:16 rq:885594 version:6.4.0
Changes:
--------
---
/work/SRC/openSUSE:Factory/python-jupyter_console/python-jupyter_console.changes
2021-02-15 23:16:56.575453396 +0100
+++
/work/SRC/openSUSE:Factory/.python-jupyter_console.new.12324/python-jupyter_console.changes
2021-04-15 16:58:45.274801256 +0200
@@ -1,0 +2,7 @@
+Wed Apr 14 16:06:32 UTC 2021 - Ben Greiner <[email protected]>
+
+- Update to 6.4.0
+ * no release notes
+- Drop python-jupyter_console-remove-nose.patch merged upstream
+
+-------------------------------------------------------------------
Old:
----
jupyter_console-6.1.0.tar.gz
python-jupyter_console-remove-nose.patch
New:
----
jupyter_console-6.4.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-jupyter_console.spec ++++++
--- /var/tmp/diff_new_pack.PcEee5/_old 2021-04-15 16:58:45.818802118 +0200
+++ /var/tmp/diff_new_pack.PcEee5/_new 2021-04-15 16:58:45.822802124 +0200
@@ -19,14 +19,12 @@
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
%define skip_python2 1
Name: python-jupyter_console
-Version: 6.1.0
+Version: 6.4.0
Release: 0
Summary: Jupyter terminal console
License: BSD-3-Clause
URL: https://github.com/jupyter/jupyter_console
Source0:
https://files.pythonhosted.org/packages/source/j/jupyter_console/jupyter_console-%{version}.tar.gz
-# https://github.com/jupyter/jupyter_console/pull/230
-Patch0: python-jupyter_console-remove-nose.patch
BuildRequires: %{python_module setuptools}
BuildRequires: fdupes
BuildRequires: python-rpm-macros
@@ -47,7 +45,7 @@
Requires: python-prompt_toolkit >= 2
Requires: python-pyzmq
Requires(post): update-alternatives
-Requires(postun): update-alternatives
+Requires(postun):update-alternatives
Provides: python-jupyter-console = %{version}-%{release}
%if "%{python_flavor}" == "python3" || "%{python_provides}" == "python3"
Provides: jupyter-jupyter_console = %{version}-%{release}
@@ -64,7 +62,6 @@
%prep
%setup -q -n jupyter_console-%{version}
-%patch0 -p1
# always build and install with setuptools: it is needed to get the entrypoint
gh#jupyter/jupyter_console#222
sed -i '/import sys/ a import setuptools' setup.py
++++++ jupyter_console-6.1.0.tar.gz -> jupyter_console-6.4.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/jupyter_console-6.1.0/.bumpversion.cfg
new/jupyter_console-6.4.0/.bumpversion.cfg
--- old/jupyter_console-6.1.0/.bumpversion.cfg 1970-01-01 01:00:00.000000000
+0100
+++ new/jupyter_console-6.4.0/.bumpversion.cfg 2021-03-24 01:03:14.000000000
+0100
@@ -0,0 +1,18 @@
+[bumpversion]
+current_version = 6.4.0
+parse = (?P<major>\d+)\.(?P<minor>\d+)\.(?P<patch>\d+)(.(?P<suffix>.+))?
+serialize =
+ {major}.{minor}.{patch}.{suffix}
+ {major}.{minor}.{patch}
+
+[bumpversion:part:suffix]
+optional_value = final
+values =
+ dev
+ final
+
+[bumpversion:file:jupyter_console/_version.py]
+parse =
(?P<major>\d+),\s*(?P<minor>\d+),\s*(?P<patch>\d+)(,\s*['"](?P<suffix>\w+)['"])?
+serialize =
+ {major}, {minor}, {patch}, '{suffix}'
+ {major}, {minor}, {patch}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/jupyter_console-6.1.0/.github/workflows/python-package.yml
new/jupyter_console-6.4.0/.github/workflows/python-package.yml
--- old/jupyter_console-6.1.0/.github/workflows/python-package.yml
1970-01-01 01:00:00.000000000 +0100
+++ new/jupyter_console-6.4.0/.github/workflows/python-package.yml
2021-03-24 00:58:51.000000000 +0100
@@ -0,0 +1,37 @@
+# This workflow will install Python dependencies, run tests and lint with a
variety of Python versions
+# For more information see:
https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions
+
+name: Python package
+
+on:
+ push:
+ branches: [ master ]
+ pull_request:
+ branches: [ master ]
+
+jobs:
+ build:
+
+ runs-on: ubuntu-latest
+ strategy:
+ matrix:
+ python-version: [3.6, 3.7, 3.8]
+
+ steps:
+ - uses: actions/checkout@v2
+ - name: Set up Python ${{ matrix.python-version }}
+ uses: actions/setup-python@v2
+ with:
+ python-version: ${{ matrix.python-version }}
+ - name: Install dependencies
+ run: |
+ python -m pip install --upgrade pip check-manifest
+ pip install pytest pytest-cov
+ pip install .
+ python -m ipykernel.kernelspec --user
+ - name: Test with pytest
+ run: |
+ pytest --cov jupyter_console
+ - name: Check Manifest
+ run: |
+ check-manifest
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/jupyter_console-6.1.0/.gitignore
new/jupyter_console-6.4.0/.gitignore
--- old/jupyter_console-6.1.0/.gitignore 1970-01-01 01:00:00.000000000
+0100
+++ new/jupyter_console-6.4.0/.gitignore 2021-03-15 16:18:51.000000000
+0100
@@ -0,0 +1,19 @@
+MANIFEST
+build
+dist
+_build
+docs/gh-pages
+docs/config_options.rst
+*.py[co]
+__pycache__
+*.egg-info
+*~
+*.bak
+.ipynb_checkpoints
+.tox
+.DS_Store
+\#*#
+.#*
+.coverage
+# PyCharm project cache
+.idea
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/jupyter_console-6.1.0/.mailmap
new/jupyter_console-6.4.0/.mailmap
--- old/jupyter_console-6.1.0/.mailmap 1970-01-01 01:00:00.000000000 +0100
+++ new/jupyter_console-6.4.0/.mailmap 2015-05-24 21:45:12.000000000 +0200
@@ -0,0 +1,149 @@
+A. J. Holyoake <[email protected]> ajholyoake <[email protected]>
+Aaron Culich <[email protected]> Aaron Culich <[email protected]>
+Aron Ahmadia <[email protected]> ahmadia <[email protected]>
+Benjamin Ragan-Kelley <[email protected]> <[email protected]>
+Benjamin Ragan-Kelley <[email protected]> Min RK
+Benjamin Ragan-Kelley <[email protected]> MinRK <[email protected]>
+Barry Wark <[email protected]> Barry Wark <barrywarkatgmaildotcom>
+Ben Edwards <[email protected]> Ben Edwards <bedwards@sausage.(none)>
+Bradley M. Froehle <[email protected]> Bradley M. Froehle
<[email protected]>
+Bradley M. Froehle <[email protected]> Bradley Froehle
<[email protected]>
+Brandon Parsons <[email protected]> Brandon Parsons
<[email protected]>
+Brian E. Granger <[email protected]> Brian Granger
+Brian E. Granger <[email protected]> Brian Granger <>
+Brian E. Granger <[email protected]> bgranger <>
+Brian E. Granger <[email protected]> bgranger <bgranger@red>
+Christoph Gohlke <[email protected]> cgohlke <[email protected]>
+Cyrille Rossant <[email protected]> rossant <rossant@github>
+Dami??n Avila <[email protected]> damianavila
<[email protected]>
+Dami??n Avila <[email protected]> damianavila <[email protected]>
+Damon Allen <[email protected]> damontallen <[email protected]>
+Darren Dale <[email protected]> darren.dale <>
+Darren Dale <[email protected]> Darren Dale <>
+Dav Clark <[email protected]> Dav Clark <>
+Dav Clark <[email protected]> Dav Clark <[email protected]>
+David Hirschfeld <[email protected]> dhirschfeld
<[email protected]>
+David P. Sanders <[email protected]> David P. Sanders
<[email protected]>
+David Warde-Farley <[email protected]> David Warde-Farley <>
+Doug Blank <[email protected]> Doug Blank <[email protected]>
+Eugene Van den Bulke <[email protected]> Eugene Van den Bulke
<[email protected]>
+Evan Patterson <[email protected]>
<[email protected]>
+Evan Patterson <[email protected]> <[email protected]>
+Evan Patterson <[email protected]> <[email protected]>
+Evan Patterson <[email protected]> <[email protected]>
+Evan Patterson <[email protected]> epatters <[email protected]>
+Evan Patterson <[email protected]> epatters <[email protected]>
+Ernie French <[email protected]> Ernie French <[email protected]>
+Ernie French <[email protected]> ernie french <[email protected]>
+Ernie French <[email protected]> ernop <[email protected]>
+Fernando Perez <[email protected]> <[email protected]>
+Fernando Perez <[email protected]> Fernando Perez
<[email protected]>
+Fernando Perez <[email protected]> fperez <>
+Fernando Perez <[email protected]> fptest <>
+Fernando Perez <[email protected]> fptest1 <>
+Fernando Perez <[email protected]> Fernando Perez
<[email protected]>
+Fernando Perez <[email protected]> Fernando Perez <>
+Fernando Perez <[email protected]> Fernando Perez <fperez@maqroll>
+Frank Murphy <[email protected]> Frank Murphy <[email protected]>
+Gabriel Becker <[email protected]> gmbecker <[email protected]>
+Gael Varoquaux <[email protected]> gael.varoquaux <>
+Gael Varoquaux <[email protected]> gvaroquaux
<gvaroquaux@gvaroquaux-desktop>
+Gael Varoquaux <[email protected]> Gael Varoquaux <>
+Ingolf Becker <[email protected]> watercrossing
<[email protected]>
+Jake Vanderplas <[email protected]> Jake Vanderplas
<[email protected]>
+Jakob Gager <[email protected]> jakobgager <[email protected]>
+Jakob Gager <[email protected]> jakobgager <[email protected]>
+Jakob Gager <[email protected]> jakobgager <[email protected]>
+Jason Grout <[email protected]> <[email protected]>
+Jason Grout <[email protected]> <[email protected]>
+Jason Gors <[email protected]> jason gors <[email protected]>
+Jason Gors <[email protected]> jgors <[email protected]>
+Jens Hedegaard Nielsen <[email protected]> Jens Hedegaard Nielsen
<jhn@jhn-Znote.(none)>
+Jens Hedegaard Nielsen <[email protected]> Jens H Nielsen
<[email protected]>
+Jens Hedegaard Nielsen <[email protected]> Jens H. Nielsen
<[email protected]>
+Jez Ng <[email protected]> Jez Ng <[email protected]>
+Jonathan Frederic <[email protected]> Jonathan Frederic
<jonathan@LifebookMint.(none)>
+Jonathan Frederic <[email protected]> Jonathan Frederic
<[email protected]>
+Jonathan Frederic <[email protected]> Jonathan Frederic
<[email protected]>
+Jonathan Frederic <[email protected]> jon <[email protected]>
+Jonathan Frederic <[email protected]> U-Jon-PC\Jon <Jon@Jon-PC.(none)>
+Jonathan March <[email protected]> Jonathan March <[email protected]>
+Jonathan March <[email protected]> jdmarch <[email protected]>
+J??rgen Stenarson <[email protected]> J??rgen Stenarson
<[email protected]>
+J??rgen Stenarson <[email protected]> Jorgen Stenarson
<[email protected]>
+J??rgen Stenarson <[email protected]> Jorgen Stenarson <>
+J??rgen Stenarson <[email protected]> jstenar
<[email protected]>
+J??rgen Stenarson <[email protected]> jstenar <>
+J??rgen Stenarson <[email protected]> J????rgen Stenarson
<[email protected]>
+Juergen Hasch <[email protected]> juhasch <[email protected]>
+Juergen Hasch <[email protected]> juhasch <[email protected]>
+Julia Evans <[email protected]> Julia Evans <[email protected]>
+Kester Tong <[email protected]> KesterTong <[email protected]>
+Kyle Kelley <[email protected]> Kyle Kelley <[email protected]>
+Kyle Kelley <[email protected]> rgbkrk <[email protected]>
+Laurent Dufr??chou <[email protected]> <[email protected]>
+Laurent Dufr??chou <[email protected]> <laurent@Pep>
+Laurent Dufr??chou <[email protected]> laurent dufrechou <>
+Laurent Dufr??chou <[email protected]> laurent.dufrechou <>
+Laurent Dufr??chou <[email protected]> Laurent Dufrechou <>
+Laurent Dufr??chou <[email protected]> [email protected] <>
+Laurent Dufr??chou <[email protected]> ldufrechou <ldufrechou@PEP>
+Lorena Pantano <[email protected]> Lorena <[email protected]>
+Luis Pedro Coelho <[email protected]> Luis Pedro Coelho <[email protected]>
+Marc Molla <[email protected]> marcmolla <[email protected]>
+Mart??n Gait??n <[email protected]> Mart??n Gait??n <[email protected]>
+Matthias Bussonnier <[email protected]> Matthias BUSSONNIER
<[email protected]>
+Matthias Bussonnier <[email protected]> Bussonnier Matthias
<[email protected]>
+Matthias Bussonnier <[email protected]> Matthias BUSSONNIER
<[email protected]>
+Matthias Bussonnier <[email protected]> Matthias Bussonnier
<carreau@Aspire.(none)>
+Michael Droettboom <[email protected]> Michael Droettboom <[email protected]>
+Nicholas Bollweg <[email protected]> Nicholas Bollweg (Nick)
<[email protected]>
+Nicolas Rougier <[email protected]> <[email protected]>
+Nikolay Koldunov <[email protected]> Nikolay Koldunov
<[email protected]>
+Omar Andr??s Zapata Mesa <[email protected]> Omar Andres Zapata Mesa
<[email protected]>
+Omar Andr??s Zapata Mesa <[email protected]> Omar Andres Zapata Mesa
<omazapa@tuxhome>
+Pankaj Pandey <[email protected]> Pankaj Pandey <[email protected]>
+Pascal Schetelat <[email protected]> pascal-schetelat
<[email protected]>
+Paul Ivanov <[email protected]> Paul Ivanov <[email protected]>
+Pauli Virtanen <[email protected]> Pauli Virtanen <>
+Pauli Virtanen <[email protected]> Pauli Virtanen <[email protected]>
+Pierre Gerold <[email protected]> Pierre Gerold <[email protected]>
+Pietro Berkes <[email protected]> Pietro Berkes
<[email protected]>
+Piti Ongmongkolkul <[email protected]> piti118 <[email protected]>
+Prabhu Ramachandran <[email protected]> Prabhu Ramachandran <>
+Puneeth Chaganti <[email protected]> Puneeth Chaganti
<[email protected]>
+Robert Kern <[email protected]> rkern <>
+Robert Kern <[email protected]> Robert Kern <[email protected]>
+Robert Kern <[email protected]> Robert Kern <[email protected]>
+Robert Kern <[email protected]> Robert Kern <>
+Robert Marchman <[email protected]> Robert Marchman
<[email protected]>
+Satrajit Ghosh <[email protected]> Satrajit Ghosh <[email protected]>
+Satrajit Ghosh <[email protected]> Satrajit Ghosh <[email protected]>
+Scott Sanderson <[email protected]> Scott Sanderson
<[email protected]>
+smithj1 <[email protected]> smithj1 <[email protected]>
+smithj1 <[email protected]> smithj1 <[email protected]>
+Steven Johnson <[email protected]> stevenJohnson
<[email protected]>
+Steven Silvester <[email protected]> blink1073
<[email protected]>
+S. Weber <[email protected]> s8weber <[email protected]>
+Stefan van der Walt <[email protected]> Stefan van der Walt <[email protected]>
+Silvia Vinyes <[email protected]> Silvia <silvia@silvia-U44SG.(none)>
+Silvia Vinyes <[email protected]> silviav12 <[email protected]>
+Sylvain Corlay <[email protected]> <[email protected]>
+Sylvain Corlay <[email protected]> sylvain.corlay
<[email protected]>
+Ted Drain <[email protected]> TD22057 <[email protected]>
+Th??ophile Studer <[email protected]> Th??ophile Studer
<[email protected]>
+Thomas Kluyver <[email protected]> Thomas <[email protected]>
+Thomas Spura <[email protected]> Thomas Spura <[email protected]>
+Timo Paulssen <[email protected]> timo
<[email protected]>
+vds <vds@VIVIAN> vds2212 <vds2212@VIVIAN>
+vds <vds@VIVIAN> vds <vds@vivian>
+Ville M. Vainio <[email protected]> <vivainio2@WN-W0941>
+Ville M. Vainio <[email protected]> ville <ville@VILLE-PC>
+Ville M. Vainio <[email protected]> ville <ville@ville-desktop>
+Ville M. Vainio <[email protected]> vivainio <>
+Ville M. Vainio <[email protected]> Ville M. Vainio <vivainio@villev>
+Ville M. Vainio <[email protected]> Ville M. Vainio <vivainio@ville_vmw>
+Walter Doerwald <[email protected]> walter.doerwald <>
+Walter Doerwald <[email protected]> Walter Doerwald <>
+W. Trevor King <[email protected]> W. Trevor King <[email protected]>
+Yoval P. <[email protected]> y-p <[email protected]>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/jupyter_console-6.1.0/MANIFEST.in
new/jupyter_console-6.4.0/MANIFEST.in
--- old/jupyter_console-6.1.0/MANIFEST.in 2020-01-16 00:32:32.000000000
+0100
+++ new/jupyter_console-6.4.0/MANIFEST.in 2021-03-15 16:18:51.000000000
+0100
@@ -4,6 +4,7 @@
# Documentation
graft docs
+graft scripts
exclude docs/\#*
# Examples
@@ -20,3 +21,10 @@
global-exclude *.pyo
global-exclude .git
global-exclude .ipynb_checkpoints
+
+include *.md
+include *.yml
+include .bumpversion.cfg
+include mypy.ini
+include pytest.ini
+include .mailmap
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/jupyter_console-6.1.0/PKG-INFO
new/jupyter_console-6.4.0/PKG-INFO
--- old/jupyter_console-6.1.0/PKG-INFO 2020-01-16 23:11:15.000000000 +0100
+++ new/jupyter_console-6.4.0/PKG-INFO 2021-03-24 01:04:09.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: jupyter_console
-Version: 6.1.0
+Version: 6.4.0
Summary: Jupyter terminal console
Home-page: https://jupyter.org
Author: Jupyter Development Team
@@ -17,5 +17,5 @@
Classifier: License :: OSI Approved :: BSD License
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
-Requires-Python: >=3.5
+Requires-Python: >=3.6
Provides-Extra: test
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/jupyter_console-6.1.0/README.md
new/jupyter_console-6.4.0/README.md
--- old/jupyter_console-6.1.0/README.md 2020-01-16 00:32:32.000000000 +0100
+++ new/jupyter_console-6.4.0/README.md 2021-03-15 16:18:51.000000000 +0100
@@ -33,6 +33,14 @@
jupyter kernelspec list
+### Release build:
+
+```bash
+$ pip install pep517
+$ python -m pep517.build .
+```
+
+
## Resources
- [Project Jupyter website](https://jupyter.org)
- [Documentation for Jupyter
Console](https://jupyter-console.readthedocs.io/en/latest/)
[[PDF](https://media.readthedocs.org/pdf/jupyter-console/latest/jupyter-notebook.pdf)]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/jupyter_console-6.1.0/RELEASING.md
new/jupyter_console-6.4.0/RELEASING.md
--- old/jupyter_console-6.1.0/RELEASING.md 1970-01-01 01:00:00.000000000
+0100
+++ new/jupyter_console-6.4.0/RELEASING.md 2021-03-24 00:41:21.000000000
+0100
@@ -0,0 +1,36 @@
+# Releasing
+
+## Prerequisites
+
+- Install `bump2version`
+- Install `twine`
+
+## Push to GitHub
+
+Change from patch to minor or major for appropriate version updates.
+
+```bash
+# Commit, test, publish, tag release
+bump2version minor # CHECK FIRST: If the patch version currently set is not
sufficient
+git commit -am "Prepared <release-id>"
+bump2version suffix # Remove the .dev
+git commit -am "Generated release <release-id>"
+git tag <release_version_here>
+git push && git push --tags
+```
+
+## Push to PyPI
+
+```bash
+rm -rf dist/*
+rm -rf build/*
+python setup.py sdist bdist_wheel
+# Double check the dist/* files have the right verison (no `.dev`) and install
the wheel to ensure it's good
+pip install dist/*
+twine upload dist/*
+```
+
+## Prep repo for development
+
+- `bumpversion patch # Resets the patch and dev versions`
+- `git commit -am "Resumed patch dev"; git push`
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/jupyter_console-6.1.0/docs/index.rst
new/jupyter_console-6.4.0/docs/index.rst
--- old/jupyter_console-6.1.0/docs/index.rst 2020-01-16 00:32:32.000000000
+0100
+++ new/jupyter_console-6.4.0/docs/index.rst 2021-03-15 16:18:51.000000000
+0100
@@ -4,11 +4,11 @@
The Jupyter console is a terminal frontend for kernels using the Jupyter
protocol.
The console can be installed with::
- pip install jupyter-console
+ pip install jupyter_console
If you want to use conda instead to perform your installation::
- conda install -c conda-forge jupyter-console
+ conda install -c conda-forge jupyter_console
And started with::
@@ -20,7 +20,7 @@
To start the console with a particular kernel, ask for it by name::
- jupyter console --kernel=julia-0.4
+ jupyter console --kernel=julia-1.4
A list of available kernels can be seen with::
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/jupyter_console-6.1.0/jupyter_console/_version.py
new/jupyter_console-6.4.0/jupyter_console/_version.py
--- old/jupyter_console-6.1.0/jupyter_console/_version.py 2020-01-16
23:09:54.000000000 +0100
+++ new/jupyter_console-6.4.0/jupyter_console/_version.py 2021-03-24
01:03:14.000000000 +0100
@@ -5,6 +5,6 @@
See PEP 440 https://www.python.org/dev/peps/pep-0440/
"""
-version_info = (6, 1, 0)
+version_info = (6, 4, 0)
__version__ = '.'.join(map(str, version_info[:3])) + ''.join(version_info[3:])
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/jupyter_console-6.1.0/jupyter_console/app.py
new/jupyter_console-6.4.0/jupyter_console/app.py
--- old/jupyter_console-6.1.0/jupyter_console/app.py 2020-01-16
00:32:32.000000000 +0100
+++ new/jupyter_console-6.4.0/jupyter_console/app.py 2021-03-16
16:25:55.000000000 +0100
@@ -9,7 +9,6 @@
from __future__ import print_function
-import logging
import signal
import sys
@@ -18,7 +17,7 @@
)
from traitlets.config import catch_config_error, boolean_flag
-from jupyter_core.application import JupyterApp, base_aliases, base_flags,
NoStart
+from jupyter_core.application import JupyterApp, base_aliases, base_flags
from jupyter_client.consoleapp import (
JupyterConsoleApp, app_aliases, app_flags,
)
@@ -42,9 +41,8 @@
# copy flags from mixin:
flags = dict(base_flags)
# start with mixin frontend flags:
-frontend_flags = dict(app_flags)
# update full dict with frontend flags:
-flags.update(frontend_flags)
+flags.update(app_flags)
flags.update(boolean_flag(
'simple-prompt', 'ZMQTerminalInteractiveShell.simple_prompt',
"Force simple minimal prompt using `raw_input`",
@@ -53,15 +51,11 @@
# copy flags from mixin
aliases = dict(base_aliases)
-# start with mixin frontend flags
-frontend_aliases = dict(app_aliases)
-# load updated frontend flags into full dict
-aliases.update(frontend_aliases)
-
-# get flags&aliases into sets, and remove a couple that
-# shouldn't be scrubbed from backend flags:
-frontend_aliases = set(frontend_aliases.keys())
-frontend_flags = set(frontend_flags.keys())
+
+aliases.update(app_aliases)
+
+frontend_aliases = set(app_aliases.keys())
+frontend_flags = set(app_flags.keys())
#-----------------------------------------------------------------------------
@@ -146,8 +140,6 @@
def init_banner(self):
"""optionally display the banner"""
self.shell.show_banner()
- # Make sure there is a space below the banner.
- #if self.log_level <= logging.INFO: print()
def start(self):
# JupyterApp.start dispatches on NoStart
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/jupyter_console-6.1.0/jupyter_console/completer.py
new/jupyter_console-6.4.0/jupyter_console/completer.py
--- old/jupyter_console-6.1.0/jupyter_console/completer.py 2020-01-16
00:32:32.000000000 +0100
+++ new/jupyter_console-6.4.0/jupyter_console/completer.py 2021-03-15
16:18:51.000000000 +0100
@@ -4,11 +4,6 @@
# Copyright (c) IPython Development Team.
# Distributed under the terms of the Modified BSD License.
-try:
- from queue import Empty # Py 3
-except ImportError:
- from Queue import Empty # Py 2
-
from traitlets.config import Configurable
from traitlets import Float
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/jupyter_console-6.1.0/jupyter_console/ptshell.py
new/jupyter_console-6.4.0/jupyter_console/ptshell.py
--- old/jupyter_console-6.1.0/jupyter_console/ptshell.py 2020-01-16
00:32:32.000000000 +0100
+++ new/jupyter_console-6.4.0/jupyter_console/ptshell.py 2021-03-24
00:58:34.000000000 +0100
@@ -1,6 +1,7 @@
"""IPython terminal interface using prompt_toolkit in place of readline"""
from __future__ import print_function
+import asyncio
import base64
import errno
from getpass import getpass
@@ -10,33 +11,59 @@
import signal
import subprocess
import sys
+from tempfile import TemporaryDirectory
import time
from warnings import warn
+from typing import Dict as DictType, Any as AnyType
+
from zmq import ZMQError
from IPython.core import page
-from ipython_genutils.tempdir import NamedFileInTemporaryDirectory
-from traitlets import (Bool, Integer, Float, Unicode, List, Dict, Enum,
- Instance, Any)
+from traitlets import (
+ Bool,
+ Integer,
+ Float,
+ Unicode,
+ List,
+ Dict,
+ Enum,
+ Instance,
+ Any,
+)
from traitlets.config import SingletonConfigurable
from .completer import ZMQCompleter
from .zmqhistory import ZMQHistoryManager
from . import __version__
+# Discriminate version3 for asyncio
+from prompt_toolkit import __version__ as ptk_version
+PTK3 = ptk_version.startswith('3.')
+
+if not PTK3:
+ # use_ayncio_event_loop obsolete in PKT3
+ from prompt_toolkit.eventloop.defaults import use_asyncio_event_loop
+
from prompt_toolkit.completion import Completer, Completion
from prompt_toolkit.document import Document
from prompt_toolkit.enums import DEFAULT_BUFFER, EditingMode
-from prompt_toolkit.filters import (Condition, has_focus, has_selection,
- vi_insert_mode, emacs_insert_mode, is_done)
+from prompt_toolkit.filters import (
+ Condition,
+ has_focus,
+ has_selection,
+ vi_insert_mode,
+ emacs_insert_mode,
+ is_done,
+)
from prompt_toolkit.history import InMemoryHistory
-from prompt_toolkit.patch_stdout import patch_stdout
from prompt_toolkit.shortcuts.prompt import PromptSession
-from prompt_toolkit.shortcuts import print_formatted_text
+from prompt_toolkit.shortcuts import print_formatted_text, CompleteStyle
from prompt_toolkit.key_binding import KeyBindings
from prompt_toolkit.lexers import PygmentsLexer
-from prompt_toolkit.layout.processors import (ConditionalProcessor,
-
HighlightMatchingBracketProcessor)
+from prompt_toolkit.layout.processors import (
+ ConditionalProcessor,
+ HighlightMatchingBracketProcessor,
+)
from prompt_toolkit.styles import merge_styles
from prompt_toolkit.styles.pygments import (style_from_pygments_cls,
style_from_pygments_dict)
@@ -83,6 +110,15 @@
return answers[ans]
+async def async_input(prompt, loop=None):
+ """Simple async version of input using a the default executor"""
+ if loop is None:
+ loop = asyncio.get_event_loop()
+
+ raw = await loop.run_in_executor(None, input, prompt)
+ return raw
+
+
def get_pygments_lexer(name):
name = name.lower()
if name == 'ipython2':
@@ -113,9 +149,26 @@
code=document.text,
cursor_pos=document.cursor_position
)
- start_pos = content['cursor_start'] - document.cursor_position
- for m in content['matches']:
- yield Completion(m, start_position=start_pos)
+ meta = content["metadata"]
+
+ if "_jupyter_types_experimental" in meta:
+ try:
+ new_meta = {}
+ for c, m in zip(
+ content["matches"], meta["_jupyter_types_experimental"]
+ ):
+ new_meta[c] = m["type"]
+ meta = new_meta
+ except Exception:
+ pass
+
+ start_pos = content["cursor_start"] - document.cursor_position
+ for m in content["matches"]:
+ yield Completion(
+ m,
+ start_position=start_pos,
+ display_meta=meta.get(m, "?"),
+ )
class ZMQTerminalInteractiveShell(SingletonConfigurable):
@@ -206,8 +259,9 @@
"""
)
- callable_image_handler = Any(config=True, help=
- """
+ callable_image_handler = Any(
+ config=True,
+ help="""
Callable object called via 'callable' image handler with one
argument, `data`, which is `msg["content"]["data"]` where
`msg` is the message from iopub channel. For example, you can
@@ -248,15 +302,29 @@
help="""Set to display confirmation dialog on exit.
You can always use 'exit' or 'quit', to force a
direct exit without any confirmation.
- """
+ """,
)
- highlight_matching_brackets = Bool(True,
- help="Highlight matching brackets.",
+ display_completions = Enum(
+ ("column", "multicolumn", "readlinelike"),
+ help=(
+ "Options for displaying tab completions, 'column', 'multicolumn',
and "
+ "'readlinelike'. These options are for `prompt_toolkit`, see "
+ "`prompt_toolkit` documentation for more information."
+ ),
+ default_value="multicolumn",
+ ).tag(config=True)
+
+ prompt_includes_vi_mode = Bool(True,
+ help="Display the current vi mode (when using vi editing mode)."
).tag(config=True)
- manager = Instance('jupyter_client.KernelManager', allow_none=True)
- client = Instance('jupyter_client.KernelClient', allow_none=True)
+ highlight_matching_brackets = Bool(True, help="Highlight matching
brackets.",).tag(
+ config=True
+ )
+
+ manager = Instance("jupyter_client.KernelManager", allow_none=True)
+ client = Instance("jupyter_client.KernelClient", allow_none=True)
def _client_changed(self, name, old, new):
self.session_id = new.session.session
@@ -299,16 +367,25 @@
self.history_manager = ZMQHistoryManager(client=self.client)
self.configurables.append(self.history_manager)
- def get_prompt_tokens(self):
+ def vi_mode(self):
+ if (getattr(self, 'editing_mode', None) == 'vi'
+ and self.prompt_includes_vi_mode):
+ return '['+str(self.pt_cli.app.vi_state.input_mode)[3:6]+'] '
+ return ''
+
+ def get_prompt_tokens(self, ec=None):
+ if ec is None:
+ ec = self.execution_count
return [
+ (Token.Prompt, self.vi_mode()),
(Token.Prompt, 'In ['),
- (Token.PromptNum, str(self.execution_count)),
+ (Token.PromptNum, str(ec)),
(Token.Prompt, ']: '),
]
def get_continuation_tokens(self, width):
return [
- (Token.Prompt, (' ' * (width - 2)) + ': '),
+ (Token.Prompt, (" " * (width - 5)) + "...: "),
]
def get_out_prompt_tokens(self):
@@ -323,7 +400,26 @@
print_formatted_text(PygmentsTokens(tokens), end='',
style = self.pt_cli.app.style)
- kernel_info = {}
+ def get_remote_prompt_tokens(self):
+ return [
+ (Token.RemotePrompt, self.other_output_prefix),
+ ]
+
+ def print_remote_prompt(self, ec=None):
+ tokens = self.get_remote_prompt_tokens() +
self.get_prompt_tokens(ec=ec)
+ print_formatted_text(
+ PygmentsTokens(tokens), end="", style=self.pt_cli.app.style
+ )
+
+ @property
+ def pt_complete_style(self):
+ return {
+ "multicolumn": CompleteStyle.MULTI_COLUMN,
+ "column": CompleteStyle.COLUMN,
+ "readlinelike": CompleteStyle.READLINE_LIKE,
+ }[self.display_completions]
+
+ kernel_info: DictType[str, AnyType] = {}
def init_kernel_info(self):
"""Wait for a kernel to be ready, and store kernel info"""
@@ -334,9 +430,9 @@
while True:
try:
reply = self.client.get_shell_msg(timeout=1)
- except Empty:
+ except Empty as e:
if (time.time() - tic) > timeout:
- raise RuntimeError("Kernel didn't respond to
kernel_info_request")
+ raise RuntimeError("Kernel didn't respond to
kernel_info_request") from e
else:
if reply['parent_header'].get('msg_id') == msg_id:
self.kernel_info = reply['content']
@@ -350,8 +446,10 @@
if self.simple_prompt or ('JUPYTER_CONSOLE_TEST' in os.environ):
# Simple restricted interface for tests so we can find prompts with
# pexpect. Multi-line input not supported.
- def prompt():
- return input('In [%d]: ' % self.execution_count)
+ async def prompt():
+ prompt = 'In [%d]: ' % self.execution_count
+ raw = await async_input(prompt)
+ return raw
self.prompt_for_code = prompt
self.print_out_prompt = \
lambda: print('Out[%d]: ' % self.execution_count, end='')
@@ -395,6 +493,10 @@
def _(event):
event.cli.suspend_to_background()
+ @kb.add("c-o", filter=(has_focus(DEFAULT_BUFFER) & emacs_insert_mode))
+ def _(event):
+ event.current_buffer.insert_text("\n")
+
# Pre-populate history from IPython's history database
history = InMemoryHistory()
last_cell = u""
@@ -410,6 +512,7 @@
Token.PromptNum: '#00ff00 bold',
Token.OutPrompt: '#ff2200',
Token.OutPromptNum: '#ff0000 bold',
+ Token.RemotePrompt: '#999900',
}
if self.highlighting_style:
style_cls = get_style_by_name(self.highlighting_style)
@@ -444,14 +547,21 @@
Condition(lambda: self.highlight_matching_brackets))
]
+ # Tell prompt_toolkit to use the asyncio event loop.
+ # Obsolete in prompt_toolkit.v3
+ if not PTK3:
+ use_asyncio_event_loop()
+
self.pt_cli = PromptSession(
message=(lambda: PygmentsTokens(self.get_prompt_tokens())),
multiline=True,
+ complete_style=self.pt_complete_style,
editing_mode=editing_mode,
lexer=PygmentsLexer(get_pygments_lexer(lexer)),
prompt_continuation=(
- lambda width, lineno, is_soft_wrap:
- PygmentsTokens(self.get_continuation_tokens(width))
+ lambda width, lineno, is_soft_wrap: PygmentsTokens(
+ self.get_continuation_tokens(width)
+ )
),
key_bindings=kb,
history=history,
@@ -460,21 +570,20 @@
style=style,
input_processors=input_processors,
color_depth=(ColorDepth.TRUE_COLOR if self.true_color else None),
-
)
- def prompt_for_code(self):
+ async def prompt_for_code(self):
if self.next_input:
default = self.next_input
self.next_input = None
else:
default = ''
- with patch_stdout(raw=True):
- text = self.pt_cli.prompt(
- default=default,
-# pre_run=self.pre_prompt,# reset_current_buffer=True,
- )
+ if PTK3:
+ text = await self.pt_cli.prompt_async(default=default)
+ else:
+ text = await self.pt_cli.prompt(default=default, async_=True)
+
return text
def init_io(self):
@@ -523,12 +632,12 @@
set_doc()
self.next_input = None
- def interact(self, display_banner=None):
+ async def interact(self, loop=None, display_banner=None):
while self.keep_running:
print('\n', end='')
try:
- code = self.prompt_for_code()
+ code = await self.prompt_for_code()
except EOFError:
if (not self.confirm_exit) or \
ask_yes_no('Do you really want to exit ([y]/n)?', 'y',
'n'):
@@ -540,11 +649,29 @@
def mainloop(self):
self.keepkernel = not self.own_kernel
+ loop = asyncio.get_event_loop()
# An extra layer of protection in case someone mashing Ctrl-C breaks
# out of our internal code.
while True:
try:
- self.interact()
+ tasks = [self.interact(loop=loop)]
+
+ if self.include_other_output:
+ # only poll the iopub channel asynchronously if we
+ # wish to include external content
+ tasks.append(self.handle_external_iopub(loop=loop))
+
+ main_task = asyncio.wait(tasks, loop=loop,
return_when=asyncio.FIRST_COMPLETED)
+ _, pending = loop.run_until_complete(main_task)
+
+ for task in pending:
+ task.cancel()
+ try:
+ loop.run_until_complete(asyncio.gather(*pending))
+ except asyncio.CancelledError:
+ pass
+ loop.stop()
+ loop.close()
break
except KeyboardInterrupt:
print("\nKeyboardInterrupt escaped interact()\n")
@@ -620,8 +747,8 @@
content = msg["content"]
status = content['status']
- if status == 'aborted':
- self.write('Aborted\n')
+ if status == "aborted":
+ sys.stdout.write("Aborted\n")
return
elif status == 'ok':
# handle payloads
@@ -680,11 +807,9 @@
include_other_output = Bool(False, config=True,
help="""Whether to include output from clients
other than this one sharing the same kernel.
-
- Outputs are not displayed until enter is pressed.
"""
)
- other_output_prefix = Unicode("[remote] ", config=True,
+ other_output_prefix = Unicode("Remote ", config=True,
help="""Prefix to add to outputs coming from clients other than this
one.
Only relevant if include_other_output is True.
@@ -707,6 +832,15 @@
else:
return from_here
+ async def handle_external_iopub(self, loop=None):
+ while self.keep_running:
+ # we need to check for keep_running from time to time as
+ # we are blocking in an executor block which cannot be cancelled.
+ poll_result = await loop.run_in_executor(
+ None, self.client.iopub_channel.socket.poll, 500)
+ if(poll_result):
+ self.handle_iopub()
+
def handle_iopub(self, msg_id=''):
"""Process messages on the IOPub channel
@@ -718,7 +852,6 @@
while self.client.iopub_channel.msg_ready():
sub_msg = self.client.iopub_channel.get_msg()
msg_type = sub_msg['header']['msg_type']
- parent = sub_msg["parent_header"]
# Update execution_count in case it changed in another session
if msg_type == "execute_input":
@@ -727,6 +860,7 @@
if self.include_output(sub_msg):
if msg_type == 'status':
self._execution_state =
sub_msg["content"]["execution_state"]
+
elif msg_type == 'stream':
if sub_msg["content"]["name"] == "stdout":
if self._pending_clearoutput:
@@ -765,6 +899,12 @@
print()
print(text_repr)
+ # Remote: add new prompt
+ if not self.from_here(sub_msg):
+ sys.stdout.write('\n')
+ sys.stdout.flush()
+ self.print_remote_prompt()
+
elif msg_type == 'display_data':
data = sub_msg["content"]["data"]
handled = self.handle_rich_data(data)
@@ -775,11 +915,19 @@
if 'text/plain' in data:
print(data['text/plain'])
+ # If execute input: print it
elif msg_type == 'execute_input':
content = sub_msg['content']
- if not self.from_here(sub_msg):
- sys.stdout.write(self.other_output_prefix)
- sys.stdout.write('In [{}]:
'.format(content['execution_count']))
+ ec = content.get('execution_count', self.execution_count -
1)
+
+ # New line
+ sys.stdout.write('\n')
+ sys.stdout.flush()
+
+ # With `Remote In [3]: `
+ self.print_remote_prompt(ec=ec)
+
+ # And the code
sys.stdout.write(content['code'] + '\n')
elif msg_type == 'clear_output':
@@ -818,33 +966,31 @@
from PIL import Image, ImageShow
except ImportError:
return False
- raw = base64.decodestring(data[mime].encode('ascii'))
+ raw = base64.decodebytes(data[mime].encode('ascii'))
img = Image.open(BytesIO(raw))
return ImageShow.show(img)
def handle_image_stream(self, data, mime):
- raw = base64.decodestring(data[mime].encode('ascii'))
+ raw = base64.decodebytes(data[mime].encode('ascii'))
imageformat = self._imagemime[mime]
fmt = dict(format=imageformat)
args = [s.format(**fmt) for s in self.stream_image_handler]
- with open(os.devnull, 'w') as devnull:
- proc = subprocess.Popen(
- args, stdin=subprocess.PIPE,
- stdout=devnull, stderr=devnull)
+ with subprocess.Popen(args, stdin=subprocess.PIPE,
+ stdout=subprocess.DEVNULL,
stderr=subprocess.DEVNULL) as proc:
proc.communicate(raw)
- return (proc.returncode == 0)
+ return (proc.returncode == 0)
def handle_image_tempfile(self, data, mime):
- raw = base64.decodestring(data[mime].encode('ascii'))
+ raw = base64.decodebytes(data[mime].encode('ascii'))
imageformat = self._imagemime[mime]
filename = 'tmp.{0}'.format(imageformat)
- with NamedFileInTemporaryDirectory(filename) as f, \
- open(os.devnull, 'w') as devnull:
- f.write(raw)
- f.flush()
- fmt = dict(file=f.name, format=imageformat)
+ with TemporaryDirectory() as tempdir:
+ fullpath = os.path.join(tempdir, filename)
+ with open(fullpath, 'wb') as f:
+ f.write(raw)
+ fmt = dict(file=fullpath, format=imageformat)
args = [s.format(**fmt) for s in self.tempfile_image_handler]
- rc = subprocess.call(args, stdout=devnull, stderr=devnull)
+ rc = subprocess.call(args, stdout=subprocess.DEVNULL,
stderr=subprocess.DEVNULL)
return (rc == 0)
def handle_image_callable(self, data, mime):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/jupyter_console-6.1.0/jupyter_console/tests/conftest.py
new/jupyter_console-6.4.0/jupyter_console/tests/conftest.py
--- old/jupyter_console-6.1.0/jupyter_console/tests/conftest.py 1970-01-01
01:00:00.000000000 +0100
+++ new/jupyter_console-6.4.0/jupyter_console/tests/conftest.py 2021-03-15
16:18:51.000000000 +0100
@@ -0,0 +1,6 @@
+import pytest
+
+
[email protected](autouse=True)
+def env_setup(monkeypatch):
+ monkeypatch.setenv("JUPYTER_CONSOLE_TEST", "1")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/jupyter_console-6.1.0/jupyter_console/tests/test_console.py
new/jupyter_console-6.4.0/jupyter_console/tests/test_console.py
--- old/jupyter_console-6.1.0/jupyter_console/tests/test_console.py
2020-01-16 00:32:32.000000000 +0100
+++ new/jupyter_console-6.4.0/jupyter_console/tests/test_console.py
2021-03-16 16:26:17.000000000 +0100
@@ -9,24 +9,26 @@
import tempfile
from subprocess import check_output
-from nose import SkipTest
+import pytest
from traitlets.tests.utils import check_help_all_output
-from ipython_genutils.testing import decorators as dec
[email protected]_win32
+
[email protected]
[email protected](sys.platform == "win32", reason="skip on windows")
def test_console_starts():
"""test that `jupyter console` starts a terminal"""
p, pexpect, t = start_console()
- p.sendline('5')
- idx = p.expect([r'Out\[\d+\]: 5', pexpect.EOF], timeout=t)
- idx = p.expect([r'In \[\d+\]', pexpect.EOF], timeout=t)
+ p.sendline("5")
+ p.expect([r"Out\[\d+\]: 5", pexpect.EOF], timeout=t)
+ p.expect([r"In \[\d+\]", pexpect.EOF], timeout=t)
stop_console(p, pexpect, t)
def test_help_output():
"""jupyter console --help-all works"""
check_help_all_output('jupyter_console')
[email protected]
def test_display_text():
"Ensure display protocol plain/text key is supported"
# equivalent of:
@@ -58,16 +60,17 @@
args = ['-m', 'jupyter_console', '--colors=NoColor']
cmd = sys.executable
env = os.environ.copy()
- env['JUPYTER_CONSOLE_TEST'] = '1'
+ env["JUPYTER_CONSOLE_TEST"] = "1"
+ env["PROMPT_TOOLKIT_NO_CPR"] = "1"
try:
p = pexpect.spawn(cmd, args=args, env=env)
except IOError:
- raise SkipTest("Couldn't find command %s" % cmd)
+ pytest.skip("Couldn't find command %s" % cmd)
# timeout after one minute
t = 60
- idx = p.expect(r'In \[\d+\]', timeout=t)
+ p.expect(r"In \[\d+\]", timeout=t)
return p, pexpect, t
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/jupyter_console-6.1.0/jupyter_console/tests/test_image_handler.py
new/jupyter_console-6.4.0/jupyter_console/tests/test_image_handler.py
--- old/jupyter_console-6.1.0/jupyter_console/tests/test_image_handler.py
2020-01-16 00:32:32.000000000 +0100
+++ new/jupyter_console-6.4.0/jupyter_console/tests/test_image_handler.py
2021-03-24 00:58:34.000000000 +0100
@@ -1,20 +1,16 @@
# Copyright (c) IPython Development Team.
# Distributed under the terms of the Modified BSD License.
+import base64
import os
import sys
+from tempfile import TemporaryDirectory
import unittest
-import base64
+from unittest.mock import patch
-try:
- from unittest.mock import patch
-except ImportError:
- from mock import patch
+import pytest
from jupyter_console.ptshell import ZMQTerminalInteractiveShell
-from ipython_genutils.tempdir import TemporaryDirectory
-from ipython_genutils.testing.decorators import skip_without
-from ipython_genutils.ipstruct import Struct
SCRIPT_PATH = os.path.join(
@@ -32,10 +28,11 @@
self.shell = NonCommunicatingShell()
self.raw = b'dummy data'
self.mime = 'image/png'
- self.data = {self.mime: base64.encodestring(self.raw).decode('ascii')}
+ self.data = {self.mime: base64.encodebytes(self.raw).decode('ascii')}
def test_call_pil_by_default(self):
pil_called_with = []
+
def pil_called(data, mime):
pil_called_with.append(data)
@@ -51,8 +48,8 @@
shell.handle_image(None, None) # arguments are dummy
assert len(pil_called_with) == 1
- @skip_without('PIL')
def test_handle_image_PIL(self):
+ pytest.importorskip('PIL')
from PIL import Image, ImageShow
open_called_with = []
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/jupyter_console-6.1.0/jupyter_console/zmqhistory.py
new/jupyter_console-6.4.0/jupyter_console/zmqhistory.py
--- old/jupyter_console-6.1.0/jupyter_console/zmqhistory.py 2020-01-16
00:32:32.000000000 +0100
+++ new/jupyter_console-6.4.0/jupyter_console/zmqhistory.py 2021-03-15
16:18:51.000000000 +0100
@@ -14,10 +14,7 @@
from IPython.core.history import HistoryAccessorBase
from traitlets import Dict, List
-try:
- from queue import Empty # Py 3
-except ImportError:
- from Queue import Empty # Py 2
+from queue import Empty # Py 3
class ZMQHistoryManager(HistoryAccessorBase):
"""History accessor and manager for ZMQ-based kernels"""
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/jupyter_console-6.1.0/jupyter_console.egg-info/PKG-INFO
new/jupyter_console-6.4.0/jupyter_console.egg-info/PKG-INFO
--- old/jupyter_console-6.1.0/jupyter_console.egg-info/PKG-INFO 2020-01-16
23:11:15.000000000 +0100
+++ new/jupyter_console-6.4.0/jupyter_console.egg-info/PKG-INFO 2021-03-24
01:04:08.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: jupyter-console
-Version: 6.1.0
+Version: 6.4.0
Summary: Jupyter terminal console
Home-page: https://jupyter.org
Author: Jupyter Development Team
@@ -17,5 +17,5 @@
Classifier: License :: OSI Approved :: BSD License
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
-Requires-Python: >=3.5
+Requires-Python: >=3.6
Provides-Extra: test
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/jupyter_console-6.1.0/jupyter_console.egg-info/SOURCES.txt
new/jupyter_console-6.4.0/jupyter_console.egg-info/SOURCES.txt
--- old/jupyter_console-6.1.0/jupyter_console.egg-info/SOURCES.txt
2020-01-16 23:11:15.000000000 +0100
+++ new/jupyter_console-6.4.0/jupyter_console.egg-info/SOURCES.txt
2021-03-24 01:04:08.000000000 +0100
@@ -1,9 +1,18 @@
+.bumpversion.cfg
+.gitignore
+.mailmap
CONTRIBUTING.md
COPYING.md
MANIFEST.in
README.md
+RELEASING.md
+mypy.ini
+pyproject.toml
+pytest.ini
+readthedocs.yml
setup.cfg
setup.py
+.github/workflows/python-package.yml
docs/Makefile
docs/autogen_config.py
docs/changelog.rst
@@ -27,6 +36,8 @@
jupyter_console.egg-info/requires.txt
jupyter_console.egg-info/top_level.txt
jupyter_console/tests/__init__.py
+jupyter_console/tests/conftest.py
jupyter_console/tests/test_console.py
jupyter_console/tests/test_image_handler.py
-jupyter_console/tests/writetofile.py
\ No newline at end of file
+jupyter_console/tests/writetofile.py
+scripts/jupyter-console
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/jupyter_console-6.1.0/mypy.ini
new/jupyter_console-6.4.0/mypy.ini
--- old/jupyter_console-6.1.0/mypy.ini 1970-01-01 01:00:00.000000000 +0100
+++ new/jupyter_console-6.4.0/mypy.ini 2021-03-15 16:18:51.000000000 +0100
@@ -0,0 +1,4 @@
+[mypy]
+python_version = 3.6
+ignore_missing_imports = True
+follow_imports = silent
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/jupyter_console-6.1.0/pyproject.toml
new/jupyter_console-6.4.0/pyproject.toml
--- old/jupyter_console-6.1.0/pyproject.toml 1970-01-01 01:00:00.000000000
+0100
+++ new/jupyter_console-6.4.0/pyproject.toml 2021-03-15 16:18:51.000000000
+0100
@@ -0,0 +1,3 @@
+[build-system]
+requires = ["setuptools>=40.8.0", "wheel"]
+build-backend = "setuptools.build_meta"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/jupyter_console-6.1.0/pytest.ini
new/jupyter_console-6.4.0/pytest.ini
--- old/jupyter_console-6.1.0/pytest.ini 1970-01-01 01:00:00.000000000
+0100
+++ new/jupyter_console-6.4.0/pytest.ini 2021-03-15 16:18:51.000000000
+0100
@@ -0,0 +1,2 @@
+[pytest]
+addopts = --durations=10
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/jupyter_console-6.1.0/readthedocs.yml
new/jupyter_console-6.4.0/readthedocs.yml
--- old/jupyter_console-6.1.0/readthedocs.yml 1970-01-01 01:00:00.000000000
+0100
+++ new/jupyter_console-6.4.0/readthedocs.yml 2021-03-15 16:18:51.000000000
+0100
@@ -0,0 +1,9 @@
+conda:
+ file: docs/environment.yml
+python:
+ version: 3
+ setup_py_install: true
+ pip install: true
+formats:
+ - epub
+ - pdf
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/jupyter_console-6.1.0/scripts/jupyter-console
new/jupyter_console-6.4.0/scripts/jupyter-console
--- old/jupyter_console-6.1.0/scripts/jupyter-console 1970-01-01
01:00:00.000000000 +0100
+++ new/jupyter_console-6.4.0/scripts/jupyter-console 2016-03-10
19:38:25.000000000 +0100
@@ -0,0 +1,5 @@
+#!/usr/bin/env python
+from jupyter_console import app
+
+if __name__ == '__main__':
+ app.main()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/jupyter_console-6.1.0/setup.cfg
new/jupyter_console-6.4.0/setup.cfg
--- old/jupyter_console-6.1.0/setup.cfg 2020-01-16 23:11:15.000000000 +0100
+++ new/jupyter_console-6.4.0/setup.cfg 2021-03-24 01:04:09.000000000 +0100
@@ -1,8 +1,6 @@
-[bdist_wheel]
-universal = 1
-
[flake8]
max-line-length = 99
+ignore = W291, E266, E265, E128, E251, E402, E124, E302, W293, E231, E222,
W503, E126, E121, W391, E226, E127, W504
[metadata]
license_file = COPYING.md
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/jupyter_console-6.1.0/setup.py
new/jupyter_console-6.4.0/setup.py
--- old/jupyter_console-6.1.0/setup.py 2020-01-16 00:32:32.000000000 +0100
+++ new/jupyter_console-6.4.0/setup.py 2021-03-24 00:58:34.000000000 +0100
@@ -16,7 +16,7 @@
import sys
-if sys.version_info < (3, 5):
+if sys.version_info < (3, 6):
pip_message = 'This may be due to an out of date pip. Make sure you have
pip >= 9.0.1.'
try:
import pip
@@ -32,9 +32,10 @@
error = """
-Jupyter_Console 6.0+ supports Python 3.5 and above.
+Jupyter_Console 6.2+ supports Python 3.6 and above.
When using Python 2.7, please install and older version of Jupyter Console
Python 3.3 and 3.4 were supported up to Jupyter Console 5.x.
+Python 3.5 was supported up to Jupyter Console 6.1.0.
Python {py} detected.
{pip}
@@ -49,9 +50,8 @@
#-----------------------------------------------------------------------------
import os
-from glob import glob
-from distutils.core import setup
+from setuptools import setup
pjoin = os.path.join
here = os.path.abspath(os.path.dirname(__file__))
@@ -70,7 +70,6 @@
setup_args = dict(
name = name,
version = version_ns['__version__'],
- scripts = glob(pjoin('scripts', '*')),
packages = packages,
description = "Jupyter terminal console",
long_description= "An IPython-like terminal frontend for Jupyter kernels
in any language.",
@@ -88,38 +87,23 @@
'Programming Language :: Python',
'Programming Language :: Python :: 3',
],
-)
-
-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'] = [
- 'jupyter_client',
- 'ipython',
- 'ipykernel', # bless IPython kernel for now
- 'prompt_toolkit>=2.0.0,<3.1.0,!=3.0.0,!=3.0.1',
- 'pygments',
-]
-
-extras_require = setuptools_args['extras_require'] = {
- 'test:sys_platform != "win32"': ['pexpect'],
-
-
-}
-
-setuptools_args['python_requires'] = '>=3.5'
-
-
-setuptools_args['entry_points'] = {
+ install_requires=[
+ 'jupyter_client',
+ 'ipython',
+ 'ipykernel', # bless IPython kernel for now
+ 'prompt_toolkit>=2.0.0,<3.1.0,!=3.0.0,!=3.0.1',
+ 'pygments',
+ ],
+ extras_require={
+ 'test:sys_platform != "win32"': ['pexpect'],
+ },
+ python_requires='>=3.6',
+ entry_points={
'console_scripts': [
'jupyter-console = jupyter_console.app:main',
]
-}
-
-if 'setuptools' in sys.modules:
- setup_args.update(setuptools_args)
- setup_args.pop('scripts')
+ }
+)
if __name__ == '__main__':