• R/O
  • SSH

Commit

Tags
Aucun tag

Frequently used words (click to add to your profile)

javac++androidlinuxc#windowsobjective-ccocoa誰得qtpythonphprubygameguibathyscaphec計画中(planning stage)翻訳omegatframeworktwitterdomtestvb.netdirectxゲームエンジンbtronarduinopreviewer

Castle: The best Real-Time/Embedded/HighTech language EVER. Attempt 2


Commit MetaInfo

Révisionb8ac5b1d1fbce13f0f363e8322af775f7bde9efc (tree)
l'heure2024-03-10 02:20:51
AuteurAlbert Mietus < albert AT mietus DOT nl >
CommiterAlbert Mietus < albert AT mietus DOT nl >

Message de Log

improved import structure

Change Summary

Modification

diff -r b36d513ce300 -r b8ac5b1d1fbc base_packages/castle-aigr/castle/aigr/__init__.py
--- a/base_packages/castle-aigr/castle/aigr/__init__.py Sat Mar 09 17:47:02 2024 +0100
+++ b/base_packages/castle-aigr/castle/aigr/__init__.py Sat Mar 09 18:20:51 2024 +0100
@@ -21,4 +21,5 @@
2121 from .protocols import *
2222 from .interfaces import *
2323 from .namespaces import *
24-from .namednodes import *
24+from .nodes import *
25+from .aid import *
diff -r b36d513ce300 -r b8ac5b1d1fbc base_packages/castle-aigr/castle/aigr/aid.py
--- a/base_packages/castle-aigr/castle/aigr/aid.py Sat Mar 09 17:47:02 2024 +0100
+++ b/base_packages/castle-aigr/castle/aigr/aid.py Sat Mar 09 18:20:51 2024 +0100
@@ -6,9 +6,8 @@
66 from dataclasses import dataclass, KW_ONLY
77 from dataclasses import field as dc_field
88 from . import AIGR
9-from .namednodes import NamedNode
9+from .nodes import NamedNode
1010
11-__all__:PTH.List[str] = [] # Manually import what you need!
1211
1312 @dataclass
1413 class TypedParameter(AIGR):
@@ -26,20 +25,5 @@
2625 name: PTH.Optional[str]=None # XXX ToDo str or ID?
2726
2827
29-@dataclass
30-class Specialise(NamedNode):
31- _: KW_ONLY
32- based_on: NamedNode
33- arguments: PTH.Sequence[Argument]
34-
35- def __post_init__(self):
36- if not self.name: # or self.name == "":
37- self.name = f"Specialised version of {self.based_on.name}({self.arguments})"
38-
39- def __getattr__(self, name):
40- """delegate "everything" to `.`based_on``!
41- Kind of inherit, but not to superclass (Protocol), but to the instance (a Protocol) that is wrapped"""
42-
43- return getattr(self.based_on, name)
4428
4529
diff -r b36d513ce300 -r b8ac5b1d1fbc base_packages/castle-aigr/castle/aigr/events.py
--- a/base_packages/castle-aigr/castle/aigr/events.py Sat Mar 09 17:47:02 2024 +0100
+++ b/base_packages/castle-aigr/castle/aigr/events.py Sat Mar 09 18:20:51 2024 +0100
@@ -4,7 +4,7 @@
44 import typing as PTH # Python TypeHints
55 from dataclasses import dataclass, KW_ONLY
66 from .aid import TypedParameter # Castle/AIGR type
7-from .namednodes import *
7+from .nodes import *
88
99 __all__ = ['Event']
1010
diff -r b36d513ce300 -r b8ac5b1d1fbc base_packages/castle-aigr/castle/aigr/interfaces.py
--- a/base_packages/castle-aigr/castle/aigr/interfaces.py Sat Mar 09 17:47:02 2024 +0100
+++ b/base_packages/castle-aigr/castle/aigr/interfaces.py Sat Mar 09 18:20:51 2024 +0100
@@ -7,7 +7,7 @@
77 from . import AIGR
88 from .protocols import Protocol
99 from .aid import TypedParameter # Castle/AIGR types
10-from .namednodes import NamedNode, ID
10+from .nodes import NamedNode, ID
1111
1212 __all__ = ['PortDirection', 'Port', 'ComponentInterface']
1313
diff -r b36d513ce300 -r b8ac5b1d1fbc base_packages/castle-aigr/castle/aigr/namednodes.py
--- a/base_packages/castle-aigr/castle/aigr/namednodes.py Sat Mar 09 17:47:02 2024 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,35 +0,0 @@
1-# (C) Albert Mietus, 2023. Part of Castle/CCastle project
2-
3-from __future__ import annotations
4-
5-__all__ = ['NameError', 'NamedNode', 'ID']
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-class NameError(AttributeError):pass
15-
16-class ID(str): pass #XXX for now and ID is a string, but that can be changed
17-
18-@dataclass
19-class NamedNode(AIGR):
20- name : ID|str
21- _: KW_ONLY
22- # type(_ns) is NamedNode, but that leads to a imports-cycle. So, use te more generic AIGR
23- _ns :PTH.Optional[AIGR]=dc_field(init=None, default=None) #type: ignore[call-overload]
24-
25- def __post_init__(self):
26- if not isinstance(self.name, ID):
27- self.name = ID(self.name)
28-
29- def register_in_NS(self, ns: AIGR): #same: type(ns) is NameSpace, but ...
30- self._ns = ns
31-
32- @property
33- def ns(self):
34- return self._ns
35-
diff -r b36d513ce300 -r b8ac5b1d1fbc base_packages/castle-aigr/castle/aigr/namespaces.py
--- a/base_packages/castle-aigr/castle/aigr/namespaces.py Sat Mar 09 17:47:02 2024 +0100
+++ b/base_packages/castle-aigr/castle/aigr/namespaces.py Sat Mar 09 18:20:51 2024 +0100
@@ -14,7 +14,7 @@
1414 from dataclasses import dataclass, KW_ONLY
1515 from dataclasses import field as dc_field
1616
17-from .namednodes import NamedNode, NameError, ID
17+from .nodes import NamedNode, NameError, ID
1818
1919 from . import AIGR, _Marker
2020
diff -r b36d513ce300 -r b8ac5b1d1fbc base_packages/castle-aigr/castle/aigr/nodes.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/base_packages/castle-aigr/castle/aigr/nodes.py Sat Mar 09 18:20:51 2024 +0100
@@ -0,0 +1,49 @@
1+# (C) Albert Mietus, 2023. Part of Castle/CCastle project
2+
3+from __future__ import annotations
4+
5+from dataclasses import dataclass, KW_ONLY
6+from dataclasses import field as dc_field
7+import typing as PTH # Python TypeHints
8+
9+from . import AIGR
10+
11+class ID(str): pass #XXX for now and ID is a string, but that can be changed
12+
13+
14+class NameError(AttributeError):pass
15+
16+
17+@dataclass
18+class NamedNode(AIGR):
19+ name : ID|str
20+ _: KW_ONLY
21+ # type(_ns) is NamedNode, but that leads to a imports-cycle. So, use te more generic AIGR
22+ _ns :PTH.Optional[AIGR]=dc_field(init=None, default=None) #type: ignore[call-overload]
23+
24+ def __post_init__(self):
25+ if not isinstance(self.name, ID):
26+ self.name = ID(self.name)
27+
28+ def register_in_NS(self, ns: AIGR): #same: type(ns) is NameSpace, but ...
29+ self._ns = ns
30+
31+ @property
32+ def ns(self):
33+ return self._ns
34+
35+@dataclass
36+class Specialise(NamedNode):
37+ _: KW_ONLY
38+ based_on: NamedNode
39+ arguments: PTH.Sequence[Argument]
40+
41+ def __post_init__(self):
42+ if not self.name: # or self.name == "":
43+ self.name = f"Specialised version of {self.based_on.name}({self.arguments})"
44+
45+ def __getattr__(self, name):
46+ """delegate "everything" to `.`based_on``!
47+ Kind of inherit, but not to superclass (Protocol), but to the instance (a Protocol) that is wrapped"""
48+
49+ return getattr(self.based_on, name)
diff -r b36d513ce300 -r b8ac5b1d1fbc base_packages/castle-aigr/castle/aigr/protocols.py
--- a/base_packages/castle-aigr/castle/aigr/protocols.py Sat Mar 09 17:47:02 2024 +0100
+++ b/base_packages/castle-aigr/castle/aigr/protocols.py Sat Mar 09 18:20:51 2024 +0100
@@ -10,8 +10,8 @@
1010 from . import AIGR
1111 from .events import Event
1212 from .aid import TypedParameter, Argument # Castle/AIGR types
13-from .namednodes import NamedNode, ID
14-from .aid import Specialise
13+from .nodes import NamedNode, ID
14+
1515
1616
1717 __all__ = ['ProtocolKind', 'Protocol', 'EventProtocol']
diff -r b36d513ce300 -r b8ac5b1d1fbc base_packages/castle-aigr/pytst/test_1_events.py
--- a/base_packages/castle-aigr/pytst/test_1_events.py Sat Mar 09 17:47:02 2024 +0100
+++ b/base_packages/castle-aigr/pytst/test_1_events.py Sat Mar 09 18:20:51 2024 +0100
@@ -1,7 +1,7 @@
11 # (C) Albert Mietus, 2023. Part of Castle/CCastle project
22
33 from castle.aigr import Event
4-from castle.aigr.aid import TypedParameter
4+from castle.aigr import TypedParameter
55
66
77 def test_0_Event_empty():
diff -r b36d513ce300 -r b8ac5b1d1fbc base_packages/castle-aigr/pytst/test_2b_protocol.py
--- a/base_packages/castle-aigr/pytst/test_2b_protocol.py Sat Mar 09 17:47:02 2024 +0100
+++ b/base_packages/castle-aigr/pytst/test_2b_protocol.py Sat Mar 09 18:20:51 2024 +0100
@@ -5,7 +5,7 @@
55
66 from castle.aigr import Protocol, ProtocolKind
77 from castle.aigr import Event, EventProtocol
8-from castle.aigr.aid import TypedParameter
8+from castle.aigr import TypedParameter
99
1010
1111 @pytest.fixture
@@ -32,12 +32,12 @@
3232
3333
3434 def test_2a_based_onRoot(emptyProtocol):
35- import castle.aigr.protocols
36- emptyProtocol.based_on is castle.aigr.protocols._RootProtocol
35+ from castle.aigr.protocols import _RootProtocol # Only available when imported
36+ emptyProtocol.based_on is _RootProtocol
3737
3838 def test_2b_based_onRoot_notSet(emptyProtocol_baseNotSet):
39- import castle.aigr.protocols
40- emptyProtocol_baseNotSet.based_on is castle.aigr.protocols._RootProtocol
39+ from castle.aigr.protocols import _RootProtocol # Only available when imported
40+ emptyProtocol_baseNotSet.based_on is _RootProtocol
4141
4242
4343 def test_3a_eventIndex_empty(emptyProtocol, anEvent):
diff -r b36d513ce300 -r b8ac5b1d1fbc base_packages/castle-aigr/pytst/test_2c_GenericProtocols.py
--- a/base_packages/castle-aigr/pytst/test_2c_GenericProtocols.py Sat Mar 09 17:47:02 2024 +0100
+++ b/base_packages/castle-aigr/pytst/test_2c_GenericProtocols.py Sat Mar 09 18:20:51 2024 +0100
@@ -49,7 +49,7 @@
4949
5050 from castle.aigr import Protocol, ProtocolKind
5151 from castle.aigr import Event, EventProtocol
52-from castle.aigr.aid import TypedParameter, Argument, Specialise
52+from castle.aigr import TypedParameter, Argument, Specialise
5353
5454 """ There are a few cases
5555 ///CastleCode
diff -r b36d513ce300 -r b8ac5b1d1fbc base_packages/castle-aigr/pytst/test_3_namespaces.py
--- a/base_packages/castle-aigr/pytst/test_3_namespaces.py Sat Mar 09 17:47:02 2024 +0100
+++ b/base_packages/castle-aigr/pytst/test_3_namespaces.py Sat Mar 09 18:20:51 2024 +0100
@@ -8,8 +8,8 @@
88
99 from castle.aigr import NameSpace, Source_NS
1010
11-from castle.aigr.namespaces import NamedNode ## May be moved ip
12-from castle.aigr.namespaces import NameError
11+from castle.aigr import NamedNode, NameError
12+
1313
1414 @dataclass
1515 class DummyNode(NamedNode):
diff -r b36d513ce300 -r b8ac5b1d1fbc base_packages/castle-aigr/pytst/test_SpecialiseGenerics.py
--- a/base_packages/castle-aigr/pytst/test_SpecialiseGenerics.py Sat Mar 09 17:47:02 2024 +0100
+++ b/base_packages/castle-aigr/pytst/test_SpecialiseGenerics.py Sat Mar 09 18:20:51 2024 +0100
@@ -2,9 +2,9 @@
22
33 import pytest
44
5-from castle.aigr import AIGR, NamedNode
6-from castle.aigr.aid import TypedParameter, Argument
7-from castle.aigr.aid import Specialise
5+from castle.aigr import AIGR, NamedNode, Specialise
6+from castle.aigr import TypedParameter, Argument
7+
88
99 @pytest.fixture
1010 def named_node():