Esempio n. 1
0
def test_transitive_closure():
    edges = graphs.graph({
        "a": {},
        "b": {"c", "d"},
        "c": set(),
        "d": {"e"},
        "e": set()
    })
    assert graphs.transitive_closure(edges) == {
        "a": set(),
        "b": {"c", "d", "e"},
        "c": set(),
        "d": {"e"},
        "e": set(),
    }
Esempio n. 2
0
    def __call__(self, only_merge_ops_with_view):
        """Perform a single optimization pass.

        Parameters
        ----------
        only_merge_ops_with_view : bool
            Limits operator merges to operators with views.
        """

        # --- Initialize pass state
        self.dependents = transitive_closure(self.dg.forward)
        self.only_merge_ops_with_view = only_merge_ops_with_view
        self.merged.clear()
        self.merged_dependents.clear()
        self.opinfo.clear()

        # --- Do an optimization pass
        self.perform_merges()
Esempio n. 3
0
    def __call__(self, only_merge_ops_with_view):
        """Perform a single optimization pass.

        Parameters
        ----------
        only_merge_ops_with_view : bool
            Limits operator merges to operators with views.
        """

        # --- Initialize pass state
        self.dependents = transitive_closure(self.dg.forward)
        self.only_merge_ops_with_view = only_merge_ops_with_view
        self.merged.clear()
        self.merged_dependents.clear()
        self.opinfo.clear()

        # --- Do an optimization pass
        self.perform_merges()
Esempio n. 4
0
def test_transitive_closure():
    edges = graphs.graph(
        {'a': {}, 'b': {'c', 'd'}, 'c': set(), 'd': {'e', }, 'e': set()})
    assert graphs.transitive_closure(edges) == {
        'a': set(), 'b': {'c', 'd', 'e'}, 'c': set(), 'd': {'e'}, 'e': set()}