posit-dev / posit-dev/py-shiny
[Bug]: Trivial dependency cycles are not detected, neither output nor errors produced
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 1.8k
- Forks
- 135
- Avg merge
- 2d 18h
- Merged PRs (30d)
- 21
Description
Component
Reactive Programming
Severity
P1 - High (major feature broken)
Shiny Version
1.4.0
Python Version
3.10.12
Minimal Reproducible Example
from shiny.express import input, render, ui
@render.express
def myrender():
ui.input_select("sel", None, ["All", "So", "Much"], selected="All")
input.sel()
"Sadly, we never get here - silently. Poor user will never know why."
"Actually, nothing is rendered at all."
Behavior
The code above produces no rendered output and no error messages. This can hardly be called "transparent reactivity" (re: https://shiny.posit.co/py/docs/overview.html#reactivity ), as nothing there is transparent.
Expected behavior:
Complexity of dealing with circular dependencies (detecting, and whenever possible, avoiding in a manner of least user surprise) is understood. Yet, apparently, would be nice to do something about such cases.
Error Messages (if any)
None!
Environment
Ubuntu
Chromium 126
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by running the minimal reactive example from the issue and trace the reactive rendering path responsible for the silent failure. The payload names no source files or tests, so first locate the cycle-detection or dependency-resolution entry point; done should include a regression test and a defined user-visible result for this cycle.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- web-dev
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100