Home

Awesome

<h4>This package will be deprecated - we move instead all collaboration focus to the reusable React and Dash components in: <ul> <li>https://github.com/equinor/webviz-subsurface-components</li> <li>https://github.com/equinor/webviz-core-components</li> </ul> </h2> <hr/> <p align="center"> <img height="150" src="https://github.com/equinor/webviz-config/raw/master/webviz_config/_docs/static/webviz-logo.svg?sanitize=true"> </p> <h2 align="center">Democratizing Python web applications</h2> <p align="center"> <a href="https://badge.fury.io/py/webviz-config"><img src="https://badge.fury.io/py/webviz-config.svg"></a> <a href="https://equinor.github.io/webviz-config"><img src="https://img.shields.io/badge/docs-passing-brightgreen"></a> <a href="https://github.com/equinor/webviz-config/blob/master/LICENSE"><img src="https://img.shields.io/github/license/equinor/webviz-config.svg?color=dark-green"></a> <a href="https://github.com/equinor/webviz-config/actions?query=branch%3Amaster"><img src="https://github.com/equinor/webviz-config/workflows/webviz-config/badge.svg"></a> <a href="https://lgtm.com/projects/g/equinor/webviz-config/alerts/"><img alt="Total alerts" src="https://img.shields.io/lgtm/alerts/g/equinor/webviz-config.svg?logo=lgtm&logoWidth=18"/></a> <a href="https://lgtm.com/projects/g/equinor/webviz-config/context:python"><img alt="Language grade: Python" src="https://img.shields.io/lgtm/grade/python/g/equinor/webviz-config.svg?logo=lgtm&logoWidth=18"/></a> <a href="https://www.python.org/"><img src="https://img.shields.io/badge/python-3.8%20|%203.9%20|%203.10%20|%203.11%20|%203.12-blue.svg"></a> <a href="https://github.com/psf/black"><img src="https://img.shields.io/badge/code%20style-black-000000.svg"></a> </p> <br/>

Writing a Dash web application gives a lot of flexibility, however, it also requires :snake: Python knowledge from the person setting it up.

Webviz™ is a MIT-licensed configuration layer on top of Dash, which encourages making reusable components and dashboards, which can then be added/removed when creating an application using a short yaml configuration file.

This Python package, webviz-config, is the core plugin framework. For a real example repository using this plugin system, see e.g. webviz-subsurface.

These are the main user groups targeted by Webviz™:

Webviz™ will create web applications with very :lock: strict security headers and CSP settings, giving an rating of A+ on e.g. Mozilla observatory. It also facilitates a :whale: Docker setup, where the Python code can be ran completely unpriviliged in a sandbox (both with respect to file system access and network communication).

Example configuration file and information about the standard plugins can be seen in the documentation.

The workflow can be summarized as this:

  1. The user provides a :book: configuration file following the yaml standard.
  2. Webviz™ reads the configuration file and automatically writes the corresponding :snake: Python code.
  3. The created application can be viewed locally, or deployed using :whale: Docker to a cloud provider. Both out of the box.

technical_drawing


Installation

The recommended and simplest way of installing webviz-config is to run

pip install webviz-config

If you want to develop webviz-config and install the latest source code manually you can do something along the lines of:

git clone git@github.com:equinor/webviz-config.git
cd ./webviz-config
npm ci --ignore-scripts
# NOTE: If you are on Windows, make sure to first set `npm`'s default `script-shell` to `powershell` by running
# npm config set script-shell powershell
npm run postinstall
pip install -e .

After installation, there is a console script named webviz available. You can test the installation by using the provided example configuration file,

webviz build ./examples/basic_example.yaml

Without any additional arguments, this will

  1. create a temporary folder
  2. write the Python application code to that folder
  3. start a localhost server

When stopping the server (press CTRL+C at any time), the temporary folder is deleted.

The optional arguments can be seen when running

webviz --help

Usage

See the introduction page for information on how you create a webviz configuration file and use it.

Creating new plugins

If you are interested in creating new plugins which can be configured through the configuration file, take a look at the contribution guide.

To quickly get started, we recommend using the corresponding cookiecutter template.

License

webviz-config is, with a few exceptions listed below, MIT licensed.