diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 84551b8..bc363b7 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -12,7 +12,7 @@ jobs: steps: - uses: actions/checkout@v7 - name: Set up Python - uses: actions/setup-python@v6 + uses: actions/setup-python@v7 with: python-version: 3.x - name: Install dependencies diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 160c97d..5c7c8cb 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -26,7 +26,7 @@ jobs: - name: Checkout uses: actions/checkout@v7 - - uses: actions/setup-python@v6 + - uses: actions/setup-python@v7 with: python-version: ${{ matrix.python-version }} diff --git a/pyproject.toml b/pyproject.toml index ca9aee5..d7d506e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -34,6 +34,7 @@ dev = [ "pytest", "ruff", "trio", + "typing_extensions >=4.15.0,<5.0.0; python_version<'3.11'", ] [tool.hatch.build.targets.wheel] diff --git a/src/ypywidgets/__init__.py b/src/ypywidgets/__init__.py index ed8598d..accf874 100644 --- a/src/ypywidgets/__init__.py +++ b/src/ypywidgets/__init__.py @@ -1,8 +1,7 @@ import importlib.metadata -from .widget import Widget as Widget from .reactive import Reactive as Reactive - +from .widget import Widget as Widget try: __version__ = importlib.metadata.version("ypywidgets") diff --git a/src/ypywidgets/comm.py b/src/ypywidgets/comm.py index b2d1d91..7c70afa 100644 --- a/src/ypywidgets/comm.py +++ b/src/ypywidgets/comm.py @@ -92,10 +92,10 @@ def __init__( _model_name = self.ydoc["_model_name"] = Text() _model_name += model_name if comm_metadata is None: - comm_metadata = dict( - ymodel_name=model_name, - create_ydoc=not ydoc, - ) + comm_metadata = { + "ymodel_name": model_name, + "create_ydoc": not ydoc, + } self._comm = create_widget_comm(comm_data, comm_metadata, comm_id) self._comm_provider = CommProvider(self.ydoc, self._comm) diff --git a/tests/conftest.py b/tests/conftest.py index ede26f5..f043664 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -1,4 +1,5 @@ import math +import sys from contextlib import AsyncExitStack from functools import partial from typing import Any, cast @@ -9,16 +10,23 @@ from anyio.abc import TaskGroup from anyio.streams.memory import MemoryObjectReceiveStream, MemoryObjectSendStream from pycrdt import ( + TransactionEvent, YMessageType, YSyncMessageType, - TransactionEvent, create_sync_message, create_update_message, handle_sync_message, ) + from ypywidgets import Widget from ypywidgets.comm import CommWidget +if sys.version_info >= (3, 11): + from typing import Self +else: # pragma: nocover + from typing_extensions import Self + + pytestmark = pytest.mark.anyio @@ -67,10 +75,14 @@ def __init__(self): def add_task(self, task): self.tasks.append(task) - async def __aenter__(self) -> "Context": + async def __aenter__(self) -> Self: + send_send_stream: MemoryObjectSendStream + send_recv_stream: MemoryObjectReceiveStream send_send_stream, send_recv_stream = create_memory_object_stream( max_buffer_size=math.inf ) + recv_send_stream: MemoryObjectSendStream + recv_recv_stream: MemoryObjectReceiveStream recv_send_stream, recv_recv_stream = create_memory_object_stream( max_buffer_size=math.inf ) @@ -126,11 +138,11 @@ async def receive(self) -> None: while True: ( msg_type, - data, - metadata, + _data, + _metadata, buffers, - target_name, - target_module, + _target_name, + _target_module, ) = await self.comm.send_recv_stream.receive() match msg_type: case "comm_open": diff --git a/tests/test_attributes.py b/tests/test_attributes.py index 7e762d5..d2b6d88 100644 --- a/tests/test_attributes.py +++ b/tests/test_attributes.py @@ -3,6 +3,7 @@ import pytest from anyio import sleep from pycrdt import Text + from ypywidgets import Reactive, Widget from ypywidgets.comm import CommWidget @@ -74,5 +75,5 @@ async def test_watch_attribute(widget_factories, synced_widgets, capfd, context) # we're seeing the remote widget watch callback await sleep(0.01) - out, err = capfd.readouterr() + out, _err = capfd.readouterr() assert out == "foo changed: 'None'->'foo'\n" diff --git a/tests/test_comm_awareness.py b/tests/test_comm_awareness.py index 5f9ca0f..3295591 100644 --- a/tests/test_comm_awareness.py +++ b/tests/test_comm_awareness.py @@ -2,6 +2,7 @@ import pytest from pycrdt import Awareness, Doc, YMessageType, create_awareness_message + from ypywidgets.comm import CommWidget pytestmark = pytest.mark.anyio @@ -29,7 +30,7 @@ async def test_comm_widget_exposes_provider_awareness(): assert widget.awareness is widget._comm_provider.awareness -async def test_comm_widget_awareness_observe_and_unobserve(): +async def test_comm_widget_awareness_observe_and_unobserve() -> None: widget = CommWidget() events: list[str] = []