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 2022-09-04 22:11:56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-spyder-kernels (Old) and /work/SRC/openSUSE:Factory/.python-spyder-kernels.new.2083 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-spyder-kernels" Sun Sep 4 22:11:56 2022 rev:36 rq:1001138 version:2.3.3 Changes: -------- --- /work/SRC/openSUSE:Factory/python-spyder-kernels/python-spyder-kernels.changes 2022-07-26 19:45:04.549765431 +0200 +++ /work/SRC/openSUSE:Factory/.python-spyder-kernels.new.2083/python-spyder-kernels.changes 2022-09-04 22:12:04.392334803 +0200 @@ -1,0 +2,9 @@ +Sun Sep 4 08:50:21 UTC 2022 - andy great <andythe_gr...@pm.me> + +- Update to version 2.3.3. + * Use get_size to get variable length for get_var_properties to + prevent triggering Dask tasks, by @dalthviz + * Use debugging namespace when curframe is active, by @impact27 + (405) + +------------------------------------------------------------------- Old: ---- python-spyder-kernels-2.3.2.tar.gz New: ---- python-spyder-kernels-2.3.3.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-spyder-kernels.spec ++++++ --- /var/tmp/diff_new_pack.717FIF/_old 2022-09-04 22:12:04.892336210 +0200 +++ /var/tmp/diff_new_pack.717FIF/_new 2022-09-04 22:12:04.896336222 +0200 @@ -21,7 +21,7 @@ # flaky for obs, only test locally %bcond_with dasktest Name: python-spyder-kernels -Version: 2.3.2 +Version: 2.3.3 Release: 0 Summary: Jupyter kernels for Spyder's console License: MIT ++++++ python-spyder-kernels-2.3.2.tar.gz -> python-spyder-kernels-2.3.3.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/spyder-kernels-2.3.2/.github/workflows/linux-tests.yml new/spyder-kernels-2.3.3/.github/workflows/linux-tests.yml --- old/spyder-kernels-2.3.2/.github/workflows/linux-tests.yml 2022-07-06 18:22:03.000000000 +0200 +++ new/spyder-kernels-2.3.3/.github/workflows/linux-tests.yml 2022-08-28 03:53:56.000000000 +0200 @@ -22,7 +22,7 @@ strategy: fail-fast: false matrix: - PYTHON_VERSION: ['2.7', '3.7', '3.8', '3.9'] + PYTHON_VERSION: ['3.7', '3.8', '3.9'] timeout-minutes: 20 steps: - name: Checkout branch diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/spyder-kernels-2.3.2/.github/workflows/macos-tests.yml new/spyder-kernels-2.3.3/.github/workflows/macos-tests.yml --- old/spyder-kernels-2.3.2/.github/workflows/macos-tests.yml 2022-07-06 18:22:03.000000000 +0200 +++ new/spyder-kernels-2.3.3/.github/workflows/macos-tests.yml 2022-08-28 03:53:56.000000000 +0200 @@ -21,7 +21,7 @@ strategy: fail-fast: false matrix: - PYTHON_VERSION: ['2.7', '3.7', '3.8', '3.9'] + PYTHON_VERSION: ['3.7', '3.8', '3.9'] timeout-minutes: 25 steps: - name: Checkout branch diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/spyder-kernels-2.3.2/CHANGELOG.md new/spyder-kernels-2.3.3/CHANGELOG.md --- old/spyder-kernels-2.3.2/CHANGELOG.md 2022-07-06 18:22:03.000000000 +0200 +++ new/spyder-kernels-2.3.3/CHANGELOG.md 2022-08-28 03:53:56.000000000 +0200 @@ -1,5 +1,24 @@ # History of changes +## Version 2.3.3 (2022-08-28) + +### Issues Closed + +* [Issue 405](https://github.com/spyder-ide/spyder-kernels/issues/405) - Python 2 tests are broken in Conda slots ([PR 404](https://github.com/spyder-ide/spyder-kernels/pull/404) by [@impact27](https://github.com/impact27)) + +In this release 1 issue was closed. + +### Pull Requests Merged + +* [PR 407](https://github.com/spyder-ide/spyder-kernels/pull/407) - PR: Use `get_size` to get variable length for `get_var_properties` to prevent triggering Dask tasks, by [@dalthviz](https://github.com/dalthviz) +* [PR 404](https://github.com/spyder-ide/spyder-kernels/pull/404) - PR: Use debugging namespace when curframe is active, by [@impact27](https://github.com/impact27) ([405](https://github.com/spyder-ide/spyder-kernels/issues/405)) + +In this release 2 pull requests were closed. + + +---- + + ## Version 2.3.2 (2022-07-06) ### Issues Closed diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/spyder-kernels-2.3.2/spyder_kernels/_version.py new/spyder-kernels-2.3.3/spyder_kernels/_version.py --- old/spyder-kernels-2.3.2/spyder_kernels/_version.py 2022-07-06 18:22:03.000000000 +0200 +++ new/spyder-kernels-2.3.3/spyder_kernels/_version.py 2022-08-28 03:53:56.000000000 +0200 @@ -8,5 +8,5 @@ """Version File.""" -VERSION_INFO = (2, 3, 2) +VERSION_INFO = (2, 3, 3) __version__ = '.'.join(map(str, VERSION_INFO)) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/spyder-kernels-2.3.2/spyder_kernels/console/kernel.py new/spyder-kernels-2.3.3/spyder_kernels/console/kernel.py --- old/spyder-kernels-2.3.2/spyder_kernels/console/kernel.py 2022-07-06 18:22:03.000000000 +0200 +++ new/spyder-kernels-2.3.3/spyder_kernels/console/kernel.py 2022-08-28 03:53:56.000000000 +0200 @@ -29,7 +29,8 @@ from spyder_kernels.utils.iofuncs import iofunctions from spyder_kernels.utils.mpl import ( MPL_BACKENDS_FROM_SPYDER, MPL_BACKENDS_TO_SPYDER, INLINE_FIGURE_FORMATS) -from spyder_kernels.utils.nsview import get_remote_data, make_remote_view +from spyder_kernels.utils.nsview import ( + get_remote_data, make_remote_view, get_size) from spyder_kernels.console.shell import SpyderShell if PY3: @@ -344,7 +345,7 @@ # Interrupting the eventloop is only implemented when a message is # received on the shell channel, but this message is queued and # won't be processed because an `execute` message is being - # processed. Therefore we process the message here (comm channel) + # processed. Therefore we process the message here (control chan.) # and request a dummy message to be sent on the shell channel to # stop the eventloop. This will call back `_interrupt_eventloop`. self.frontend_call().request_interrupt_eventloop() @@ -535,7 +536,6 @@ try: import matplotlib.pyplot as plt plt.close('all') - del plt except: pass @@ -594,7 +594,7 @@ both locals() and globals() for current frame when debugging """ ns = {} - if self.shell.is_debugging() and self.shell.pdb_session.prompt_waiting: + if self.shell.is_debugging() and self.shell.pdb_session.curframe: # Stopped at a pdb prompt ns.update(self.shell.user_ns) ns.update(self.shell._pdb_locals) @@ -632,7 +632,7 @@ def _get_len(self, var): """Return sequence length""" try: - return len(var) + return get_size(var) except: return None diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/spyder-kernels-2.3.2/spyder_kernels/console/start.py new/spyder-kernels-2.3.3/spyder_kernels/console/start.py --- old/spyder-kernels-2.3.2/spyder_kernels/console/start.py 2022-07-06 18:22:03.000000000 +0200 +++ new/spyder-kernels-2.3.3/spyder_kernels/console/start.py 2022-08-28 03:53:56.000000000 +0200 @@ -270,11 +270,9 @@ import guiqwt.pyplot as pyplot except: import matplotlib.pyplot as pyplot - __fig__ = pyplot.figure(); - __items__ = getattr(pyplot, funcname[2:])( - ip.kernel._get_current_namespace()[name]) + pyplot.figure(); + getattr(pyplot, funcname[2:])(ip.kernel._get_current_namespace()[name]) pyplot.show() - del __fig__, __items__ def main(): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/spyder-kernels-2.3.2/spyder_kernels/console/tests/test_console_kernel.py new/spyder-kernels-2.3.3/spyder_kernels/console/tests/test_console_kernel.py --- old/spyder-kernels-2.3.2/spyder_kernels/console/tests/test_console_kernel.py 2022-07-06 18:22:03.000000000 +0200 +++ new/spyder-kernels-2.3.3/spyder_kernels/console/tests/test_console_kernel.py 2022-08-28 03:53:56.000000000 +0200 @@ -219,7 +219,7 @@ assert "'a'" in var_properties assert "'is_list': False" in var_properties assert "'is_dict': False" in var_properties - assert "'len': None" in var_properties + assert "'len': 1" in var_properties assert "'is_array': False" in var_properties assert "'is_image': False" in var_properties assert "'is_data_frame': False" in var_properties @@ -269,7 +269,7 @@ assert "'a'" in var_properties assert "'is_list': False" in var_properties assert "'is_dict': False" in var_properties - assert "'len': None" in var_properties + assert "'len': 1" in var_properties assert "'is_array': False" in var_properties assert "'is_image': False" in var_properties assert "'is_data_frame': False" in var_properties @@ -294,7 +294,7 @@ assert "'a'" in var_properties assert "'is_list': False" in var_properties assert "'is_dict': False" in var_properties - assert "'len': None" in var_properties + assert "'len': 1" in var_properties assert "'is_array': False" in var_properties assert "'is_image': False" in var_properties assert "'is_data_frame': False" in var_properties @@ -307,7 +307,7 @@ assert "'b'" in var_properties assert "'is_list': False" in var_properties assert "'is_dict': False" in var_properties - assert "'len': None" in var_properties + assert "'len': 1" in var_properties assert "'is_array': False" in var_properties assert "'is_image': False" in var_properties assert "'is_data_frame': False" in var_properties @@ -344,7 +344,7 @@ assert "'a'" in var_properties assert "'is_list': False" in var_properties assert "'is_dict': False" in var_properties - assert "'len': None" in var_properties + assert "'len': 1" in var_properties assert "'is_array': False" in var_properties assert "'is_image': False" in var_properties assert "'is_data_frame': False" in var_properties @@ -831,7 +831,6 @@ # test pdb pdb_obj = SpyderPdb() pdb_obj.curframe = inspect.currentframe() - pdb_obj.prompt_waiting = True pdb_obj.completenames = lambda *ignore: ['baba'] kernel.shell.pdb_session = pdb_obj match = kernel.do_complete('ba', 2) @@ -890,7 +889,6 @@ """ pdb_obj = SpyderPdb() pdb_obj.curframe = inspect.currentframe() - pdb_obj.prompt_waiting = True pdb_obj.curframe_locals = pdb_obj.curframe.f_locals kernel.shell.pdb_session = pdb_obj @@ -917,7 +915,6 @@ """ pdb_obj = SpyderPdb() pdb_obj.curframe = inspect.currentframe() - pdb_obj.prompt_waiting = True pdb_obj.curframe_locals = pdb_obj.curframe.f_locals kernel.shell.pdb_session = pdb_obj @@ -944,7 +941,6 @@ kernel.shell.user_ns["test"] = 0 pdb_obj = SpyderPdb() pdb_obj.curframe = inspect.currentframe() - pdb_obj.prompt_waiting = True pdb_obj.curframe_locals = pdb_obj.curframe.f_locals kernel.shell.pdb_session = pdb_obj @@ -1026,7 +1022,6 @@ baba = 1 pdb_obj = SpyderPdb() pdb_obj.curframe = inspect.currentframe() - pdb_obj.prompt_waiting = True pdb_obj.curframe_locals = pdb_obj.curframe.f_locals kernel.shell.pdb_session = pdb_obj @@ -1064,7 +1059,6 @@ a = 1 pdb_obj = SpyderPdb() pdb_obj.curframe = inspect.currentframe() - pdb_obj.prompt_waiting = True pdb_obj.curframe_locals = pdb_obj.curframe.f_locals kernel.shell.pdb_session = pdb_obj @@ -1143,5 +1137,49 @@ assert value == '0' +@flaky(max_runs=3) +@pytest.mark.skipif( + sys.version_info[0] < 3, + reason="Fails with python 2") +def test_debug_namespace(tmpdir): + """ + Test that the kernel uses the proper namespace while debugging. + """ + # Command to start the kernel + cmd = "from spyder_kernels.console import start; start.main()" + + with setup_kernel(cmd) as client: + # Write code to a file + d = tmpdir.join("pdb-ns-test.py") + d.write('def func():\n bb = "hello"\n breakpoint()\nfunc()') + + # Run code file `d` + msg_id = client.execute("runfile(r'{}')".format(to_text_string(d))) + + # make sure that 'bb' returns 'hello' + client.get_stdin_msg(timeout=TIMEOUT) + client.input('bb') + + t0 = time.time() + while True: + assert time.time() - t0 < 5 + msg = client.get_iopub_msg(timeout=TIMEOUT) + if msg.get('msg_type') == 'stream': + if 'hello' in msg["content"].get("text"): + break + + # make sure that get_value('bb') returns 'hello' + client.get_stdin_msg(timeout=TIMEOUT) + client.input("get_ipython().kernel.get_value('bb')") + + t0 = time.time() + while True: + assert time.time() - t0 < 5 + msg = client.get_iopub_msg(timeout=TIMEOUT) + if msg.get('msg_type') == 'stream': + if 'hello' in msg["content"].get("text"): + break + + if __name__ == "__main__": pytest.main() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/spyder-kernels-2.3.2/spyder_kernels/customize/spyderpdb.py new/spyder-kernels-2.3.3/spyder_kernels/customize/spyderpdb.py --- old/spyder-kernels-2.3.2/spyder_kernels/customize/spyderpdb.py 2022-07-06 18:22:03.000000000 +0200 +++ new/spyder-kernels-2.3.3/spyder_kernels/customize/spyderpdb.py 2022-08-28 03:53:56.000000000 +0200 @@ -105,9 +105,6 @@ # Keep track of remote filename self.remote_filename = None - # State of the prompt - self.prompt_waiting = False - # Line received from the frontend self._cmd_input_line = None @@ -263,8 +260,12 @@ if out is not None: sys.stdout.flush() sys.stderr.flush() - frontend_request(blocking=False).show_pdb_output( - repr(out)) + try: + frontend_request(blocking=False).show_pdb_output( + repr(out)) + except (CommError, TimeoutError): + # Fallback + print("pdb out> ", repr(out)) finally: if execute_events: @@ -360,7 +361,10 @@ Take a number as argument as an (optional) number of context line to print""" super(SpyderPdb, self).do_where(arg) - frontend_request(blocking=False).do_where() + try: + frontend_request(blocking=False).do_where() + except (CommError, TimeoutError): + logger.debug("Could not send where request to the frontend.") do_w = do_where @@ -660,11 +664,9 @@ line = self.cmdqueue.pop(0) else: try: - self.prompt_waiting = True line = self.cmd_input(self.prompt) except EOFError: line = 'EOF' - self.prompt_waiting = False line = self.precmd(line) stop = self.onecmd(line) stop = self.postcmd(stop, line)