88from typing import List , Union , Tuple
99from IPython .display import display , HTML
1010from 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
1712import uuid
1813
1914from ._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