# hgraph
A functional reactive programming engine with a Python front-end.
This provides a DSL and runtime to support the computation of results over time, featuring
a graph based directed acyclic dependency graph and the concept of time-series properties.
The language is function-based, and promotes composition to extend behaviour.
Here is a simple example:
```python
from hgraph import graph, run_graph, const
from hgraph.nodes import debug_print
@graph
def main():
a = const(1)
c = a + 2
debug_print("a + 2", c)
run_graph(main)
```
Results in:
```
[1970-01-01 00:00:00.000385][1970-01-01 00:00:00.000001] a + 2: 3
```
See [this](https://hgraph.readthedocs.io/en/latest/) for more information.
## Development
The project is currently configured to make use of [Poetry](https://python-poetry.org) for dependency management.
Take a look at the website to see how best to install the tool.
Here are some useful commands:
First, this will cause the virtual environment to be installed in the same folder as the project (in .venv folder)
```bash
poetry config virtualenvs.in-project true
```
Use this command to set the version of Python to make use of if you want a specific version of Python.
```bash
poetry env use 3.11
```
Then use the following command to install the project and its dependencies. Note that the ``--with docs`` installs
the dependencies to build the documentation set which is not required otherwise, also the ``--all-extras`` is only
required for the adaptors.
```bash
poetry install --with docs --all-extras
```
If you did not use the first command, you can find the location of the installation using:
```bash
poetry env info
```
PyCharm can make use of poetry to ``setup`` the project.
### Run Tests
```bash
# No Coverage
poetry run pytest
```
```bash
# Generate Coverage Report
poetry run pytest --cov=your_package_name --cov-report=xml
```
Raw data
{
"_id": null,
"home_page": null,
"name": "hgraph",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.11",
"maintainer_email": null,
"keywords": "reactive, graph, fpg, forward propogating graph, time series, functional reactive programming, frp, functional, time-series",
"author": "Howard Henson",
"author_email": "howard@henson.me.uk",
"download_url": "https://files.pythonhosted.org/packages/4d/6b/6a61258c79320b850dadbb3bccd19b90097ed5f427cfab1c25abd0882a16/hgraph-0.3.38.tar.gz",
"platform": null,
"description": "# hgraph\nA functional reactive programming engine with a Python front-end.\n\nThis provides a DSL and runtime to support the computation of results over time, featuring\na graph based directed acyclic dependency graph and the concept of time-series properties.\nThe language is function-based, and promotes composition to extend behaviour.\n\nHere is a simple example:\n\n```python\nfrom hgraph import graph, run_graph, const\nfrom hgraph.nodes import debug_print\n\n@graph\ndef main():\n a = const(1)\n c = a + 2\n debug_print(\"a + 2\", c)\n\nrun_graph(main)\n```\nResults in:\n```\n[1970-01-01 00:00:00.000385][1970-01-01 00:00:00.000001] a + 2: 3\n```\n\nSee [this](https://hgraph.readthedocs.io/en/latest/) for more information.\n\n## Development\n\nThe project is currently configured to make use of [Poetry](https://python-poetry.org) for dependency management. \nTake a look at the website to see how best to install the tool.\n\nHere are some useful commands:\n\nFirst, this will cause the virtual environment to be installed in the same folder as the project (in .venv folder)\n\n```bash\npoetry config virtualenvs.in-project true\n```\n\nUse this command to set the version of Python to make use of if you want a specific version of Python.\n\n```bash\npoetry env use 3.11\n```\n\nThen use the following command to install the project and its dependencies. Note that the ``--with docs`` installs\nthe dependencies to build the documentation set which is not required otherwise, also the ``--all-extras`` is only\nrequired for the adaptors.\n\n```bash\npoetry install --with docs --all-extras\n```\n\nIf you did not use the first command, you can find the location of the installation using:\n\n```bash\npoetry env info\n```\n\nPyCharm can make use of poetry to ``setup`` the project.\n\n### Run Tests\n\n```bash\n# No Coverage\npoetry run pytest\n```\n\n```bash\n# Generate Coverage Report\npoetry run pytest --cov=your_package_name --cov-report=xml\n```\n\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "A functional reactive platform used to process time-series streams. Provides support for backtest (simulation) and realtime time-series processing. Using a forward propagation graph with a microtask scheduler for the runtime engine.",
"version": "0.3.38",
"project_urls": {
"Changelog": "https://github.com/hhenson/hgraph/blob/main/CHANGELOG.md",
"Documentation": "https://github.com/hhenson/hgraph/blob/main/docs/index.md",
"Homepage": "https://github.com/hhenson/hgraph",
"Issues": "https://github.com/hhenson/hgraph/blob/main/ISSUES.md",
"Repository": "https://github.com/hhenson/hgraph.git"
},
"split_keywords": [
"reactive",
" graph",
" fpg",
" forward propogating graph",
" time series",
" functional reactive programming",
" frp",
" functional",
" time-series"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "b999878a7d3b95735c794447878cd42ca62ab8b0ea84b49cdb8c34f8d7f284c9",
"md5": "bd064d8a26d35d2e8bc76803b6858d26",
"sha256": "151adae5be6e7c3fafe7ea396f25c3ce4deed1c02323f8cc1e452a669a3bf85f"
},
"downloads": -1,
"filename": "hgraph-0.3.38-py3-none-any.whl",
"has_sig": false,
"md5_digest": "bd064d8a26d35d2e8bc76803b6858d26",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.11",
"size": 436569,
"upload_time": "2024-12-11T14:55:38",
"upload_time_iso_8601": "2024-12-11T14:55:38.014390Z",
"url": "https://files.pythonhosted.org/packages/b9/99/878a7d3b95735c794447878cd42ca62ab8b0ea84b49cdb8c34f8d7f284c9/hgraph-0.3.38-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "4d6b6a61258c79320b850dadbb3bccd19b90097ed5f427cfab1c25abd0882a16",
"md5": "23114cb65d186f9218b522b06060106e",
"sha256": "ea473f9db0aa44d7be621c67c4daece8e70924ad758f7b98775bf7fa7e0a5a05"
},
"downloads": -1,
"filename": "hgraph-0.3.38.tar.gz",
"has_sig": false,
"md5_digest": "23114cb65d186f9218b522b06060106e",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.11",
"size": 312103,
"upload_time": "2024-12-11T14:55:40",
"upload_time_iso_8601": "2024-12-11T14:55:40.293618Z",
"url": "https://files.pythonhosted.org/packages/4d/6b/6a61258c79320b850dadbb3bccd19b90097ed5f427cfab1c25abd0882a16/hgraph-0.3.38.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-12-11 14:55:40",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "hhenson",
"github_project": "hgraph",
"travis_ci": false,
"coveralls": true,
"github_actions": true,
"lcname": "hgraph"
}