Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package python-jupyter-kernel-test for openSUSE:Factory checked in at 2023-09-25 20:03:17 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-jupyter-kernel-test (Old) and /work/SRC/openSUSE:Factory/.python-jupyter-kernel-test.new.1770 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-jupyter-kernel-test" Mon Sep 25 20:03:17 2023 rev:4 rq:1113301 version:0.6.0 Changes: -------- --- /work/SRC/openSUSE:Factory/python-jupyter-kernel-test/python-jupyter-kernel-test.changes 2023-02-05 19:23:16.376621793 +0100 +++ /work/SRC/openSUSE:Factory/.python-jupyter-kernel-test.new.1770/python-jupyter-kernel-test.changes 2023-09-25 20:58:31.994082252 +0200 @@ -1,0 +2,7 @@ +Sun Sep 24 18:02:36 UTC 2023 - Ben Greiner <c...@bnavigator.de> + +- Update to 0.6.0 + * Add test for Jep #65 #134 (@Hind-M) + * Drop Python 3.7 support #135 (@blink1073) + +------------------------------------------------------------------- Old: ---- jupyter_kernel_test-0.5.0.tar.gz New: ---- jupyter_kernel_test-0.6.0.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-jupyter-kernel-test.spec ++++++ --- /var/tmp/diff_new_pack.YYY5Gv/_old 2023-09-25 20:58:33.038119968 +0200 +++ /var/tmp/diff_new_pack.YYY5Gv/_new 2023-09-25 20:58:33.038119968 +0200 @@ -17,13 +17,13 @@ Name: python-jupyter-kernel-test -Version: 0.5.0 +Version: 0.6.0 Release: 0 Summary: A tool for testing Jupyter kernels License: BSD-3-Clause URL: https://github.com/jupyter/jupyter_kernel_test Source: https://files.pythonhosted.org/packages/source/j/jupyter_kernel_test/jupyter_kernel_test-%{version}.tar.gz -BuildRequires: %{python_module base >= 3.7} +BuildRequires: %{python_module base >= 3.8} BuildRequires: %{python_module hatchling >= 1.5} BuildRequires: %{python_module pip} BuildRequires: fdupes ++++++ jupyter_kernel_test-0.5.0.tar.gz -> jupyter_kernel_test-0.6.0.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jupyter_kernel_test-0.5.0/.github/workflows/tests.yml new/jupyter_kernel_test-0.6.0/.github/workflows/tests.yml --- old/jupyter_kernel_test-0.5.0/.github/workflows/tests.yml 2020-02-02 01:00:00.000000000 +0100 +++ new/jupyter_kernel_test-0.6.0/.github/workflows/tests.yml 2020-02-02 01:00:00.000000000 +0100 @@ -25,12 +25,12 @@ fail-fast: false matrix: os: [ubuntu-latest, windows-latest, macos-latest] - python-version: ["3.7", "3.11"] + python-version: ["3.8", "3.11"] include: - os: windows-latest python-version: "3.9" - os: macos-latest - python-version: "3.8" + python-version: "3.9" - os: ubuntu-latest python-version: "3.10" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jupyter_kernel_test-0.5.0/.pre-commit-config.yaml new/jupyter_kernel_test-0.6.0/.pre-commit-config.yaml --- old/jupyter_kernel_test-0.5.0/.pre-commit-config.yaml 2020-02-02 01:00:00.000000000 +0100 +++ new/jupyter_kernel_test-0.6.0/.pre-commit-config.yaml 2020-02-02 01:00:00.000000000 +0100 @@ -19,7 +19,7 @@ - id: trailing-whitespace - repo: https://github.com/python-jsonschema/check-jsonschema - rev: 0.19.2 + rev: 0.23.3 hooks: - id: check-github-workflows @@ -31,12 +31,12 @@ [mdformat-gfm, mdformat-frontmatter, mdformat-footnote] - repo: https://github.com/psf/black - rev: 22.12.0 + rev: 23.7.0 hooks: - id: black - - repo: https://github.com/charliermarsh/ruff-pre-commit - rev: v0.0.217 + - repo: https://github.com/astral-sh/ruff-pre-commit + rev: v0.0.281 hooks: - id: ruff args: ["--fix"] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jupyter_kernel_test-0.5.0/CHANGELOG.md new/jupyter_kernel_test-0.6.0/CHANGELOG.md --- old/jupyter_kernel_test-0.5.0/CHANGELOG.md 2020-02-02 01:00:00.000000000 +0100 +++ new/jupyter_kernel_test-0.6.0/CHANGELOG.md 2020-02-02 01:00:00.000000000 +0100 @@ -2,6 +2,27 @@ <!-- <START NEW CHANGELOG ENTRY> --> +## 0.6.0 + +([Full Changelog](https://github.com/jupyter/jupyter_kernel_test/compare/v0.5.0...78b8f14cf8a7f6c4fba4cb20edd8fa293ae7a602)) + +### Enhancements made + +- Add test for Jep #65 [#134](https://github.com/jupyter/jupyter_kernel_test/pull/134) ([@Hind-M](https://github.com/Hind-M)) + +### Maintenance and upkeep improvements + +- Drop Python 3.7 support [#135](https://github.com/jupyter/jupyter_kernel_test/pull/135) ([@blink1073](https://github.com/blink1073)) +- Add more linting [#127](https://github.com/jupyter/jupyter_kernel_test/pull/127) ([@blink1073](https://github.com/blink1073)) + +### Contributors to this release + +([GitHub contributors page for this release](https://github.com/jupyter/jupyter_kernel_test/graphs/contributors?from=2023-01-27&to=2023-08-29&type=c)) + +[@blink1073](https://github.com/search?q=repo%3Ajupyter%2Fjupyter_kernel_test+involves%3Ablink1073+updated%3A2023-01-27..2023-08-29&type=Issues) | [@Hind-M](https://github.com/search?q=repo%3Ajupyter%2Fjupyter_kernel_test+involves%3AHind-M+updated%3A2023-01-27..2023-08-29&type=Issues) | [@pre-commit-ci](https://github.com/search?q=repo%3Ajupyter%2Fjupyter_kernel_test+involves%3Apre-commit-ci+updated%3A2023-01-27..2023-08-29&type=Issues) + +<!-- <END NEW CHANGELOG ENTRY> --> + ## 0.5.0 ([Full Changelog](https://github.com/jupyter/jupyter_kernel_test/compare/v0.4.5...c3ffbd013b1cdd32d7273d4fbe9ee0ab61af7a1e)) @@ -25,8 +46,6 @@ [@blink1073](https://github.com/search?q=repo%3Ajupyter%2Fjupyter_kernel_test+involves%3Ablink1073+updated%3A2022-08-22..2023-01-27&type=Issues) | [@dependabot](https://github.com/search?q=repo%3Ajupyter%2Fjupyter_kernel_test+involves%3Adependabot+updated%3A2022-08-22..2023-01-27&type=Issues) | [@pre-commit-ci](https://github.com/search?q=repo%3Ajupyter%2Fjupyter_kernel_test+involves%3Apre-commit-ci+updated%3A2022-08-22..2023-01-27&type=Issues) -<!-- <END NEW CHANGELOG ENTRY> --> - ## 0.4.5 ([Full Changelog](https://github.com/jupyter/jupyter_kernel_test/compare/v0.4.4...85c23f820f8127808f60dab6f5871e8d26c01192)) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jupyter_kernel_test-0.5.0/PKG-INFO new/jupyter_kernel_test-0.6.0/PKG-INFO --- old/jupyter_kernel_test-0.5.0/PKG-INFO 2020-02-02 01:00:00.000000000 +0100 +++ new/jupyter_kernel_test-0.6.0/PKG-INFO 2020-02-02 01:00:00.000000000 +0100 @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: jupyter_kernel_test -Version: 0.5.0 +Version: 0.6.0 Project-URL: Homepage, https://github.com/jupyter/jupyter_kernel_test Author-email: Jupyter Development Team <jupy...@googlegroups.com> License: Copyright (c) 2015-2021 Project Jupyter Contributors @@ -35,7 +35,7 @@ Classifier: License :: OSI Approved :: BSD License Classifier: Programming Language :: Python :: 3 Classifier: Topic :: Software Development :: Testing -Requires-Python: >=3.7 +Requires-Python: >=3.8 Requires-Dist: jsonschema Requires-Dist: jupyter-client>=6.1.13 Provides-Extra: test diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jupyter_kernel_test-0.5.0/jupyter_kernel_test/__init__.py new/jupyter_kernel_test-0.6.0/jupyter_kernel_test/__init__.py --- old/jupyter_kernel_test-0.5.0/jupyter_kernel_test/__init__.py 2020-02-02 01:00:00.000000000 +0100 +++ new/jupyter_kernel_test-0.6.0/jupyter_kernel_test/__init__.py 2020-02-02 01:00:00.000000000 +0100 @@ -15,7 +15,7 @@ TIMEOUT = 15 -__version__ = "0.5.0" +__version__ = "0.6.0" def ensure_sync(func): @@ -68,7 +68,7 @@ ) self.assertTrue(reply["content"]["language_info"]["file_extension"].startswith(".")) - def execute_helper( + def execute_helper( # noqa self, code, timeout=TIMEOUT, silent=False, store_history=True, stop_on_error=True ): msg_id = self.kc.execute( @@ -100,7 +100,7 @@ def test_execute_stdout(self): if not self.code_hello_world: - raise SkipTest("No code hello world") + raise SkipTest("No code hello world") # noqa self.flush_channels() reply, output_msgs = self.execute_helper(code=self.code_hello_world) @@ -121,7 +121,7 @@ def test_execute_stderr(self): if not self.code_stderr: - raise SkipTest("No code stderr") + raise SkipTest("No code stderr") # noqa self.flush_channels() reply, output_msgs = self.execute_helper(code=self.code_stderr) @@ -148,7 +148,7 @@ def test_completion(self): if not self.completion_samples: - raise SkipTest("No completion samples") + raise SkipTest("No completion samples") # noqa for sample in self.completion_samples: with self.subTest(text=sample["text"]): @@ -174,7 +174,7 @@ if not ( self.complete_code_samples or self.incomplete_code_samples or self.invalid_code_samples ): - raise SkipTest("Not testing is_complete") + raise SkipTest("Not testing is_complete") # noqa self.flush_channels() @@ -194,7 +194,7 @@ def test_pager(self): if not self.code_page_something: - raise SkipTest("No code page something") + raise SkipTest("No code page something") # noqa self.flush_channels() @@ -210,7 +210,7 @@ def test_error(self): if not self.code_generate_error: - raise SkipTest("No code generate error") + raise SkipTest("No code generate error") # noqa self.flush_channels() @@ -223,7 +223,7 @@ def test_execute_result(self): if not self.code_execute_result: - raise SkipTest("No code execute result") + raise SkipTest("No code execute result") # noqa for sample in self.code_execute_result: with self.subTest(code=sample["code"]): @@ -246,13 +246,14 @@ if "result" in sample: self.assertEqual(msg["content"]["data"][mime], sample["result"]) if not found: - raise AssertionError("execute_result message not found") + emsg = "execute_result message not found" + raise AssertionError(emsg) code_display_data: list = [] def test_display_data(self): if not self.code_display_data: - raise SkipTest("No code display data") + raise SkipTest("No code display data") # noqa for sample in self.code_display_data: with self.subTest(code=sample["code"]): @@ -270,7 +271,8 @@ continue self.assertIn(sample["mime"], msg["content"]["data"]) if not found: - raise AssertionError("display_data message not found") + emsg = "display_data message not found" + raise AssertionError(emsg) # this should match one of the values in code_execute_result code_history_pattern = "" @@ -292,7 +294,7 @@ def test_history(self): if not self.code_execute_result: - raise SkipTest("No code execute result") + raise SkipTest("No code execute result") # noqa codes = [s["code"] for s in self.code_execute_result] _ = [s.get("result", "") for s in self.code_execute_result] @@ -302,7 +304,7 @@ with self.subTest(hist_access_type="tail"): if "tail" not in self.supported_history_operations: - raise SkipTest("History tail not suported") + raise SkipTest("History tail not suported") # noqa reply = self.history_helper(codes, output=False, raw=True, hist_access_type="tail", n=n) self.assertEqual(len(reply["content"]["history"]), n) self.assertEqual(len(reply["content"]["history"][0]), 3) @@ -317,9 +319,9 @@ with self.subTest(hist_access_type="range"): if "range" not in self.supported_history_operations: - raise SkipTest("History range not supported") + raise SkipTest("History range not supported") # noqa if session is None: - raise SkipTest("No session") + raise SkipTest("No session") # noqa reply = self.history_helper( codes, output=False, @@ -335,10 +337,9 @@ with self.subTest(hist_access_type="search"): if not self.code_history_pattern: - raise SkipTest("No code history pattern") + raise SkipTest("No code history pattern") # noqa if "search" not in self.supported_history_operations: - raise SkipTest("History search not supported") - + raise SkipTest("History search not supported") # noqa with self.subTest(subsearch="normal"): reply = self.history_helper( codes, @@ -373,7 +374,7 @@ def test_inspect(self): if not self.code_inspect_sample: - raise SkipTest("No code inspect sample") + raise SkipTest("No code inspect sample") # noqa self.flush_channels() msg_id = self.kc.inspect(self.code_inspect_sample) @@ -388,7 +389,7 @@ def test_clear_output(self): if not self.code_clear_output: - raise SkipTest("No code clear output") + raise SkipTest("No code clear output") # noqa self.flush_channels() reply, output_msgs = self.execute_helper(code=self.code_clear_output) @@ -402,4 +403,40 @@ else: continue if not found: - raise AssertionError("clear_output message not found") + emsg = "clear_output message not found" + raise AssertionError(emsg) + + +class IopubWelcomeTests(TestCase): + kernel_name = "python3" + kc: BlockingKernelClient + km: KernelManager + + @classmethod + def setUpClass(cls): + cls.km = KernelManager(kernel_name=cls.kernel_name) + cls.km.start_kernel() + cls.kc = cls.km.client() + + @classmethod + def tearDownClass(cls): + cls.kc.stop_channels() + cls.km.shutdown_kernel() + + support_iopub_welcome = False + + def test_recv_iopub_welcome_msg(self): + if not self.support_iopub_welcome: + raise SkipTest("Iopub welcome messages are not supported") # noqa + + self.kc.start_channels() + while True: + msg = self.kc.get_iopub_msg() + if msg: + self.assertEqual(msg["header"]["msg_type"], "iopub_welcome") + self.assertEqual(msg["msg_type"], "iopub_welcome") + self.assertEqual( + msg["content"]["subscription"], "" + ) # Default: empty topic means subscription to all topics + + break diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jupyter_kernel_test-0.5.0/jupyter_kernel_test/msgspec_v5.py new/jupyter_kernel_test-0.6.0/jupyter_kernel_test/msgspec_v5.py --- old/jupyter_kernel_test-0.5.0/jupyter_kernel_test/msgspec_v5.py 2020-02-02 01:00:00.000000000 +0100 +++ new/jupyter_kernel_test-0.6.0/jupyter_kernel_test/msgspec_v5.py 2020-02-02 01:00:00.000000000 +0100 @@ -116,14 +116,14 @@ msg_version_s = msg["header"]["version"] m = re.match(r"(\d+)\.(\d+)", msg_version_s) if not m: - raise ValidationError("Version {} not like 'x.y'") + emsg = "Version {} not like 'x.y'" + raise ValidationError(emsg) version_minor = int(m.group(2)) if msg_type is not None: if msg["header"]["msg_type"] != msg_type: - raise ValidationError( - "Message type {!r} != {!r}".format(msg["header"]["msg_type"], msg_type) - ) + emsg = "Message type {!r} != {!r}".format(msg["header"]["msg_type"], msg_type) + raise ValidationError(emsg) else: msg_type = msg["header"]["msg_type"] @@ -131,15 +131,18 @@ if version_minor <= protocol_version[1]: unx_top = set(msg) - set(msg_schema["properties"]) if unx_top: - raise ValidationError(f"Unexpected keys: {unx_top}") + msg = f"Unexpected keys: {unx_top}" + raise ValidationError(msg) unx_header = set(msg["header"]) - set(header_part["properties"]) if unx_header: - raise ValidationError(f"Unexpected keys in header: {unx_header}") + emsg = f"Unexpected keys in header: {unx_header}" + raise ValidationError(emsg) # Check the parent id if "reply" in msg_type and parent_id and msg["parent_header"]["msg_id"] != parent_id: - raise ValidationError("Parent header does not match expected") + emsg = "Parent header does not match expected" + raise ValidationError(emsg) if msg_type in reply_msgs_using_status: # Most _reply messages have common 'error' and 'abort' structures @@ -154,7 +157,8 @@ elif status == "ok": content_vdor = get_msg_content_validator(msg_type, version_minor) else: - raise ValidationError(f"status {status!r} should be ok/error/abort") + msg = f"status {status!r} should be ok/error/abort" + raise ValidationError(msg) else: content_vdor = get_msg_content_validator(msg_type, version_minor) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jupyter_kernel_test-0.5.0/pyproject.toml new/jupyter_kernel_test-0.6.0/pyproject.toml --- old/jupyter_kernel_test-0.5.0/pyproject.toml 2020-02-02 01:00:00.000000000 +0100 +++ new/jupyter_kernel_test-0.6.0/pyproject.toml 2020-02-02 01:00:00.000000000 +0100 @@ -12,7 +12,7 @@ "Programming Language :: Python :: 3", "Topic :: Software Development :: Testing" ] -requires-python = ">=3.7" +requires-python = ">=3.8" dependencies = [ "jupyter_client >=6.1.13", "jsonschema" @@ -48,10 +48,10 @@ [tool.hatch.envs.lint] dependencies = [ - "black[jupyter]==22.12.0", + "black[jupyter]==23.3.0", "mdformat>0.7", "mdformat-gfm>=0.3.5", - "ruff==0.0.217" + "ruff==0.0.276" ] detached = true [tool.hatch.envs.lint.scripts] @@ -91,12 +91,15 @@ target-version = "py37" line-length = 100 select = [ - "A", "B", "C", "E", "F", "FBT", "I", "N", "Q", "RUF", "S", "T", - "UP", "W", "YTT", + "A", "B", "C", "DTZ", "E", "EM", "F", "FBT", "I", "ICN", "ISC", "N", + "PLC", "PLE", "PLR", "PLW", "Q", "RUF", "S", "SIM", "T", "TID", "UP", + "W", "YTT", ] ignore = [ # FBT002 Boolean default value in function definition "FBT002", "FBT003", + # RUF012 Mutable class attributes should be annotated with `typing.ClassVar` + "RUF012", ] unfixable = [ # Don't touch print statements diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jupyter_kernel_test-0.5.0/test_ipykernel.py new/jupyter_kernel_test-0.6.0/test_ipykernel.py --- old/jupyter_kernel_test-0.5.0/test_ipykernel.py 2020-02-02 01:00:00.000000000 +0100 +++ new/jupyter_kernel_test-0.6.0/test_ipykernel.py 2020-02-02 01:00:00.000000000 +0100 @@ -9,7 +9,6 @@ class IPyKernelTests(jkt.KernelTests): - # REQUIRED # the kernel to be tested diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jupyter_kernel_test-0.5.0/test_irkernel.py new/jupyter_kernel_test-0.6.0/test_irkernel.py --- old/jupyter_kernel_test-0.5.0/test_irkernel.py 2020-02-02 01:00:00.000000000 +0100 +++ new/jupyter_kernel_test-0.6.0/test_irkernel.py 2020-02-02 01:00:00.000000000 +0100 @@ -20,7 +20,7 @@ try: cls.km, cls.kc = jkt.start_new_kernel(kernel_name=cls.kernel_name) except NoSuchKernel: - raise unittest.SkipTest("No ir kernel installed") from None + raise unittest.SkipTest("No ir kernel installed") from None # noqa language_name = "R" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jupyter_kernel_test-0.5.0/test_xeus_cling.py new/jupyter_kernel_test-0.6.0/test_xeus_cling.py --- old/jupyter_kernel_test-0.5.0/test_xeus_cling.py 2020-02-02 01:00:00.000000000 +0100 +++ new/jupyter_kernel_test-0.6.0/test_xeus_cling.py 2020-02-02 01:00:00.000000000 +0100 @@ -19,7 +19,7 @@ try: cls.km, cls.kc = jkt.start_new_kernel(kernel_name=cls.kernel_name) except NoSuchKernel: - raise unittest.SkipTest("Xeus-Cling Kernel not installed") from None + raise unittest.SkipTest("Xeus-Cling Kernel not installed") from None # noqa language_name = "c++"