Skip to content

Commit 0fe31fb

Browse files
committed
MAINT: Use Enum, rename AWS -> SAGEMAKER
1 parent c04c849 commit 0fe31fb

File tree

2 files changed

+42
-27
lines changed

2 files changed

+42
-27
lines changed
Lines changed: 33 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,36 @@
1-
IN_JUPYTER_NOTEBOOK = False
2-
IN_JUPYTERLAB = False
3-
IN_JUPYTERLITE = False
4-
IN_AWS = False
1+
from enum import Enum
52

6-
try:
7-
from google.colab import files
8-
IN_COLAB = True
9-
except:
10-
IN_COLAB = False
113

12-
if not IN_COLAB:
4+
class Env(Enum):
5+
JUPYTER_NOTEBOOK = 'notebook'
6+
JUPYTERLAB = 'lab'
7+
JUPYTERLITE = 'lite'
8+
SAGEMAKER = 'sagemaker'
9+
HYPHA = 'hypha'
10+
COLAB = 'colab'
11+
12+
13+
def find_env():
1314
try:
14-
from IPython import get_ipython
15-
parent_header = get_ipython().parent_header
16-
username = parent_header['header']['username']
17-
if username == '':
18-
IN_JUPYTERLAB = True
19-
elif username == 'username':
20-
IN_JUPYTER_NOTEBOOK = True
21-
else:
22-
IN_AWS = True
23-
except AttributeError:
24-
IN_JUPYTERLITE = True
15+
from google.colab import files
16+
return Env.COLAB
17+
except:
18+
try:
19+
from IPython import get_ipython
20+
parent_header = get_ipython().parent_header
21+
username = parent_header['header']['username']
22+
if username == '':
23+
return Env.JUPYTERLAB
24+
elif username == 'username':
25+
return Env.JUPYTER_NOTEBOOK
26+
else:
27+
return Env.SAGEMAKER
28+
except AttributeError:
29+
try:
30+
import js
31+
return Env.JUPYTERLITE
32+
except ImportError:
33+
return Env.HYPHA
34+
35+
36+
ENVIRONMENT = find_env()

itkwidgets/viewer.py

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
from ._initialization_params import init_params_dict, init_key_aliases
1212
from ._method_types import deferred_methods
1313
from .integrations import _detect_render_type, _get_viewer_image, _get_viewer_point_sets
14-
from .integrations.environment import IN_JUPYTERLITE
14+
from .integrations.environment import ENVIRONMENT, Env
1515
from .render_types import RenderType
1616
from .viewer_config import ITK_VIEWER_SRC, PYDATA_SPHINX_HREF, MUI_HREF
1717

@@ -36,7 +36,7 @@ def __init__(
3636
self.init_data = {}
3737
self.img = display(HTML(f'<div />'), display_id=str(uuid.uuid4()))
3838
self.wid = None
39-
if not IN_JUPYTERLITE:
39+
if ENVIRONMENT is not Env.JUPYTERLITE:
4040
self.viewer_event = threading.Event()
4141
self.data_event = threading.Event()
4242

@@ -100,11 +100,10 @@ async def run(self, ctx):
100100
config=config,
101101
)
102102
_viewer_count += 1
103-
if not IN_JUPYTERLITE:
103+
if ENVIRONMENT is not Env.JUPYTERLITE:
104104
itk_viewer.registerEventListener(
105105
'renderedImageAssigned', self.set_event
106106
)
107-
if not IN_JUPYTERLITE:
108107
# Once the viewer has been created any queued requests can be run
109108
asyncio.get_running_loop().call_soon_threadsafe(self.viewer_event.set)
110109

@@ -162,7 +161,7 @@ def __init__(
162161
self.viewer_rpc = ViewerRPC(
163162
ui_collapsed=ui_collapsed, rotate=rotate, ui=ui, **add_data_kwargs
164163
)
165-
if not IN_JUPYTERLITE:
164+
if ENVIRONMENT is not Env.JUPYTERLITE:
166165
self.bg_jobs = bg.BackgroundJobManager()
167166
self.queue = queue.Queue()
168167
self.deferred_queue = queue.Queue()
@@ -173,6 +172,10 @@ def __init__(
173172
def loop(self):
174173
return asyncio.get_running_loop()
175174

175+
@property
176+
def has_viewer(self):
177+
return hasattr(self.viewer_rpc, 'itk_viewer')
178+
176179
async def run_queued_requests(self):
177180
def _run_queued_requests(queue):
178181
method_name, args, kwargs = queue.get()
@@ -195,7 +198,7 @@ def queue_worker(self):
195198
loop.run_until_complete(task)
196199

197200
def queue_request(self, method, *args, **kwargs):
198-
if IN_JUPYTERLITE or hasattr(self.viewer_rpc, 'itk_viewer'):
201+
if ENVIRONMENT is Env.JUPYTERLITE or self.has_viewer:
199202
fn = getattr(self.viewer_rpc.itk_viewer, method)
200203
fn(*args, **kwargs)
201204
elif method in deferred_methods():

0 commit comments

Comments
 (0)