From c297143d074a89d73c023ec22dc3c992f745d219 Mon Sep 17 00:00:00 2001 From: Philipp Rudiger Date: Mon, 16 Sep 2024 14:10:11 +0200 Subject: [PATCH] Pre-release doc fixes (#7283) --- doc/explanation/api/callbacks.md | 2 +- doc/explanation/api/param.md | 2 +- doc/explanation/api/parameterized.md | 2 +- .../comparisons/compare_ipywidgets.md | 2 +- .../comparisons/compare_streamlit.md | 2 +- .../components/components_overview.md | 2 +- .../components/reactive_html_components.md | 6 ++-- doc/explanation/dependencies/param.md | 2 +- doc/explanation/develop_seamlessly.md | 14 ++++---- doc/how_to/authentication/basic.md | 4 +-- doc/how_to/authentication/configuration.md | 2 +- doc/how_to/authentication/user_info.md | 2 +- doc/how_to/callbacks/async.md | 2 +- doc/how_to/callbacks/load.md | 4 +-- doc/how_to/callbacks/periodic.md | 2 +- doc/how_to/callbacks/schedule.md | 2 +- doc/how_to/components/add_remove.md | 2 +- doc/how_to/components/construct_panes.md | 2 +- doc/how_to/concurrency/dask.md | 2 +- doc/how_to/concurrency/manual_threading.md | 2 +- doc/how_to/concurrency/sync_to_async.md | 2 +- doc/how_to/concurrency/threading.md | 2 +- doc/how_to/deployment/pycafe.md | 36 +++++++++---------- doc/how_to/editor/markdown.md | 2 +- doc/how_to/export/index.md | 2 +- doc/how_to/interact/interact_abbreviations.md | 2 +- doc/how_to/interact/interact_fix_values.md | 2 +- doc/how_to/interact/interact_layout.md | 2 +- doc/how_to/interact/interact_throttle.md | 2 +- doc/how_to/interactivity/bind_component.md | 4 +-- doc/how_to/interactivity/bind_function.md | 6 ++-- .../interactivity/hvplot_interactive.md | 8 ++--- doc/how_to/links/jslinks.md | 4 +-- doc/how_to/links/links.md | 2 +- doc/how_to/migrate/anywidget/index.md | 16 ++++----- doc/how_to/notebook/jupyterlabpreview.md | 4 +-- doc/how_to/notebook/layout_builder.md | 2 +- doc/how_to/notebook/other_nb.md | 6 ++-- doc/how_to/param/custom.md | 4 +-- doc/how_to/param/dependencies.md | 4 +-- doc/how_to/param/subobjects.md | 6 ++-- doc/how_to/param/uis.md | 2 +- doc/how_to/pipeline/complex_pipeline.md | 8 ++--- doc/how_to/pipeline/control_flow.md | 6 ++-- doc/how_to/pipeline/simple_pipeline.md | 2 +- doc/how_to/state/request.md | 2 +- doc/how_to/streamlit_migration/activity.md | 4 +-- doc/how_to/streamlit_migration/caching.md | 2 +- doc/how_to/streamlit_migration/chat.md | 10 +++--- doc/how_to/streamlit_migration/get_started.md | 2 +- .../streamlit_migration/interactivity.md | 2 +- doc/how_to/streamlit_migration/layouts.md | 4 +-- doc/how_to/streamlit_migration/panes.md | 10 +++--- doc/how_to/streamlit_migration/templates.md | 6 ++-- doc/how_to/streamlit_migration/widgets.md | 4 +-- doc/how_to/styling/apply_css.md | 2 +- doc/how_to/styling/design.md | 4 +-- doc/how_to/styling/design_variables.md | 4 +-- doc/how_to/styling/matplotlib.md | 2 +- doc/how_to/styling/plotly.md | 2 +- doc/how_to/styling/themes.md | 2 +- doc/how_to/styling/vega.md | 2 +- doc/how_to/templates/template_arrange.md | 10 +++--- doc/how_to/templates/template_custom.md | 10 +++--- doc/how_to/templates/template_modal.md | 6 ++-- doc/how_to/templates/template_set.md | 2 +- doc/how_to/templates/template_theme.md | 8 ++--- examples/reference/panes/Placeholder.ipynb | 10 +++--- examples/reference/widgets/Tabulator.ipynb | 2 +- panel/reactive.py | 10 +++--- panel/template/base.py | 14 ++++---- pixi.toml | 2 +- 72 files changed, 167 insertions(+), 167 deletions(-) diff --git a/doc/explanation/api/callbacks.md b/doc/explanation/api/callbacks.md index ecb10a2fd9..5ba8e66174 100644 --- a/doc/explanation/api/callbacks.md +++ b/doc/explanation/api/callbacks.md @@ -2,7 +2,7 @@ The callback API in Panel is the lowest-level approach, affording the greatest amount of flexibility but also quickly growing in complexity because each new interactive behavior requires additional callbacks that can interact in complex ways. Nonetheless, callbacks are important to know about, and can often be used to complement the other approaches. For instance, one specific callback could be used in addition to the more reactive approaches the other APIs provide. -For more details on defining callbacks see the [linking how-to guides](../../how_to/links/index.md). +For more details on defining callbacks see the [linking how-to guides](../../how_to/links/index). ## Pros: diff --git a/doc/explanation/api/param.md b/doc/explanation/api/param.md index 9bf0426029..c86c4f2ee9 100644 --- a/doc/explanation/api/param.md +++ b/doc/explanation/api/param.md @@ -51,7 +51,7 @@ Not only does the parameter hold the various metadata and validation options for ## References -The concept of a reference is crucial to using Panel effectively, as much of the [reactivity](reactivity.md) in Panel is built on top of the idea of reference binding. The other piece (i.e. the binding) is that parameters can be given a reference, which they will internally resolve and update whenever the reference updates. In param itself this has to be declared by declaring `allow_ref=True` on the parameter, in Panel effectively all parameters automatically enable this functionality and also allow support for `nested_refs=True` where possible. +The concept of a reference is crucial to using Panel effectively, as much of the [reactivity](reactivity) in Panel is built on top of the idea of reference binding. The other piece (i.e. the binding) is that parameters can be given a reference, which they will internally resolve and update whenever the reference updates. In param itself this has to be declared by declaring `allow_ref=True` on the parameter, in Panel effectively all parameters automatically enable this functionality and also allow support for `nested_refs=True` where possible. Let us explore this with a simple example: diff --git a/doc/explanation/api/parameterized.md b/doc/explanation/api/parameterized.md index 0e6df81915..d979fc2dcf 100644 --- a/doc/explanation/api/parameterized.md +++ b/doc/explanation/api/parameterized.md @@ -2,7 +2,7 @@ The [Param](http://param.holoviz.org) library allows expressing the parameters of a class (or a hierarchy of classes) completely independently of a GUI implementation. Panel and other libraries can then take those parameter declarations and turn them into a GUI to control the parameters. This approach allows the parameters controlling some computation to be captured specifically and explicitly (but as abstract parameters, not as widgets). Then thanks to the `@param.depends` decorator (similar to `@panel.depends` but for use in Parameterized classes without any dependency on Panel), it is then possible to directly express the dependencies between the parameters and the computation defined in some method on the class, all without ever importing Panel or any other GUI library. The resulting objects can then be used in both GUI and non-GUI contexts (batch computations, scripts, servers). -The parameterized approach is a powerful way to encapsulate computation in self-contained classes, taking advantage of object-oriented programming patterns. It also makes it possible to express a problem completely independently from Panel or any other GUI code, while still getting a GUI for free as a last step. For more detail on using this approach see the [how-to guides on declarative UIs with Param](../../how_to/param/index.md). +The parameterized approach is a powerful way to encapsulate computation in self-contained classes, taking advantage of object-oriented programming patterns. It also makes it possible to express a problem completely independently from Panel or any other GUI code, while still getting a GUI for free as a last step. For more detail on using this approach see the [how-to guides on declarative UIs with Param](../../how_to/param/index). ## Pros: diff --git a/doc/explanation/comparisons/compare_ipywidgets.md b/doc/explanation/comparisons/compare_ipywidgets.md index f3c8c5caec..6617a41e0c 100644 --- a/doc/explanation/comparisons/compare_ipywidgets.md +++ b/doc/explanation/comparisons/compare_ipywidgets.md @@ -2,7 +2,7 @@ Both Panel and ipywidgets (aka Jupyter Widgets) allow Python users to work with custom widgets and create apps and dashboards from Python, both in Jupyter notebooks and in standalone servers (when paired with Voila. But Panel and ipywidgets are based on different, independently developed technologies for doing so, with some implications: -- Panel is based on Bokeh widgets and layouts, which were developed separately from the Jupyter ecosystem, and designed from the start for standalone deployments. Jupyter widgets, as the name suggests, were first developed specifically for the notebook environment, and only relatively recently (in 2019) adapted for standalone deployment (see [Voila](compare_voila.md)). Nowadays, both technologies have evolved to be well suited to both Jupyter and server contexts, but their different histories are still visible in the types of examples you typically see and in support for less-common operations for each library. +- Panel is based on Bokeh widgets and layouts, which were developed separately from the Jupyter ecosystem, and designed from the start for standalone deployments. Jupyter widgets, as the name suggests, were first developed specifically for the notebook environment, and only relatively recently (in 2019) adapted for standalone deployment (see [Voila](compare_voila)). Nowadays, both technologies have evolved to be well suited to both Jupyter and server contexts, but their different histories are still visible in the types of examples you typically see and in support for less-common operations for each library. - Historically, ipywidgets exposed more of the underlying HTML/CSS styling options, allowing them to be customized more heavily than Bokeh widgets, but since Bokeh 3.0 and Panel 1.0 both types of widgets support similar types of styling. diff --git a/doc/explanation/comparisons/compare_streamlit.md b/doc/explanation/comparisons/compare_streamlit.md index 025883c56f..66c627323a 100644 --- a/doc/explanation/comparisons/compare_streamlit.md +++ b/doc/explanation/comparisons/compare_streamlit.md @@ -22,4 +22,4 @@ These videos from a dedicated Streamlit fan walk you through some of Streamlit's ## Code Examples -If you want to compare examples with code, check out the [How to Migrate From Streamlit Guide](../../how_to/streamlit_migration/index.md). +If you want to compare examples with code, check out the [How to Migrate From Streamlit Guide](../../how_to/streamlit_migration/index). diff --git a/doc/explanation/components/components_overview.md b/doc/explanation/components/components_overview.md index f8bae22beb..46b6aa24f0 100644 --- a/doc/explanation/components/components_overview.md +++ b/doc/explanation/components/components_overview.md @@ -17,7 +17,7 @@ The main objects that Panel provides, and that we are going to call *components* - *Templates*: templates are components that render multiple Panel objects in an HTML document. The basic template, which you get when you serve an app without setting any template, is basically a blank canvas. Instead when you use one of the built-in templates you can easily improve the design and branding of your app, which will get for free a header, a sidebar, etc. - *Notifications*: notifications are components that display so called "toasts", designed to mimic the push notifications that have been popularized by mobile and desktop operating systems. -All the Panel components can be visualized on the [Component Gallery](../../reference/index.rst). +All the Panel components can be visualized on the [Component Gallery](../../reference/index). :::{tip} Components usually have in their docstring a link to their documentation page, use `?` in a notebook or your IDE inspection capabilities to access the link. diff --git a/doc/explanation/components/reactive_html_components.md b/doc/explanation/components/reactive_html_components.md index 5c79948f0d..2edef1dbb0 100644 --- a/doc/explanation/components/reactive_html_components.md +++ b/doc/explanation/components/reactive_html_components.md @@ -35,13 +35,13 @@ Slideshow(width=800, height=300) ## Alternatives -If you're looking for **simpler** alternatives to `ReactiveHTML`, Panel provides a `Viewer` class that allows you to combine existing Panel components using Python only. This approach is a great choice if you want to quickly create custom components without the need for writing HTML, CSS, or JavaScript. You can learn more about creating custom `Viewer` components in our guide [How-to > Combine Existing Components](../../how_to/custom_components/custom_viewer.md). +If you're looking for **simpler** alternatives to `ReactiveHTML`, Panel provides a `Viewer` class that allows you to combine existing Panel components using Python only. This approach is a great choice if you want to quickly create custom components without the need for writing HTML, CSS, or JavaScript. You can learn more about creating custom `Viewer` components in our guide [How-to > Combine Existing Components](../../how_to/custom_components/custom_viewer). On the other hand, if you're looking for a **more advanced** approach that gives you full control over the design and functionality of your custom components, you can use *Bokeh Models*. With Bokeh Models, you can leverage the full power of your IDE, TypeScript and modern JavaScript development tools to build advanced and performant custom components. Many of the built-in Panel components are built using this approach. It provides flexibility and extensibility, allowing you to create highly customized and interactive components tailored to your specific needs. We expect detailed documentation on writing custom Bokeh models will be added to the documentation in the future. ## The Name -`ReactiveHTML` is named for its ability to enable reactive programming in HTML. Unlike the static HTML content that the [`HTML`](../../reference/panes/HTML.md) pane displays, `ReactiveHTML` components can update their view dynamically in response to changes in parameter values and other events. +`ReactiveHTML` is named for its ability to enable reactive programming in HTML. Unlike the static HTML content that the [`HTML`](../../reference/panes/HTML) pane displays, `ReactiveHTML` components can update their view dynamically in response to changes in parameter values and other events. We could also have called the `ReactiveHTML` class for example `BaseComponent`, `HTMLComponent`, `SimpleComponent` or `AnyComponent` to give you the right associations. @@ -198,7 +198,7 @@ class CustomComponent(ReactiveHTML): CustomComponent(value="A new value", width=500) ``` -Check out the [How-to > Create Layouts With ReactiveHTML](../../how_to/custom_components/reactive_html/reactive_html_layout.md) guide for lots of Jinja2 examples. +Check out the [How-to > Create Layouts With ReactiveHTML](../../how_to/custom_components/reactive_html/reactive_html_layout) guide for lots of Jinja2 examples. ### Template variables vs Jinja2 diff --git a/doc/explanation/dependencies/param.md b/doc/explanation/dependencies/param.md index 6596d9b4b8..2b8bbfa869 100644 --- a/doc/explanation/dependencies/param.md +++ b/doc/explanation/dependencies/param.md @@ -276,4 +276,4 @@ As you can see, *Parameters* offer a very generic mechanism for your Python code ## Related Resources - See [Param's documentation](https://param.holoviz.org/) -- See [How-to > Declare UIs with Declarative API](../../how_to/param/index.md). +- See [How-to > Declare UIs with Declarative API](../../how_to/param/index). diff --git a/doc/explanation/develop_seamlessly.md b/doc/explanation/develop_seamlessly.md index f29d1723a6..c35c419572 100644 --- a/doc/explanation/develop_seamlessly.md +++ b/doc/explanation/develop_seamlessly.md @@ -26,7 +26,7 @@ import panel as pn pn.extension() ``` -The extension ensures that the [`pyviz_comms`](https://github.com/holoviz/pyviz_comms) and all required Javascript and CSS resources are added to your notebook environment. If you are going to be using any custom extensions, such as [Vega](../reference/panes/Vega.md) or [Tabulator](../reference/widgets/Tabulator.md) you must ensure that you initialize these as well. +The extension ensures that the [`pyviz_comms`](https://github.com/holoviz/pyviz_comms) and all required Javascript and CSS resources are added to your notebook environment. If you are going to be using any custom extensions, such as [Vega](../reference/panes/Vega) or [Tabulator](../reference/widgets/Tabulator) you must ensure that you initialize these as well. ```{pyodide} pn.extension('vega', 'tabulator') @@ -157,12 +157,12 @@ The `--show` flag will open a browser tab with the live app and the `--dev` flag ### Tutorials -- [Develop in an Editor (Basic)](../tutorials/basic/develop_editor.md) -- [Develop in an Editor (Intermediate)](../tutorials/intermediate/develop_editor.md)ยจ -- [Develop in a Notebook (Basic)](../tutorials/basic/develop_notebook.md) +- [Develop in an Editor (Basic)](../tutorials/basic/develop_editor) +- [Develop in an Editor (Intermediate)](../tutorials/intermediate/develop_editor) +- [Develop in a Notebook (Basic)](../tutorials/basic/develop_notebook) ### How-to -- [Configure PyCharm](../how_to/editor/pycharm_configure.md) -- [Configure VS Code](../how_to/editor/vscode_configure.md) -- [Write apps in Markdown](../how_to/editor/markdown.md) +- [Configure PyCharm](../how_to/editor/pycharm_configure) +- [Configure VS Code](../how_to/editor/vscode_configure) +- [Write apps in Markdown](../how_to/editor/markdown) diff --git a/doc/how_to/authentication/basic.md b/doc/how_to/authentication/basic.md index 2c10092548..2ea97907f7 100644 --- a/doc/how_to/authentication/basic.md +++ b/doc/how_to/authentication/basic.md @@ -38,7 +38,7 @@ If you enter the valid password (i.e. `my_password`) it will look like If you click the *Log out* button you will be sent back to the log in form. -In this mode the `username` is not authenticated. The `username` is provided as part of the [user info](user_info.md). +In this mode the `username` is not authenticated. The `username` is provided as part of the [user info](user_info). ## User credentials @@ -66,7 +66,7 @@ When serving an application dynamically using `pn.serve` you can also provide a ## Custom templates ```{admonition} Prerequisites -For a more in-depth understanding of custom template take a look at the [how to > Build a Custom Template](../templates/template_custom.md) guide. +For a more in-depth understanding of custom template take a look at the [how to > Build a Custom Template](../templates/template_custom) guide. ``` If you want to customize the authentication template you can provide a custom template with the `--basic-login-template` CLI argument. The template needs to submit `username` and `password` to the `/login` endpoint of the Panel server, e.g. the form of the default template looks like this. Check out the default template [here](https://github.com/holoviz/panel/blob/main/panel/_templates/basic_login.html) for inspiration. diff --git a/doc/how_to/authentication/configuration.md b/doc/how_to/authentication/configuration.md index d20e27ab2b..09779b92c2 100644 --- a/doc/how_to/authentication/configuration.md +++ b/doc/how_to/authentication/configuration.md @@ -16,7 +16,7 @@ The first step in configuring a OAuth is to specify a specific OAuth provider. P * `password`: Generic password grant based OAuth Provider with configurable endpoints * `auth_code`: Generic code challenge grant based OAuth Provider with configurable endpoints -We will go through the process of configuring each of these individually in [Providers](./providers.md) but for now all we need to know that the `oauth_provider` can be set on the commandline using the `--oauth-provider` CLI argument to `panel serve` or the `PANEL_OAUTH_PROVIDER` environment variable. +We will go through the process of configuring each of these individually in [Providers](providers) but for now all we need to know that the `oauth_provider` can be set on the commandline using the `--oauth-provider` CLI argument to `panel serve` or the `PANEL_OAUTH_PROVIDER` environment variable. Examples: diff --git a/doc/how_to/authentication/user_info.md b/doc/how_to/authentication/user_info.md index 7de72f777f..2dd09b1506 100644 --- a/doc/how_to/authentication/user_info.md +++ b/doc/how_to/authentication/user_info.md @@ -17,4 +17,4 @@ Please note that the user information above is only available to the users sessi ## Related Topics -- [Authorization Callbacks](authorization.md): Discover how to configure an authorization callback to perform custom authorization logic based on the user info such as redirects or error pages +- [Authorization Callbacks](authorization): Discover how to configure an authorization callback to perform custom authorization logic based on the user info such as redirects or error pages diff --git a/doc/how_to/callbacks/async.md b/doc/how_to/callbacks/async.md index d43eb3bcfe..ee043277df 100644 --- a/doc/how_to/callbacks/async.md +++ b/doc/how_to/callbacks/async.md @@ -118,4 +118,4 @@ pn.Row(button, pane) ## Related Resources -- See the related [How-to > Link Parameters with Callbacks API](../links/index.md) guides, including [How to > Create Low-Level Python Links Using `.watch`](../links/watchers.md). +- See the related [How-to > Link Parameters with Callbacks API](../links/index) guides, including [How to > Create Low-Level Python Links Using `.watch`](../links/watchers). diff --git a/doc/how_to/callbacks/load.md b/doc/how_to/callbacks/load.md index 056f131f4f..7ae37cdf46 100644 --- a/doc/how_to/callbacks/load.md +++ b/doc/how_to/callbacks/load.md @@ -58,9 +58,9 @@ layout.servable() ![panel-onload-example](https://assets.holoviz.org/panel/gifs/onload_callback.gif) -Note that `pn.state.onload` accepts both *sync* and *async* functions and also accepts a `threaded` argument, which, when combined with [enabling `config.nthreads`](../concurrency/threading.md) will run the callbacks concurrently on separate threads. +Note that `pn.state.onload` accepts both *sync* and *async* functions and also accepts a `threaded` argument, which, when combined with [enabling `config.nthreads`](../concurrency/threading) will run the callbacks concurrently on separate threads. -This example could also be implemented using a *bound and displayed function*. We recommend using that method together with `defer_load` when possible. See the [Defer Bound and Displayed Functions Guide](defer_load.md). +This example could also be implemented using a *bound and displayed function*. We recommend using that method together with `defer_load` when possible. See the [Defer Bound and Displayed Functions Guide](defer_load). ## Defer and Orchestrate Dependent Tasks diff --git a/doc/how_to/callbacks/periodic.md b/doc/how_to/callbacks/periodic.md index 35962a46a5..632379b87a 100644 --- a/doc/how_to/callbacks/periodic.md +++ b/doc/how_to/callbacks/periodic.md @@ -77,4 +77,4 @@ pn.serve(panel_app) ``` ## Related Resources -- See the related [How-to > Link Parameters with Callbacks API](../links/index.md) guides, including [How to > Create High-Level Python Links with `.link`](../links/links.md). +- See the related [How-to > Link Parameters with Callbacks API](../links/index) guides, including [How to > Create High-Level Python Links with `.link`](../links/links). diff --git a/doc/how_to/callbacks/schedule.md b/doc/how_to/callbacks/schedule.md index 901d210795..c051c922a1 100644 --- a/doc/how_to/callbacks/schedule.md +++ b/doc/how_to/callbacks/schedule.md @@ -4,7 +4,7 @@ This guide addresses how to schedule tasks that run independently of any user vi --- -The `pn.state.schedule_task` functionality allows scheduling global tasks at certain times or on a specific schedule. This is distinct from [periodic callbacks](./periodic.md), which are scheduled per user session. Global tasks are useful for performing periodic actions like updating cached data, performing cleanup actions or other housekeeping tasks, while periodic callbacks should be reserved for making periodic updates to an application. +The `pn.state.schedule_task` functionality allows scheduling global tasks at certain times or on a specific schedule. This is distinct from [periodic callbacks](./periodic), which are scheduled per user session. Global tasks are useful for performing periodic actions like updating cached data, performing cleanup actions or other housekeeping tasks, while periodic callbacks should be reserved for making periodic updates to an application. The different contexts in which global tasks and periodic callbacks run also has implications on how they should be scheduled. Scheduled task **must not** be declared in the application code itself, i.e. if you are serving `panel serve app.py` the callback you are scheduling must not be declared in the `app.py`. It must be defined in an external module or in a separate script declared as part of the `panel serve` invocation using the `--setup` commandline argument. diff --git a/doc/how_to/components/add_remove.md b/doc/how_to/components/add_remove.md index e4f8abb208..0baeb5b085 100644 --- a/doc/how_to/components/add_remove.md +++ b/doc/how_to/components/add_remove.md @@ -195,4 +195,4 @@ gridspec ## Related Resources - Learn more about Panes in [Explanation > Components](../../explanation/components/components_overview.md#panes). -- For more detail about `GridSpec` Panels, see the [Component Gallery > GridSpec](../reference/layouts/GridSpec.md). +- For more detail about `GridSpec` Panels, see the [Component Gallery > GridSpec](../reference/layouts/GridSpec). diff --git a/doc/how_to/components/construct_panes.md b/doc/how_to/components/construct_panes.md index 18a0854862..835485293a 100644 --- a/doc/how_to/components/construct_panes.md +++ b/doc/how_to/components/construct_panes.md @@ -6,7 +6,7 @@ This guide addresses how to construct Pane objects for displaying visible compon There are two main ways to construct a pane - explicitly or automatically. -To explicitly construct a pane, use one of the pane types listed in the [component gallery](../../reference/index.rst#panes). For example, you can create a Markdown pane as follows: +To explicitly construct a pane, use one of the pane types listed in the [component gallery](../../reference/index#panes). For example, you can create a Markdown pane as follows: ```{pyodide} import panel as pn diff --git a/doc/how_to/concurrency/dask.md b/doc/how_to/concurrency/dask.md index 316668a35b..6c38300654 100644 --- a/doc/how_to/concurrency/dask.md +++ b/doc/how_to/concurrency/dask.md @@ -230,6 +230,6 @@ Try running `panel serve dashboard.py`. If your Dask cluster is working, you wil ## Additional Resources -- [Panel - Use Async Callbacks](../callbacks/async.md) +- [Panel - Use Async Callbacks](../callbacks/async) - [Dask - Async/Await and Non-Blocking Execution Documentation](https://examples.dask.org/applications/async-await.html#Async/Await-and-Non-Blocking-Execution) - [Dask - Async Web Server](https://examples.dask.org/applications/async-web-server.html) diff --git a/doc/how_to/concurrency/manual_threading.md b/doc/how_to/concurrency/manual_threading.md index 39dadc6fbc..ef915b6345 100644 --- a/doc/how_to/concurrency/manual_threading.md +++ b/doc/how_to/concurrency/manual_threading.md @@ -1,6 +1,6 @@ # Set Up Manual Threading -Enabling threading in Panel, as demonstrated in the [automatic threading guide](threading.md), provides a simple method to achieve concurrency. However, there are situations where greater control is necessary. +Enabling threading in Panel, as demonstrated in the [automatic threading guide](threading), provides a simple method to achieve concurrency. However, there are situations where greater control is necessary. Below, we will demonstrate how to safely implement threads either per session or globally across multiple sessions. diff --git a/doc/how_to/concurrency/sync_to_async.md b/doc/how_to/concurrency/sync_to_async.md index d18782178d..154d8dd2b3 100644 --- a/doc/how_to/concurrency/sync_to_async.md +++ b/doc/how_to/concurrency/sync_to_async.md @@ -37,4 +37,4 @@ Without [`asyncify`](https://asyncer.tiangolo.com/tutorial/asyncify/) the app wo ## Dask -If you run many cpu bound functions you may consider offloading your functions asynchronously to an external compute engine like [Dask](https://www.dask.org/). See our [Dask how-to Guide](../concurrency/dask.md). +If you run many cpu bound functions you may consider offloading your functions asynchronously to an external compute engine like [Dask](https://www.dask.org/). See our [Dask how-to Guide](../concurrency/dask). diff --git a/doc/how_to/concurrency/threading.md b/doc/how_to/concurrency/threading.md index 78d0306d72..084f2ff951 100644 --- a/doc/how_to/concurrency/threading.md +++ b/doc/how_to/concurrency/threading.md @@ -43,5 +43,5 @@ In a threaded context on the other hand the two clicks will be processed concurr ``` ```{note} -Note that the global ThreadPool is used to dispatch events triggered by changes in parameters, events (such as click events), [`defer_load`](../callbacks/defer_load.md) callbacks and optionally [`onload` callbacks](../callbacks/load.md). +Note that the global ThreadPool is used to dispatch events triggered by changes in parameters, events (such as click events), [`defer_load`](../callbacks/defer_load) callbacks and optionally [`onload` callbacks](../callbacks/load). ``` diff --git a/doc/how_to/deployment/pycafe.md b/doc/how_to/deployment/pycafe.md index ebb8471d68..171e7e5323 100644 --- a/doc/how_to/deployment/pycafe.md +++ b/doc/how_to/deployment/pycafe.md @@ -62,30 +62,30 @@ Explore the [`panel-org`](https://py.cafe/panel-org) gallery examples below: ### Basic Tutorials -- [Animation](https://py.cafe/panel-org/basic-animation) from the [Build an Animation Tutorial](../../tutorials/basic/build_report.md). -- [Chatbot](https://py.cafe/panel-org/basic-chatbot) from the [Build a Chatbot Tutorial](../../tutorials/basic/build_chatbot.md). -- [Crossfilter Dashboard](https://py.cafe/panel-org/basic-crossfilter-dashboard) from the [Build Crossfiltering Dashboard Tutorial](../../tutorials/basic/build_crossfilter_dashboard.md). -- [Dashboard](https://py.cafe/panel-org/basic-dashboard) from the [Build a Dashboard Tutorial](../../tutorials/basic/build_dashboard.md). -- [Image Classifier](https://py.cafe/panel-org/basic-image-classifier) from the [Build an Image Classifier Tutorial](../../tutorials/basic/build_image_classifier.md). -- [Monitoring Dashboard](https://py.cafe/panel-org/basic-monitoring-dashboard) from the [Build an Monitoring Dashboard Tutorial](../../tutorials/basic/build_monitoring_dashboard.md). -- [Report](https://py.cafe/panel-org/basic-report) from the [Build a Report Tutorial](../../tutorials/basic/build_report.md). -- [Streaming Dashboard](https://py.cafe/panel-org/basic-streaming-dashboard) from the [Build Streaming Dashboard Tutorial](../../tutorials/basic/build_streaming_dashboard.md). -- [Todo app | Widget approach](https://py.cafe/panel-org/basic-todo) from the [Build a todo app](../../tutorials/basic/build_todo.md). +- [Animation](https://py.cafe/panel-org/basic-animation) from the [Build an Animation Tutorial](../../tutorials/basic/build_report). +- [Chatbot](https://py.cafe/panel-org/basic-chatbot) from the [Build a Chatbot Tutorial](../../tutorials/basic/build_chatbot). +- [Crossfilter Dashboard](https://py.cafe/panel-org/basic-crossfilter-dashboard) from the [Build Crossfiltering Dashboard Tutorial](../../tutorials/basic/build_crossfilter_dashboard). +- [Dashboard](https://py.cafe/panel-org/basic-dashboard) from the [Build a Dashboard Tutorial](../../tutorials/basic/build_dashboard). +- [Image Classifier](https://py.cafe/panel-org/basic-image-classifier) from the [Build an Image Classifier Tutorial](../../tutorials/basic/build_image_classifier). +- [Monitoring Dashboard](https://py.cafe/panel-org/basic-monitoring-dashboard) from the [Build an Monitoring Dashboard Tutorial](../../tutorials/basic/build_monitoring_dashboard). +- [Report](https://py.cafe/panel-org/basic-report) from the [Build a Report Tutorial](../../tutorials/basic/build_report). +- [Streaming Dashboard](https://py.cafe/panel-org/basic-streaming-dashboard) from the [Build Streaming Dashboard Tutorial](../../tutorials/basic/build_streaming_dashboard). +- [Todo app | Widget approach](https://py.cafe/panel-org/basic-todo) from the [Build a todo app](../../tutorials/basic/build_todo). ### Intermediate Tutorials -- [Todo App | Class approach](https://py.cafe/panel-org/intermediate-todo-app) from the [Build a todo app](../../tutorials/intermediate/build_todo.md). +- [Todo App | Class approach](https://py.cafe/panel-org/intermediate-todo-app) from the [Build a todo app](../../tutorials/intermediate/build_todo). ## Expert Tutorials -- [Mario Chime Button | AnyWidget](https://py.cafe/panel-org/panel-mario-chime-anywidget) from the [Custom AnyWidget Tutorial](../../tutorials/expert/custom_anywidget_components.md). -- [Mario Chime Button | JSComponent](https://py.cafe/panel-org/panel-mario-chime-jscomponent) from the [Custom JSComponent Tutorial](../../tutorials/expert/custom_js_components.md). +- [Mario Chime Button | AnyWidget](https://py.cafe/panel-org/panel-mario-chime-anywidget) from the [Custom AnyWidget Tutorial](../../tutorials/expert/custom_anywidget_components). +- [Mario Chime Button | JSComponent](https://py.cafe/panel-org/panel-mario-chime-jscomponent) from the [Custom JSComponent Tutorial](../../tutorials/expert/custom_js_components). ### App Gallery -- [Altair Brushing](https://py.cafe/panel-org/altair-brushing) from the [Altair Brushing Tutorial](../../gallery/altair_brushing.md). -- [hvPlot Explorer](https://py.cafe/panel-org/hvplot-explorer) from the [hvPlot Explorer Tutorial](../../gallery/hvplot_explorer.md) -- [NYC Deck.GL](https://py.cafe/panel-org/nyc-deckgl) from the [NYC Deck.Gl Tutorial](../../gallery/nyc_deckgl.md). -- [Penguin Crossfilter](https://py.cafe/panel-org/penguin-crossfilter) from the [Penguin Crossfilter Tutorial](../../gallery/penguin_crossfilter.md) -- [Portfolio Analyzer](https://py.cafe/panel-org/portfolio-analyzer) from the [Portfolio Analyzer Tutorial](../../gallery/portfolio_analyzer.md). -- [VideoStream Interface](https://py.cafe/panel-org/videostream) from the [VideoStream Interface Tutorial](../../gallery/streaming_videostream.md). +- [Altair Brushing](https://py.cafe/panel-org/altair-brushing) from the [Altair Brushing Tutorial](../../gallery/altair_brushing). +- [hvPlot Explorer](https://py.cafe/panel-org/hvplot-explorer) from the [hvPlot Explorer Tutorial](../../gallery/hvplot_explorer) +- [NYC Deck.GL](https://py.cafe/panel-org/nyc-deckgl) from the [NYC Deck.Gl Tutorial](../../gallery/nyc_deckgl). +- [Penguin Crossfilter](https://py.cafe/panel-org/penguin-crossfilter) from the [Penguin Crossfilter Tutorial](../../gallery/penguin_crossfilter) +- [Portfolio Analyzer](https://py.cafe/panel-org/portfolio-analyzer) from the [Portfolio Analyzer Tutorial](../../gallery/portfolio_analyzer). +- [VideoStream Interface](https://py.cafe/panel-org/videostream) from the [VideoStream Interface Tutorial](../../gallery/streaming_videostream). diff --git a/doc/how_to/editor/markdown.md b/doc/how_to/editor/markdown.md index a3e8ed3fa9..31ad86efda 100644 --- a/doc/how_to/editor/markdown.md +++ b/doc/how_to/editor/markdown.md @@ -12,7 +12,7 @@ To begin simply create a Markdown file with the `.md` file extension, e.g. `app. # My App ``` -Before adding any actual content add a code block with any imports your application needs. The code block should have one of two type declarations, either `python` or `{pyodide}`. The latter is useful if you also want to use [the Sphinx Pyodide integration](../wasm/sphinx.md). In this case we will simply declare a `python` code block that imports Panel and calls the extension with a specific template: +Before adding any actual content add a code block with any imports your application needs. The code block should have one of two type declarations, either `python` or `{pyodide}`. The latter is useful if you also want to use [the Sphinx Pyodide integration](../wasm/sphinx). In this case we will simply declare a `python` code block that imports Panel and calls the extension with a specific template: ````markdown ```python diff --git a/doc/how_to/export/index.md b/doc/how_to/export/index.md index 97c31517b2..b5b2263284 100644 --- a/doc/how_to/export/index.md +++ b/doc/how_to/export/index.md @@ -1,6 +1,6 @@ # Export Apps -While Panel is primarily a library for building applications [backed by server](../server/index.md) or a [Python process in the browser](../wasm/index.md) it is sometimes useful to export static output, with or without embedded state to add interactivity. This section focuses on exporting Panel as static snapshots, embedding state and accessing the underlying Bokeh models. +While Panel is primarily a library for building applications [backed by server](../server/index) or a [Python process in the browser](../wasm/index) it is sometimes useful to export static output, with or without embedded state to add interactivity. This section focuses on exporting Panel as static snapshots, embedding state and accessing the underlying Bokeh models. ::::{grid} 1 2 2 3 :gutter: 1 1 1 2 diff --git a/doc/how_to/interact/interact_abbreviations.md b/doc/how_to/interact/interact_abbreviations.md index b3fa26555d..77f734149d 100644 --- a/doc/how_to/interact/interact_abbreviations.md +++ b/doc/how_to/interact/interact_abbreviations.md @@ -3,7 +3,7 @@ This guide addresses how to use abbreviations to create widgets with Panel `interact`. ```{admonition} Prerequisites -1. The [How to > Generate Widgets for Function Arguments](./interact_basics.md) guide provides an overview of how to generate widgets for function arguments with Panel interact. +1. The [How to > Generate Widgets for Function Arguments](interact_basics) guide provides an overview of how to generate widgets for function arguments with Panel interact. ``` ___ diff --git a/doc/how_to/interact/interact_fix_values.md b/doc/how_to/interact/interact_fix_values.md index 6397068935..cf5709dcc1 100644 --- a/doc/how_to/interact/interact_fix_values.md +++ b/doc/how_to/interact/interact_fix_values.md @@ -3,7 +3,7 @@ This guide addresses how to fix the value for certain arguments with Panel `interact`. ```{admonition} Prerequisites -1. The [How to > Generate Widgets for Function Arguments](./interact_basics.md) guide covers how to generate widgets for function arguments with Panel interact. +1. The [How to > Generate Widgets for Function Arguments](interact_basics) guide covers how to generate widgets for function arguments with Panel interact. ``` --- diff --git a/doc/how_to/interact/interact_layout.md b/doc/how_to/interact/interact_layout.md index 17c3a23762..76932d519b 100644 --- a/doc/how_to/interact/interact_layout.md +++ b/doc/how_to/interact/interact_layout.md @@ -3,7 +3,7 @@ This guide addresses how to customize the layout of the widgets and displays from the output of Panel `interact`. ```{admonition} Prerequisites -1. The [How to > Generate Widgets for Function Arguments](./interact_basics.md) guide covers how to generate widgets for function arguments with Panel interact. +1. The [How to > Generate Widgets for Function Arguments](interact_basics) guide covers how to generate widgets for function arguments with Panel interact. ``` --- diff --git a/doc/how_to/interact/interact_throttle.md b/doc/how_to/interact/interact_throttle.md index 724b6c28a0..3b3c84e7ee 100644 --- a/doc/how_to/interact/interact_throttle.md +++ b/doc/how_to/interact/interact_throttle.md @@ -3,7 +3,7 @@ When interacting with functions which take a long time to run, realtime feedback can be a burden instead of being helpful. This guide addresses how to disable continuous updates with Panel `interact`. ```{admonition} Prerequisites -1. The [How to > Generate Widgets for Function Arguments](./interact_basics.md) guide covers how to generate widgets for function arguments with Panel interact. +1. The [How to > Generate Widgets for Function Arguments](interact_basics) guide covers how to generate widgets for function arguments with Panel interact. ``` --- diff --git a/doc/how_to/interactivity/bind_component.md b/doc/how_to/interactivity/bind_component.md index d8e3cd3f33..7e3127f6cf 100644 --- a/doc/how_to/interactivity/bind_component.md +++ b/doc/how_to/interactivity/bind_component.md @@ -79,5 +79,5 @@ In this way we can update both the current `object` and the `styles` **Parameter ## Related Resources -- Learn [how to use generators with `bind`](bind_generators.md) -- Understand [Param](../../explanation/dependencies/param.md) +- Learn [how to use generators with `bind`](bind_generators) +- Understand [Param](../../explanation/dependencies/param) diff --git a/doc/how_to/interactivity/bind_function.md b/doc/how_to/interactivity/bind_function.md index 1ee8586526..421e0d7836 100644 --- a/doc/how_to/interactivity/bind_function.md +++ b/doc/how_to/interactivity/bind_function.md @@ -43,6 +43,6 @@ Internally the layout will create a so called `ParamFunction` component to wrap ## Related Resources -- Learn [how to use reactive functions to update components](bind_component.md) -- Learn [how to use reactive generators to generate interactive components ](bind_generators.md) -- Understand [Param](../../explanation/dependencies/param.md) +- Learn [how to use reactive functions to update components](bind_component) +- Learn [how to use reactive generators to generate interactive components ](bind_generators) +- Understand [Param](../../explanation/dependencies/param) diff --git a/doc/how_to/interactivity/hvplot_interactive.md b/doc/how_to/interactivity/hvplot_interactive.md index dbe9edd997..e29f15c9cd 100644 --- a/doc/how_to/interactivity/hvplot_interactive.md +++ b/doc/how_to/interactivity/hvplot_interactive.md @@ -50,7 +50,7 @@ Because we've imported `hvplot.pandas`, we can utilize `.hvplot()` to render the df_rx.hvplot(kind="scatter", x="bill_length_mm", y="bill_depth_mm", by="sex") ``` -We can leverage [`panel.ReactiveExpr`](../../reference/panes/ReactiveExpr.md) to assist in rendering `df_rx`. This allows us to include all widgets related to `df_rx`, while also offering the flexibility to customize the appearance of the widgets. For instance, we can specify `pn.Column` as the `widget_layout` parameter and `top` as the `widget_location` parameter, as shown below: +We can leverage [`panel.ReactiveExpr`](../../reference/panes/ReactiveExpr) to assist in rendering `df_rx`. This allows us to include all widgets related to `df_rx`, while also offering the flexibility to customize the appearance of the widgets. For instance, we can specify `pn.Column` as the `widget_layout` parameter and `top` as the `widget_location` parameter, as shown below: ```{pyodide} pn.ReactiveExpr( @@ -81,10 +81,10 @@ pn.Column( ) ``` -Finally, if performance is critical, you might want to consider using [Reactive expressions as references](../../reference/panes/ReactiveExpr.md#reactive-expressions-as-references). For instance, you can try replacing `df_rx` with `df_rx.rx()` in this tutorial. +Finally, if performance is critical, you might want to consider using [Reactive expressions as references](../../reference/panes/ReactiveExpr#reactive-expressions-as-references). For instance, you can try replacing `df_rx` with `df_rx.rx()` in this tutorial. ## Related Resources * [Reactive Functions and Expressions of Param](https://param.holoviz.org/user_guide/Reactive_Expressions.html) -* [Reactive Expressions of Panel](../../tutorials/basic/pn_rx.md) -* [panel.ReactiveExpr documentation](../../reference/panes/ReactiveExpr.md#reactiveexpr) +* [Reactive Expressions of Panel](../../tutorials/basic/pn_rx) +* [panel.ReactiveExpr documentation](../../reference/panes/ReactiveExpr) diff --git a/doc/how_to/links/jslinks.md b/doc/how_to/links/jslinks.md index 9b1837afe3..614fa67991 100644 --- a/doc/how_to/links/jslinks.md +++ b/doc/how_to/links/jslinks.md @@ -80,5 +80,5 @@ pn.Row(url, button) ## Related Resources -- See the [Explanation > APIs](../../explanation/api/index.md) for context on this and other Panel APIs -- The [How to > Link Plot Parameters in Javascript](./link_plots.md) guide addresses how to link Bokeh and HoloViews plot parameters in Javascript. +- See the [Explanation > APIs](../../explanation/api/index) for context on this and other Panel APIs +- The [How to > Link Plot Parameters in Javascript](./link_plots) guide addresses how to link Bokeh and HoloViews plot parameters in Javascript. diff --git a/doc/how_to/links/links.md b/doc/how_to/links/links.md index 2fbac3806e..71716c18f7 100644 --- a/doc/how_to/links/links.md +++ b/doc/how_to/links/links.md @@ -56,4 +56,4 @@ Note that here we explicitly set `t.value` before displaying the panel to trigge --- ## Related Resources -- See the [Explanation > APIs](../../explanation/api/index.md) for context on this and other Panel APIs +- See the [Explanation > APIs](../../explanation/api/index) for context on this and other Panel APIs diff --git a/doc/how_to/migrate/anywidget/index.md b/doc/how_to/migrate/anywidget/index.md index 576749bb42..c4129b0167 100644 --- a/doc/how_to/migrate/anywidget/index.md +++ b/doc/how_to/migrate/anywidget/index.md @@ -18,7 +18,7 @@ The high-level steps needed for converting `AnyWidgets` components to Panel comp #### Step 1: Base Class Conversion -Convert from the `AnyWidget` base class to the Panel [`JSComponent`](../../../reference/custom_components/JSComponent.md) base class. If the `_esm` script is based on [React](https://react.dev/), use the [`ReactComponent`](../../../reference/custom_components/ReactComponent.md). +Convert from the `AnyWidget` base class to the Panel [`JSComponent`](../../../reference/custom_components/JSComponent) base class. If the `_esm` script is based on [React](https://react.dev/), use the [`ReactComponent`](../../../reference/custom_components/ReactComponent). #### Step 2: Attribute Conversion @@ -169,24 +169,24 @@ CounterButton().servable() ### Mario Button -Check out our [Custom Components Tutorial](../../../tutorials/expert/custom_anywidget_components.md) to see a converted version of the [ipymario](https://github.com/manzt/ipymario) widget. +Check out our [Custom Components Tutorial](../../../tutorials/expert/custom_anywidget_components) to see a converted version of the [ipymario](https://github.com/manzt/ipymario) widget. -[![Mario Button](https://assets.holoviz.org/panel/tutorials/ipymario.gif)](../../../tutorials/expert/custom_anywidget_components.md) +[![Mario Button](https://assets.holoviz.org/panel/tutorials/ipymario.gif)](../../../tutorials/expert/custom_anywidget_components) ## References ### Tutorials -- [Build Custom AnyWidget Components](../../../tutorials/expert/custom_anywidget_components.md) +- [Build Custom AnyWidget Components](../../../tutorials/expert/custom_anywidget_components) ### How-To Guides -- [Convert `AnyWidget` widgets](../../../how_to/migrate/anywidget/index.md) +- [Convert `AnyWidget` widgets](../../../how_to/migrate/anywidget/index) ### Reference Guides -- [`JSComponent`](../../../reference/custom_components/JSComponent.md) -- [`ReactComponent`](../../../reference/custom_components/ReactComponent.md) -- [`AnyWidgetComponent`](../../../reference/custom_components/AnyWidgetComponent.md) +- [`JSComponent`](../../../reference/custom_components/JSComponent) +- [`ReactComponent`](../../../reference/custom_components/ReactComponent) +- [`AnyWidgetComponent`](../../../reference/custom_components/AnyWidgetComponent) With these skills, you are now equipped to pioneer and push the boundaries of what can be achieved with Panel. Happy coding! diff --git a/doc/how_to/notebook/jupyterlabpreview.md b/doc/how_to/notebook/jupyterlabpreview.md index fdd1715a31..20a2d7c84c 100644 --- a/doc/how_to/notebook/jupyterlabpreview.md +++ b/doc/how_to/notebook/jupyterlabpreview.md @@ -6,7 +6,7 @@ This guide addresses how to use the *Preview* functionality in JupyterLab to rap With this functionality you can preview the app you are building in a JupyterLab tab right next to your code. This is a traditional setup for web developers, who like to quickly visualize the effects of their code changes. -The Preview in JupyterLab has two different modes depending on whether you marked any component as `.servable()` or not. In this guide we will focus on the explicit mode where you use code to declare which components to publish and how they should be laid out. If you are simply publishing a notebook with or without importing Panel, you will see the [layout builder](./layout_builder.md). +The Preview in JupyterLab has two different modes depending on whether you marked any component as `.servable()` or not. In this guide we will focus on the explicit mode where you use code to declare which components to publish and how they should be laid out. If you are simply publishing a notebook with or without importing Panel, you will see the [layout builder](layout_builder). To have your app appear in the *Preview*, you need to mark the objects you want to display with `.servable()`. This is identical to how you would mark objects that you want to serve with `panel serve ...`. @@ -20,7 +20,7 @@ The *Preview* offers two update modes that are configurable in the preview tab: - automatic: toggle the *Render on save* checkbox ({far}`square-check`) for the app to be automatically re-rendered when you save your notebook. :::{tip} -Panel [built-in templates](../../reference/index.rst#templates) don't render necessarily well in a notebook as their styling can badly interact with the notebook built-in styling. Using the *Preview* is a good way to circumvent this issue, while still being able to work within JupyterLab . +Panel [built-in templates](../../reference/index#templates) don't render necessarily well in a notebook as their styling can badly interact with the notebook built-in styling. Using the *Preview* is a good way to circumvent this issue, while still being able to work within JupyterLab . ::: ## Related Resources diff --git a/doc/how_to/notebook/layout_builder.md b/doc/how_to/notebook/layout_builder.md index f3d98ffd1c..5cbfa75d0a 100644 --- a/doc/how_to/notebook/layout_builder.md +++ b/doc/how_to/notebook/layout_builder.md @@ -160,4 +160,4 @@ This command will automatically restore the persisted layout data from the noteb ### Component Gallery -- [EditableTemplate](../../reference/templates/EditableTemplate.md) +- [EditableTemplate](../../reference/templates/EditableTemplate) diff --git a/doc/how_to/notebook/other_nb.md b/doc/how_to/notebook/other_nb.md index f5b1b50d3d..c12e693e6c 100644 --- a/doc/how_to/notebook/other_nb.md +++ b/doc/how_to/notebook/other_nb.md @@ -27,20 +27,20 @@ Please note that in Colab rendering for each notebook cell is isolated, which me ::: :::{warning} -The [IpyWidgets](../../reference/panes/IPyWidget.md) pane does not work in Google Colab. Thus you cannot use IpyWidgets with Panel in Colab. +The [IpyWidgets](../../reference/panes/IPyWidget) pane does not work in Google Colab. Thus you cannot use IpyWidgets with Panel in Colab. ::: ## PyCharm Notebook PyCharm Professional offers support for [notebooks](https://www.jetbrains.com/help/pycharm/ipython-notebook-support.html) and [ipywidgets](https://www.jetbrains.com/help/pycharm/interactive-js-widgets.html). Thanks to the [`jupyter_bokeh`](https://github.com/bokeh/jupyter_bokeh) integration, Panel objects can be utilized as ipywidgets, allowing for interactive use of Panel components within PyCharm Professional. To ensure full functionality, install `jupyter_bokeh` using `pip install jupyter jupyter_bokeh` or `conda install jupyter jupyter_bokeh`, followed by activating the extension with `pn.extension()`. -For additional guidance, refer to the [How-To Configure PyCharm Guide](../editor/pycharm_configure.md). +For additional guidance, refer to the [How-To Configure PyCharm Guide](../editor/pycharm_configure). ## VSCode notebook Visual Studio Code (VS Code) supports notebooks and ipywidgets, and Panel objects can be used as ipywidgets thanks to [`jupyter_bokeh`](https://github.com/bokeh/jupyter_bokeh), which means that you can use Panel components interactively in VS Code. Ensure you install `jupyter_bokeh` with `pip install jupyter_bokeh` or `conda install -c bokeh jupyter_bokeh` and then enable the extension with `pn.extension()`. -See also the [How-To Configure VS Code Guide](../editor/vscode_configure.md). +See also the [How-To Configure VS Code Guide](../editor/vscode_configure). ## nteract and other ipywidgets notebooks diff --git a/doc/how_to/param/custom.md b/doc/how_to/param/custom.md index ebad91206b..327085dcab 100644 --- a/doc/how_to/param/custom.md +++ b/doc/how_to/param/custom.md @@ -3,7 +3,7 @@ This guide addresses how to extend Param based UIs with custom widgets. ```{admonition} Prerequisites -1. The [How to > Generate Widgets from Parameters](./uis.md) guide demonstrates the default case of automatically generating widgets. +1. The [How to > Generate Widgets from Parameters](./uis) guide demonstrates the default case of automatically generating widgets. ``` --- @@ -82,4 +82,4 @@ pn.Param(CustomExample.param, sort=sort_func, name="Sort by Label Length Example ## Related Resources -- See the [Explanation > APIs](../../explanation/api/index.md) for context on this and other Panel APIs +- See the [Explanation > APIs](../../explanation/api/index) for context on this and other Panel APIs diff --git a/doc/how_to/param/dependencies.md b/doc/how_to/param/dependencies.md index ae51753b16..e5e2da966d 100644 --- a/doc/how_to/param/dependencies.md +++ b/doc/how_to/param/dependencies.md @@ -3,7 +3,7 @@ This guide addresses how to leverage `@param.depends` to express dependencies and trigger events based on UI interactions. ```{admonition} Prerequisites -1. The [How to > Generate Widgets from Parameters](./uis.md) guide demonstrates the automatic generation of widgets without dependencies. +1. The [How to > Generate Widgets from Parameters](uis) guide demonstrates the automatic generation of widgets without dependencies. ``` --- @@ -87,4 +87,4 @@ Whenever the continent changes Param will now eagerly execute the ``_update_coun ## Related Resources -- See the [Explanation > APIs](../../explanation/api/index.md) for context on this and other Panel APIs +- See the [Explanation > APIs](../../explanation/api/index) for context on this and other Panel APIs diff --git a/doc/how_to/param/subobjects.md b/doc/how_to/param/subobjects.md index 6814c04829..47b6f06afb 100644 --- a/doc/how_to/param/subobjects.md +++ b/doc/how_to/param/subobjects.md @@ -3,8 +3,8 @@ This guide addresses how to structure `Parameterized` classes with subobjects to create nested UIs automatically. ```{admonition} Prerequisites -1. The [How to > Generate Widgets from Parameters](./uis.md) guide demonstrates the generation of widgets. -2. The [How to > ](./dependencies.md) guide demonstrates how to use `@param.depends` to express dependencies between parameters and functions. +1. The [How to > Generate Widgets from Parameters](./uis) guide demonstrates the generation of widgets. +2. The [How to > ](./dependencies) guide demonstrates how to use `@param.depends` to express dependencies between parameters and functions. ``` @@ -118,4 +118,4 @@ pn.Row( ## Related Resources -- See the [Explanation > APIs](../../explanation/api/index.md) for context on this and other Panel APIs +- See the [Explanation > APIs](../../explanation/api/index) for context on this and other Panel APIs diff --git a/doc/how_to/param/uis.md b/doc/how_to/param/uis.md index 613207ce71..676094e8ad 100644 --- a/doc/how_to/param/uis.md +++ b/doc/how_to/param/uis.md @@ -104,4 +104,4 @@ Example.timestamps ## Related Resources -- See the [Explanation > APIs](../../explanation/api/index.md) for context on this and other Panel APIs +- See the [Explanation > APIs](../../explanation/api/index) for context on this and other Panel APIs diff --git a/doc/how_to/pipeline/complex_pipeline.md b/doc/how_to/pipeline/complex_pipeline.md index c0ffc4cb81..1154683d11 100644 --- a/doc/how_to/pipeline/complex_pipeline.md +++ b/doc/how_to/pipeline/complex_pipeline.md @@ -3,8 +3,8 @@ This guide addresses how to build a non-linear Panel Pipeline with branching and converging steps, i.e., an acyclic graph. ```{admonition} Prerequisites -1. The [How-to > Param with Panel](../param/index.md) guides describe how to set up classes that declare parameters and link them to some computation or visualization. -2. The [How-to > Create a Pipeline](./simple_pipeline.md) guide walks through the essential steps of pipeline construction. +1. The [How-to > Param with Panel](../param/index) guides describe how to set up classes that declare parameters and link them to some computation or visualization. +2. The [How-to > Create a Pipeline](./simple_pipeline) guide walks through the essential steps of pipeline construction. ``` --- @@ -151,5 +151,5 @@ dag ## Related Resources -- The [How to > Param with Panel](../param/index.md) guide describe how to set up classes that declare parameters and link them to some computation or visualization. -- The [How to > Create a Pipeline](./simple_pipeline.md) guide walks through the essential components of a pipeline. +- The [How to > Param with Panel](../param/index) guide describe how to set up classes that declare parameters and link them to some computation or visualization. +- The [How to > Create a Pipeline](./simple_pipeline) guide walks through the essential components of a pipeline. diff --git a/doc/how_to/pipeline/control_flow.md b/doc/how_to/pipeline/control_flow.md index 9a464ed510..cc337fad7e 100644 --- a/doc/how_to/pipeline/control_flow.md +++ b/doc/how_to/pipeline/control_flow.md @@ -3,7 +3,7 @@ This guide addresses how to programmatically control the `Pipeline` UI flow. ```{admonition} Prerequisites -1. The [Create a Non-Linear Pipeline](./complex_pipeline.md) How-to Guide walks through the creation of branching pipeline that commonly used in the context of controlling pipeline flow. +1. The [Create a Non-Linear Pipeline](complex_pipeline) How-to Guide walks through the creation of branching pipeline that commonly used in the context of controlling pipeline flow. ``` --- @@ -177,5 +177,5 @@ pn.Column( ``` ## Related Resources -- The [How to > Customize Pipeline Layout](./pipeline_layout.md) guide provides some context for the custom layout used here. -- The [How to > Create a Non-Linear Pipeline](./complex_pipeline.md) guide walks through the creation of branching pipeline that commonly used in the context of controlling pipeline flow. +- The [How to > Customize Pipeline Layout](pipeline_layout) guide provides some context for the custom layout used here. +- The [How to > Create a Non-Linear Pipeline](complex_pipeline) guide walks through the creation of branching pipeline that commonly used in the context of controlling pipeline flow. diff --git a/doc/how_to/pipeline/simple_pipeline.md b/doc/how_to/pipeline/simple_pipeline.md index 8e3dda748f..616b94e685 100644 --- a/doc/how_to/pipeline/simple_pipeline.md +++ b/doc/how_to/pipeline/simple_pipeline.md @@ -164,4 +164,4 @@ pipeline ## Related Resources -- The [How to > Param with Panel](../param/index.md) guides demonstrate how to set up classes that declare parameters and link them to some computation or visualization. +- The [How to > Param with Panel](../param/index) guides demonstrate how to set up classes that declare parameters and link them to some computation or visualization. diff --git a/doc/how_to/state/request.md b/doc/how_to/state/request.md index 573a69e4eb..aadf2e9665 100644 --- a/doc/how_to/state/request.md +++ b/doc/how_to/state/request.md @@ -3,7 +3,7 @@ This guide addresses how to access information about the HTTP request associated with a session. ```{admonition} Prerequisites -1. See the [How to > Access and Manipulate the URL](url.md) guide to learn how to work with the URL. +1. See the [How to > Access and Manipulate the URL](url) guide to learn how to work with the URL. ``` --- diff --git a/doc/how_to/streamlit_migration/activity.md b/doc/how_to/streamlit_migration/activity.md index 6cfd7dd0f6..9a772c1440 100644 --- a/doc/how_to/streamlit_migration/activity.md +++ b/doc/how_to/streamlit_migration/activity.md @@ -2,7 +2,7 @@ Panel supports many ways of indicating activity -- Indicators. See the [Indicators Section](../../reference/indicators/index.rst#indicators) of the [Component Gallery](../../reference/index.rst). +- Indicators. See the [Indicators Section](../../reference/indicators/index#indicators) of the [Component Gallery](../../reference/index). - `disabled`/ `loading` parameters on Panel components - `loading_indicator` parameter for `pn.panel` or `pn.config`. If `True` a loading indicator will be shown on your *bound functions* when they are re-run. @@ -68,4 +68,4 @@ pn.Row( ![Show Activity](https://user-images.githubusercontent.com/42288570/246325570-11484dd6-4523-401f-b709-6c0cc7996410.gif) -To learn more about migrating activity indicators check out the [Migrate Streamlit Interactivity Guide](interactivity.md). +To learn more about migrating activity indicators check out the [Migrate Streamlit Interactivity Guide](interactivity). diff --git a/doc/how_to/streamlit_migration/caching.md b/doc/how_to/streamlit_migration/caching.md index 29c2a6e6f4..5e073329ba 100644 --- a/doc/how_to/streamlit_migration/caching.md +++ b/doc/how_to/streamlit_migration/caching.md @@ -16,7 +16,7 @@ In Panel Thus with Panel you *may use* caching to make the user experience nice and fast. -In Panel you use `pn.cache` to speed up your apps. Check out the [Cache How-To Guides](../caching/index.md) for more details. +In Panel you use `pn.cache` to speed up your apps. Check out the [Cache How-To Guides](../caching/index) for more details. --- diff --git a/doc/how_to/streamlit_migration/chat.md b/doc/how_to/streamlit_migration/chat.md index 19c0aa4bf9..ca3d38de69 100644 --- a/doc/how_to/streamlit_migration/chat.md +++ b/doc/how_to/streamlit_migration/chat.md @@ -4,15 +4,15 @@ Both Streamlit and Panel provides special components to help you build conversat | Streamlit | Panel | Description | | -------------------- | ------------------- | -------------------------------------- | -| [`chat_message`](https://docs.streamlit.io/library/api-reference/chat/st.chat_message) | [`ChatMessage`](../../reference/chat/ChatMessage.md) | Display a chat message | +| [`chat_message`](https://docs.streamlit.io/library/api-reference/chat/st.chat_message) | [`ChatMessage`](../../reference/chat/ChatMessage) | Display a chat message | | [`chat_input`](https://docs.streamlit.io/library/api-reference/chat/st.chat_input) | [`ChatInput` example](https://holoviz-topics.github.io/panel-chat-examples/components/#chat_input) | Input a chat message | | [`status`](https://docs.streamlit.io/library/api-reference/status/st.status) | [`Status` example](https://holoviz-topics.github.io/panel-chat-examples/components/#status) | Display the output of long-running tasks in a container | -| | [`ChatFeed`](../../reference/chat/ChatFeed.md) | Display multiple chat messages | -| | [`ChatInterface`](../../reference/chat/ChatInterface.md) | High-level, easy to use chat interface | -| [`StreamlitCallbackHandler`](https://python.langchain.com/docs/integrations/callbacks/streamlit) | [`PanelCallbackHandler`](../../reference/chat/PanelCallbackHandler.md) | Display the thoughts and actions of a [LangChain](https://python.langchain.com/docs/get_started/introduction) agent | +| | [`ChatFeed`](../../reference/chat/ChatFeed) | Display multiple chat messages | +| | [`ChatInterface`](../../reference/chat/ChatInterface) | High-level, easy to use chat interface | +| [`StreamlitCallbackHandler`](https://python.langchain.com/docs/integrations/callbacks/streamlit) | [`PanelCallbackHandler`](../../reference/chat/PanelCallbackHandler) | Display the thoughts and actions of a [LangChain](https://python.langchain.com/docs/get_started/introduction) agent | | [`StreamlitChatMessageHistory`](https://python.langchain.com/docs/integrations/memory/streamlit_chat_message_history) | | Persist the memory of a [LangChain](https://python.langchain.com/docs/get_started/introduction) agent | -The starting point for most Panel users is the *high-level* [`ChatInterface`](../../reference/chat/ChatInterface.md) or [`PanelCallbackHandler`](../../reference/chat/PanelCallbackHandler.md), not the *low-level* [`ChatMessage`](../../reference/chat/ChatMessage.md) and [`ChatFeed`](../../reference/chat/ChatFeed.md) components. +The starting point for most Panel users is the *high-level* [`ChatInterface`](../../reference/chat/ChatInterface) or [`PanelCallbackHandler`](../../reference/chat/PanelCallbackHandler), not the *low-level* [`ChatMessage`](../../reference/chat/ChatMessage) and [`ChatFeed`](../../reference/chat/ChatFeed) components. ## Chat Message diff --git a/doc/how_to/streamlit_migration/get_started.md b/doc/how_to/streamlit_migration/get_started.md index 89762a0ce3..9d3b00a7b7 100644 --- a/doc/how_to/streamlit_migration/get_started.md +++ b/doc/how_to/streamlit_migration/get_started.md @@ -17,7 +17,7 @@ You will have to: - add `.servable` to the Panel objects you want to include in your apps *template* when served as a web app. -For production you will also have to migrate some of your app configuration to `panel serve` [command line options](../server/commandline.md) or environment variables. +For production you will also have to migrate some of your app configuration to `panel serve` [command line options](../server/commandline) or environment variables. ## Examples diff --git a/doc/how_to/streamlit_migration/interactivity.md b/doc/how_to/streamlit_migration/interactivity.md index 4ad03ae26f..5178b7f1a2 100644 --- a/doc/how_to/streamlit_migration/interactivity.md +++ b/doc/how_to/streamlit_migration/interactivity.md @@ -41,7 +41,7 @@ Consider the following strategies for effective migration: - Transition your core business logic into functions. This includes data loading, transformations, calculations, plot creations, complex computations like galaxy mass estimations, model training, and inference tasks. - Enhance interactivity by using `pn.bind` to associate your functions with widgets. - For updates that occur multiple times during function execution, consider using generator functions (`yield`). -- Use visual feedback to indicate activity, as detailed in the [Show Activity Section](activity.md). +- Use visual feedback to indicate activity, as detailed in the [Show Activity Section](activity). ## Examples diff --git a/doc/how_to/streamlit_migration/layouts.md b/doc/how_to/streamlit_migration/layouts.md index 2212e8607f..e3dfee23e0 100644 --- a/doc/how_to/streamlit_migration/layouts.md +++ b/doc/how_to/streamlit_migration/layouts.md @@ -13,7 +13,7 @@ To migrate your layouts to Panel - replace your Streamlit `st.some_layout` *snake cased* function with the corresponding Panel `pn.SomeLayout` *CamelCased* class. -You can identify the relevant layout to migrate to in the [Layouts Section](../../reference/index.rst#layouts) of the [Component Gallery](../../reference/index.rst). +You can identify the relevant layout to migrate to in the [Layouts Section](../../reference/index.md#layouts) of the [Component Gallery](../../reference/index). ## Example @@ -66,4 +66,4 @@ pn.Column(row1, row2).servable() ![Panel Layout Example](../../_static/images/panel_layout_example.png) -Panels `Column` and `Row` are *list like* objects. So you can use familiar methods like `.append`, `.pop` and `[]` indexing when you work with them. For the details check out the [`Column` Guide](../../reference/layouts/Column.md) and the [`Row` Guide](../../reference/layouts/Row.md) +Panels `Column` and `Row` are *list like* objects. So you can use familiar methods like `.append`, `.pop` and `[]` indexing when you work with them. For the details check out the [`Column` Guide](../../reference/layouts/Column) and the [`Row` Guide](../../reference/layouts/Row) diff --git a/doc/how_to/streamlit_migration/panes.md b/doc/how_to/streamlit_migration/panes.md index 5ac58eae06..84190e6d1b 100644 --- a/doc/how_to/streamlit_migration/panes.md +++ b/doc/how_to/streamlit_migration/panes.md @@ -5,7 +5,7 @@ In Panel the objects that can display your Python objects are called *panes*. Wi - Get notifications about interactions like click events on your plots and tables and react to them. - Use unique data visualization ecosystems like HoloViz, ipywidgets and VTK. -Check out the [Panes Section](../../reference/index.rst#panes) of the [Component Gallery](../../reference/index.rst) for the full list of *panes*. +Check out the [Panes Section](../../reference/index.md#panes) of the [Component Gallery](../../reference/index) for the full list of *panes*. --- @@ -17,7 +17,7 @@ To display content in Panel: `pn.pane.SomeObject` *CamelCased* classes. - Replace your Streamlit text elements with `pn.pane.Markdown`. -Identify the relevant Panel *pane*s in the [Panes Section](../../reference/index.rst#panes) of the [Component Gallery](../../reference/index.rst). +Identify the relevant Panel *pane*s in the [Panes Section](../../reference/index.md#panes) of the [Component Gallery](../../reference/index). ## Examples @@ -46,7 +46,7 @@ You will find Panels *panes* in the `pn.pane` module. We use Matplotlibs `Figure` interface instead of the `pyplot` interface to avoid memory leaks if you forget to close the figure. This is all described in the -[Matplotlib Guide](../../reference/panes/Matplotlib.md). +[Matplotlib Guide](../../reference/panes/Matplotlib). ```python import panel as pn @@ -68,11 +68,11 @@ pn.pane.Matplotlib(fig, format='svg', sizing_mode='scale_both').servable() ### Markdown Pane -You can replace `st.markdown` with [`pn.pane.Markdown`](../../reference/panes/Markdown.md). +You can replace `st.markdown` with [`pn.pane.Markdown`](../../reference/panes/Markdown). You can also use the `Markdown` pane to replace the text elements `st.title`, `st.header`, `st.sub_header`, `st.code` and `st.text`. -You may use the `Markdown` pane to replace `st.divider` and `st.latex`, but you can also use the *specialized* Panel components [`pn.layout.Divider`](../../reference/layouts/Divider.md) and [`pn.pane.LaTeX`](../../reference/panes/LaTeX.md). +You may use the `Markdown` pane to replace `st.divider` and `st.latex`, but you can also use the *specialized* Panel components [`pn.layout.Divider`](../../reference/layouts/Divider) and [`pn.pane.LaTeX`](../../reference/panes/LaTeX). Here is how to do it diff --git a/doc/how_to/streamlit_migration/templates.md b/doc/how_to/streamlit_migration/templates.md index 501fc0fca0..b48daf1adb 100644 --- a/doc/how_to/streamlit_migration/templates.md +++ b/doc/how_to/streamlit_migration/templates.md @@ -11,14 +11,14 @@ With Panel you have the flexibility to use the *default, blank template*, one of When migrating you will have to decide which template to use - Blank (default) -- A built-in template like *vanilla*, *bootstrap*, *material* or *fast*. See the [Templates Section](../../reference/index.rst#templates) of the [Components Guide](../../reference/index.rst). -- A [custom template](../../how_to/templates/template_custom.md) declared using Jinja2 syntax. +- A built-in template like *vanilla*, *bootstrap*, *material* or *fast*. See the [Templates Section](../../reference/index.md#templates) of the [Components Guide](../../reference/index). +- A [custom template](../../how_to/templates/template_custom) declared using Jinja2 syntax. ## Example ### FastListTemplate Example -Here is an example with the [`FastListTemplate`](../../reference/templates/FastListTemplate.md). +Here is an example with the [`FastListTemplate`](../../reference/templates/FastListTemplate). ```python from asyncio import sleep diff --git a/doc/how_to/streamlit_migration/widgets.md b/doc/how_to/streamlit_migration/widgets.md index 71f4b0d741..db96a970d5 100644 --- a/doc/how_to/streamlit_migration/widgets.md +++ b/doc/how_to/streamlit_migration/widgets.md @@ -13,7 +13,7 @@ To migrate your app's input widgets to Panel: - Replace your Streamlit `st.some_widget` function with the corresponding Panel `pn.widgets.SomeWidget` class. -You can identify the corresponding widget via the [Widgets Section](../../reference/index.rst#widgets) of the [Component Gallery](../../reference/index.rst). +You can identify the corresponding widget via the [Widgets Section](../../reference/index.md#widgets) of the [Component Gallery](../../reference/index.md). ## Example @@ -51,4 +51,4 @@ pn.Column(bins, pn.pane.Str(bins)).servable() Please note that in Panel `bins` is an instance of `IntSlider` and not an integer value. To access the value of `bins` in Panel, you would need to call `bins.value`. -Check out the [`IntSlider` Guide](../../reference/widgets/IntSlider.md) if you want to learn more about it. +Check out the [`IntSlider` Guide](../../reference/widgets/IntSlider) if you want to learn more about it. diff --git a/doc/how_to/styling/apply_css.md b/doc/how_to/styling/apply_css.md index c91544c873..570e76f272 100644 --- a/doc/how_to/styling/apply_css.md +++ b/doc/how_to/styling/apply_css.md @@ -109,7 +109,7 @@ pn.widgets.FloatSlider( Inlining stylesheets provides a quick way to override the style of a component but it also means we are sending the stylesheet to the frontend as a string. This can add up when we want to apply this stylesheet to multiple components. Therefore it is recommended that once you move to production the styles are served as an external stylesheet you reference. -You can either provide a full URL to the stylesheet and host it yourself or you can [serve static assets alongside your application](../server/static_files.md). Here we load the stylesheet from an external URL: +You can either provide a full URL to the stylesheet and host it yourself or you can [serve static assets alongside your application](../server/static_files). Here we load the stylesheet from an external URL: ```{pyodide} pn.widgets.FloatSlider( diff --git a/doc/how_to/styling/design.md b/doc/how_to/styling/design.md index 240f1fbc22..f9bd47aa6e 100644 --- a/doc/how_to/styling/design.md +++ b/doc/how_to/styling/design.md @@ -50,5 +50,5 @@ pn.Tabs( ## Related Resources -- Discover [how to customize a design](design_variables.md) next. -- Discover [how to toggle between themes](themes.md) next. +- Discover [how to customize a design](design_variables) next. +- Discover [how to toggle between themes](themes) next. diff --git a/doc/how_to/styling/design_variables.md b/doc/how_to/styling/design_variables.md index 8cfe4380ad..7d998f1991 100644 --- a/doc/how_to/styling/design_variables.md +++ b/doc/how_to/styling/design_variables.md @@ -7,8 +7,8 @@ The design feature was added in 1.0.0 and is actively being developed and improv ::: ```{admonition} Prerequisites -1. The [How-to > Apply a Design](./design.md) guides describe how to select a design system to apply to the components to achieve a consistent design language. -2. The [How-to > Apply CSS](./apply_css.md) guide describes how to apply CSS definitions in Panel. +1. The [How-to > Apply a Design](./design) guides describe how to select a design system to apply to the components to achieve a consistent design language. +2. The [How-to > Apply CSS](./apply_css) guide describes how to apply CSS definitions in Panel. ``` --- diff --git a/doc/how_to/styling/matplotlib.md b/doc/how_to/styling/matplotlib.md index 5a760c89a5..9dc14d0d47 100644 --- a/doc/how_to/styling/matplotlib.md +++ b/doc/how_to/styling/matplotlib.md @@ -1,6 +1,6 @@ # Style Matplotlib Plots -This guide addresses how to style Matplotlib plots displayed using the [Matplotlib pane](../..//reference/panes/Matplotlib.md). +This guide addresses how to style Matplotlib plots displayed using the [Matplotlib pane](../../reference/panes/Matplotlib). There are nearly 30 builtin styles to Matplotlib that can be activated with the `plt.style.use` function. The style names are listed in the `plt.style.available` array. diff --git a/doc/how_to/styling/plotly.md b/doc/how_to/styling/plotly.md index 69a1721284..e24a07bf94 100644 --- a/doc/how_to/styling/plotly.md +++ b/doc/how_to/styling/plotly.md @@ -1,6 +1,6 @@ # Style Plotly Plots -This guide addresses how to style Plotly plots displayed using the [Plotly pane](../../reference/panes/Plotly.md). +This guide addresses how to style Plotly plots displayed using the [Plotly pane](../../reference/panes/Plotly). Plotly provides a list of built in templates in `plotly.io.templates`. See the [Plotly Templates Guide](https://plotly.com/python/templates/). diff --git a/doc/how_to/styling/themes.md b/doc/how_to/styling/themes.md index 2cfa5127f3..ee6e7424f9 100644 --- a/doc/how_to/styling/themes.md +++ b/doc/how_to/styling/themes.md @@ -18,7 +18,7 @@ All `config` options can also be set via the extension, e.g. to set the theme us Note that if you do not explicitly override the theme it will default to a light theme. The theme can also be overridden with by setting `theme` as a URL query parameter for your application, i.e. if your app is hosted at `https://mydomain.com/myapp` adding `?theme=dark` will switch the theme automatically. -The theme will apply to all components and combines with the [design](design.md) to provide a consistent visual language. +The theme will apply to all components and combines with the [design](design) to provide a consistent visual language. :::{note} In JupyterLab and when using the pydata-sphinx-theme Panel components will automatically adapt to the global CSS variables, regardless of what theme you set. diff --git a/doc/how_to/styling/vega.md b/doc/how_to/styling/vega.md index f34f74eaf5..72a57a2b17 100644 --- a/doc/how_to/styling/vega.md +++ b/doc/how_to/styling/vega.md @@ -1,6 +1,6 @@ # Style Vega Plots -This guide addresses how to style Vega plots displayed using the [Vega pane](../../reference/panes/Vega.md). +This guide addresses how to style Vega plots displayed using the [Vega pane](../../reference/panes/Vega). The gif below displays an example of what can be achieved with a little styling of the Vega plot and the `FastListTemplate`. diff --git a/doc/how_to/templates/template_arrange.md b/doc/how_to/templates/template_arrange.md index 79f339f611..74b2ffd0fc 100644 --- a/doc/how_to/templates/template_arrange.md +++ b/doc/how_to/templates/template_arrange.md @@ -3,14 +3,14 @@ This guide addresses how to arrange components in a template layout. ```{admonition} Prerequisites -1. The [How to > Set a Template](./template_set.md) guide demonstrates how to set a template for a deployable app. +1. The [How to > Set a Template](./template_set) guide demonstrates how to set a template for a deployable app. ``` --- The default templates that are provided with Panel define four content areas on the page, which can be populated as desired: `header`, `sidebar`, `main`, and `modal` (a dialog box/popup window). -Let's create a simple app and place components in the `header`, `sidebar`, and `main` areas (see the dedicated guide on the [`modal`](./template_modal.md)). We'll first save this script below into a file called `app.py`: +Let's create a simple app and place components in the `header`, `sidebar`, and `main` areas (see the dedicated guide on the [`modal`](./template_modal)). We'll first save this script below into a file called `app.py`: :::{card} app.py ``` {code-block} python @@ -55,6 +55,6 @@ panel serve app.py --show --autoreload ## Related Resources -- See [How-to > Apply Templates > Toggle Modal](./template_modal.md) for a dedicated guide to toggling the modal. -- See [How-to > Apply Templates > Set a Template](./template_set.md) for alternate approaches to set a template. -- Read [Explanation > Templates](../../explanation/styling/templates_overview.md) for explanation. +- See [How-to > Apply Templates > Toggle Modal](./template_modal) for a dedicated guide to toggling the modal. +- See [How-to > Apply Templates > Set a Template](./template_set) for alternate approaches to set a template. +- Read [Explanation > Templates](../../explanation/styling/templates_overview) for explanation. diff --git a/doc/how_to/templates/template_custom.md b/doc/how_to/templates/template_custom.md index 76d60b5b7c..ae9458956f 100644 --- a/doc/how_to/templates/template_custom.md +++ b/doc/how_to/templates/template_custom.md @@ -3,8 +3,8 @@ This guide addresses how to build a custom template. A custom template gives you full control of the look and feel of your Panel app. ```{admonition} Prerequisites -1. The [How to > Set a Template](./template_set.md) guide demonstrates how to set a template for a deployable app. -2. The [How to > Customize Template Theme](./template_theme.md) guide addresses how to customize the theme of a template, which may be sufficient in many cases. +1. The [How to > Set a Template](./template_set) guide demonstrates how to set a template for a deployable app. +2. The [How to > Customize Template Theme](./template_theme) guide addresses how to customize the theme of a template, which may be sufficient in many cases. ``` ## Building a Template in a Single File @@ -229,6 +229,6 @@ tmpl.servable() ## Related Resources -- See [How-to > Apply Templates > Customize Template Theme](./template_theme.md) to just use a custom theme. -- See [How-to > Apply Templates > Set a Template](./template_set.md) for alternate approaches to set a template. -- Read [Explanation > Templates](../../explanation/styling/templates_overview.md) for explanation. +- See [How-to > Apply Templates > Customize Template Theme](./template_theme) to just use a custom theme. +- See [How-to > Apply Templates > Set a Template](./template_set) for alternate approaches to set a template. +- Read [Explanation > Templates](../../explanation/styling/templates_overview) for explanation. diff --git a/doc/how_to/templates/template_modal.md b/doc/how_to/templates/template_modal.md index 144f63be10..9b2e481cbe 100644 --- a/doc/how_to/templates/template_modal.md +++ b/doc/how_to/templates/template_modal.md @@ -3,7 +3,7 @@ This guide addresses how to toggle the modal area of a template. ```{admonition} Prerequisites -1. The [How to > Set a Template](./template_set.md) guide demonstrates how to set a template for a deployable app. +1. The [How to > Set a Template](./template_set) guide demonstrates how to set a template for a deployable app. ``` --- @@ -68,5 +68,5 @@ panel serve app.py --show --autoreload ## Related Resources -- See [How-to > Apply Templates > Set a Template](./template_set.md) for alternate approaches to set a template. -- Read [Explanation > Templates](../../explanation/styling/templates_overview.md) for explanation. +- See [How-to > Apply Templates > Set a Template](./template_set) for alternate approaches to set a template. +- Read [Explanation > Templates](../../explanation/styling/templates_overview) for explanation. diff --git a/doc/how_to/templates/template_set.md b/doc/how_to/templates/template_set.md index 3a2e24820c..21b4219d75 100644 --- a/doc/how_to/templates/template_set.md +++ b/doc/how_to/templates/template_set.md @@ -110,4 +110,4 @@ panel serve app_global.py --show ## Related Resources -- Read [Explanation > Templates](../../explanation/styling/templates_overview.md) for explanation. +- Read [Explanation > Templates](../../explanation/styling/templates_overview) for explanation. diff --git a/doc/how_to/templates/template_theme.md b/doc/how_to/templates/template_theme.md index f480532e35..0319853867 100644 --- a/doc/how_to/templates/template_theme.md +++ b/doc/how_to/templates/template_theme.md @@ -3,7 +3,7 @@ This guide addresses how to customize the theme of a template. ```{admonition} Prerequisites -1. The [How to > Set a Template](./template_set.md) guide demonstrates how to set a template for a deployable app. +1. The [How to > Set a Template](./template_set) guide demonstrates how to set a template for a deployable app. ``` --- @@ -74,6 +74,6 @@ panel serve app.py --show --autoreload ## Related Resources -- See [How-to > Apply Templates > Build a Custom Template](./template_custom.md) to create a completely custom template. -- See [How-to > Apply Templates > Set a Template](./template_set.md) for alternate approaches to set a template. -- Read [Background > Templates](../../explanation/styling/templates_overview.md) for explanation. +- See [How-to > Apply Templates > Build a Custom Template](./template_custom) to create a completely custom template. +- See [How-to > Apply Templates > Set a Template](./template_set) for alternate approaches to set a template. +- Read [Background > Templates](../../explanation/styling/templates_overview) for explanation. diff --git a/examples/reference/panes/Placeholder.ipynb b/examples/reference/panes/Placeholder.ipynb index ffd48271f7..bc805d57f1 100644 --- a/examples/reference/panes/Placeholder.ipynb +++ b/examples/reference/panes/Placeholder.ipynb @@ -6,8 +6,8 @@ "metadata": {}, "outputs": [], "source": [ - "import asyncio\n", "import panel as pn\n", + "import time\n", "\n", "pn.extension()" ] @@ -89,7 +89,7 @@ "metadata": {}, "outputs": [], "source": [ - "placeholder = pn.pane.Placeholder(\"โณ Idle\")\n", + "placeholder = pn.pane.Placeholder(\"โณ Idle\", stylesheets=[\":host { font-size: 24pt }\"])\n", "placeholder" ] }, @@ -108,11 +108,11 @@ "source": [ "with placeholder:\n", " placeholder.update(\"๐Ÿš€ Starting...\")\n", - " await asyncio.sleep(1)\n", + " time.sleep(1)\n", " placeholder.update(\"๐Ÿƒ Running...\")\n", - " await asyncio.sleep(1)\n", + " time.sleep(1)\n", " placeholder.update(\"โœ… Complete!\")\n", - " await asyncio.sleep(1)" + " time.sleep(1)" ] } ], diff --git a/examples/reference/widgets/Tabulator.ipynb b/examples/reference/widgets/Tabulator.ipynb index dae10448ba..e478448f10 100644 --- a/examples/reference/widgets/Tabulator.ipynb +++ b/examples/reference/widgets/Tabulator.ipynb @@ -529,7 +529,7 @@ " is_max = s == s.max()\n", " return ['background-color: yellow' if v else '' for v in is_max]\n", "\n", - "styled.style.applymap(color_negative_red).apply(highlight_max)\n", + "styled.style.map(color_negative_red).apply(highlight_max)\n", "\n", "styled" ] diff --git a/panel/reactive.py b/panel/reactive.py index ac8cff77ef..7f5569365f 100644 --- a/panel/reactive.py +++ b/panel/reactive.py @@ -63,7 +63,7 @@ from bokeh.models.sources import DataDict, Patches from pyviz_comms import Comm - from .layout.base import Panel + from .layout.base import Panel as BasePanel from .links import Callback, JSLinkTarget, Link log = logging.getLogger('panel.reactive') @@ -727,7 +727,7 @@ def link( Maps from a parameter in the source object to a callback. bidirectional: bool Whether to link source and target bi-directionally - **links: dict + links: dict Maps between parameters on this object to the parameters on the supplied object. """ @@ -781,7 +781,7 @@ def reverse_link(*events): self._links.append(link) return cb - def controls(self, parameters: list[str] = [], jslink: bool = True, **kwargs) -> 'Panel': + def controls(self, parameters: list[str] = [], jslink: bool = True, **kwargs) -> BasePanel: """ Creates a set of widgets which allow manipulating the parameters on this instance. By default all parameters which support @@ -851,7 +851,7 @@ def jscallback(self, args: dict[str, Any]={}, **callbacks: str) -> Callback: ---------- args: dict A mapping of objects to make available to the JS callback - **callbacks: dict + callbacks: dict A mapping between properties on the source model and the code to execute when that property changes @@ -888,7 +888,7 @@ def jslink( A mapping of objects to make available to the JS callback bidirectional: boolean Whether to link source and target bi-directionally - **links: dict + links: dict A mapping between properties on the source model and the target model property to link it to. diff --git a/panel/template/base.py b/panel/template/base.py index 970bfd8d43..10c9f54d67 100644 --- a/panel/template/base.py +++ b/panel/template/base.py @@ -57,7 +57,7 @@ from jinja2 import Template as _Template from pyviz_comms import Comm - from ..io.location import Location + from ..io.location.base import Location from ..io.resources import ResourcesType @@ -188,7 +188,7 @@ def _server_destroy(self, session_context: BokehSessionContext): def _init_doc( self, doc: Optional[Document] = None, comm: Optional[Comm] = None, title: Optional[str] = None, notebook: bool = False, - location: bool | Location=True + location: bool | Location = True ): # Initialize document document: Document = doc or curdoc_locked() @@ -484,7 +484,7 @@ def server_doc( location: bool | Location = True ) -> Document: """ - Returns a servable bokeh Document with the panel attached + Returns a servable Document with the template attached. Arguments --------- @@ -500,14 +500,14 @@ def server_doc( Returns ------- doc : bokeh.Document - The Bokeh document the panel was attached to + The Bokeh document the panel was attached to. """ return self._init_doc(doc, title=title, location=location) def servable( - self, title: Optional[str] = None, location: bool | 'Location' = True, + self, title: Optional[str] = None, location: bool | Location = True, area: str = 'main', target: Optional[str] = None - ) -> 'BaseTemplate': + ) -> BaseTemplate: """ Serves the template and returns self to allow it to display itself in a notebook context. @@ -530,7 +530,7 @@ def servable( Returns ------- - The template + The template object """ if curdoc_locked().session_context and config.template: raise RuntimeError( diff --git a/pixi.toml b/pixi.toml index e96e3704f5..3a94e5fd60 100644 --- a/pixi.toml +++ b/pixi.toml @@ -181,7 +181,7 @@ OBJC_DISABLE_INITIALIZE_FORK_SAFETY = "YES" [feature.doc.dependencies] lxml = "*" -nbsite = ">=0.8.6rc5" +nbsite = ">=0.8.6rc9" selenium = "*" [feature.doc.tasks]