Skip to content

Commit 2e007e2

Browse files
committed
DOC: Add docstrings for the ViewerRPC class
1 parent 5349eeb commit 2e007e2

File tree

1 file changed

+36
-17
lines changed

1 file changed

+36
-17
lines changed

itkwidgets/viewer.py

Lines changed: 36 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,7 @@
88
from typing import List, Union, Tuple
99
from IPython.display import display, HTML
1010
from IPython.lib import backgroundjobs as bg
11-
from ngff_zarr import (
12-
from_ngff_zarr,
13-
to_ngff_image,
14-
Multiscales,
15-
NgffImage
16-
)
11+
from ngff_zarr import from_ngff_zarr, to_ngff_image, Multiscales, NgffImage
1712
import uuid
1813

1914
from ._method_types import deferred_methods
@@ -49,8 +44,14 @@ class ViewerRPC:
4944
"""Viewer remote procedure interface."""
5045

5146
def __init__(
52-
self, ui_collapsed=True, rotate=False, ui="pydata-sphinx", init_data=None, parent=None, **add_data_kwargs
53-
):
47+
self,
48+
ui_collapsed: bool = True,
49+
rotate: bool = False,
50+
ui: str = "pydata-sphinx",
51+
init_data: dict = None,
52+
parent: str = None,
53+
**add_data_kwargs,
54+
) -> None:
5455
global _codecs_registered, _cell_watcher
5556
"""Create a viewer."""
5657
# Register codecs if they haven't been already
@@ -71,10 +72,10 @@ def __init__(
7172
self.viewer_event = threading.Event()
7273
self.data_event = threading.Event()
7374

74-
async def setup(self):
75+
async def setup(self) -> None:
7576
pass
7677

77-
async def run(self, ctx):
78+
async def run(self, ctx: dict) -> None:
7879
"""ImJoy plugin setup function."""
7980
global _viewer_count, _cell_watcher
8081
ui = self._init_viewer_kwargs.get("ui", None)
@@ -112,21 +113,32 @@ async def run(self, ctx):
112113
await self.create_screenshot()
113114
# Set up an event listener so that the embedded
114115
# screenshot is updated when the user requests
115-
itk_viewer.registerEventListener(
116-
'screenshotTaken', self.update_screenshot
117-
)
116+
itk_viewer.registerEventListener('screenshotTaken', self.update_screenshot)
118117

119-
def set_default_ui_values(self, itk_viewer):
118+
def set_default_ui_values(self, itk_viewer: dict) -> None:
119+
"""Set any UI values passed in on initialization.
120+
121+
:param itk_viewer: The ImJoy plugin API to use
122+
:type itk_viewer: dict
123+
"""
120124
settings = init_params_dict(itk_viewer)
121125
for key, value in self._init_viewer_kwargs.items():
122126
if key in settings.keys():
123127
settings[key](value)
124128

125-
async def create_screenshot(self):
129+
async def create_screenshot(self) -> None:
130+
"""Grab a screenshot of the current Viewer and embed it in the
131+
notebook cell.
132+
"""
126133
base64_image = await self.itk_viewer.captureImage()
127134
self.update_screenshot(base64_image)
128135

129-
def update_screenshot(self, base64_image):
136+
def update_screenshot(self, base64_image: str) -> None:
137+
"""Embed an image in the current notebook cell.
138+
139+
:param base64_image: An encoded image to be embedded
140+
:type base64_image: bstring
141+
"""
130142
html = HTML(
131143
f'''
132144
<img id="screenshot_{self.wid}" src={base64_image}>
@@ -141,11 +153,18 @@ def update_screenshot(self, base64_image):
141153
self.img.display(html)
142154

143155
def update_viewer_status(self):
156+
"""Update the CellWatcher class to indicate that the Viewer is ready"""
144157
global _cell_watcher
145158
if not _cell_watcher.viewer_ready(self.parent):
146159
_cell_watcher.update_viewer_status(self.parent, True)
147160

148-
def set_event(self, event_data):
161+
def set_event(self, event_data: str) -> None:
162+
"""Set the event in the background thread to indicate that the plugin
163+
API is available so that queued setter requests are processed.
164+
165+
:param event_data: The name of the image that has been rendered
166+
:type event_data: string
167+
"""
149168
if not self.data_event.is_set():
150169
# Once the data has been set the deferred queue requests can be run
151170
asyncio.get_running_loop().call_soon_threadsafe(self.data_event.set)

0 commit comments

Comments
 (0)