Skip to content

Releases: holoviz/panel

Version 1.0.3

25 May 09:30
Compare
Choose a tag to compare

Another micro-release in the 1.0.x series with a number of smaller bug fixes. Most importantly this resolves issues with loading indicators and with apps converted to the pyodide-worker target. Many thanks to @n3011, @hoxbro and @philippjfr for contributing to this release.

  • Resolve _repr_jpeg_ methods correctly (#4904)
  • Fix handling of queued events in pyodide worker (#4913)
  • Various fixes for loading indicator (#4915)
  • Allow -1 in Tabs.active and allow recovering from closed tabs (#4920)
  • Ensure HoloViews layout is correctly initialized when center is set (#4921)
  • Ensure VSCode editor does not apply white background to Panel output (#4923)
  • Do not error on deserialization errors in notebooks (#4927)
  • Ensure basic auth provider works when dynamically starting server (#4926)
  • Ensure Param pane name is updated when object changes (#4928)
  • Align functionality and styling of FileDownload with Button (#4929)
  • Fix equality comparisons of parameter values when updating a Pane (#4934)
  • Warn about ignored widget parameters on Param pane (#4934)

Version 1.0.2

20 May 01:33
Compare
Choose a tag to compare

A micro-release in the 1.0.x series with a number of bug fixes and documentation tweaks. Many thanks to @jbednar and @philippjfr for contributing to this release.

Bug fixes

  • Ensure Design stylesheets are not replaced when updating component stylesheets (#4883)
  • Ensure tooltips are rendered correctly as HTML (#4887)
  • Fix loading of index page resources (#4891)
  • Ensure FloatPanel can be rendered in classic notebooks (#4892)
  • Attempt rendering output in notebooks even if not all resources have been initialized (#4893)
  • Do not load large bokeh-mathjax bundle in notebooks by default (#4895)
  • Make Fast template sidebar opening transition smoother (#4898)
  • Ensure new items added to Card layout are rendered (#4899)
  • Fix logo rendering in BasicAuth template (#4900)

Documentation

  • Various documentation tweaks (#4884, #4888, #4889, #4901)
  • Update Vega/Altair reference notebook to use altair 5 APIs (#4894)

Version 1.0.1

18 May 12:02
Compare
Choose a tag to compare

A micro-release fixing some small issues discovered in Panel 1.0. Thank you to @droumis, @hoxbro and @philippjfr for contributing fixes.

Bug fixes

  • Ensure Reactive objects wrapped in reactive are re-rendered correctly (#4868)
  • Tweaks for Material Design component inset label styling (#4877)
  • Ensure SlidesTemplate slides changes trigger updates in the pn.state.location.hash (#4878)

Documentation

Version 1.0.0

17 May 18:11
Compare
Choose a tag to compare

The Panel 1.0 release is finally here and it brings a huge number of improvements. The largest improvements in this release come from an upgrade from Bokeh 2.x to Bokeh 3.x. Bokeh overhauled its internal layout engine and stylesheet handling, making applications significantly more performant and customizable going forward.

This release marks a huge step forward in the usability of Panel but is also just a first step in leveraging many of the new capabilities that the updated layout engine and design system affords. In the coming months we will continue to improve and polish the UI and UX and make it easier for you to extend Panel as needed.

For now we want to thank the many people that contributed to this release either by contributing directly or by testing and providing feedback. Many thanks to the core contributors @MarcSkovMadsen, @hoxbro, @maximlt, @jbednar, @droumis and @philippjfr and the outside contributors @ahuang11, @cdeil, @MridulS, @AndrewMaged814, @Midnighter, @wendrul and @lukfal94.

Major Features

The three main features we want to highlight as part of this release are:

Some of the changes related to the new layout engine and design system will require small updates to your existing applications. To make this transition as smooth as possible we have provided an upgrade/migration guide.

New Components

This release also adds a number of exciting new components you can leverage in your applications:

  • Add Swipe layout (#3007)
  • Add Switch widget ([#4130](#4130))
  • Add Vizzu pane (#4226, #4739)
  • Add BrowserInfo model to expose browser window and navigator APIs (#4533)
  • Add BasicAuth provider for quick password based auth (#4684)
  • Add FloatPanel layout (#4707, #4711)
  • Add a SlidesTemplate based on reveal.js to create interactive presentations (#4798)

Major enhancements

There are also a number of major enhancements in this release that we are very excited about:

  • Improved Markdown rendering (#4688)
  • Add support for tooltips on widgets ([#4130](#4130), #4621, #4643)
  • Ensure .ipynb and .md based apps can be used as --index (#4432)
  • Add support for selecting format and encoding for Matplotlib image output and implemented responsive Image sizing (#4514)
  • Add support for icons on Button (#4797)
  • Add generic Image pane that auto-detects the image filetype (#4551)
  • Add support for writing applications in Markdown (#4602)
  • Improve support for inline resources for Jupyter (#3013, #4787)
  • Add ability to reuse sessions to speed up rendering (#3679, #4658)
  • Improve notebook resource and extension loading (#4752)
  • Add ability to add global loading spinner to application(s) (#4659)

Documentation

The last major change we want to highlight is a complete overhaul of the documentation, moving from long and difficult-to-navigate user guides to distinct easily applied how-to guides along with separate, longer explanation sections. We also put in significant effort to ensure that most of our documentation can be run interactively in Pyodide or JupyterLite.

Deprecations & API changes

Compatibility

Deprecations

  • Deprecate IDOM pane ([#4293](#4293), #4323)
  • Deprecate Viewable.app ([#4293](#4293))
  • Deprecate Viewable.pprint (#4347)
  • Deprecate and remove RGGPlot
  • Rename Ace to CodeEditor (#4627)

API changes & Backward Compatibility

  • Pandas is now only a (lazy) runtime dependency (#4411)
  • Tabulator.frozen_rows now respects the order of rows in the data instead of the order in which the frozen_rows were defined ([#4482](#4482))
  • Make margin defaults consistent across widgets and panes (#4528)
  • Extension calls must specify all required extensions (#4562)
  • The .embed method now returns a Mimebundle object for rendering (#4791)
  • Remove panel examples CLI command and pyct dependency (#4691)
  • Expose all layout components in top-level API (#4696)

Other Enhancements

Configuration

Read more

Version 0.14.4

04 Mar 22:12
Compare
Choose a tag to compare

This release is a small bug fix release preceding the upcoming major release of Panel 1.0. Many thanks to the contributors to this release which include @MarcSkovMadsen, @maximlt, @hoxbro and @philippjfr.

Bugs

  • Fix Tabulator client-side string filters by not parsing them as regex (4423)
  • Fix the RGGPlot pane (#4380)
  • Fix panel examples command by ensuring examples are correctly packaged (#4484)
  • Fix event generation by considering NaNs as equal when comparing Numpy arrays (#4481)
  • Use cache from previous sessions when using to_disk (#4481)
  • Fix relative imports when running inside Jupyter Kernel (#4489)
  • Do not re-create Vega.selections object unless selections changed (#4497)

Enhancements

  • Add support for altair and vega-lite v5 (#4488)

Misc

  • Use latest react-grid from CDN (#4461)

Version 0.14.3

31 Jan 15:59
Compare
Choose a tag to compare

This release introduces a large number of bug fixes and minor enhancements. Due to the upcoming release of Panel 1.0 we have also made the unconventional decision to issue new deprecation in a micro release. Specifically the IDOM pane and Viewable.app and Viewable.pprint methods have been scheduled for deprecation. Many thanks to the contributors to this release which include @wendrul, @droumis and the core team @MarcSkovMadsen, @maximlt, @hoxbro and @philippjfr.

Bugs

Tabulator

  • Ensure streamed rows on Tabulator can be edited (#4292)
  • Ensure changes on Tabulator formatter and editor models are reflected in frontend (#4296)
  • Ensure cancelling edit does not clear cell on Tabulator (#4343)
  • Ensure inserting empty data on numeric column in Tabulator does not error (#4343)

Notebook

  • Fix issues rendering components as ipywidgets for some versions of ipykernel (#4289)
  • Add warning if custom resources could not be loaded in notebook (#4329)
  • Ensure notifications are enabled even if hv.extension has been loaded (#4330)
  • Ensure global notification object can be used inside notebook callbacks (#4331)

Type definitions

  • Fix return type of Widget.from_param (#4335)
  • Ensure type annotation allows str and PathLike objects on panel.serve (#4336)
  • Fix type annotations on panel.io.convert.convert_app(s) (#4342)

Misc

  • Ensure markdown links render correctly in template sidebar (#4222)
  • Improve .applies for ECharts and DeckGL (#4224)
  • Fix specifying custom --index with relative path (#4288)
  • Skip on_load callbacks in liveness check (#4302)
  • Ensure re-rendered FileDownload still fetches live data (#4328)
  • Fix handling of panel.cache on undecorated Parameterized method (#4332)
  • Ensure user provided hash_funcs are applied in panel.cache (#4334)
  • Fix plotly eventdata undefined val (#4355)
  • Ensure panel convert respects panel.config options (#4359)
  • Propagate options from HoloViews and Bokeh plots to enclosing Pane (#4360)
  • Propagate options from dynamic components such as ParamMethod and Interactive to enclosing layout (#4360)

Minor enhancements

  • Allow to set the log level of the Admin logger (#3495)
  • Make refresh_token available in Auth (#4227)
  • Simplify determining whether script is executed as application with pn.state.served property (#4252)
  • Add loading_indicator to global config (#4259)
  • IPython display compatibility in pyodide builds (#4270)
  • Split PanelJupyterExecutor into separate module (#4276)
  • Allow dynamic loading of javascript modules in ReactiveHTML (#4319)
  • Add Plotly.link_figure parameter (#4333)
  • Ensure CrossSelector filters apply on each keystroke (#4339)
  • Improve startup, error handling and shutdown of Jupyter kernels in jupyter_server_extension (#4364)

Compatibility and Version Updates

  • Upgrade plotly.js to 2.10.1 (#4320)
  • Upgrade to pyodide 0.22.1 in panel convert (#4334)
  • Upgrade to pyscript 2022.12.01 in panel convert (#4334)
  • Fix compatibility of Perspective pane with Numpy 1.24 (#4362)

Deprecations

  • Add deprecation warning to IDOM pane (#4293)
  • Add deprecation warning for Viewable.app and Viewable.pprint methods (#4293, #4347)

Documentation

  • Add CONTRIBUTING.md (#4262)
  • Add Gallery VideoStream example (#4047)
  • Add description of literal options to the docs for ReactiveHTML (#3803)

Version 0.14.2

16 Dec 17:43
Compare
Choose a tag to compare

This release primarily focuses on bug fixes. In particular it resolves various issues with support for rendering ipywidgets (particularly in ipywidgets>=8.0) and also fixes a number of issues with the Jupyter Server previews. Many thanks for @govinda18, @joelostblom, @banesullivan, @xeldnahcram, @geronimogoemon, @minasouliman, @peterfpeterson, @jlstevens and the core maintainers @maximlt, @hoxbro, @MarcSkovMadsen and @philippjfr for their contributions to this release.

Enhancements

  • Add support for Tqdm.process_map (#4093)
  • Support non-vtkPolyData types in vtk synchronizer (#4124)
  • Allow invoking convert functions from pyodide (#4135)
  • Support step format in date sliders (#4152)
  • Add a Reacton component to simplify rendering (#4190)

Bugs

  • Ensure Jupyter server extension serves resources, extensions and paths correctly (#4083, #4133, #4202)
  • Ensure IPyWidget comm does not break when new widget is rendered (#4091)
  • Improving detection of comms in VSCode and Google Colab (#4115)
  • Ensure .js mimetype is served correctly on Windows (#4118)
  • Ensure unhiding Tabulator columns renders cells correctly (#4119)
  • Ensure embedded Slider widgets initialize with correct default (#4121)
  • Handle missing event loop in thread gracefully (#4123)
  • Ensure Matplotlib pane handles explicit width/height settings correctly (#4128)
  • Allow Viewer to render servable but non-viewable objects (#4131)
  • Fix regression in tracking sessions in admin interface (#4132)
  • Ensure Tabs headers do not scroll unncessarily (#4146)
  • Ensure Location model reports as idle (#4159)
  • Fix auth error template rendering (#4162)
  • Fix issues with value on EditableSlider when it is outside fixed_start / fixed_end range (#4169)
  • Ensure ipywidgets events are handled the same way as regular events (#4171)
  • Don't raise TypeError for class which contains __panel__ (#4174)
  • Do not dispatch events if bokeh Document is set to hold events (#4178)
  • Execute onload callbacks immediately in pyodide app (#4191)
  • Improve IPyWidget kernel handling in server contexts (#4195)
  • Fix rendering of IPyWidget with child views in the notebook (#4197)

Docs

  • Add JupyterLite build and instructions (#4122)
  • Document deployment to Hugging Face Spaces (#4143)

Version 0.14.1

01 Nov 09:58
Compare
Choose a tag to compare

This release primarily addresses regressions introduced in 0.14.0 and various long standing bugs. Many thanks to external contributors @liu-kan and @KedoKudo and the maintainers @hoxbro@maximlt and @philippjfr for contributing a number of fixes.

### Minor enhancements

- Improve support for requests in pyodide (#3973)
- Add option to clear value of DatetimePicker (#3990)
- Add support for hashing dates in pn.cache (#4004)
- Silence EMPTY_LAYOUT warnings (#4056)

### Compatibility

- Fix Jupyterlite and latest PyScript compatibility (#4040)

### Bugs

#### Webassembly conversion

- Correctly handle resource mode in when converting to WebAssembly (#3967)

### Jupyter and Server

- Correctly handle future exceptions on threads (#3977)
- Fix panel serve index template (#3980)
- Do not error if curdoc has been destroyed (#3994)
- Ensure extensions loaded in jupyter kernel are served by StaticHandler (#4000)
- Various fixes for OAuth handling with pn.serve (#4006)
- Fix bug in on_load callback exception handling (#4007)
- Ensure periodic callbacks are only started on main thread (#4011)
- Ensure jupyter server extension handles explicit root_dir (#4029)
- Ensure futures are correctly awaited when executed on thread (#4031)

#### Components

- Ensure Tabulator handles filtering on edited values correctly if show_index=False (#3988#4016)
- Ensure Tabulator declares numeric sorter for numeric dtypes (#3999)
- Fix regression initializing DiscreteSlider with non-integer value (#4009)
- Ensure that template.config.raw_css is correctly applied (#4018)
- Fix handling MenuButton clicks when split=True (#4021)
- Ensure styling on Tabulator with empty DataFrame does not error (#4028)
- Allow changing level on Debugger widget (#4057

Version 0.14.0

05 Oct 15:20
Compare
Choose a tag to compare

This release focuses on three main themes:

  • Support for running Panel apps entirely in the browser using WebAssembly (via Pyodide and PyScript)
  • Improvements in the app-user experience by making it easier to build responsive and performant applications
  • Improvements in the developer experience through static typing and docstrings.

Many, many thanks to everyone who filed issues or contributed to this release. In particular we would like to thank @janimo, @xavArtley, @thuydotm, @jmosbacher, @dmarx, @2WoLpH, @ipopa144, @sdc50 for contributions and @philippjfr, @hoxbro, @maximlt, and @MarcSkovMadsen for ongoing maintenance and development.

Features

  • Add support for converting Panel apps to pyscript/pyodide (#3817, #3830, #3851, #3856, #3857, #3858, #3860, #3861, #3863, #3864, #3868, #3878)
  • Manage our own CDN to improve performance and reliability for delivering JS payloads (#3867, #3870)
  • Add ability to defer_load of components (#3882)
  • Add pn.widget helper function (#1826, #3589)
  • Add config.exception_handler to easily capture, log and notify users about errors (#3893)
  • Implement pn.cache function for memoization support (#2411)
  • Rewrite server extension to run Panel applications in kernels so that previews run in the same environment as the deployed app (#3763)
  • Add ability to define authorization callback (#3777)
  • Support memray profiler (#3509)
  • Add liveness endpoint (#3832)
  • Add ability to configure exception handler (#3896)

Enhancements

  • Ensure OAuth redirects to requested app and retains query arguments (#3555)
  • Add extension entry point (#3738)
  • Update Admin Logs page to use Tabulator (#3694)
  • Ensure location.unsync unsets query params (#3806)
  • Allow None value on numeric sliders and LiteralInput (#3174)
  • Allow serving admin panel with pn.serve (#3798)
  • Improve ReactiveHTML loop support and validation (#3813)
  • Support declaring Perspective.plugin_config pane (#3814)
  • Do not flicker busy indicator during --autoreload check (#3804)
  • Improve robustness of state.curdoc in threaded and async contexts (#3776, #3810, #3834)
  • Support datetime bounds for DatetimePicker and DatetimeRangePicker (#3788)
  • Allow setting the Oauth provider using environment variables (#3698)
  • Implement Player.value_throttled (#3756)
  • Ensure that URL query parameters are preserved during OAuth (#3656)
  • Improve Markdown code syntax highlighting (#3758)
  • Ensure components do not re-render if background or loading parameters change (#3599)
  • Add ability to define admin dashboard plugins (#3668)
  • Do not calculate embed state for disabled widgets (#3757)
  • Add hard bounds to editable sliders (#3739)
  • Add bundling of shared resources (#3894)
  • Add Tabulator as default param.DataFrame widget (#3912)

Documentation

Compatibility & Version updates

  • Support ipywidgets>=8.0 (#3782)
  • Bump jsoneditor package (#3838)
  • Upgrade to Tabulator 5.3.2 (#3784)
  • Improve Django compatibility (#3843, #3835)
  • Remove all usage of deprecated Pane

Bugs

Server

  • Ensure closed websocket does not cause errors
  • Handle session and websocket close cleanly (#3769)
  • Fix prefix handling for admin page (#3809)
  • Support admin dashboard in multi-process deployments (#3812)
  • Improve document cleanup when not invoked using server_destroy (#3842)
  • Ensure pn.state.execute dispatches immediately if possible (#3859)
  • Ensure autoload.js resources are appropriately prefixed (#3873)

Notebook

  • Fix support for copying cells and creating new views in JupyterLab (#3652)
  • Ensure output renders in VSCode notebook with latest ipywidgets (#3765)
  • Resolve issues with Jupyter slowdown due to event_loop patching on Windows (#3770)
    • Ensure old comm managers do not raise errors in notebook (#3853)
    • Simplify rendering of ipywidget (#3937)

Tabulator

  • Do not re-render Tabulator on css_classes or background change (#3598)
  • Ensure expand icon updates on Tabulator.expanded change (#3703)
  • Update page Parameter when pagination is 'local' (#3704)
  • Do not apply sorters on Tabulator cell edits (#3744)
  • Ensure Tabulator.controls renders (#3768)
  • Ensure correctness of event row and selection indices in Tabulator (#3771, #3841)
  • Fix issues with frontend and backend sorters being out of sync in Tabulator (#3825, #3839)
  • Fix default values of a list header filter in Tabulator (#3826)
  • Fix the edit event with a python filter in Tabulator (#3829)
  • Disable client-side date filtering on Tabulator (#3849)
  • Support editing of pandas masked array dtypes in Tabulator (#3850)
  • Fix issues editing a cell when client-side filtering applied (#3852)
  • Do not recompute data when local pagination is enabled (#3854)
  • Don't skip filtering when the column name is undefined (#3862)

Misc

  • Fix FileInput.save (#3579)
  • Fix issues with Matplotlib.high_dpi option (#3591, #3594)
  • Ensure layout recomputes on HTML/Markdown re-rerender (#3616)
  • Allow overriding all widget parameters on Param pane (#3754)
  • Ensure DatePicker start/end are transformed when jslinked (#3759)
  • Ensure notifications can be enabled without a template ([#3820](https:...
Read more

Version 0.13.1

24 May 10:14
Compare
Choose a tag to compare

This release is primarily a bug fix release but also includes a number of enhancements. Many thanks to @hoxbro, @joelostblom, @raybellwaves, @pdrok, @tlvu, @govinda18, @MridulS and the core maintainers @MarcSkovMadsen, @maximlt and @philippjfr for contributing to this release.

Enhancements

  • Add repr to cell and edit events (#3434)
  • Improvements for pyodide handling (#3444, #3508, #3511)
  • Add support for Plotly animation frames (#3449)
  • Implement single and multi-selection in Vega pane (#3470, #3499, #3505)
  • Add typehints to help developers and users (#3476)
  • Add pn.state.execute method to run callbacks in the right context (#3550)
  • Add support for asynchronous on_edit/on_click Tabulator callbacks (#3550)
  • Add DatetimeRangeSlider widget (#3548)

Bug fixes

  • Fix pyodide array buffer conversion (#3409)
  • Allow placeholder to be updated on TextEditor (#3427)
  • Fix issues editing data in sorted columns (#3431)
  • Ensure bokeh correctly detects whether HTML/Markdown contains latex (#3438)
  • Ensure notifications work on server created with pn.serve and .show (#3445)
  • Replace slickgrid background image in custom FastTemplate CSS (#3461)
  • Ensure param.Array is synced correctly in ReactiveHTML (#3456)
  • Ensure selection on filtered Tabulator does not raise out-of-bounds error (#3462)
  • Ensure updating Tabulator does not reset scroll position (#3450)
  • Various fixes for FastTemplate CSS (#3464)
  • Ensure Tabulator on_click and on_edit events return correct row when paginated (#3410)
  • Fix broken JupyterLab preview (#3469)
  • Skip Tabulator row selection when clicking on expand button (#3474)
  • Ensure overflow in MaterialTemplate is not clipped (#3492)
  • Allow providing --index for directory style apps (#3493)
  • Ensure Tabulator expanded rows are sized correctly after re-render (#3507)
  • Make CodeHandler robust to document that has been destroyed (#3510)
  • Do not sync DataFrame widget sorters parameter with bokeh model (#3527)
  • Ensure that HoloViews callback events are not auto-dispatched (#3528)
  • Ensure non-updateable Pane can be updated inside Tabs (#3532)
  • Fix slowdown of JupyterLab on Windows (#3531)
  • Fix issue with inverted data when editing a cell in a sorted Tabulator column (#3531)
  • Ensure Tabulator has correct layout after re-render (#3536)
  • Do not log events generated by admin page on the admin page (#3539)
  • Fix Tabulator events when the original column is not a string (#3541)

Documentation

  • Adds docstrings to layouts (#3417)
  • Show how to filter categorical and temporal data from Altair/VegaLite (#3401)
  • Document how to make a Tabulator column non-editable (#3489)