Hello community,
here is the log from the commit of package python3-jupyter_console for
openSUSE:Factory checked in at 2015-10-12 10:01:47
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python3-jupyter_console (Old)
and /work/SRC/openSUSE:Factory/.python3-jupyter_console.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python3-jupyter_console"
Changes:
--------
---
/work/SRC/openSUSE:Factory/python3-jupyter_console/python3-jupyter_console.changes
2015-09-30 05:49:38.000000000 +0200
+++
/work/SRC/openSUSE:Factory/.python3-jupyter_console.new/python3-jupyter_console.changes
2015-10-12 10:01:48.000000000 +0200
@@ -1,0 +2,20 @@
+Mon Oct 5 10:01:17 UTC 2015 - [email protected]
+
+- Build documentation
+
+-------------------------------------------------------------------
+Sat Sep 19 14:36:43 UTC 2015 - [email protected]
+
+- update to version 4.0.2:
+ * add long_description
+ * fix setuptools entrypoint
+
+- changes from version 4.0.1:
+ * entrypoints only when setuptools invoked
+ * suggestion for windows users
+ * Fix printing errors when execute_reply and error messages come
+ * Try installing IPython from Github on RTD
+ * Try installing on RTD with --pre to get IPython 4
+ * Add requirements file for RTD
+
+-------------------------------------------------------------------
Old:
----
jupyter_console-4.0.0.tar.gz
New:
----
jupyter_console-4.0.2.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python3-jupyter_console.spec ++++++
--- /var/tmp/diff_new_pack.MLP4xj/_old 2015-10-12 10:01:48.000000000 +0200
+++ /var/tmp/diff_new_pack.MLP4xj/_new 2015-10-12 10:01:48.000000000 +0200
@@ -17,7 +17,7 @@
Name: python3-jupyter_console
-Version: 4.0.0
+Version: 4.0.2
Release: 0
Summary: Jupyter terminal console
License: BSD-3-Clause
@@ -31,6 +31,11 @@
BuildRequires: python3-setuptools
# Test requirements
BuildRequires: python3-nose
+# Documentation requirements
+BuildRequires: python3-Sphinx
+%if 0%{?suse_version} && ( 0%{?suse_version} != 1315 && 0%{?suse_version} >
1110 )
+BuildRequires: python3-Sphinx-latex
+%endif
Requires: python3-jupyter_client
Requires: python3-jupyter_ipykernel
Requires: python3-jupyter_ipython
@@ -43,6 +48,20 @@
A terminal-based console frontend for Jupter kernels.
This code is based on the single-process IPython terminal.
+%package doc-html
+Summary: HTML documentation for %{name}
+Recommends: %{name} = %{version}
+
+%description doc-html
+Documentation and help files for %{name} in HTML format
+
+%package doc-pdf
+Summary: HTML documentation for %{name}
+Recommends: %{name} = %{version}
+
+%description doc-pdf
+Documentation and help files for %{name} in PDF format
+
%prep
%setup -q -n jupyter_console-%{version}
@@ -52,13 +71,24 @@
%install
python3 setup.py install --prefix=%{_prefix} --root=%{buildroot}
+mv %{buildroot}%{_bindir}/jupyter-console
%{buildroot}%{_bindir}/jupyter3-console
+ln -s -f %{_bindir}/jupyter3-console
%{buildroot}%{_bindir}/jupyter-console-%{py3_ver}
+
# Prepare for update-alternatives usage
mkdir -p %{buildroot}%{_sysconfdir}/alternatives
-mv %{buildroot}%{_bindir}/jupyter-console
%{buildroot}%{_bindir}/jupyter-console-%{py3_ver}
ln -s -f %{_sysconfdir}/alternatives/jupyter-console
%{buildroot}%{_bindir}/jupyter-console
# create a dummy target for /etc/alternatives/jupyter-console
touch %{buildroot}%{_sysconfdir}/alternatives/jupyter-console
+# Build the documentation
+pushd docs
+%if 0%{?suse_version} && ( 0%{?suse_version} != 1315 && 0%{?suse_version} >
1110 )
+PYTHONPATH=%{buildroot}%{python3_sitelib} make latexpdf
+%endif
+PYTHONPATH=%{buildroot}%{python3_sitelib} make html
+rm -rf _build/html/.buildinfo
+popd
+
%post
%_sbindir/update-alternatives \
--install %{_bindir}/jupyter-console jupyter-console
%{_bindir}/jupyter-console-%{py3_ver} 30
@@ -77,8 +107,21 @@
%defattr(-,root,root,-)
%doc CONTRIBUTING.md COPYING.md README.md
%{_bindir}/jupyter-console
+%{_bindir}/jupyter3-console
%{_bindir}/jupyter-console-%{py3_ver}
%ghost %{_sysconfdir}/alternatives/jupyter-console
%{python3_sitelib}/*
+%files doc-html
+%defattr(-,root,root,-)
+%doc COPYING.md
+%doc docs/_build/html/
+
+%if 0%{?suse_version} && ( 0%{?suse_version} != 1315 && 0%{?suse_version} >
1110 )
+%files doc-pdf
+%defattr(-,root,root,-)
+%doc COPYING.md
+%doc docs/_build/latex/*.pdf
+%endif
+
%changelog
++++++ jupyter_console-4.0.0.tar.gz -> jupyter_console-4.0.2.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/jupyter_console-4.0.0/PKG-INFO
new/jupyter_console-4.0.2/PKG-INFO
--- old/jupyter_console-4.0.0/PKG-INFO 2015-07-16 00:56:40.000000000 +0200
+++ new/jupyter_console-4.0.2/PKG-INFO 2015-09-01 18:37:06.000000000 +0200
@@ -1,12 +1,12 @@
Metadata-Version: 1.1
Name: jupyter_console
-Version: 4.0.0
+Version: 4.0.2
Summary: Jupyter terminal console
-Home-page: http://jupyter.org
+Home-page: https://jupyter.org
Author: Jupyter Development Team
Author-email: [email protected]
License: BSD
-Description: UNKNOWN
+Description: An IPython-like terminal frontend for Jupyter kernels in any
language.
Keywords: Interactive,Interpreter,Shell,Web
Platform: Linux
Platform: Mac OS X
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/jupyter_console-4.0.0/docs/requirements.txt
new/jupyter_console-4.0.2/docs/requirements.txt
--- old/jupyter_console-4.0.0/docs/requirements.txt 1970-01-01
01:00:00.000000000 +0100
+++ new/jupyter_console-4.0.2/docs/requirements.txt 2015-08-28
00:12:10.000000000 +0200
@@ -0,0 +1,2 @@
+-e git://github.com/ipython/ipython#egg=ipython
+-e .
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/jupyter_console-4.0.0/jupyter_console/_version.py
new/jupyter_console-4.0.2/jupyter_console/_version.py
--- old/jupyter_console-4.0.0/jupyter_console/_version.py 2015-07-16
00:56:24.000000000 +0200
+++ new/jupyter_console-4.0.2/jupyter_console/_version.py 2015-09-01
18:30:58.000000000 +0200
@@ -1,2 +1,2 @@
-version_info = (4, 0, 0)
+version_info = (4, 0, 2)
__version__ = '.'.join(map(str, version_info))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/jupyter_console-4.0.0/jupyter_console/interactiveshell.py
new/jupyter_console-4.0.2/jupyter_console/interactiveshell.py
--- old/jupyter_console-4.0.0/jupyter_console/interactiveshell.py
2015-07-16 00:56:24.000000000 +0200
+++ new/jupyter_console-4.0.2/jupyter_console/interactiveshell.py
2015-08-28 00:12:10.000000000 +0200
@@ -44,7 +44,7 @@
kernel_banner = Unicode('')
kernel_timeout = Float(60, config=True,
help="""Timeout for giving up on a kernel (in seconds).
-
+
On first connect and restart, the console tests whether the
kernel is running and responsive by sending kernel_info_requests.
This sets the timeout in seconds for how long the kernel can take
@@ -125,9 +125,9 @@
"""
from IPython.core.completerlib import (module_completer,
magic_run_completer,
cd_completer)
-
+
self.Completer = ZMQCompleter(self, self.client, config=self.config)
-
+
self.set_hook('complete_command', module_completer, str_key = 'import')
self.set_hook('complete_command', module_completer, str_key = 'from')
@@ -139,10 +139,10 @@
# itself may be absent
if self.has_readline:
self.set_readline_completer()
-
+
def run_cell(self, cell, store_history=True):
"""Run a complete IPython cell.
-
+
Parameters
----------
cell : str
@@ -156,13 +156,13 @@
# pressing enter flushes any pending display
self.handle_iopub()
return
-
+
# flush stale replies, which could have been ignored, due to missed
heartbeats
while self.client.shell_channel.msg_ready():
self.client.shell_channel.get_msg()
# execute takes 'hidden', which is the inverse of store_hist
msg_id = self.client.execute(cell, not store_history)
-
+
# first thing is wait for any side effects (output, stdin, etc.)
self._executing = True
self._execution_state = "busy"
@@ -176,7 +176,7 @@
# Carry on if polling was interrupted by a signal
if e.errno != errno.EINTR:
raise
-
+
# after all of that is done, wait for the execute reply
while self.client.is_alive():
try:
@@ -194,12 +194,12 @@
def handle_execute_reply(self, msg_id, timeout=None):
msg = self.client.shell_channel.get_msg(block=False, timeout=timeout)
if msg["parent_header"].get("msg_id", None) == msg_id:
-
+
self.handle_iopub(msg_id)
-
+
content = msg["content"]
status = content['status']
-
+
if status == 'aborted':
self.write('Aborted\n')
return
@@ -214,56 +214,55 @@
elif source == 'ask_exit':
self.keepkernel = item.get('keepkernel', False)
self.ask_exit()
-
+
elif status == 'error':
- for frame in content["traceback"]:
- print(frame, file=io.stderr)
-
+ pass
+
self.execution_count = int(content["execution_count"] + 1)
-
+
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,
help="""Prefix to add to outputs coming from clients other than this
one.
-
+
Only relevant if include_other_output is True.
"""
)
-
+
def from_here(self, msg):
"""Return whether a message is from this session"""
return msg['parent_header'].get("session", self.session_id) ==
self.session_id
-
+
def include_output(self, msg):
"""Return whether we should include a given output message"""
from_here = self.from_here(msg)
if msg['msg_type'] == 'execute_input':
# only echo inputs not from here
return self.include_other_output and not from_here
-
+
if self.include_other_output:
return True
else:
return from_here
-
+
def handle_iopub(self, msg_id=''):
"""Process messages on the IOPub channel
This method consumes and processes messages on the IOPub channel,
such as stdout, stderr, execute_result and status.
-
+
It only displays output that is caused by this session.
"""
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"]
-
+
if self.include_output(sub_msg):
if msg_type == 'status':
self._execution_state =
sub_msg["content"]["execution_state"]
@@ -290,7 +289,7 @@
sys.stdout.write(self.other_output_prefix)
format_dict = sub_msg["content"]["data"]
self.handle_rich_data(format_dict)
-
+
# taken from DisplayHook.__call__:
hook = self.displayhook
hook.start_displayhook()
@@ -308,7 +307,7 @@
# if it was an image, we handled it by now
if 'text/plain' in data:
print(data['text/plain'])
-
+
elif msg_type == 'execute_input':
content = sub_msg['content']
self.execution_count = content['execution_count']
@@ -316,13 +315,18 @@
sys.stdout.write(self.other_output_prefix)
sys.stdout.write(self.prompt_manager.render('in'))
sys.stdout.write(content['code'])
-
+
elif msg_type == 'clear_output':
if sub_msg["content"]["wait"]:
self._pending_clearoutput = True
else:
print("\r", file=io.stdout, end="")
+ elif msg_type == 'error':
+ for frame in sub_msg["content"]["traceback"]:
+ print(frame, file=io.stderr)
+
+
_imagemime = {
'image/png': 'png',
'image/jpeg': 'jpeg',
@@ -403,7 +407,7 @@
finally:
# restore SIGINT handler
signal.signal(signal.SIGINT, real_handler)
-
+
# only send stdin reply if there *was not* another request
# or execution finished while we were reading.
if not (self.client.stdin_channel.msg_ready() or
self.client.shell_channel.msg_ready()):
@@ -434,7 +438,7 @@
def _banner1_default(self):
return "Jupyter Console {version}\n".format(version=__version__)
-
+
def compute_banner(self):
super(ZMQTerminalInteractiveShell, self).compute_banner()
if self.client and not self.kernel_banner:
@@ -449,7 +453,7 @@
self.kernel_banner = reply['content'].get('banner', '')
break
self.banner += self.kernel_banner
-
+
def wait_for_kernel(self, timeout=None):
"""method to wait for a kernel to be ready"""
tic = time.time()
@@ -471,7 +475,7 @@
# heart failed
return False
return True
-
+
def interact(self, display_banner=None):
"""Closely emulate the interactive Python console."""
@@ -481,21 +485,21 @@
if display_banner is None:
display_banner = self.display_banner
-
+
if isinstance(display_banner, string_types):
self.show_banner(display_banner)
elif display_banner:
self.show_banner()
more = False
-
+
# run a non-empty no-op, so that we don't get a prompt until
# we know the kernel is ready. This keeps the connection
# message above the first prompt.
if not self.wait_for_kernel(self.kernel_timeout):
error("Kernel did not respond\n")
return
-
+
if self.has_readline:
self.readline_startup_hook(self.pre_readline)
hlen_b4_cell = self.readline.get_current_history_length()
@@ -528,20 +532,20 @@
self.showtraceback()
if self.autoindent:
self.rl_do_indent = True
-
+
else:
try:
prompt = self.separate_in +
self.prompt_manager.render('in')
except Exception:
self.showtraceback()
-
+
line = self.raw_input(prompt)
if self.exit_now:
# quick exit on sys.std[in|out] close
break
if self.autoindent:
self.rl_do_indent = False
-
+
except KeyboardInterrupt:
#double-guard against keyboardinterrupts during kbdint handling
try:
@@ -582,13 +586,13 @@
source_raw = self.input_splitter.raw_reset()
hlen_b4_cell = self._replace_rlhist_multiline(source_raw,
hlen_b4_cell)
self.run_cell(source_raw)
-
+
# Turn off the exit flag, so the mainloop can be restarted if desired
self.exit_now = False
def init_history(self):
"""Sets up the command history. """
- self.history_manager = ZMQHistoryManager(client=self.client)
+ self.history_manager = ZMQHistoryManager(client=self.client)
self.configurables.append(self.history_manager)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/jupyter_console-4.0.0/setup.py
new/jupyter_console-4.0.2/setup.py
--- old/jupyter_console-4.0.0/setup.py 2015-07-16 00:56:24.000000000 +0200
+++ new/jupyter_console-4.0.2/setup.py 2015-09-01 18:31:57.000000000 +0200
@@ -52,9 +52,10 @@
scripts = glob(pjoin('scripts', '*')),
packages = packages,
description = "Jupyter terminal console",
+ long_description= "An IPython-like terminal frontend for Jupyter kernels
in any language.",
author = 'Jupyter Development Team',
author_email = '[email protected]',
- url = 'http://jupyter.org',
+ url = 'https://jupyter.org',
license = 'BSD',
platforms = "Linux, Mac OS X, Windows",
keywords = ['Interactive', 'Interpreter', 'Shell', 'Web'],
@@ -83,10 +84,19 @@
extras_require = setuptools_args['extras_require'] = {
'test:python_version=="2.7"': ['mock'],
'test:sys_platform != "win32"': ['pexpect'],
+
+}
+
+setuptools_args['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__':
setup(**setup_args)