Ejemplo n.º 1
0
    def __init__(self, dg):
        self.dg = BidirectionalDAG(dg)
        self.might_merge = set(dg)
        self.sig_replacements = {}

        self.sig2ops = WeakKeyDefaultDict(WeakSet)
        self.base2views = WeakKeyDefaultDict(WeakSet)
        for op in self.dg.forward:
            for s in op.all_signals:
                self.sig2ops[s].add(op)
                self.base2views[s.base].add(s)

        # These variables will be initialized and used on each pass
        self.dependents = None
        self.only_merge_ops_with_view = None

        self.merged = set()
        self.merged_dependents = set()
        self.opinfo = OpInfo()
Ejemplo n.º 2
0
def test_weakkeydefaultdict():
    factory = lambda: 'default'
    d = WeakKeyDefaultDict(factory)
    o = C()

    assert len(d) == 0
    assert d[o] == 'default'

    d[o] = 'changed'
    assert len(d) == 1
    assert d[o] == 'changed'

    del d[o]
    assert len(d) == 0
    assert o not in d

    d[o] = 'changed'
    del o
    assert len(d) == 0
Ejemplo n.º 3
0
def test_weakkeydefaultdict():
    factory = lambda: "default"
    d = WeakKeyDefaultDict(factory)
    o = C()

    assert len(d) == 0
    assert d[o] == "default"

    d[o] = "changed"
    assert len(d) == 1
    assert d[o] == "changed"

    del d[o]
    assert len(d) == 0
    assert o not in d

    d[o] = "changed"
    for index in d:
        assert index == o
    del index
    del o
    assert len(d) == 0
Ejemplo n.º 4
0
def test_weakkeydefaultdict():
    factory = lambda: "default"
    d = WeakKeyDefaultDict(factory)
    o = C()

    assert len(d) == 0
    assert d[o] == "default"

    d[o] = "changed"
    assert len(d) == 1
    assert d[o] == "changed"

    del d[o]
    assert len(d) == 0
    assert o not in d

    d[o] = "changed"
    for index in d:
        assert index == o
    del index  # pylint: disable=undefined-loop-variable
    del o
    assert len(d) == 0