Skip to main content

Simple Directed Acyclic Graph whith Cicle Detector and TopoloGical sorter utilities.

Project description

# Py_SDAG2 - Python Simple Directed Acyclic Graph

The Python Simple Directed Graph whith Cicle Detector and TopoloGical sorter utilities.

## Authors
- [Moises P. Sena](http://moisespsena.com)

## Install

```bash
sudo pip install py_sdag2
```

## Scripts

### tsort.py

Sources from Standard Input:

```bash
echo -e 'C A\nA B\nB D\nC D' | tsort.py
```

Sources from another file:

```bash
echo -e 'C A\nA B\nB D\nC D' > verticies.txt
```

```bash
tsort.py verticies.txt
```

More Options:

```bash
tsort.py --help
Usage: tsort.py [options] [FILE [OUT_FILE]]

Options:
-h, --help show this help message and exit
-f FILE, --file=FILE With no FILE, or when FILE is -, read standard input.
-o OUT_FILE, --out-file=OUT_FILE
Write result to OUT_FILE, default is standard output.
-s SEP, --separator=SEP
Items separator, default is \s regex.
-q QUIT_SEQ, --quit-sequence=QUIT_SEQ
Stop read FILE where line equals QUIT_SEQ, default is
:quit.
```

## Tests

```python
import unittest
from sdag2 import DAG, CycleDetectedException

class DAGTest(unittest.TestCase):
def test_simple(self):
'''
Tests the verticles order in:

C --> A --> B --> D
'''

dag = DAG()
a = dag.add("A")
b = dag.add("B")
c = dag.add("C")
d = dag.add("D")

dag.add_edge(c, a)
dag.add_edge(a, b)
dag.add_edge(b, d)
dag.add_edge(c, d)

rs = dag.topologicaly()

self.assertTrue(rs.index("C") < rs.index("A"))
self.assertTrue(rs.index("A") < rs.index("B"))
self.assertTrue(rs.index("B") < rs.index("D"))
self.assertTrue(rs.index("C") < rs.index("D"))

def test_cicle_detect(self):
'''
Tests the verticles order in:

C --> A --> B --> D -> C
'''

dag = DAG()
a = dag.add("A")
b = dag.add("B")
c = dag.add("C")
d = dag.add("D")

dag.add_edge(c, a)
dag.add_edge(a, b)
dag.add_edge(b, d)
dag.add_edge(c, d)

try:
# add cicle at A --> C --> A
dag.add_edge(a, c)
raise Exception("Cycle not detected")
except CycleDetectedException: pass

def main():
unittest.main()

if __name__ == "__main__":
main()
```

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

py_sdag2-1.0.1.tar.gz (5.6 kB view details)

Uploaded Source

Built Distributions

py_sdag2-1.0.1-py3.4.egg (10.0 kB view details)

Uploaded Source

py_sdag2-1.0.1-py2.7.egg (9.6 kB view details)

Uploaded Source

File details

Details for the file py_sdag2-1.0.1.tar.gz.

File metadata

  • Download URL: py_sdag2-1.0.1.tar.gz
  • Upload date:
  • Size: 5.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for py_sdag2-1.0.1.tar.gz
Algorithm Hash digest
SHA256 efb000f8038bc58d10b30c3a985e787b5876150b72f41dd4e71e268981c5a83e
MD5 a3acb6200a9d15e3d098b396c938f52a
BLAKE2b-256 500930950184a190d35adf002ec0f48a973ff6fd294af658a9fdccd611408cc3

See more details on using hashes here.

File details

Details for the file py_sdag2-1.0.1-py3.4.egg.

File metadata

  • Download URL: py_sdag2-1.0.1-py3.4.egg
  • Upload date:
  • Size: 10.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for py_sdag2-1.0.1-py3.4.egg
Algorithm Hash digest
SHA256 2360a7b2683f6e0b8e9a8c1bdb5323f75849d03657ae35a14b68988cab6105a9
MD5 88f25d85b741d1da27e7e1a08a1caa6f
BLAKE2b-256 ccb9eb68971d1a36f0d6674430a73e90c57d35ad2a4ac1da04875a4a864338e7

See more details on using hashes here.

File details

Details for the file py_sdag2-1.0.1-py2.7.egg.

File metadata

  • Download URL: py_sdag2-1.0.1-py2.7.egg
  • Upload date:
  • Size: 9.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for py_sdag2-1.0.1-py2.7.egg
Algorithm Hash digest
SHA256 aa87e5eb7c28cbdc07819361cad95e9bc917a4ecabb8f430e633b0963cb5e7cd
MD5 596e14a80998be35a31e2a36862eddc1
BLAKE2b-256 1af6cc33ef4700fdb6e8aeb6663463f8b5995641e84a0f08320557be1436df43

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page