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
Metadata
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)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| dash-io-0.0.2.tar.gz | 5.3 kB | Without provenance | Details for dash-io-0.0.2.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| dash_io-0.0.2-py3-none-any.whl | Python 3 | none | any | Details for dash_io-0.0.2-py3-none-any.whl |
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
|
Security for dash-io 0.0.2
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.