Skip to content

Commit 9fb733b

Browse files
committed
Fix bug in comm based server side validation,
which was causing "Widget Javascript not detected" to be printed to the console despite the Javascript being installed correctly
1 parent f368f96 commit 9fb733b

File tree

1 file changed

+10
-8
lines changed

1 file changed

+10
-8
lines changed

ipywidgets/widgets/widget.py

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88

99
from contextlib import contextmanager
1010
import collections
11+
import sys
1112

1213
from IPython.core.getipython import get_ipython
1314
from ipykernel.comm import Comm
@@ -461,16 +462,20 @@ def _trait_from_json(x, self):
461462

462463
def _ipython_display_(self, **kwargs):
463464
"""Called when `IPython.display.display` is called on the widget."""
465+
def loud_error(message):
466+
self.log.warn(message)
467+
sys.stderr.write('%s\n' % message)
468+
464469
# Show view.
465470
if self._view_name is not None:
466-
validated = validate_version()
471+
validated = Widget._version_validated
467472

468473
# Before the user tries to display a widget. Validate that the
469474
# widget front-end is what is expected.
470475
if validated is None:
471-
self.log.warn('Widget Javascript not detected. It may not be installed properly.')
476+
loud_error('Widget Javascript not detected. It may not be installed properly.')
472477
elif not validated:
473-
self.log.warn('The installed widget Javascript is the wrong version.')
478+
loud_error('The installed widget Javascript is the wrong version.')
474479

475480
self._send({"method": "display"})
476481
self._handle_displayed(**kwargs)
@@ -480,14 +485,11 @@ def _send(self, msg, buffers=None):
480485
self.comm.send(data=msg, buffers=buffers)
481486

482487

483-
_version_validated = None
488+
Widget._version_validated = None
484489
def handle_version_comm_opened(comm, msg):
485490
"""Called when version comm is opened, because the front-end wants to
486491
validate the version."""
487492
def handle_version_message(msg):
488-
_version_validated = msg['content']['data']['validated']
493+
Widget._version_validated = msg['content']['data']['validated']
489494
comm.on_msg(handle_version_message)
490495
comm.send({'version': '4.1.0dev'})
491-
492-
def validate_version():
493-
return _version_validated

0 commit comments

Comments
 (0)