Panel
Data & MLPanel: The powerful data exploration & web app framework for Python
Release History
v1.8.72 fixesThis patch release reverts two disruptive changes from version 1.8.6 and resolves issues related to Tabulator resizing and patched Plotly versions.
v1.8.612 fixes3 featuresThis patch release addresses several bugs related to ESM and React components, improves UI robustness, and updates key dependencies like Bokeh and Preact.
v1.8.56 fixesThis release adds several stability and rendering fixes for notebooks, Tabulator, ESM components, Vega datasets, and Markdown, along with new documentation for FastAPI integration and app conversion guides.
v1.8.410 fixes4 featuresPanel 1.8.4 introduces async support for Tabulator, new configuration toggles, enhanced validation, and numerous bug fixes improving notebook integration and event ordering.
v1.8.38 fixes7 featuresThis patch release adds Python 3.14 support, several UI enhancements, a new export capability for Vega panes, and numerous bug fixes and documentation updates.
v1.8.27 fixes4 featuresThis patch release adds several UI enhancements, improves static serving and pyodide handling, and fixes regressions, while also providing new deployment guides for Anaconda Notebooks and PythonAnywhere.
v1.8.12 fixes1 featureThis release adds a configuration option to disable the container popup and includes bug fixes for Tabulator column width handling and croniter default timezone, plus a documentation typo correction.
v1.8.0Breaking15 fixes4 featuresThis release adds JSCode support for inline JavaScript, WebSocket reconnection, AVIF images, and resource bundling for WASM, while dropping Bokeh 3.5/3.6 support and updating many component versions.
v1.7.516 fixes5 featuresThis patch release adds several enhancements such as improved `.from_param()` errors and a warm reuse‑sessions option, while fixing numerous bugs and addressing XSS security issues.
v1.7.44 fixes3 featuresThis patch release adds bytes support for the PDF pane, Auth0 logout URL, static‑dir authentication, and includes several security hardening and bug fixes.
v1.7.36 fixes5 featuresThis patch release adds UI copy‑to‑clipboard for exceptions, MathJax support, Tabulator title customization, and improved CLI/ESM feedback, while fixing several JavaScript race conditions and widget rendering bugs.
v1.7.29 fixes7 featuresThis patch release adds several new features such as byte support for media panes and header tooltips for Tabulator, along with numerous bug fixes and performance improvements.
v1.7.12 fixes1 featureThis patch adds a disable‑preview option for FileDropper and fixes a Bokeh<3.7 Column update regression, along with logger interface and documentation improvements.
v1.7.09 fixes7 featuresThis minor release adds new UI options, a secondary sidebar for FastListTemplate, and several quality‑of‑life improvements, while fixing numerous bugs and bumping key JS dependencies.
v1.6.313 fixes4 featuresThis release adds performance enhancements for Column and ReactComponent rendering, introduces new CodeEditor options, and fixes numerous bugs across widgets, OAuth, and ESM handling.
v1.6.222 fixes9 featuresPanel 1.x introduces easier subclassing, enhanced ReactComponent capabilities, ESM improvements, and full compatibility with Bokeh 3.7 along with numerous bug fixes.
v1.6.112 fixes4 featuresThe patch adds new features such as ChatFeed.scroll_to, a watch mode for panel compile, and ESM CSS bundle support, while fixing numerous bugs and adding compatibility with Plotly 6.0 and updated pyodide/PyScript versions.
v1.6.017 fixes4 featuresThis release adds a standalone Modal component, PAM authentication, a new Widget.from_values method, and edit capabilities for ChatMessage/ChatFeed, along with numerous styling enhancements and a long list of bug fixes.
Common Errors
UnboundLocalError2 reportsThe UnboundLocalError occurs when a variable is referenced before it has been assigned a value within its scope, often inside a function. Ensure the variable is assigned a value before being used, especially within conditional statements or loops, by initializing it to a default value like None or an empty list before the conditional block containing its use.
RuntimeError2 reportsThe "RuntimeError: no running event loop" in Panel often arises when asynchronous operations (like callbacks) are initiated outside of a running `asyncio` event loop, particularly after reloading or during multi-threaded execution. Ensure all Panel apps and their asynchronous callbacks are initialized and executed within the main thread's event loop by using `panel.serve` or `panel.show` correctly, and avoid creating new loops within threads or reload contexts. If running asynchronous code outside the main thread, explicitly set the default event loop using `asyncio.set_event_loop` within that thread.
ModuleNotFoundError2 reportsThe "ModuleNotFoundError" in Panel usually arises from missing dependencies or incorrect import paths, especially when packaging for environments like Pyodide. Resolve this by ensuring all necessary packages are listed in your environment file (e.g., requirements.txt) and that import statements correctly reflect the module's location within the installed package. For environments like Pyodide, verify package availability and consider using Panel's specific packaging tools for compatible deployment.
AtrributeError1 reportThe "AttributeError" in Panel often arises when a widget's underlying model hasn't been fully initialized, particularly when using `.from_param` or saving to HTML. Ensure all necessary parameters, especially those required by the widget's `__init__` method or model properties, are provided during widget creation or before saving. Explicitly set default values or use `param.parameterized.parameter_kwargs` to preemptively populate missing attributes.
SyntaxError1 reportSyntaxError in panel often arises from code incompatible with Python's syntax, frequently due to IPython magic commands (e.g., `%run`) used outside of IPython environments. To fix this, either remove the non-Python syntax or ensure the code is executed within an environment that supports it, such as a Jupyter Notebook or IPython interactive session. If running a script, rewrite the code to avoid IPython specific commands.
TypeError1 reportTypeError in Panel often stems from passing an object to a Panel pane that isn't directly displayable or compatible (e.g., a Matplotlib figure without a suitable display method). Fix this by ensuring the object is either a native Panel component, a supported type like a Bokeh plot, or by using `pn.panel(object)` to automatically convert it to a displayable Panel object, potentially specifying custom rendering options if needed. Alternatively, explore explicitly converting the object to a compatible format (e.g., matplotlib to a static image).
Related Data & ML Packages
An Open Source Machine Learning Framework for Everyone
🤗 Transformers: the model-definition framework for state-of-the-art machine learning models in text, vision, audio, and multimodal models, for both inference and training.
Tensors and Dynamic neural networks in Python with strong GPU acceleration
scikit-learn: machine learning in Python
Flexible and powerful data analysis / manipulation library for Python, providing labeled data structures similar to R data.frame objects, statistical functions, and much more
Streamlit — A faster way to build and share data apps.
Subscribe to Updates
Get notified when new versions are released