Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-spyder-kernels for
openSUSE:Factory checked in at 2021-02-23 20:21:31
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-spyder-kernels (Old)
and /work/SRC/openSUSE:Factory/.python-spyder-kernels.new.2378 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-spyder-kernels"
Tue Feb 23 20:21:31 2021 rev:21 rq:874444 version:1.10.2
Changes:
--------
---
/work/SRC/openSUSE:Factory/python-spyder-kernels/python-spyder-kernels.changes
2021-02-15 23:23:01.975999149 +0100
+++
/work/SRC/openSUSE:Factory/.python-spyder-kernels.new.2378/python-spyder-kernels.changes
2021-02-23 20:23:05.543798265 +0100
@@ -1,0 +2,11 @@
+Mon Feb 22 17:55:31 UTC 2021 - Ben Greiner <[email protected]>
+
+- Update to version 1.10.2
+ * Warn when comm call creates text output, by @impact27
+ * Increase minimal required version of ipykernel, by @ccordoba12
+ * Better test for non-interactive context, by @juliangilbey
+ * Fix assignment detection in exclamation mark mode (Pdb), by
+ @impact27
+ * Fix recursive debugger, by @impact27
+
+-------------------------------------------------------------------
Old:
----
python-spyder-kernels-1.10.1.tar.gz
New:
----
python-spyder-kernels-1.10.2.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-spyder-kernels.spec ++++++
--- /var/tmp/diff_new_pack.QCZGC7/_old 2021-02-23 20:23:06.107798764 +0100
+++ /var/tmp/diff_new_pack.QCZGC7/_new 2021-02-23 20:23:06.111798767 +0100
@@ -19,7 +19,7 @@
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
%define skip_python2 1
Name: python-spyder-kernels
-Version: 1.10.1
+Version: 1.10.2
Release: 0
Summary: Jupyter kernels for Spyder's console
License: MIT
@@ -37,7 +37,7 @@
BuildRequires: %{python_module cloudpickle}
BuildRequires: %{python_module dask-distributed}
BuildRequires: %{python_module flaky}
-BuildRequires: %{python_module ipykernel >= 5.1.3}
+BuildRequires: %{python_module ipykernel >= 5.3.0}
BuildRequires: %{python_module ipython >= 7.6.0}
BuildRequires: %{python_module jupyter_client >= 5.3.4}
BuildRequires: %{python_module pytest}
@@ -50,7 +50,7 @@
BuildRequires: %{python_module xarray if (%python-base without python36-base)}
# /SECTION
Requires: python-cloudpickle
-Requires: python-ipykernel >= 5.1.3
+Requires: python-ipykernel >= 5.3.0
Requires: python-ipython >= 7.6.0
Requires: python-jupyter_client >= 5.3.4
Requires: python-pyzmq >= 17
++++++ python-spyder-kernels-1.10.1.tar.gz ->
python-spyder-kernels-1.10.2.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/spyder-kernels-1.10.1/.github/workflows/linux-tests.yml
new/spyder-kernels-1.10.2/.github/workflows/linux-tests.yml
--- old/spyder-kernels-1.10.1/.github/workflows/linux-tests.yml 2020-12-18
01:40:05.000000000 +0100
+++ new/spyder-kernels-1.10.2/.github/workflows/linux-tests.yml 2021-02-21
17:09:34.000000000 +0100
@@ -42,6 +42,7 @@
run: |
conda install nomkl -y -q
conda install --file requirements/tests.txt -y -q
+ if [ "$PYTHON_VERSION" != "2.7" ]; then conda install -y -q
jedi=0.17.2; fi
- name: Install Package
shell: bash -l {0}
run: pip install -e .
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/spyder-kernels-1.10.1/.github/workflows/macos-tests.yml
new/spyder-kernels-1.10.2/.github/workflows/macos-tests.yml
--- old/spyder-kernels-1.10.1/.github/workflows/macos-tests.yml 2020-12-18
01:40:05.000000000 +0100
+++ new/spyder-kernels-1.10.2/.github/workflows/macos-tests.yml 2021-02-21
17:09:34.000000000 +0100
@@ -38,6 +38,7 @@
run: |
conda install nomkl -y -q
conda install --file requirements/tests.txt -y -q
+ if [ "$PYTHON_VERSION" != "2.7" ]; then conda install -y -q
jedi=0.17.2; fi
- name: Install Package
shell: bash -l {0}
run: pip install -e .
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/spyder-kernels-1.10.1/.github/workflows/windows-tests.yml
new/spyder-kernels-1.10.2/.github/workflows/windows-tests.yml
--- old/spyder-kernels-1.10.1/.github/workflows/windows-tests.yml
2020-12-18 01:40:05.000000000 +0100
+++ new/spyder-kernels-1.10.2/.github/workflows/windows-tests.yml
2021-02-21 17:09:34.000000000 +0100
@@ -35,7 +35,9 @@
run: conda install --file requirements/windows.txt -y -q
- name: Install test dependencies
shell: bash -l {0}
- run: conda install --file requirements/tests.txt -y -q
+ run: |
+ conda install --file requirements/tests.txt -y -q
+ if [ "$PYTHON_VERSION" != "2.7" ]; then conda install -q -y
jedi=0.17.2; fi
- name: Install Package
shell: bash -l {0}
run: pip install -e .
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/spyder-kernels-1.10.1/CHANGELOG.md
new/spyder-kernels-1.10.2/CHANGELOG.md
--- old/spyder-kernels-1.10.1/CHANGELOG.md 2020-12-18 01:40:05.000000000
+0100
+++ new/spyder-kernels-1.10.2/CHANGELOG.md 2021-02-21 17:09:34.000000000
+0100
@@ -1,5 +1,21 @@
# History of changes
+## Version 1.10.2 (2021-02-21)
+
+### Pull Requests Merged
+
+* [PR 278](https://github.com/spyder-ide/spyder-kernels/pull/278) - PR: Warn
when comm call creates text output, by [@impact27](https://github.com/impact27)
+* [PR 277](https://github.com/spyder-ide/spyder-kernels/pull/277) - PR:
Increase minimal required version of ipykernel, by
[@ccordoba12](https://github.com/ccordoba12)
+* [PR 275](https://github.com/spyder-ide/spyder-kernels/pull/275) - PR: Better
test for non-interactive context, by
[@juliangilbey](https://github.com/juliangilbey)
+* [PR 272](https://github.com/spyder-ide/spyder-kernels/pull/272) - PR: Fix
assignment detection in exclamation mark mode (Pdb), by
[@impact27](https://github.com/impact27)
+* [PR 271](https://github.com/spyder-ide/spyder-kernels/pull/271) - PR: Fix
recursive debugger, by [@impact27](https://github.com/impact27)
+
+In this release 5 pull requests were closed.
+
+
+----
+
+
## Version 1.10.1 (2020-12-18)
### Issues Closed
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/spyder-kernels-1.10.1/requirements/tests.txt
new/spyder-kernels-1.10.2/requirements/tests.txt
--- old/spyder-kernels-1.10.1/requirements/tests.txt 2020-12-18
01:40:05.000000000 +0100
+++ new/spyder-kernels-1.10.2/requirements/tests.txt 2021-02-21
17:09:34.000000000 +0100
@@ -10,4 +10,4 @@
pytest-cov
scipy
xarray
-pillow
\ No newline at end of file
+pillow
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/spyder-kernels-1.10.1/setup.py
new/spyder-kernels-1.10.2/setup.py
--- old/spyder-kernels-1.10.1/setup.py 2020-12-18 01:40:05.000000000 +0100
+++ new/spyder-kernels-1.10.2/setup.py 2021-02-21 17:09:34.000000000 +0100
@@ -38,7 +38,7 @@
REQUIREMENTS = [
'cloudpickle',
'ipykernel<5; python_version<"3"',
- 'ipykernel>=5.1.3; python_version>="3"',
+ 'ipykernel>=5.3.0; python_version>="3"',
'ipython<6; python_version<"3"',
'ipython>=7.6.0; python_version>="3"',
'jupyter-client>=5.3.4',
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/spyder-kernels-1.10.1/spyder_kernels/_version.py
new/spyder-kernels-1.10.2/spyder_kernels/_version.py
--- old/spyder-kernels-1.10.1/spyder_kernels/_version.py 2020-12-18
01:40:05.000000000 +0100
+++ new/spyder-kernels-1.10.2/spyder_kernels/_version.py 2021-02-21
17:09:34.000000000 +0100
@@ -8,5 +8,5 @@
"""Version File."""
-VERSION_INFO = (1, 10, 1)
+VERSION_INFO = (1, 10, 2)
__version__ = '.'.join(map(str, VERSION_INFO))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/spyder-kernels-1.10.1/spyder_kernels/comms/frontendcomm.py
new/spyder-kernels-1.10.2/spyder_kernels/comms/frontendcomm.py
--- old/spyder-kernels-1.10.1/spyder_kernels/comms/frontendcomm.py
2020-12-18 01:40:05.000000000 +0100
+++ new/spyder-kernels-1.10.2/spyder_kernels/comms/frontendcomm.py
2021-02-21 17:09:34.000000000 +0100
@@ -229,3 +229,34 @@
comm._msg_callback(msg)
comm.handle_msg = handle_msg
super(FrontendComm, self)._register_comm(comm)
+
+ def _remote_callback(self, call_name, call_args, call_kwargs):
+ """Call the callback function for the remote call."""
+ saved_stdout_write = sys.stdout.write
+ saved_stderr_write = sys.stderr.write
+ sys.stdout.write = WriteWrapper(saved_stdout_write, call_name)
+ sys.stderr.write = WriteWrapper(saved_stderr_write, call_name)
+ try:
+ return super(FrontendComm, self)._remote_callback(
+ call_name, call_args, call_kwargs)
+ finally:
+ sys.stdout.write = saved_stdout_write
+ sys.stderr.write = saved_stderr_write
+
+
+class WriteWrapper():
+ """Wrapper to warn user when text is printed."""
+
+ def __init__(self, write, name):
+ self._write = write
+ self._name = name
+ self._warning_shown = False
+
+ def __call__(self, string):
+ """Print warning once."""
+ if not self._warning_shown:
+ self._warning_shown = True
+ self._write(
+ "\nOutput from spyder call "
+ + repr(self._name) + ":\n")
+ return self._write(string)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/spyder-kernels-1.10.1/spyder_kernels/console/tests/test_console_kernel.py
new/spyder-kernels-1.10.2/spyder_kernels/console/tests/test_console_kernel.py
---
old/spyder-kernels-1.10.1/spyder_kernels/console/tests/test_console_kernel.py
2020-12-18 01:40:05.000000000 +0100
+++
new/spyder-kernels-1.10.2/spyder_kernels/console/tests/test_console_kernel.py
2021-02-21 17:09:34.000000000 +0100
@@ -43,13 +43,6 @@
TIMEOUT = 15
SETUP_TIMEOUT = 60
-TKINTER_INSTALLED = False
-try:
- import tkinter
- TKINTER_INSTALLED = True
-except:
- pass
-
@contextmanager
def setup_kernel(cmd):
@@ -605,9 +598,21 @@
assert "{'float_kind': <built-in method format of str object" in
content
+# We declare this constant immediately before the test, as determining
+# that TURTLE_ACTIVE is True will briefly pop up a window, similar to the
+# windows that will pop up during the test itself.
+TURTLE_ACTIVE = False
+try:
+ import turtle
+ turtle.Screen()
+ turtle.bye()
+ TURTLE_ACTIVE = True
+except:
+ pass
+
@flaky(max_runs=3)
[email protected](not TKINTER_INSTALLED,
- reason="Doesn't work on Python installations without Tk")
[email protected](not TURTLE_ACTIVE,
+ reason="Doesn't work on non-interactive settings or Python
installations without Tk")
def test_turtle_launch(tmpdir):
"""Test turtle scripts running in the same kernel."""
# Command to start the kernel
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/spyder-kernels-1.10.1/spyder_kernels/customize/spydercustomize.py
new/spyder-kernels-1.10.2/spyder_kernels/customize/spydercustomize.py
--- old/spyder-kernels-1.10.1/spyder_kernels/customize/spydercustomize.py
2020-12-18 01:40:05.000000000 +0100
+++ new/spyder-kernels-1.10.2/spyder_kernels/customize/spydercustomize.py
2021-02-21 17:09:34.000000000 +0100
@@ -27,7 +27,7 @@
from spyder_kernels.comms.frontendcomm import CommError, frontend_request
from spyder_kernels.customize.namespace_manager import NamespaceManager
-from spyder_kernels.customize.spyderpdb import SpyderPdb
+from spyder_kernels.customize.spyderpdb import SpyderPdb, enter_debugger
from spyder_kernels.customize.umr import UserModuleReloader
from spyder_kernels.py3compat import TimeoutError, PY2, _print, encode
@@ -374,18 +374,6 @@
return None
-def get_debugger(filename):
- """Get a debugger for a given filename."""
- debugger = pdb.Pdb()
- filename = debugger.canonic(filename)
- debugger._wait_for_mainpyfile = 1
- debugger.mainpyfile = filename
- debugger._user_requested_quit = 0
- if os.name == 'nt':
- filename = filename.replace('\\', '/')
- return debugger, filename
-
-
def count_leading_empty_lines(cell):
"""Count the number of leading empty cells."""
if PY2:
@@ -597,10 +585,12 @@
filename = get_current_file_name()
if filename is None:
return
- debugger, filename = get_debugger(filename)
- debugger.continue_if_has_breakpoints = True
- debugger.run("runfile(%r, args=%r, wdir=%r, current_namespace=%r)" % (
- filename, args, wdir, current_namespace))
+
+ enter_debugger(
+ filename, True,
+ "runfile({}" +
+ ", args=%r, wdir=%r, current_namespace=%r)" % (
+ args, wdir, current_namespace))
builtins.debugfile = debugfile
@@ -678,11 +668,10 @@
if filename is None:
return
- debugger, filename = get_debugger(filename)
- # The breakpoint might not be in the cell
- debugger.continue_if_has_breakpoints = False
- debugger.run("runcell({}, {})".format(
- repr(cellname), repr(filename)))
+ enter_debugger(
+ filename, False,
+ "runcell({}, ".format(repr(cellname)) +
+ "{})")
builtins.debugcell = debugcell
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/spyder-kernels-1.10.1/spyder_kernels/customize/spyderpdb.py
new/spyder-kernels-1.10.2/spyder_kernels/customize/spyderpdb.py
--- old/spyder-kernels-1.10.1/spyder_kernels/customize/spyderpdb.py
2020-12-18 01:40:05.000000000 +0100
+++ new/spyder-kernels-1.10.2/spyder_kernels/customize/spyderpdb.py
2021-02-21 17:09:34.000000000 +0100
@@ -6,9 +6,11 @@
"""Spyder debugger."""
+import ast
import bdb
-import sys
import logging
+import os
+import sys
import traceback
from collections import namedtuple
@@ -144,7 +146,16 @@
cmd_in_namespace = False
cmd_func = getattr(self, 'do_' + cmd, None)
is_pdb_cmd = cmd_func is not None
- is_assignment = arg and arg[0] == "="
+ # Look for assignment
+ is_assignment = False
+ try:
+ for node in ast.walk(ast.parse(line)):
+ if isinstance(node, ast.Assign):
+ is_assignment = True
+ break
+ except SyntaxError:
+ pass
+
if is_pdb_cmd:
if not cmd_in_namespace and not is_assignment:
# This is a pdb command without the '!' prefix.
@@ -512,7 +523,7 @@
if (self.mainpyfile != self.canonic(frame.f_code.co_filename)
or frame.f_lineno <= 0):
return
- self._wait_for_mainpyfile = 0
+ self._wait_for_mainpyfile = False
super(SpyderPdb, self).user_return(frame, return_value)
def _cmdloop(self):
@@ -700,3 +711,44 @@
"""
with DebugWrapper(self):
super(SpyderPdb, self).runcall(*args, **kwds)
+
+
+def enter_debugger(filename, continue_if_has_breakpoints, code_format):
+ """Enter debugger. Code format should be a format that accept filename."""
+ kernel = get_ipython().kernel
+ recursive = kernel.is_debugging()
+ if recursive:
+ parent_debugger = kernel._pdb_obj
+ sys.settrace(None)
+ globals = parent_debugger.curframe.f_globals
+ locals = parent_debugger.curframe_locals
+ # Create child debugger
+ debugger = SpyderPdb(
+ completekey=parent_debugger.completekey,
+ stdin=parent_debugger.stdin, stdout=parent_debugger.stdout)
+ debugger.use_rawinput = parent_debugger.use_rawinput
+ debugger.prompt = "(%s) " % parent_debugger.prompt.strip()
+ else:
+ debugger = SpyderPdb()
+
+ filename = debugger.canonic(filename)
+ debugger._wait_for_mainpyfile = True
+ debugger.mainpyfile = filename
+ debugger.continue_if_has_breakpoints = continue_if_has_breakpoints
+ debugger._user_requested_quit = False
+
+ if os.name == 'nt':
+ filename = filename.replace('\\', '/')
+
+ code = code_format.format(repr(filename))
+
+ if recursive:
+ # Enter recursive debugger
+ sys.call_tracing(debugger.run, (code, globals, locals))
+ # Reset parent debugger
+ sys.settrace(parent_debugger.trace_dispatch)
+ parent_debugger.lastcmd = debugger.lastcmd
+ kernel._register_pdb_session(parent_debugger)
+ else:
+ # The breakpoint might not be in the cell
+ debugger.run(code)