Skip to main content

Dash File Cache

Banner

GitHub release (latest SemVer) GitHub all releases GitHub PyPI - Downloads

GitHub Actions (Build) GitHub Actions (Release)

Dash File Cache is a Dash extension library.

Utilities for providing convenient methods to serve cached data in Plotly-Dash or Flask.

The data cache enables the following features:

  1. Load a server-side file dynamically and send the file to users (the frontend).
  2. Support in-memory files (like io.BytesIO()) or on-disk files (specified by a path).
  3. Support different kinds of cache (single-thread, multi-processing, or file-based).
  4. Customized components helping the dashboard trigger download events from the server side.

1. Install

Intall the latest released version of this package by using the PyPI source:

python -m pip install dash-file-cache

If users want to install the developer's version, they need to ensure that the following packages are installed.

Then use the following commands to install it.

git clone --depth 1 --single-branch https://github.com/cainmagi/dash-file-cache
cd dash-file-cache
python -m pip install -r requirements.txt -r requirements-dev.txt
yarn install
yarn dlx @yarnpkg/sdks vscode
yarn build
python -m pip install .[dev]

For VSCode users, please install the recommended extensions specified in the project workspace file.

2. Usage

The following codes show a minimal example of this package

from typing import Optional

import io

import dash
from dash import html
from dash import Input, Output

from dash_file_cache import ServiceData, CachePlain

app = dash.Dash("demo")
service = ServiceData(CachePlain(1))
service.serve(app)

app.layout = html.Div(
    (
        html.Div(
            html.P(
                (
                    html.Span("Get Image:", style={"paddingRight": "0.5rem"}),
                    html.Button(id="btn", children="Image"),
                )
            )
        ),
        html.Div((html.P("Cache address:"), html.P(id="addr"))),
        html.Div((html.P("Cached Image:"), html.Img(id="cache"))),
    ),
)


@app.callback(
    Output("addr", "children"),
    Input("btn", "n_clicks"),
    prevent_initial_call=True,
)
def click_get_image(
    n_clicks: Optional[int],
):
    if not n_clicks:
        return dash.no_update

    addr = service.register(
        io.StringIO(
            R'<svg height="100" width="100" xmlns="http://www.w3.org/2000/svg">'
            R'<circle r="45" cx="50" cy="50" fill="red" /></svg>'
        ),
        content_type="image/svg+xml",
        mime_type="image/svg+xml",
        one_time_service=True,
    )
    return addr


@app.callback(
    Output("cache", "src"),
    Input("addr", "children"),
    prevent_initial_call=True,
)
def update_cache(addr):
    if not addr:
        return dash.no_update
    return addr


if __name__ == "__main__":
    app.run(host="127.0.0.1", port="8080", debug=True)

Check http://127.0.0.1:8080 to see the following results:

The minimal demo
pic-demo-minimal

3. Documentation

Check the documentation to find more details about the examples and APIs.

https://cainmagi.github.io/dash-file-cache/

4. Contributing

See CONTRIBUTING.md :book:

5. Changelog

See Changelog.md :book:

Download files

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

Source Distribution

dash_file_cache-0.2.0.tar.gz (369.4 kB view details)

Uploaded Source

Built Distribution

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

dash_file_cache-0.2.0-py3-none-any.whl (130.5 kB view details)

Uploaded Python 3

File details

Details for the file dash_file_cache-0.2.0.tar.gz.

File metadata

  • Download URL: dash_file_cache-0.2.0.tar.gz
  • Upload date:
  • Size: 369.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for dash_file_cache-0.2.0.tar.gz
Algorithm Hash digest
SHA256 5a367233e138fa8767b5489645aa8f46184aa9fa1339001f89b3797d73fdb203
MD5 1cd1ca6377fd69d50e31b70429c9517d
BLAKE2b-256 cf6c482fbf9ca381cde01a1d69c105217ad9854f55aba6f501d5cc28947ec799

See more details on using hashes here.

Provenance

The following attestation bundles were made for dash_file_cache-0.2.0.tar.gz:

Publisher: python-publish.yml on cainmagi/dash-file-cache

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file dash_file_cache-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: dash_file_cache-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 130.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for dash_file_cache-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 6bca75f87de23ea96a548c6e96eef1b7c5e5f734d92198a80a68108ae2292001
MD5 b90506d198c34f5598688a416271c15f
BLAKE2b-256 4e5d8982cc9f3f71c5759c6213858938b4952ea1846d0165e9f266bcdc015f62

See more details on using hashes here.

Provenance

The following attestation bundles were made for dash_file_cache-0.2.0-py3-none-any.whl:

Publisher: python-publish.yml on cainmagi/dash-file-cache

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

0.2.0 This release

2 files

0.1.2

2 files

Supported by

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