• R/O
  • SSH

Commit

Tags
No Tags

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

Revisão1e3066c73dad0715538da661a1a3b91a2726c0e6 (tree)
Hora2024-04-10 17:19:45
AutorAlbert Mietus < albert AT mietus DOT nl >
CommiterAlbert Mietus < albert AT mietus DOT nl >

Mensagem de Log

aigr.machinery now mostly done (for now)

Mudança Sumário

Diff

diff -r c5c8b6b77539 -r 1e3066c73dad base_packages/castle-aigr/Makefile
--- a/base_packages/castle-aigr/Makefile Tue Apr 09 23:08:09 2024 +0200
+++ b/base_packages/castle-aigr/Makefile Wed Apr 10 10:19:45 2024 +0200
@@ -8,6 +8,7 @@
88 pytst/test_2c_GenericProtocols.py \
99 #
1010 CURRENT = \
11+ pytst/machinery/test_0_dataclass.py \
1112 pytst/machinery/test_0.py \
1213 #
1314 TODO = \
diff -r c5c8b6b77539 -r 1e3066c73dad base_packages/castle-aigr/castle/aigr/machinery/__init__.py
--- a/base_packages/castle-aigr/castle/aigr/machinery/__init__.py Tue Apr 09 23:08:09 2024 +0200
+++ b/base_packages/castle-aigr/castle/aigr/machinery/__init__.py Wed Apr 10 10:19:45 2024 +0200
@@ -7,14 +7,15 @@
77 import typing as PTH # Python TypeHints
88
99 from .. import AIGR, Port, Event, Argument, Protocol
10-from ..develop import ToDo
10+
11+from .. import todo
1112
1213 @dataclass
1314 class machinery(AIGR):
1415 _: KW_ONLY
1516 delegate : implementation = None
1617
17-implementation : PTH.TypeAlias = PTH.Optional[type[machinery]]
18+implementation : PTH.TypeAlias = PTH.Optional[type[machinery]] # pragma: no mutate
1819
1920 @dataclass
2021 class send_proto(machinery):
@@ -22,9 +23,9 @@
2223 outport : Port
2324
2425 @dataclass
25-class sendStream(send_proto, ToDo): ...
26+class sendStream(send_proto, todo.mark_Dataclass): ...
2627 @dataclass
27-class sendData(send_proto, ToDo): ...
28+class sendData(send_proto, todo.mark_Dataclass): ...
2829
2930 @dataclass
3031 class sendEvent(send_proto):
@@ -40,7 +41,8 @@
4041 @dataclass
4142 class DispatchTable(machinery):
4243 _: KW_ONLY
43- handlers : PTH.Sequence[Handlers] # XXX Handlers not yet defined
44+ handlers : PTH.Sequence[Handler] # XXX Handlers not yet defined
45+Handler = todo.Typing #XXX Weet nog niet waar/wanneer (Event)Handlers in de AIGR komen
4446
4547 @dataclass
4648 class eDispatchTable(DispatchTable):
diff -r c5c8b6b77539 -r 1e3066c73dad base_packages/castle-aigr/castle/aigr/todo.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/base_packages/castle-aigr/castle/aigr/todo.py Wed Apr 10 10:19:45 2024 +0200
@@ -0,0 +1,17 @@
1+# (C) Albert Mietus, 2024. Part of Castle/CCastle project
2+
3+from dataclasses import dataclass
4+import typing as PTH
5+
6+@dataclass
7+class mark_Dataclass:
8+ "Mark a (data)class that is isn't Implemented yet"
9+ def __post_init__(self, *t, **d):
10+ raise NotImplementedError(f"This {type(self)} ToDo class is't supported (yet) --sorry")
11+
12+class Typing():
13+ """Specify the type is to be done"""
14+ def __new__(cls, *t, **d):
15+ return PTH.NewType('Todo', None)
16+
17+
diff -r c5c8b6b77539 -r 1e3066c73dad base_packages/castle-aigr/pytst/machinery/test_0.py
--- a/base_packages/castle-aigr/pytst/machinery/test_0.py Tue Apr 09 23:08:09 2024 +0200
+++ b/base_packages/castle-aigr/pytst/machinery/test_0.py Wed Apr 10 10:19:45 2024 +0200
@@ -68,3 +68,5 @@
6868 assert o.handlers[0] == 'callable0'
6969 assert o.handlers[1] == 'callable1'
7070 assert len(o.handlers) == 2
71+
72+
diff -r c5c8b6b77539 -r 1e3066c73dad base_packages/castle-aigr/pytst/machinery/test_0_dataclass.py
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/base_packages/castle-aigr/pytst/machinery/test_0_dataclass.py Wed Apr 10 10:19:45 2024 +0200
@@ -0,0 +1,30 @@
1+# (C) Albert Mietus, 2024. Part of Castle/CCastle project
2+
3+"""Just verify all @dataclasses are dataclasses ... Mostly for MutMut"""
4+
5+import pytest
6+import dataclasses
7+
8+from castle.aigr import machinery
9+
10+def isDataClass(cls):
11+ assert dataclasses.is_dataclass(cls) # This will also pass when cls inherits from a dataclass
12+ my_init = getattr(cls, '__init__')
13+ inherited_init = getattr(cls.mro()[1], '__init__')
14+ assert my_init is not inherited_init, f"Probably you subclasses a dataclass, but forgot @dataclass for {cls}"
15+
16+
17+def test_dataclass_all():
18+ for cls in (machinery.machinery,
19+ machinery.send_proto,
20+ machinery.sendStream,
21+ machinery.sendData,
22+ machinery.sendEvent,
23+ machinery.connection,
24+ machinery.DispatchTable,
25+ machinery.eDispatchTable,
26+ ):
27+ isDataClass(cls)
28+
29+
30+