fmt, fix
This commit is contained in:
@@ -7,8 +7,8 @@ from .events import (
|
|||||||
event_from_history_output,
|
event_from_history_output,
|
||||||
)
|
)
|
||||||
from .jupyter.app import JupyterApp
|
from .jupyter.app import JupyterApp
|
||||||
from .jupyter.shell import JupyterShell
|
|
||||||
from .jupyter.messages import JupyterMessage, KernelMessage, ParsedJupyterMessage
|
from .jupyter.messages import JupyterMessage, KernelMessage, ParsedJupyterMessage
|
||||||
|
from .jupyter.shell import JupyterShell
|
||||||
from .jupyter.transport import InputRequest, JupyterTransport
|
from .jupyter.transport import InputRequest, JupyterTransport
|
||||||
from .models import (
|
from .models import (
|
||||||
AppInfo,
|
AppInfo,
|
||||||
@@ -46,9 +46,9 @@ __all__ = [
|
|||||||
"InputRequest",
|
"InputRequest",
|
||||||
"JSONValue",
|
"JSONValue",
|
||||||
"JupyterApp",
|
"JupyterApp",
|
||||||
|
"JupyterMessage",
|
||||||
"JupyterShell",
|
"JupyterShell",
|
||||||
"JupyterTransport",
|
"JupyterTransport",
|
||||||
"JupyterMessage",
|
|
||||||
"KernelMessage",
|
"KernelMessage",
|
||||||
"ParsedJupyterMessage",
|
"ParsedJupyterMessage",
|
||||||
"Shell",
|
"Shell",
|
||||||
|
|||||||
@@ -18,17 +18,17 @@ from .shell import JupyterShell
|
|||||||
from .transport import InputRequest, JupyterTransport
|
from .transport import InputRequest, JupyterTransport
|
||||||
|
|
||||||
__all__ = [
|
__all__ = [
|
||||||
"InputRequest",
|
|
||||||
"DisplayDataMessage",
|
"DisplayDataMessage",
|
||||||
"ErrorMessage",
|
"ErrorMessage",
|
||||||
"ExecuteReplyMessage",
|
"ExecuteReplyMessage",
|
||||||
"ExecuteResultMessage",
|
"ExecuteResultMessage",
|
||||||
|
"InputRequest",
|
||||||
"InputRequestMessage",
|
"InputRequestMessage",
|
||||||
"JupyterApp",
|
"JupyterApp",
|
||||||
"JupyterMessage",
|
"JupyterMessage",
|
||||||
"KernelMessage",
|
|
||||||
"JupyterShell",
|
"JupyterShell",
|
||||||
"JupyterTransport",
|
"JupyterTransport",
|
||||||
|
"KernelMessage",
|
||||||
"KnownJupyterMessage",
|
"KnownJupyterMessage",
|
||||||
"ParsedJupyterMessage",
|
"ParsedJupyterMessage",
|
||||||
"StatusMessage",
|
"StatusMessage",
|
||||||
|
|||||||
@@ -2,20 +2,19 @@ from typing import Annotated, ClassVar, Final, Literal
|
|||||||
|
|
||||||
from pydantic import BaseModel, ConfigDict, Field, TypeAdapter, ValidationError
|
from pydantic import BaseModel, ConfigDict, Field, TypeAdapter, ValidationError
|
||||||
|
|
||||||
|
|
||||||
type JupyterChannel = Literal["iopub", "shell", "stdin"]
|
type JupyterChannel = Literal["iopub", "shell", "stdin"]
|
||||||
type MessageStatus = Literal["ok", "error", "abort"]
|
type MessageStatus = Literal["ok", "error", "abort"]
|
||||||
|
|
||||||
STREAM: Final[Literal["stream"]] = "stream"
|
STREAM: Final = "stream"
|
||||||
DISPLAY_DATA: Final[Literal["display_data"]] = "display_data"
|
DISPLAY_DATA: Final = "display_data"
|
||||||
UPDATE_DISPLAY_DATA: Final[Literal["update_display_data"]] = "update_display_data"
|
UPDATE_DISPLAY_DATA: Final = "update_display_data"
|
||||||
EXECUTE_RESULT: Final[Literal["execute_result"]] = "execute_result"
|
EXECUTE_RESULT: Final = "execute_result"
|
||||||
ERROR: Final[Literal["error"]] = "error"
|
ERROR: Final = "error"
|
||||||
STATUS: Final[Literal["status"]] = "status"
|
STATUS: Final = "status"
|
||||||
EXECUTE_INPUT: Final[Literal["execute_input"]] = "execute_input"
|
EXECUTE_INPUT: Final = "execute_input"
|
||||||
CLEAR_OUTPUT: Final[Literal["clear_output"]] = "clear_output"
|
CLEAR_OUTPUT: Final = "clear_output"
|
||||||
EXECUTE_REPLY: Final[Literal["execute_reply"]] = "execute_reply"
|
EXECUTE_REPLY: Final = "execute_reply"
|
||||||
INPUT_REQUEST: Final[Literal["input_request"]] = "input_request"
|
INPUT_REQUEST: Final = "input_request"
|
||||||
|
|
||||||
|
|
||||||
class MimeContent(BaseModel):
|
class MimeContent(BaseModel):
|
||||||
|
|||||||
@@ -11,8 +11,6 @@ from .messages import (
|
|||||||
ExecuteReplyMessage,
|
ExecuteReplyMessage,
|
||||||
InputRequestMessage,
|
InputRequestMessage,
|
||||||
JupyterChannel,
|
JupyterChannel,
|
||||||
JupyterMessage,
|
|
||||||
KernelMessage,
|
|
||||||
ParsedJupyterMessage,
|
ParsedJupyterMessage,
|
||||||
StatusMessage,
|
StatusMessage,
|
||||||
parse_jupyter_message,
|
parse_jupyter_message,
|
||||||
@@ -116,7 +114,9 @@ class JupyterTransport:
|
|||||||
async def execute(self, code: str) -> str:
|
async def execute(self, code: str) -> str:
|
||||||
"""Submit one cell and return its Jupyter message ID."""
|
"""Submit one cell and return its Jupyter message ID."""
|
||||||
if self._reader_failure is not None:
|
if self._reader_failure is not None:
|
||||||
raise RuntimeError("JupyterTransport channel reader failed") from self._reader_failure
|
raise RuntimeError(
|
||||||
|
"JupyterTransport channel reader failed"
|
||||||
|
) from self._reader_failure
|
||||||
if self.client is None:
|
if self.client is None:
|
||||||
raise RuntimeError("JupyterTransport has not been started")
|
raise RuntimeError("JupyterTransport has not been started")
|
||||||
|
|
||||||
@@ -131,7 +131,9 @@ class JupyterTransport:
|
|||||||
) -> AsyncIterator[ParsedJupyterMessage | InputRequest]:
|
) -> AsyncIterator[ParsedJupyterMessage | InputRequest]:
|
||||||
"""Yield decoded output, input, and completion messages for one call."""
|
"""Yield decoded output, input, and completion messages for one call."""
|
||||||
if self._reader_failure is not None:
|
if self._reader_failure is not None:
|
||||||
raise RuntimeError("JupyterTransport channel reader failed") from self._reader_failure
|
raise RuntimeError(
|
||||||
|
"JupyterTransport channel reader failed"
|
||||||
|
) from self._reader_failure
|
||||||
if self.client is None:
|
if self.client is None:
|
||||||
raise RuntimeError("JupyterTransport has not been started")
|
raise RuntimeError("JupyterTransport has not been started")
|
||||||
if self._active_call != call_id:
|
if self._active_call != call_id:
|
||||||
|
|||||||
+3
-2
@@ -10,7 +10,6 @@ from pathlib import Path
|
|||||||
from uuid import uuid4
|
from uuid import uuid4
|
||||||
|
|
||||||
from ipython_shell.jupyter import InputRequest, JupyterApp, ParsedJupyterMessage
|
from ipython_shell.jupyter import InputRequest, JupyterApp, ParsedJupyterMessage
|
||||||
|
|
||||||
from st_demo.ui import event_to_record, latex_body, preferred_mime
|
from st_demo.ui import event_to_record, latex_body, preferred_mime
|
||||||
|
|
||||||
|
|
||||||
@@ -28,7 +27,9 @@ class _CallFailed:
|
|||||||
|
|
||||||
@dataclass
|
@dataclass
|
||||||
class _BackgroundCall:
|
class _BackgroundCall:
|
||||||
events: queue.Queue[ParsedJupyterMessage | InputRequest | _CallFinished | _CallFailed]
|
events: queue.Queue[
|
||||||
|
ParsedJupyterMessage | InputRequest | _CallFinished | _CallFailed
|
||||||
|
]
|
||||||
task: Future[None] | None = None
|
task: Future[None] | None = None
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -13,7 +13,6 @@ from ipython_shell.jupyter.messages import (
|
|||||||
)
|
)
|
||||||
from ipython_shell.jupyter.transport import InputRequest
|
from ipython_shell.jupyter.transport import InputRequest
|
||||||
|
|
||||||
|
|
||||||
MIME_PRIORITY: Final[tuple[str, ...]] = (
|
MIME_PRIORITY: Final[tuple[str, ...]] = (
|
||||||
"text/html",
|
"text/html",
|
||||||
"image/svg+xml",
|
"image/svg+xml",
|
||||||
|
|||||||
+1
-1
@@ -2,10 +2,10 @@ import unittest
|
|||||||
|
|
||||||
from fastapi.testclient import TestClient
|
from fastapi.testclient import TestClient
|
||||||
|
|
||||||
|
from ipython_agent.ipython_wrapper import get_app_info
|
||||||
from ipython_mcp.app import app as mcp_app
|
from ipython_mcp.app import app as mcp_app
|
||||||
from ipython_shell import App, AppInfo
|
from ipython_shell import App, AppInfo
|
||||||
from ipython_webapp.app import app as web_app
|
from ipython_webapp.app import app as web_app
|
||||||
from ipython_agent.ipython_wrapper import get_app_info
|
|
||||||
|
|
||||||
|
|
||||||
class AppInfoTests(unittest.IsolatedAsyncioTestCase):
|
class AppInfoTests(unittest.IsolatedAsyncioTestCase):
|
||||||
|
|||||||
@@ -3,8 +3,8 @@ import re
|
|||||||
import unittest
|
import unittest
|
||||||
|
|
||||||
from ipython_shell.jupyter.app import JupyterApp
|
from ipython_shell.jupyter.app import JupyterApp
|
||||||
from ipython_shell.jupyter.shell import JupyterShell
|
|
||||||
from ipython_shell.jupyter.messages import ExecuteResultMessage
|
from ipython_shell.jupyter.messages import ExecuteResultMessage
|
||||||
|
from ipython_shell.jupyter.shell import JupyterShell
|
||||||
from ipython_shell.jupyter.transport import InputRequest
|
from ipython_shell.jupyter.transport import InputRequest
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -211,12 +211,10 @@ class AsyncTransportTests(unittest.IsolatedAsyncioTestCase):
|
|||||||
await transport.start()
|
await transport.start()
|
||||||
try:
|
try:
|
||||||
call_id = await transport.execute(
|
call_id = await transport.execute(
|
||||||
"import matplotlib.pyplot as plt\n"
|
"import matplotlib.pyplot as plt\nplt.plot([1, 2, 3], [4, 5, 6])"
|
||||||
"plt.plot([1, 2, 3], [4, 5, 6])"
|
|
||||||
)
|
)
|
||||||
messages = [
|
messages = [
|
||||||
message
|
message async for message in transport.messages_for(call_id)
|
||||||
async for message in transport.messages_for(call_id)
|
|
||||||
]
|
]
|
||||||
finally:
|
finally:
|
||||||
await transport.shutdown()
|
await transport.shutdown()
|
||||||
|
|||||||
Reference in New Issue
Block a user