Skip to content

client-side IntInput widget in jupyterlab notebook sometimes not updated to final value when value changed multiple times programatically #7324

Open
@Kramin42

Description

ALL software version info

This issue is with panel 1.5.0 (bokeh 3.5.2), I was not able to reproduce with panel 1.4.5 (bokeh 3.4.3).

Software Version Info
browser: Chrome Version 126.0.6478.126 (Official Build) (64-bit)

pip freeze output:
aiofiles==22.1.0
aiohttp==3.9.5
aiosignal==1.3.1
aiosqlite==0.20.0
alabaster==0.7.13
alembic==1.13.1
annotated-types==0.6.0
anyio==4.3.0
appdirs==1.4.4
argon2-cffi==23.1.0
argon2-cffi-bindings==21.2.0
arrow==1.3.0
asttokens==2.4.1
async-lru==2.0.4
attrs==23.2.0
Babel==2.14.0
backcall==0.2.0
beautifulsoup4==4.12.3
bleach==6.1.0
bokeh==3.5.2
bqplot==0.12.43
certifi==2024.2.2
cffi==1.16.0
charset-normalizer==3.3.2
click==8.1.7
cloudpickle==3.0.0
colorama==0.4.6
colorcet==3.1.0
comm==0.2.2
contourpy==1.2.1
copier==9.3.1
cycler==0.12.1
debugpy==1.8.1
decorator==5.1.1
defusedxml==0.7.1
deprecation==2.1.0
docutils==0.18.1
doit==0.36.0
dunamai==1.22.0
entrypoints==0.4
executing==2.0.1
fastapi==0.110.0
fastjsonschema==2.19.1
flexcache==0.3
flexparser==0.3.1
fonttools==4.43.1
fqdn==1.5.1
frozenlist==1.4.1
fsspec==2024.9.0
funcy==2.0
future==1.0.0
greenlet==3.0.3
h11==0.14.0
h5py==3.11.0
holoviews==1.18.3
httpcore==1.0.4
httpx==0.27.0
hvplot==0.10.0
idna==3.6
imagesize==1.4.1
importlib_metadata==7.0.2
ipydatawidgets==4.3.5
ipygany==0.5.0
ipykernel==6.29.3
ipython==8.22.2
ipython-genutils==0.2.0
ipyvolume==0.6.3
ipyvue==1.10.2
ipyvuetify==1.9.2
ipywebrtc==0.6.0
ipywidgets==8.1.2
isoduration==20.11.0
jedi==0.19.1
Jinja2==3.1.4
jinja2-ansible-filters==1.3.2
jinja2-time==0.2.0
json5==0.9.24
jsonpointer==2.4
jsonschema==4.21.1
jsonschema-specifications==2023.12.1
jupyter==1.0.0
jupyter-console==6.6.3
jupyter-events==0.9.1
jupyter-lsp==2.2.4
jupyter-ydoc==0.2.5
jupyter_client==8.6.1
jupyter_core==5.7.2
jupyter_packaging==0.12.3
jupyter_server==2.13.0
jupyter_server_fileid==0.9.2
jupyter_server_proxy==4.2.0
jupyter_server_terminals==0.5.3
jupyter_server_ydoc==0.8.0
jupyterlab==4.2.5
jupyterlab_pygments==0.3.0
jupyterlab_server==2.27.3
jupyterlab_widgets==3.0.10
jupyterlite==0.2.3
jupyterlite-core==0.2.3
jupyterlite-javascript-kernel==0.2.3
kiwisolver==1.4.5
linkify-it-py==2.0.3
Mako==1.3.2
Markdown==3.6
markdown-it-py==3.0.0
MarkupSafe==2.1.5
matplotlib==3.8.0
matplotlib-inline==0.1.6
mdit-py-plugins==0.4.1
mdurl==0.1.2
mistune==3.0.2
msgpack==1.0.8
msgpack-numpy==0.4.8
multidict==6.0.5
nbclassic==1.1.0
nbclient==0.10.0
nbconvert==7.16.2
nbformat==5.10.3
nest-asyncio==1.6.0
notebook==7.1.2
notebook_shim==0.2.4
numpy==1.26.4
numpydoc==1.6.0
overrides==7.7.0
packaging==24.0
pandas==2.2.1
pandocfilters==1.5.1
panel==1.5.0
param==2.1.0
parso==0.8.3
pathspec==0.12.1
pexpect==4.9.0
pickleshare==0.7.5
pillow==10.3.0
Pint==0.24.3
platformdirs==4.2.0
plotly==5.18.0
plumbum==1.8.3
pooch==1.8.2
prometheus_client==0.20.0
prompt-toolkit==3.0.43
psutil==5.9.8
ptyprocess==0.7.0
pure-eval==0.2.2
pycparser==2.21
pydantic==2.5.3
pydantic_core==2.14.6
Pygments==2.17.2
pyparsing==3.0.9
pyrsistent==0.19.1
python-dateutil==2.9.0.post0
python-dotenv==0.21.1
python-json-logger==2.0.7
python-multipart==0.0.5
pythreejs==2.4.2
pytz==2024.1
pyvista==0.44.1
pyviz_comms==3.0.2
PyYAML==6.0.1
pyyaml-include==2.1
pyzmq==25.1.2
qtconsole==5.5.1
QtPy==2.4.1
questionary==1.10.0
referencing==0.34.0
requests==2.31.0
rfc3339-validator==0.1.4
rfc3986-validator==0.1.1
rpds-py==0.18.0
scipy==1.11.3
scooby==0.10.0
Send2Trash==1.8.2
simpervisor==1.0.0
six==1.16.0
sniffio==1.3.1
snowballstemmer==2.2.0
soupsieve==2.5
Sphinx==7.2.6
sphinx-rtd-theme==1.3.0
sphinxcontrib-applehelp==1.0.7
sphinxcontrib-devhelp==1.0.5
sphinxcontrib-htmlhelp==2.0.4
sphinxcontrib-jquery==4.1
sphinxcontrib-jsmath==1.0.1
sphinxcontrib-qthelp==1.0.6
sphinxcontrib-serializinghtml==1.1.9
SQLAlchemy==2.0.29
sqlmodel==0.0.16
stack-data==0.6.3
starlette==0.36.3
tabulate==0.9.0
tenacity==8.2.3
terminado==0.18.1
tinycss2==1.2.1
tomli_w==1.0.0
tomlkit==0.12.5
tornado==6.4
tqdm==4.66.4
traitlets==5.14.2
traittypes==0.2.1
types-python-dateutil==2.9.0.20240316
typing_extensions==4.10.0
tzdata==2024.1
uc-micro-py==1.0.3
uncertainties==3.1.7
uri-template==1.3.0
urllib3==2.2.1
uvicorn==0.28.0
viola==0.3.8
vtk==9.3.1
watchfiles==0.22.0
wcwidth==0.2.13
webcolors==1.13
webencodings==0.5.1
websocket-client==1.7.0
websockets==12.0
widgetsnbextension==4.0.10
xyzservices==2024.6.0
y-py==0.6.2
yarl==1.9.4
ypy-websocket==0.8.4
zipp==3.18.1

Description of expected behavior and the observed behavior

I expect the inp widget to always end up displaying a value of 1 but it often stays at 0 (>50% of the time when I am spamming ctrl+enter on cell 3).

This may be some kind of race condition and difficult to reproduce.

Complete, minimal, self-contained example code that reproduces the issue

# code goes here between backticks

# cell 1
import panel as pn
pn.extension()

# cell 2
inp = pn.widgets.IntInput()
inp

# cell 3
inp.value = 0
inp.value = 1
inp.value

Interestingly, if I run another cell:

for i in range(100):
    inp.value = i
inp.value

It seems to alternate between stopping at 98 or 99. Quite a strange behaviour, my best guess is that the update events to the client side are somehow ending up out of order when the component is updated in rapid succession.

Stack traceback and/or browser JavaScript console output

I restarted kernel and cleared the javascript console before running any cells, nothing relevant is printed while reproducing the bug:

bokeh-3.5.2.min.js:185 [bokeh 3.5.2] setting log level to: 'info'

Screenshots or screencasts of the bug in action

image

  • I may be interested in making a pull request to address this

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Assignees

No one assigned

    Labels

    type: bugSomething isn't correct or isn't working

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions