def find_static_assets():
    import warnings
    try:
        import widgetsnbextension
        if hasattr(widgetsnbextension, 'find_static_assets'):
            return widgetsnbextension.find_static_assets()
        else:
            warnings.warn("""The version of ipywidgets that you have installed
            only works with Jupyter Notebook 4.2 or later.  Your version of the
            Jupyter Notebook is too old. If you'd like to use ipywidgets with an
            older version of the notebook, use ipywidgets 4.x or earlier.
            """, RuntimeWarning)
            return []
    except ImportError:
        warnings.warn("""To use the widgets with your installed Jupyter Notebook
        version, please install ipywidgets 4.x or earlier.""", RuntimeWarning)
        return []
Example #2
0
def find_static_assets():
    import warnings
    try:
        import widgetsnbextension
        if hasattr(widgetsnbextension, 'find_static_assets'):
            return widgetsnbextension.find_static_assets()
        else:
            warnings.warn(
                """The version of ipywidgets that you have installed
            only works with Jupyter Notebook 4.2 or later.  Your version of the
            Jupyter Notebook is too old. If you'd like to use ipywidgets with an
            older version of the notebook, use ipywidgets 4.x or earlier.
            """, RuntimeWarning)
            return []
    except ImportError:
        warnings.warn(
            """To use the widgets with your installed Jupyter Notebook
        version, please install ipywidgets 4.x or earlier.""", RuntimeWarning)
        return []
Example #3
0
    def init_handlers(self, settings):
        """Load the (URL pattern, handler) tuples for each component."""

        # Order matters. The first handler to match the URL will handle the request.
        handlers = []
        handlers.append((r'/deprecatedwidgets/(.*)', DeprecationHandler))
        handlers.extend(load_handlers('tree.handlers'))
        handlers.extend([(r"/login", settings['login_handler_class'])])
        handlers.extend([(r"/logout", settings['logout_handler_class'])])
        handlers.extend(load_handlers('files.handlers'))
        handlers.extend(load_handlers('notebook.handlers'))
        handlers.extend(load_handlers('nbconvert.handlers'))
        handlers.extend(load_handlers('kernelspecs.handlers'))
        handlers.extend(load_handlers('edit.handlers'))
        handlers.extend(load_handlers('services.api.handlers'))
        handlers.extend(load_handlers('services.config.handlers'))
        handlers.extend(load_handlers('services.kernels.handlers'))
        handlers.extend(load_handlers('services.contents.handlers'))
        handlers.extend(load_handlers('services.sessions.handlers'))
        handlers.extend(load_handlers('services.nbconvert.handlers'))
        handlers.extend(load_handlers('services.kernelspecs.handlers'))
        handlers.extend(load_handlers('services.security.handlers'))

        # BEGIN HARDCODED WIDGETS HACK
        widgets = None
        try:
            import widgetsnbextension as widgets
        except:
            try:
                import ipywidgets as widgets
            except:
                app_log.warning(
                    'Widgets are unavailable. Please install widgetsnbextension or ipywidgets 4.0'
                )
        if widgets is not None:
            handlers.append(
                (
                    r"/nbextensions/widgets/(.*)",
                    FileFindHandler,
                    {
                        'path': widgets.find_static_assets(),
                        'no_cache_paths':
                        ['/'],  # don't cache anything in nbextensions
                    }), )
        # END HARDCODED WIDGETS HACK

        handlers.append(
            (
                r"/nbextensions/(.*)",
                FileFindHandler,
                {
                    'path': settings['nbextensions_path'],
                    'no_cache_paths':
                    ['/'],  # don't cache anything in nbextensions
                }), )
        handlers.append((
            r"/custom/(.*)",
            FileFindHandler,
            {
                'path': settings['static_custom_path'],
                'no_cache_paths': ['/'],  # don't cache anything in custom
            }))
        # register base handlers last
        handlers.extend(load_handlers('base.handlers'))
        # set the URL that will be redirected from `/`
        handlers.append((
            r'/?',
            web.RedirectHandler,
            {
                'url': settings['default_url'],
                'permanent': False,  # want 302, not 301
            }))

        # prepend base_url onto the patterns that we match
        new_handlers = []
        for handler in handlers:
            pattern = url_path_join(settings['base_url'], handler[0])
            new_handler = tuple([pattern] + list(handler[1:]))
            new_handlers.append(new_handler)
        # add 404 on the end, which will catch everything that falls through
        new_handlers.append((r'(.*)', Template404))
        return new_handlers
Example #4
0
    def init_handlers(self, settings):
        """Load the (URL pattern, handler) tuples for each component."""
        
        # Order matters. The first handler to match the URL will handle the request.
        handlers = []
        handlers.append((r'/deprecatedwidgets/(.*)', DeprecationHandler))
        handlers.extend(load_handlers('tree.handlers'))
        handlers.extend([(r"/login", settings['login_handler_class'])])
        handlers.extend([(r"/logout", settings['logout_handler_class'])])
        handlers.extend(load_handlers('files.handlers'))
        handlers.extend(load_handlers('notebook.handlers'))
        handlers.extend(load_handlers('nbconvert.handlers'))
        handlers.extend(load_handlers('kernelspecs.handlers'))
        handlers.extend(load_handlers('edit.handlers'))
        handlers.extend(load_handlers('services.api.handlers'))
        handlers.extend(load_handlers('services.config.handlers'))
        handlers.extend(load_handlers('services.kernels.handlers'))
        handlers.extend(load_handlers('services.contents.handlers'))
        handlers.extend(load_handlers('services.sessions.handlers'))
        handlers.extend(load_handlers('services.nbconvert.handlers'))
        handlers.extend(load_handlers('services.kernelspecs.handlers'))
        handlers.extend(load_handlers('services.security.handlers'))
        
        # BEGIN HARDCODED WIDGETS HACK
        widgets = None
        try:
            import widgetsnbextension as widgets
        except:
            try:
                import ipywidgets as widgets
            except:
                app_log.warning('Widgets are unavailable. Please install widgetsnbextension or ipywidgets 4.0')
        if widgets is not None:
            handlers.append(
                (r"/nbextensions/widgets/(.*)", FileFindHandler, {
                    'path': widgets.find_static_assets(),
                    'no_cache_paths': ['/'], # don't cache anything in nbextensions
                }),
            )
        # END HARDCODED WIDGETS HACK
        
        handlers.append(
            (r"/nbextensions/(.*)", FileFindHandler, {
                'path': settings['nbextensions_path'],
                'no_cache_paths': ['/'], # don't cache anything in nbextensions
            }),
        )
        handlers.append(
            (r"/custom/(.*)", FileFindHandler, {
                'path': settings['static_custom_path'],
                'no_cache_paths': ['/'], # don't cache anything in custom
            })
        )
        # register base handlers last
        handlers.extend(load_handlers('base.handlers'))
        # set the URL that will be redirected from `/`
        handlers.append(
            (r'/?', web.RedirectHandler, {
                'url' : settings['default_url'],
                'permanent': False, # want 302, not 301
            })
        )

        # prepend base_url onto the patterns that we match
        new_handlers = []
        for handler in handlers:
            pattern = url_path_join(settings['base_url'], handler[0])
            new_handler = tuple([pattern] + list(handler[1:]))
            new_handlers.append(new_handler)
        # add 404 on the end, which will catch everything that falls through
        new_handlers.append((r'(.*)', Template404))
        return new_handlers