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'])
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"])
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
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.
"""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