Metadata-Version: 2.1
Name: arcbound
Version: 0.0.3
Summary: Collection of tools to arrange bound methods into a graph.
Home-page: https://github.com/JHwangAstro/arcbound
Author: Jason Hwang
Author-email: jhwang.astro@gmail.com
License: UNKNOWN
Platform: UNKNOWN
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3)
Classifier: Operating System :: OS Independent
Requires-Python: >=3.6
Description-Content-Type: text/markdown
Requires-Dist: attrs (>=19.3.0)
Provides-Extra: graphviz
Requires-Dist: graphviz (==0.13.2) ; extra == 'graphviz'

# Arcbound 
> Collection of tools to arrange bound methods into a graph.

Arcbound contains a series of decorators to aid data-driven programming, where
the methods and properties of a class are abstracted as nodes on a graph,
inter-connected by arcs (directed edges).

## Installation

## Usage example
```python
import arcbound as ab

@ab.graph
class Example():
    def __init__(self, root_val: int) -> None:
        self.root = root_val
        return None

    @property
    @ab.arc(x="root")
    def branch(self, x: int) -> int:
        return x * x 

    @ab.arc(x="branch", y="branch")
    def leaf(self, x: int, y: int) -> int:
        return x * y

    @ab.arc(x="branch", y="leaf")
    def catepillar(self, x: int, y: int) -> int:
        return x * y

    def twig(self, x: int, y: int) -> int:
        return x * y

example = Example(5)

example.get_arcbound_node("catepillar")(y=-2)
# -50

example.visualize_arcbound_graph()
```
![arcbound_graph](https://github.com/JHwangAstro/arcbound/blob/master/utils/arcbound_graph.png "ArcboundGraph")



