Files
MLPproject/.venv/lib/python3.12/site-packages/ipykernel/subshell.py
2025-10-23 15:44:32 +02:00

42 lines
1023 B
Python

"""A thread for a subshell."""
import asyncio
from typing import Any
import zmq
from .socket_pair import SocketPair
from .thread import BaseThread
class SubshellThread(BaseThread):
"""A thread for a subshell.
.. versionadded:: 7
"""
def __init__(
self,
subshell_id: str,
context: zmq.Context[Any],
**kwargs,
):
"""Initialize the thread."""
super().__init__(name=f"subshell-{subshell_id}", **kwargs)
self.shell_channel_to_subshell = SocketPair(context, subshell_id)
self.subshell_to_shell_channel = SocketPair(context, subshell_id + "-reverse")
# When aborting flag is set, execute_request messages to this subshell will be aborted.
self.aborting = False
self.asyncio_lock = asyncio.Lock()
def run(self) -> None:
"""Run the thread."""
try:
super().run()
finally:
self.shell_channel_to_subshell.close()
self.subshell_to_shell_channel.close()