Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore(render.display): Improve error message #1020

Merged
merged 2 commits into from
Jan 19, 2024

Conversation

gadenbuie
Copy link
Collaborator

Changes the error thrown by @render.display when the decorated function has a return value from

@render.display functions should not return values. (`None` is allowed).

to

@render.display functions should not return values. Instead, the function
body should include Shiny Express code that will be dynamically rendered
in the app. (`None` is a valid return value.)

Notes and Questions

Is @render.display intended only for Shiny Express? (If yes, this does speak to having shiny.express.render and for not including render.display in shiny.)

@schloerke described @render.display as follows on Slack:

  • render.ui renders the last thing returned.
  • render.display renders every printable line within the function.

If render.display is intended for Shiny Core as well then we could fall back to "Instead, @render.display dynamically renders every printable line within the function body" rather than naming Shiny Express. This phrasing is technically more precise but still not quite actionable for someone just starting with Shiny or Express.

@gshotwell gshotwell closed this Jan 17, 2024
@gshotwell gshotwell reopened this Jan 17, 2024
Copy link
Collaborator

@schloerke schloerke left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you for the suggestion within the PR!

I believe it is possible that render.display is used within Core. So I altered the phrasing as you suggested.

shiny/render/_display.py Outdated Show resolved Hide resolved
@schloerke schloerke added this to the v0.7.0 milestone Jan 19, 2024
@schloerke schloerke merged commit f723c2b into main Jan 19, 2024
22 of 24 checks passed
@schloerke schloerke deleted the render-display-return-error branch January 19, 2024 16:12
schloerke added a commit that referenced this pull request Jan 19, 2024
* main: (26 commits)
  api!: Merge RendererBase class into Renderer (#1032)
  chore(render.display): Improve error message (#1020)
  `express.ui.page_opts(title = ...)` now always generates a header (#1016)
  api!: `Renderer.auto_output_ui()` drops `id` arg. Make `RendererBase.output_id` a non-namespaced value. (#1030)
  fix(page_sidebar): Add semicolon to end style declaration (#1027)
  chore: Remove experimental from app (#1028)
  chore: Expose `render.renderer.RendererBaseT` and do not require `| None` when defining Renderer types (#1026)
  bug: Restore legacy renderers while packages transition (#1023)
  Update deploy test apps to use render.code
  Update changelog
  Provide useful message in Express when `input` was not imported (#994)
  Calculate coordinate mapping after drawing figure (#999)
  Remove `express.ui.output_*` functions, add `shiny.express.render` (#1018)
  fix: Do not allow for renderer's to be given to reactive effects (#1017)
  Truncate the requirements.txt file before deploys (#998)
  Update changelog
  Fixes for flake8 (#1012)
  Pin starlette version below 0.35 (#1009)
  Remove shiny express warning
  Cause RecallContextManagers to run when used without `with` (#992)
  ...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants