11
11
from ._initialization_params import init_params_dict , init_key_aliases
12
12
from ._method_types import deferred_methods
13
13
from .integrations import _detect_render_type , _get_viewer_image , _get_viewer_point_sets
14
+ from .integrations .environment import ENVIRONMENT , Env
14
15
from .render_types import RenderType
15
16
from .viewer_config import ITK_VIEWER_SRC , PYDATA_SPHINX_HREF , MUI_HREF
16
17
@@ -35,8 +36,9 @@ def __init__(
35
36
self .init_data = {}
36
37
self .img = display (HTML (f'<div />' ), display_id = str (uuid .uuid4 ()))
37
38
self .wid = None
38
- self .viewer_event = threading .Event ()
39
- self .data_event = threading .Event ()
39
+ if ENVIRONMENT is not Env .JUPYTERLITE :
40
+ self .viewer_event = threading .Event ()
41
+ self .data_event = threading .Event ()
40
42
41
43
def _get_input_data (self ):
42
44
input_options = ["data" , "image" , "label_image" , "point_sets" ]
@@ -98,11 +100,12 @@ async def run(self, ctx):
98
100
config = config ,
99
101
)
100
102
_viewer_count += 1
101
- itk_viewer .registerEventListener (
102
- 'renderedImageAssigned' , self .set_event
103
- )
104
- # Once the viewer has been created any queued requests can be run
105
- asyncio .get_running_loop ().call_soon_threadsafe (self .viewer_event .set )
103
+ if ENVIRONMENT is not Env .JUPYTERLITE :
104
+ itk_viewer .registerEventListener (
105
+ 'renderedImageAssigned' , self .set_event
106
+ )
107
+ # Once the viewer has been created any queued requests can be run
108
+ asyncio .get_running_loop ().call_soon_threadsafe (self .viewer_event .set )
106
109
107
110
self .set_default_ui_values (itk_viewer )
108
111
self .itk_viewer = itk_viewer
@@ -155,19 +158,24 @@ def __init__(
155
158
self , ui_collapsed = True , rotate = False , ui = "pydata-sphinx" , ** add_data_kwargs
156
159
):
157
160
"""Create a viewer."""
158
- self .bg_jobs = bg .BackgroundJobManager ()
159
161
self .viewer_rpc = ViewerRPC (
160
162
ui_collapsed = ui_collapsed , rotate = rotate , ui = ui , ** add_data_kwargs
161
163
)
162
- self .queue = queue .Queue ()
163
- self .deferred_queue = queue .Queue ()
164
- self .bg_thread = self .bg_jobs .new (self .queue_worker )
164
+ if ENVIRONMENT is not Env .JUPYTERLITE :
165
+ self .bg_jobs = bg .BackgroundJobManager ()
166
+ self .queue = queue .Queue ()
167
+ self .deferred_queue = queue .Queue ()
168
+ self .bg_thread = self .bg_jobs .new (self .queue_worker )
165
169
api .export (self .viewer_rpc )
166
170
167
171
@property
168
172
def loop (self ):
169
173
return asyncio .get_running_loop ()
170
174
175
+ @property
176
+ def has_viewer (self ):
177
+ return hasattr (self .viewer_rpc , 'itk_viewer' )
178
+
171
179
async def run_queued_requests (self ):
172
180
def _run_queued_requests (queue ):
173
181
method_name , args , kwargs = queue .get ()
@@ -190,7 +198,7 @@ def queue_worker(self):
190
198
loop .run_until_complete (task )
191
199
192
200
def queue_request (self , method , * args , ** kwargs ):
193
- if hasattr ( self . viewer_rpc , 'itk_viewer' ) :
201
+ if ENVIRONMENT is Env . JUPYTERLITE or self . has_viewer :
194
202
fn = getattr (self .viewer_rpc .itk_viewer , method )
195
203
fn (* args , ** kwargs )
196
204
elif method in deferred_methods ():
0 commit comments