Sha256: dea98975811b9daf816f7d910f80050e48b1938bab3419859e2815122eeffe2b

Contents?: true

Size: 1.49 KB

Versions: 110

Compression:

Stored size: 1.49 KB

Contents

NODE, EDGE, ATTR = range(3)


class Node(object):
    def __init__(self, name, attrs={}):
        self.name = name
        self.attrs = attrs

    def __eq__(self, other):
        return self.name == other.name and self.attrs == other.attrs


class Edge(object):
    def __init__(self, src, dst, attrs={}):
        self.src = src
        self.dst = dst
        self.attrs = attrs

    def __eq__(self, other):
        return (self.src == other.src and
                self.dst == other.dst and
                self.attrs == other.attrs)


class Graph(object):
    def __init__(self, data=[]):
        self.nodes = []
        self.edges = []
        self.attrs = {}

        if not isinstance(data, list):
            raise TypeError("Graph data malformed")

        for item in data:
            if len(item) < 3:
                raise TypeError("Graph item incomplete")

            type_ = item[0]
            if type_ == ATTR:
                if len(item) != 3:
                    raise ValueError("ATTR malformed")
                self.attrs[item[1]] = item[2]
            elif type_ == NODE:
                if len(item) != 3:
                    raise ValueError("NODE malformed")
                self.nodes.append(Node(item[1], item[2]))
            elif type_ == EDGE:
                if len(item) != 4:
                    raise ValueError("EDGE malformed")
                self.edges.append(Edge(item[1], item[2], item[3]))
            else:
                raise ValueError("Unknown item {}".format(item[0]))

Version data entries

110 entries across 110 versions & 1 rubygems

Version Path
trackler-2.2.1.180 tracks/python/exercises/dot-dsl/example.py
trackler-2.2.1.179 tracks/python/exercises/dot-dsl/example.py
trackler-2.2.1.178 tracks/python/exercises/dot-dsl/example.py
trackler-2.2.1.177 tracks/python/exercises/dot-dsl/example.py
trackler-2.2.1.176 tracks/python/exercises/dot-dsl/example.py
trackler-2.2.1.175 tracks/python/exercises/dot-dsl/example.py
trackler-2.2.1.174 tracks/python/exercises/dot-dsl/example.py
trackler-2.2.1.173 tracks/python/exercises/dot-dsl/example.py
trackler-2.2.1.172 tracks/python/exercises/dot-dsl/example.py
trackler-2.2.1.171 tracks/python/exercises/dot-dsl/example.py
trackler-2.2.1.170 tracks/python/exercises/dot-dsl/example.py
trackler-2.2.1.169 tracks/python/exercises/dot-dsl/example.py
trackler-2.2.1.167 tracks/python/exercises/dot-dsl/example.py
trackler-2.2.1.166 tracks/python/exercises/dot-dsl/example.py
trackler-2.2.1.165 tracks/python/exercises/dot-dsl/example.py
trackler-2.2.1.164 tracks/python/exercises/dot-dsl/example.py
trackler-2.2.1.163 tracks/python/exercises/dot-dsl/example.py
trackler-2.2.1.162 tracks/python/exercises/dot-dsl/example.py
trackler-2.2.1.161 tracks/python/exercises/dot-dsl/example.py
trackler-2.2.1.160 tracks/python/exercises/dot-dsl/example.py