Hello community,
here is the log from the commit of package python-jupyter_client for
openSUSE:Factory checked in at 2019-07-30 14:01:55
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-jupyter_client (Old)
and /work/SRC/openSUSE:Factory/.python-jupyter_client.new.4126 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-jupyter_client"
Tue Jul 30 14:01:55 2019 rev:10 rq:719302 version:5.3.1
Changes:
--------
---
/work/SRC/openSUSE:Factory/python-jupyter_client/python-jupyter_client-doc.changes
2019-05-22 11:05:14.598574957 +0200
+++
/work/SRC/openSUSE:Factory/.python-jupyter_client.new.4126/python-jupyter_client-doc.changes
2019-07-30 14:01:56.468975287 +0200
@@ -1,0 +2,16 @@
+Sat Jul 27 23:06:22 UTC 2019 - Todd R <[email protected]>
+
+- Update to 5.3.1
+ * Fix bug with control channel socket introduced in 5.3.0
+- Update to 5.3.0
+ + New Features:
+ * Multiprocessing and Threading support
+ * Setup package long_description
+ + Changes:
+ * Control channel now in the public API
+ * Closing Jupyter Client is now faster
+ * Pip support improvements
+ + Breaking changes:
+ * Dropped support for Python 3.3 and 3.4 (upstream packages dropped
support already)
+
+-------------------------------------------------------------------
python-jupyter_client.changes: same change
Old:
----
jupyter_client-5.2.4.tar.gz
New:
----
jupyter_client-5.3.1.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-jupyter_client-doc.spec ++++++
--- /var/tmp/diff_new_pack.UZLBXb/_old 2019-07-30 14:01:57.336974693 +0200
+++ /var/tmp/diff_new_pack.UZLBXb/_new 2019-07-30 14:01:57.348974685 +0200
@@ -23,7 +23,7 @@
%bcond_without html
%bcond_without tests
Name: python-jupyter_client-doc
-Version: 5.2.4
+Version: 5.3.1
Release: 0
Summary: Documentation for the Jupyter client libraries
License: BSD-3-Clause
++++++ python-jupyter_client.spec ++++++
--- /var/tmp/diff_new_pack.UZLBXb/_old 2019-07-30 14:01:57.424974633 +0200
+++ /var/tmp/diff_new_pack.UZLBXb/_new 2019-07-30 14:01:57.432974628 +0200
@@ -18,7 +18,7 @@
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
Name: python-jupyter_client
-Version: 5.2.4
+Version: 5.3.1
Release: 0
Summary: Jupyter protocol implementation and client libraries
License: BSD-3-Clause
++++++ jupyter_client-5.2.4.tar.gz -> jupyter_client-5.3.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/jupyter_client-5.2.4/PKG-INFO
new/jupyter_client-5.3.1/PKG-INFO
--- old/jupyter_client-5.2.4/PKG-INFO 2018-12-10 15:25:49.000000000 +0100
+++ new/jupyter_client-5.3.1/PKG-INFO 2019-07-09 23:25:14.000000000 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: jupyter_client
-Version: 5.2.4
+Version: 5.3.1
Summary: Jupyter protocol implementation and client libraries
Home-page: https://jupyter.org
Author: Jupyter Development Team
@@ -9,7 +9,53 @@
Project-URL: Documentation, https://jupyter-client.readthedocs.io
Project-URL: Source, https://github.com/jupyter/jupyter_client/
Project-URL: Tracker, https://github.com/jupyter/jupyter_client/issues
-Description: UNKNOWN
+Description: # Jupyter Client
+
+ [](https://landscape.io/github/jupyter/jupyter_client/master)
+
+
+ `jupyter_client` contains the reference implementation of the [Jupyter
protocol][].
+ It also provides client and kernel management APIs for working with
kernels.
+
+ It also provides the `jupyter kernelspec` entrypoint
+ for installing kernelspecs for use with Jupyter frontends.
+
+ [Jupyter protocol]:
https://jupyter-client.readthedocs.io/en/latest/messaging.html
+
+
+ # Development Setup
+
+ The [Jupyter Contributor
Guides](http://jupyter.readthedocs.io/en/latest/contributor/content-contributor.html)
provide extensive information on contributing code or documentation to Jupyter
projects. The limited instructions below for setting up a development
environment are for your convenience.
+
+ ## Coding
+
+ You'll need Python and `pip` on the search path. Clone the Jupyter
Client git repository to your computer, for example in
`/my/project/jupyter_client`.
+ Now create an [editable
install](https://pip.pypa.io/en/stable/reference/pip_install/#editable-installs)
+ and download the dependencies of code and test suite by executing:
+
+ cd /my/projects/jupyter_client/
+ pip install -e .[test]
+ py.test
+
+ The last command runs the test suite to verify the setup. During
development, you can pass filenames to `py.test`, and it will execute only
those tests.
+
+ ## Documentation
+
+ The documentation of Jupyter Client is generated from the files in
`docs/` using Sphinx. Instructions for setting up Sphinx with a selection of
optional modules are in the [Documentation
Guide](http://jupyter.readthedocs.io/en/latest/contrib_docs/index.html). You'll
also need the `make` command.
+ For a minimal Sphinx installation to process the Jupyter Client docs,
execute:
+
+ pip install ipykernel sphinx sphinx_rtd_theme
+
+ The following commands build the documentation in HTML format and
check for broken links:
+
+ cd /my/projects/jupyter_client/docs/
+ make html linkcheck
+
+ Point your browser to the following URL to access the generated
documentation:
+
+ _file:///my/projects/jupyter\_client/docs/\_build/html/index.html_
+
+
Keywords: Interactive,Interpreter,Shell,Web
Platform: Linux
Platform: Mac OS X
@@ -24,5 +70,6 @@
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 2
Classifier: Programming Language :: Python :: 3
-Requires-Python: >=2.7, !=3.0.*, !=3.1.*, !=3.2.*
+Requires-Python: >=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*
+Description-Content-Type: text/markdown
Provides-Extra: test
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/jupyter_client-5.2.4/docs/changelog.rst
new/jupyter_client-5.3.1/docs/changelog.rst
--- old/jupyter_client-5.2.4/docs/changelog.rst 2018-12-10 15:22:46.000000000
+0100
+++ new/jupyter_client-5.3.1/docs/changelog.rst 2019-07-09 23:23:30.000000000
+0200
@@ -4,6 +4,30 @@
Changes in Jupyter Client
=========================
+5.3.1
+=====
+
+- Fix bug with control channel socket introduced in 5.3.0 (:ghpull:`456`).
+
+5.3.0
+=====
+`5.3.0 on GitHub
<https://github.com/jupyter/jupyter_client/milestones/5.3.0>`__
+
+New Features:
+
+- Multiprocessing and Threading support (:ghpull:`437`) and (:ghpull:`450`)
+- Setup package long_description (:ghpull:`411`)
+
+Changes:
+
+- Control channel now in the public API (:ghpull:`447`)
+- Closing Jupyter Client is now faster (:ghpull:`420`)
+- Pip support improvements (:ghpull:`421`)
+
+Breaking changes:
+
+- Dropped support for Python 3.3 and 3.4 (upstream packages dropped support
already)
+
5.2.4
=====
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/jupyter_client-5.2.4/docs/messaging.rst
new/jupyter_client-5.3.1/docs/messaging.rst
--- old/jupyter_client-5.2.4/docs/messaging.rst 2017-11-22 12:54:35.000000000
+0100
+++ new/jupyter_client-5.3.1/docs/messaging.rst 2019-07-09 22:04:55.000000000
+0200
@@ -351,9 +351,9 @@
# should not send these messages.
'allow_stdin' : True,
- # A boolean flag, which, if True, does not abort the execution queue, if
an exception is encountered.
- # This allows the queued execution of multiple execute_requests, even if
they generate exceptions.
- 'stop_on_error' : False,
+ # A boolean flag, which, if True, aborts the execution queue if an
exception is encountered.
+ # If False, queued execute_requests will execute even if this request
generates an exception.
+ 'stop_on_error' : True,
}
.. versionchanged:: 5.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/jupyter_client-5.2.4/jupyter_client/_version.py
new/jupyter_client-5.3.1/jupyter_client/_version.py
--- old/jupyter_client-5.2.4/jupyter_client/_version.py 2018-12-10
15:20:11.000000000 +0100
+++ new/jupyter_client-5.3.1/jupyter_client/_version.py 2019-07-09
23:24:11.000000000 +0200
@@ -1,4 +1,4 @@
-version_info = (5, 2, 4)
+version_info = (5, 3, 1)
__version__ = '.'.join(map(str, version_info))
protocol_version_info = (5, 3)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/jupyter_client-5.2.4/jupyter_client/channels.py
new/jupyter_client-5.3.1/jupyter_client/channels.py
--- old/jupyter_client-5.2.4/jupyter_client/channels.py 2018-12-10
15:19:44.000000000 +0100
+++ new/jupyter_client-5.3.1/jupyter_client/channels.py 2019-07-09
22:04:55.000000000 +0200
@@ -7,7 +7,7 @@
import atexit
import errno
-from threading import Thread
+from threading import Thread, Event
import time
import zmq
@@ -73,6 +73,7 @@
# running is False until `.start()` is called
self._running = False
+ self._exit = Event()
# don't start paused
self._pause = False
self.poller = zmq.Poller()
@@ -138,7 +139,7 @@
while self._running:
if self._pause:
# just sleep, and skip the rest of the loop
- time.sleep(self.time_to_dead)
+ self._exit.wait(self.time_to_dead)
continue
since_last_heartbeat = 0.0
@@ -155,7 +156,7 @@
# sleep the remainder of the cycle
remainder = self.time_to_dead - (time.time() - request_time)
if remainder > 0:
- time.sleep(remainder)
+ self._exit.wait(remainder)
continue
else:
# nothing was received within the time limit, signal heart
failure
@@ -184,6 +185,7 @@
def stop(self):
"""Stop the channel's event loop and join its thread."""
self._running = False
+ self._exit.set()
self.join()
self.close()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/jupyter_client-5.2.4/jupyter_client/client.py
new/jupyter_client-5.3.1/jupyter_client/client.py
--- old/jupyter_client-5.2.4/jupyter_client/client.py 2018-07-30
11:52:36.000000000 +0200
+++ new/jupyter_client-5.3.1/jupyter_client/client.py 2019-07-08
22:06:08.000000000 +0200
@@ -51,7 +51,7 @@
# The PyZMQ Context to use for communication with the kernel.
context = Instance(zmq.Context)
def _context_default(self):
- return zmq.Context.instance()
+ return zmq.Context()
# The classes to use for the various channels
shell_channel_class = Type(ChannelABC)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/jupyter_client-5.2.4/jupyter_client/ioloop/manager.py
new/jupyter_client-5.3.1/jupyter_client/ioloop/manager.py
--- old/jupyter_client-5.2.4/jupyter_client/ioloop/manager.py 2018-12-10
15:19:44.000000000 +0100
+++ new/jupyter_client-5.3.1/jupyter_client/ioloop/manager.py 2019-07-09
22:04:55.000000000 +0200
@@ -56,6 +56,7 @@
self._restarter.stop()
connect_shell = as_zmqstream(KernelManager.connect_shell)
+ connect_control = as_zmqstream(KernelManager.connect_control)
connect_iopub = as_zmqstream(KernelManager.connect_iopub)
connect_stdin = as_zmqstream(KernelManager.connect_stdin)
connect_hb = as_zmqstream(KernelManager.connect_hb)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/jupyter_client-5.2.4/jupyter_client/manager.py
new/jupyter_client-5.3.1/jupyter_client/manager.py
--- old/jupyter_client-5.2.4/jupyter_client/manager.py 2018-12-10
15:19:44.000000000 +0100
+++ new/jupyter_client-5.3.1/jupyter_client/manager.py 2019-07-09
22:42:35.000000000 +0200
@@ -39,7 +39,7 @@
# The PyZMQ Context to use for communication with the kernel.
context = Instance(zmq.Context)
def _context_default(self):
- return zmq.Context.instance()
+ return zmq.Context()
# the class to create with our `client` method
client_class =
DottedObjectName('jupyter_client.blocking.BlockingKernelClient')
@@ -207,7 +207,7 @@
def _connect_control_socket(self):
if self._control_socket is None:
- self._control_socket = self.connect_control()
+ self._control_socket = self._create_connected_socket('control')
self._control_socket.linger = 100
def _close_control_socket(self):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/jupyter_client-5.2.4/jupyter_client/multikernelmanager.py
new/jupyter_client-5.3.1/jupyter_client/multikernelmanager.py
--- old/jupyter_client-5.2.4/jupyter_client/multikernelmanager.py
2018-12-10 15:19:44.000000000 +0100
+++ new/jupyter_client-5.3.1/jupyter_client/multikernelmanager.py
2019-07-09 22:04:55.000000000 +0200
@@ -47,7 +47,7 @@
)
kernel_spec_manager = Instance(KernelSpecManager, allow_none=True)
-
+
kernel_manager_class = DottedObjectName(
"jupyter_client.ioloop.IOLoopKernelManager", config=True,
help="""The kernel manager class. This is configurable to allow
@@ -63,7 +63,7 @@
context = Instance('zmq.Context')
def _context_default(self):
- return zmq.Context.instance()
+ return zmq.Context()
connection_dir = Unicode('')
@@ -274,6 +274,22 @@
Parameters
==========
+ kernel_id : uuid
+ The id of the kernel
+ identity : bytes (optional)
+ The zmq identity of the socket
+
+ Returns
+ =======
+ stream : zmq Socket or ZMQStream
+ """
+
+ @kernel_method
+ def connect_control(self, kernel_id, identity=None):
+ """Return a zmq Socket connected to the control channel.
+
+ Parameters
+ ==========
kernel_id : uuid
The id of the kernel
identity : bytes (optional)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/jupyter_client-5.2.4/jupyter_client/session.py
new/jupyter_client-5.3.1/jupyter_client/session.py
--- old/jupyter_client-5.2.4/jupyter_client/session.py 2018-12-10
15:19:44.000000000 +0100
+++ new/jupyter_client-5.3.1/jupyter_client/session.py 2019-07-09
22:04:55.000000000 +0200
@@ -186,7 +186,7 @@
# not configurable:
context = Instance('zmq.Context')
def _context_default(self):
- return zmq.Context.instance()
+ return zmq.Context()
session = Instance('jupyter_client.session.Session',
allow_none=True)
@@ -300,10 +300,10 @@
"""
debug = Bool(False, config=True, help="""Debug output in the Session""")
-
+
check_pid = Bool(True, config=True,
help="""Whether to check PID to protect against calls after fork.
-
+
This check can be disabled if fork-safety is handled elsewhere.
""")
@@ -387,9 +387,9 @@
digest_mod = Any()
def _digest_mod_default(self):
return hashlib.sha256
-
+
auth = Instance(hmac.HMAC, allow_none=True)
-
+
def _new_auth(self):
if self.key:
self.auth = hmac.HMAC(self.key, digestmod=self.digest_mod)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/jupyter_client-5.2.4/jupyter_client/tests/test_kernelmanager.py
new/jupyter_client-5.3.1/jupyter_client/tests/test_kernelmanager.py
--- old/jupyter_client-5.2.4/jupyter_client/tests/test_kernelmanager.py
2017-08-08 17:56:46.000000000 +0200
+++ new/jupyter_client-5.3.1/jupyter_client/tests/test_kernelmanager.py
2019-07-08 22:06:08.000000000 +0200
@@ -11,6 +11,9 @@
from subprocess import PIPE
import sys
import time
+import threading
+import multiprocessing as mp
+import pytest
from unittest import TestCase
from traitlets.config.loader import Config
@@ -28,7 +31,7 @@
def tearDown(self):
self.env_patch.stop()
-
+
def _install_test_kernel(self):
kernel_dir = pjoin(paths.jupyter_data_dir(), 'kernels', 'signaltest')
os.makedirs(kernel_dir)
@@ -127,3 +130,118 @@
self.assertTrue(km.is_alive())
self.assertTrue(kc.is_alive())
+
[email protected]
+class TestParallel:
+
+ @pytest.fixture(autouse=True)
+ def env(self):
+ env_patch = test_env()
+ env_patch.start()
+ yield
+ env_patch.stop()
+
+ @pytest.fixture(params=['tcp', 'ipc'])
+ def transport(self, request):
+ return request.param
+
+ @pytest.fixture
+ def config(self, transport):
+ c = Config()
+ c.transport = transport
+ if transport == 'ipc':
+ c.ip = 'test'
+ return c
+
+ def _install_test_kernel(self):
+ kernel_dir = pjoin(paths.jupyter_data_dir(), 'kernels', 'signaltest')
+ os.makedirs(kernel_dir)
+ with open(pjoin(kernel_dir, 'kernel.json'), 'w') as f:
+ f.write(json.dumps({
+ 'argv': [sys.executable,
+ '-m', 'jupyter_client.tests.signalkernel',
+ '-f', '{connection_file}'],
+ 'display_name': "Signal Test Kernel",
+ }))
+
+ def test_start_sequence_kernels(self, config):
+ """Ensure that a sequence of kernel startups doesn't break anything."""
+
+ self._install_test_kernel()
+ self._run_signaltest_lifecycle(config)
+ self._run_signaltest_lifecycle(config)
+ self._run_signaltest_lifecycle(config)
+
+ def test_start_parallel_thread_kernels(self, config):
+ self._install_test_kernel()
+ self._run_signaltest_lifecycle(config)
+
+ thread = threading.Thread(target=self._run_signaltest_lifecycle,
args=(config,))
+ thread2 = threading.Thread(target=self._run_signaltest_lifecycle,
args=(config,))
+ try:
+ thread.start()
+ thread2.start()
+ finally:
+ thread.join()
+ thread2.join()
+
+ def test_start_parallel_process_kernels(self, config):
+ self._install_test_kernel()
+
+ self._run_signaltest_lifecycle(config)
+ thread = threading.Thread(target=self._run_signaltest_lifecycle,
args=(config,))
+ proc = mp.Process(target=self._run_signaltest_lifecycle,
args=(config,))
+ try:
+ thread.start()
+ proc.start()
+ finally:
+ thread.join()
+ proc.join()
+
+ assert proc.exitcode == 0
+
+ def test_start_sequence_process_kernels(self, config):
+ self._install_test_kernel()
+ self._run_signaltest_lifecycle(config)
+ proc = mp.Process(target=self._run_signaltest_lifecycle,
args=(config,))
+ try:
+ proc.start()
+ finally:
+ proc.join()
+
+ assert proc.exitcode == 0
+
+ def _prepare_kernel(self, km, startup_timeout=TIMEOUT, **kwargs):
+ km.start_kernel(**kwargs)
+ kc = km.client()
+ kc.start_channels()
+ try:
+ kc.wait_for_ready(timeout=startup_timeout)
+ except RuntimeError:
+ kc.stop_channels()
+ km.shutdown_kernel()
+ raise
+
+ return kc
+
+ def _run_signaltest_lifecycle(self, config=None):
+ km = KernelManager(config=config, kernel_name='signaltest')
+ kc = self._prepare_kernel(km, stdout=PIPE, stderr=PIPE)
+
+ def execute(cmd):
+ kc.execute(cmd)
+ reply = kc.get_shell_msg(TIMEOUT)
+ content = reply['content']
+ assert content['status'] == 'ok'
+ return content
+
+ execute("start")
+ assert km.is_alive()
+ execute('check')
+ assert km.is_alive()
+
+ km.restart_kernel(now=True)
+ assert km.is_alive()
+ execute('check')
+
+ km.shutdown_kernel()
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/jupyter_client-5.2.4/jupyter_client/tests/test_multikernelmanager.py
new/jupyter_client-5.3.1/jupyter_client/tests/test_multikernelmanager.py
--- old/jupyter_client-5.2.4/jupyter_client/tests/test_multikernelmanager.py
2017-08-08 17:56:46.000000000 +0200
+++ new/jupyter_client-5.3.1/jupyter_client/tests/test_multikernelmanager.py
2019-07-08 22:07:24.000000000 +0200
@@ -1,14 +1,21 @@
"""Tests for the notebook kernel and session manager."""
-from subprocess import PIPE
+import os
import time
-from unittest import TestCase
+import threading
+import multiprocessing as mp
+from subprocess import PIPE
+from unittest import TestCase
from traitlets.config.loader import Config
-from ..localinterfaces import localhost
from jupyter_client import KernelManager
from jupyter_client.multikernelmanager import MultiKernelManager
+
from .utils import skip_win32
+from ..localinterfaces import localhost
+
+TIMEOUT = 30
+
class TestKernelManager(TestCase):
@@ -83,3 +90,43 @@
def test_ipc_cinfo(self):
km = self._get_ipc_km()
self._run_cinfo(km, 'ipc', 'test')
+
+ def test_start_sequence_tcp_kernels(self):
+ """Ensure that a sequence of kernel startups doesn't break anything."""
+ self._run_lifecycle(self._get_tcp_km())
+ self._run_lifecycle(self._get_tcp_km())
+ self._run_lifecycle(self._get_tcp_km())
+
+
+ def test_start_sequence_tcp_kernels(self):
+ """Ensure that a sequence of kernel startups doesn't break anything."""
+ self._run_lifecycle(self._get_ipc_km())
+ self._run_lifecycle(self._get_ipc_km())
+ self._run_lifecycle(self._get_ipc_km())
+
+ def test_start_parallel_thread_kernels(self):
+ self.test_tcp_lifecycle()
+
+ thread = threading.Thread(target=self.test_tcp_lifecycle)
+ thread2 = threading.Thread(target=self.test_tcp_lifecycle)
+ try:
+ thread.start()
+ thread2.start()
+ finally:
+ thread.join()
+ thread2.join()
+
+ def test_start_parallel_process_kernels(self):
+ self.test_tcp_lifecycle()
+
+ thread = threading.Thread(target=self.test_tcp_lifecycle)
+ proc = mp.Process(target=self.test_tcp_lifecycle)
+
+ try:
+ thread.start()
+ proc.start()
+ finally:
+ thread.join()
+ proc.join()
+
+ assert proc.exitcode == 0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/jupyter_client-5.2.4/jupyter_client/tests/test_session.py
new/jupyter_client-5.3.1/jupyter_client/tests/test_session.py
--- old/jupyter_client-5.2.4/jupyter_client/tests/test_session.py
2018-12-10 15:19:44.000000000 +0100
+++ new/jupyter_client-5.3.1/jupyter_client/tests/test_session.py
2019-07-09 22:04:55.000000000 +0200
@@ -83,7 +83,7 @@
self.assertIsInstance(self.session.auth, hmac.HMAC)
def test_send(self):
- ctx = zmq.Context.instance()
+ ctx = zmq.Context()
A = ctx.socket(zmq.PAIR)
B = ctx.socket(zmq.PAIR)
A.bind("inproc://test")
@@ -316,7 +316,7 @@
self._datetime_test(session)
def test_send_raw(self):
- ctx = zmq.Context.instance()
+ ctx = zmq.Context()
A = ctx.socket(zmq.PAIR)
B = ctx.socket(zmq.PAIR)
A.bind("inproc://test")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/jupyter_client-5.2.4/jupyter_client.egg-info/PKG-INFO
new/jupyter_client-5.3.1/jupyter_client.egg-info/PKG-INFO
--- old/jupyter_client-5.2.4/jupyter_client.egg-info/PKG-INFO 2018-12-10
15:25:48.000000000 +0100
+++ new/jupyter_client-5.3.1/jupyter_client.egg-info/PKG-INFO 2019-07-09
23:25:14.000000000 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: jupyter-client
-Version: 5.2.4
+Version: 5.3.1
Summary: Jupyter protocol implementation and client libraries
Home-page: https://jupyter.org
Author: Jupyter Development Team
@@ -9,7 +9,53 @@
Project-URL: Documentation, https://jupyter-client.readthedocs.io
Project-URL: Source, https://github.com/jupyter/jupyter_client/
Project-URL: Tracker, https://github.com/jupyter/jupyter_client/issues
-Description: UNKNOWN
+Description: # Jupyter Client
+
+ [](https://landscape.io/github/jupyter/jupyter_client/master)
+
+
+ `jupyter_client` contains the reference implementation of the [Jupyter
protocol][].
+ It also provides client and kernel management APIs for working with
kernels.
+
+ It also provides the `jupyter kernelspec` entrypoint
+ for installing kernelspecs for use with Jupyter frontends.
+
+ [Jupyter protocol]:
https://jupyter-client.readthedocs.io/en/latest/messaging.html
+
+
+ # Development Setup
+
+ The [Jupyter Contributor
Guides](http://jupyter.readthedocs.io/en/latest/contributor/content-contributor.html)
provide extensive information on contributing code or documentation to Jupyter
projects. The limited instructions below for setting up a development
environment are for your convenience.
+
+ ## Coding
+
+ You'll need Python and `pip` on the search path. Clone the Jupyter
Client git repository to your computer, for example in
`/my/project/jupyter_client`.
+ Now create an [editable
install](https://pip.pypa.io/en/stable/reference/pip_install/#editable-installs)
+ and download the dependencies of code and test suite by executing:
+
+ cd /my/projects/jupyter_client/
+ pip install -e .[test]
+ py.test
+
+ The last command runs the test suite to verify the setup. During
development, you can pass filenames to `py.test`, and it will execute only
those tests.
+
+ ## Documentation
+
+ The documentation of Jupyter Client is generated from the files in
`docs/` using Sphinx. Instructions for setting up Sphinx with a selection of
optional modules are in the [Documentation
Guide](http://jupyter.readthedocs.io/en/latest/contrib_docs/index.html). You'll
also need the `make` command.
+ For a minimal Sphinx installation to process the Jupyter Client docs,
execute:
+
+ pip install ipykernel sphinx sphinx_rtd_theme
+
+ The following commands build the documentation in HTML format and
check for broken links:
+
+ cd /my/projects/jupyter_client/docs/
+ make html linkcheck
+
+ Point your browser to the following URL to access the generated
documentation:
+
+ _file:///my/projects/jupyter\_client/docs/\_build/html/index.html_
+
+
Keywords: Interactive,Interpreter,Shell,Web
Platform: Linux
Platform: Mac OS X
@@ -24,5 +70,6 @@
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 2
Classifier: Programming Language :: Python :: 3
-Requires-Python: >=2.7, !=3.0.*, !=3.1.*, !=3.2.*
+Requires-Python: >=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*
+Description-Content-Type: text/markdown
Provides-Extra: test
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/jupyter_client-5.2.4/jupyter_client.egg-info/requires.txt
new/jupyter_client-5.3.1/jupyter_client.egg-info/requires.txt
--- old/jupyter_client-5.2.4/jupyter_client.egg-info/requires.txt
2018-12-10 15:25:48.000000000 +0100
+++ new/jupyter_client-5.3.1/jupyter_client.egg-info/requires.txt
2019-07-09 23:25:14.000000000 +0200
@@ -8,9 +8,4 @@
ipykernel
ipython
mock
-
-[test:(python_version >= "3.4" or python_version == "2.7")]
pytest
-
-[test:python_version == "3.3"]
-pytest<3.3.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/jupyter_client-5.2.4/setup.py
new/jupyter_client-5.3.1/setup.py
--- old/jupyter_client-5.2.4/setup.py 2018-12-10 15:19:44.000000000 +0100
+++ new/jupyter_client-5.3.1/setup.py 2019-07-09 22:04:55.000000000 +0200
@@ -16,8 +16,8 @@
import sys
v = sys.version_info
-if v[:2] < (2,7) or (v[0] >= 3 and v[:2] < (3,3)):
- error = "ERROR: %s requires Python version 2.7 or 3.3 or above." % name
+if v[:2] < (2, 7) or (v[0] >= 3 and v[:2] < (3, 5)):
+ error = "ERROR: %s requires Python version 2.7 or 3.5 or above." % name
print(error, file=sys.stderr)
sys.exit(1)
@@ -61,6 +61,8 @@
version = version_ns['__version__'],
packages = packages,
description = 'Jupyter protocol implementation and client libraries',
+ long_description=open('README.md').read(),
+ long_description_content_type='text/markdown',
author = 'Jupyter Development Team',
author_email = '[email protected]',
url = 'https://jupyter.org',
@@ -91,11 +93,9 @@
'python-dateutil>=2.1',
'tornado>=4.1',
],
- python_requires='>=2.7, !=3.0.*, !=3.1.*, !=3.2.*',
+ python_requires='>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*',
extras_require = {
- 'test': ['ipykernel', 'ipython', 'mock'],
- 'test:python_version == "3.3"': ['pytest<3.3.0'],
- 'test:(python_version >= "3.4" or python_version == "2.7")':
['pytest'],
+ 'test': ['ipykernel', 'ipython', 'mock', 'pytest'],
},
cmdclass = {
'bdist_egg': bdist_egg if 'bdist_egg' in sys.argv else
bdist_egg_disabled,