- Added kernel_protocol_version to kernelspec #1483 (@JohanMabille, @ianthomas23)
- Replaced PUB socket with XPUB socket #1482 (@JohanMabille, @SylvainCorlay, @ccordoba12, @ianthomas23, @minrk)
- Made IOPubThread constructor backward compatible #1492 (@JohanMabille, @SylvainCorlay, @ianthomas23, @minrk)
- Advertises kernel protocol 5.5 #1488 (@JohanMabille, @ianthomas23)
- Upgrade to jupyter_client 8.8.0 #1487 (@JohanMabille, @ianthomas23)
- Implement kernel-side callstack filtering for internal frames #1481 (@arjxn-py, @JohanMabille, @ianthomas23)
- add close event for wx timer app in loop_wx #1478 (@newville, @ianthomas23)
- Temporarily revert "Test changing base method to async after (#1464)" #1493 (@ianthomas23, @JohanMabille)
- Update pytest requirement from <9,>=7.0 to >=7.0,<10 in the actions group across 1 directory #1489 (@JohanMabille)
- Removed spyder downstream tests #1486 (@JohanMabille, @ianthomas23)
- Bump scientific-python/upload-nightly-action from 0.6.2 to 0.6.3 in the actions group #1484 (@JohanMabille)
- Fix linting errors #1480 (@ianthomas23)
- Bump actions/checkout from 5 to 6 in the actions group #1479 (@ianthomas23)
- chore: update pre-commit hooks #1472 (@ianthomas23)
- chore: update pre-commit hooks #1467 (@JohanMabille)
- Test changing base method to async after #1295 #1464 (@Carreau, @ianthomas23)
The following people contributed discussions, new ideas, code and documentation contributions, and review. See our definition of contributors.
(GitHub contributors page for this release)
@arjxn-py (activity) | @Carreau (activity) | @ccordoba12 (activity) | @ianthomas23 (activity) | @JohanMabille (activity) | @minrk (activity) | @newville (activity) | @SylvainCorlay (activity)
- Added kernel_protocol_version to kernelspec #1483 (@JohanMabille, @ianthomas23)
- Made IOPubThread constructor backward compatible #1492 (@JohanMabille, @SylvainCorlay, @ianthomas23)
- Advertises kernel protocol 5.5 #1488 (@JohanMabille, @ianthomas23)
- Upgrade to jupyter_client 8.8.0 #1487 (@JohanMabille, @ianthomas23)
- Update pytest requirement from <9,>=7.0 to >=7.0,<10 in the actions group across 1 directory #1489 (@JohanMabille)
The following people contributed discussions, new ideas, code and documentation contributions, and review. See our definition of contributors.
(GitHub contributors page for this release)
@ianthomas23 (activity) | @JohanMabille (activity) | @SylvainCorlay (activity)
- Replaced PUB socket with XPUB socket #1482 (@JohanMabille, @SylvainCorlay)
- Implement kernel-side callstack filtering for internal frames #1481 (@arjxn-py, @JohanMabille)
- add close event for wx timer app in loop_wx #1478 (@newville, @ianthomas23)
- Removed spyder downstream tests #1486 (@JohanMabille, @ianthomas23)
- Bump scientific-python/upload-nightly-action from 0.6.2 to 0.6.3 in the actions group #1484 (@JohanMabille)
- Fix linting errors #1480 (@ianthomas23)
- Bump actions/checkout from 5 to 6 in the actions group #1479 (@ianthomas23)
- chore: update pre-commit hooks #1467 (@JohanMabille)
- Test changing base method to async after #1295 #1464 (@Carreau, @ianthomas23)
The following people contributed discussions, new ideas, code and documentation contributions, and review. See our definition of contributors.
(GitHub contributors page for this release)
@arjxn-py (activity) | @Carreau (activity) | @ianthomas23 (activity) | @JohanMabille (activity) | @newville (activity) | @SylvainCorlay (activity)
IPykernel 7.1.0 fixes an issue where display outputs such as Matplotlib plots were not included when using %notebook magic to save sessions as .ipynb files (#1435). This is enabled using the traitlet ZMQDisplayPublisher.store_display_history which defaults to the previous behaviour of False. This is a minor release rather than a patch release due to the addition of the new traitlet.
Output from threads is restored to the pre-6.29 behavior by default (route to latest cell, unless get_ipython().set_parent() is called explicitly from the thread. If it is called, output from that thread will continue to be routed to the same cell). This behavior is now opt-in, instead of unconditional (#1451).
This release also fixes bugs that were introduced into the 7.x branch relating to Matplotlib plots in separate windows not being displayed correctly (#1458), kernels launched in new threads failing asserts (#1455), and ContextVars persisting between cells (#1462). There is also a fix for keyboard interrupts on Windows (#1434).
- Store display outputs in history for
%notebookmagic #1435 (@Darshan808)
- fix ContextVar persistence across cells #1462 (@minrk)
- Fix matplotlib eventloops #1458 (@ianthomas23)
- Refer to kernel launching thread instead of assuming the main thread #1455 (@dfalbel)
- Fix routing of background thread output when no parent is set explicitly #1451 (@minrk)
- Fix KeyboardInterrupt on Windows by manually resetting interrupt event #1434 (@ptosco)
- update pre-commit and related #1465 (@Carreau)
- test that matplotlib event loop integration is responsive #1463 (@minrk)
- update tests for 3.14 #1453 (@minrk)
(GitHub contributors page for this release)
@Carreau | @Darshan808 | @dfalbel | @ianthomas23 | @krassowski | @lumberbot-app | @minrk | @ptosco
IPykernel 7.0.1 is a bug fix release to support CPython 3.14.
- Avoid overriding Thread._context in Python 3.14 #1447 (@ianthomas23)
- Clean up changelog following 7.0.0 release #1439 (@ianthomas23)
(GitHub contributors page for this release)
@bollwyvl | @Carreau | @cclauss | @ianthomas23
IPykernel 7.0.0 is a major release containing experimental support for kernel subshells.
If not using subshells it is intended to be backward compatible with the 6.x branch, but there are some architectural changes which may break assumptions made in downstream libraries and hence this is identified as a major releases as it is potentially backwards incompatible. If you experience problems then please report them, and you can pin ipykernel < 7 if necessary.
For further information and to report problems please see ipykernel 7.0.0 release with subshells (issue 1438).
- Use asyncio.Lock around subshell message handling #1430 (@ianthomas23)
- Subshells implemented using tornado event loops on 6.x branch #1396 (@ianthomas23)
- Forward port from 6.x: Correct use of asyncio.Lock to process a single control message at a time #1418 (@ianthomas23)
- Cache separate headers on subshell threads #1414 (@ianthomas23)
- Drop support for Python 3.9 #1431 (@ianthomas23)
- Bump the actions group across 1 directory with 2 updates #1428 (@dependabot)
- Continue to support
Kernel._parent_identfor backward compatibility #1427 (@ianthomas23) - Reinstate ipyparallel downstream tests #1426 (@ianthomas23)
- Reinstate jupyter_client downstream tests with exclusions #1425 (@ianthomas23)
- Tests: Add robust tests for silent flag in subshells #1424 (@pankaj-bind)
- Use correct
__version__onmainbranch after branch manipulations #1419 (@ianthomas23) - Remove links in changelog to github milestones that no longer exist #1415 (@ianthomas23)
- Replace
@flaky.flakydecorate with pytest fixture #1411 (@mgorny) - chore: update pre-commit hooks #1409 (@pre-commit-ci)
- Bump scientific-python/upload-nightly-action from 0.6.1 to 0.6.2 in the actions group #1404 (@dependabot)
- Backports from
anyio(oldmain) branch tomainbranch #1402 (@ianthomas23) - Update pre-commit and github actions #1401 (@ianthomas23)
- Test more python versions on 6.x branch #1398 (@davidbrochart)
- Forward port of 6.x changelog to main branch #1429 (@ianthomas23)
- Add subshell docstrings #1405 (@ianthomas23)
(GitHub contributors page for this release)
@Carreau | @ccordoba12 | @davidbrochart | @dependabot | @fleming79 | @ianthomas23 | @krassowski | @mgorny | @minrk | @pankaj-bind | @pre-commit-ci
This is a bugfix release to fix a significant bug introduced in 6.30.0 that allowed control messages to be handled concurrently rather than sequentially which broke debugging in JupyterLab and VSCode.
- Correct use of asyncio.Lock to process a single control message at a time #1416 (@ianthomas23)
- Backport: Remove links in changelog to github milestones that no longer exist #1417 (@ianthomas23)
(GitHub contributors page for this release)
This release fixes three bugs but is primarily a maintenance release bringing support for Python 3.13 and updating dependencies. It does not include subshells which will be in the upcoming 7.0.0 release. Users and downstream libraries that wish to avoid subshells should pin to ipykernel < 7.
- Remove control queue #1210 (@ianthomas23)
- Set shell idle when message skipped by "should_handle" in "dispatch_shell" #1395 (@dby-tmwctw)
- Fixed error accessing sys.stdout/sys.stderr when those are None #1247 (@gregory-shklover)
- Allow datetime or str in test_sequential_control_messages #1219 (@ianthomas23)
- 6.x backports #1406 (@ianthomas23)
- Update pre-commit and github actions #1401 (@ianthomas23)
- Test more python versions on 6.x branch #1398 (@davidbrochart)
- Backports and extra changes to fix CI on 6.x branch #1390 (@ianthomas23)
- Remove nose import. #1368 (@Carreau)
- Test more python versions #1358 (@davidbrochart)
- Fix expected text depending on IPython version. #1354 (@Carreau)
- Licence :: * trove classifiers are deprecated #1348 (@Carreau)
- Try to fix spyder kernel install #1337 (@Carreau)
- Remove test_check job #1335 (@Carreau)
- Don't rerun test with --lf it hides failures. #1324 (@Carreau)
- Remove link to numfocus for funding. #1320 (@Carreau)
- Remove downstream_check #1318 (@Carreau)
- Copy payloadpage.page from IPython #1317 (@Carreau)
- Remove base setup #1299 (@davidbrochart)
- Rely on intrsphinx_registry to keep intersphinx up to date. #1290 (@Carreau)
- Drop support for Python 3.8 #1284 (@ianthomas23)
- Start testing on 3.13 #1277 (@Carreau)
- Build docs on ubuntu #1257 (@blink1073)
- Avoid a DeprecationWarning on Python 3.13+ #1248 (@hroncok)
- Catch IPython 8.24 DeprecationWarnings #1242 (@s-t-e-v-e-n-k)
- Add compat with pytest 8 #1231 (@blink1073)
- Set all min deps #1229 (@blink1073)
(GitHub contributors page for this release)
@Carreau | @ccordoba12 | @davidbrochart | @dby-tmwctw | @gregory-shklover | @ianthomas23 | @ivanov | @jasongrout | @krassowski | @meeseeksmachine | @minrk | @nathanmcavoy | @s-t-e-v-e-n-k
- Fix use of "%matplotlib osx" #1237 (@ianthomas23)
- [6.x] Update Release Scripts #1251 (@blink1073)
(GitHub contributors page for this release)
- Fix side effect import for pickleutil #1216 (@blink1073)
- Do not import debugger/debugpy unless needed #1223 (@krassowski)
(GitHub contributors page for this release)
@agronholm | @blink1073 | @davidbrochart | @krassowski | @minrk
- Eventloop scheduling improvements for stop_on_error_timeout and schedule_next #1212 (@jdranczewski)
- Disable frozen modules by default, add a toggle #1213 (@krassowski)
- Fix typings and update project urls #1214 (@blink1073)
- Unpin pytest-asyncio and update ruff config #1209 (@blink1073)
(GitHub contributors page for this release)
@blink1073 | @ccordoba12 | @jdranczewski | @joouha | @krassowski
- Re-enable skipped debugger test #1207 (@ianthomas23)
(GitHub contributors page for this release)
- fix: on exception, return a 0, so that the "sum" still computes #1204 (@petervandenabeele)
- Fix handling of "silent" in execute request #1200 (@Haadem)
- chore: update pre-commit hooks #1205 (@pre-commit-ci)
- Do git ignore of /node_modules/.cache #1203 (@petervandenabeele)
- Bump the actions group with 1 update #1201 (@dependabot)
(GitHub contributors page for this release)
@dependabot | @Haadem | @petervandenabeele | @pre-commit-ci
- Always set debugger to true in kernelspec #1191 (@ianthomas23)
- Revert "Enable
ProactorEventLoopon windows foripykernel" #1194 (@blink1073) - Make outputs go to correct cell when generated in threads/asyncio #1186 (@krassowski)
- Pin pytest-asyncio to 0.23.2 #1189 (@ianthomas23)
- chore: update pre-commit hooks #1187 (@pre-commit-ci)
(GitHub contributors page for this release)
@blink1073 | @ianthomas23 | @krassowski | @pre-commit-ci
- Enable
ProactorEventLoopon windows foripykernel#1184 (@NewUserHa) - Adds a flag in debug_info for the copyToGlobals support #1099 (@brichet)
- Support python 3.12 #1185 (@blink1073)
- Bump actions/setup-python from 4 to 5 #1181 (@dependabot)
- chore: update pre-commit hooks #1179 (@pre-commit-ci)
- Refactor execute_request to reduce redundancy and improve consistency #1177 (@jjvraw)
- Update pytest commands in README #1178 (@ianthomas23)
(GitHub contributors page for this release)
@blink1073 | @brichet | @dependabot | @ianthomas23 | @jjvraw | @NewUserHa | @pre-commit-ci
- Fix edit magic payload type #1171 (@blink1073)
(GitHub contributors page for this release)
- Update ruff and typings #1167 (@blink1073)
- Clean up ruff config #1165 (@blink1073)
- chore: update pre-commit hooks #1164 (@pre-commit-ci)
- Clean up typing config #1163 (@blink1073)
- Update typing for traitlets 5.13 #1162 (@blink1073)
- Adopt ruff format #1161 (@blink1073)
- Update typing for jupyter_client 8.5 #1160 (@blink1073)
(GitHub contributors page for this release)
@blink1073 | @jjvraw | @pre-commit-ci
- Update lint deps and add more typing #1156 (@blink1073)
- Update typing for traitlets 5.11 #1154 (@blink1073)
- chore: update pre-commit hooks #1153 (@pre-commit-ci)
- Update IPython Typing Usage #1152 (@blink1073)
- Update typing #1150 (@blink1073)
- Use sp-repo-review #1146 (@blink1073)
- Bump actions/checkout from 3 to 4 #1144 (@dependabot)
(GitHub contributors page for this release)
@blink1073 | @dependabot | @pre-commit-ci
- Make iostream shutdown more robust #1143 (@blink1073)
- Don't call QApplication.setQuitOnLastWindowClosed(False). #1142 (@anntzer)
- Avoid starting IOPub background thread after it's been stopped #1137 (@minrk)
(GitHub contributors page for this release)
@anntzer | @blink1073 | @ccordoba12 | @minrk
- Modifying debugger to return the same breakpoints in 'debugInfo' response as 'setBreakpoints' #1140 (@vaishnavi17)
(GitHub contributors page for this release)
- feat: let display hook handle clear_output #1135 (@maartenbreddels)
- Merge connection info into existing connection file if it already exists #1133 (@jasongrout)
- Clean up lint #1134 (@blink1073)
(GitHub contributors page for this release)
@blink1073 | @fecet | @jasongrout | @maartenbreddels | @pre-commit-ci
- Let get_parent decide the channel to get parent header #1128 (@dby-tmwctw)
(GitHub contributors page for this release)
@arieleiz | @dby-tmwctw | @minrk
(GitHub contributors page for this release)
- Avoid ResourceWarning on implicitly closed event pipe sockets #1125 (@minrk)
- fix: protect stdout/stderr restoration in
InProcessKernel._redirected_io#1122 (@charles-cooper)
(GitHub contributors page for this release)
@charles-cooper | @minrk | @pre-commit-ci
(GitHub contributors page for this release)
- Support control<>iopub messages to e.g. unblock comm_msg from command execution #1114 (@tkrabel-db)
- Add outstream hook similar to display publisher #1110 (@maartenbreddels)
- Use local coverage #1109 (@blink1073)
(GitHub contributors page for this release)
@blink1073 | @maartenbreddels | @pre-commit-ci | @tkrabel-db
- Deprecate Comm class + Fix incompatibility with ipywidgets #1097 (@martinRenou)
(GitHub contributors page for this release)
- Fix interrupt reply #1101 (@garlandz-db)
- Update docs link #1103 (@blink1073)
- Add license #1098 (@dcsaba89)
(GitHub contributors page for this release)
@blink1073 | @ccordoba12 | @dcsaba89 | @garlandz-db | @mlucool
- Remove test_enter_eventloop #1084 (@davidbrochart)
(GitHub contributors page for this release)
@blink1073 | @Carreau | @davidbrochart | @pre-commit-ci
- Restore nest-asyncio for tk loop #1086 (@blink1073)
(GitHub contributors page for this release)
- Expose session start file in
__file__. #1078 (@Carreau) - Add copy_to_globals debug request handling #1055 (@brichet)
- Adopt more lint rules #1082 (@blink1073)
- Maintenance updates #1081 (@blink1073)
- Test spyder kernels #1080 (@blink1073)
(GitHub contributors page for this release)
@agronholm | @blink1073 | @brichet | @Carreau | @ccordoba12 | @minrk
(GitHub contributors page for this release)
- Don't raise error when trying to create another Qt app for Qt eventloop #1071 (@ccordoba12)
- Update CI #1073 (@blink1073)
- Fix types and sync lint deps #1070 (@blink1073)
- Add api docs #1067 (@blink1073)
(GitHub contributors page for this release)
@blink1073 | @ccordoba12 | @pre-commit-ci
- ENH: add
%guisupport for Qt6 #1054 (@shaperilio)
- Add more ci checks #1063 (@blink1073)
(GitHub contributors page for this release)
(GitHub contributors page for this release)
- format dates as ISO8601 #1057 (@GRcharles)
- Fix comms and add qtconsole downstream test #1056 (@blink1073)
- Fix lint #1058 (@blink1073)
- Fix comms and add qtconsole downstream test #1056 (@blink1073)
(GitHub contributors page for this release)
@blink1073 | @GRcharles | @maartenbreddels
- Fix error in
%editmagic #1053 (@ccordoba12)
(GitHub contributors page for this release)
- fix: too many arguments dropped when passing to base comm constructor #1051 (@maartenbreddels)
(GitHub contributors page for this release)
- Fix: there can be only one comm_manager #1049 (@maartenbreddels)
- Adopt ruff and address lint #1046 (@blink1073)
(GitHub contributors page for this release)
@blink1073 | @maartenbreddels | @pre-commit-ci
- Fix Comm interface for downstream users #1042 (@maartenbreddels)
(GitHub contributors page for this release)
(GitHub contributors page for this release)
@blink1073 | @Carreau | @fperez | @pre-commit-ci
- fix: use comm package in backwards compatible way #1028 (@maartenbreddels)
- Add more testing and deprecate the Gtk event loops #1036 (@blink1073)
- More coverage improvements #1035 (@blink1073)
- Add more tests #1034 (@blink1073)
- Add more kernel tests #1032 (@blink1073)
- Add more coverage and add Readme badges #1031 (@blink1073)
- Clean up testing and coverage #1030 (@blink1073)
- Use base setup dependency type #1029 (@blink1073)
(GitHub contributors page for this release)
@blink1073 | @maartenbreddels | @martinRenou | @pre-commit-ci
- Add terminal color support #1025 (@blink1073)
- Extract the Comm Python package #973 (@martinRenou)
- Add windows coverage and clean up workflows #1023 (@blink1073)
- Increase coverage #1021 (@blink1073)
- Allow releasing from repo #1020 (@blink1073)
(GitHub contributors page for this release)
@blink1073 | @martinRenou | @pre-commit-ci
- Ignore the new Jupyter_core deprecation warning in CI #1019 (@jasongrout)
- Bump actions/checkout from 2 to 3 #1018 (@dependabot)
- Add dependabot #1017 (@blink1073)
- Add pyupgrade to pre-commit #1014 (@blink1073)
(GitHub contributors page for this release)
@blink1073 | @dependabot | @jasongrout | @pre-commit-ci
- Enable webagg in %matplotlib #1012 (@zhizheng1)
- Update supported pythons to 3.8-3.11 #1013 (@blink1073)
(GitHub contributors page for this release)
- Fix failing test and update matrix #1010 (@blink1073)
(GitHub contributors page for this release)
- Maintenance cleanup #1006 (@blink1073)
- Ignore warnings in prereleases test #1002 (@blink1073)
(GitHub contributors page for this release)
@blink1073 | @impact27 | @pre-commit-ci
- Use hatch for version #998 (@blink1073)
- Add client 8 support #996 (@blink1073)
- Remove unused manifest file #994 (@blink1073)
(GitHub contributors page for this release)
- PR: Close memory leak #990 (@impact27)
- Handle all possible exceptions when trying to import the debugger #987 (@JohanMabille)
- [pre-commit.ci] pre-commit autoupdate #989 (@pre-commit-ci)
- [pre-commit.ci] pre-commit autoupdate #985 (@pre-commit-ci)
- Add python logo in svg format #984 (@steff456)
- [pre-commit.ci] pre-commit autoupdate #982 (@pre-commit-ci)
(GitHub contributors page for this release)
@impact27 | @JohanMabille | @pre-commit-ci | @steff456
- [pre-commit.ci] pre-commit autoupdate #978 (@pre-commit-ci)
- [pre-commit.ci] pre-commit autoupdate #977 (@pre-commit-ci)
- [pre-commit.ci] pre-commit autoupdate #976 (@pre-commit-ci)
- [pre-commit.ci] pre-commit autoupdate #974 (@pre-commit-ci)
- [pre-commit.ci] pre-commit autoupdate #971 (@pre-commit-ci)
- [pre-commit.ci] pre-commit autoupdate #968 (@pre-commit-ci)
- [pre-commit.ci] pre-commit autoupdate #966 (@pre-commit-ci)
(GitHub contributors page for this release)
@blink1073 | @pre-commit-ci | @rayosborn | @rhelmot
- Fix inclusion of launcher file and check in CI #964 (@blink1073)
- [pre-commit.ci] pre-commit autoupdate #962 (@pre-commit-ci)
- [pre-commit.ci] pre-commit autoupdate #961 (@pre-commit-ci)
- [pre-commit.ci] pre-commit autoupdate #960 (@pre-commit-ci)
(GitHub contributors page for this release)
- Back to top-level tornado IOLoop #958 (@minrk)
- Explicitly require pyzmq >= 17 #957 (@minrk)
- [pre-commit.ci] pre-commit autoupdate #954 (@pre-commit-ci)
(GitHub contributors page for this release)
- use pss memory info type if available for the resource usage reply #948 (@echarles)
- Ensure psutil for the process is accurate #937 (@echarles)
- Fix sphinx 5.0 support #951 (@blink1073)
- [pre-commit.ci] pre-commit autoupdate #950 (@pre-commit-ci)
(GitHub contributors page for this release)
@blink1073 | @echarles | @nishikantparmariam | @pre-commit-ci
- Fix richInspectVariables #943 (@davidbrochart)
- Force debugger metadata in built wheel #941 (@blink1073)
- [pre-commit.ci] pre-commit autoupdate #945 (@pre-commit-ci)
- Clean up typings #939 (@blink1073)
- [pre-commit.ci] pre-commit autoupdate #938 (@pre-commit-ci)
- Clean up types #933 (@blink1073)
- [pre-commit.ci] pre-commit autoupdate #932 (@pre-commit-ci)
- Switch to hatch backend #931 (@blink1073)
- [pre-commit.ci] pre-commit autoupdate #928 (@pre-commit-ci)
- [pre-commit.ci] pre-commit autoupdate #926 (@pre-commit-ci)
- Allow enforce PR label workflow to add labels #921 (@blink1073)
- [pre-commit.ci] pre-commit autoupdate #920 (@pre-commit-ci)
- [pre-commit.ci] pre-commit autoupdate #919 (@pre-commit-ci)
- [pre-commit.ci] pre-commit autoupdate #917 (@pre-commit-ci)
(GitHub contributors page for this release)
@blink1073 | @davidbrochart | @fabioz | @fcollonval | @pre-commit-ci
- Add basic mypy support #913 (@blink1073)
- Clean up pre-commit #911 (@blink1073)
- Update setup.py #909 (@tlinhart)
- [pre-commit.ci] pre-commit autoupdate #906 (@pre-commit-ci)
(GitHub contributors page for this release)
@andia89 | @blink1073 | @echarles | @meeseeksdev | @pre-commit-ci | @tlinhart
- Clean up test deps and test setup #904 (@blink1073)
(GitHub contributors page for this release)
- Make cell_id optional #902 (@blink1073)
- Do not try to send on iostream if closed #899 (@blink1073)
(GitHub contributors page for this release)
@blink1073 | @bollwyvl | @minrk
- Include method signatures in experimental completion results #895 (@MrBago)
- Try to pass cell id to executing kernel. #886 (@Carreau)
- Handle warnings in tests #896 (@blink1073)
- Run flake and remove deprecated import #894 (@blink1073)
- Add ignore-revs file #893 (@blink1073)
- Autoformat with black and isort #892 (@blink1073)
- Add pytest opts and pre-commit #889 (@blink1073)
(GitHub contributors page for this release)
@blink1073 | @Carreau | @MrBago | @SylvainCorlay
- More CI cleanup #887 (@blink1073)
- CI cleanup #885 (@blink1073)
(GitHub contributors page for this release)
@blink1073 | @jamadeo | @lesteve | @MrBago | @SylvainCorlay
- Catch error when shutting down kernel from the control channel #877 (@ccordoba12)
- Only kill children in process group at shutdown #874 (@minrk)
- BUG: Kill subprocesses on shutdown. #869 (@Carreau)
- Clean up CI #871 (@blink1073)
(GitHub contributors page for this release)
@blink1073 | @Carreau | @ccordoba12 | @echarles | @fabioz | @minrk | @vidartf
- Add hostname to the usage reply #865 (@echarles)
- Enable standard library debugging via config #863 (@echarles)
- process_one only accepts coroutines for dispatch #861 (@minrk)
(GitHub contributors page for this release)
@blink1073 | @echarles | @minrk
- Fixed event forwarding #855 (@JohanMabille)
- use message queue for abort_queues #853 (@minrk)
(GitHub contributors page for this release)
@blink1073 | @JohanMabille | @minrk
- Handle all threads stopped correctly #849 (@JohanMabille)
- Fix the debug modules model #848 (@echarles)
- Handled AllThreadsContinued and workaround for wrong threadId in cont… #844 (@JohanMabille)
- Cancel duplicate runs #850 (@blink1073)
(GitHub contributors page for this release)
@blink1073 | @echarles | @JohanMabille
- Removed DebugStdLib from arguments of attach #839 (@JohanMabille)
- Normalize debugger temp file paths on Windows #838 (@kycutler)
- Breakpoint in cell with leading empty lines may be ignored #829 (@fcollonval)
- Skip on PyPy, seem to fail. #837 (@Carreau)
- Remove pipx to fix conflicts #835 (@Carreau)
- Remove impossible skipif. #834 (@Carreau)
(GitHub contributors page for this release)
@Carreau | @echarles | @fcollonval | @JohanMabille | @kycutler
- Clean python 2 artifacts. Fix #826 #827 (@penguinolog)
- Fix title position in changelog #828 (@fcollonval)
(GitHub contributors page for this release)
@blink1073 | @ccordoba12 | @fcollonval | @impact27 | @ivanov | @penguinolog
- Set
debugOptionsfor breakpoints in python standard library source #812 (@echarles) - Send
omit_sectionsto IPython to choose which sections of documentation you do not want #809 (@fasiha)
- Added missing
exceptionPathsfield todebugInforeply #814 (@JohanMabille)
- Test
jupyter_kernel_testas downstream #813 (@blink1073) - Remove
nosedependency #808 (@Kojoley) - Add explicit encoding to open calls in debugger #807 (@dlukes)
(GitHub contributors page for this release)
@blink1073 | @dlukes | @echarles | @fasiha | @JohanMabille | @Kojoley
- Fix the temp file name created by the debugger #801 (@eastonsuo)
- Enforce labels on PRs #803 (@blink1073)
- Unpin
IPython, and remove some dependencies on it. #796 (@Carreau)
(GitHub contributors page for this release)
@blink1073 | @Carreau | @eastonsuo
- Fix rich variables inspection #793 (@fcollonval)
- Do not call
setQuitOnLastWindowClosed()on aQCoreApplication#791 (@stukowski)
- Drop
ipython_genutilsrequirement #792 (@penguinolog)
(GitHub contributors page for this release)
@ccordoba12 | @fcollonval | @penguinolog | @stukowski
- Enabled rich rendering of variables in the debugger #787 (@JohanMabille)
- Remove setting of the eventloop function in the InProcessKernel #781 (@rayosborn)
(GitHub contributors page for this release)
@emuccino | @JohanMabille | @rayosborn
(GitHub contributors page for this release)
- Make
json_cleana no-op forjupyter-client>= 7 #708 (@martinRenou)
- Do not assume kernels have loops #766 (@Carreau)
- Fix undefined variable #765 (@martinRenou)
- Make
ipykernelwork withoutdebugpy#767 (@frenzymadness) - Stop using deprecated
recv_multipartwhen using in-process socket. #762 (@Carreau) - Update some warnings with instructions and version number. #761 (@Carreau)
(GitHub contributors page for this release)
@Carreau | @frenzymadness | @martinRenou | @minrk
(GitHub contributors page for this release)
- Add deep variable inspection #753 (@JohanMabille)
- Add
IPKernelApp.capture_fd_outputconfig to disable FD-level capture #752 (@minrk)
- Remove more
nosetest references #750 (@blink1073) - Remove
noseskipIfin favor ofpytest#748 (@Carreau) - Remove more
nose#747 (@Carreau) - Set up release helper plumbing #745 (@afshin)
- Test downstream projects #635 (@davidbrochart)
(GitHub contributors page for this release)
@afshin | @blink1073 | @Carreau | @ccordoba12 | @davidbrochart | @JohanMabille | @kevin-bates | @minrk | @SylvainCorlay
- Remove some more dependency on nose/iptest #743 (@Carreau)
- Remove block param from get_msg() #736 (@davidbrochart)
- Implemented
richInspectVariablerequest handler #734 (@JohanMabille)
- Fix exception raised by
OutStream.write#726 (@SimonKrughoff)
- Add watchfd keyword to InProcessKernel OutStream initialization #727 (@rayosborn)
- Fix typo in eventloops.py #711 (@selasley)
- [bugfix] fix in setup.py (comma before appnope) #709 (@jstriebel)
- Add upper bound to dependency versions. #714 (@martinRenou)
- Replace non-existing function. #723 (@Carreau)
- Remove unused variables #722 (@Carreau)
- Do not use bare except #721 (@Carreau)
- misc whitespace and line too long #720 (@Carreau)
- Formatting: remove semicolon #719 (@Carreau)
- Clean most flake8 unused import warnings. #718 (@Carreau)
- Minimal flake8 config #717 (@Carreau)
- Remove CachingCompiler's filename_mapper #710 (@martinRenou)
- Fix Tk and asyncio event loops #704 (@ccordoba12)
- Stringify variables that are not json serializable in inspectVariable #702 (@JohanMabille)
IPykernel 6.0 is the first major release in about two years, that brings a number of improvements, code cleanup, and new features to IPython.
You should be able to view all closed issues and merged Pull Request for this milestone on GitHub, as for any major releases, we advise greater care when updating that for minor release and welcome any feedback (~50 Pull-requests).
IPykernel 6 should contain all changes of the 5.x series, in addition to the following non-exhaustive changes.
-
Support for the debugger protocol, when using
JupyterLab,RetroLabor any frontend supporting the debugger protocol you should have access to the debugger functionalities. -
The control channel on IPykernel 6.0 is run in a separate thread, this may change the order in which messages are processed, though this change was necessary to accommodate the debugger.
-
We now have a new dependency:
matplotlib-inline, this helps to separate the circular dependency between IPython/IPykernel and matplotlib. -
On POSIX systems, all outputs to stdout/stderr should now be captured, including subprocesses and output of compiled libraries (blas, lapack....). In notebook server, some outputs that would previously go to the notebooks logs will now both head to notebook logs and in notebooks outputs. In terminal frontend like Jupyter Console, Emacs or other, this may ends up as duplicated outputs.
-
coroutines are now native (async-def) , instead of using tornado's
@gen.coroutine -
OutStreams can now be configured to report
istty() == True, while this should make some output nicer (for example colored), it is likely to break others. Use with care.
- Implementation of the debugger #597 (@JohanMabille)
- Make the
isattymethod ofOutStreamreturntrue#683 (@peendebak) - Allow setting cell name #652 (@davidbrochart)
- Try to capture all file descriptor output and err #630 (@Carreau)
- Implemented
inspectVariablesrequest #624 (@JohanMabille) - Specify
ipykernelin kernelspec #616 (@SylvainCorlay) - Use
matplotlib-inline#591 (@martinRenou) - Run control channel in separate thread #585 (@SylvainCorlay)
- Remove references to deprecated
ipyparallel#695 (@minrk) - Return len of item written to
OutStream#685 (@Carreau) - Call metadata methods on abort replies #684 (@minrk)
- Fix keyboard interrupt issue in
dispatch_shell#673 (@marcoamonteiro) - Update
Triomode for compatibility withTrio >= 0.18.0#627 (@mehaase) - Follow up
DeprecationWarningFix #617 (@afshin) - Flush control stream upon shutdown #611 (@SylvainCorlay)
- Fix Handling of
shell.should_run_async#605 (@afshin) - Deacrease lag time for eventloop #573 (@impact27)
- Fix "Socket operation on nonsocket" in downstream
nbclienttest. #641 (@SylvainCorlay) - Stop control thread before closing sockets on it #659 (@minrk)
- Fix debugging with native coroutines #651 (@SylvainCorlay)
- Fixup master build #649 (@SylvainCorlay)
- Fix parent header retrieval #639 (@davidbrochart)
- Add missing self #636 (@Carreau)
- Backwards compat with older versions of zmq #665 (@mlucool)
- Remove pin on Jedi because that was already fixed in IPython #692 (@ccordoba12)
- Remove deprecated source parameter since 4.0.1 (2015) #690 (@Carreau)
- Remove deprecated
SocketABCsince 4.5.0 #689 (@Carreau) - Remove deprecated profile options of
connect.py#688 (@Carreau) - Remove
ipykernel.codeutildeprecated since IPykernel 4.3.1 (Feb 2016) #687 (@Carreau) - Keep preferring
SelectorEventLoopon Windows #669 (@minrk) - Add
Kernel.get_parentto matchset_parent#661 (@minrk) - Flush control queue prior to handling shell messages #658 (@minrk)
- Add
Kernel.get_parent_header#657 (@minrk) - Build docs only on Ubuntu: add jobs to check docstring formatting. #644 (@Carreau)
- Make deprecated
shell_streamswritable #638 (@minrk) - Use channel
get_msghelper method #634 (@davidbrochart) - Use native coroutines instead of tornado coroutines #632 (@SylvainCorlay)
- Make less use of
ipython_genutils#631 (@SylvainCorlay) - Run GitHub Actions on all branches #625 (@afshin)
- Move Python-specific bits to ipkernel #610 (@SylvainCorlay)
- Update Python Requirement to 3.7 #608 (@afshin)
- Replace import item from
ipython_genutilsto traitlets. #601 (@Carreau) - Some removal of
ipython_genutils.py3compat. #600 (@Carreau) - Fixup
get_parent_headercall #662 (@SylvainCorlay) - Update of
ZMQInteractiveshell. #643 (@Carreau) - Removed filtering of stack frames for testing #633 (@JohanMabille)
- Added 'type' field to variables returned by
inspectVariablesrequest #628 (@JohanMabille) - Changed default timeout to 0.0 seconds for
stop_on_error_timeout#618 (@MSeal) - Attempt longer timeout #615 (@SylvainCorlay)
- Clean up release process and add tests #596 (@afshin)
- Kernelspec: ensure path is writable before writing
kernel.json. #593 (@jellelicht) - Add
configure_inline_supportand call it in the shell #590 (@martinRenou)
- Misc Updates to changelog for 6.0 #686 (@Carreau)
- Add 5.5.x Changelog entries #672 (@blink1073)
- Build docs only on ubuntu: add jobs to check docstring formatting. #644 (@Carreau)
- DOC: Autoreformat all docstrings. #642 (@Carreau)
- Bump Python to 3.8 in
readthedocs.yml#612 (@minrk) - Fix typo #663 (@SylvainCorlay)
- Add release note to 5.5.0 about
stop_on_error_timeout#613 (@glentakahashi) - Move changelog to standard location #604 (@afshin)
- Add changelog for 5.5 #594 (@blink1073)
- Change to markdown for changelog #595 (@afshin)
Kernels now support only a single shell stream, multiple streams will now be ignored. The attributeKernel.shell_streams(plural) is deprecated in ipykernel 6.0. UseKernel.shell_stream(singular)Kernel._parent_headeris deprecated, even though it was private. Use.get_parent()now.
ipykernel.codeutilswas deprecated since 4.x series (2016) and has been removed, please import similar functionalities fromipyparallel- remove
find_connection_fileandprofileargument ofconnect_qtconsoleandget_connection_info, deprecated since IPykernel 4.2.2 (2016).
(GitHub contributors page for this release)
@afshin | @blink1073 | @Carreau | @ccordoba12 | @davidbrochart | @dsblank | @glentakahashi | @impact27 | @ivanov | @jellelicht | @jkablan | @JohanMabille | @kevin-bates | @marcoamonteiro | @martinRenou | @mehaase | @minrk | @mlucool | @MSeal | @peendebak | @SylvainCorlay | @tacaswell
- Keep preferring SelectorEventLoop on Windows. #669
- Import
configure_inline_supportfrommatplotlib_inlineif available #654
- Revert Backport of #605: Fix Handling of
shell.should_run_async#622
Note: This release was deleted from PyPI since it had breaking changes.
- Changed default timeout to 0.0 seconds for stop_on_error_timeout. #618
Note: This release was deleted from PyPI since it had breaking changes.
- Fix Handling of
shell.should_run_async. #605
- kernelspec: ensure path is writable before writing
kernel.json. #593 - Add
configure_inline_supportand call it in the shell. #590 - Fix
stop_on_error_timeoutto now properly abortexecute_request's that fall within the timeout after an error. #572
- Rework
wait_for_readylogic. #578
- Revert "Fix stop_on_error_timeout blocking other messages in queue". #570
- Invalid syntax in
ipykernel/log.py. #567
5.4.0 is generally focused on code quality improvements and tornado asyncio compatibility.
- Add github actions, bail on asyncio patch for tornado 6.1. #564
- Start testing on Python 3.9. #551
- Fix stack levels for ipykernel's deprecation warnings and stop using some deprecated APIs. #547
- Add env parameter to kernel installation #541
- Fix stop_on_error_timeout blocking other messages in queue. #539
- Remove most of the python 2 compat code. #537
- Remove u-prefix from strings. #538
- Only run Qt eventloop in the shell stream. #531
- Fix QSocketNotifier in the Qt event loop not being disabled for the control channel. #525
- Restore timer based event loop as a Windows-compatible fallback. #523
- Fix #520: run post_execute and post_run_cell on async cells #521
- Fix exception causes in zmqshell.py #516
- Make pdb on Windows interruptible #490
5.3.0 Adds support for Trio event loops and has some bug fixes.
- Fix ipython display imports #509
- Skip test_unc_paths if OS is not Windows #507
- Allow interrupting input() on Windows, as part of effort to make pdb interruptible #498
- Add Trio Loop #479
- Flush from process even without newline #478
- Handle system commands that use UNC paths on Windows #500
- Add offset argument to seek in io test #496
5.2.0 Includes several bugfixes and internal logic improvements.
- Produce better traceback when kernel is interrupted #491
- Add
InProcessKernelClient.control_channelfor compatibility with jupyter-client v6.0.0 #489 - Drop support for Python 3.4 #483
- Work around issue related to Tornado with python3.8 on Windows (#480, #481)
- Prevent entering event loop if it is None #464
- Use
shell.input_transformer_managerwhen available #411
5.1.4 Includes a few bugfixes, especially for compatibility with Python 3.8 on Windows.
- Fix pickle issues when using inline matplotlib backend #476
- Fix an error during kernel shutdown #463
- Fix compatibility issues with Python 3.8 (#456, #461)
- Remove some dead code (#474, #467)
5.1.3 Includes several bugfixes and internal logic improvements.
- Fix comm shutdown behavior by adding a
deletingoption toclosewhich can be set to prevent registering new comm channels during shutdown (#433, #435) - Fix
Heartbeat._bind_socketto return on the first bind (#431) - Moved
InProcessKernelClient.flushtoDummySocket(#437) - Don't redirect stdout if nose machinery is not present (#427)
- Rename
_asyncio.pyto_asyncio_utils.pyto avoid name conflicts on Python 3.6+ (#426) - Only generate kernelspec when installing or building wheel (#425)
- Fix priority ordering of control-channel messages in some cases #443
5.1.2 fixes some socket-binding race conditions that caused testing failures in nbconvert.
- Fix socket-binding race conditions (#412, #419)
- Add a no-op
flushmethod toDummySocketand comply with stream API (#405) - Update kernel version to indicate kernel v5.3 support (#394)
- Add testing for upcoming Python 3.8 and PEP 570 positional parameters (#396, #408)
5.1.1 fixes a bug that caused cells to get stuck in a busy state.
- Flush after sending replies #390
5.1.0 fixes some important regressions in 5.0, especially on Windows.
- Fix message-ordering bug that could result in out-of-order executions, especially on Windows #356
- Fix classifiers to indicate dropped Python 2 support #354
- Remove some dead code #355
- Support rich-media responses in
inspect_requests(tooltips) #361
- Drop support for Python 2.
ipykernel5.0 requires Python >= 3.4 - Add support for IPython's asynchronous code execution #323
- Update release process in
CONTRIBUTING.md#339
- Fix compatibility with IPython 7.0 #348
- Fix compatibility in cases where sys.stdout can be None #344
- Python 3.3 is no longer supported #336
- Flush stdout/stderr in KernelApp before replacing #314
- Allow preserving stdout and stderr in KernelApp #315
- Override writable method on OutStream #316
- Add metadata to help display matplotlib figures legibly #336
- Fix compatibility issue with qt eventloop and pyzmq 17 #307.
- set zmq.ROUTER_HANDOVER socket option when available to workaround libzmq reconnect bug #300.
- Fix sdists including absolute paths for kernelspec files, which prevented installation from sdist on Windows #306.
- Cleanly shutdown integrated event loops when shutting down the kernel. #290
%gui qtnow uses Qt 5 by default rather than Qt 4, following a similar change in terminal IPython. #293- Fix event loop integration for
asynciowhen run with Tornado 5, which uses asyncio where available. #296
- Add event loop integration for
asyncio. - Use the new IPython completer API.
- Add support for displaying GIF images (mimetype
image/gif). - Allow the kernel to be interrupted without killing the Qt console.
- Fix
is_completeresponse with cell magics. - Clean up encoding of bytes objects.
- Clean up help links to use
httpsand improve display titles. - Clean up ioloop handling in preparation for tornado 5.
- Fix eventloop-integration bug preventing Qt windows/widgets from displaying with ipykernel 4.6.0 and IPython ≥ 5.2.
- Avoid deprecation warnings about naive datetimes when working with jupyter_client ≥ 5.0.
-
Add to API
DisplayPublisher.publishtwo new fully backward-compatible keyword-args:update: booltransient: dict
-
Support new
transientkey indisplay_datamessages spec forpublish. For a display data message,transientcontains data that shouldn't be persisted to files or documents. Add adisplay_idto thistransientdict bydisplay(obj, display_id=\...) -
Add
ipykernel_launchermodule which removes the current working directory fromsys.pathbefore launching the kernel. This helps to reduce the cases where the kernel won't start because there's arandom.py(or similar) module in the current working directory. -
Add busy/idle messages on IOPub during processing of aborted requests
-
Add active event loop setting to GUI, which enables the correct response to IPython's
is_event_loop_running_xxx -
Include IPython kernelspec in wheels to reduce reliance on "native kernel spec" in jupyter_client
-
Modify
OutStreamto inherit fromTextIOBaseinstead of object to improve API support and error reporting -
Fix IPython kernel death messages at start, such as "Kernel Restarting..." and "Kernel appears to have died", when parent-poller handles PID 1
-
Various bugfixes
- Fix bug when instantiating Comms outside of the IPython kernel (introduced in 4.5.1).
- Add missing
streamparameter to overriddengetpass - Remove locks from iopub thread, which could cause deadlocks during debugging
- Fix regression where KeyboardInterrupt was treated as an aborted request, rather than an error
- Allow instantiating Comms outside of the IPython kernel
- Use figure.dpi instead of savefig.dpi to set DPI for inline figures
- Support ipympl matplotlib backend (requires IPython update as well to fully work)
- Various bugfixes, including fixes for output coming from threads,
and
inputwhen called with non-string prompts, which stdlib allows.
- Fix circular import of matplotlib on Python 2 caused by the inline backend changes in 4.4.0.
- Use
MPLBACKEND
environment variable to tell matplotlib >= 1.5 use use the inline
backend by default. This is only done if MPLBACKEND is not already
set and no backend has been explicitly loaded, so setting
MPLBACKEND=Qt4Aggor calling%matplotlib notebookormatplotlib.use('Agg')will take precedence. - Fixes for logging problems caused by 4.3, where logging could go to the terminal instead of the notebook.
- Add
--sys-prefixand--profilearguments toipython kernel install. - Allow Comm (Widget) messages to be sent from background threads.
- Select inline matplotlib backend by default if
%matplotlibmagic ormatplotlib.use()are not called explicitly (for matplotlib >= 1.5). - Fix some longstanding minor deviations from the message protocol (missing status: ok in a few replies, connect_reply format).
- Remove calls to NoOpContext from IPython, deprecated in 5.0.
- Use a nonempty dummy session key for inprocess kernels to avoid security warnings.
- Fix Windows Python 3.5 incompatibility caused by faulthandler patch in 4.3
-
Publish all IO in a thread, via
IOPubThread. This solves the problem of requiringsys.stdout.flushto be called in the notebook to produce output promptly during long-running cells. -
Remove references to outdated IPython guiref in kernel banner.
-
Patch faulthandler to use
sys.__stderr__instead of forwardedsys.stderr, which has no fileno when forwarded. -
Deprecate some vestiges of the Big Split:
ipykernel.find_connection_fileis deprecated. Usejupyter_client.find_connection_fileinstead.
- Various pieces of code specific to IPython parallel are deprecated in ipykernel and moved to ipyparallel.
- Don't show interactive debugging info when kernel crashes
- Fix handling of numerical types in json_clean
- Testing fixes for output capturing
- Fix default display name back to "Python X" instead of "pythonX"
- Support sending a full message in initial opening of comms (metadata, buffers were not previously allowed)
- When using
ipython kernel install --nameto install the IPython kernelspec, default display-name to the same value as--name.
- Fix missing
ipykernel.__version__on Python 2. - Fix missing
target_namewhen opening comms from the frontend.
- add
ipython kernel installentrypoint for installing the IPython kernelspec - provisional implementation of
comm_inforequest/reply for msgspec v5.1
4.0 is the first release of ipykernel as a standalone package.