Castle: The best Real-Time/Embedded/HighTech language EVER. Attempt 2
修訂 | 43d9cfa74f236e001b636cd47d89b714ad8f8da9 (tree) |
---|---|
時間 | 2023-10-20 22:22:22 |
作者 | Albert Mietus < albert AT mietus DOT nl > |
Commiter | Albert Mietus < albert AT mietus DOT nl > |
NameSpace/NamedNode: REFACTOR: new module: namednode - move code from init.py tp namednodes.py
@@ -1,10 +1,9 @@ | ||
1 | 1 | # (C) Albert Mietus, 2023. Part of Castle/CCastle project |
2 | 2 | |
3 | 3 | from __future__ import annotations |
4 | +from dataclasses import dataclass | |
4 | 5 | |
5 | -from dataclasses import dataclass, KW_ONLY | |
6 | -from dataclasses import field as dc_field | |
7 | -import typing as PTH # Python TypeHints | |
6 | + | |
8 | 7 | |
9 | 8 | class AIGR: # Abstract Intermediate Graph Representation |
10 | 9 | def __new__(cls, *args, **kwargs): |
@@ -12,25 +11,14 @@ | ||
12 | 11 | raise NotImplementedError(f"Instantiate a subclass of {cls}, not the `Abstract Intermediate Graph Representation`` itself") |
13 | 12 | return super().__new__(cls) |
14 | 13 | |
15 | -@dataclass | |
16 | -class NamedNode(AIGR): | |
17 | - name :str | |
18 | - _: KW_ONLY | |
19 | - _ns :PTH.Optional[NameSpace]=dc_field(init=None, default=None) #type: ignore[call-overload] | |
20 | 14 | |
21 | - def register_in_NS(self, ns): | |
22 | - self._ns = ns | |
23 | - | |
24 | - | |
25 | - | |
26 | -class NameError(AttributeError):pass | |
27 | 15 | |
28 | 16 | @dataclass |
29 | 17 | class _Marker: |
30 | 18 | msg :str="" |
31 | 19 | |
32 | - | |
33 | 20 | from .events import * |
34 | 21 | from .protocols import * |
35 | 22 | from .interfaces import * |
36 | 23 | from .namespaces import * |
24 | +from .namednodes import * |
@@ -9,8 +9,8 @@ | ||
9 | 9 | |
10 | 10 | import typing as PTH # Python TypeHints |
11 | 11 | from dataclasses import dataclass, KW_ONLY |
12 | -from . import NamedNode | |
13 | 12 | from .aid import TypedParameter # Castle/AIGR type |
13 | +from .namednodes import * | |
14 | 14 | |
15 | 15 | __all__ = ['Event'] |
16 | 16 |
@@ -4,9 +4,10 @@ | ||
4 | 4 | from enum import Enum |
5 | 5 | from dataclasses import dataclass, KW_ONLY |
6 | 6 | from dataclasses import field as dc_field |
7 | -from . import AIGR, NamedNode | |
7 | +from . import AIGR | |
8 | 8 | from .protocols import Protocol |
9 | 9 | from .aid import TypedParameter # Castle/AIGR types |
10 | +from .namednodes import * | |
10 | 11 | |
11 | 12 | __all__ = ['PortDirection', 'Port', 'ComponentInterface'] |
12 | 13 |
@@ -0,0 +1,25 @@ | ||
1 | +# (C) Albert Mietus, 2023. Part of Castle/CCastle project | |
2 | + | |
3 | +from __future__ import annotations | |
4 | + | |
5 | +__all__ = ['NameError', 'NamedNode'] | |
6 | + | |
7 | +from dataclasses import dataclass, KW_ONLY | |
8 | +from dataclasses import field as dc_field | |
9 | +import typing as PTH # Python TypeHints | |
10 | + | |
11 | +from . import AIGR | |
12 | + | |
13 | + | |
14 | + | |
15 | +class NameError(AttributeError):pass | |
16 | + | |
17 | +@dataclass | |
18 | +class NamedNode(AIGR): | |
19 | + name :str | |
20 | + _: KW_ONLY | |
21 | + _ns :PTH.Optional[NameSpace]=dc_field(init=None, default=None) #type: ignore[call-overload] | |
22 | + | |
23 | + def register_in_NS(self, ns): | |
24 | + self._ns = ns | |
25 | + |
@@ -13,11 +13,10 @@ | ||
13 | 13 | from enum import Enum |
14 | 14 | from dataclasses import dataclass, KW_ONLY |
15 | 15 | from dataclasses import field as dc_field |
16 | - | |
16 | +from .namednodes import * | |
17 | 17 | |
18 | -from . import AIGR, _Marker, NamedNode, NameError | |
18 | +from . import AIGR, _Marker | |
19 | 19 | |
20 | -#class GENERATED(_Marker):pass | |
21 | 20 | GENERATED=_Marker('No Source as it is GENERATED') |
22 | 21 | |
23 | 22 |
@@ -7,9 +7,11 @@ | ||
7 | 7 | from enum import Enum |
8 | 8 | from dataclasses import dataclass, KW_ONLY |
9 | 9 | from dataclasses import field as dc_field |
10 | -from . import AIGR, NamedNode | |
10 | +from . import AIGR | |
11 | 11 | from .events import Event |
12 | 12 | from .aid import TypedParameter, Argument # Castle/AIGR types |
13 | + | |
14 | +from .namednodes import * | |
13 | 15 | from .namespaces import NameSpace |
14 | 16 | |
15 | 17 | __all__ = ['ProtocolKind', 'Protocol', 'EventProtocol'] |