Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/larsrollik/dash_entrypoints
Dash entrypoints: CLI & wrapper for multi-page apps, layout callbacks, and more.
https://github.com/larsrollik/dash_entrypoints
interface plotly-dash
Last synced: 2 months ago
JSON representation
Dash entrypoints: CLI & wrapper for multi-page apps, layout callbacks, and more.
- Host: GitHub
- URL: https://github.com/larsrollik/dash_entrypoints
- Owner: larsrollik
- Created: 2022-03-09T10:39:52.000Z (almost 3 years ago)
- Default Branch: main
- Last Pushed: 2022-10-07T12:48:04.000Z (about 2 years ago)
- Last Synced: 2024-04-26T12:22:26.007Z (8 months ago)
- Topics: interface, plotly-dash
- Language: Python
- Homepage:
- Size: 94.7 KB
- Stars: 3
- Watchers: 1
- Forks: 0
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
README
[![DOI](https://zenodo.org/badge/467883785.svg)](https://zenodo.org/badge/latestdoi/467883785)
[![Website](https://img.shields.io/website?up_message=online&url=https%3A%2F%2Fgithub.com/larsrollik/dash_entrypoints)](https://github.com/larsrollik/dash_entrypoints)
[![PyPI](https://img.shields.io/pypi/v/dash_entrypoints.svg)](https://pypi.org/project/dash_entrypoints)
[![Wheel](https://img.shields.io/pypi/wheel/dash_entrypoints.svg)](https://pypi.org/project/dash_entrypoints)
[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/python/black)
[![pre-commit](https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit&logoColor=white)](https://github.com/pre-commit/pre-commit)
[![Contributions](https://img.shields.io/badge/Contributions-Welcome-brightgreen.svg)](https://github.com/larsrollik/dash_entrypoints/pulls)# Dash entrypoints
CLI & wrapper for multi-page apps, layout callbacks, and more.
---See features & entrypoints listed below.
### Entrypoint for multi-page apps
##### Python
```python
from dash_entrypoints import run_entrypointkwargs = {}
run_entrypoint(**kwargs)
```###### Load `app_data` from file for use with `run_entrypoint` (expects `dict`, not a filepath)
```python
from dash_entrypoints.misc import load_app_data
from dash_entrypoints import run_entrypointapp_data_file = "/some/file/path"
app_data = load_app_data(file=app_data_file)
run_entrypoint(app_data=app_data)
```##### CLI
Show arguments
```shell
ifentry --help
```Example call
```shell
ifentry --app-name TEST-NAME \
--ip-address 192.168.100.10 \
--views-module 'mypackage.page_subpackage' \
--assets-folder '/path/to/assets/folder' \
--port 9050 \
--debug
```### Element wrappers
See for elements in `from interfaces_entrypoint import elements`
##### Standard layouts for `dash.DataTable`
###### With column dropdowns
```python
from dash_entrypoints.elements.table_with_dropdown import add_table_with_dropdown_columnskwargs = {}
table = add_table_with_dropdown_columns(**kwargs)
```###### With selection handles
```python
from dash_entrypoints.elements.table_for_selection import add_table_for_selection
kwargs = {}
table = add_table_for_selection(**kwargs)
```###### With editable columns (& typecasting for entered edited values for homogenous data in callbacks)
```python
from dash_entrypoints.elements.table_for_editing import add_table_with_editable_columns
kwargs = {}
table = add_table_with_editable_columns(**kwargs)
```###### Popup (dbc.Modal) for information, e.g. as callback confirmation
```pythonfrom dash_entrypoints.elements.popup_for_information import add_popup_for_information
popup_list = [
{
"name": "success",
"title": "Successfully inserted new entry.",
"text": None,
"close_button": False,
"is_open": False,
},
{"name": "error", "title": "Error during insert", "close_button": True},
]
popup_layout, popup_list = add_popup_for_information(popup_list=popup_list)# Add to main layout...
# Note: `popup_layout` is a list of popup layout objects
```##### Box for buttons
```python
# TODO, see Issue #3
```#### Callback wrapper for inner layout
This tool helps to minimise boilerplate code while dynamically combining inner layout elements
with a button in the outer layout that triggers a callback function that can be connected
to the inner elements via (state, variable) tuples.This function takes a part layout as list of dash layout elements, e.g. one or multiple tables,
and a callback function plus the adequate states that feed data into the callback.
The callback trigger is a button that gets added to the outer layout.The outer callback wrapper only hands down the input data to the given callback function for processing.
(See examples `add__example_callback_wrapper_dropdown` and `add__example_callback_wrapper_selection`)```python
from dash_entrypoints.elements.table_layout_wrapper import wrap_part_layout_for_callback```
#### Plugins for dash
To write a plugin, create a module .py file and add at least a method `plug` to it.
Data can be assigned (& virtually treated like a global attribute of the `dash` module if assigned as attribute to it in the `plug` method).Writing plugins for Dash does not seem to be documented yet, but logic of plugins can be observed in some repos on `github.com/plotly` or at `dash_labs.plugins.pages`.
See also `dash_entrypoints.plugins` for examples.###### Example of mnimal plugin
```python
import dashdef plug(app):
# Assign data to `dash` module
dash.some_plugin_data_container = {}# Plugin logic (Manipulate data here)
# ...
```###### Example use of any plugin
```python
import dash
from dash_entrypoints.plugins import minimalpluginapp = dash.Dash(
plugins=[minimalplugin],
)# Test here that `dash` already has the attribute from `minimalplugin`
print(dash.minimal_plugin_attribute)
# >> {'test1': 1}```
## Contributing
Contributions are welcome! Please open
[issues](https://github.com/larsrollik/dash_entrypoints/issues) or
[pull requests](https://github.com/larsrollik/dash_entrypoints/pulls) or
[get in touch](https://github.com/larsrollik).## Citation
> Rollik, Lars B. (2022). Dash entrypoints: . doi: [10.5281/zenodo.6412527](https://doi.org/10.5281/zenodo.6412527).
**BibTeX**
```BibTeX
@misc{rollik2021rpi,
author = {Lars B. Rollik},
title = {{Dash entrypoints: }},
year = {2022},
month = apr,
publisher = {Zenodo},
url = {https://doi.org/10.5281/zenodo.6412527},
doi = {10.5281/zenodo.6412527},
}
```## License
This software is released under the **[BSD 3-Clause License](https://github.com/larsrollik/dash_entrypoints/blob/master/LICENSE)**---
Version: "0.2.3"