wirely 0.1.1__tar.gz → 0.1.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (352) hide show
  1. wirely-0.1.2/CHANGELOG.md +244 -0
  2. {wirely-0.1.1/wirely.egg-info → wirely-0.1.2}/PKG-INFO +21 -1
  3. {wirely-0.1.1 → wirely-0.1.2}/README.md +19 -0
  4. wirely-0.1.2/doc/bytecode-format.md +1187 -0
  5. wirely-0.1.2/doc/control-protocol.md +367 -0
  6. wirely-0.1.2/doc/language.md +569 -0
  7. {wirely-0.1.1 → wirely-0.1.2}/doc/libraries.md +97 -46
  8. {wirely-0.1.1 → wirely-0.1.2}/doc/native-python.md +136 -53
  9. {wirely-0.1.1 → wirely-0.1.2}/doc/value-types.md +148 -51
  10. {wirely-0.1.1 → wirely-0.1.2}/doc/wirely-style.md +42 -24
  11. wirely-0.1.2/examples/delay.wrl +7 -0
  12. wirely-0.1.2/examples/flipflop.wrl +14 -0
  13. wirely-0.1.2/examples/gpio.wrl +9 -0
  14. wirely-0.1.2/examples/knx.wrl +32 -0
  15. wirely-0.1.2/examples/test.wrl +86 -0
  16. {wirely-0.1.1 → wirely-0.1.2}/pyproject.toml +2 -1
  17. wirely-0.1.2/test/compiler/arithmetic.wrl +67 -0
  18. wirely-0.1.2/test/compiler/assertions.wrl +37 -0
  19. wirely-0.1.2/test/compiler/attributes.wrl +97 -0
  20. wirely-0.1.2/test/compiler/constants.wrl +83 -0
  21. wirely-0.1.2/test/compiler/conversions.wrl +47 -0
  22. wirely-0.1.2/test/compiler/durations.wrl +38 -0
  23. wirely-0.1.2/test/compiler/equality.wrl +59 -0
  24. wirely-0.1.2/test/compiler/library_settings.wrl +91 -0
  25. wirely-0.1.2/test/compiler/literals.wrl +114 -0
  26. wirely-0.1.1/test/unit/nested_library.wrl → wirely-0.1.2/test/compiler/namespaces.wrl +5 -5
  27. wirely-0.1.2/test/compiler/native_functions.wrl +15 -0
  28. wirely-0.1.2/test/compiler/options.wrl +62 -0
  29. wirely-0.1.2/test/compiler/ordering.wrl +19 -0
  30. wirely-0.1.2/test/compiler/parameters.wrl +155 -0
  31. wirely-0.1.2/test/compiler/path.wrl +21 -0
  32. wirely-0.1.2/test/compiler/prepared_configuration.wrl +28 -0
  33. wirely-0.1.2/test/compiler/runtime_limits.wrl +163 -0
  34. wirely-0.1.2/test/compiler/structs.wrl +45 -0
  35. wirely-0.1.2/test/compiler/syntax.wrl +178 -0
  36. wirely-0.1.2/test/compiler/time_of_day.wrl +35 -0
  37. wirely-0.1.2/test/compiler/types.wrl +181 -0
  38. wirely-0.1.2/test/negative/arithmetic.wrl +88 -0
  39. wirely-0.1.2/test/negative/assertions.wrl +110 -0
  40. {wirely-0.1.1 → wirely-0.1.2}/test/negative/attributes.wrl +63 -21
  41. wirely-0.1.2/test/negative/connections.wrl +119 -0
  42. wirely-0.1.2/test/negative/constants.wrl +194 -0
  43. wirely-0.1.2/test/negative/conversions.wrl +43 -0
  44. wirely-0.1.2/test/negative/durations.wrl +45 -0
  45. {wirely-0.1.1 → wirely-0.1.2}/test/negative/enum_declarations.wrl +42 -21
  46. wirely-0.1.2/test/negative/enum_literals.wrl +34 -0
  47. wirely-0.1.2/test/negative/integer_literals.wrl +182 -0
  48. wirely-0.1.2/test/negative/library_settings.wrl +138 -0
  49. wirely-0.1.2/test/negative/monotonic_time.wrl +51 -0
  50. wirely-0.1.2/test/negative/native_functions.wrl +97 -0
  51. {wirely-0.1.1 → wirely-0.1.2}/test/negative/native_initializers.wrl +5 -4
  52. {wirely-0.1.1 → wirely-0.1.2}/test/negative/native_procedures.wrl +0 -16
  53. wirely-0.1.2/test/negative/native_values.wrl +96 -0
  54. wirely-0.1.2/test/negative/node_declarations.wrl +47 -0
  55. {wirely-0.1.1 → wirely-0.1.2}/test/negative/node_types.wrl +2 -2
  56. wirely-0.1.2/test/negative/option_literals.wrl +39 -0
  57. wirely-0.1.2/test/negative/option_properties.wrl +146 -0
  58. wirely-0.1.2/test/negative/optional_forwarding.wrl +121 -0
  59. wirely-0.1.2/test/negative/optional_outputs.wrl +59 -0
  60. wirely-0.1.2/test/negative/options.wrl +115 -0
  61. {wirely-0.1.1 → wirely-0.1.2}/test/negative/parameters.wrl +10 -5
  62. wirely-0.1.2/test/negative/path.wrl +46 -0
  63. wirely-0.1.2/test/negative/prepared_configuration.wrl +61 -0
  64. {wirely-0.1.1 → wirely-0.1.2}/test/negative/procedure_bindings.wrl +14 -22
  65. wirely-0.1.2/test/negative/procedures.wrl +393 -0
  66. wirely-0.1.2/test/negative/resource_connections.wrl +157 -0
  67. {wirely-0.1.1 → wirely-0.1.2}/test/negative/resource_declarations.wrl +4 -4
  68. {wirely-0.1.1 → wirely-0.1.2}/test/negative/resource_value_types.wrl +3 -3
  69. wirely-0.1.2/test/negative/runtime_limits.wrl +430 -0
  70. {wirely-0.1.1 → wirely-0.1.2}/test/negative/runtime_types.wrl +16 -9
  71. wirely-0.1.2/test/negative/state_connections.wrl +262 -0
  72. {wirely-0.1.1 → wirely-0.1.2}/test/negative/string_literals.wrl +4 -4
  73. {wirely-0.1.1 → wirely-0.1.2}/test/negative/structs.wrl +85 -35
  74. wirely-0.1.2/test/negative/syntax_lists.wrl +59 -0
  75. wirely-0.1.2/test/negative/time_of_day.wrl +25 -0
  76. wirely-0.1.2/test/negative/type_comparisons.wrl +163 -0
  77. wirely-0.1.2/test/negative/unit_literals.wrl +7 -0
  78. wirely-0.1.2/test/negative/weak_keywords.wrl +48 -0
  79. wirely-0.1.2/test/unit/attribute_editing.py +151 -0
  80. wirely-0.1.2/test/unit/attribute_editing.wrl +1 -0
  81. wirely-0.1.2/test/unit/container.py +115 -0
  82. wirely-0.1.2/test/unit/container.wrl +1 -0
  83. wirely-0.1.2/test/unit/control.py +237 -0
  84. wirely-0.1.2/test/unit/control.wrl +4 -0
  85. wirely-0.1.2/test/unit/equality.py +82 -0
  86. wirely-0.1.2/test/unit/equality.wrl +81 -0
  87. wirely-0.1.2/test/unit/instructions.py +408 -0
  88. wirely-0.1.2/test/unit/instructions.wrl +1 -0
  89. wirely-0.1.2/test/unit/library_configuration.py +216 -0
  90. wirely-0.1.2/test/unit/library_configuration.wrl +1 -0
  91. wirely-0.1.2/test/unit/native_interface.py +778 -0
  92. wirely-0.1.2/test/unit/native_interface.wrl +1 -0
  93. wirely-0.1.2/test/unit/native_values.py +193 -0
  94. wirely-0.1.2/test/unit/native_values.wrl +4 -0
  95. {wirely-0.1.1 → wirely-0.1.2}/test/unit/negative_cases.py +42 -100
  96. wirely-0.1.2/test/unit/procedures.py +536 -0
  97. wirely-0.1.2/test/unit/procedures.wrl +332 -0
  98. wirely-0.1.2/test/unit/resources.py +219 -0
  99. wirely-0.1.2/test/unit/resources.wrl +1 -0
  100. wirely-0.1.2/test/unit/runtime_program.py +129 -0
  101. wirely-0.1.2/test/unit/runtime_program.wrl +20 -0
  102. wirely-0.1.2/test/unit/serialization.py +238 -0
  103. wirely-0.1.2/test/unit/serialization.wrl +1 -0
  104. wirely-0.1.2/test/unit/shuffle.py +110 -0
  105. wirely-0.1.2/test/unit/shuffle.wrl +1 -0
  106. wirely-0.1.2/test/unit/state_connections.py +401 -0
  107. wirely-0.1.2/test/unit/state_connections.wrl +1 -0
  108. wirely-0.1.2/test/unit/test_resources.py +226 -0
  109. wirely-0.1.2/test/unit/test_resources.wrl +1 -0
  110. wirely-0.1.2/test/unit/types.py +390 -0
  111. wirely-0.1.2/test/unit/types.wrl +1 -0
  112. wirely-0.1.2/test/wrl/abb.wrl +8 -0
  113. wirely-0.1.2/test/wrl/and.wrl +14 -0
  114. {wirely-0.1.1 → wirely-0.1.2}/test/wrl/csv.py +15 -14
  115. wirely-0.1.2/test/wrl/csv.wrl +15 -0
  116. {wirely-0.1.1 → wirely-0.1.2}/test/wrl/delay.py +0 -2
  117. wirely-0.1.2/test/wrl/delay.wrl +13 -0
  118. wirely-0.1.2/test/wrl/flipflop.wrl +9 -0
  119. {wirely-0.1.1 → wirely-0.1.2}/test/wrl/gpio.py +4 -2
  120. wirely-0.1.2/test/wrl/gpio.wrl +9 -0
  121. {wirely-0.1.1 → wirely-0.1.2}/test/wrl/knx.py +12 -12
  122. wirely-0.1.2/test/wrl/knx.wrl +107 -0
  123. {wirely-0.1.1 → wirely-0.1.2}/test/wrl/knx_time.py +3 -3
  124. wirely-0.1.2/test/wrl/knx_time.wrl +13 -0
  125. {wirely-0.1.1 → wirely-0.1.2}/test/wrl/mqtt.py +4 -4
  126. wirely-0.1.2/test/wrl/mqtt.wrl +104 -0
  127. wirely-0.1.2/test/wrl/option.wrl +25 -0
  128. wirely-0.1.1/test/wrl/ext_prog.py → wirely-0.1.2/test/wrl/process.py +2 -1
  129. wirely-0.1.2/test/wrl/process.wrl +3 -0
  130. wirely-0.1.2/test/wrl/simple.wrl +3 -0
  131. wirely-0.1.2/test/wrl/std.wrl +10 -0
  132. {wirely-0.1.1 → wirely-0.1.2}/test/wrl/time.py +64 -51
  133. wirely-0.1.2/test/wrl/time.wrl +24 -0
  134. wirely-0.1.2/test/wrl/two_n.wrl +50 -0
  135. {wirely-0.1.1 → wirely-0.1.2}/tools/run-tests +7 -2
  136. wirely-0.1.2/wirely/__init__.py +10 -0
  137. {wirely-0.1.1 → wirely-0.1.2}/wirely/__main__.py +22 -0
  138. wirely-0.1.2/wirely/cli/client.py +141 -0
  139. {wirely-0.1.1 → wirely-0.1.2}/wirely/cli/graphviz.py +7 -2
  140. wirely-0.1.2/wirely/cli/objdump.py +47 -0
  141. {wirely-0.1.1 → wirely-0.1.2}/wirely/cli/run.py +2 -1
  142. wirely-0.1.2/wirely/cli/service.py +93 -0
  143. {wirely-0.1.1 → wirely-0.1.2}/wirely/compiler/__init__.py +44 -29
  144. {wirely-0.1.1 → wirely-0.1.2}/wirely/compiler/ast.py +412 -67
  145. wirely-0.1.2/wirely/compiler/attribute_editing.py +305 -0
  146. {wirely-0.1.1 → wirely-0.1.2}/wirely/compiler/attributes.py +15 -1
  147. {wirely-0.1.1 → wirely-0.1.2}/wirely/compiler/block.py +125 -96
  148. {wirely-0.1.1 → wirely-0.1.2}/wirely/compiler/block_type.py +38 -54
  149. wirely-0.1.2/wirely/compiler/blocks.lark +257 -0
  150. wirely-0.1.2/wirely/compiler/diagnostics.py +59 -0
  151. wirely-0.1.2/wirely/compiler/expressions.py +1094 -0
  152. wirely-0.1.2/wirely/compiler/function_implementations/__init__.py +1 -0
  153. wirely-0.1.2/wirely/compiler/function_implementations/csv.py +5 -0
  154. wirely-0.1.2/wirely/compiler/function_implementations/knx.py +32 -0
  155. wirely-0.1.2/wirely/compiler/function_implementations/mqtt.py +86 -0
  156. wirely-0.1.2/wirely/compiler/function_implementations/path.py +19 -0
  157. wirely-0.1.2/wirely/compiler/function_implementations/test.py +66 -0
  158. wirely-0.1.2/wirely/compiler/function_implementations/time.py +2 -0
  159. wirely-0.1.2/wirely/compiler/function_implementations/two_n.py +27 -0
  160. {wirely-0.1.1 → wirely-0.1.2}/wirely/compiler/model.py +9 -7
  161. wirely-0.1.2/wirely/compiler/native_functions.py +184 -0
  162. {wirely-0.1.1 → wirely-0.1.2}/wirely/compiler/node.py +4 -4
  163. wirely-0.1.2/wirely/compiler/parameters.py +102 -0
  164. {wirely-0.1.1 → wirely-0.1.2}/wirely/compiler/parser.py +29 -5
  165. {wirely-0.1.1 → wirely-0.1.2}/wirely/compiler/program.py +141 -58
  166. wirely-0.1.2/wirely/compiler/shuffle.py +73 -0
  167. wirely-0.1.2/wirely/compiler/static_bindings.py +24 -0
  168. {wirely-0.1.1 → wirely-0.1.2}/wirely/compiler/support.py +25 -5
  169. {wirely-0.1.1 → wirely-0.1.2}/wirely/compiler/types.py +31 -7
  170. {wirely-0.1.1 → wirely-0.1.2}/wirely/compiler/value.py +71 -42
  171. wirely-0.1.2/wirely/control/client.py +136 -0
  172. wirely-0.1.2/wirely/control/controller.py +103 -0
  173. wirely-0.1.2/wirely/control/framing.py +127 -0
  174. wirely-0.1.2/wirely/control/messages.py +146 -0
  175. wirely-0.1.2/wirely/control/server.py +274 -0
  176. wirely-0.1.2/wirely/functions/__init__.py +80 -0
  177. wirely-0.1.2/wirely/functions/duration.py +112 -0
  178. wirely-0.1.2/wirely/functions/monotonic_time.py +65 -0
  179. wirely-0.1.2/wirely/functions/test_library.py +23 -0
  180. wirely-0.1.2/wirely/functions/time_of_day.py +34 -0
  181. {wirely-0.1.1 → wirely-0.1.2}/wirely/lib/abb_jra.wrl +13 -13
  182. {wirely-0.1.1 → wirely-0.1.2}/wirely/lib/csv.wrl +12 -5
  183. wirely-0.1.2/wirely/lib/gpio.wrl +39 -0
  184. wirely-0.1.2/wirely/lib/knx.wrl +128 -0
  185. {wirely-0.1.1 → wirely-0.1.2}/wirely/lib/memory.wrl +14 -19
  186. wirely-0.1.2/wirely/lib/mqtt.wrl +108 -0
  187. wirely-0.1.2/wirely/lib/path.wrl +5 -0
  188. wirely-0.1.1/wirely/lib/ext_prog.wrl → wirely-0.1.2/wirely/lib/process.wrl +5 -3
  189. wirely-0.1.2/wirely/lib/std.wrl +199 -0
  190. wirely-0.1.2/wirely/lib/test.wrl +8 -0
  191. {wirely-0.1.1 → wirely-0.1.2}/wirely/lib/time.wrl +49 -34
  192. {wirely-0.1.1 → wirely-0.1.2}/wirely/lib/two_n.wrl +43 -32
  193. wirely-0.1.2/wirely/misc/state_directory.py +49 -0
  194. {wirely-0.1.1 → wirely-0.1.2}/wirely/native/__init__.py +3 -4
  195. {wirely-0.1.1 → wirely-0.1.2}/wirely/native/abb_jra.py +2 -2
  196. {wirely-0.1.1 → wirely-0.1.2}/wirely/native/csv.py +11 -20
  197. {wirely-0.1.1 → wirely-0.1.2}/wirely/native/gpio.py +13 -42
  198. {wirely-0.1.1 → wirely-0.1.2}/wirely/native/knx.py +37 -62
  199. {wirely-0.1.1 → wirely-0.1.2}/wirely/native/memory.py +11 -28
  200. {wirely-0.1.1 → wirely-0.1.2}/wirely/native/mqtt.py +69 -130
  201. wirely-0.1.1/wirely/native/ext_prog.py → wirely-0.1.2/wirely/native/process.py +7 -14
  202. {wirely-0.1.1 → wirely-0.1.2}/wirely/native/std.py +29 -46
  203. {wirely-0.1.1 → wirely-0.1.2}/wirely/native/test_library.py +2 -2
  204. {wirely-0.1.1 → wirely-0.1.2}/wirely/native/time.py +37 -68
  205. {wirely-0.1.1 → wirely-0.1.2}/wirely/native/two_n.py +57 -145
  206. wirely-0.1.2/wirely/program/__init__.py +12 -0
  207. wirely-0.1.2/wirely/program/container.py +116 -0
  208. wirely-0.1.2/wirely/program/limits.py +5 -0
  209. wirely-0.1.2/wirely/program/procedures.py +121 -0
  210. {wirely-0.1.1/wirely → wirely-0.1.2/wirely/program}/program.py +62 -37
  211. wirely-0.1.2/wirely/program/validation.py +188 -0
  212. wirely-0.1.2/wirely/runtime/__init__.py +1 -0
  213. {wirely-0.1.1 → wirely-0.1.2}/wirely/runtime/contexts.py +19 -24
  214. {wirely-0.1.1 → wirely-0.1.2}/wirely/runtime/engine.py +82 -50
  215. wirely-0.1.2/wirely/runtime/linking.py +81 -0
  216. wirely-0.1.2/wirely/runtime/procedures.py +105 -0
  217. wirely-0.1.2/wirely/test.py +646 -0
  218. wirely-0.1.2/wirely/two_n/__init__.py +0 -0
  219. {wirely-0.1.1 → wirely-0.1.2}/wirely/two_n/cert.py +1 -0
  220. {wirely-0.1.1 → wirely-0.1.2}/wirely/two_n/fake_server.py +44 -34
  221. {wirely-0.1.1 → wirely-0.1.2}/wirely/types/__init__.py +227 -16
  222. {wirely-0.1.1 → wirely-0.1.2}/wirely/types/serialization.py +46 -53
  223. {wirely-0.1.1 → wirely-0.1.2}/wirely/types/time.py +82 -25
  224. {wirely-0.1.1 → wirely-0.1.2}/wirely/types/value_types.py +1 -9
  225. {wirely-0.1.1 → wirely-0.1.2/wirely.egg-info}/PKG-INFO +21 -1
  226. {wirely-0.1.1 → wirely-0.1.2}/wirely.egg-info/SOURCES.txt +109 -44
  227. {wirely-0.1.1 → wirely-0.1.2}/wirely.egg-info/requires.txt +1 -0
  228. wirely-0.1.1/CHANGELOG.md +0 -116
  229. wirely-0.1.1/doc/bytecode-format.md +0 -710
  230. wirely-0.1.1/doc/language.md +0 -297
  231. wirely-0.1.1/examples/delay.wrl +0 -7
  232. wirely-0.1.1/examples/flipflop.wrl +0 -14
  233. wirely-0.1.1/examples/gpio.wrl +0 -9
  234. wirely-0.1.1/examples/knx.wrl +0 -32
  235. wirely-0.1.1/examples/test.wrl +0 -86
  236. wirely-0.1.1/test/negative/enum_literals.wrl +0 -34
  237. wirely-0.1.1/test/negative/integer_literals.wrl +0 -167
  238. wirely-0.1.1/test/negative/option_literals.wrl +0 -39
  239. wirely-0.1.1/test/negative/resource_connections.wrl +0 -102
  240. wirely-0.1.1/test/negative/state_connections.wrl +0 -243
  241. wirely-0.1.1/test/negative/unit_literals.wrl +0 -7
  242. wirely-0.1.1/test/unit/attributes.py +0 -298
  243. wirely-0.1.1/test/unit/attributes.wrl +0 -4
  244. wirely-0.1.1/test/unit/bytecode_format.py +0 -34
  245. wirely-0.1.1/test/unit/bytecode_format.wrl +0 -1
  246. wirely-0.1.1/test/unit/compiler.wrl +0 -8
  247. wirely-0.1.1/test/unit/enum_declarations.py +0 -90
  248. wirely-0.1.1/test/unit/enum_declarations.wrl +0 -55
  249. wirely-0.1.1/test/unit/enum_literals.py +0 -66
  250. wirely-0.1.1/test/unit/enum_literals.wrl +0 -57
  251. wirely-0.1.1/test/unit/integer_literals.py +0 -53
  252. wirely-0.1.1/test/unit/integer_literals.wrl +0 -28
  253. wirely-0.1.1/test/unit/native_configuration.py +0 -259
  254. wirely-0.1.1/test/unit/native_configuration.wrl +0 -1
  255. wirely-0.1.1/test/unit/native_interface.py +0 -830
  256. wirely-0.1.1/test/unit/native_interface.wrl +0 -6
  257. wirely-0.1.1/test/unit/native_parameters.py +0 -293
  258. wirely-0.1.1/test/unit/native_parameters.wrl +0 -49
  259. wirely-0.1.1/test/unit/native_procedures.py +0 -230
  260. wirely-0.1.1/test/unit/native_procedures.wrl +0 -1
  261. wirely-0.1.1/test/unit/option_literals.py +0 -49
  262. wirely-0.1.1/test/unit/option_literals.wrl +0 -70
  263. wirely-0.1.1/test/unit/parser.wrl +0 -4
  264. wirely-0.1.1/test/unit/resources.py +0 -369
  265. wirely-0.1.1/test/unit/resources.wrl +0 -80
  266. wirely-0.1.1/test/unit/runtime_program.py +0 -352
  267. wirely-0.1.1/test/unit/runtime_program.wrl +0 -20
  268. wirely-0.1.1/test/unit/state_connections.py +0 -474
  269. wirely-0.1.1/test/unit/state_connections.wrl +0 -2
  270. wirely-0.1.1/test/unit/string_literals.py +0 -71
  271. wirely-0.1.1/test/unit/string_literals.wrl +0 -14
  272. wirely-0.1.1/test/unit/structs.py +0 -155
  273. wirely-0.1.1/test/unit/structs.wrl +0 -90
  274. wirely-0.1.1/test/unit/types.py +0 -387
  275. wirely-0.1.1/test/unit/types.wrl +0 -4
  276. wirely-0.1.1/test/unit/unit_literals.py +0 -67
  277. wirely-0.1.1/test/unit/unit_literals.wrl +0 -14
  278. wirely-0.1.1/test/wrl/abb.wrl +0 -8
  279. wirely-0.1.1/test/wrl/and.wrl +0 -14
  280. wirely-0.1.1/test/wrl/csv.wrl +0 -12
  281. wirely-0.1.1/test/wrl/delay.wrl +0 -13
  282. wirely-0.1.1/test/wrl/ext_prog.wrl +0 -3
  283. wirely-0.1.1/test/wrl/flipflop.wrl +0 -9
  284. wirely-0.1.1/test/wrl/gpio.wrl +0 -9
  285. wirely-0.1.1/test/wrl/knx.wrl +0 -104
  286. wirely-0.1.1/test/wrl/knx_time.wrl +0 -11
  287. wirely-0.1.1/test/wrl/mqtt.wrl +0 -90
  288. wirely-0.1.1/test/wrl/option.wrl +0 -25
  289. wirely-0.1.1/test/wrl/simple.wrl +0 -3
  290. wirely-0.1.1/test/wrl/std.wrl +0 -10
  291. wirely-0.1.1/test/wrl/time.wrl +0 -20
  292. wirely-0.1.1/test/wrl/two_n.wrl +0 -46
  293. wirely-0.1.1/wirely/__init__.py +0 -16
  294. wirely-0.1.1/wirely/cli/service.py +0 -66
  295. wirely-0.1.1/wirely/compiler/blocks.lark +0 -166
  296. wirely-0.1.1/wirely/compiler/native.py +0 -45
  297. wirely-0.1.1/wirely/compiler/native_configuration.py +0 -80
  298. wirely-0.1.1/wirely/compiler/native_preparation/__init__.py +0 -1
  299. wirely-0.1.1/wirely/compiler/native_preparation/csv.py +0 -18
  300. wirely-0.1.1/wirely/compiler/native_preparation/ext_prog.py +0 -14
  301. wirely-0.1.1/wirely/compiler/native_preparation/gpio.py +0 -30
  302. wirely-0.1.1/wirely/compiler/native_preparation/knx.py +0 -37
  303. wirely-0.1.1/wirely/compiler/native_preparation/memory.py +0 -30
  304. wirely-0.1.1/wirely/compiler/native_preparation/mqtt.py +0 -33
  305. wirely-0.1.1/wirely/compiler/native_preparation/std.py +0 -17
  306. wirely-0.1.1/wirely/compiler/native_preparation/time.py +0 -47
  307. wirely-0.1.1/wirely/compiler/native_preparation/two_n.py +0 -69
  308. wirely-0.1.1/wirely/compiler/parameters.py +0 -95
  309. wirely-0.1.1/wirely/lib/gpio.wrl +0 -24
  310. wirely-0.1.1/wirely/lib/knx.wrl +0 -87
  311. wirely-0.1.1/wirely/lib/mqtt.wrl +0 -77
  312. wirely-0.1.1/wirely/lib/std.wrl +0 -153
  313. wirely-0.1.1/wirely/runtime/__init__.py +0 -4
  314. wirely-0.1.1/wirely/test.py +0 -610
  315. {wirely-0.1.1 → wirely-0.1.2}/LICENSE +0 -0
  316. {wirely-0.1.1 → wirely-0.1.2}/MANIFEST.in +0 -0
  317. {wirely-0.1.1 → wirely-0.1.2}/doc/README.md +0 -0
  318. {wirely-0.1.1 → wirely-0.1.2}/doc/python-style.md +0 -0
  319. {wirely-0.1.1 → wirely-0.1.2}/setup.cfg +0 -0
  320. {wirely-0.1.1 → wirely-0.1.2}/test/unit/negative_cases.wrl +0 -0
  321. {wirely-0.1.1 → wirely-0.1.2}/test/wrl/abb.py +0 -0
  322. {wirely-0.1.1 → wirely-0.1.2}/test/wrl/and.py +0 -0
  323. {wirely-0.1.1 → wirely-0.1.2}/test/wrl/flipflop.py +0 -0
  324. {wirely-0.1.1 → wirely-0.1.2}/test/wrl/option.py +0 -0
  325. {wirely-0.1.1 → wirely-0.1.2}/test/wrl/std.py +0 -0
  326. {wirely-0.1.1 → wirely-0.1.2}/test/wrl/two_n.py +0 -0
  327. {wirely-0.1.1 → wirely-0.1.2}/test/wrl/username_password.txt +0 -0
  328. {wirely-0.1.1 → wirely-0.1.2}/tools/build-pex +0 -0
  329. {wirely-0.1.1 → wirely-0.1.2}/tools/git_write_wd_tree.py +0 -0
  330. {wirely-0.1.1 → wirely-0.1.2}/tools/run-tests-dependencies +0 -0
  331. {wirely-0.1.1 → wirely-0.1.2}/tools/setup-venv +0 -0
  332. {wirely-0.1.1 → wirely-0.1.2}/tools/test-gitlab-ci +0 -0
  333. {wirely-0.1.1 → wirely-0.1.2}/tools/wirely +0 -0
  334. {wirely-0.1.1 → wirely-0.1.2}/wirely/cli/__init__.py +0 -0
  335. {wirely-0.1.1 → wirely-0.1.2}/wirely/cli/compile_command.py +0 -0
  336. {wirely-0.1.1/wirely/knx → wirely-0.1.2/wirely/control}/__init__.py +0 -0
  337. {wirely-0.1.1/wirely/misc → wirely-0.1.2/wirely/knx}/__init__.py +0 -0
  338. {wirely-0.1.1 → wirely-0.1.2}/wirely/knx/connection_adapter.py +0 -0
  339. {wirely-0.1.1 → wirely-0.1.2}/wirely/knx/connection_config.py +0 -0
  340. {wirely-0.1.1 → wirely-0.1.2}/wirely/lib/matter.wrl +0 -0
  341. {wirely-0.1.1/wirely/two_n → wirely-0.1.2/wirely/misc}/__init__.py +0 -0
  342. {wirely-0.1.1 → wirely-0.1.2}/wirely/misc/service.py +0 -0
  343. {wirely-0.1.1 → wirely-0.1.2}/wirely/runtime/time_snapshot.py +0 -0
  344. {wirely-0.1.1 → wirely-0.1.2}/wirely/two_n/client.py +0 -0
  345. {wirely-0.1.1 → wirely-0.1.2}/wirely/two_n/grab_images.py +0 -0
  346. {wirely-0.1.1 → wirely-0.1.2}/wirely/types/option.py +0 -0
  347. {wirely-0.1.1 → wirely-0.1.2}/wirely/types/struct.py +0 -0
  348. {wirely-0.1.1 → wirely-0.1.2}/wirely/types/unit.py +0 -0
  349. {wirely-0.1.1 → wirely-0.1.2}/wirely/util.py +0 -0
  350. {wirely-0.1.1 → wirely-0.1.2}/wirely.egg-info/dependency_links.txt +0 -0
  351. {wirely-0.1.1 → wirely-0.1.2}/wirely.egg-info/entry_points.txt +0 -0
  352. {wirely-0.1.1 → wirely-0.1.2}/wirely.egg-info/top_level.txt +0 -0
@@ -0,0 +1,244 @@
1
+ # Changelog
2
+
3
+ ## 0.1.2 - 2026-10-10
4
+
5
+ ### Breaking changes and migration
6
+
7
+ #### Optional parameter forwarding
8
+
9
+ Replace implicit forwarding with `Foo?: parameter_option(Foo)` in node
10
+ arguments.
11
+
12
+ #### Node instance syntax
13
+
14
+ Replace parameter parentheses with braces, parameter `=` with `:`, and
15
+ remove the final semicolon. Every node instance needs braces:
16
+
17
+ | Before | After |
18
+ | --- | --- |
19
+ | `node n: T(P = value);` | `node n: T { P: value }` |
20
+ | `node n: T;` | `node n: T {}` |
21
+ | `node n: T();` | `node n: T {}` |
22
+
23
+ #### Connector syntax
24
+
25
+ Use `multi value`, `multi event`, and `multi resource` instead of `list value`,
26
+ `list event`, and `list resource` in input declarations.
27
+
28
+ Use `default input` and `default output` instead of `implicit input` and
29
+ `implicit output` in connector declarations, connection endpoints, and
30
+ procedure bindings.
31
+
32
+ #### Library and function names
33
+
34
+ Update node types and function calls as follows:
35
+
36
+ | In 0.1.1 | In 0.1.2 |
37
+ | --- | --- |
38
+ | `ExtProg.LaunchOnEvent` | `Process.LaunchOnEvent` |
39
+ | `MQTT.EventEmitter` | `MQTT.EventSender` |
40
+ | `KNX.EventEmitter` | `KNX.EventSender` |
41
+ | `Time.DelayChange` | `Time.DebounceStable` |
42
+ | `Std.Delay` | `Std.DelayOneStep` |
43
+ | `Time.IsBetween` | `Time.IsInDailyInterval` |
44
+ | `Std.OptionUnwrapOrDefault` | `Std.OptionUnwrapOr` |
45
+
46
+ #### Attribute names
47
+
48
+ Separate qualified attribute names with `.` instead of `::`.
49
+
50
+ #### Library settings
51
+
52
+ String settings are now library enums. For example, replace
53
+ `ActiveState: "Low"` with `ActiveState: GPIO.ActiveState.Low`:
54
+
55
+ | Node type | Parameter | Enum type |
56
+ | --- | --- | --- |
57
+ | `GPIO.Output` | `ActiveState` | `GPIO.ActiveState` |
58
+ | `GPIO.Output` | `Drive` | `GPIO.Drive` |
59
+ | `GPIO.Output` | `Bias` | `GPIO.Bias` |
60
+ | `Std.DetectEdge` | `EdgeType` | `Std.EdgeType` |
61
+ | `KNX.Connection` | `Protocol` | `KNX.Protocol` |
62
+ | MQTT nodes | `Format` | `MQTT.Format` |
63
+
64
+ Member names match the former strings.
65
+
66
+ `TwoN.Connection` requires an absolute `UsernamePasswordFile`. To read a
67
+ file beside the calling source file, use:
68
+
69
+ ```wirely
70
+ UsernamePasswordFile:
71
+ Path.Join(Path.Parent(Path.SourceFile()), "credentials.txt"),
72
+ ```
73
+
74
+ #### Time values
75
+
76
+ Replace `TimeOfDay_AddWrap(time, offset)` with
77
+ `TimeOfDay.WrappingAdd(time, duration)`, for example
78
+ `TimeOfDay.WrappingAdd("23:30", "PT1H")`.
79
+
80
+ `TimeOfDay` strings use two-digit hours and minutes, optionally followed by
81
+ seconds and up to nine fraction digits, such as `"08:00:30.125"`. `"24:00"`
82
+ is the end of the day.
83
+
84
+ Replace `MonotonicTime.Invalid` with `Option[MonotonicTime]` and `None`.
85
+ `Time.MonotonicTimeReached` takes `value Option[MonotonicTime]`.
86
+
87
+ #### Stricter checks
88
+
89
+ - Every input except `multi` inputs needs a source, including resource
90
+ inputs that nothing uses.
91
+ - Each state and temporary variable needs exactly one producing procedure.
92
+ - `assert` is a keyword; write `r#assert` to use it as an identifier.
93
+
94
+ ### Added
95
+
96
+ - Write procedure bodies in Wirely, in node types or at the program root.
97
+ Bodies assign each output once and support `let`, `if`, and expressions:
98
+
99
+ ```wirely
100
+ procedure run
101
+ depends on Enabled, default input as input
102
+ produces default output as output
103
+ {
104
+ output = if Enabled { input } else { Fallback };
105
+ }
106
+ ```
107
+
108
+ See [procedure bodies](doc/language.md#procedure-bodies).
109
+ - Declare compile-time constants with `constant Name: Type = expression;`
110
+ and check conditions with `assert condition, "message";`.
111
+ - Expressions support ordering comparisons, equality for all value types
112
+ (and for types at compile time), struct field access, and compile-time
113
+ integer arithmetic. Integer types provide wrapping, saturating, and
114
+ checked arithmetic and conversions such as `uint8.CheckedFrom(value)`.
115
+ Options support `IsSome`, `IsNone`, `UnwrapOr(fallback)`,
116
+ `if let Some(x) = value { ... } else { ... }`, and compile-time
117
+ `Unwrap()`.
118
+ - Declare `native function` and `native constant function` in libraries.
119
+ See [native functions](doc/language.md#native-functions).
120
+ - The `std` library provides arithmetic and conversions for `Duration`,
121
+ `MonotonicTime`, and `TimeOfDay`. See [value types](doc/value-types.md).
122
+ - The `path` library provides `Path.Join`, `Path.Parent`, and
123
+ `Path.SourceFile`.
124
+ - `wirely run-service --state-directory DIR` serves local control sockets
125
+ for status, pausing, stepping, and state snapshots; `wirely client` sends
126
+ these requests. See
127
+ [local sockets](doc/control-protocol.md#local-sockets).
128
+ - `wirely.compiler.attribute_editing` adds, sets, and removes attributes
129
+ while preserving source formatting.
130
+
131
+ ## 0.1.1 - 2026-10-04
132
+
133
+ ### Breaking changes and migration
134
+
135
+ #### Library names
136
+
137
+ Update node types, named arguments, and connection endpoints as follows.
138
+ Names are case-sensitive.
139
+
140
+ | In 0.1.0 | In 0.1.1 |
141
+ | --- | --- |
142
+ | `Std.DebugInput` | `Std.DebugValueSource` |
143
+ | `Std.DebugPrinter` | `Std.DebugValuePrinter` |
144
+ | `MQTT.Server` | `MQTT.Connection` |
145
+ | MQTT client input `Server` | `Broker` |
146
+ | `TwoN.Device` node type | `TwoN.Connection` |
147
+ | TwoN connection parameter `Hostname` | `Host` |
148
+ | `Time.TriggerAt` parameter `Type` | `OutputType` |
149
+ | `Time.TriggerAt` parameter `Value` | `OutputValue` |
150
+ | `Time.DelayChange` parameter `Time` | `Duration` |
151
+ | `Std.Delay` parameter `initialValue` | `InitialValue` |
152
+ | `Time.IsBetween` parameters `start`, `end` | `Start`, `End` |
153
+
154
+ Rename the parameter `type` to `Type` on `Std.Delay`,
155
+ `Std.TwoStageValueForward`, `Std.DebugValuePrinter`, `Std.DebugEventPrinter`,
156
+ `Std.DebugValueSource`, and `Std.DebugEventSource`.
157
+
158
+ The MQTT input rename applies to `ValueOptionProvider`, `ValueProvider`,
159
+ `EventEmitter`, and `EventReceiver`. For example, change
160
+ `connect broker -> publisher.Server;` to
161
+ `connect broker -> publisher.Broker;`.
162
+
163
+ #### Resource connectors
164
+
165
+ Replace integration-specific connector kinds in custom node declarations:
166
+
167
+ | In 0.1.0 | In 0.1.1 |
168
+ | --- | --- |
169
+ | `knx_bus` | `resource KNX.Bus` |
170
+ | `mqtt_server` | `resource MQTT.Broker` |
171
+ | `two_n_device` | `resource TwoN.Device` |
172
+
173
+ Custom libraries can declare their own opaque resources with
174
+ `resource type Name;`. See [resource connectors](doc/language.md#opaque-resource-connectors).
175
+
176
+ #### Runtime types
177
+
178
+ `String` and `List[T]` are now enforced as parameter-only types, including
179
+ options containing them.
180
+
181
+ #### Procedure bindings and state dependencies
182
+
183
+ Add `as "key"` aliases to implicit connectors and complex references in
184
+ `depends on` and `produces`. Simple identifiers use their own names.
185
+ Procedures that read previous state must declare that dependency explicitly;
186
+ state changes only rerun procedures that depend on them. For example:
187
+
188
+ ```wirely
189
+ native procedure run
190
+ depends on implicit input as "input", last_value.old as "previous"
191
+ produces implicit output as "output", last_value as "next";
192
+ ```
193
+
194
+ See [state and execution](doc/language.md#state-and-execution).
195
+
196
+ #### String escapes
197
+
198
+ Quoted strings use Rust-style escapes. Replace Python-style Unicode escapes
199
+ such as `\u0041` or `\U0001F600` with `\u{41}` or `\u{1F600}`. Use raw
200
+ strings such as `r"C:\logs\wirely"` to preserve literal backslashes.
201
+
202
+ ### Added
203
+
204
+ - Integer literals accept unary `+` and `-`, including hexadecimal and
205
+ octal literals, such as `-42`, `-0x2a`, and `-0o52`.
206
+ - Use `()` for unit values and `Some(value)` for present optional values;
207
+ `None` represents absence.
208
+ - Declare named enum types with explicit integer representations and member
209
+ values, and use qualified literals such as `Mode.Heat`:
210
+
211
+ ```wirely
212
+ enum type Mode: uint8 {
213
+ Off = 0,
214
+ Heat = 1,
215
+ }
216
+ ```
217
+
218
+ - Declare named struct types and construct values by field name:
219
+
220
+ ```wirely
221
+ struct type Reading {
222
+ temperature: int16,
223
+ valid: boolean,
224
+ }
225
+ node reading: Std.Constant(
226
+ Type = Reading,
227
+ Value = Reading { valid: true, temperature: 215 }
228
+ );
229
+ ```
230
+
231
+ See [types and literals](doc/language.md#parameters-types-and-literals).
232
+ - Connect previous-step state directly with
233
+ `connect last_value.old -> target;`. Use `last_value.new` in connections
234
+ or procedure dependencies to read this step's value after its writer.
235
+ `.old` reads the initial value on the first step.
236
+ - Attach compiler attributes with `#[...]` and `#![...]`. Set node
237
+ coordinates with `#[position(x = 120, y = -40.5)]` before a node
238
+ declaration. See [attributes](doc/language.md#attributes).
239
+
240
+ ## 0.1.0
241
+
242
+ Initial release: typed node graphs, value and event connections, stateful
243
+ execution, composite and native nodes, and bundled KNX, MQTT, GPIO, 2N,
244
+ time, memory, CSV, and external-command libraries.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: wirely
3
- Version: 0.1.1
3
+ Version: 0.1.2
4
4
  Summary: Node-based language and runtime for low-level home automation
5
5
  Author: Steffen Kieß
6
6
  License: MIT
@@ -11,6 +11,7 @@ Description-Content-Type: text/markdown
11
11
  License-File: LICENSE
12
12
  Requires-Dist: lark>=1.1.5
13
13
  Requires-Dist: sdnotify>=0.3.0
14
+ Requires-Dist: cbor2>=5.4.5
14
15
  Provides-Extra: knx
15
16
  Requires-Dist: xknx<4,>=3.0; extra == "knx"
16
17
  Provides-Extra: mqtt
@@ -100,6 +101,25 @@ use the current Python interpreter. `tools/wirely` accepts the same arguments
100
101
  as `wirely` and runs the source in this checkout from any working directory.
101
102
  The test suite also requires `knxd` and `mosquitto`.
102
103
 
104
+ Pass test names to run a selection, and add `--timings` to list durations
105
+ slowest first:
106
+
107
+ ```
108
+ tools/run-tests --timings unit/types unit/equality
109
+ ```
110
+
111
+ To check that compilation does not depend on declaration order, set
112
+ `WIRELY_COMPILER_SHUFFLE_SEED` to an integer. The compiler then shuffles
113
+ declarations, node parameters, struct literal fields, and procedure
114
+ bindings with that seed; connections keep their relative order. Also set
115
+ `WIRELY_COMPILER_SHUFFLE_LAYOUT=1` to shuffle struct fields and enum
116
+ members, which changes serialization and enum default values. Negative
117
+ tests may report different diagnostics in this mode.
118
+
119
+ ```
120
+ WIRELY_COMPILER_SHUFFLE_SEED=1 tools/run-tests
121
+ ```
122
+
103
123
  Test dependency and Python versions in temporary environments:
104
124
 
105
125
  ```
@@ -65,6 +65,25 @@ use the current Python interpreter. `tools/wirely` accepts the same arguments
65
65
  as `wirely` and runs the source in this checkout from any working directory.
66
66
  The test suite also requires `knxd` and `mosquitto`.
67
67
 
68
+ Pass test names to run a selection, and add `--timings` to list durations
69
+ slowest first:
70
+
71
+ ```
72
+ tools/run-tests --timings unit/types unit/equality
73
+ ```
74
+
75
+ To check that compilation does not depend on declaration order, set
76
+ `WIRELY_COMPILER_SHUFFLE_SEED` to an integer. The compiler then shuffles
77
+ declarations, node parameters, struct literal fields, and procedure
78
+ bindings with that seed; connections keep their relative order. Also set
79
+ `WIRELY_COMPILER_SHUFFLE_LAYOUT=1` to shuffle struct fields and enum
80
+ members, which changes serialization and enum default values. Negative
81
+ tests may report different diagnostics in this mode.
82
+
83
+ ```
84
+ WIRELY_COMPILER_SHUFFLE_SEED=1 tools/run-tests
85
+ ```
86
+
68
87
  Test dependency and Python versions in temporary environments:
69
88
 
70
89
  ```