Giter Club home page Giter Club logo

jupyter-bbox-widget's Introduction

Binder

jupyter_bbox_widget

A Jupyter widget for annotating images with bounding boxes. See a live demo on Binder.

from jupyter_bbox_widget import BBoxWidget
widget = BBoxWidget(
    image='fruit.jpg',
    classes=['apple', 'orange', 'pear'],
)
widget

UI example

Create, edit, move, resize and delete bounding box annotations using the mouse.

Use widget.bboxes to get current annotations values:

widget.bboxes
# [{'x': 377, 'y': 177, 'width': 181, 'height': 201, 'label': 'apple'},
#  {'x': 219, 'y': 142, 'width': 169, 'height': 171, 'label': 'orange'},
#  {'x': 43,  'y': 174, 'width': 234, 'height': 195, 'label': 'pear'}]

You can also assign to widget.bboxes to display any annotations. For example, use the output of an object detection model to do model-assisted labeling.

widget.bboxes = [
    {'x': 377, 'y': 177, 'width': 181, 'height': 201, 'label': 'apple'},
    {'x': 219, 'y': 142, 'width': 169, 'height': 171, 'label': 'orange'},
    {'x': 43,  'y': 174, 'width': 234, 'height': 195, 'label': 'pear'}
]

Fruit photo by Umanoide on Unsplash

Installation

You can install using pip:

pip install jupyter_bbox_widget

If you are using Jupyter Notebook 5.2 or earlier, you may also need to enable the nbextension:

jupyter nbextension enable --py [--sys-prefix|--user|--system] jupyter_bbox_widget

Usage

Create and edit annotations with the mouse

  • click and drag to create a bbox
  • click and drag corners or edges to resize a bbox
  • click and drag inside a bbox to move it
  • in order to change a label select a new label below the image and click on label text

Keyboard shortcuts

When you click inside the widget area it will gain focus and start receiving keyboard events. An outline usually indicates that the element is focused. Normal Jupyter keyboard shortcuts won't work in this state. To unfocus the widget area click outside it or press Esc.

Some shortcuts act on the selected bbox. New bboxes are selected automatically when created. You can also select a bbox by clicking on it. Selected bbox is displayed on top of others and with a thicker border.

  • Digit keys 1-9 and 0 select a class label.
  • Esc unfocuses the widget
  • Enter is the same as pressing Submit button
  • Space is the same as pressing Skip button
  • Tab / Shift-Tab select next/previous bbox.
  • Keys acting on the selected bbox (assuming a QWERTY keyboard, other layouts should use any keys in the same locations):
    • W move up
    • A move left
    • S move down
    • D move right
    • Q shrink width
    • E grow width
    • R grow height
    • F shrink height
    • C assign selected class label
    • Holding Shift while pressing movement keys will increase step size

Skip and Submit events

You can define functions that will be called automatically when you press Skip or Submit buttons. This is useful for creating a workflow for annotating multiple images.

@widget.on_skip
def skip():
    # move on to the next image

@widget.on_submit
def save():
    # do stuff to save current annotations and move on

There is an example of a simple annotation workflow in examples/introduction.ipynb notebook.

View only mode

You can disable editing of annotations by setting widget.view_only = True. This is useful for viewing annotation outputs without accidentally changing them.

Recording additional data

Sometimes you need to record more info about an object than just a location and a class label. For example, you might want to specify whether the object is in focus or blurred, record its size or other properties.

Let's say we want to apply a rating on a scale from 1 to 5 to every object in the image. We create a slider widget to edit the rating values:

w_rating = widgets.IntSlider(value=3, min=1, max=5, description='Rating')

And we attach it to the bbox widget.

widget.attach(w_rating, name='rating')

As a result all bboxes created afterwards will have a rating property and the w_rating widget can be used to display and manipulate the rating of the currently selected bbox.

Any number and any kind of ipywidgets widgets may be used in this way for creating richer annotations - number inputs, text inputs, checkboxes and so on (see widget list).

The notebook in examples/introduction.ipynb has an example and a more detailed explanation of this feature.

Changelog

  • v0.5.0
    • enabled use of widget.on_skip and widget.on_submit methods as decorators
  • v0.4.0
    • exposed selected class label to the python side as widget.label
  • v0.3.4
    • set max-width: 100% on image so that it respects layout
  • v0.3.3
    • fixed bboxes not updating after class change by keyboard shortcut
  • v0.3.2
    • added hide_buttons option
    • fixed bbox delete icon not displayed properly
  • v0.3.1
    • unselect a bbox on click outside in view only mode
    • fixed a bug with overwriting attached properties on unselect
  • v0.3.0
    • added view_only mode
  • v0.2.0
    • added Skip and Submit buttons
    • added attach widget functionality for recording extra properties
    • multiple fixes and improvements
  • v0.1.0
    • initial release

Development Installation

This project was inspired by a blogpost Creating Reactive Jupyter Widgets With Svelte and was created based on widget-svelte-cookiecutter template.

# First install the python package. This will also build the JS packages.
pip install -e .

When developing your extensions, you need to manually enable your extensions with the notebook / lab frontend. For lab, this is done by the command:

jupyter labextension install @jupyter-widgets/jupyterlab-manager --no-build
jupyter labextension install .

For classic notebook, you can run:

jupyter nbextension install --sys-prefix --symlink --overwrite --py jupyter_bbox_widget
jupyter nbextension enable --sys-prefix --py jupyter_bbox_widget

Note that the --symlink flag doesn't work on Windows, so you will here have to run the install command every time that you rebuild your extension. For certain installations you might also need another flag instead of --sys-prefix, but we won't cover the meaning of those flags here.

How to see your changes

Typescript:

To continuously monitor the project for changes and automatically trigger a rebuild, start Jupyter in watch mode:

jupyter lab --watch

And in a separate session, begin watching the source directory for changes:

npm run watch

After a change wait for the build to finish and then refresh your browser and the changes should take effect.

Python:

If you make a change to the python code then you will need to restart the notebook kernel to have it take effect.

jupyter-bbox-widget's People

Contributors

gereleth avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

jupyter-bbox-widget's Issues

using "C assign selected class label" shortcut doesn't update the bounding boxes

Hi. I love your tool. I think I found a small bug.

If I use the "C" shortcut the display value of the widget changes but when I get the value of the .bboxes it doesn't reflect the new class value. I have to move one of the boxes in order for the class name to be reflected.

To repro in your sample notebook.

  • Draw a box with label "apple"
  • Select the box. Select class name "pear" in the list of classes
  • Press "C" class changes to Pear
  • Check value of widget.bboxes, class name is apple
  • Move the box
  • Check the value of widget.bboxes, class name is pear

Set new keybindings and eddit layout

Im working on an AI assisted labeling tool whitch works around this library. I saw that you have made keybindings for the buttons in the widget and I was wondering if its posble for me to add my owne ore eddit the ones you made? I looked ad the code but i did not grasp how it works.

Another question(les important): is there a way to add buttons next to the skip and submit? my current selution is to put them above the witget and merge them with the box function of ipwidgets but it would be grat to be able to add them to the side of them.

FEATURE REQUEST- Image pairs for anki cards

Dear gereleth,

I was looking at your code to try to adapt it to create anki flashcards (apps.ankiweb.net) from uploaded images in a Google Colab. I sort of manage in Python, however I have no idea of JS and was unable to tweak your code.

In short, what is needed is the ability to have “matched pairs” of annotations of two classes “front of card” and “back of card” as “front_01” + “back_01”, “front_02” + “back _02”, etc…

Therefore, I believe the main change would be:

  1. Add an automatic counter (for each class) that is incremented automatically after each annotation of that class. The counter could be saved either as the annotation name, or the as an additional property.
  2. Ideally, this counter should be shown on the image, alongside the class label.
  3. Ideally, the user should be able to set a value for this counter in case of annotations snafus.
    With this, I could crop the image pairs and create the anki cards with python in an Colab Workbook.

If you have time, could you please try to implement the following features in order to make it possible.
Thank you very much,
bbc

P.S. This repository: github.com/robxcalib3r/Image2Anki has a video of a similar feature, except that it works in local (his program also does other things such as OCR).

No widget is shown

Hi, I am following the instructions on my jupyter notebook but nothing is shown:

image

I have installed the required packages as follows:

!pip install jupyter_bbox_widget ipywidgets
!pip install --upgrade jupyter_core jupyter_client
!pip install jupyter_contrib_nbextensions
!pip install --upgrade ipympl --user
!jupyter nbextension enable --py widgetsnbextension

Am I missing something?

Hide written labels in image view

I want to start by thanking you for creating and making this tool available. it works super well for my purpose and has saved me many hours! but now my question: Is it possible to hide the labels in the image view? during use I have noticed that the written label often falls over other objects which makes it more difficult to annotate. however, based on the color of the BBox I can recognize which class it is. So is there a variable I can turn on and off to show and hide the display of the name above the label? Thanks in advance for the troubles!

Failed to update image

I'm not sure where my problem comes from: After using the widget for a longer time, I can no longer update the photo. i make use of the submit and skip buttons and see through other parts of my interface that these buttons still work but the photo an labels are no longer being uploaded. this means i can't change the class selection at the bottom of the screen an i can't change the photo either. i work in vs code and the only solution i can find is not to restart the kernal but the whole of vs code. just the kernal doesn't seem to resolve anything by itself.

Modifying the coordinates

Hi,

I get the bbx coordinates from user, but I refine the bbxes and I want to plot again the refined version.

The following code update the dict for widget.bboxes, but when I call the widget again, it shows the older coordinates.

Is there away to update the coordinates?

for i, prediction in enumerate(pboxes):
    x1, y1, x2, y2 = prediction
    width = x2 - x1
    height = y2 - y1
    
    # Update the existing dictionary in widget_bboxes with the new coordinates
    widget.bboxes[i]['x'] = x1
    widget.bboxes[i]['y'] = y1
    widget.bboxes[i]['width'] = width
    widget.bboxes[i]['height'] = height

Multilabel conversion

What do I need to change to make it support multiple labels on top of the bounding box e.g labels = [car, red, SUV], or labels = [Truck, black, pickup] or labels = [apple, green] etc?

Where do I need to make changes to support multiple labels? I am happy to send PR.

thank you for the tool and guidance.

Please add ability to Zoom image In/Out

Please add the ability to Zoom the image in/out and maybe even fit to the width of the cell (probably use width=100vw for the image).

Ideally the width of the bbox image can be controlled via the layout parameter width. #7 allowed to have image sizes up to the size of the image, but for smaller images on a large screen, there is no way to increase the image size as the width layout parameter is ignored.

Additionally it would be nice to have controls for zooming in/out and fitting the image to the width of the cell.

Here is an example for a image upscaled to 80% of the width of a cell (not working yet):

        bbox_widget = BBoxWidget(
            image="data:image/jpg;base64,"+encoded_image,
            classes=classes,
            bboxes=bboxes,
            layout=widgets.Layout(width="80vw")
        )

widget does not work on AWS sagemaker

image

[Open Browser Console for more detailed log - Double click to close this message]
Failed to load model class 'BBoxModel' from module 'jupyter-bbox-widget'
Error: Script error for "jupyter-bbox-widget"
http://requirejs.org/docs/errors.html#scripterror

I've added the jupyter --version here for inspection as well.

Selected Jupyter core packages...
IPython : 7.33.0
ipykernel : 5.5.6
ipywidgets : 8.0.2
jupyter_client : 6.1.12
jupyter_core : 4.11.1
jupyter_server : not installed
jupyterlab : 1.2.21
nbclient : not installed
nbconvert : 5.6.1
nbformat : 5.6.1
notebook : 5.7.15
qtconsole : 5.3.2
traitlets : 5.4.0

more logs

Running setup.py develop for jupyter-bbox-widget
error: subprocess-exited-with-error

× python setup.py develop did not run successfully.
│ exit code: 1
╰─> [43 lines of output]
    running develop
    running jsdeps
    /home/ec2-user/SageMaker/.persisted_conda/label_env/lib/python3.7/site-packages/setuptools/dist.py:774: UserWarning: Usage of dash-separated 'description-file' will not be supported in future versions. Please use the underscore name 'description_file' instead
      % (opt, underscore_opt)
    /home/ec2-user/SageMaker/.persisted_conda/label_env/lib/python3.7/site-packages/setuptools/config/setupcfg.py:508: SetuptoolsDeprecationWarning: The license_file parameter is deprecated, use license_files instead.
      warnings.warn(msg, warning_class)
    /home/ec2-user/SageMaker/.persisted_conda/label_env/lib/python3.7/site-packages/setuptools/command/easy_install.py:147: EasyInstallDeprecationWarning: easy_install command is deprecated. Use build and pip and other standards-based tools.
      EasyInstallDeprecationWarning,
    /home/ec2-user/SageMaker/.persisted_conda/label_env/lib/python3.7/site-packages/setuptools/command/install.py:37: SetuptoolsDeprecationWarning: setup.py install is deprecated. Use build and pip and other standards-based tools.
      setuptools.SetuptoolsDeprecationWarning,
    `npm` unavailable.  If you're running this command using sudo, make sure `npm` is available to sudo
    Traceback (most recent call last):
      File "<string>", line 36, in <module>
      File "<pip-setuptools-caller>", line 34, in <module>
      File "/home/ec2-user/jupyter-bbox-widget/setup.py", line 101, in <module>
        setup(**setup_args)
      File "/home/ec2-user/SageMaker/.persisted_conda/label_env/lib/python3.7/site-packages/setuptools/__init__.py", line 87, in setup
        return distutils.core.setup(**attrs)
      File "/home/ec2-user/SageMaker/.persisted_conda/label_env/lib/python3.7/site-packages/setuptools/_distutils/core.py", line 185, in setup
        return run_commands(dist)
      File "/home/ec2-user/SageMaker/.persisted_conda/label_env/lib/python3.7/site-packages/setuptools/_distutils/core.py", line 201, in run_commands
        dist.run_commands()
      File "/home/ec2-user/SageMaker/.persisted_conda/label_env/lib/python3.7/site-packages/setuptools/_distutils/dist.py", line 968, in run_commands
        self.run_command(cmd)
      File "/home/ec2-user/SageMaker/.persisted_conda/label_env/lib/python3.7/site-packages/setuptools/dist.py", line 1217, in run_command
        super().run_command(command)
      File "/home/ec2-user/SageMaker/.persisted_conda/label_env/lib/python3.7/site-packages/setuptools/_distutils/dist.py", line 987, in run_command
        cmd_obj.run()
      File "/home/ec2-user/jupyter-bbox-widget/setupbase.py", line 474, in run
        [self.run_command(cmd) for cmd in cmds]
      File "/home/ec2-user/jupyter-bbox-widget/setupbase.py", line 474, in <listcomp>
        [self.run_command(cmd) for cmd in cmds]
      File "/home/ec2-user/SageMaker/.persisted_conda/label_env/lib/python3.7/site-packages/setuptools/_distutils/cmd.py", line 319, in run_command
        self.distribution.run_command(command)
      File "/home/ec2-user/SageMaker/.persisted_conda/label_env/lib/python3.7/site-packages/setuptools/dist.py", line 1217, in run_command
        super().run_command(command)
      File "/home/ec2-user/SageMaker/.persisted_conda/label_env/lib/python3.7/site-packages/setuptools/_distutils/dist.py", line 987, in run_command
        cmd_obj.run()
      File "/home/ec2-user/jupyter-bbox-widget/setupbase.py", line 270, in run
        c.run()
      File "/home/ec2-user/jupyter-bbox-widget/setupbase.py", line 395, in run
        raise ValueError(('missing files: %s' % missing))
    ValueError: missing files: ['/home/ec2-user/jupyter-bbox-widget/jupyter_bbox_widget/nbextension/static/index.js', '/home/ec2-user/jupyter-bbox-widget/lib/plugin.js']
    [end of output]

note: This error originates from a subprocess, and is likely not a problem with pip.

Rolling back uninstall of jupyter-bbox-widget
Moving to /home/ec2-user/SageMaker/.persisted_conda/label_env/etc/jupyter/nbconfig/notebook.d/jupyter_bbox_widget.json
from /tmp/pip-uninstall-gkitszff/jupyter_bbox_widget.json
Moving to /home/ec2-user/SageMaker/.persisted_conda/label_env/lib/python3.7/site-packages/jupyter_bbox_widget-0.5.0.dist-info/
from /home/ec2-user/SageMaker/.persisted_conda/label_env/lib/python3.7/site-packages/~upyter_bbox_widget-0.5.0.dist-info
Moving to /home/ec2-user/SageMaker/.persisted_conda/label_env/lib/python3.7/site-packages/jupyter_bbox_widget/
from /home/ec2-user/SageMaker/.persisted_conda/label_env/lib/python3.7/site-packages/~upyter_bbox_widget
Moving to /home/ec2-user/SageMaker/.persisted_conda/label_env/share/jupyter/lab/extensions/
from /home/ec2-user/SageMaker/.persisted_conda/label_env/share/jupyter/lab/~xtensions
Moving to /home/ec2-user/SageMaker/.persisted_conda/label_env/share/jupyter/nbextensions/jupyter_bbox_widget/
from /home/ec2-user/SageMaker/.persisted_conda/label_env/share/jupyter/nbextensions/~upyter_bbox_widget
error: subprocess-exited-with-error

× python setup.py develop did not run successfully.
│ exit code: 1
╰─> [43 lines of output]
running develop
running jsdeps
/home/ec2-user/SageMaker/.persisted_conda/label_env/lib/python3.7/site-packages/setuptools/dist.py:774: UserWarning: Usage of dash-separated 'description-file' will not be supported in future versions. Please use the underscore name 'description_file' instead
% (opt, underscore_opt)
/home/ec2-user/SageMaker/.persisted_conda/label_env/lib/python3.7/site-packages/setuptools/config/setupcfg.py:508: SetuptoolsDeprecationWarning: The license_file parameter is deprecated, use license_files instead.
warnings.warn(msg, warning_class)
/home/ec2-user/SageMaker/.persisted_conda/label_env/lib/python3.7/site-packages/setuptools/command/easy_install.py:147: EasyInstallDeprecationWarning: easy_install command is deprecated. Use build and pip and other standards-based tools.
EasyInstallDeprecationWarning,
/home/ec2-user/SageMaker/.persisted_conda/label_env/lib/python3.7/site-packages/setuptools/command/install.py:37: SetuptoolsDeprecationWarning: setup.py install is deprecated. Use build and pip and other standards-based tools.
setuptools.SetuptoolsDeprecationWarning,
npm unavailable. If you're running this command using sudo, make sure npm is available to sudo
Traceback (most recent call last):
File "", line 36, in
File "", line 34, in
File "/home/ec2-user/jupyter-bbox-widget/setup.py", line 101, in
setup(**setup_args)
File "/home/ec2-user/SageMaker/.persisted_conda/label_env/lib/python3.7/site-packages/setuptools/init.py", line 87, in setup
return distutils.core.setup(**attrs)
File "/home/ec2-user/SageMaker/.persisted_conda/label_env/lib/python3.7/site-packages/setuptools/_distutils/core.py", line 185, in setup
return run_commands(dist)
File "/home/ec2-user/SageMaker/.persisted_conda/label_env/lib/python3.7/site-packages/setuptools/_distutils/core.py", line 201, in run_commands
dist.run_commands()
File "/home/ec2-user/SageMaker/.persisted_conda/label_env/lib/python3.7/site-packages/setuptools/_distutils/dist.py", line 968, in run_commands
self.run_command(cmd)
File "/home/ec2-user/SageMaker/.persisted_conda/label_env/lib/python3.7/site-packages/setuptools/dist.py", line 1217, in run_command
super().run_command(command)
File "/home/ec2-user/SageMaker/.persisted_conda/label_env/lib/python3.7/site-packages/setuptools/_distutils/dist.py", line 987, in run_command
cmd_obj.run()
File "/home/ec2-user/jupyter-bbox-widget/setupbase.py", line 474, in run
[self.run_command(cmd) for cmd in cmds]
File "/home/ec2-user/jupyter-bbox-widget/setupbase.py", line 474, in
[self.run_command(cmd) for cmd in cmds]
File "/home/ec2-user/SageMaker/.persisted_conda/label_env/lib/python3.7/site-packages/setuptools/_distutils/cmd.py", line 319, in run_command
self.distribution.run_command(command)
File "/home/ec2-user/SageMaker/.persisted_conda/label_env/lib/python3.7/site-packages/setuptools/dist.py", line 1217, in run_command
super().run_command(command)
File "/home/ec2-user/SageMaker/.persisted_conda/label_env/lib/python3.7/site-packages/setuptools/_distutils/dist.py", line 987, in run_command
cmd_obj.run()
File "/home/ec2-user/jupyter-bbox-widget/setupbase.py", line 270, in run
c.run()
File "/home/ec2-user/jupyter-bbox-widget/setupbase.py", line 395, in run
raise ValueError(('missing files: %s' % missing))
ValueError: missing files: ['/home/ec2-user/jupyter-bbox-widget/jupyter_bbox_widget/nbextension/static/index.js', '/home/ec2-user/jupyter-bbox-widget/lib/plugin.js']
[end of output]

No image showing

Is there a way to debug why an image isn't showing? I'm trying to use the Databricks file store and am able to view a http url of the image from this github example folder.
Not able to see
Screen Shot 2022-08-16 at 10 35 21 AM
.
Able to ls the file on the file system
Screen Shot 2022-08-16 at 10 35 27 AM

Feedback: consider returning the callbacks in the setters

Thanks a lot @gereleth for this helpful package. One thing that tripped me up: I tried using on_submit and on_skip as decorators. For example:

widget = BBoxWidget(classes=[...])

@widget.on_skip
def advance():
   ...

@widget.on_submit
def submit():
   save()
   advance()

However, this did not work as intended, as on_submit and on_skip do return None. Maybe it would be an option to return the functions themselves?

Error displaying widget: model not found

Hi Gereleth,
love your annotation tool but running into problems running the widget on my jupyterlab. I can render other ipywidgets in my jupterlab without any problems.
Packages currently installed:
Selected Jupyter core packages...

IPython          : 7.29.0
ipykernel        : 6.5.0
ipywidgets       : 7.6.5
jupyter_client   : 7.0.6
jupyter_core     : 4.9.1
jupyter_server   : 1.11.2
jupyterlab       : 3.2.2
nbclient         : 0.5.5
nbconvert        : 6.2.0
nbformat         : 5.1.3
notebook         : 6.4.5
qtconsole        : not installed
traitlets        : 5.1.1

Running this snippet:

Unbenannt

Error:
Error displaying widget: model not found

Any hints on what might cause the problem?

How can I make the bounding boxes maintain some fixed aspect ratio or sizes?

Firstly thank you for such an excellent widget! I would like to use it to crop pictures and I think I can do that using the bounding boxes' coordinates it returns.

What I would like to do though is to have certain predefined aspect ratios and sizes for the bounding boxes when I drag them. For example, 16:9, 4:3, 1:1 or 768x1024, etc. Is there an obvious way to hack this? I tried to modify some of the functions to compute height when it is computing width. etc. But can't seem to get it to work. I am not that proficient in JS/TS. Better at Python.

Appreciate any advice if this is at all possible. Thank you!

Failed to load model class 'BBoxModel' from module 'jupyter-bbox-widget'

Hello,

When executing the introduction notebook, I can run the IntProgress widget, but with BBoxWidget I am getting the following javascript error:

Failed to load model class 'BBoxModel' from module 'jupyter-bbox-widget'
Error: No version of module jupyter-bbox-widget is registered
    at f.loadClass (http://localhost:8888/lab/extensions/@jupyter-widgets/jupyterlab-manager/static/134.40eaa5b8e976096d50b2.js?v=40eaa5b8e976096d50b2:1:74856)
    at f.loadModelClass (http://localhost:8888/lab/extensions/@jupyter-widgets/jupyterlab-manager/static/150.b0e841b75317744a7595.js?v=b0e841b75317744a7595:1:10729)
    at f._make_model (http://localhost:8888/lab/extensions/@jupyter-widgets/jupyterlab-manager/static/150.b0e841b75317744a7595.js?v=b0e841b75317744a7595:1:7517)
    at f.new_model (http://localhost:8888/lab/extensions/@jupyter-widgets/jupyterlab-manager/static/150.b0e841b75317744a7595.js?v=b0e841b75317744a7595:1:5137)
    at f.handle_comm_open (http://localhost:8888/lab/extensions/@jupyter-widgets/jupyterlab-manager/static/150.b0e841b75317744a7595.js?v=b0e841b75317744a7595:1:3894)
    at _handleCommOpen (http://localhost:8888/lab/extensions/@jupyter-widgets/jupyterlab-manager/static/134.40eaa5b8e976096d50b2.js?v=40eaa5b8e976096d50b2:1:73393)
    at b._handleCommOpen (http://localhost:8888/static/lab/jlab_core.f83e0826f7dae6f5de09.js?v=f83e0826f7dae6f5de09:2:996710)
    at async b._handleMessage (http://localhost:8888/static/lab/jlab_core.f83e0826f7dae6f5de09.js?v=f83e0826f7dae6f5de09:2:998700)

labextension list looks as follows:

JupyterLab v3.4.8
C:\Users\xxx\miniconda3\share\jupyter\labextensions
        jupyter-matplotlib v0.11.3 enabled ok
        jupyterlab-unfold v0.2.2 enabled ok (python, jupyterlab-unfold)
        @jupyter-widgets/jupyterlab-manager v5.0.5 enabled ok (python, jupyterlab_widgets)

Other labextensions (built into JupyterLab)
   app dir: C:\Users\xxx\miniconda3\share\jupyter\lab
        jupyter-bbox-widget v0.5.0 enabled ok

Has anyone else encountered this issue, any tips or educated guesses to solve this? Similar issues can be found online, especially when using JupyterLab. But none of the suggested solutions (so far) has been working for me. Thanks!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.