Skip to main content

Runs clientside callback functions in Dash applications using Python syntax, eliminating the need for inline JavaScript.

Project description

better-dash-callback

A library that enables running clientside callback functions in Dash applications using Python syntax, eliminating the need for inline JavaScript.

Problem

When building Dash applications, you often need to write clientside callback functions using inline JavaScript. This can be cumbersome and error-prone, especially for complex logic. Moreover, inline JavaScript code lacks syntax highlighting and debugging capabilities.

Solution

better-dash-callback provides a solution to this problem by allowing you to write clientside callback functions using Python syntax. This makes your code more readable, maintainable, and efficient.

Example

Let's consider a simple example where we want to update the text of a component based on the value of an input component.

Using Dash's clientside_callback

import dash
from dash import html
from dash.dependencies import Input, Output

app = dash.Dash(__name__)

app.layout = html.Div([
    html.Input(id="input", type="text"),
    html.Div(id="output")
])

app.clientside_callback(
    """
    function(value) {
        return 'You entered: ' + value;
    }
    """,
    Output("output", "children"),
    Input("input", "value")
)

if __name__ == "__main__":
    app.run_server(debug=True)

Using better-dash-callback

import dash
from dash import html
from better_dash_callback import callback

app = dash.Dash(__name__)

app.layout = html.Div([
    html.Input(id="input", type="text"),
    html.Div(id="output")
])

@callback(
    Output("output", "children"),
    Input("input", "value"),
    clientside=True,
    enable_es6=True,
    enable_stage3=True,
    prevent_initial_call=True
)
def update_output(value):
    return f"You entered: {value}"

if __name__ == "__main__":
    app.run_server(debug=True)

As you can see, the better-dash-callback example is more elegant and easier to read. You can write your callback function using Python syntax, without having to worry about inline JavaScript code.

The callback function takes the following additional arguments:

  • clientside: A boolean indicating whether the callback should be executed on the client-side (default is False).
  • enable_es6: A boolean indicating whether to enable ES6 syntax in the generated JavaScript code (default is True).
  • enable_stage3: A boolean indicating whether to enable Stage 3 syntax in the generated JavaScript code (default is True).
  • prevent_initial_call: A boolean indicating whether to prevent the callback from being called on the initial render (default is False).

Installation

To install better-dash-callback, you can use pip:

pip3 install better-dash-callback

License

better-dash-callback is licensed under the MIT License.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

better_dash_callback-0.1.1.tar.gz (3.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

better_dash_callback-0.1.1-py3-none-any.whl (4.3 kB view details)

Uploaded Python 3

File details

Details for the file better_dash_callback-0.1.1.tar.gz.

File metadata

  • Download URL: better_dash_callback-0.1.1.tar.gz
  • Upload date:
  • Size: 3.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.12

File hashes

Hashes for better_dash_callback-0.1.1.tar.gz
Algorithm Hash digest
SHA256 2a4910a87ead5f8ba1c2fb975533cd65042fa92570d9b25b7748b5a698e026e5
MD5 c7c3526e6f036ef5d494ad16625fb530
BLAKE2b-256 ebbc05d26086431b695ac70c484739298532fc70c3c81b0c0f49e6918a56517d

See more details on using hashes here.

File details

Details for the file better_dash_callback-0.1.1-py3-none-any.whl.

File metadata

File hashes

Hashes for better_dash_callback-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 ac83b431f02b48e8f518ba401ce138394879646dc72de4553107902a7883b321
MD5 f75798b428f1a85b663b4da94691da95
BLAKE2b-256 037b4f24ed9e0cf023d4d20e3b2464808994e5ce3cbe0dea537e4e7808d615b4

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page