コード例 #1
0
ファイル: test_misc.py プロジェクト: leozhoupeng83/myia
def test_registry():
    r = Registry(default_field='banana')
    a = HasDefaults('a', {'banana': 123}, defaults_field=None)
    b = HasDefaults('b', {'banana': 123}, defaults_field=None)
    c = HasDefaults('c',
                    'tests.utils.test_misc.cantaloup',
                    defaults_field='apple')
    r.register(a)(2)
    assert r[a] == 2
    assert r[b] == 123
    assert r[c] == 456
    with pytest.raises(TypeError):
        print(HasDefaults('d', 123, defaults_field='apple'))
    with pytest.raises(KeyError):
        print(r['xyz'])
コード例 #2
0
ファイル: test_misc.py プロジェクト: xyz3021/myia
def test_registry():
    r = Registry(default_field="banana")
    a = HasDefaults("a", {"banana": 123}, defaults_field=None)
    b = HasDefaults("b", {"banana": 123}, defaults_field=None)
    c = HasDefaults("c",
                    "tests.utils.test_misc.cantaloup",
                    defaults_field="apple")
    r.register(a)(2)
    assert r[a] == 2
    assert r[b] == 123
    assert r[c] == 456
    with pytest.raises(TypeError):
        print(HasDefaults("d", 123, defaults_field="apple"))
    with pytest.raises(KeyError):
        print(r["xyz"])
コード例 #3
0
ファイル: test_merge.py プロジェクト: tor4z/myia
def test_merge_registry():

    a = Registry()
    a.update(dict(a=1, b=2, c=3))
    b = Registry()
    b.update(dict(d=4))
    c = Registry()
    c.update(dict(a=1, b=2, c=3, d=4))

    assert merge(a, b) == c
    assert type(merge(a, b)) is Registry
コード例 #4
0
ファイル: gprint.py プロジェクト: fosterrath-mila/myia
                            label=('', 'nest-edge'))
            else:
                self.cyedge(src_id=src, dest_id=dest, label=lbl)

    def process(self):
        """Process all graphs in entry_points."""
        if self.nodes or self.edges:
            return
        for g in self.graphs:
            self.add_graph(g)
        for node in self.todo:
            self.process_node(node)
        return self.nodes, self.edges


cosmetics = Registry()


@cosmetics.register(primops.return_)
def _cosmetic_node_return(self, node, g, cl):
    """Create node and edges for `return ...`."""
    self.cynode(id=node, label='', parent=g, classes='const_output')
    ret = node.inputs[1]
    self.process_edges([(node, '', ret)])


class GraphCosmeticPrimitive(CosmeticPrimitive):
    """Cosmetic primitive that prints pretty in graphs.

    Attributes:
        on_edge: Whether to display the label on the edge.
コード例 #5
0
"""Implementations for the debug VM."""


from typing import Callable
from copy import copy
from . import ops as primops
from myia.utils import Registry


implementations: Registry[primops.Primitive, Callable] = Registry()
register = implementations.register


@register(primops.add)
def add(x, y):
    """Implement `add`."""
    return x + y


@register(primops.sub)
def sub(x, y):
    """Implement `sub`."""
    return x - y


@register(primops.mul)
def mul(x, y):
    """Implement `mul`."""
    return x * y