Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: jupyter/jupyter_client
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: v8.7.0
Choose a base ref
...
head repository: jupyter/jupyter_client
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: main
Choose a head ref
  • 11 commits
  • 14 files changed
  • 8 contributors

Commits on Dec 9, 2025

  1. Configuration menu
    Copy the full SHA
    9873af1 View commit details
    Browse the repository at this point in the history
  2. Back to dev: 8.7.1.dev0

    rgbkrk committed Dec 9, 2025
    Configuration menu
    Copy the full SHA
    275ffac View commit details
    Browse the repository at this point in the history
  3. Skip mypy on PyPy to avoid librt compilation issues (#1086)

    * Skip mypy on PyPy to avoid librt compilation issues
    
    mypy's mypyc-compiled dependencies (librt) use CPython internal
    structures that don't exist in PyPy, causing compilation failures.
    
    Fixes test environment installation on PyPy.
    
    * Fix CI: unset HATCH_ENV for check_release, use direct version-cmd
    
    Two issues:
    1. Global HATCH_ENV=cov caused 'hatch version' to fail with
       'Environment cov is not a builder environment' in check_release
    
    2. Added explicit version-cmd to .jupyter-releaser.toml for robustness
    
    * Remove version-cmd, use default hatch version
    
    version-cmd is for bumping, not reading. With HATCH_ENV unset,
    hatch version works correctly for both reading and bumping.
    rgbkrk authored Dec 9, 2025
    Configuration menu
    Copy the full SHA
    5ef6038 View commit details
    Browse the repository at this point in the history
  4. Fix downstream workflow (#1087)

    * Remove papermill from downstreams_check needs
    
    The papermill job was removed but the reference in needs was not updated.
    
    * Bump qtconsole downstream test to Python 3.10
    
    jupyter_client now requires Python >= 3.10
    
    * Fix jupyter_kernel_test: use Miniforge, set Python 3.10
    
    - Remove undefined matrix.python-version reference
    - Switch from deprecated Mambaforge to miniforge-version: latest
    - Explicitly set Python 3.10 (jupyter_client requires >= 3.10)
    
    * Skip flaky nbclient test with execution_count mismatch
    
    The test_run_all_notebooks[update-display-id.ipynb-opts14] test has
    a hardcoded execution_count expectation that doesn't match actual
    kernel behavior. This is an nbclient test issue, not jupyter_client.
    
    * Skip flaky qtconsole test_scroll[False] test
    
    Times out waiting for shell prompt in CI, even with @flaky(max_runs=3).
    
    * Remove qtconsole from required downstream checks
    
    qtconsole tests are too flaky in CI - GUI + async kernel communication
    causes frequent timeouts. The job still runs for visibility but won't
    block the workflow.
    rgbkrk authored Dec 9, 2025
    Configuration menu
    Copy the full SHA
    49a4376 View commit details
    Browse the repository at this point in the history

Commits on Dec 10, 2025

  1. Fix channel cleanup by closing streams before stopping ioloop thread (#…

    …1089)
    
    * Fix channel cleanup by closing streams before stopping ioloop thread
    
    The change in PR #1076 added 'finally: loop.close()' to IOLoopThread.run(),
    which closes the asyncio event loop before ZMQ streams have been properly
    unregistered. This caused errors during teardown when downstream projects
    like qtconsole tried to check if channels were closed.
    
    The fix ensures that channel streams are explicitly closed (via close())
    while the ioloop is still running, before calling stop_channels() on the
    parent class and stopping the ioloop thread. This allows the ZMQ streams
    to be properly unregistered from the event loop before it's closed.
    
    * Fix _exiting to be instance variable, not shared class variable
    
    The _exiting flag was defined as a class variable, meaning when one
    IOLoopThread called stop() and set _exiting = True, it affected ALL
    IOLoopThread instances. This caused subsequent kernels to fail to start
    because _async_run() would immediately exit.
    
    By initializing self._exiting = False in __init__, each IOLoopThread
    instance now has its own exit flag. The class-level _exiting is still
    used by _notice_exit() for interpreter shutdown cleanup.
    rgbkrk authored Dec 10, 2025
    Configuration menu
    Copy the full SHA
    cd14b0e View commit details
    Browse the repository at this point in the history
  2. Re-enable qtconsole in downstream checks (#1090)

    PR #1089 fixed the channel cleanup and _exiting instance variable issues
    that were causing qtconsole test failures. Re-add qtconsole to the required
    downstream checks and remove the test_scroll[False] deselect.
    rgbkrk authored Dec 10, 2025
    Configuration menu
    Copy the full SHA
    b32dcce View commit details
    Browse the repository at this point in the history
  3. Path resolution by kernel manager and providers (#1005)

    * Path resolution by kernel manager and providers
    
    * [pre-commit.ci] auto fixes from pre-commit.com hooks
    
    for more information, see https://pre-commit.ci
    
    * Cleanup
    
    * Do not resolve for non-existent files
    
    * Fix spurious `async`
    
    * [pre-commit.ci] auto fixes from pre-commit.com hooks
    
    for more information, see https://pre-commit.ci
    
    * Update resolve_path return type to str | None
    
    ---------
    
    Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
    krassowski and pre-commit-ci[bot] authored Dec 10, 2025
    Configuration menu
    Copy the full SHA
    a53ade9 View commit details
    Browse the repository at this point in the history
  4. Fix flaky client tests by waiting for first request's reply (#1091)

    * Fix flaky client tests by waiting for first request's reply
    
    The tests were sending two requests back-to-back:
    1. First call without reply=True (to check msg_id is returned)
    2. Second call with reply=True (to check reply content)
    
    This caused flakiness because the reply for the first request would
    sit in the channel, and _async_recv_reply would receive it but skip
    it since msg_ids didn't match. On slow systems (like MacOS CI), the
    second reply might not arrive before timeout.
    
    Fix by using _recv_reply() / _async_recv_reply() to wait for the
    first request's reply instead of sending a second request.
    
    * Fix flaky client tests and handle flush race condition
    
    Two fixes:
    
    1. Fix flaky client tests by draining first reply before testing reply=True
    
       The tests send two requests back-to-back:
       - First call without reply=True (to check msg_id is returned)
       - Second call with reply=True (to check reply content)
    
       This caused flakiness because the reply for the first request would
       sit in the channel, and _async_recv_reply would skip it since msg_ids
       didn't match. On slow systems (like MacOS CI), the second reply might
       not arrive before timeout.
    
       Fix by draining the first reply before sending the second request.
       This still tests both paths: returning msg_id and the reply=True
       convenience functionality.
    
    2. Handle stream closed between flush scheduling and execution
    
       The _flush() callback runs on the ioloop thread after being scheduled
       by flush(). Between scheduling and execution, the stream may be closed
       by stop_channels() during teardown.
    
       This is an expected race condition during shutdown, not a programming
       error, so we handle it gracefully rather than asserting.
    
       Uncovered by qtconsole downstream tests after #1089.
    rgbkrk authored Dec 10, 2025
    Configuration menu
    Copy the full SHA
    0bce36f View commit details
    Browse the repository at this point in the history

Commits on Dec 12, 2025

  1. Faster message serialization (#1064)

    * Add orjson_packer and orjson_unpacker to speed up serialization of session messages.
    
    * Refactor orjson packer to use functools.partial.
    
    * Add msgpack support for message serialization in Session
    
    * Refactor packer/unpacker change handling for improved readability
    
    * Fix test_serialize_objects datetime checks on ci to compare using datetime format.
    
    * Fix datetime deserialization in test_serialize_objects to use dateutil.parser.isoparse
    
    * Add PicklingError to exception handling in test_cannot_serialize
    
    * Update api docs
    
    * Replace dateutil.parser.isoparse with jsonutil.parse_date in test_serialize_objects for datetime validation
    
    * Use rep in fstring
    
    Co-authored-by: M Bussonnier <bussonniermatthias@gmail.com>
    
    * Add msgpack as a test dependency.
    
    * Fallback to json_packer and json_unpacker for orjson to handle for better resilience.
    
    * Fix: test_args checking for removed _default_pack_unpack and _default_pack_unpack.
    
    * Add type annotation to orjson_packer.
    
    * Add the other missing type annoatation.
    
    * Change orjson from a dependency to an optional dependency. Test against the minimum version in CI.
    
    * Double timeout for test_minimum_verisons
    
    * Fix invalid argument name.
    
    * Add orjson and msgpack as additional_dependencies for mypy in .pre-commit-config.yaml.
    
    * Remove # type:ignore[import-not-found].
    
    * Should return result of orjson.loads.
    
    * fix: get mypy working with orjson/msgpack
    
    Signed-off-by: Henry Schreiner <henryfs@princeton.edu>
    
    * [pre-commit.ci] auto fixes from pre-commit.com hooks
    
    for more information, see https://pre-commit.ci
    
    * Fix for previous refactor.
    
    ---------
    
    Signed-off-by: Henry Schreiner <henryfs@princeton.edu>
    Co-authored-by: M Bussonnier <bussonniermatthias@gmail.com>
    Co-authored-by: Alan <>
    Co-authored-by: Henry Schreiner <henryfs@princeton.edu>
    Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
    4 people authored Dec 12, 2025
    Configuration menu
    Copy the full SHA
    ee43cd3 View commit details
    Browse the repository at this point in the history

Commits on Dec 17, 2025

  1. chore: update some parts of the pre-commit (#1093)

    Signed-off-by: Henry Schreiner <henryfs@princeton.edu>
    henryiii authored Dec 17, 2025
    Configuration menu
    Copy the full SHA
    9589ed8 View commit details
    Browse the repository at this point in the history

Commits on Dec 18, 2025

  1. Update messaging spec (#1095)

    * Added missing info aobut Debug Adapter Protocol
    
    * Added XPUB related changes to the kernel message specification
    
    * Added support for kernel_info messages to the Control channel in the kernel message specification
    
    * Specified that the debugger is an optional feature
    
    * Specified that copyToGlobals debug request is optional
    
    * linter
    
    * Update docs/messaging.rst
    
    Co-authored-by: Min RK <benjaminrk@gmail.com>
    
    * Fixed linter
    
    ---------
    
    Co-authored-by: Min RK <benjaminrk@gmail.com>
    JohanMabille and minrk authored Dec 18, 2025
    Configuration menu
    Copy the full SHA
    7c3a325 View commit details
    Browse the repository at this point in the history
Loading