async-kernel 0.15.0__tar.gz → 0.16.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {async_kernel-0.15.0 → async_kernel-0.16.1}/.github/workflows/ci.yml +3 -2
- {async_kernel-0.15.0 → async_kernel-0.16.1}/CHANGELOG.md +72 -0
- {async_kernel-0.15.0 → async_kernel-0.16.1}/PKG-INFO +2 -1
- {async_kernel-0.15.0 → async_kernel-0.16.1}/_version.py +2 -2
- {async_kernel-0.15.0 → async_kernel-0.16.1}/docs/reference/asyncshell.md +1 -2
- {async_kernel-0.15.0 → async_kernel-0.16.1}/pyproject.toml +1 -0
- {async_kernel-0.15.0 → async_kernel-0.16.1}/src/async_kernel/asyncshell.py +16 -11
- {async_kernel-0.15.0 → async_kernel-0.16.1}/src/async_kernel/caller.py +277 -306
- async_kernel-0.16.1/src/async_kernel/common.py +280 -0
- {async_kernel-0.15.0 → async_kernel-0.16.1}/src/async_kernel/debugger.py +0 -3
- {async_kernel-0.15.0 → async_kernel-0.16.1}/src/async_kernel/interface/base.py +3 -4
- {async_kernel-0.15.0 → async_kernel-0.16.1}/src/async_kernel/interface/zmq.py +6 -7
- {async_kernel-0.15.0 → async_kernel-0.16.1}/src/async_kernel/kernel.py +16 -11
- {async_kernel-0.15.0 → async_kernel-0.16.1}/src/async_kernel/pending.py +115 -92
- {async_kernel-0.15.0 → async_kernel-0.16.1}/src/async_kernel/typing.py +11 -1
- {async_kernel-0.15.0 → async_kernel-0.16.1}/tests/test_callable_kernel_interface.py +2 -2
- {async_kernel-0.15.0 → async_kernel-0.16.1}/tests/test_caller.py +39 -160
- {async_kernel-0.15.0 → async_kernel-0.16.1}/tests/test_common.py +95 -1
- {async_kernel-0.15.0 → async_kernel-0.16.1}/tests/test_kernel.py +24 -26
- {async_kernel-0.15.0 → async_kernel-0.16.1}/tests/test_pending.py +53 -69
- {async_kernel-0.15.0 → async_kernel-0.16.1}/tests/test_typing.py +5 -0
- {async_kernel-0.15.0 → async_kernel-0.16.1}/tests/utils.py +1 -1
- {async_kernel-0.15.0 → async_kernel-0.16.1}/uv.lock +355 -355
- async_kernel-0.15.0/src/async_kernel/common.py +0 -132
- {async_kernel-0.15.0 → async_kernel-0.16.1}/.github/dependabot.yaml +0 -0
- {async_kernel-0.15.0 → async_kernel-0.16.1}/.github/release.yml +0 -0
- {async_kernel-0.15.0 → async_kernel-0.16.1}/.github/workflows/enforce-label.yml +0 -0
- {async_kernel-0.15.0 → async_kernel-0.16.1}/.github/workflows/new_release.yml +0 -0
- {async_kernel-0.15.0 → async_kernel-0.16.1}/.github/workflows/pre-commit.yml +0 -0
- {async_kernel-0.15.0 → async_kernel-0.16.1}/.github/workflows/publish-docs.yml +0 -0
- {async_kernel-0.15.0 → async_kernel-0.16.1}/.github/workflows/publish-to-pypi.yml +0 -0
- {async_kernel-0.15.0 → async_kernel-0.16.1}/.gitignore +0 -0
- {async_kernel-0.15.0 → async_kernel-0.16.1}/.pre-commit-config.yaml +0 -0
- {async_kernel-0.15.0 → async_kernel-0.16.1}/.vscode/launch.json +0 -0
- {async_kernel-0.15.0 → async_kernel-0.16.1}/.vscode/settings.json +0 -0
- {async_kernel-0.15.0 → async_kernel-0.16.1}/.vscode/spellright.dict +0 -0
- {async_kernel-0.15.0 → async_kernel-0.16.1}/CONTRIBUTING.md +0 -0
- {async_kernel-0.15.0 → async_kernel-0.16.1}/IPYTHON_LICENSE +0 -0
- {async_kernel-0.15.0 → async_kernel-0.16.1}/LICENSE +0 -0
- {async_kernel-0.15.0 → async_kernel-0.16.1}/README.md +0 -0
- {async_kernel-0.15.0 → async_kernel-0.16.1}/cliff.toml +0 -0
- {async_kernel-0.15.0 → async_kernel-0.16.1}/docs/about/changelog.md +0 -0
- {async_kernel-0.15.0 → async_kernel-0.16.1}/docs/about/contributing.md +0 -0
- {async_kernel-0.15.0 → async_kernel-0.16.1}/docs/about/index.md +0 -0
- {async_kernel-0.15.0 → async_kernel-0.16.1}/docs/about/license.md +0 -0
- {async_kernel-0.15.0 → async_kernel-0.16.1}/docs/index.md +0 -0
- {async_kernel-0.15.0 → async_kernel-0.16.1}/docs/javascripts/extra.js +0 -0
- {async_kernel-0.15.0 → async_kernel-0.16.1}/docs/notebooks/caller.ipynb +0 -0
- {async_kernel-0.15.0 → async_kernel-0.16.1}/docs/notebooks/concurrency.ipynb +0 -0
- {async_kernel-0.15.0 → async_kernel-0.16.1}/docs/overrides/main.html +0 -0
- {async_kernel-0.15.0 → async_kernel-0.16.1}/docs/reference/caller.md +0 -0
- {async_kernel-0.15.0 → async_kernel-0.16.1}/docs/reference/comm.md +0 -0
- {async_kernel-0.15.0 → async_kernel-0.16.1}/docs/reference/command.md +0 -0
- {async_kernel-0.15.0 → async_kernel-0.16.1}/docs/reference/common.md +0 -0
- {async_kernel-0.15.0 → async_kernel-0.16.1}/docs/reference/debugger.md +0 -0
- {async_kernel-0.15.0 → async_kernel-0.16.1}/docs/reference/event_loop.md +0 -0
- {async_kernel-0.15.0 → async_kernel-0.16.1}/docs/reference/index.md +0 -0
- {async_kernel-0.15.0 → async_kernel-0.16.1}/docs/reference/interface.md +0 -0
- {async_kernel-0.15.0 → async_kernel-0.16.1}/docs/reference/kernel.md +0 -0
- {async_kernel-0.15.0 → async_kernel-0.16.1}/docs/reference/kernelspec.md +0 -0
- {async_kernel-0.15.0 → async_kernel-0.16.1}/docs/reference/pending.md +0 -0
- {async_kernel-0.15.0 → async_kernel-0.16.1}/docs/reference/typing.md +0 -0
- {async_kernel-0.15.0 → async_kernel-0.16.1}/docs/reference/utils.md +0 -0
- {async_kernel-0.15.0 → async_kernel-0.16.1}/docs/stylesheets/extra.css +0 -0
- {async_kernel-0.15.0 → async_kernel-0.16.1}/docs/thread_safety.md +0 -0
- {async_kernel-0.15.0 → async_kernel-0.16.1}/docs/usage/commands.md +0 -0
- {async_kernel-0.15.0 → async_kernel-0.16.1}/docs/usage/index.md +0 -0
- {async_kernel-0.15.0 → async_kernel-0.16.1}/hatch_build.py +0 -0
- {async_kernel-0.15.0 → async_kernel-0.16.1}/mkdocs.yml +0 -0
- {async_kernel-0.15.0 → async_kernel-0.16.1}/src/async_kernel/__init__.py +0 -0
- {async_kernel-0.15.0 → async_kernel-0.16.1}/src/async_kernel/__main__.py +0 -0
- {async_kernel-0.15.0 → async_kernel-0.16.1}/src/async_kernel/comm.py +0 -0
- {async_kernel-0.15.0 → async_kernel-0.16.1}/src/async_kernel/command.py +0 -0
- {async_kernel-0.15.0 → async_kernel-0.16.1}/src/async_kernel/compat/json.py +0 -0
- {async_kernel-0.15.0 → async_kernel-0.16.1}/src/async_kernel/compiler.py +0 -0
- {async_kernel-0.15.0 → async_kernel-0.16.1}/src/async_kernel/event_loop/__init__.py +0 -0
- {async_kernel-0.15.0 → async_kernel-0.16.1}/src/async_kernel/event_loop/asyncio_guest.py +0 -0
- {async_kernel-0.15.0 → async_kernel-0.16.1}/src/async_kernel/event_loop/qt_host.py +0 -0
- {async_kernel-0.15.0 → async_kernel-0.16.1}/src/async_kernel/event_loop/run.py +0 -0
- {async_kernel-0.15.0 → async_kernel-0.16.1}/src/async_kernel/event_loop/tk_host.py +0 -0
- {async_kernel-0.15.0 → async_kernel-0.16.1}/src/async_kernel/interface/__init__.py +0 -0
- {async_kernel-0.15.0 → async_kernel-0.16.1}/src/async_kernel/interface/callable.py +0 -0
- {async_kernel-0.15.0 → async_kernel-0.16.1}/src/async_kernel/iostream.py +0 -0
- {async_kernel-0.15.0 → async_kernel-0.16.1}/src/async_kernel/kernelspec.py +0 -0
- {async_kernel-0.15.0 → async_kernel-0.16.1}/src/async_kernel/py.typed +0 -0
- {async_kernel-0.15.0 → async_kernel-0.16.1}/src/async_kernel/resources/logo-32x32.png +0 -0
- {async_kernel-0.15.0 → async_kernel-0.16.1}/src/async_kernel/resources/logo-64x64.png +0 -0
- {async_kernel-0.15.0 → async_kernel-0.16.1}/src/async_kernel/resources/logo-svg.svg +0 -0
- {async_kernel-0.15.0 → async_kernel-0.16.1}/src/async_kernel/utils.py +0 -0
- {async_kernel-0.15.0 → async_kernel-0.16.1}/tests/__init__.py +0 -0
- {async_kernel-0.15.0 → async_kernel-0.16.1}/tests/conftest.py +0 -0
- {async_kernel-0.15.0 → async_kernel-0.16.1}/tests/references.py +0 -0
- {async_kernel-0.15.0 → async_kernel-0.16.1}/tests/test_comm.py +0 -0
- {async_kernel-0.15.0 → async_kernel-0.16.1}/tests/test_command.py +0 -0
- {async_kernel-0.15.0 → async_kernel-0.16.1}/tests/test_compat.py +0 -0
- {async_kernel-0.15.0 → async_kernel-0.16.1}/tests/test_debugger.py +0 -0
- {async_kernel-0.15.0 → async_kernel-0.16.1}/tests/test_enter_kernel.py +0 -0
- {async_kernel-0.15.0 → async_kernel-0.16.1}/tests/test_event_loop.py +0 -0
- {async_kernel-0.15.0 → async_kernel-0.16.1}/tests/test_iostream.py +0 -0
- {async_kernel-0.15.0 → async_kernel-0.16.1}/tests/test_kernel_subclass.py +0 -0
- {async_kernel-0.15.0 → async_kernel-0.16.1}/tests/test_kernelspec.py +0 -0
- {async_kernel-0.15.0 → async_kernel-0.16.1}/tests/test_message_spec.py +0 -0
- {async_kernel-0.15.0 → async_kernel-0.16.1}/tests/test_utils.py +0 -0
- {async_kernel-0.15.0 → async_kernel-0.16.1}/tests/test_zmq_messaging.py +0 -0
|
@@ -39,6 +39,7 @@ jobs:
|
|
|
39
39
|
- "3.12"
|
|
40
40
|
- "3.13"
|
|
41
41
|
- "3.14t"
|
|
42
|
+
- "3.15"
|
|
42
43
|
steps:
|
|
43
44
|
- name: Checkout
|
|
44
45
|
uses: actions/checkout@v6
|
|
@@ -53,7 +54,7 @@ jobs:
|
|
|
53
54
|
- name: Install the project
|
|
54
55
|
run: uv sync --locked --dev
|
|
55
56
|
|
|
56
|
-
- if: ${{ startsWith(matrix.os, 'windows') && !endsWith(matrix.python-version, 't')}}
|
|
57
|
+
- if: ${{ startsWith(matrix.os, 'windows') && !endsWith(matrix.python-version, 't') && !startsWith(matrix.python-version, '3.15')}}
|
|
57
58
|
# Pyside does not have free-threaded binary
|
|
58
59
|
run: uv sync --locked --dev --group gui
|
|
59
60
|
|
|
@@ -85,7 +86,7 @@ jobs:
|
|
|
85
86
|
|
|
86
87
|
- name: Upload coverage reports to Codecov
|
|
87
88
|
if: ${{ !cancelled() }}
|
|
88
|
-
uses: codecov/codecov-action@
|
|
89
|
+
uses: codecov/codecov-action@v6
|
|
89
90
|
with:
|
|
90
91
|
token: ${{ secrets.CODECOV_TOKEN }}
|
|
91
92
|
slug: fleming79/async-kernel
|
|
@@ -5,6 +5,74 @@ All notable changes to this project will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [0.16.1] - 2026-04-08
|
|
9
|
+
|
|
10
|
+
### <!-- 1 --> 🚀 Features
|
|
11
|
+
|
|
12
|
+
- Add shield option to Pending.cancel_wait. [#421](https://github.com/fleming79/async-kernel/pull/421)
|
|
13
|
+
|
|
14
|
+
### <!-- 6 --> 🌀 Miscellaneous
|
|
15
|
+
|
|
16
|
+
- Test against Python 3.15 [#422](https://github.com/fleming79/async-kernel/pull/422)
|
|
17
|
+
|
|
18
|
+
## [0.16.0] - 2026-04-06
|
|
19
|
+
|
|
20
|
+
### <!-- 0 --> 🏗️ Breaking changes
|
|
21
|
+
|
|
22
|
+
- Change KernelInterruptError to KernelInterrupt [#405](https://github.com/fleming79/async-kernel/pull/405)
|
|
23
|
+
|
|
24
|
+
- Pending no longer raises an InvalidStateError if it is already done [#400](https://github.com/fleming79/async-kernel/pull/400)
|
|
25
|
+
|
|
26
|
+
### <!-- 1 --> 🚀 Features
|
|
27
|
+
|
|
28
|
+
- Caller maintenance and make SingleAsyncQueue publicly available [#411](https://github.com/fleming79/async-kernel/pull/411)
|
|
29
|
+
|
|
30
|
+
- Add shield option to Pending.wait [#410](https://github.com/fleming79/async-kernel/pull/410)
|
|
31
|
+
|
|
32
|
+
- Improve HistoryManager handling [#407](https://github.com/fleming79/async-kernel/pull/407)
|
|
33
|
+
|
|
34
|
+
### <!-- 2 --> 🐛 Fixes
|
|
35
|
+
|
|
36
|
+
- Fix Fixed.create_instance bug [#395](https://github.com/fleming79/async-kernel/pull/395)
|
|
37
|
+
|
|
38
|
+
### <!-- 6 --> 🌀 Miscellaneous
|
|
39
|
+
|
|
40
|
+
- Prepare for release v0.16.0 [#420](https://github.com/fleming79/async-kernel/pull/420)
|
|
41
|
+
|
|
42
|
+
- Caller refactoring [#419](https://github.com/fleming79/async-kernel/pull/419)
|
|
43
|
+
|
|
44
|
+
- Convert Caller._get_task_factory to a function [#416](https://github.com/fleming79/async-kernel/pull/416)
|
|
45
|
+
|
|
46
|
+
- Move async_kernel.caller.SingleAsyncQueue to async_kernel.common.SingleAsyncQueue [#415](https://github.com/fleming79/async-kernel/pull/415)
|
|
47
|
+
|
|
48
|
+
- Add SingleAsyncQueue.appendleft. [#414](https://github.com/fleming79/async-kernel/pull/414)
|
|
49
|
+
|
|
50
|
+
- KernelInterrupt subclass from InterruptedError. [#413](https://github.com/fleming79/async-kernel/pull/413)
|
|
51
|
+
|
|
52
|
+
- Update uv.lock. [#412](https://github.com/fleming79/async-kernel/pull/412)
|
|
53
|
+
|
|
54
|
+
- Caller refactoring [#409](https://github.com/fleming79/async-kernel/pull/409)
|
|
55
|
+
|
|
56
|
+
- Caller maintenance [#408](https://github.com/fleming79/async-kernel/pull/408)
|
|
57
|
+
|
|
58
|
+
- Improve reliability of test_comm_open_msg_close [#406](https://github.com/fleming79/async-kernel/pull/406)
|
|
59
|
+
|
|
60
|
+
- Caller maintenance [#404](https://github.com/fleming79/async-kernel/pull/404)
|
|
61
|
+
|
|
62
|
+
- Improve Pending._set_done thread safety [#403](https://github.com/fleming79/async-kernel/pull/403)
|
|
63
|
+
|
|
64
|
+
- Pending._set_done refactor. [#401](https://github.com/fleming79/async-kernel/pull/401)
|
|
65
|
+
|
|
66
|
+
- Set session.check_pid to False which is used for every comm message sent. (os.getpid is not cheap). [#399](https://github.com/fleming79/async-kernel/pull/399)
|
|
67
|
+
|
|
68
|
+
- Caller refactoring [#398](https://github.com/fleming79/async-kernel/pull/398)
|
|
69
|
+
|
|
70
|
+
- Refactor Pending [#397](https://github.com/fleming79/async-kernel/pull/397)
|
|
71
|
+
|
|
72
|
+
- Use THREAD_DUMMY_LOCK to save memory [#396](https://github.com/fleming79/async-kernel/pull/396)
|
|
73
|
+
|
|
74
|
+
- Bump codecov/codecov-action from 5 to 6 in the actions group [#392](https://github.com/fleming79/async-kernel/pull/392)
|
|
75
|
+
|
|
8
76
|
## [0.15.0] - 2026-03-30
|
|
9
77
|
|
|
10
78
|
### <!-- 0 --> 🏗️ Breaking changes
|
|
@@ -29,6 +97,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
29
97
|
|
|
30
98
|
### <!-- 6 --> 🌀 Miscellaneous
|
|
31
99
|
|
|
100
|
+
- Prepare for release v0.15.0 [#394](https://github.com/fleming79/async-kernel/pull/394)
|
|
101
|
+
|
|
32
102
|
- Change Pending.wait_sync signature to be the same as Pending.wait [#393](https://github.com/fleming79/async-kernel/pull/393)
|
|
33
103
|
|
|
34
104
|
- Tidy up [#391](https://github.com/fleming79/async-kernel/pull/391)
|
|
@@ -1087,6 +1157,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
1087
1157
|
|
|
1088
1158
|
- Bump the actions group across 1 directory with 2 updates [#3](https://github.com/fleming79/async-kernel/pull/3)
|
|
1089
1159
|
|
|
1160
|
+
[0.16.1]: https://github.com/fleming79/async-kernel/compare/v0.16.0..v0.16.1
|
|
1161
|
+
[0.16.0]: https://github.com/fleming79/async-kernel/compare/v0.15.0..v0.16.0
|
|
1090
1162
|
[0.15.0]: https://github.com/fleming79/async-kernel/compare/v0.14.0..v0.15.0
|
|
1091
1163
|
[0.14.0]: https://github.com/fleming79/async-kernel/compare/v0.13.3..v0.14.0
|
|
1092
1164
|
[0.13.3]: https://github.com/fleming79/async-kernel/compare/v0.13.2..v0.13.3
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: async-kernel
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.16.1
|
|
4
4
|
Summary: A concurrent python kernel for Jupyter supporting AnyIO, AsyncIO and Trio.
|
|
5
5
|
Project-URL: Homepage, https://fleming79.github.io/async-kernel
|
|
6
6
|
Project-URL: Documentation, https://fleming79.github.io/async-kernel
|
|
@@ -29,6 +29,7 @@ Classifier: Programming Language :: Python :: 3.11
|
|
|
29
29
|
Classifier: Programming Language :: Python :: 3.12
|
|
30
30
|
Classifier: Programming Language :: Python :: 3.13
|
|
31
31
|
Classifier: Programming Language :: Python :: 3.14
|
|
32
|
+
Classifier: Programming Language :: Python :: 3.15
|
|
32
33
|
Classifier: Programming Language :: Python :: Free Threading :: 1 - Unstable
|
|
33
34
|
Classifier: Typing :: Typed
|
|
34
35
|
Requires-Python: >=3.11
|
|
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
|
|
|
18
18
|
commit_id: str | None
|
|
19
19
|
__commit_id__: str | None
|
|
20
20
|
|
|
21
|
-
__version__ = version = '0.
|
|
22
|
-
__version_tuple__ = version_tuple = (0,
|
|
21
|
+
__version__ = version = '0.16.1'
|
|
22
|
+
__version_tuple__ = version_tuple = (0, 16, 1)
|
|
23
23
|
|
|
24
24
|
__commit_id__ = commit_id = None
|
|
@@ -31,6 +31,7 @@ classifiers = [
|
|
|
31
31
|
"Programming Language :: Python :: 3.12",
|
|
32
32
|
"Programming Language :: Python :: 3.13",
|
|
33
33
|
"Programming Language :: Python :: 3.14",
|
|
34
|
+
"Programming Language :: Python :: 3.15",
|
|
34
35
|
"Programming Language :: Python :: Free Threading :: 1 - Unstable",
|
|
35
36
|
]
|
|
36
37
|
requires-python = ">=3.11"
|
|
@@ -16,6 +16,7 @@ from aiologic.lowlevel import async_checkpoint
|
|
|
16
16
|
from IPython.core.completer import provisionalcompleter, rectify_completions
|
|
17
17
|
from IPython.core.displayhook import DisplayHook
|
|
18
18
|
from IPython.core.displaypub import DisplayPublisher
|
|
19
|
+
from IPython.core.history import HistoryManager
|
|
19
20
|
from IPython.core.interactiveshell import InteractiveShell, InteractiveShellABC
|
|
20
21
|
from IPython.core.interactiveshell import _modified_open as _modified_open_ # pyright: ignore[reportPrivateUsage]
|
|
21
22
|
from IPython.core.magic import Magics, line_magic, magics_class
|
|
@@ -27,7 +28,7 @@ from typing_extensions import override
|
|
|
27
28
|
import async_kernel
|
|
28
29
|
from async_kernel import utils
|
|
29
30
|
from async_kernel.caller import Caller
|
|
30
|
-
from async_kernel.common import Fixed
|
|
31
|
+
from async_kernel.common import Fixed, KernelInterrupt
|
|
31
32
|
from async_kernel.compiler import XCachingCompiler
|
|
32
33
|
from async_kernel.event_loop.run import get_runtime_matplotlib_guis
|
|
33
34
|
from async_kernel.pending import PendingManager
|
|
@@ -36,7 +37,6 @@ from async_kernel.typing import Channel, Content, Message, NoValue, Tags
|
|
|
36
37
|
if TYPE_CHECKING:
|
|
37
38
|
from collections.abc import Callable, Generator
|
|
38
39
|
|
|
39
|
-
from IPython.core.history import HistoryManager
|
|
40
40
|
from traitlets.config import Configurable
|
|
41
41
|
|
|
42
42
|
from async_kernel import Kernel
|
|
@@ -45,10 +45,6 @@ if TYPE_CHECKING:
|
|
|
45
45
|
__all__ = ["AsyncInteractiveShell"]
|
|
46
46
|
|
|
47
47
|
|
|
48
|
-
class KernelInterruptError(Exception):
|
|
49
|
-
"Raised to interrupt the kernel."
|
|
50
|
-
|
|
51
|
-
|
|
52
48
|
class AsyncDisplayHook(DisplayHook):
|
|
53
49
|
"""
|
|
54
50
|
A displayhook subclass that publishes data using [iopub_send][async_kernel.kernel.Kernel.iopub_send].
|
|
@@ -184,6 +180,7 @@ class AsyncInteractiveShell(InteractiveShell):
|
|
|
184
180
|
display_pub_class = Type(AsyncDisplayPublisher)
|
|
185
181
|
displayhook: Instance[AsyncDisplayHook]
|
|
186
182
|
display_pub: Instance[AsyncDisplayPublisher]
|
|
183
|
+
history_manager: HistoryManager
|
|
187
184
|
compiler_class = Type(XCachingCompiler)
|
|
188
185
|
compile: Instance[XCachingCompiler]
|
|
189
186
|
kernel: Instance[Kernel] = Instance("async_kernel.Kernel", (), read_only=True)
|
|
@@ -216,8 +213,6 @@ class AsyncInteractiveShell(InteractiveShell):
|
|
|
216
213
|
@override
|
|
217
214
|
def __init__(self, parent: None | Configurable = None) -> None:
|
|
218
215
|
super().__init__(parent=parent)
|
|
219
|
-
with contextlib.suppress(AttributeError):
|
|
220
|
-
utils.mark_thread_pydev_do_not_trace(self.history_manager.save_thread) # pyright: ignore[reportOptionalMemberAccess]
|
|
221
216
|
|
|
222
217
|
def _get_default_ns(self) -> dict[str, Any]:
|
|
223
218
|
# Copied from `InteractiveShell.init_user_ns`
|
|
@@ -282,6 +277,16 @@ class AsyncInteractiveShell(InteractiveShell):
|
|
|
282
277
|
|
|
283
278
|
self.set_hook("show_in_pager", _show_in_pager, 99)
|
|
284
279
|
|
|
280
|
+
@override
|
|
281
|
+
def init_history(self) -> None:
|
|
282
|
+
if self.subshell_id is None:
|
|
283
|
+
self.history_manager = HistoryManager(shell=self, parent=self)
|
|
284
|
+
self.configurables.append(self.history_manager) # pyright: ignore[reportArgumentType]
|
|
285
|
+
utils.mark_thread_pydev_do_not_trace(self.history_manager.save_thread)
|
|
286
|
+
else:
|
|
287
|
+
self.history_manager = HistoryManager(shell=self, parent=self, hist_file=":memory:")
|
|
288
|
+
self.history_manager.output_hist.update(self.kernel.main_shell.history_manager.output_hist)
|
|
289
|
+
|
|
285
290
|
@property
|
|
286
291
|
@override
|
|
287
292
|
def execution_count(self) -> int:
|
|
@@ -379,9 +384,9 @@ class AsyncInteractiveShell(InteractiveShell):
|
|
|
379
384
|
)
|
|
380
385
|
except (Exception, anyio.get_cancelled_exc_class()) as e:
|
|
381
386
|
# A safeguard to catch exceptions not caught by the shell.
|
|
382
|
-
err =
|
|
387
|
+
err = KernelInterrupt() if self.kernel.interface.last_interrupt_frame else e
|
|
383
388
|
else:
|
|
384
|
-
err = result.error_before_exec or result.error_in_exec if result else
|
|
389
|
+
err = result.error_before_exec or result.error_in_exec if result else KernelInterrupt()
|
|
385
390
|
if not err and Tags.raises_exception in tags:
|
|
386
391
|
msg = "An expected exception was not raised!"
|
|
387
392
|
err = RuntimeError(msg)
|
|
@@ -477,7 +482,7 @@ class AsyncInteractiveShell(InteractiveShell):
|
|
|
477
482
|
**_ignored,
|
|
478
483
|
) -> Content:
|
|
479
484
|
"""Handle a [history request](https://jupyter-client.readthedocs.io/en/stable/messaging.html#history)."""
|
|
480
|
-
history_manager
|
|
485
|
+
history_manager = self.history_manager
|
|
481
486
|
assert history_manager
|
|
482
487
|
match hist_access_type:
|
|
483
488
|
case "tail":
|