Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save FliegendeWurst/807356cbe8f273045a167198350e3d9c to your computer and use it in GitHub Desktop.
Save FliegendeWurst/807356cbe8f273045a167198350e3d9c to your computer and use it in GitHub Desktop.
nbmake test failures
Sourcing python-remove-tests-dir-hook
Sourcing python-catch-conflicts-hook.sh
Sourcing python-remove-bin-bytecode-hook.sh
Sourcing pypa-build-hook
Using pypaBuildPhase
Sourcing python-runtime-deps-check-hook
Using pythonRuntimeDepsCheckHook
Sourcing pypa-install-hook
Using pypaInstallPhase
Sourcing python-imports-check-hook.sh
Using pythonImportsCheckPhase
Sourcing python-namespaces-hook
Sourcing python-catch-conflicts-hook.sh
Sourcing pytest-check-hook
Using pytestCheckPhase
Running phase: unpackPhase
@nix { "action": "setPhase", "phase": "unpackPhase" }
unpacking source archive /nix/store/yd85ay5h7n6ba7vjif5rdysyp1sjdmh7-source
source root is source
setting SOURCE_DATE_EPOCH to timestamp 315619200 of file source/tests/test_pytest_plugin.py
Running phase: patchPhase
@nix { "action": "setPhase", "phase": "patchPhase" }
Running phase: updateAutotoolsGnuConfigScriptsPhase
@nix { "action": "setPhase", "phase": "updateAutotoolsGnuConfigScriptsPhase" }
Running phase: configurePhase
@nix { "action": "setPhase", "phase": "configurePhase" }
no configure script, doing nothing
Running phase: buildPhase
@nix { "action": "setPhase", "phase": "buildPhase" }
Executing pypaBuildPhase
Creating a wheel...
pypa build flags: --no-isolation --outdir dist/ --wheel
* Getting build dependencies for wheel...
* Building wheel...
Successfully built nbmake-1.5.3-py3-none-any.whl
Finished creating a wheel...
/build/source/dist /build/source
Unpacking to: unpacked/nbmake-1.5.3...OK
Repacking wheel as ./nbmake-1.5.3-py3-none-any.whl...OK
/build/source
Finished executing pypaBuildPhase
Running phase: pythonRuntimeDepsCheckHook
@nix { "action": "setPhase", "phase": "pythonRuntimeDepsCheckHook" }
Executing pythonRuntimeDepsCheck
Checking runtime dependencies for nbmake-1.5.3-py3-none-any.whl
Finished executing pythonRuntimeDepsCheck
Running phase: installPhase
@nix { "action": "setPhase", "phase": "installPhase" }
Executing pypaInstallPhase
Successfully installed nbmake-1.5.3-py3-none-any.whl
Finished executing pypaInstallPhase
Running phase: pythonOutputDistPhase
@nix { "action": "setPhase", "phase": "pythonOutputDistPhase" }
Executing pythonOutputDistPhase
Finished executing pythonOutputDistPhase
Running phase: fixupPhase
@nix { "action": "setPhase", "phase": "fixupPhase" }
shrinking RPATHs of ELF executables and libraries in /nix/store/r3wf3f35qm72py2dw1n95b5r6xf0jlb2-python3.12-nbmake-1.5.4
checking for references to /build/ in /nix/store/r3wf3f35qm72py2dw1n95b5r6xf0jlb2-python3.12-nbmake-1.5.4...
patching script interpreter paths in /nix/store/r3wf3f35qm72py2dw1n95b5r6xf0jlb2-python3.12-nbmake-1.5.4
stripping (with command strip and flags -S -p) in /nix/store/r3wf3f35qm72py2dw1n95b5r6xf0jlb2-python3.12-nbmake-1.5.4/lib
shrinking RPATHs of ELF executables and libraries in /nix/store/86rf44i4fwy2yim3h2n3kf7qx0wz4hcl-python3.12-nbmake-1.5.4-dist
checking for references to /build/ in /nix/store/86rf44i4fwy2yim3h2n3kf7qx0wz4hcl-python3.12-nbmake-1.5.4-dist...
patching script interpreter paths in /nix/store/86rf44i4fwy2yim3h2n3kf7qx0wz4hcl-python3.12-nbmake-1.5.4-dist
Executing pythonRemoveTestsDir
Finished executing pythonRemoveTestsDir
Running phase: installCheckPhase
@nix { "action": "setPhase", "phase": "installCheckPhase" }
no Makefile or custom installCheckPhase, doing nothing
Running phase: pythonCatchConflictsPhase
@nix { "action": "setPhase", "phase": "pythonCatchConflictsPhase" }
Running phase: pythonRemoveBinBytecodePhase
@nix { "action": "setPhase", "phase": "pythonRemoveBinBytecodePhase" }
Running phase: pythonImportsCheckPhase
@nix { "action": "setPhase", "phase": "pythonImportsCheckPhase" }
Executing pythonImportsCheckPhase
Check whether the following modules can be imported: nbmake
Running phase: pytestXdistHook
@nix { "action": "setPhase", "phase": "pytestXdistHook" }
Running phase: pytestCheckPhase
@nix { "action": "setPhase", "phase": "pytestCheckPhase" }
Executing pytestCheckPhase
003
============================= test session starts ==============================
platform linux -- Python 3.12.7, pytest-8.3.3, pluggy-1.5.0
rootdir: /build/source
configfile: pytest.ini
testpaths: tests
plugins: nbmake-1.5.3, xdist-3.6.1

created: 32/32 workers
initialized: 1/32 workers
initialized: 2/32 workers
initialized: 3/32 workers
initialized: 4/32 workers
initialized: 5/32 workers
initialized: 6/32 workers
initialized: 7/32 workers
initialized: 8/32 workers
initialized: 9/32 workers
initialized: 10/32 workers
initialized: 11/32 workers
initialized: 12/32 workers
initialized: 13/32 workers
initialized: 14/32 workers
initialized: 15/32 workers
initialized: 16/32 workers
initialized: 17/32 workers
initialized: 18/32 workers
initialized: 19/32 workers
initialized: 20/32 workers
initialized: 21/32 workers
initialized: 22/32 workers
initialized: 23/32 workers
initialized: 24/32 workers
initialized: 25/32 workers
initialized: 26/32 workers
initialized: 27/32 workers
initialized: 28/32 workers
initialized: 29/32 workers
initialized: 30/32 workers
initialized: 31/32 workers
initialized: 32/32 workers
ready: 1/32 workers 
ready: 2/32 workers
collecting: 1/32 workers
collecting: 2/32 workers
collecting: 2/32 workers
collecting: 3/32 workers
collecting: 3/32 workers
collecting: 3/32 workers
collecting: 4/32 workers
collecting: 5/32 workers
collecting: 5/32 workers
collecting: 6/32 workers
collecting: 6/32 workers
collecting: 6/32 workers
collecting: 7/32 workers
collecting: 8/32 workers
collecting: 8/32 workers
collecting: 8/32 workers
collecting: 9/32 workers
collecting: 10/32 workers
collecting: 10/32 workers
collecting: 11/32 workers
collecting: 11/32 workers
collecting: 11/32 workers
collecting: 12/32 workers
collecting: 13/32 workers
collecting: 13/32 workers
collecting: 13/32 workers
collecting: 14/32 workers
collecting: 14/32 workers
collecting: 15/32 workers
collecting: 16/32 workers
collecting: 16/32 workers
collecting: 16/32 workers
collecting: 17/32 workers
collecting: 18/32 workers
collecting: 18/32 workers
collecting: 19/32 workers
collecting: 19/32 workers
collecting: 20/32 workers
collecting: 20/32 workers
collecting: 20/32 workers
collecting: 21/32 workers
collecting: 22/32 workers
collecting: 22/32 workers
collecting: 22/32 workers
collecting: 23/32 workers
collecting: 23/32 workers
collecting: 24/32 workers
collecting: 25/32 workers
collecting: 25/32 workers
collecting: 25/32 workers
collecting: 26/32 workers
collecting: 26/32 workers
collecting: 27/32 workers
collecting: 28/32 workers
collecting: 28/32 workers
collecting: 28/32 workers
collecting: 29/32 workers
collecting: 30/32 workers
collecting: 30/32 workers
collecting: 31/32 workers
collecting: 31/32 workers
32 workers [33 items] 
................................F [100%]
=================================== FAILURES ===================================
____________________ test_when_parallel_passing_nbs_then_ok ____________________
[gw20] linux -- Python 3.12.7 /nix/store/g1zx5x7mmclk2gmwkbd3f33cmc8a6hz2-python3-3.12.7/bin/python3.12
pytester = <Pytester PosixPath('/build/pytest-of-nixbld/pytest-0/popen-gw20/test_when_parallel_passing_nbs_then_ok0')>
testdir2 = None
def test_when_parallel_passing_nbs_then_ok(pytester: Pytester, testdir2: Never):
[write_nb(passing_nb, Path(f"{i}.ipynb")) for i in range(20)]

hook_recorder = pytester.inline_run("--nbmake", "-n=auto")

> assert hook_recorder.ret == ExitCode.OK
E assert <ExitCode.TESTS_FAILED: 1> == <ExitCode.OK: 0>
E + where <ExitCode.TESTS_FAILED: 1> = <_pytest.pytester.HookRecorder object at 0x7ffff4554710>.ret
E + and <ExitCode.OK: 0> = ExitCode.OK
/build/source/tests/test_pytest_plugin.py:61: AssertionError
----------------------------- Captured stdout call -----------------------------
============================= test session starts ==============================
platform linux -- Python 3.12.7, pytest-8.3.3, pluggy-1.5.0
rootdir: /build/pytest-of-nixbld/pytest-0/popen-gw20/test_when_parallel_passing_nbs_then_ok0
plugins: nbmake-1.5.3, xdist-3.6.1
created: 16/16 workers
16 workers [20 items]
...............F.... [100%]
=================================== FAILURES ===================================
_ /build/pytest-of-nixbld/pytest-0/popen-gw20/test_when_parallel_passing_nbs_then_ok0/1.ipynb _
[gw1] linux -- Python 3.12.7 /nix/store/g1zx5x7mmclk2gmwkbd3f33cmc8a6hz2-python3-3.12.7/bin/python3.12
NBMAKE INTERNAL ERROR
Kernel died before replying to kernel_info
File "/nix/store/h9vvz9bwrk2fqdhgijlhpvcgxbmf4rdw-python3.12-pytest-8.3.3/lib/python3.12/site-packages/_pytest/runner.py", line 341, in from_call
 result: TResult | None = func()
 ^^^^^^
File "/nix/store/h9vvz9bwrk2fqdhgijlhpvcgxbmf4rdw-python3.12-pytest-8.3.3/lib/python3.12/site-packages/_pytest/runner.py", line 242, in <lambda>
 lambda: runtest_hook(item=item, **kwds), when=when, reraise=reraise
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/nix/store/i21y6qanjlmnvyxpj9g2i664qrj81jgf-python3.12-pluggy-1.5.0/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/nix/store/i21y6qanjlmnvyxpj9g2i664qrj81jgf-python3.12-pluggy-1.5.0/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
 return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/nix/store/i21y6qanjlmnvyxpj9g2i664qrj81jgf-python3.12-pluggy-1.5.0/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall
 raise exception.with_traceback(exception.__traceback__)
File "/nix/store/i21y6qanjlmnvyxpj9g2i664qrj81jgf-python3.12-pluggy-1.5.0/lib/python3.12/site-packages/pluggy/_callers.py", line 122, in _multicall
 teardown.throw(exception) # type: ignore[union-attr]
 ^^^^^^^^^^^^^^^^^^^^^^^^^
File "/nix/store/h9vvz9bwrk2fqdhgijlhpvcgxbmf4rdw-python3.12-pytest-8.3.3/lib/python3.12/site-packages/_pytest/threadexception.py", line 92, in pytest_runtest_call
 yield from thread_exception_runtest_hook()
File "/nix/store/h9vvz9bwrk2fqdhgijlhpvcgxbmf4rdw-python3.12-pytest-8.3.3/lib/python3.12/site-packages/_pytest/threadexception.py", line 68, in thread_exception_runtest_hook
 yield
File "/nix/store/i21y6qanjlmnvyxpj9g2i664qrj81jgf-python3.12-pluggy-1.5.0/lib/python3.12/site-packages/pluggy/_callers.py", line 122, in _multicall
 teardown.throw(exception) # type: ignore[union-attr]
 ^^^^^^^^^^^^^^^^^^^^^^^^^
File "/nix/store/h9vvz9bwrk2fqdhgijlhpvcgxbmf4rdw-python3.12-pytest-8.3.3/lib/python3.12/site-packages/_pytest/unraisableexception.py", line 95, in pytest_runtest_call
 yield from unraisable_exception_runtest_hook()
File "/nix/store/h9vvz9bwrk2fqdhgijlhpvcgxbmf4rdw-python3.12-pytest-8.3.3/lib/python3.12/site-packages/_pytest/unraisableexception.py", line 70, in unraisable_exception_runtest_hook
 yield
File "/nix/store/i21y6qanjlmnvyxpj9g2i664qrj81jgf-python3.12-pluggy-1.5.0/lib/python3.12/site-packages/pluggy/_callers.py", line 122, in _multicall
 teardown.throw(exception) # type: ignore[union-attr]
 ^^^^^^^^^^^^^^^^^^^^^^^^^
File "/nix/store/h9vvz9bwrk2fqdhgijlhpvcgxbmf4rdw-python3.12-pytest-8.3.3/lib/python3.12/site-packages/_pytest/logging.py", line 846, in pytest_runtest_call
 yield from self._runtest_for(item, "call")
File "/nix/store/h9vvz9bwrk2fqdhgijlhpvcgxbmf4rdw-python3.12-pytest-8.3.3/lib/python3.12/site-packages/_pytest/logging.py", line 829, in _runtest_for
 yield
File "/nix/store/i21y6qanjlmnvyxpj9g2i664qrj81jgf-python3.12-pluggy-1.5.0/lib/python3.12/site-packages/pluggy/_callers.py", line 122, in _multicall
 teardown.throw(exception) # type: ignore[union-attr]
 ^^^^^^^^^^^^^^^^^^^^^^^^^
File "/nix/store/h9vvz9bwrk2fqdhgijlhpvcgxbmf4rdw-python3.12-pytest-8.3.3/lib/python3.12/site-packages/_pytest/capture.py", line 880, in pytest_runtest_call
 return (yield)
 ^^^^^
File "/nix/store/i21y6qanjlmnvyxpj9g2i664qrj81jgf-python3.12-pluggy-1.5.0/lib/python3.12/site-packages/pluggy/_callers.py", line 122, in _multicall
 teardown.throw(exception) # type: ignore[union-attr]
 ^^^^^^^^^^^^^^^^^^^^^^^^^
File "/nix/store/h9vvz9bwrk2fqdhgijlhpvcgxbmf4rdw-python3.12-pytest-8.3.3/lib/python3.12/site-packages/_pytest/skipping.py", line 257, in pytest_runtest_call
 return (yield)
 ^^^^^
File "/nix/store/i21y6qanjlmnvyxpj9g2i664qrj81jgf-python3.12-pluggy-1.5.0/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
 res = hook_impl.function(*args)
 ^^^^^^^^^^^^^^^^^^^^^^^^^
File "/nix/store/h9vvz9bwrk2fqdhgijlhpvcgxbmf4rdw-python3.12-pytest-8.3.3/lib/python3.12/site-packages/_pytest/runner.py", line 174, in pytest_runtest_call
 item.runtest()
File "/nix/store/r3wf3f35qm72py2dw1n95b5r6xf0jlb2-python3.12-nbmake-1.5.4/lib/python3.12/site-packages/nbmake/pytest_items.py", line 54, in runtest
 res: NotebookResult = run.execute()
 ^^^^^^^^^^^^^
File "/nix/store/r3wf3f35qm72py2dw1n95b5r6xf0jlb2-python3.12-nbmake-1.5.4/lib/python3.12/site-packages/nbmake/nb_run.py", line 131, in execute
 raise err
File "/nix/store/r3wf3f35qm72py2dw1n95b5r6xf0jlb2-python3.12-nbmake-1.5.4/lib/python3.12/site-packages/nbmake/nb_run.py", line 113, in execute
 c.execute(cwd=self.filename.parent)
File "/nix/store/9crcl5py932s5gb34pzrwa93vcsyjw89-python3.12-jupyter-core-5.7.2/lib/python3.12/site-packages/jupyter_core/utils/__init__.py", line 165, in wrapped
 return loop.run_until_complete(inner)
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/nix/store/g1zx5x7mmclk2gmwkbd3f33cmc8a6hz2-python3-3.12.7/lib/python3.12/asyncio/base_events.py", line 687, in run_until_complete
 return future.result()
 ^^^^^^^^^^^^^^^
File "/nix/store/csshh1zi4824ap1rc0zhrw4rd5g77zmm-python3.12-nbclient-0.10.0/lib/python3.12/site-packages/nbclient/client.py", line 693, in async_execute
 async with self.async_setup_kernel(**kwargs):
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/nix/store/g1zx5x7mmclk2gmwkbd3f33cmc8a6hz2-python3-3.12.7/lib/python3.12/contextlib.py", line 210, in __aenter__
 return await anext(self.gen)
 ^^^^^^^^^^^^^^^^^^^^^
File "/nix/store/csshh1zi4824ap1rc0zhrw4rd5g77zmm-python3.12-nbclient-0.10.0/lib/python3.12/site-packages/nbclient/client.py", line 651, in async_setup_kernel
 await self.async_start_new_kernel_client()
File "/nix/store/csshh1zi4824ap1rc0zhrw4rd5g77zmm-python3.12-nbclient-0.10.0/lib/python3.12/site-packages/nbclient/client.py", line 566, in async_start_new_kernel_client
 await ensure_async(self.kc.wait_for_ready(timeout=self.startup_timeout))
File "/nix/store/9crcl5py932s5gb34pzrwa93vcsyjw89-python3.12-jupyter-core-5.7.2/lib/python3.12/site-packages/jupyter_core/utils/__init__.py", line 198, in ensure_async
 result = await obj
 ^^^^^^^^^
File "/nix/store/m8i8li4hafiff2jl6d2g8r8i1myxqgdy-python3.12-jupyter-client-8.6.3/lib/python3.12/site-packages/jupyter_client/client.py", line 203, in _async_wait_for_ready
 raise RuntimeError(msg)
----------------------------- Captured stderr call -----------------------------
Traceback (most recent call last):
File "<frozen runpy>", line 198, in _run_module_as_main
File "<frozen runpy>", line 88, in _run_code
File "/nix/store/pbz2lm69mrzxmdbxqvxp9x3j89a3r0z7-python3.12-ipykernel-6.29.5/lib/python3.12/site-packages/ipykernel_launcher.py", line 18, in <module>
app.launch_new_instance()
File "/nix/store/6hx5sfr1dr62nr2xc9szchclaqybi5v7-python3.12-traitlets-5.14.3/lib/python3.12/site-packages/traitlets/config/application.py", line 1074, in launch_instance
app.initialize(argv)
File "/nix/store/6hx5sfr1dr62nr2xc9szchclaqybi5v7-python3.12-traitlets-5.14.3/lib/python3.12/site-packages/traitlets/config/application.py", line 118, in inner
return method(app, *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/nix/store/pbz2lm69mrzxmdbxqvxp9x3j89a3r0z7-python3.12-ipykernel-6.29.5/lib/python3.12/site-packages/ipykernel/kernelapp.py", line 692, in initialize
self.init_sockets()
File "/nix/store/pbz2lm69mrzxmdbxqvxp9x3j89a3r0z7-python3.12-ipykernel-6.29.5/lib/python3.12/site-packages/ipykernel/kernelapp.py", line 331, in init_sockets
self.shell_port = self._bind_socket(self.shell_socket, self.shell_port)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/nix/store/pbz2lm69mrzxmdbxqvxp9x3j89a3r0z7-python3.12-ipykernel-6.29.5/lib/python3.12/site-packages/ipykernel/kernelapp.py", line 253, in _bind_socket
return self._try_bind_socket(s, port)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/nix/store/pbz2lm69mrzxmdbxqvxp9x3j89a3r0z7-python3.12-ipykernel-6.29.5/lib/python3.12/site-packages/ipykernel/kernelapp.py", line 229, in _try_bind_socket
s.bind("tcp://%s:%i" % (self.ip, port))
File "/nix/store/i0d9y5a5xpfph465fiwc67rh91n25z91-python3.12-pyzmq-26.2.0/lib/python3.12/site-packages/zmq/sugar/socket.py", line 311, in bind
super().bind(addr)
File "_zmq.py", line 917, in zmq.backend.cython._zmq.Socket.bind
File "_zmq.py", line 179, in zmq.backend.cython._zmq._check_rc
zmq.error.ZMQError: Address already in use (addr='tcp://127.0.0.1:50607')
------------------------------ Captured log call -------------------------------
ERROR traitlets:client.py:568 Error occurred while starting new kernel client for kernel 95bf912a-0d9e-419a-8ae5-3b4fd9c31f6e: Kernel died before replying to kernel_info
Learn more about nbmake at https://github.com/treebeardtech/nbmake
=========================== short test summary info ============================
FAILED 1.ipynb::
======================== 1 failed, 19 passed in 20.63s =========================
----------------------------- Captured stderr call -----------------------------
Exception ignored in atexit callback: <bound method run_sync.<locals>.wrapped of <nbclient.client.NotebookClient object at 0x7ffff47f4c20>>
Traceback (most recent call last):
File "/nix/store/9crcl5py932s5gb34pzrwa93vcsyjw89-python3.12-jupyter-core-5.7.2/lib/python3.12/site-packages/jupyter_core/utils/__init__.py", line 165, in wrapped
return loop.run_until_complete(inner)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/nix/store/g1zx5x7mmclk2gmwkbd3f33cmc8a6hz2-python3-3.12.7/lib/python3.12/asyncio/base_events.py", line 687, in run_until_complete
return future.result()
^^^^^^^^^^^^^^^
File "/nix/store/csshh1zi4824ap1rc0zhrw4rd5g77zmm-python3.12-nbclient-0.10.0/lib/python3.12/site-packages/nbclient/client.py", line 504, in _async_cleanup_kernel
assert self.km is not None
^^^^^^^^^^^^^^^^^^^
AssertionError:
=========================== short test summary info ============================
FAILED tests/test_pytest_plugin.py::test_when_parallel_passing_nbs_then_ok - assert <ExitCode.TESTS_FAILED: 1> == <ExitCode.OK: 0>
======================== 1 failed, 32 passed in 37.29s =========================
Sourcing python-remove-tests-dir-hook
Sourcing python-catch-conflicts-hook.sh
Sourcing python-remove-bin-bytecode-hook.sh
Sourcing pypa-build-hook
Using pypaBuildPhase
Sourcing python-runtime-deps-check-hook
Using pythonRuntimeDepsCheckHook
Sourcing pypa-install-hook
Using pypaInstallPhase
Sourcing python-imports-check-hook.sh
Using pythonImportsCheckPhase
Sourcing python-namespaces-hook
Sourcing python-catch-conflicts-hook.sh
Sourcing pytest-check-hook
Using pytestCheckPhase
Running phase: unpackPhase
@nix { "action": "setPhase", "phase": "unpackPhase" }
unpacking source archive /nix/store/yd85ay5h7n6ba7vjif5rdysyp1sjdmh7-source
source root is source
setting SOURCE_DATE_EPOCH to timestamp 315619200 of file source/tests/test_pytest_plugin.py
Running phase: patchPhase
@nix { "action": "setPhase", "phase": "patchPhase" }
Running phase: updateAutotoolsGnuConfigScriptsPhase
@nix { "action": "setPhase", "phase": "updateAutotoolsGnuConfigScriptsPhase" }
Running phase: configurePhase
@nix { "action": "setPhase", "phase": "configurePhase" }
no configure script, doing nothing
Running phase: buildPhase
@nix { "action": "setPhase", "phase": "buildPhase" }
Executing pypaBuildPhase
Creating a wheel...
pypa build flags: --no-isolation --outdir dist/ --wheel
* Getting build dependencies for wheel...
* Building wheel...
Successfully built nbmake-1.5.3-py3-none-any.whl
Finished creating a wheel...
/build/source/dist /build/source
Unpacking to: unpacked/nbmake-1.5.3...OK
Repacking wheel as ./nbmake-1.5.3-py3-none-any.whl...OK
/build/source
Finished executing pypaBuildPhase
Running phase: pythonRuntimeDepsCheckHook
@nix { "action": "setPhase", "phase": "pythonRuntimeDepsCheckHook" }
Executing pythonRuntimeDepsCheck
Checking runtime dependencies for nbmake-1.5.3-py3-none-any.whl
Finished executing pythonRuntimeDepsCheck
Running phase: installPhase
@nix { "action": "setPhase", "phase": "installPhase" }
Executing pypaInstallPhase
Successfully installed nbmake-1.5.3-py3-none-any.whl
Finished executing pypaInstallPhase
Running phase: pythonOutputDistPhase
@nix { "action": "setPhase", "phase": "pythonOutputDistPhase" }
Executing pythonOutputDistPhase
Finished executing pythonOutputDistPhase
Running phase: fixupPhase
@nix { "action": "setPhase", "phase": "fixupPhase" }
shrinking RPATHs of ELF executables and libraries in /nix/store/alnyb6si30lw2p7caljap0gq5zh7vy9w-python3.12-nbmake-1.5.4
checking for references to /build/ in /nix/store/alnyb6si30lw2p7caljap0gq5zh7vy9w-python3.12-nbmake-1.5.4...
patching script interpreter paths in /nix/store/alnyb6si30lw2p7caljap0gq5zh7vy9w-python3.12-nbmake-1.5.4
stripping (with command strip and flags -S -p) in /nix/store/alnyb6si30lw2p7caljap0gq5zh7vy9w-python3.12-nbmake-1.5.4/lib
shrinking RPATHs of ELF executables and libraries in /nix/store/iagvhh6jp7q76s9crr5i7vk8bgp7griy-python3.12-nbmake-1.5.4-dist
checking for references to /build/ in /nix/store/iagvhh6jp7q76s9crr5i7vk8bgp7griy-python3.12-nbmake-1.5.4-dist...
patching script interpreter paths in /nix/store/iagvhh6jp7q76s9crr5i7vk8bgp7griy-python3.12-nbmake-1.5.4-dist
Executing pythonRemoveTestsDir
Finished executing pythonRemoveTestsDir
Running phase: installCheckPhase
@nix { "action": "setPhase", "phase": "installCheckPhase" }
no Makefile or custom installCheckPhase, doing nothing
Running phase: pythonCatchConflictsPhase
@nix { "action": "setPhase", "phase": "pythonCatchConflictsPhase" }
Running phase: pythonRemoveBinBytecodePhase
@nix { "action": "setPhase", "phase": "pythonRemoveBinBytecodePhase" }
Running phase: pythonImportsCheckPhase
@nix { "action": "setPhase", "phase": "pythonImportsCheckPhase" }
Executing pythonImportsCheckPhase
Check whether the following modules can be imported: nbmake
Running phase: pytestXdistHook
@nix { "action": "setPhase", "phase": "pytestXdistHook" }
Running phase: pytestCheckPhase
@nix { "action": "setPhase", "phase": "pytestCheckPhase" }
Executing pytestCheckPhase
006
============================= test session starts ==============================
platform linux -- Python 3.12.7, pytest-8.3.3, pluggy-1.5.0
rootdir: /build/source
configfile: pytest.ini
testpaths: tests
plugins: nbmake-1.5.3, xdist-3.6.1

created: 32/32 workers
initialized: 1/32 workers
initialized: 2/32 workers
initialized: 3/32 workers
initialized: 4/32 workers
initialized: 5/32 workers
initialized: 6/32 workers
initialized: 7/32 workers
initialized: 8/32 workers
initialized: 9/32 workers
initialized: 10/32 workers
initialized: 11/32 workers
initialized: 12/32 workers
initialized: 13/32 workers
initialized: 14/32 workers
initialized: 15/32 workers
initialized: 16/32 workers
initialized: 17/32 workers
initialized: 18/32 workers
initialized: 19/32 workers
initialized: 20/32 workers
initialized: 21/32 workers
initialized: 22/32 workers
initialized: 23/32 workers
initialized: 24/32 workers
initialized: 25/32 workers
initialized: 26/32 workers
initialized: 27/32 workers
initialized: 28/32 workers
initialized: 29/32 workers
initialized: 30/32 workers
initialized: 31/32 workers
initialized: 32/32 workers
ready: 1/32 workers 
ready: 2/32 workers
ready: 3/32 workers
collecting: 1/32 workers
collecting: 1/32 workers
collecting: 2/32 workers
collecting: 3/32 workers
collecting: 4/32 workers
collecting: 4/32 workers
collecting: 5/32 workers
collecting: 5/32 workers
collecting: 6/32 workers
collecting: 6/32 workers
collecting: 6/32 workers
collecting: 7/32 workers
collecting: 8/32 workers
collecting: 8/32 workers
collecting: 8/32 workers
collecting: 8/32 workers
collecting: 9/32 workers
collecting: 9/32 workers
collecting: 10/32 workers
collecting: 11/32 workers
collecting: 11/32 workers
collecting: 12/32 workers
collecting: 12/32 workers
collecting: 13/32 workers
collecting: 14/32 workers
collecting: 14/32 workers
collecting: 14/32 workers
collecting: 15/32 workers
collecting: 15/32 workers
collecting: 16/32 workers
collecting: 17/32 workers
collecting: 17/32 workers
collecting: 18/32 workers
collecting: 18/32 workers
collecting: 19/32 workers
collecting: 19/32 workers
collecting: 19/32 workers
collecting: 20/32 workers
collecting: 21/32 workers
collecting: 21/32 workers
collecting: 21/32 workers
collecting: 21/32 workers
collecting: 22/32 workers
collecting: 23/32 workers
collecting: 24/32 workers
collecting: 24/32 workers
collecting: 25/32 workers
collecting: 25/32 workers
collecting: 25/32 workers
collecting: 26/32 workers
collecting: 26/32 workers
collecting: 27/32 workers
collecting: 28/32 workers
collecting: 28/32 workers
collecting: 29/32 workers
collecting: 29/32 workers
collecting: 29/32 workers
collecting: 30/32 workers
collecting: 31/32 workers
collecting: 31/32 workers
32 workers [33 items] 
................................F [100%]
=================================== FAILURES ===================================
____________________ test_when_parallel_passing_nbs_then_ok ____________________
[gw20] linux -- Python 3.12.7 /nix/store/g1zx5x7mmclk2gmwkbd3f33cmc8a6hz2-python3-3.12.7/bin/python3.12
pytester = <Pytester PosixPath('/build/pytest-of-nixbld/pytest-0/popen-gw20/test_when_parallel_passing_nbs_then_ok0')>
testdir2 = None
def test_when_parallel_passing_nbs_then_ok(pytester: Pytester, testdir2: Never):
[write_nb(passing_nb, Path(f"{i}.ipynb")) for i in range(20)]

hook_recorder = pytester.inline_run("--nbmake", "-n=auto")

> assert hook_recorder.ret == ExitCode.OK
E assert <ExitCode.TESTS_FAILED: 1> == <ExitCode.OK: 0>
E + where <ExitCode.TESTS_FAILED: 1> = <_pytest.pytester.HookRecorder object at 0x7ffff4501be0>.ret
E + and <ExitCode.OK: 0> = ExitCode.OK
/build/source/tests/test_pytest_plugin.py:61: AssertionError
----------------------------- Captured stdout call -----------------------------
============================= test session starts ==============================
platform linux -- Python 3.12.7, pytest-8.3.3, pluggy-1.5.0
rootdir: /build/pytest-of-nixbld/pytest-0/popen-gw20/test_when_parallel_passing_nbs_then_ok0
plugins: nbmake-1.5.3, xdist-3.6.1
created: 16/16 workers
16 workers [20 items]
..................F. [100%]
=================================== FAILURES ===================================
_ /build/pytest-of-nixbld/pytest-0/popen-gw20/test_when_parallel_passing_nbs_then_ok0/10.ipynb _
[gw6] linux -- Python 3.12.7 /nix/store/g1zx5x7mmclk2gmwkbd3f33cmc8a6hz2-python3-3.12.7/bin/python3.12
NBMAKE INTERNAL ERROR
Kernel didn't respond in 60 seconds
File "/nix/store/h9vvz9bwrk2fqdhgijlhpvcgxbmf4rdw-python3.12-pytest-8.3.3/lib/python3.12/site-packages/_pytest/runner.py", line 341, in from_call
 result: TResult | None = func()
 ^^^^^^
File "/nix/store/h9vvz9bwrk2fqdhgijlhpvcgxbmf4rdw-python3.12-pytest-8.3.3/lib/python3.12/site-packages/_pytest/runner.py", line 242, in <lambda>
 lambda: runtest_hook(item=item, **kwds), when=when, reraise=reraise
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/nix/store/i21y6qanjlmnvyxpj9g2i664qrj81jgf-python3.12-pluggy-1.5.0/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/nix/store/i21y6qanjlmnvyxpj9g2i664qrj81jgf-python3.12-pluggy-1.5.0/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
 return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/nix/store/i21y6qanjlmnvyxpj9g2i664qrj81jgf-python3.12-pluggy-1.5.0/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall
 raise exception.with_traceback(exception.__traceback__)
File "/nix/store/i21y6qanjlmnvyxpj9g2i664qrj81jgf-python3.12-pluggy-1.5.0/lib/python3.12/site-packages/pluggy/_callers.py", line 122, in _multicall
 teardown.throw(exception) # type: ignore[union-attr]
 ^^^^^^^^^^^^^^^^^^^^^^^^^
File "/nix/store/h9vvz9bwrk2fqdhgijlhpvcgxbmf4rdw-python3.12-pytest-8.3.3/lib/python3.12/site-packages/_pytest/threadexception.py", line 92, in pytest_runtest_call
 yield from thread_exception_runtest_hook()
File "/nix/store/h9vvz9bwrk2fqdhgijlhpvcgxbmf4rdw-python3.12-pytest-8.3.3/lib/python3.12/site-packages/_pytest/threadexception.py", line 68, in thread_exception_runtest_hook
 yield
File "/nix/store/i21y6qanjlmnvyxpj9g2i664qrj81jgf-python3.12-pluggy-1.5.0/lib/python3.12/site-packages/pluggy/_callers.py", line 122, in _multicall
 teardown.throw(exception) # type: ignore[union-attr]
 ^^^^^^^^^^^^^^^^^^^^^^^^^
File "/nix/store/h9vvz9bwrk2fqdhgijlhpvcgxbmf4rdw-python3.12-pytest-8.3.3/lib/python3.12/site-packages/_pytest/unraisableexception.py", line 95, in pytest_runtest_call
 yield from unraisable_exception_runtest_hook()
File "/nix/store/h9vvz9bwrk2fqdhgijlhpvcgxbmf4rdw-python3.12-pytest-8.3.3/lib/python3.12/site-packages/_pytest/unraisableexception.py", line 70, in unraisable_exception_runtest_hook
 yield
File "/nix/store/i21y6qanjlmnvyxpj9g2i664qrj81jgf-python3.12-pluggy-1.5.0/lib/python3.12/site-packages/pluggy/_callers.py", line 122, in _multicall
 teardown.throw(exception) # type: ignore[union-attr]
 ^^^^^^^^^^^^^^^^^^^^^^^^^
File "/nix/store/h9vvz9bwrk2fqdhgijlhpvcgxbmf4rdw-python3.12-pytest-8.3.3/lib/python3.12/site-packages/_pytest/logging.py", line 846, in pytest_runtest_call
 yield from self._runtest_for(item, "call")
File "/nix/store/h9vvz9bwrk2fqdhgijlhpvcgxbmf4rdw-python3.12-pytest-8.3.3/lib/python3.12/site-packages/_pytest/logging.py", line 829, in _runtest_for
 yield
File "/nix/store/i21y6qanjlmnvyxpj9g2i664qrj81jgf-python3.12-pluggy-1.5.0/lib/python3.12/site-packages/pluggy/_callers.py", line 122, in _multicall
 teardown.throw(exception) # type: ignore[union-attr]
 ^^^^^^^^^^^^^^^^^^^^^^^^^
File "/nix/store/h9vvz9bwrk2fqdhgijlhpvcgxbmf4rdw-python3.12-pytest-8.3.3/lib/python3.12/site-packages/_pytest/capture.py", line 880, in pytest_runtest_call
 return (yield)
 ^^^^^
File "/nix/store/i21y6qanjlmnvyxpj9g2i664qrj81jgf-python3.12-pluggy-1.5.0/lib/python3.12/site-packages/pluggy/_callers.py", line 122, in _multicall
 teardown.throw(exception) # type: ignore[union-attr]
 ^^^^^^^^^^^^^^^^^^^^^^^^^
File "/nix/store/h9vvz9bwrk2fqdhgijlhpvcgxbmf4rdw-python3.12-pytest-8.3.3/lib/python3.12/site-packages/_pytest/skipping.py", line 257, in pytest_runtest_call
 return (yield)
 ^^^^^
File "/nix/store/i21y6qanjlmnvyxpj9g2i664qrj81jgf-python3.12-pluggy-1.5.0/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
 res = hook_impl.function(*args)
 ^^^^^^^^^^^^^^^^^^^^^^^^^
File "/nix/store/h9vvz9bwrk2fqdhgijlhpvcgxbmf4rdw-python3.12-pytest-8.3.3/lib/python3.12/site-packages/_pytest/runner.py", line 174, in pytest_runtest_call
 item.runtest()
File "/nix/store/alnyb6si30lw2p7caljap0gq5zh7vy9w-python3.12-nbmake-1.5.4/lib/python3.12/site-packages/nbmake/pytest_items.py", line 54, in runtest
 res: NotebookResult = run.execute()
 ^^^^^^^^^^^^^
File "/nix/store/alnyb6si30lw2p7caljap0gq5zh7vy9w-python3.12-nbmake-1.5.4/lib/python3.12/site-packages/nbmake/nb_run.py", line 131, in execute
 raise err
File "/nix/store/alnyb6si30lw2p7caljap0gq5zh7vy9w-python3.12-nbmake-1.5.4/lib/python3.12/site-packages/nbmake/nb_run.py", line 113, in execute
 c.execute(cwd=self.filename.parent)
File "/nix/store/9crcl5py932s5gb34pzrwa93vcsyjw89-python3.12-jupyter-core-5.7.2/lib/python3.12/site-packages/jupyter_core/utils/__init__.py", line 165, in wrapped
 return loop.run_until_complete(inner)
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/nix/store/g1zx5x7mmclk2gmwkbd3f33cmc8a6hz2-python3-3.12.7/lib/python3.12/asyncio/base_events.py", line 687, in run_until_complete
 return future.result()
 ^^^^^^^^^^^^^^^
File "/nix/store/csshh1zi4824ap1rc0zhrw4rd5g77zmm-python3.12-nbclient-0.10.0/lib/python3.12/site-packages/nbclient/client.py", line 693, in async_execute
 async with self.async_setup_kernel(**kwargs):
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/nix/store/g1zx5x7mmclk2gmwkbd3f33cmc8a6hz2-python3-3.12.7/lib/python3.12/contextlib.py", line 210, in __aenter__
 return await anext(self.gen)
 ^^^^^^^^^^^^^^^^^^^^^
File "/nix/store/csshh1zi4824ap1rc0zhrw4rd5g77zmm-python3.12-nbclient-0.10.0/lib/python3.12/site-packages/nbclient/client.py", line 651, in async_setup_kernel
 await self.async_start_new_kernel_client()
File "/nix/store/csshh1zi4824ap1rc0zhrw4rd5g77zmm-python3.12-nbclient-0.10.0/lib/python3.12/site-packages/nbclient/client.py", line 566, in async_start_new_kernel_client
 await ensure_async(self.kc.wait_for_ready(timeout=self.startup_timeout))
File "/nix/store/9crcl5py932s5gb34pzrwa93vcsyjw89-python3.12-jupyter-core-5.7.2/lib/python3.12/site-packages/jupyter_core/utils/__init__.py", line 198, in ensure_async
 result = await obj
 ^^^^^^^^^
File "/nix/store/m8i8li4hafiff2jl6d2g8r8i1myxqgdy-python3.12-jupyter-client-8.6.3/lib/python3.12/site-packages/jupyter_client/client.py", line 207, in _async_wait_for_ready
 raise RuntimeError("Kernel didn't respond in %d seconds" % timeout)
------------------------------ Captured log call -------------------------------
ERROR traitlets:client.py:568 Error occurred while starting new kernel client for kernel fc8ac83e-1017-412a-95de-475b0d83c8ba: Kernel didn't respond in 60 seconds
Learn more about nbmake at https://github.com/treebeardtech/nbmake
=========================== short test summary info ============================
FAILED 10.ipynb::
=================== 1 failed, 19 passed in 80.48s (0:01:20) ====================
----------------------------- Captured stderr call -----------------------------
Exception ignored in atexit callback: <bound method run_sync.<locals>.wrapped of <nbclient.client.NotebookClient object at 0x7ffff5a74290>>
Traceback (most recent call last):
File "/nix/store/9crcl5py932s5gb34pzrwa93vcsyjw89-python3.12-jupyter-core-5.7.2/lib/python3.12/site-packages/jupyter_core/utils/__init__.py", line 165, in wrapped
return loop.run_until_complete(inner)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/nix/store/g1zx5x7mmclk2gmwkbd3f33cmc8a6hz2-python3-3.12.7/lib/python3.12/asyncio/base_events.py", line 687, in run_until_complete
return future.result()
^^^^^^^^^^^^^^^
File "/nix/store/csshh1zi4824ap1rc0zhrw4rd5g77zmm-python3.12-nbclient-0.10.0/lib/python3.12/site-packages/nbclient/client.py", line 504, in _async_cleanup_kernel
assert self.km is not None
^^^^^^^^^^^^^^^^^^^
AssertionError:
=========================== short test summary info ============================
FAILED tests/test_pytest_plugin.py::test_when_parallel_passing_nbs_then_ok - assert <ExitCode.TESTS_FAILED: 1> == <ExitCode.OK: 0>
=================== 1 failed, 32 passed in 100.75s (0:01:40) ===================
Sourcing python-remove-tests-dir-hook
Sourcing python-catch-conflicts-hook.sh
Sourcing python-remove-bin-bytecode-hook.sh
Sourcing pypa-build-hook
Using pypaBuildPhase
Sourcing python-runtime-deps-check-hook
Using pythonRuntimeDepsCheckHook
Sourcing pypa-install-hook
Using pypaInstallPhase
Sourcing python-imports-check-hook.sh
Using pythonImportsCheckPhase
Sourcing python-namespaces-hook
Sourcing python-catch-conflicts-hook.sh
Sourcing pytest-check-hook
Using pytestCheckPhase
Running phase: unpackPhase
@nix { "action": "setPhase", "phase": "unpackPhase" }
unpacking source archive /nix/store/yd85ay5h7n6ba7vjif5rdysyp1sjdmh7-source
source root is source
setting SOURCE_DATE_EPOCH to timestamp 315619200 of file source/tests/test_pytest_plugin.py
Running phase: patchPhase
@nix { "action": "setPhase", "phase": "patchPhase" }
Running phase: updateAutotoolsGnuConfigScriptsPhase
@nix { "action": "setPhase", "phase": "updateAutotoolsGnuConfigScriptsPhase" }
Running phase: configurePhase
@nix { "action": "setPhase", "phase": "configurePhase" }
no configure script, doing nothing
Running phase: buildPhase
@nix { "action": "setPhase", "phase": "buildPhase" }
Executing pypaBuildPhase
Creating a wheel...
pypa build flags: --no-isolation --outdir dist/ --wheel
* Getting build dependencies for wheel...
* Building wheel...
Successfully built nbmake-1.5.3-py3-none-any.whl
Finished creating a wheel...
/build/source/dist /build/source
Unpacking to: unpacked/nbmake-1.5.3...OK
Repacking wheel as ./nbmake-1.5.3-py3-none-any.whl...OK
/build/source
Finished executing pypaBuildPhase
Running phase: pythonRuntimeDepsCheckHook
@nix { "action": "setPhase", "phase": "pythonRuntimeDepsCheckHook" }
Executing pythonRuntimeDepsCheck
Checking runtime dependencies for nbmake-1.5.3-py3-none-any.whl
Finished executing pythonRuntimeDepsCheck
Running phase: installPhase
@nix { "action": "setPhase", "phase": "installPhase" }
Executing pypaInstallPhase
Successfully installed nbmake-1.5.3-py3-none-any.whl
Finished executing pypaInstallPhase
Running phase: pythonOutputDistPhase
@nix { "action": "setPhase", "phase": "pythonOutputDistPhase" }
Executing pythonOutputDistPhase
Finished executing pythonOutputDistPhase
Running phase: fixupPhase
@nix { "action": "setPhase", "phase": "fixupPhase" }
shrinking RPATHs of ELF executables and libraries in /nix/store/rx5f5x50zv7xnx6a3c0i0r9h97cfilly-python3.12-nbmake-1.5.4
checking for references to /build/ in /nix/store/rx5f5x50zv7xnx6a3c0i0r9h97cfilly-python3.12-nbmake-1.5.4...
patching script interpreter paths in /nix/store/rx5f5x50zv7xnx6a3c0i0r9h97cfilly-python3.12-nbmake-1.5.4
stripping (with command strip and flags -S -p) in /nix/store/rx5f5x50zv7xnx6a3c0i0r9h97cfilly-python3.12-nbmake-1.5.4/lib
shrinking RPATHs of ELF executables and libraries in /nix/store/lccw6fiy848lschh37cxw5fr86zm7d9s-python3.12-nbmake-1.5.4-dist
checking for references to /build/ in /nix/store/lccw6fiy848lschh37cxw5fr86zm7d9s-python3.12-nbmake-1.5.4-dist...
patching script interpreter paths in /nix/store/lccw6fiy848lschh37cxw5fr86zm7d9s-python3.12-nbmake-1.5.4-dist
Executing pythonRemoveTestsDir
Finished executing pythonRemoveTestsDir
Running phase: installCheckPhase
@nix { "action": "setPhase", "phase": "installCheckPhase" }
no Makefile or custom installCheckPhase, doing nothing
Running phase: pythonCatchConflictsPhase
@nix { "action": "setPhase", "phase": "pythonCatchConflictsPhase" }
Running phase: pythonRemoveBinBytecodePhase
@nix { "action": "setPhase", "phase": "pythonRemoveBinBytecodePhase" }
Running phase: pythonImportsCheckPhase
@nix { "action": "setPhase", "phase": "pythonImportsCheckPhase" }
Executing pythonImportsCheckPhase
Check whether the following modules can be imported: nbmake
Running phase: pytestXdistHook
@nix { "action": "setPhase", "phase": "pytestXdistHook" }
Running phase: pytestCheckPhase
@nix { "action": "setPhase", "phase": "pytestCheckPhase" }
Executing pytestCheckPhase
001
============================= test session starts ==============================
platform linux -- Python 3.12.7, pytest-8.3.3, pluggy-1.5.0
rootdir: /build/source
configfile: pytest.ini
testpaths: tests
plugins: nbmake-1.5.3, xdist-3.6.1

created: 32/32 workers
initialized: 1/32 workers
initialized: 2/32 workers
initialized: 3/32 workers
initialized: 4/32 workers
initialized: 5/32 workers
initialized: 6/32 workers
initialized: 7/32 workers
initialized: 8/32 workers
initialized: 9/32 workers
initialized: 10/32 workers
initialized: 11/32 workers
initialized: 12/32 workers
initialized: 13/32 workers
initialized: 14/32 workers
initialized: 15/32 workers
initialized: 16/32 workers
initialized: 17/32 workers
initialized: 18/32 workers
initialized: 19/32 workers
initialized: 20/32 workers
initialized: 21/32 workers
initialized: 22/32 workers
initialized: 23/32 workers
initialized: 24/32 workers
initialized: 25/32 workers
initialized: 26/32 workers
initialized: 27/32 workers
initialized: 28/32 workers
initialized: 29/32 workers
initialized: 30/32 workers
initialized: 31/32 workers
initialized: 32/32 workers
ready: 1/32 workers 
ready: 2/32 workers
collecting: 1/32 workers
collecting: 1/32 workers
collecting: 2/32 workers
collecting: 2/32 workers
collecting: 3/32 workers
collecting: 3/32 workers
collecting: 4/32 workers
collecting: 5/32 workers
collecting: 5/32 workers
collecting: 5/32 workers
collecting: 6/32 workers
collecting: 7/32 workers
collecting: 7/32 workers
collecting: 8/32 workers
collecting: 8/32 workers
collecting: 8/32 workers
collecting: 9/32 workers
collecting: 10/32 workers
collecting: 10/32 workers
collecting: 11/32 workers
collecting: 11/32 workers
collecting: 12/32 workers
collecting: 12/32 workers
collecting: 13/32 workers
collecting: 13/32 workers
collecting: 13/32 workers
collecting: 14/32 workers
collecting: 15/32 workers
collecting: 15/32 workers
collecting: 16/32 workers
collecting: 16/32 workers
collecting: 17/32 workers
collecting: 17/32 workers
collecting: 18/32 workers
collecting: 18/32 workers
collecting: 19/32 workers
collecting: 19/32 workers
collecting: 19/32 workers
collecting: 20/32 workers
collecting: 21/32 workers
collecting: 21/32 workers
collecting: 22/32 workers
collecting: 22/32 workers
collecting: 23/32 workers
collecting: 23/32 workers
collecting: 23/32 workers
collecting: 24/32 workers
collecting: 25/32 workers
collecting: 25/32 workers
collecting: 26/32 workers
collecting: 26/32 workers
collecting: 26/32 workers
collecting: 27/32 workers
collecting: 28/32 workers
collecting: 28/32 workers
collecting: 29/32 workers
collecting: 29/32 workers
collecting: 30/32 workers
collecting: 30/32 workers
collecting: 31/32 workers
collecting: 31/32 workers
32 workers [33 items] 
.............................F... [100%]
=================================== FAILURES ===================================
______________ TestNotebookRun.test_when_import_error_then_fails _______________
[gw16] linux -- Python 3.12.7 /nix/store/g1zx5x7mmclk2gmwkbd3f33cmc8a6hz2-python3-3.12.7/bin/python3.12
self = <tests.test_nb_run.TestNotebookRun object at 0x7ffff4672f00>
testdir2 = None
def test_when_import_error_then_fails(self, testdir2: Never):
nb = Path(__file__).parent / "resources" / "import_errs.ipynb"
run = NotebookRun(nb, 1, find_import_errors=True)
res: NotebookResult = run.execute()
> assert res.error is not None
E AssertionError: assert None is not None
E + where None = NotebookResult(nb={'cells': [{'cell_type': 'code', 'execution_count': 1, 'metadata': {'execution': {'iopub.status.busy...'949777d72b0d2535278d3dc13498b2535136f6dfe0678499012e853ee9abcab1'}}}, 'nbformat': 4, 'nbformat_minor': 2}, error=None).error
/build/source/tests/test_nb_run.py:168: AssertionError
------------------------------ Captured log call -------------------------------
ERROR traitlets:client.py:845 Timeout waiting for execute reply (1s).
ERROR traitlets:client.py:847 Interrupting kernel
ERROR traitlets:client.py:845 Timeout waiting for execute reply (1s).
ERROR traitlets:client.py:847 Interrupting kernel
ERROR traitlets:client.py:845 Timeout waiting for execute reply (1s).
ERROR traitlets:client.py:847 Interrupting kernel
ERROR traitlets:client.py:845 Timeout waiting for execute reply (1s).
ERROR traitlets:client.py:847 Interrupting kernel
=========================== short test summary info ============================
FAILED tests/test_nb_run.py::TestNotebookRun::test_when_import_error_then_fails - AssertionError: assert None is not None
======================== 1 failed, 32 passed in 35.99s =========================
Sourcing python-remove-tests-dir-hook
Sourcing python-catch-conflicts-hook.sh
Sourcing python-remove-bin-bytecode-hook.sh
Sourcing pypa-build-hook
Using pypaBuildPhase
Sourcing python-runtime-deps-check-hook
Using pythonRuntimeDepsCheckHook
Sourcing pypa-install-hook
Using pypaInstallPhase
Sourcing python-imports-check-hook.sh
Using pythonImportsCheckPhase
Sourcing python-namespaces-hook
Sourcing python-catch-conflicts-hook.sh
Sourcing pytest-check-hook
Using pytestCheckPhase
Running phase: unpackPhase
@nix { "action": "setPhase", "phase": "unpackPhase" }
unpacking source archive /nix/store/yd85ay5h7n6ba7vjif5rdysyp1sjdmh7-source
source root is source
setting SOURCE_DATE_EPOCH to timestamp 315619200 of file source/tests/test_pytest_plugin.py
Running phase: patchPhase
@nix { "action": "setPhase", "phase": "patchPhase" }
Running phase: updateAutotoolsGnuConfigScriptsPhase
@nix { "action": "setPhase", "phase": "updateAutotoolsGnuConfigScriptsPhase" }
Running phase: configurePhase
@nix { "action": "setPhase", "phase": "configurePhase" }
no configure script, doing nothing
Running phase: buildPhase
@nix { "action": "setPhase", "phase": "buildPhase" }
Executing pypaBuildPhase
Creating a wheel...
pypa build flags: --no-isolation --outdir dist/ --wheel
* Getting build dependencies for wheel...
* Building wheel...
Successfully built nbmake-1.5.3-py3-none-any.whl
Finished creating a wheel...
/build/source/dist /build/source
Unpacking to: unpacked/nbmake-1.5.3...OK
Repacking wheel as ./nbmake-1.5.3-py3-none-any.whl...OK
/build/source
Finished executing pypaBuildPhase
Running phase: pythonRuntimeDepsCheckHook
@nix { "action": "setPhase", "phase": "pythonRuntimeDepsCheckHook" }
Executing pythonRuntimeDepsCheck
Checking runtime dependencies for nbmake-1.5.3-py3-none-any.whl
Finished executing pythonRuntimeDepsCheck
Running phase: installPhase
@nix { "action": "setPhase", "phase": "installPhase" }
Executing pypaInstallPhase
Successfully installed nbmake-1.5.3-py3-none-any.whl
Finished executing pypaInstallPhase
Running phase: pythonOutputDistPhase
@nix { "action": "setPhase", "phase": "pythonOutputDistPhase" }
Executing pythonOutputDistPhase
Finished executing pythonOutputDistPhase
Running phase: fixupPhase
@nix { "action": "setPhase", "phase": "fixupPhase" }
shrinking RPATHs of ELF executables and libraries in /nix/store/9ym48wbkbbx7gmfwqqaiymlwn22dhpzp-python3.12-nbmake-1.5.4
checking for references to /build/ in /nix/store/9ym48wbkbbx7gmfwqqaiymlwn22dhpzp-python3.12-nbmake-1.5.4...
patching script interpreter paths in /nix/store/9ym48wbkbbx7gmfwqqaiymlwn22dhpzp-python3.12-nbmake-1.5.4
stripping (with command strip and flags -S -p) in /nix/store/9ym48wbkbbx7gmfwqqaiymlwn22dhpzp-python3.12-nbmake-1.5.4/lib
shrinking RPATHs of ELF executables and libraries in /nix/store/fc66rpgn4hmlvp6jm4z4d3mcar18r6mw-python3.12-nbmake-1.5.4-dist
checking for references to /build/ in /nix/store/fc66rpgn4hmlvp6jm4z4d3mcar18r6mw-python3.12-nbmake-1.5.4-dist...
patching script interpreter paths in /nix/store/fc66rpgn4hmlvp6jm4z4d3mcar18r6mw-python3.12-nbmake-1.5.4-dist
Executing pythonRemoveTestsDir
Finished executing pythonRemoveTestsDir
Running phase: installCheckPhase
@nix { "action": "setPhase", "phase": "installCheckPhase" }
no Makefile or custom installCheckPhase, doing nothing
Running phase: pythonCatchConflictsPhase
@nix { "action": "setPhase", "phase": "pythonCatchConflictsPhase" }
Running phase: pythonRemoveBinBytecodePhase
@nix { "action": "setPhase", "phase": "pythonRemoveBinBytecodePhase" }
Running phase: pythonImportsCheckPhase
@nix { "action": "setPhase", "phase": "pythonImportsCheckPhase" }
Executing pythonImportsCheckPhase
Check whether the following modules can be imported: nbmake
Running phase: pytestXdistHook
@nix { "action": "setPhase", "phase": "pytestXdistHook" }
Running phase: pytestCheckPhase
@nix { "action": "setPhase", "phase": "pytestCheckPhase" }
Executing pytestCheckPhase
002
============================= test session starts ==============================
platform linux -- Python 3.12.7, pytest-8.3.3, pluggy-1.5.0
rootdir: /build/source
configfile: pytest.ini
testpaths: tests
plugins: nbmake-1.5.3, xdist-3.6.1

created: 32/32 workers
initialized: 1/32 workers
initialized: 2/32 workers
initialized: 3/32 workers
initialized: 4/32 workers
initialized: 5/32 workers
initialized: 6/32 workers
initialized: 7/32 workers
initialized: 8/32 workers
initialized: 9/32 workers
initialized: 10/32 workers
initialized: 11/32 workers
initialized: 12/32 workers
initialized: 13/32 workers
initialized: 14/32 workers
initialized: 15/32 workers
initialized: 16/32 workers
initialized: 17/32 workers
initialized: 18/32 workers
initialized: 19/32 workers
initialized: 20/32 workers
initialized: 21/32 workers
initialized: 22/32 workers
initialized: 23/32 workers
initialized: 24/32 workers
initialized: 25/32 workers
initialized: 26/32 workers
initialized: 27/32 workers
initialized: 28/32 workers
initialized: 29/32 workers
initialized: 30/32 workers
initialized: 31/32 workers
initialized: 32/32 workers
ready: 1/32 workers 
ready: 2/32 workers
collecting: 1/32 workers
collecting: 2/32 workers
collecting: 2/32 workers
collecting: 3/32 workers
collecting: 3/32 workers
collecting: 4/32 workers
collecting: 4/32 workers
collecting: 4/32 workers
collecting: 5/32 workers
collecting: 5/32 workers
collecting: 6/32 workers
collecting: 6/32 workers
collecting: 7/32 workers
collecting: 8/32 workers
collecting: 8/32 workers
collecting: 8/32 workers
collecting: 8/32 workers
collecting: 9/32 workers
collecting: 10/32 workers
collecting: 11/32 workers
collecting: 11/32 workers
collecting: 12/32 workers
collecting: 12/32 workers
collecting: 12/32 workers
collecting: 12/32 workers
collecting: 13/32 workers
collecting: 14/32 workers
collecting: 15/32 workers
collecting: 15/32 workers
collecting: 15/32 workers
collecting: 15/32 workers
collecting: 15/32 workers
collecting: 16/32 workers
collecting: 17/32 workers
collecting: 18/32 workers
collecting: 19/32 workers
collecting: 19/32 workers
collecting: 20/32 workers
collecting: 20/32 workers
collecting: 20/32 workers
collecting: 20/32 workers
collecting: 21/32 workers
collecting: 21/32 workers
collecting: 22/32 workers
collecting: 23/32 workers
collecting: 23/32 workers
collecting: 24/32 workers
collecting: 24/32 workers
collecting: 25/32 workers
collecting: 26/32 workers
collecting: 26/32 workers
collecting: 26/32 workers
collecting: 27/32 workers
collecting: 28/32 workers
collecting: 28/32 workers
collecting: 29/32 workers
collecting: 29/32 workers
collecting: 30/32 workers
collecting: 30/32 workers
collecting: 30/32 workers
collecting: 31/32 workers
32 workers [33 items] 
................................F [100%]Exception ignored in atexit callback: <bound method run_sync.<locals>.wrapped of <nbclient.client.NotebookClient object at 0x7ffff4672d50>>
Traceback (most recent call last):
File "/nix/store/9crcl5py932s5gb34pzrwa93vcsyjw89-python3.12-jupyter-core-5.7.2/lib/python3.12/site-packages/jupyter_core/utils/__init__.py", line 165, in wrapped
return loop.run_until_complete(inner)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/nix/store/g1zx5x7mmclk2gmwkbd3f33cmc8a6hz2-python3-3.12.7/lib/python3.12/asyncio/base_events.py", line 687, in run_until_complete
return future.result()
^^^^^^^^^^^^^^^
File "/nix/store/csshh1zi4824ap1rc0zhrw4rd5g77zmm-python3.12-nbclient-0.10.0/lib/python3.12/site-packages/nbclient/client.py", line 504, in _async_cleanup_kernel
assert self.km is not None
^^^^^^^^^^^^^^^^^^^
AssertionError:
=================================== FAILURES ===================================
_______________ TestNotebookRun.test_when_magic_error_then_fails _______________
[gw17] linux -- Python 3.12.7 /nix/store/g1zx5x7mmclk2gmwkbd3f33cmc8a6hz2-python3-3.12.7/bin/python3.12
self = <tests.test_nb_run.TestNotebookRun object at 0x7ffff46725d0>
testdir2 = None
def test_when_magic_error_then_fails(self, testdir2: Never):
nb = Path(__file__).parent / "resources" / "magic_error.ipynb"
run = NotebookRun(nb, 300)
> res: NotebookResult = run.execute()
/build/source/tests/test_nb_run.py:155:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/nix/store/9ym48wbkbbx7gmfwqqaiymlwn22dhpzp-python3.12-nbmake-1.5.4/lib/python3.12/site-packages/nbmake/nb_run.py:131: in execute
raise err
/nix/store/9ym48wbkbbx7gmfwqqaiymlwn22dhpzp-python3.12-nbmake-1.5.4/lib/python3.12/site-packages/nbmake/nb_run.py:113: in execute
c.execute(cwd=self.filename.parent)
/nix/store/9crcl5py932s5gb34pzrwa93vcsyjw89-python3.12-jupyter-core-5.7.2/lib/python3.12/site-packages/jupyter_core/utils/__init__.py:165: in wrapped
return loop.run_until_complete(inner)
/nix/store/g1zx5x7mmclk2gmwkbd3f33cmc8a6hz2-python3-3.12.7/lib/python3.12/asyncio/base_events.py:687: in run_until_complete
return future.result()
/nix/store/csshh1zi4824ap1rc0zhrw4rd5g77zmm-python3.12-nbclient-0.10.0/lib/python3.12/site-packages/nbclient/client.py:693: in async_execute
async with self.async_setup_kernel(**kwargs):
/nix/store/g1zx5x7mmclk2gmwkbd3f33cmc8a6hz2-python3-3.12.7/lib/python3.12/contextlib.py:210: in __aenter__
return await anext(self.gen)
/nix/store/csshh1zi4824ap1rc0zhrw4rd5g77zmm-python3.12-nbclient-0.10.0/lib/python3.12/site-packages/nbclient/client.py:651: in async_setup_kernel
await self.async_start_new_kernel_client()
/nix/store/csshh1zi4824ap1rc0zhrw4rd5g77zmm-python3.12-nbclient-0.10.0/lib/python3.12/site-packages/nbclient/client.py:566: in async_start_new_kernel_client
await ensure_async(self.kc.wait_for_ready(timeout=self.startup_timeout))
/nix/store/9crcl5py932s5gb34pzrwa93vcsyjw89-python3.12-jupyter-core-5.7.2/lib/python3.12/site-packages/jupyter_core/utils/__init__.py:198: in ensure_async
result = await obj
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <jupyter_client.asynchronous.client.AsyncKernelClient object at 0x7ffff40cc800>
timeout = 60
async def _async_wait_for_ready(self, timeout: t.Optional[float] = None) -> None:
 """Waits for a response when a client is blocked

 - Sets future time for timeout
 - Blocks on shell channel until a message is received
 - Exit if the kernel has died
 - If client times out before receiving a message from the kernel, send RuntimeError
 - Flush the IOPub channel
 """
if timeout is None:
timeout = float("inf")
abs_timeout = time.time() + timeout

from .manager import KernelManager

if not isinstance(self.parent, KernelManager):
# This Client was not created by a KernelManager,
# so wait for kernel to become responsive to heartbeats
# before checking for kernel_info reply
while not await self._async_is_alive():
if time.time() > abs_timeout:
raise RuntimeError(
"Kernel didn't respond to heartbeats in %d seconds and timed out" % timeout
)
await asyncio.sleep(0.2)

# Wait for kernel info reply on shell channel
while True:
self.kernel_info()
try:
msg = await ensure_async(self.shell_channel.get_msg(timeout=1))
except Empty:
pass
else:
if msg["msg_type"] == "kernel_info_reply":
# Checking that IOPub is connected. If it is not connected, start over.
try:
await ensure_async(self.iopub_channel.get_msg(timeout=0.2))
except Empty:
pass
else:
self._handle_kernel_info_reply(msg)
break

if not await self._async_is_alive():
msg = "Kernel died before replying to kernel_info"
raise RuntimeError(msg)

# Check if current time is ready check time plus timeout
if time.time() > abs_timeout:
> raise RuntimeError("Kernel didn't respond in %d seconds" % timeout)
E RuntimeError: Kernel didn't respond in 60 seconds
/nix/store/m8i8li4hafiff2jl6d2g8r8i1myxqgdy-python3.12-jupyter-client-8.6.3/lib/python3.12/site-packages/jupyter_client/client.py:207: RuntimeError
----------------------------- Captured stderr call -----------------------------
Traceback (most recent call last):
File "<frozen runpy>", line 198, in _run_module_as_main
File "<frozen runpy>", line 88, in _run_code
File "/nix/store/pbz2lm69mrzxmdbxqvxp9x3j89a3r0z7-python3.12-ipykernel-6.29.5/lib/python3.12/site-packages/ipykernel_launcher.py", line 18, in <module>
app.launch_new_instance()
File "/nix/store/6hx5sfr1dr62nr2xc9szchclaqybi5v7-python3.12-traitlets-5.14.3/lib/python3.12/site-packages/traitlets/config/application.py", line 1074, in launch_instance
app.initialize(argv)
File "/nix/store/6hx5sfr1dr62nr2xc9szchclaqybi5v7-python3.12-traitlets-5.14.3/lib/python3.12/site-packages/traitlets/config/application.py", line 118, in inner
return method(app, *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/nix/store/pbz2lm69mrzxmdbxqvxp9x3j89a3r0z7-python3.12-ipykernel-6.29.5/lib/python3.12/site-packages/ipykernel/kernelapp.py", line 692, in initialize
self.init_sockets()
File "/nix/store/pbz2lm69mrzxmdbxqvxp9x3j89a3r0z7-python3.12-ipykernel-6.29.5/lib/python3.12/site-packages/ipykernel/kernelapp.py", line 346, in init_sockets
self.init_iopub(context)
File "/nix/store/pbz2lm69mrzxmdbxqvxp9x3j89a3r0z7-python3.12-ipykernel-6.29.5/lib/python3.12/site-packages/ipykernel/kernelapp.py", line 375, in init_iopub
self.iopub_port = self._bind_socket(self.iopub_socket, self.iopub_port)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/nix/store/pbz2lm69mrzxmdbxqvxp9x3j89a3r0z7-python3.12-ipykernel-6.29.5/lib/python3.12/site-packages/ipykernel/kernelapp.py", line 253, in _bind_socket
return self._try_bind_socket(s, port)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/nix/store/pbz2lm69mrzxmdbxqvxp9x3j89a3r0z7-python3.12-ipykernel-6.29.5/lib/python3.12/site-packages/ipykernel/kernelapp.py", line 229, in _try_bind_socket
s.bind("tcp://%s:%i" % (self.ip, port))
File "/nix/store/i0d9y5a5xpfph465fiwc67rh91n25z91-python3.12-pyzmq-26.2.0/lib/python3.12/site-packages/zmq/sugar/socket.py", line 311, in bind
super().bind(addr)
File "_zmq.py", line 917, in zmq.backend.cython._zmq.Socket.bind
File "_zmq.py", line 179, in zmq.backend.cython._zmq._check_rc
zmq.error.ZMQError: Address already in use (addr='tcp://127.0.0.1:55071')
Exception ignored in atexit callback: <bound method IPKernelApp.close of <ipykernel.kernelapp.IPKernelApp object at 0x7ffff73977d0>>
Traceback (most recent call last):
File "/nix/store/pbz2lm69mrzxmdbxqvxp9x3j89a3r0z7-python3.12-ipykernel-6.29.5/lib/python3.12/site-packages/ipykernel/kernelapp.py", line 422, in close
self.context.term()
File "/nix/store/i0d9y5a5xpfph465fiwc67rh91n25z91-python3.12-pyzmq-26.2.0/lib/python3.12/site-packages/zmq/sugar/context.py", line 266, in term
super().term()
File "_zmq.py", line 564, in zmq.backend.cython._zmq.Context.term
File "_zmq.py", line 160, in zmq.backend.cython._zmq._check_rc
KeyboardInterrupt:
------------------------------ Captured log call -------------------------------
ERROR traitlets:client.py:568 Error occurred while starting new kernel client for kernel 2b352581-3eb3-4b90-8d43-a6be2fbc36da: Kernel didn't respond in 60 seconds
=========================== short test summary info ============================
FAILED tests/test_nb_run.py::TestNotebookRun::test_when_magic_error_then_fails - RuntimeError: Kernel didn't respond in 60 seconds
=================== 1 failed, 32 passed in 83.21s (0:01:23) ====================
Sourcing python-remove-tests-dir-hook
Sourcing python-catch-conflicts-hook.sh
Sourcing python-remove-bin-bytecode-hook.sh
Sourcing pypa-build-hook
Using pypaBuildPhase
Sourcing python-runtime-deps-check-hook
Using pythonRuntimeDepsCheckHook
Sourcing pypa-install-hook
Using pypaInstallPhase
Sourcing python-imports-check-hook.sh
Using pythonImportsCheckPhase
Sourcing python-namespaces-hook
Sourcing python-catch-conflicts-hook.sh
Sourcing pytest-check-hook
Using pytestCheckPhase
Running phase: unpackPhase
@nix { "action": "setPhase", "phase": "unpackPhase" }
unpacking source archive /nix/store/yd85ay5h7n6ba7vjif5rdysyp1sjdmh7-source
source root is source
setting SOURCE_DATE_EPOCH to timestamp 315619200 of file source/tests/test_pytest_plugin.py
Running phase: patchPhase
@nix { "action": "setPhase", "phase": "patchPhase" }
Running phase: updateAutotoolsGnuConfigScriptsPhase
@nix { "action": "setPhase", "phase": "updateAutotoolsGnuConfigScriptsPhase" }
Running phase: configurePhase
@nix { "action": "setPhase", "phase": "configurePhase" }
no configure script, doing nothing
Running phase: buildPhase
@nix { "action": "setPhase", "phase": "buildPhase" }
Executing pypaBuildPhase
Creating a wheel...
pypa build flags: --no-isolation --outdir dist/ --wheel
* Getting build dependencies for wheel...
* Building wheel...
Successfully built nbmake-1.5.3-py3-none-any.whl
Finished creating a wheel...
/build/source/dist /build/source
Unpacking to: unpacked/nbmake-1.5.3...OK
Repacking wheel as ./nbmake-1.5.3-py3-none-any.whl...OK
/build/source
Finished executing pypaBuildPhase
Running phase: pythonRuntimeDepsCheckHook
@nix { "action": "setPhase", "phase": "pythonRuntimeDepsCheckHook" }
Executing pythonRuntimeDepsCheck
Checking runtime dependencies for nbmake-1.5.3-py3-none-any.whl
Finished executing pythonRuntimeDepsCheck
Running phase: installPhase
@nix { "action": "setPhase", "phase": "installPhase" }
Executing pypaInstallPhase
Successfully installed nbmake-1.5.3-py3-none-any.whl
Finished executing pypaInstallPhase
Running phase: pythonOutputDistPhase
@nix { "action": "setPhase", "phase": "pythonOutputDistPhase" }
Executing pythonOutputDistPhase
Finished executing pythonOutputDistPhase
Running phase: fixupPhase
@nix { "action": "setPhase", "phase": "fixupPhase" }
shrinking RPATHs of ELF executables and libraries in /nix/store/rx5f5x50zv7xnx6a3c0i0r9h97cfilly-python3.12-nbmake-1.5.4
checking for references to /build/ in /nix/store/rx5f5x50zv7xnx6a3c0i0r9h97cfilly-python3.12-nbmake-1.5.4...
patching script interpreter paths in /nix/store/rx5f5x50zv7xnx6a3c0i0r9h97cfilly-python3.12-nbmake-1.5.4
stripping (with command strip and flags -S -p) in /nix/store/rx5f5x50zv7xnx6a3c0i0r9h97cfilly-python3.12-nbmake-1.5.4/lib
shrinking RPATHs of ELF executables and libraries in /nix/store/lccw6fiy848lschh37cxw5fr86zm7d9s-python3.12-nbmake-1.5.4-dist
checking for references to /build/ in /nix/store/lccw6fiy848lschh37cxw5fr86zm7d9s-python3.12-nbmake-1.5.4-dist...
patching script interpreter paths in /nix/store/lccw6fiy848lschh37cxw5fr86zm7d9s-python3.12-nbmake-1.5.4-dist
Executing pythonRemoveTestsDir
Finished executing pythonRemoveTestsDir
Running phase: installCheckPhase
@nix { "action": "setPhase", "phase": "installCheckPhase" }
no Makefile or custom installCheckPhase, doing nothing
Running phase: pythonCatchConflictsPhase
@nix { "action": "setPhase", "phase": "pythonCatchConflictsPhase" }
Running phase: pythonRemoveBinBytecodePhase
@nix { "action": "setPhase", "phase": "pythonRemoveBinBytecodePhase" }
Running phase: pythonImportsCheckPhase
@nix { "action": "setPhase", "phase": "pythonImportsCheckPhase" }
Executing pythonImportsCheckPhase
Check whether the following modules can be imported: nbmake
Running phase: pytestXdistHook
@nix { "action": "setPhase", "phase": "pytestXdistHook" }
Running phase: pytestCheckPhase
@nix { "action": "setPhase", "phase": "pytestCheckPhase" }
Executing pytestCheckPhase
001
============================= test session starts ==============================
platform linux -- Python 3.12.7, pytest-8.3.3, pluggy-1.5.0
rootdir: /build/source
configfile: pytest.ini
testpaths: tests
plugins: nbmake-1.5.3, xdist-3.6.1

created: 32/32 workers
initialized: 1/32 workers
initialized: 2/32 workers
initialized: 3/32 workers
initialized: 4/32 workers
initialized: 5/32 workers
initialized: 6/32 workers
initialized: 7/32 workers
initialized: 8/32 workers
initialized: 9/32 workers
initialized: 10/32 workers
initialized: 11/32 workers
initialized: 12/32 workers
initialized: 13/32 workers
initialized: 14/32 workers
initialized: 15/32 workers
initialized: 16/32 workers
initialized: 17/32 workers
initialized: 18/32 workers
initialized: 19/32 workers
initialized: 20/32 workers
initialized: 21/32 workers
initialized: 22/32 workers
initialized: 23/32 workers
initialized: 24/32 workers
initialized: 25/32 workers
initialized: 26/32 workers
initialized: 27/32 workers
initialized: 28/32 workers
initialized: 29/32 workers
initialized: 30/32 workers
initialized: 31/32 workers
initialized: 32/32 workers
ready: 1/32 workers 
ready: 2/32 workers
collecting: 1/32 workers
collecting: 1/32 workers
collecting: 2/32 workers
collecting: 2/32 workers
collecting: 3/32 workers
collecting: 4/32 workers
collecting: 4/32 workers
collecting: 5/32 workers
collecting: 5/32 workers
collecting: 6/32 workers
collecting: 6/32 workers
collecting: 7/32 workers
collecting: 7/32 workers
collecting: 8/32 workers
collecting: 8/32 workers
collecting: 8/32 workers
collecting: 8/32 workers
collecting: 9/32 workers
collecting: 9/32 workers
collecting: 10/32 workers
collecting: 11/32 workers
collecting: 12/32 workers
collecting: 12/32 workers
collecting: 13/32 workers
collecting: 13/32 workers
collecting: 14/32 workers
collecting: 14/32 workers
collecting: 14/32 workers
collecting: 14/32 workers
collecting: 14/32 workers
collecting: 14/32 workers
collecting: 15/32 workers
collecting: 16/32 workers
collecting: 17/32 workers
collecting: 18/32 workers
collecting: 19/32 workers
collecting: 19/32 workers
collecting: 20/32 workers
collecting: 20/32 workers
collecting: 21/32 workers
collecting: 21/32 workers
collecting: 22/32 workers
collecting: 22/32 workers
collecting: 22/32 workers
collecting: 23/32 workers
collecting: 24/32 workers
collecting: 24/32 workers
collecting: 25/32 workers
collecting: 25/32 workers
collecting: 26/32 workers
collecting: 26/32 workers
collecting: 26/32 workers
collecting: 27/32 workers
collecting: 27/32 workers
collecting: 27/32 workers
collecting: 28/32 workers
collecting: 29/32 workers
collecting: 29/32 workers
collecting: 30/32 workers
collecting: 31/32 workers
collecting: 31/32 workers
32 workers [33 items] 
...............F................. [100%]Exception ignored in atexit callback: <bound method run_sync.<locals>.wrapped of <nbclient.client.NotebookClient object at 0x7ffff46dcf80>>
Traceback (most recent call last):
File "/nix/store/9crcl5py932s5gb34pzrwa93vcsyjw89-python3.12-jupyter-core-5.7.2/lib/python3.12/site-packages/jupyter_core/utils/__init__.py", line 165, in wrapped
return loop.run_until_complete(inner)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/nix/store/g1zx5x7mmclk2gmwkbd3f33cmc8a6hz2-python3-3.12.7/lib/python3.12/asyncio/base_events.py", line 687, in run_until_complete
return future.result()
^^^^^^^^^^^^^^^
File "/nix/store/csshh1zi4824ap1rc0zhrw4rd5g77zmm-python3.12-nbclient-0.10.0/lib/python3.12/site-packages/nbclient/client.py", line 504, in _async_cleanup_kernel
assert self.km is not None
^^^^^^^^^^^^^^^^^^^
AssertionError:
=================================== FAILURES ===================================
____________ TestNotebookRun.test_when_passing_then_no_failing_cell ____________
[gw2] linux -- Python 3.12.7 /nix/store/g1zx5x7mmclk2gmwkbd3f33cmc8a6hz2-python3-3.12.7/bin/python3.12
self = <tests.test_nb_run.TestNotebookRun object at 0x7ffff4786360>
testdir2 = None
def test_when_passing_then_no_failing_cell(self, testdir2: Never):
write_nb(passing_nb, filename)

run = NotebookRun(filename, 300)
> res: NotebookResult = run.execute()
/build/source/tests/test_nb_run.py:25:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/nix/store/rx5f5x50zv7xnx6a3c0i0r9h97cfilly-python3.12-nbmake-1.5.4/lib/python3.12/site-packages/nbmake/nb_run.py:131: in execute
raise err
/nix/store/rx5f5x50zv7xnx6a3c0i0r9h97cfilly-python3.12-nbmake-1.5.4/lib/python3.12/site-packages/nbmake/nb_run.py:113: in execute
c.execute(cwd=self.filename.parent)
/nix/store/9crcl5py932s5gb34pzrwa93vcsyjw89-python3.12-jupyter-core-5.7.2/lib/python3.12/site-packages/jupyter_core/utils/__init__.py:165: in wrapped
return loop.run_until_complete(inner)
/nix/store/g1zx5x7mmclk2gmwkbd3f33cmc8a6hz2-python3-3.12.7/lib/python3.12/asyncio/base_events.py:687: in run_until_complete
return future.result()
/nix/store/csshh1zi4824ap1rc0zhrw4rd5g77zmm-python3.12-nbclient-0.10.0/lib/python3.12/site-packages/nbclient/client.py:693: in async_execute
async with self.async_setup_kernel(**kwargs):
/nix/store/g1zx5x7mmclk2gmwkbd3f33cmc8a6hz2-python3-3.12.7/lib/python3.12/contextlib.py:210: in __aenter__
return await anext(self.gen)
/nix/store/csshh1zi4824ap1rc0zhrw4rd5g77zmm-python3.12-nbclient-0.10.0/lib/python3.12/site-packages/nbclient/client.py:651: in async_setup_kernel
await self.async_start_new_kernel_client()
/nix/store/csshh1zi4824ap1rc0zhrw4rd5g77zmm-python3.12-nbclient-0.10.0/lib/python3.12/site-packages/nbclient/client.py:566: in async_start_new_kernel_client
await ensure_async(self.kc.wait_for_ready(timeout=self.startup_timeout))
/nix/store/9crcl5py932s5gb34pzrwa93vcsyjw89-python3.12-jupyter-core-5.7.2/lib/python3.12/site-packages/jupyter_core/utils/__init__.py:198: in ensure_async
result = await obj
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <jupyter_client.asynchronous.client.AsyncKernelClient object at 0x7fffefcd4980>
timeout = 60
async def _async_wait_for_ready(self, timeout: t.Optional[float] = None) -> None:
 """Waits for a response when a client is blocked

 - Sets future time for timeout
 - Blocks on shell channel until a message is received
 - Exit if the kernel has died
 - If client times out before receiving a message from the kernel, send RuntimeError
 - Flush the IOPub channel
 """
if timeout is None:
timeout = float("inf")
abs_timeout = time.time() + timeout

from .manager import KernelManager

if not isinstance(self.parent, KernelManager):
# This Client was not created by a KernelManager,
# so wait for kernel to become responsive to heartbeats
# before checking for kernel_info reply
while not await self._async_is_alive():
if time.time() > abs_timeout:
raise RuntimeError(
"Kernel didn't respond to heartbeats in %d seconds and timed out" % timeout
)
await asyncio.sleep(0.2)

# Wait for kernel info reply on shell channel
while True:
self.kernel_info()
try:
msg = await ensure_async(self.shell_channel.get_msg(timeout=1))
except Empty:
pass
else:
if msg["msg_type"] == "kernel_info_reply":
# Checking that IOPub is connected. If it is not connected, start over.
try:
await ensure_async(self.iopub_channel.get_msg(timeout=0.2))
except Empty:
pass
else:
self._handle_kernel_info_reply(msg)
break

if not await self._async_is_alive():
msg = "Kernel died before replying to kernel_info"
> raise RuntimeError(msg)
E RuntimeError: Kernel died before replying to kernel_info
/nix/store/m8i8li4hafiff2jl6d2g8r8i1myxqgdy-python3.12-jupyter-client-8.6.3/lib/python3.12/site-packages/jupyter_client/client.py:203: RuntimeError
----------------------------- Captured stderr call -----------------------------
Traceback (most recent call last):
File "<frozen runpy>", line 198, in _run_module_as_main
File "<frozen runpy>", line 88, in _run_code
File "/nix/store/pbz2lm69mrzxmdbxqvxp9x3j89a3r0z7-python3.12-ipykernel-6.29.5/lib/python3.12/site-packages/ipykernel_launcher.py", line 18, in <module>
app.launch_new_instance()
File "/nix/store/6hx5sfr1dr62nr2xc9szchclaqybi5v7-python3.12-traitlets-5.14.3/lib/python3.12/site-packages/traitlets/config/application.py", line 1074, in launch_instance
app.initialize(argv)
File "/nix/store/6hx5sfr1dr62nr2xc9szchclaqybi5v7-python3.12-traitlets-5.14.3/lib/python3.12/site-packages/traitlets/config/application.py", line 118, in inner
return method(app, *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/nix/store/pbz2lm69mrzxmdbxqvxp9x3j89a3r0z7-python3.12-ipykernel-6.29.5/lib/python3.12/site-packages/ipykernel/kernelapp.py", line 692, in initialize
self.init_sockets()
File "/nix/store/pbz2lm69mrzxmdbxqvxp9x3j89a3r0z7-python3.12-ipykernel-6.29.5/lib/python3.12/site-packages/ipykernel/kernelapp.py", line 336, in init_sockets
self.stdin_port = self._bind_socket(self.stdin_socket, self.stdin_port)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/nix/store/pbz2lm69mrzxmdbxqvxp9x3j89a3r0z7-python3.12-ipykernel-6.29.5/lib/python3.12/site-packages/ipykernel/kernelapp.py", line 253, in _bind_socket
return self._try_bind_socket(s, port)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/nix/store/pbz2lm69mrzxmdbxqvxp9x3j89a3r0z7-python3.12-ipykernel-6.29.5/lib/python3.12/site-packages/ipykernel/kernelapp.py", line 229, in _try_bind_socket
s.bind("tcp://%s:%i" % (self.ip, port))
File "/nix/store/i0d9y5a5xpfph465fiwc67rh91n25z91-python3.12-pyzmq-26.2.0/lib/python3.12/site-packages/zmq/sugar/socket.py", line 311, in bind
super().bind(addr)
File "_zmq.py", line 917, in zmq.backend.cython._zmq.Socket.bind
File "_zmq.py", line 179, in zmq.backend.cython._zmq._check_rc
zmq.error.ZMQError: Address already in use (addr='tcp://127.0.0.1:41105')
------------------------------ Captured log call -------------------------------
ERROR traitlets:client.py:568 Error occurred while starting new kernel client for kernel 491ce33c-410d-49c7-afb3-e4939c67e7b5: Kernel died before replying to kernel_info
=========================== short test summary info ============================
FAILED tests/test_nb_run.py::TestNotebookRun::test_when_passing_then_no_failing_cell - RuntimeError: Kernel died before replying to kernel_info
======================== 1 failed, 32 passed in 45.95s =========================
Sourcing python-remove-tests-dir-hook
Sourcing python-catch-conflicts-hook.sh
Sourcing python-remove-bin-bytecode-hook.sh
Sourcing pypa-build-hook
Using pypaBuildPhase
Sourcing python-runtime-deps-check-hook
Using pythonRuntimeDepsCheckHook
Sourcing pypa-install-hook
Using pypaInstallPhase
Sourcing python-imports-check-hook.sh
Using pythonImportsCheckPhase
Sourcing python-namespaces-hook
Sourcing python-catch-conflicts-hook.sh
Sourcing pytest-check-hook
Using pytestCheckPhase
Running phase: unpackPhase
@nix { "action": "setPhase", "phase": "unpackPhase" }
unpacking source archive /nix/store/yd85ay5h7n6ba7vjif5rdysyp1sjdmh7-source
source root is source
setting SOURCE_DATE_EPOCH to timestamp 315619200 of file source/tests/test_pytest_plugin.py
Running phase: patchPhase
@nix { "action": "setPhase", "phase": "patchPhase" }
Running phase: updateAutotoolsGnuConfigScriptsPhase
@nix { "action": "setPhase", "phase": "updateAutotoolsGnuConfigScriptsPhase" }
Running phase: configurePhase
@nix { "action": "setPhase", "phase": "configurePhase" }
no configure script, doing nothing
Running phase: buildPhase
@nix { "action": "setPhase", "phase": "buildPhase" }
Executing pypaBuildPhase
Creating a wheel...
pypa build flags: --no-isolation --outdir dist/ --wheel
* Getting build dependencies for wheel...
* Building wheel...
Successfully built nbmake-1.5.3-py3-none-any.whl
Finished creating a wheel...
/build/source/dist /build/source
Unpacking to: unpacked/nbmake-1.5.3...OK
Repacking wheel as ./nbmake-1.5.3-py3-none-any.whl...OK
/build/source
Finished executing pypaBuildPhase
Running phase: pythonRuntimeDepsCheckHook
@nix { "action": "setPhase", "phase": "pythonRuntimeDepsCheckHook" }
Executing pythonRuntimeDepsCheck
Checking runtime dependencies for nbmake-1.5.3-py3-none-any.whl
Finished executing pythonRuntimeDepsCheck
Running phase: installPhase
@nix { "action": "setPhase", "phase": "installPhase" }
Executing pypaInstallPhase
Successfully installed nbmake-1.5.3-py3-none-any.whl
Finished executing pypaInstallPhase
Running phase: pythonOutputDistPhase
@nix { "action": "setPhase", "phase": "pythonOutputDistPhase" }
Executing pythonOutputDistPhase
Finished executing pythonOutputDistPhase
Running phase: fixupPhase
@nix { "action": "setPhase", "phase": "fixupPhase" }
shrinking RPATHs of ELF executables and libraries in /nix/store/713mi47qwskg4pci7bxpn3w6ssh3r4nh-python3.12-nbmake-1.5.4
checking for references to /build/ in /nix/store/713mi47qwskg4pci7bxpn3w6ssh3r4nh-python3.12-nbmake-1.5.4...
patching script interpreter paths in /nix/store/713mi47qwskg4pci7bxpn3w6ssh3r4nh-python3.12-nbmake-1.5.4
stripping (with command strip and flags -S -p) in /nix/store/713mi47qwskg4pci7bxpn3w6ssh3r4nh-python3.12-nbmake-1.5.4/lib
shrinking RPATHs of ELF executables and libraries in /nix/store/9w4l7g7vp9f174lq4lkamgzl0ll08vzk-python3.12-nbmake-1.5.4-dist
checking for references to /build/ in /nix/store/9w4l7g7vp9f174lq4lkamgzl0ll08vzk-python3.12-nbmake-1.5.4-dist...
patching script interpreter paths in /nix/store/9w4l7g7vp9f174lq4lkamgzl0ll08vzk-python3.12-nbmake-1.5.4-dist
Executing pythonRemoveTestsDir
Finished executing pythonRemoveTestsDir
Running phase: installCheckPhase
@nix { "action": "setPhase", "phase": "installCheckPhase" }
no Makefile or custom installCheckPhase, doing nothing
Running phase: pythonCatchConflictsPhase
@nix { "action": "setPhase", "phase": "pythonCatchConflictsPhase" }
Running phase: pythonRemoveBinBytecodePhase
@nix { "action": "setPhase", "phase": "pythonRemoveBinBytecodePhase" }
Running phase: pythonImportsCheckPhase
@nix { "action": "setPhase", "phase": "pythonImportsCheckPhase" }
Executing pythonImportsCheckPhase
Check whether the following modules can be imported: nbmake
Running phase: pytestXdistHook
@nix { "action": "setPhase", "phase": "pytestXdistHook" }
Running phase: pytestCheckPhase
@nix { "action": "setPhase", "phase": "pytestCheckPhase" }
Executing pytestCheckPhase
005
============================= test session starts ==============================
platform linux -- Python 3.12.7, pytest-8.3.3, pluggy-1.5.0
rootdir: /build/source
configfile: pytest.ini
testpaths: tests
plugins: nbmake-1.5.3, xdist-3.6.1

created: 32/32 workers
initialized: 1/32 workers
initialized: 2/32 workers
initialized: 3/32 workers
initialized: 4/32 workers
initialized: 5/32 workers
initialized: 6/32 workers
initialized: 7/32 workers
initialized: 8/32 workers
initialized: 9/32 workers
initialized: 10/32 workers
initialized: 11/32 workers
initialized: 12/32 workers
initialized: 13/32 workers
initialized: 14/32 workers
initialized: 15/32 workers
initialized: 16/32 workers
initialized: 17/32 workers
initialized: 18/32 workers
initialized: 19/32 workers
initialized: 20/32 workers
initialized: 21/32 workers
initialized: 22/32 workers
initialized: 23/32 workers
initialized: 24/32 workers
initialized: 25/32 workers
initialized: 26/32 workers
initialized: 27/32 workers
initialized: 28/32 workers
initialized: 29/32 workers
initialized: 30/32 workers
initialized: 31/32 workers
initialized: 32/32 workers
ready: 1/32 workers 
ready: 2/32 workers
collecting: 1/32 workers
collecting: 1/32 workers
collecting: 2/32 workers
collecting: 3/32 workers
collecting: 3/32 workers
collecting: 4/32 workers
collecting: 4/32 workers
collecting: 4/32 workers
collecting: 5/32 workers
collecting: 6/32 workers
collecting: 6/32 workers
collecting: 6/32 workers
collecting: 7/32 workers
collecting: 8/32 workers
collecting: 8/32 workers
collecting: 8/32 workers
collecting: 9/32 workers
collecting: 10/32 workers
collecting: 10/32 workers
collecting: 10/32 workers
collecting: 10/32 workers
collecting: 11/32 workers
collecting: 11/32 workers
collecting: 12/32 workers
collecting: 12/32 workers
collecting: 13/32 workers
collecting: 14/32 workers
collecting: 15/32 workers
collecting: 15/32 workers
collecting: 15/32 workers
collecting: 15/32 workers
collecting: 16/32 workers
collecting: 17/32 workers
collecting: 18/32 workers
collecting: 18/32 workers
collecting: 19/32 workers
collecting: 19/32 workers
collecting: 20/32 workers
collecting: 20/32 workers
collecting: 20/32 workers
collecting: 21/32 workers
collecting: 21/32 workers
collecting: 22/32 workers
collecting: 23/32 workers
collecting: 23/32 workers
collecting: 23/32 workers
collecting: 24/32 workers
collecting: 25/32 workers
collecting: 25/32 workers
collecting: 26/32 workers
collecting: 26/32 workers
collecting: 27/32 workers
collecting: 27/32 workers
collecting: 28/32 workers
collecting: 28/32 workers
collecting: 28/32 workers
collecting: 29/32 workers
collecting: 29/32 workers
collecting: 30/32 workers
collecting: 31/32 workers
collecting: 31/32 workers
32 workers [33 items] 
............F.F.................. [100%]Exception ignored in atexit callback: <bound method run_sync.<locals>.wrapped of <nbclient.client.NotebookClient object at 0x7ffff4646360>>
Traceback (most recent call last):
File "/nix/store/9crcl5py932s5gb34pzrwa93vcsyjw89-python3.12-jupyter-core-5.7.2/lib/python3.12/site-packages/jupyter_core/utils/__init__.py", line 165, in wrapped
return loop.run_until_complete(inner)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/nix/store/g1zx5x7mmclk2gmwkbd3f33cmc8a6hz2-python3-3.12.7/lib/python3.12/asyncio/base_events.py", line 687, in run_until_complete
return future.result()
^^^^^^^^^^^^^^^
File "/nix/store/csshh1zi4824ap1rc0zhrw4rd5g77zmm-python3.12-nbclient-0.10.0/lib/python3.12/site-packages/nbclient/client.py", line 504, in _async_cleanup_kernel
assert self.km is not None
^^^^^^^^^^^^^^^^^^^
AssertionError:
Exception ignored in atexit callback: <bound method run_sync.<locals>.wrapped of <nbclient.client.NotebookClient object at 0x7ffff5947fe0>>
Traceback (most recent call last):
File "/nix/store/9crcl5py932s5gb34pzrwa93vcsyjw89-python3.12-jupyter-core-5.7.2/lib/python3.12/site-packages/jupyter_core/utils/__init__.py", line 165, in wrapped
return loop.run_until_complete(inner)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/nix/store/g1zx5x7mmclk2gmwkbd3f33cmc8a6hz2-python3-3.12.7/lib/python3.12/asyncio/base_events.py", line 687, in run_until_complete
return future.result()
^^^^^^^^^^^^^^^
File "/nix/store/csshh1zi4824ap1rc0zhrw4rd5g77zmm-python3.12-nbclient-0.10.0/lib/python3.12/site-packages/nbclient/client.py", line 504, in _async_cleanup_kernel
assert self.km is not None
^^^^^^^^^^^^^^^^^^^
AssertionError:
=================================== FAILURES ===================================
________________ TestNotebookRun.test_when_empty_then_succeeds _________________
[gw14] linux -- Python 3.12.7 /nix/store/g1zx5x7mmclk2gmwkbd3f33cmc8a6hz2-python3-3.12.7/bin/python3.12
self = <tests.test_nb_run.TestNotebookRun object at 0x7ffff4672a50>
testdir2 = None
def test_when_empty_then_succeeds(self, testdir2: Never):
nb = Path(__file__).parent / "resources" / "empty.ipynb"
run = NotebookRun(nb, 300)
> res: NotebookResult = run.execute()
/build/source/tests/test_nb_run.py:161:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/nix/store/713mi47qwskg4pci7bxpn3w6ssh3r4nh-python3.12-nbmake-1.5.4/lib/python3.12/site-packages/nbmake/nb_run.py:131: in execute
raise err
/nix/store/713mi47qwskg4pci7bxpn3w6ssh3r4nh-python3.12-nbmake-1.5.4/lib/python3.12/site-packages/nbmake/nb_run.py:113: in execute
c.execute(cwd=self.filename.parent)
/nix/store/9crcl5py932s5gb34pzrwa93vcsyjw89-python3.12-jupyter-core-5.7.2/lib/python3.12/site-packages/jupyter_core/utils/__init__.py:165: in wrapped
return loop.run_until_complete(inner)
/nix/store/g1zx5x7mmclk2gmwkbd3f33cmc8a6hz2-python3-3.12.7/lib/python3.12/asyncio/base_events.py:687: in run_until_complete
return future.result()
/nix/store/csshh1zi4824ap1rc0zhrw4rd5g77zmm-python3.12-nbclient-0.10.0/lib/python3.12/site-packages/nbclient/client.py:693: in async_execute
async with self.async_setup_kernel(**kwargs):
/nix/store/g1zx5x7mmclk2gmwkbd3f33cmc8a6hz2-python3-3.12.7/lib/python3.12/contextlib.py:210: in __aenter__
return await anext(self.gen)
/nix/store/csshh1zi4824ap1rc0zhrw4rd5g77zmm-python3.12-nbclient-0.10.0/lib/python3.12/site-packages/nbclient/client.py:651: in async_setup_kernel
await self.async_start_new_kernel_client()
/nix/store/csshh1zi4824ap1rc0zhrw4rd5g77zmm-python3.12-nbclient-0.10.0/lib/python3.12/site-packages/nbclient/client.py:566: in async_start_new_kernel_client
await ensure_async(self.kc.wait_for_ready(timeout=self.startup_timeout))
/nix/store/9crcl5py932s5gb34pzrwa93vcsyjw89-python3.12-jupyter-core-5.7.2/lib/python3.12/site-packages/jupyter_core/utils/__init__.py:198: in ensure_async
result = await obj
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <jupyter_client.asynchronous.client.AsyncKernelClient object at 0x7ffff57156d0>
timeout = 60
async def _async_wait_for_ready(self, timeout: t.Optional[float] = None) -> None:
 """Waits for a response when a client is blocked

 - Sets future time for timeout
 - Blocks on shell channel until a message is received
 - Exit if the kernel has died
 - If client times out before receiving a message from the kernel, send RuntimeError
 - Flush the IOPub channel
 """
if timeout is None:
timeout = float("inf")
abs_timeout = time.time() + timeout

from .manager import KernelManager

if not isinstance(self.parent, KernelManager):
# This Client was not created by a KernelManager,
# so wait for kernel to become responsive to heartbeats
# before checking for kernel_info reply
while not await self._async_is_alive():
if time.time() > abs_timeout:
raise RuntimeError(
"Kernel didn't respond to heartbeats in %d seconds and timed out" % timeout
)
await asyncio.sleep(0.2)

# Wait for kernel info reply on shell channel
while True:
self.kernel_info()
try:
msg = await ensure_async(self.shell_channel.get_msg(timeout=1))
except Empty:
pass
else:
if msg["msg_type"] == "kernel_info_reply":
# Checking that IOPub is connected. If it is not connected, start over.
try:
await ensure_async(self.iopub_channel.get_msg(timeout=0.2))
except Empty:
pass
else:
self._handle_kernel_info_reply(msg)
break

if not await self._async_is_alive():
msg = "Kernel died before replying to kernel_info"
> raise RuntimeError(msg)
E RuntimeError: Kernel died before replying to kernel_info
/nix/store/m8i8li4hafiff2jl6d2g8r8i1myxqgdy-python3.12-jupyter-client-8.6.3/lib/python3.12/site-packages/jupyter_client/client.py:203: RuntimeError
----------------------------- Captured stderr call -----------------------------
Traceback (most recent call last):
File "<frozen runpy>", line 198, in _run_module_as_main
File "<frozen runpy>", line 88, in _run_code
File "/nix/store/pbz2lm69mrzxmdbxqvxp9x3j89a3r0z7-python3.12-ipykernel-6.29.5/lib/python3.12/site-packages/ipykernel_launcher.py", line 18, in <module>
app.launch_new_instance()
File "/nix/store/6hx5sfr1dr62nr2xc9szchclaqybi5v7-python3.12-traitlets-5.14.3/lib/python3.12/site-packages/traitlets/config/application.py", line 1074, in launch_instance
app.initialize(argv)
File "/nix/store/6hx5sfr1dr62nr2xc9szchclaqybi5v7-python3.12-traitlets-5.14.3/lib/python3.12/site-packages/traitlets/config/application.py", line 118, in inner
return method(app, *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/nix/store/pbz2lm69mrzxmdbxqvxp9x3j89a3r0z7-python3.12-ipykernel-6.29.5/lib/python3.12/site-packages/ipykernel/kernelapp.py", line 692, in initialize
self.init_sockets()
File "/nix/store/pbz2lm69mrzxmdbxqvxp9x3j89a3r0z7-python3.12-ipykernel-6.29.5/lib/python3.12/site-packages/ipykernel/kernelapp.py", line 345, in init_sockets
self.init_control(context)
File "/nix/store/pbz2lm69mrzxmdbxqvxp9x3j89a3r0z7-python3.12-ipykernel-6.29.5/lib/python3.12/site-packages/ipykernel/kernelapp.py", line 352, in init_control
self.control_port = self._bind_socket(self.control_socket, self.control_port)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/nix/store/pbz2lm69mrzxmdbxqvxp9x3j89a3r0z7-python3.12-ipykernel-6.29.5/lib/python3.12/site-packages/ipykernel/kernelapp.py", line 253, in _bind_socket
return self._try_bind_socket(s, port)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/nix/store/pbz2lm69mrzxmdbxqvxp9x3j89a3r0z7-python3.12-ipykernel-6.29.5/lib/python3.12/site-packages/ipykernel/kernelapp.py", line 229, in _try_bind_socket
s.bind("tcp://%s:%i" % (self.ip, port))
File "/nix/store/i0d9y5a5xpfph465fiwc67rh91n25z91-python3.12-pyzmq-26.2.0/lib/python3.12/site-packages/zmq/sugar/socket.py", line 311, in bind
super().bind(addr)
File "_zmq.py", line 917, in zmq.backend.cython._zmq.Socket.bind
File "_zmq.py", line 179, in zmq.backend.cython._zmq._check_rc
zmq.error.ZMQError: Address already in use (addr='tcp://127.0.0.1:39979')
------------------------------ Captured log call -------------------------------
ERROR traitlets:client.py:568 Error occurred while starting new kernel client for kernel adc4c111-bc12-4220-bdff-c96f9f926e52: Kernel died before replying to kernel_info
__________________________ test_when_init_then_passes __________________________
[gw26] linux -- Python 3.12.7 /nix/store/g1zx5x7mmclk2gmwkbd3f33cmc8a6hz2-python3-3.12.7/bin/python3.12
pytester = <Pytester PosixPath('/build/pytest-of-nixbld/pytest-0/popen-gw26/test_when_init_then_passes0')>
testdir2 = None
def test_when_init_then_passes(pytester: Pytester, testdir2: Never):
example_dir = Path(pytester.path) / "example"
example_dir.mkdir()
write_nb(passing_nb, example_dir / "a.ipynb")
(example_dir / "__init__.py").write_text("")

hook_recorder = pytester.inline_run("--nbmake")

> assert hook_recorder.ret == ExitCode.OK
E assert <ExitCode.TESTS_FAILED: 1> == <ExitCode.OK: 0>
E + where <ExitCode.TESTS_FAILED: 1> = <_pytest.pytester.HookRecorder object at 0x7ffff4503ce0>.ret
E + and <ExitCode.OK: 0> = ExitCode.OK
/build/source/tests/test_pytest_plugin.py:142: AssertionError
----------------------------- Captured stdout call -----------------------------
============================= test session starts ==============================
platform linux -- Python 3.12.7, pytest-8.3.3, pluggy-1.5.0
rootdir: /build/pytest-of-nixbld/pytest-0/popen-gw26/test_when_init_then_passes0
plugins: nbmake-1.5.3, xdist-3.6.1
collected 1 item
example/a.ipynb F [100%]
=================================== FAILURES ===================================
_ /build/pytest-of-nixbld/pytest-0/popen-gw26/test_when_init_then_passes0/example/a.ipynb _
NBMAKE INTERNAL ERROR
Kernel died before replying to kernel_info
File "/nix/store/h9vvz9bwrk2fqdhgijlhpvcgxbmf4rdw-python3.12-pytest-8.3.3/lib/python3.12/site-packages/_pytest/runner.py", line 341, in from_call
 result: TResult | None = func()
 ^^^^^^
File "/nix/store/h9vvz9bwrk2fqdhgijlhpvcgxbmf4rdw-python3.12-pytest-8.3.3/lib/python3.12/site-packages/_pytest/runner.py", line 242, in <lambda>
 lambda: runtest_hook(item=item, **kwds), when=when, reraise=reraise
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/nix/store/i21y6qanjlmnvyxpj9g2i664qrj81jgf-python3.12-pluggy-1.5.0/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
 return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/nix/store/i21y6qanjlmnvyxpj9g2i664qrj81jgf-python3.12-pluggy-1.5.0/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
 return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/nix/store/i21y6qanjlmnvyxpj9g2i664qrj81jgf-python3.12-pluggy-1.5.0/lib/python3.12/site-packages/pluggy/_manager.py", line 480, in traced_hookexec
 return outcome.get_result()
 ^^^^^^^^^^^^^^^^^^^^
File "/nix/store/i21y6qanjlmnvyxpj9g2i664qrj81jgf-python3.12-pluggy-1.5.0/lib/python3.12/site-packages/pluggy/_result.py", line 100, in get_result
 raise exc.with_traceback(exc.__traceback__)
File "/nix/store/i21y6qanjlmnvyxpj9g2i664qrj81jgf-python3.12-pluggy-1.5.0/lib/python3.12/site-packages/pluggy/_result.py", line 62, in from_call
 result = func()
 ^^^^^^
File "/nix/store/i21y6qanjlmnvyxpj9g2i664qrj81jgf-python3.12-pluggy-1.5.0/lib/python3.12/site-packages/pluggy/_manager.py", line 477, in <lambda>
 lambda: oldcall(hook_name, hook_impls, caller_kwargs, firstresult)
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/nix/store/i21y6qanjlmnvyxpj9g2i664qrj81jgf-python3.12-pluggy-1.5.0/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall
 raise exception.with_traceback(exception.__traceback__)
File "/nix/store/i21y6qanjlmnvyxpj9g2i664qrj81jgf-python3.12-pluggy-1.5.0/lib/python3.12/site-packages/pluggy/_callers.py", line 122, in _multicall
 teardown.throw(exception) # type: ignore[union-attr]
 ^^^^^^^^^^^^^^^^^^^^^^^^^
File "/nix/store/h9vvz9bwrk2fqdhgijlhpvcgxbmf4rdw-python3.12-pytest-8.3.3/lib/python3.12/site-packages/_pytest/threadexception.py", line 92, in pytest_runtest_call
 yield from thread_exception_runtest_hook()
File "/nix/store/h9vvz9bwrk2fqdhgijlhpvcgxbmf4rdw-python3.12-pytest-8.3.3/lib/python3.12/site-packages/_pytest/threadexception.py", line 68, in thread_exception_runtest_hook
 yield
File "/nix/store/i21y6qanjlmnvyxpj9g2i664qrj81jgf-python3.12-pluggy-1.5.0/lib/python3.12/site-packages/pluggy/_callers.py", line 122, in _multicall
 teardown.throw(exception) # type: ignore[union-attr]
 ^^^^^^^^^^^^^^^^^^^^^^^^^
File "/nix/store/h9vvz9bwrk2fqdhgijlhpvcgxbmf4rdw-python3.12-pytest-8.3.3/lib/python3.12/site-packages/_pytest/unraisableexception.py", line 95, in pytest_runtest_call
 yield from unraisable_exception_runtest_hook()
File "/nix/store/h9vvz9bwrk2fqdhgijlhpvcgxbmf4rdw-python3.12-pytest-8.3.3/lib/python3.12/site-packages/_pytest/unraisableexception.py", line 70, in unraisable_exception_runtest_hook
 yield
File "/nix/store/i21y6qanjlmnvyxpj9g2i664qrj81jgf-python3.12-pluggy-1.5.0/lib/python3.12/site-packages/pluggy/_callers.py", line 122, in _multicall
 teardown.throw(exception) # type: ignore[union-attr]
 ^^^^^^^^^^^^^^^^^^^^^^^^^
File "/nix/store/h9vvz9bwrk2fqdhgijlhpvcgxbmf4rdw-python3.12-pytest-8.3.3/lib/python3.12/site-packages/_pytest/logging.py", line 846, in pytest_runtest_call
 yield from self._runtest_for(item, "call")
File "/nix/store/h9vvz9bwrk2fqdhgijlhpvcgxbmf4rdw-python3.12-pytest-8.3.3/lib/python3.12/site-packages/_pytest/logging.py", line 829, in _runtest_for
 yield
File "/nix/store/i21y6qanjlmnvyxpj9g2i664qrj81jgf-python3.12-pluggy-1.5.0/lib/python3.12/site-packages/pluggy/_callers.py", line 122, in _multicall
 teardown.throw(exception) # type: ignore[union-attr]
 ^^^^^^^^^^^^^^^^^^^^^^^^^
File "/nix/store/h9vvz9bwrk2fqdhgijlhpvcgxbmf4rdw-python3.12-pytest-8.3.3/lib/python3.12/site-packages/_pytest/capture.py", line 880, in pytest_runtest_call
 return (yield)
 ^^^^^
File "/nix/store/i21y6qanjlmnvyxpj9g2i664qrj81jgf-python3.12-pluggy-1.5.0/lib/python3.12/site-packages/pluggy/_callers.py", line 122, in _multicall
 teardown.throw(exception) # type: ignore[union-attr]
 ^^^^^^^^^^^^^^^^^^^^^^^^^
File "/nix/store/h9vvz9bwrk2fqdhgijlhpvcgxbmf4rdw-python3.12-pytest-8.3.3/lib/python3.12/site-packages/_pytest/skipping.py", line 257, in pytest_runtest_call
 return (yield)
 ^^^^^
File "/nix/store/i21y6qanjlmnvyxpj9g2i664qrj81jgf-python3.12-pluggy-1.5.0/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
 res = hook_impl.function(*args)
 ^^^^^^^^^^^^^^^^^^^^^^^^^
File "/nix/store/h9vvz9bwrk2fqdhgijlhpvcgxbmf4rdw-python3.12-pytest-8.3.3/lib/python3.12/site-packages/_pytest/runner.py", line 174, in pytest_runtest_call
 item.runtest()
File "/nix/store/713mi47qwskg4pci7bxpn3w6ssh3r4nh-python3.12-nbmake-1.5.4/lib/python3.12/site-packages/nbmake/pytest_items.py", line 54, in runtest
 res: NotebookResult = run.execute()
 ^^^^^^^^^^^^^
File "/nix/store/713mi47qwskg4pci7bxpn3w6ssh3r4nh-python3.12-nbmake-1.5.4/lib/python3.12/site-packages/nbmake/nb_run.py", line 131, in execute
 raise err
File "/nix/store/713mi47qwskg4pci7bxpn3w6ssh3r4nh-python3.12-nbmake-1.5.4/lib/python3.12/site-packages/nbmake/nb_run.py", line 113, in execute
 c.execute(cwd=self.filename.parent)
File "/nix/store/9crcl5py932s5gb34pzrwa93vcsyjw89-python3.12-jupyter-core-5.7.2/lib/python3.12/site-packages/jupyter_core/utils/__init__.py", line 165, in wrapped
 return loop.run_until_complete(inner)
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/nix/store/g1zx5x7mmclk2gmwkbd3f33cmc8a6hz2-python3-3.12.7/lib/python3.12/asyncio/base_events.py", line 687, in run_until_complete
 return future.result()
 ^^^^^^^^^^^^^^^
File "/nix/store/csshh1zi4824ap1rc0zhrw4rd5g77zmm-python3.12-nbclient-0.10.0/lib/python3.12/site-packages/nbclient/client.py", line 693, in async_execute
 async with self.async_setup_kernel(**kwargs):
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/nix/store/g1zx5x7mmclk2gmwkbd3f33cmc8a6hz2-python3-3.12.7/lib/python3.12/contextlib.py", line 210, in __aenter__
 return await anext(self.gen)
 ^^^^^^^^^^^^^^^^^^^^^
File "/nix/store/csshh1zi4824ap1rc0zhrw4rd5g77zmm-python3.12-nbclient-0.10.0/lib/python3.12/site-packages/nbclient/client.py", line 651, in async_setup_kernel
 await self.async_start_new_kernel_client()
File "/nix/store/csshh1zi4824ap1rc0zhrw4rd5g77zmm-python3.12-nbclient-0.10.0/lib/python3.12/site-packages/nbclient/client.py", line 566, in async_start_new_kernel_client
 await ensure_async(self.kc.wait_for_ready(timeout=self.startup_timeout))
File "/nix/store/9crcl5py932s5gb34pzrwa93vcsyjw89-python3.12-jupyter-core-5.7.2/lib/python3.12/site-packages/jupyter_core/utils/__init__.py", line 198, in ensure_async
 result = await obj
 ^^^^^^^^^
File "/nix/store/m8i8li4hafiff2jl6d2g8r8i1myxqgdy-python3.12-jupyter-client-8.6.3/lib/python3.12/site-packages/jupyter_client/client.py", line 203, in _async_wait_for_ready
 raise RuntimeError(msg)
----------------------------- Captured stderr call -----------------------------
Traceback (most recent call last):
File "<frozen runpy>", line 198, in _run_module_as_main
File "<frozen runpy>", line 88, in _run_code
File "/nix/store/pbz2lm69mrzxmdbxqvxp9x3j89a3r0z7-python3.12-ipykernel-6.29.5/lib/python3.12/site-packages/ipykernel_launcher.py", line 18, in <module>
app.launch_new_instance()
File "/nix/store/6hx5sfr1dr62nr2xc9szchclaqybi5v7-python3.12-traitlets-5.14.3/lib/python3.12/site-packages/traitlets/config/application.py", line 1074, in launch_instance
app.initialize(argv)
File "/nix/store/6hx5sfr1dr62nr2xc9szchclaqybi5v7-python3.12-traitlets-5.14.3/lib/python3.12/site-packages/traitlets/config/application.py", line 118, in inner
return method(app, *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/nix/store/pbz2lm69mrzxmdbxqvxp9x3j89a3r0z7-python3.12-ipykernel-6.29.5/lib/python3.12/site-packages/ipykernel/kernelapp.py", line 692, in initialize
self.init_sockets()
File "/nix/store/pbz2lm69mrzxmdbxqvxp9x3j89a3r0z7-python3.12-ipykernel-6.29.5/lib/python3.12/site-packages/ipykernel/kernelapp.py", line 331, in init_sockets
self.shell_port = self._bind_socket(self.shell_socket, self.shell_port)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/nix/store/pbz2lm69mrzxmdbxqvxp9x3j89a3r0z7-python3.12-ipykernel-6.29.5/lib/python3.12/site-packages/ipykernel/kernelapp.py", line 253, in _bind_socket
return self._try_bind_socket(s, port)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/nix/store/pbz2lm69mrzxmdbxqvxp9x3j89a3r0z7-python3.12-ipykernel-6.29.5/lib/python3.12/site-packages/ipykernel/kernelapp.py", line 229, in _try_bind_socket
s.bind("tcp://%s:%i" % (self.ip, port))
File "/nix/store/i0d9y5a5xpfph465fiwc67rh91n25z91-python3.12-pyzmq-26.2.0/lib/python3.12/site-packages/zmq/sugar/socket.py", line 311, in bind
super().bind(addr)
File "_zmq.py", line 917, in zmq.backend.cython._zmq.Socket.bind
File "_zmq.py", line 179, in zmq.backend.cython._zmq._check_rc
zmq.error.ZMQError: Address already in use (addr='tcp://127.0.0.1:35623')
------------------------------ Captured log call -------------------------------
ERROR traitlets:client.py:568 Error occurred while starting new kernel client for kernel 457109ab-6880-44dc-a944-00a0c8989d76: Kernel died before replying to kernel_info
Learn more about nbmake at https://github.com/treebeardtech/nbmake
=========================== short test summary info ============================
FAILED example/a.ipynb:: - NBMAKE INTERNAL ERROR
============================== 1 failed in 9.21s ===============================
------------------------------ Captured log call -------------------------------
ERROR traitlets:client.py:568 Error occurred while starting new kernel client for kernel 457109ab-6880-44dc-a944-00a0c8989d76: Kernel died before replying to kernel_info
=========================== short test summary info ============================
FAILED tests/test_nb_run.py::TestNotebookRun::test_when_empty_then_succeeds - RuntimeError: Kernel died before replying to kernel_info
FAILED tests/test_pytest_plugin.py::test_when_init_then_passes - assert <ExitCode.TESTS_FAILED: 1> == <ExitCode.OK: 0>
======================== 2 failed, 31 passed in 47.07s =========================
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment