Skip to main content

dash-io

An API prototype for simplifying IO in Dash. This is an experimental library and not an official Plotly product.

Quickstart

To install the library:

pip install dash-io

Start using it inside Python

import dash_io as dio

# ...

url_df = dio.url_from_pandas(df)  # dataframe
url_im = dio.url_from_pillow(im)  # PIL image

# ...

df = dio.url_to_pandas(url_df)
im = dio.url_to_pillow(url_im)

Usage

Pillow

from PIL import Image
import numpy as np
import dash_io as dio

# Dummy image in Pillow
im = Image.fromarray(np.random.randint(0, 255, (100,100,3)))

# Encode the image into a data url
data_url = dio.url_from_pillow(im, format="jpg")

# Decode the data url into a PIL image
im = dio.url_to_pillow(data_url, format="jpg")

The following format are currently supported: jpg, png.

Pandas

If you use xlsx, make sure to install a third-party engine such as openpyxl.

To use it in pandas:

import pandas as pd
import dash_io as dio

# Dummy data
data = {'col_1': [3, 2, 1, 0], 'col_2': ['a', 'b', 'c', 'd']}
df = pd.DataFrame.from_dict(data)

# To encode/decode in binary CSV format
encoded = dio.url_from_pandas(df, format="csv", index=False)
decoded = dio.url_to_pandas(encoded, format="csv")

# To encode/decode in binary parquet format
encoded = dio.url_from_pandas(df, format="parquet")
decoded = dio.url_to_pandas(encoded, format="parquet")

# To encode/decode in string CSV format (i.e. text/csv MIME type)
encoded = dio.url_from_pandas(df, format="csv", mime_type="text", mime_subtype="csv", index=False)
decoded = dio.url_to_pandas(encoded, format="csv")

The following format are currently supported: csv, parquet, feather, xlsx.

JSON

import dash_io as dio

# Encode/decode dictionary
data = {'col_1': [3, 2, 1, 0], 'col_2': ['a', 'b', 'c', 'd']}
encoded = dio.url_from_json(data)
decoded = dio.url_to_json(encoded)

# It also works with lists and other JSON-serializable objects
encoded = dio.url_from_json([1,2,3,4,5])

Note that if a dict key is an integer, it will be converted to string by json. This is a normal behavior.

Numpy

By default, numpy arrays will not contain the mime header. However, you can enable it with header=True (e.g. if you want to upload/download a npy file).

import dash_io as dio

# Encode/decode numpy arrays without MIME header by default
array = np.array([[1, 2, 3], [4, 5, 6]])
encoded = dio.url_from_numpy(array)
decoded = dio.url_to_numpy(encoded)

# You can also use headers
encoded = dio.url_from_numpy(array, header=True)
decoded = dio.url_to_numpy(encoded, header=True)

Note that pickling is disabled for npy files for security reasons.

Documentation

You can access the documentation by calling:

import dash_io as dio
help(dio)

You can find the up-to-date output from help inside DOCS.txt.

Development

First, clone this repo:

git clone https://github.com/plotly/dash-io

Testing

Create a venv:

python -m venv venv
source venv/bin/activate

Install dev dependencies:

cd dash-io
pip install requirements-dev.txt

Run pytest:

python -m pytest

Release files for dash-io 0.0.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for dash-io 0.0.2
File Size Uploaded
dash-io-0.0.2.tar.gz 5.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for dash-io 0.0.2
File Interpreter ABI Platform
dash_io-0.0.2-py3-none-any.whl Python 3 none any Details

Total release size: 10.4 kB

Release files / dash-io-0.0.2.tar.gz

Download URL dash-io-0.0.2.tar.gz
Size 5.3 kB
Tags Source
SHA-256 checksum
How to use checksums
5126fa6a3e0d706f77c2d938e6febc42fa7f5dd826969d8af4ece5d9a67f687d
BLAKE2b-256 checksum
How to use checksums
2515546fe74d1537476116233d74d7f554a2d2c945caf37d83158b2c30516256
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/46.4.0.post20200518 requests-toolbelt/0.9.1 tqdm/4.57.0 CPython/3.8.3

Release files / dash_io-0.0.2-py3-none-any.whl

Download URL dash_io-0.0.2-py3-none-any.whl
Size 5.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
96120b748c8d8ceaf0d7460c33c5581619de6838e16e6a2f46d383861ab0ecd8
BLAKE2b-256 checksum
How to use checksums
6f3f69e0b3208f98fd353d26adc499c9de4f9f078d96312bcf82a285d62502a5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/46.4.0.post20200518 requests-toolbelt/0.9.1 tqdm/4.57.0 CPython/3.8.3

Release history Release notifications | RSS feed

This release

0.0.2 This release

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page