Passed
Pull Request — master (#144)
by
unknown
03:01
created

PostponeReferences.__aenter__()   A

Complexity

Conditions 1

Size

Total Lines 5
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 5
nop 1
dl 0
loc 5
rs 10
c 0
b 0
f 0
1
import asyncio
2
from .standard_address_space_part3 import create_standard_address_space_Part3
3
from .standard_address_space_part4 import create_standard_address_space_Part4
4
from .standard_address_space_part5 import create_standard_address_space_Part5
5
from .standard_address_space_part8 import create_standard_address_space_Part8
6
from .standard_address_space_part9 import create_standard_address_space_Part9
7
from .standard_address_space_part10 import create_standard_address_space_Part10
8
from .standard_address_space_part11 import create_standard_address_space_Part11
9
from .standard_address_space_part13 import create_standard_address_space_Part13
10
11
12
13
14
15
class PostponeReferences:
16
    def __init__(self, server):
17
        self.server = server
18
        self.postponed_refs = None
19
        self.postponed_nodes = None
20
        #self.add_nodes = self.server.add_nodes
21
22
    async def add_nodes(self, nodes):
23
        async for node in self.server.try_add_nodes(nodes, check=False):
24
            self.postponed_nodes.append(node)
25
26
    async def add_references(self, refs):
27
        async for ref in self.server.try_add_references(refs):
28
        #g = self.server.try_add_references(refs)
29
            self.postponed_refs.append(ref)
30
            # no return
31
32
    async def __aenter__(self):
33
        self.postponed_refs = []
34
        self.postponed_nodes = []
35
        await asyncio.sleep(0)
36
        return self
37
38
    async def __aexit__(self, exc_type, exc_val, exc_tb):
39
        if exc_type is None and exc_val is None:
40
            remaining_nodes = []
41
            remaining_refs = []
42
            async for remaining_node in self.server.try_add_nodes(self.postponed_nodes, check=False):
43
                remaining_nodes.append(remaining_node)
44
            #remaining_nodes = self.server.try_add_nodes(self.postponed_nodes, check=False)
45
            if len(remaining_nodes):
46
                raise RuntimeError(f"There are remaining nodes: {remaining_nodes!r}")
47
            async for remaining_reference in self.server.try_add_references(self.postponed_refs):
48
                remaining_refs.append(remaining_reference)
49
            #remaining_refs = list(await self.server.try_add_references(self.postponed_refs))
50
            if len(remaining_refs):
51
                raise RuntimeError(f"There are remaining refs: {remaining_refs!r}")
52
53
54
async def fill_address_space(nodeservice):
55
    async with PostponeReferences(nodeservice) as server:
56
        await create_standard_address_space_Part3(server)
57
        await create_standard_address_space_Part4(server)
58
        await create_standard_address_space_Part5(server)
59
        await create_standard_address_space_Part8(server)
60
        await create_standard_address_space_Part9(server)
61
        await create_standard_address_space_Part10(server)
62
        await create_standard_address_space_Part11(server)
63
        await create_standard_address_space_Part13(server)
64