Metadata-Version: 2.1
Name: async-dash
Version: 0.1.0a0
Summary: Async port of the official Plotly Dash library
Home-page: https://github.com/snehilvj/async-dash
Author: Snehil Vijay
Author-email: snehilvj@outlook.com
License: MIT
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
Classifier: Environment :: Web Environment
Classifier: Framework :: Dash
Classifier: Framework :: Flask
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Education
Classifier: Intended Audience :: Financial and Insurance Industry
Classifier: Intended Audience :: Healthcare Industry
Classifier: Intended Audience :: Manufacturing
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Topic :: Database :: Front-Ends
Classifier: Topic :: Office/Business :: Financial :: Spreadsheet
Classifier: Topic :: Scientific/Engineering :: Visualization
Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
Classifier: Topic :: Software Development :: Widget Sets
Requires-Python: >=3.7
Description-Content-Type: text/markdown
Requires-Dist: quart
Requires-Dist: quart-compress
Requires-Dist: plotly (>=5.0.0)
Requires-Dist: dash-html-components (==2.0.0)
Requires-Dist: dash-core-components (==2.0.0)
Requires-Dist: dash-table (==5.0.0)
Requires-Dist: importlib-metadata (==4.8.3) ; python_version < "3.7"

## Async Dash

`async-dash` is an async port of [Plotly Dash](https://github.com/plotly/dash) library, created by replacing its flask
backend with its async counterpart [quart](https://pgjones.gitlab.io/quart/index.html).

It started with my need to be able to create realtime dashboards with `dash`, specifically with event-driven
architecture. Using `async-dash` with components from [dash-extensions](https://github.com/thedirtyfew/dash-extensions)
such as WebSocket, EventSource, etc. you can create truly events based dashboards.

#### Table Of Contents

- [Installation](#installation)
- [Usage](#usage)
- [Motivation](#motivation)
- [Caveats](#caveats)
- [Alternatives](#alternatives)
- [Known Issues](#known-issues)
- [TODO](#todo)

### Installation

```bash
pip install async-dash
```

### Usage

```python
from dash import Dash, html, dcc, Output, Input
```

### Motivation

In addition to all the advantages of writing async code, `async-dash` enables you to:

1. run truly asynchronous callbacks
2. use websockets, server sent events, etc. without needing to monkey patch the Python standard library
3. use `quart` / [`fastapi`](https://fastapi.tiangolo.com) / [`starlette`](https://www.starlette.io) frameworks with
   your dash apps side by side
4. use HTTP/2 (especially server push) if you use it HTTP/2 enabled server such
   as [`hypercorn`](https://pgjones.gitlab.io/hypercorn/).

### Caveats

I'm maintaining this library as a proof of concept for now. It should not be used for production. You can see the
deviation from `dash` [here](https://github.com/snehilvj/async-dash/compare/dev...snehilvj:async-dash).

If you do decide to use it, I'd love to hear your feedback.

### Alternatives

#### [dash-devices](https://github.com/richlegrand/dash_devices)

`dash-devices` is another async port based on `quart`. It's capable of using websockets even for callbacks, which makes
it way faster than either of `dash` or `async-dash`. However, the library stands outdated at the time this document was
last updated.

**PS:** `async-dash` is highly inspired by the `dash-devices`. Difference being that `async-dash` tries to follow `dash`
as close as possible.

### Known Issues

1. Exception handling in callbacks in **debug mode** is broken.

### TODO

1. Write examples/articles showcasing the use cases for asynchronous `dash`.
2. Gather reviews and feedback from the Dash Community.


