Metadata-Version: 2.1
Name: e2c
Version: 0.43.2
Summary: Elastic Event Components is an open source software library to build flexible architectures using dataflow graphs.
Home-page: https://gitlab.com/elastic-event-components/e2c
Author: Stefan Bergmann
Author-email: stefan.bergmann@enterstry.com
License: Apache 2.0
Project-URL: Bug Reports, https://gitlab.com/elastic-event-components/e2c/issues
Project-URL: Source, https://gitlab.com/elastic-event-components/e2c
Keywords: architecture dataflow dotnet e2c flow graph python
Platform: any
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: Topic :: Software Development :: Libraries
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Programming Language :: Python :: 3.6
Requires-Python: >=3.6
Description-Content-Type: text/markdown
Requires-Dist: twine
Requires-Dist: pytest
Requires-Dist: pytest-cov
Requires-Dist: pytest-asyncio
Requires-Dist: graphviz

<div align="center">
    <img src="https://gitlab.com/elastic-event-components/e2c/raw/master/images/e2c-logo.png"><br><br>
</div>
<br>

| **`Documentation`** | **`Master`** | **`Develop`** | **`Tests`** |
|---------------------|--------------|---------------|-------------|
| [![docs](https://readthedocs.org/projects/e2c/badge/?version=latest)](http://e2c.readthedocs.io/en/latest) | [![pipeline status](https://gitlab.com/elastic-event-components/e2c/badges/master/pipeline.svg)](https://gitlab.com/elastic-event-components/e2c/master/develop) | [![pipeline status](https://gitlab.com/elastic-event-components/e2c/badges/develop/pipeline.svg)](https://gitlab.com/elastic-event-components/e2c/commits/develop) | [![coverage report](https://gitlab.com/elastic-event-components/e2c/badges/develop/coverage.svg)](https://gitlab.com/elastic-event-components/e2c/commits/develop) |

<br>

# E2C.py - Elastic Event Components for Python

**Elastic Event Components** is an open source software library to build flexible architectures using
dataflow graphs. A graph node represents any operation, while the graph edges represent the data
of the operation. Each parameter can be bound to any number of operations and thus brought 
into a flow. Elastic Event Components also includes flow visualization.
<br>
<br>
Through E2C, processes and software architectures can be visualized by dataflow graphs, 
which can be converted into executable applications. **Functional dependencies can be defused** 
by E2C and thus significantly increase the changeability and quality of 
components and software projects.

## Installation
*See [Installing E2C](https://gitlab.com/elastic-event-components/e2c/raw/master/INSTALL.md) for instructions
on how to build from source.*

#### *Try your first E2C program*

```shell
$ python
```

```python
>>> import e2c

>>> config = (
... '.run -- action',
... 'action.render -- render',
... '   render.out -- .out',
... 'action.log -- log',
... '   log.store -- .out')

>>> def action(data: str, render, log):
...    render(data)
...    log('Render done!')

>>> graph = e2c.Graph[str, str](config)
>>> graph.actor('action', action)
>>> graph.actor('render', lambda dat, out: out(dat))
>>> graph.actor('log', lambda dat, store: store(dat))

>>> graph.visualize()
>>> graph.run_continues('Hello, E2C', print)

Hello, E2C
Render done!
```

<div align="center">
  <img src="https://gitlab.com/elastic-event-components/e2c/raw/master/images/quickstart2.png"><br><br>
</div>

## For more information
* [E2C website](http://e2c.readthedocs.io/en/latest/)

## License
[Apache 2.0 License](https://gitlab.com/elastic-event-components/e2c/blob/master/LICENSE)


