wirely 0.1.0__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.
- wirely-0.1.2/CHANGELOG.md +244 -0
- {wirely-0.1.0 → wirely-0.1.2}/MANIFEST.in +3 -1
- {wirely-0.1.0/wirely.egg-info → wirely-0.1.2}/PKG-INFO +54 -8
- {wirely-0.1.0 → wirely-0.1.2}/README.md +44 -2
- wirely-0.1.2/doc/README.md +17 -0
- wirely-0.1.2/doc/bytecode-format.md +1187 -0
- wirely-0.1.2/doc/control-protocol.md +367 -0
- wirely-0.1.2/doc/language.md +569 -0
- wirely-0.1.2/doc/libraries.md +265 -0
- wirely-0.1.2/doc/native-python.md +326 -0
- wirely-0.1.2/doc/value-types.md +380 -0
- wirely-0.1.2/doc/wirely-style.md +109 -0
- wirely-0.1.2/examples/delay.wrl +7 -0
- wirely-0.1.2/examples/flipflop.wrl +14 -0
- wirely-0.1.2/examples/gpio.wrl +9 -0
- wirely-0.1.2/examples/knx.wrl +32 -0
- wirely-0.1.2/examples/test.wrl +86 -0
- {wirely-0.1.0 → wirely-0.1.2}/pyproject.toml +13 -8
- wirely-0.1.2/test/compiler/arithmetic.wrl +67 -0
- wirely-0.1.2/test/compiler/assertions.wrl +37 -0
- wirely-0.1.2/test/compiler/attributes.wrl +97 -0
- wirely-0.1.2/test/compiler/constants.wrl +83 -0
- wirely-0.1.2/test/compiler/conversions.wrl +47 -0
- wirely-0.1.2/test/compiler/durations.wrl +38 -0
- wirely-0.1.2/test/compiler/equality.wrl +59 -0
- wirely-0.1.2/test/compiler/library_settings.wrl +91 -0
- wirely-0.1.2/test/compiler/literals.wrl +114 -0
- wirely-0.1.0/test/nested_library.wrl → wirely-0.1.2/test/compiler/namespaces.wrl +6 -5
- wirely-0.1.2/test/compiler/native_functions.wrl +15 -0
- wirely-0.1.2/test/compiler/options.wrl +62 -0
- wirely-0.1.2/test/compiler/ordering.wrl +19 -0
- wirely-0.1.2/test/compiler/parameters.wrl +155 -0
- wirely-0.1.2/test/compiler/path.wrl +21 -0
- wirely-0.1.2/test/compiler/prepared_configuration.wrl +28 -0
- wirely-0.1.2/test/compiler/runtime_limits.wrl +163 -0
- wirely-0.1.2/test/compiler/structs.wrl +45 -0
- wirely-0.1.2/test/compiler/syntax.wrl +178 -0
- wirely-0.1.2/test/compiler/time_of_day.wrl +35 -0
- wirely-0.1.2/test/compiler/types.wrl +181 -0
- wirely-0.1.2/test/negative/arithmetic.wrl +88 -0
- wirely-0.1.2/test/negative/assertions.wrl +110 -0
- wirely-0.1.2/test/negative/attributes.wrl +211 -0
- wirely-0.1.2/test/negative/connections.wrl +119 -0
- wirely-0.1.2/test/negative/constants.wrl +194 -0
- wirely-0.1.2/test/negative/conversions.wrl +43 -0
- wirely-0.1.2/test/negative/durations.wrl +45 -0
- wirely-0.1.2/test/negative/enum_declarations.wrl +235 -0
- wirely-0.1.2/test/negative/enum_literals.wrl +34 -0
- wirely-0.1.2/test/negative/integer_literals.wrl +182 -0
- wirely-0.1.2/test/negative/library_settings.wrl +138 -0
- wirely-0.1.2/test/negative/monotonic_time.wrl +51 -0
- wirely-0.1.2/test/negative/native_functions.wrl +97 -0
- wirely-0.1.2/test/negative/native_initializers.wrl +74 -0
- wirely-0.1.2/test/negative/native_procedures.wrl +23 -0
- wirely-0.1.2/test/negative/native_values.wrl +96 -0
- wirely-0.1.2/test/negative/node_declarations.wrl +47 -0
- wirely-0.1.2/test/negative/node_types.wrl +34 -0
- wirely-0.1.2/test/negative/option_literals.wrl +39 -0
- wirely-0.1.2/test/negative/option_properties.wrl +146 -0
- wirely-0.1.2/test/negative/optional_forwarding.wrl +121 -0
- wirely-0.1.2/test/negative/optional_outputs.wrl +59 -0
- wirely-0.1.2/test/negative/options.wrl +115 -0
- wirely-0.1.2/test/negative/parameters.wrl +34 -0
- wirely-0.1.2/test/negative/path.wrl +46 -0
- wirely-0.1.2/test/negative/prepared_configuration.wrl +61 -0
- wirely-0.1.2/test/negative/procedure_bindings.wrl +112 -0
- wirely-0.1.2/test/negative/procedures.wrl +393 -0
- wirely-0.1.2/test/negative/resource_connections.wrl +157 -0
- wirely-0.1.2/test/negative/resource_declarations.wrl +102 -0
- wirely-0.1.2/test/negative/resource_value_types.wrl +39 -0
- wirely-0.1.2/test/negative/runtime_limits.wrl +430 -0
- wirely-0.1.2/test/negative/runtime_types.wrl +69 -0
- wirely-0.1.2/test/negative/state_connections.wrl +262 -0
- wirely-0.1.2/test/negative/string_literals.wrl +131 -0
- wirely-0.1.2/test/negative/structs.wrl +349 -0
- wirely-0.1.2/test/negative/syntax_lists.wrl +59 -0
- wirely-0.1.2/test/negative/time_of_day.wrl +25 -0
- wirely-0.1.2/test/negative/type_comparisons.wrl +163 -0
- wirely-0.1.2/test/negative/unit_literals.wrl +7 -0
- wirely-0.1.2/test/negative/weak_keywords.wrl +48 -0
- wirely-0.1.2/test/unit/attribute_editing.py +151 -0
- wirely-0.1.2/test/unit/attribute_editing.wrl +1 -0
- wirely-0.1.2/test/unit/container.py +115 -0
- wirely-0.1.2/test/unit/container.wrl +1 -0
- wirely-0.1.2/test/unit/control.py +237 -0
- wirely-0.1.2/test/unit/control.wrl +4 -0
- wirely-0.1.2/test/unit/equality.py +82 -0
- wirely-0.1.2/test/unit/equality.wrl +81 -0
- wirely-0.1.2/test/unit/instructions.py +408 -0
- wirely-0.1.2/test/unit/instructions.wrl +1 -0
- wirely-0.1.2/test/unit/library_configuration.py +216 -0
- wirely-0.1.2/test/unit/library_configuration.wrl +1 -0
- wirely-0.1.2/test/unit/native_interface.py +778 -0
- wirely-0.1.2/test/unit/native_interface.wrl +1 -0
- wirely-0.1.2/test/unit/native_values.py +193 -0
- wirely-0.1.2/test/unit/native_values.wrl +4 -0
- wirely-0.1.2/test/unit/negative_cases.py +206 -0
- wirely-0.1.2/test/unit/negative_cases.wrl +1 -0
- wirely-0.1.2/test/unit/procedures.py +536 -0
- wirely-0.1.2/test/unit/procedures.wrl +332 -0
- wirely-0.1.2/test/unit/resources.py +219 -0
- wirely-0.1.2/test/unit/resources.wrl +1 -0
- wirely-0.1.2/test/unit/runtime_program.py +129 -0
- wirely-0.1.2/test/unit/runtime_program.wrl +20 -0
- wirely-0.1.2/test/unit/serialization.py +238 -0
- wirely-0.1.2/test/unit/serialization.wrl +1 -0
- wirely-0.1.2/test/unit/shuffle.py +110 -0
- wirely-0.1.2/test/unit/shuffle.wrl +1 -0
- wirely-0.1.2/test/unit/state_connections.py +401 -0
- wirely-0.1.2/test/unit/state_connections.wrl +1 -0
- wirely-0.1.2/test/unit/test_resources.py +226 -0
- wirely-0.1.2/test/unit/test_resources.wrl +1 -0
- wirely-0.1.2/test/unit/types.py +390 -0
- wirely-0.1.2/test/unit/types.wrl +1 -0
- {wirely-0.1.0/test → wirely-0.1.2/test/wrl}/abb.py +4 -2
- wirely-0.1.2/test/wrl/abb.wrl +8 -0
- wirely-0.1.2/test/wrl/and.wrl +14 -0
- {wirely-0.1.0/test → wirely-0.1.2/test/wrl}/csv.py +25 -24
- wirely-0.1.2/test/wrl/csv.wrl +15 -0
- {wirely-0.1.0/test → wirely-0.1.2/test/wrl}/delay.py +0 -2
- wirely-0.1.2/test/wrl/delay.wrl +13 -0
- {wirely-0.1.0/test → wirely-0.1.2/test/wrl}/flipflop.py +7 -7
- wirely-0.1.2/test/wrl/flipflop.wrl +9 -0
- {wirely-0.1.0/test → wirely-0.1.2/test/wrl}/gpio.py +4 -2
- wirely-0.1.2/test/wrl/gpio.wrl +9 -0
- {wirely-0.1.0/test → wirely-0.1.2/test/wrl}/knx.py +71 -70
- wirely-0.1.2/test/wrl/knx.wrl +107 -0
- {wirely-0.1.0/test → wirely-0.1.2/test/wrl}/knx_time.py +5 -5
- wirely-0.1.2/test/wrl/knx_time.wrl +13 -0
- {wirely-0.1.0/test → wirely-0.1.2/test/wrl}/mqtt.py +50 -48
- wirely-0.1.2/test/wrl/mqtt.wrl +104 -0
- wirely-0.1.2/test/wrl/option.py +99 -0
- wirely-0.1.2/test/wrl/option.wrl +25 -0
- wirely-0.1.0/test/ext_prog.py → wirely-0.1.2/test/wrl/process.py +8 -5
- wirely-0.1.2/test/wrl/process.wrl +3 -0
- wirely-0.1.2/test/wrl/simple.wrl +3 -0
- {wirely-0.1.0/test → wirely-0.1.2/test/wrl}/std.py +3 -1
- wirely-0.1.2/test/wrl/std.wrl +10 -0
- wirely-0.1.2/test/wrl/time.py +344 -0
- wirely-0.1.2/test/wrl/time.wrl +24 -0
- {wirely-0.1.0/test → wirely-0.1.2/test/wrl}/two_n.py +8 -8
- wirely-0.1.2/test/wrl/two_n.wrl +50 -0
- {wirely-0.1.0 → wirely-0.1.2}/tools/run-tests +19 -8
- wirely-0.1.2/tools/run-tests-dependencies +116 -0
- wirely-0.1.2/wirely/__init__.py +10 -0
- wirely-0.1.2/wirely/__main__.py +69 -0
- wirely-0.1.2/wirely/cli/client.py +141 -0
- wirely-0.1.2/wirely/cli/compile_command.py +31 -0
- {wirely-0.1.0/wirely → wirely-0.1.2/wirely/cli}/graphviz.py +21 -9
- wirely-0.1.2/wirely/cli/objdump.py +47 -0
- {wirely-0.1.0/wirely → wirely-0.1.2/wirely/cli}/run.py +19 -20
- wirely-0.1.2/wirely/cli/service.py +93 -0
- wirely-0.1.2/wirely/compiler/__init__.py +136 -0
- wirely-0.1.2/wirely/compiler/ast.py +1960 -0
- wirely-0.1.2/wirely/compiler/attribute_editing.py +305 -0
- wirely-0.1.2/wirely/compiler/attributes.py +209 -0
- {wirely-0.1.0/wirely → wirely-0.1.2/wirely/compiler}/block.py +170 -149
- {wirely-0.1.0/wirely → wirely-0.1.2/wirely/compiler}/block_type.py +93 -88
- wirely-0.1.2/wirely/compiler/blocks.lark +257 -0
- wirely-0.1.2/wirely/compiler/diagnostics.py +59 -0
- wirely-0.1.2/wirely/compiler/expressions.py +1094 -0
- wirely-0.1.2/wirely/compiler/function_implementations/__init__.py +1 -0
- wirely-0.1.2/wirely/compiler/function_implementations/csv.py +5 -0
- wirely-0.1.2/wirely/compiler/function_implementations/knx.py +32 -0
- wirely-0.1.2/wirely/compiler/function_implementations/mqtt.py +86 -0
- wirely-0.1.2/wirely/compiler/function_implementations/path.py +19 -0
- wirely-0.1.2/wirely/compiler/function_implementations/test.py +66 -0
- wirely-0.1.2/wirely/compiler/function_implementations/time.py +2 -0
- wirely-0.1.2/wirely/compiler/function_implementations/two_n.py +27 -0
- wirely-0.1.2/wirely/compiler/model.py +107 -0
- wirely-0.1.2/wirely/compiler/native_functions.py +184 -0
- {wirely-0.1.0/wirely → wirely-0.1.2/wirely/compiler}/node.py +52 -10
- wirely-0.1.2/wirely/compiler/parameters.py +102 -0
- {wirely-0.1.0/wirely → wirely-0.1.2/wirely/compiler}/parser.py +82 -8
- wirely-0.1.2/wirely/compiler/program.py +378 -0
- wirely-0.1.2/wirely/compiler/shuffle.py +73 -0
- wirely-0.1.2/wirely/compiler/static_bindings.py +24 -0
- wirely-0.1.2/wirely/compiler/support.py +283 -0
- wirely-0.1.2/wirely/compiler/types.py +246 -0
- wirely-0.1.2/wirely/compiler/value.py +276 -0
- wirely-0.1.2/wirely/control/client.py +136 -0
- wirely-0.1.2/wirely/control/controller.py +103 -0
- wirely-0.1.2/wirely/control/framing.py +127 -0
- wirely-0.1.2/wirely/control/messages.py +146 -0
- wirely-0.1.2/wirely/control/server.py +274 -0
- wirely-0.1.2/wirely/functions/__init__.py +80 -0
- wirely-0.1.2/wirely/functions/duration.py +112 -0
- wirely-0.1.2/wirely/functions/monotonic_time.py +65 -0
- wirely-0.1.2/wirely/functions/test_library.py +23 -0
- wirely-0.1.2/wirely/functions/time_of_day.py +34 -0
- wirely-0.1.2/wirely/lib/abb_jra.wrl +71 -0
- wirely-0.1.2/wirely/lib/csv.wrl +42 -0
- wirely-0.1.2/wirely/lib/gpio.wrl +39 -0
- wirely-0.1.2/wirely/lib/knx.wrl +128 -0
- wirely-0.1.2/wirely/lib/matter.wrl +12 -0
- wirely-0.1.2/wirely/lib/memory.wrl +47 -0
- wirely-0.1.2/wirely/lib/mqtt.wrl +108 -0
- wirely-0.1.2/wirely/lib/path.wrl +5 -0
- wirely-0.1.2/wirely/lib/process.wrl +13 -0
- wirely-0.1.2/wirely/lib/std.wrl +199 -0
- wirely-0.1.2/wirely/lib/test.wrl +8 -0
- wirely-0.1.2/wirely/lib/time.wrl +122 -0
- wirely-0.1.2/wirely/lib/two_n.wrl +142 -0
- wirely-0.1.2/wirely/misc/state_directory.py +49 -0
- wirely-0.1.2/wirely/native/__init__.py +45 -0
- {wirely-0.1.0 → wirely-0.1.2}/wirely/native/abb_jra.py +9 -17
- {wirely-0.1.0 → wirely-0.1.2}/wirely/native/csv.py +24 -66
- wirely-0.1.2/wirely/native/gpio.py +74 -0
- {wirely-0.1.0 → wirely-0.1.2}/wirely/native/knx.py +64 -205
- wirely-0.1.2/wirely/native/memory.py +58 -0
- {wirely-0.1.0 → wirely-0.1.2}/wirely/native/mqtt.py +90 -220
- wirely-0.1.2/wirely/native/process.py +53 -0
- wirely-0.1.2/wirely/native/std.py +221 -0
- wirely-0.1.2/wirely/native/test_library.py +13 -0
- wirely-0.1.2/wirely/native/time.py +253 -0
- wirely-0.1.2/wirely/native/two_n.py +400 -0
- wirely-0.1.2/wirely/program/__init__.py +12 -0
- wirely-0.1.2/wirely/program/container.py +116 -0
- wirely-0.1.2/wirely/program/limits.py +5 -0
- wirely-0.1.2/wirely/program/procedures.py +121 -0
- wirely-0.1.2/wirely/program/program.py +280 -0
- wirely-0.1.2/wirely/program/validation.py +188 -0
- wirely-0.1.2/wirely/runtime/__init__.py +1 -0
- wirely-0.1.2/wirely/runtime/contexts.py +213 -0
- wirely-0.1.2/wirely/runtime/engine.py +317 -0
- wirely-0.1.2/wirely/runtime/linking.py +81 -0
- wirely-0.1.2/wirely/runtime/procedures.py +105 -0
- wirely-0.1.2/wirely/runtime/time_snapshot.py +13 -0
- wirely-0.1.2/wirely/test.py +646 -0
- wirely-0.1.2/wirely/two_n/__init__.py +0 -0
- {wirely-0.1.0 → wirely-0.1.2}/wirely/two_n/cert.py +1 -0
- {wirely-0.1.0 → wirely-0.1.2}/wirely/two_n/fake_server.py +44 -34
- wirely-0.1.2/wirely/types/__init__.py +682 -0
- wirely-0.1.2/wirely/types/option.py +8 -0
- wirely-0.1.2/wirely/types/serialization.py +159 -0
- wirely-0.1.2/wirely/types/struct.py +35 -0
- {wirely-0.1.0/wirely → wirely-0.1.2/wirely/types}/time.py +93 -28
- wirely-0.1.2/wirely/types/unit.py +6 -0
- wirely-0.1.2/wirely/types/value_types.py +133 -0
- {wirely-0.1.0 → wirely-0.1.2/wirely.egg-info}/PKG-INFO +54 -8
- wirely-0.1.2/wirely.egg-info/SOURCES.txt +263 -0
- {wirely-0.1.0 → wirely-0.1.2}/wirely.egg-info/requires.txt +7 -5
- wirely-0.1.0/doc/README.md +0 -8
- wirely-0.1.0/doc/language.md +0 -166
- wirely-0.1.0/doc/libraries.md +0 -177
- wirely-0.1.0/examples/delay.wrl +0 -7
- wirely-0.1.0/examples/flipflop.wrl +0 -10
- wirely-0.1.0/examples/gpio.wrl +0 -4
- wirely-0.1.0/examples/knx.wrl +0 -23
- wirely-0.1.0/examples/test.wrl +0 -86
- wirely-0.1.0/test/abb.wrl +0 -8
- wirely-0.1.0/test/and.wrl +0 -14
- wirely-0.1.0/test/compiler.wrl +0 -8
- wirely-0.1.0/test/csv.wrl +0 -9
- wirely-0.1.0/test/delay.wrl +0 -13
- wirely-0.1.0/test/ext_prog.wrl +0 -3
- wirely-0.1.0/test/flipflop.wrl +0 -9
- wirely-0.1.0/test/gpio.wrl +0 -9
- wirely-0.1.0/test/knx.wrl +0 -81
- wirely-0.1.0/test/knx_time.wrl +0 -7
- wirely-0.1.0/test/mqtt.wrl +0 -73
- wirely-0.1.0/test/negative/duplicate_block_type_in_reopened_library.wrl +0 -9
- wirely-0.1.0/test/negative/library_inside_node_type.wrl +0 -4
- wirely-0.1.0/test/negative/singleton_input.wrl +0 -3
- wirely-0.1.0/test/negative/singleton_parameter.wrl +0 -3
- wirely-0.1.0/test/negative/unknown_abb_jra.wrl +0 -2
- wirely-0.1.0/test/negative/unknown_node_type.wrl +0 -1
- wirely-0.1.0/test/negative/unknown_parameter.wrl +0 -1
- wirely-0.1.0/test/option.py +0 -26
- wirely-0.1.0/test/option.wrl +0 -25
- wirely-0.1.0/test/parser.wrl +0 -4
- wirely-0.1.0/test/simple.wrl +0 -3
- wirely-0.1.0/test/std.wrl +0 -10
- wirely-0.1.0/test/time.py +0 -291
- wirely-0.1.0/test/time.wrl +0 -15
- wirely-0.1.0/test/two_n.wrl +0 -42
- wirely-0.1.0/test/types.py +0 -169
- wirely-0.1.0/wirely/__init__.py +0 -406
- wirely-0.1.0/wirely/__main__.py +0 -45
- wirely-0.1.0/wirely/ast.py +0 -1135
- wirely-0.1.0/wirely/blocks.lark +0 -126
- wirely-0.1.0/wirely/compiler.py +0 -125
- wirely-0.1.0/wirely/engine.py +0 -418
- wirely-0.1.0/wirely/enum.py +0 -15
- wirely-0.1.0/wirely/example.py +0 -36
- wirely-0.1.0/wirely/lib/abb_jra.wrl +0 -64
- wirely-0.1.0/wirely/lib/csv.wrl +0 -32
- wirely-0.1.0/wirely/lib/ext_prog.wrl +0 -12
- wirely-0.1.0/wirely/lib/gpio.wrl +0 -23
- wirely-0.1.0/wirely/lib/knx.wrl +0 -80
- wirely-0.1.0/wirely/lib/memory.wrl +0 -45
- wirely-0.1.0/wirely/lib/mqtt.wrl +0 -66
- wirely-0.1.0/wirely/lib/std.wrl +0 -134
- wirely-0.1.0/wirely/lib/time.wrl +0 -93
- wirely-0.1.0/wirely/lib/two_n.wrl +0 -111
- wirely-0.1.0/wirely/native/__init__.py +0 -74
- wirely-0.1.0/wirely/native/ext_prog.py +0 -77
- wirely-0.1.0/wirely/native/gpio.py +0 -125
- wirely-0.1.0/wirely/native/memory.py +0 -113
- wirely-0.1.0/wirely/native/std.py +0 -334
- wirely-0.1.0/wirely/native/test_library.py +0 -14
- wirely-0.1.0/wirely/native/time.py +0 -359
- wirely-0.1.0/wirely/native/two_n.py +0 -632
- wirely-0.1.0/wirely/program.py +0 -155
- wirely-0.1.0/wirely/service.py +0 -65
- wirely-0.1.0/wirely/test.py +0 -569
- wirely-0.1.0/wirely/types.py +0 -522
- wirely-0.1.0/wirely/value.py +0 -163
- wirely-0.1.0/wirely.egg-info/SOURCES.txt +0 -120
- {wirely-0.1.0 → wirely-0.1.2}/LICENSE +0 -0
- {wirely-0.1.0 → wirely-0.1.2}/doc/python-style.md +0 -0
- {wirely-0.1.0 → wirely-0.1.2}/setup.cfg +0 -0
- {wirely-0.1.0/test → wirely-0.1.2/test/wrl}/and.py +0 -0
- {wirely-0.1.0/test → wirely-0.1.2/test/wrl}/username_password.txt +0 -0
- {wirely-0.1.0 → wirely-0.1.2}/tools/build-pex +0 -0
- {wirely-0.1.0 → wirely-0.1.2}/tools/git_write_wd_tree.py +0 -0
- {wirely-0.1.0 → wirely-0.1.2}/tools/setup-venv +0 -0
- {wirely-0.1.0 → wirely-0.1.2}/tools/test-gitlab-ci +0 -0
- {wirely-0.1.0 → wirely-0.1.2}/tools/wirely +0 -0
- {wirely-0.1.0/wirely/knx → wirely-0.1.2/wirely/cli}/__init__.py +0 -0
- {wirely-0.1.0/wirely/misc → wirely-0.1.2/wirely/control}/__init__.py +0 -0
- {wirely-0.1.0/wirely/two_n → wirely-0.1.2/wirely/knx}/__init__.py +0 -0
- {wirely-0.1.0 → wirely-0.1.2}/wirely/knx/connection_adapter.py +0 -0
- {wirely-0.1.0 → wirely-0.1.2}/wirely/knx/connection_config.py +0 -0
- /wirely-0.1.0/test/types.wrl → /wirely-0.1.2/wirely/misc/__init__.py +0 -0
- {wirely-0.1.0 → wirely-0.1.2}/wirely/misc/service.py +0 -0
- {wirely-0.1.0 → wirely-0.1.2}/wirely/two_n/client.py +0 -0
- {wirely-0.1.0 → wirely-0.1.2}/wirely/two_n/grab_images.py +0 -0
- {wirely-0.1.0 → wirely-0.1.2}/wirely/util.py +0 -0
- {wirely-0.1.0 → wirely-0.1.2}/wirely.egg-info/dependency_links.txt +0 -0
- {wirely-0.1.0 → wirely-0.1.2}/wirely.egg-info/entry_points.txt +0 -0
- {wirely-0.1.0 → 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,10 +1,12 @@
|
|
|
1
|
+
include CHANGELOG.md
|
|
1
2
|
recursive-include doc *.md
|
|
2
3
|
recursive-include examples *.wrl
|
|
3
4
|
recursive-include test *.py *.wrl
|
|
4
|
-
include test/username_password.txt
|
|
5
|
+
include test/wrl/username_password.txt
|
|
5
6
|
include tools/build-pex
|
|
6
7
|
include tools/git_write_wd_tree.py
|
|
7
8
|
include tools/run-tests
|
|
9
|
+
include tools/run-tests-dependencies
|
|
8
10
|
include tools/setup-venv
|
|
9
11
|
include tools/test-gitlab-ci
|
|
10
12
|
include tools/wirely
|
|
@@ -1,33 +1,37 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: wirely
|
|
3
|
-
Version: 0.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
|
|
7
|
+
Project-URL: Repository, https://github.com/steffen-kiess/wirely
|
|
8
|
+
Project-URL: Issues, https://github.com/steffen-kiess/wirely/issues
|
|
7
9
|
Requires-Python: >=3.11
|
|
8
10
|
Description-Content-Type: text/markdown
|
|
9
11
|
License-File: LICENSE
|
|
10
|
-
Requires-Dist: lark
|
|
11
|
-
Requires-Dist: sdnotify
|
|
12
|
+
Requires-Dist: lark>=1.1.5
|
|
13
|
+
Requires-Dist: sdnotify>=0.3.0
|
|
14
|
+
Requires-Dist: cbor2>=5.4.5
|
|
12
15
|
Provides-Extra: knx
|
|
13
16
|
Requires-Dist: xknx<4,>=3.0; extra == "knx"
|
|
14
17
|
Provides-Extra: mqtt
|
|
15
18
|
Requires-Dist: aiomqtt<3,>=2.3; extra == "mqtt"
|
|
16
19
|
Provides-Extra: two-n
|
|
17
20
|
Requires-Dist: aiohttp<4,>=3.12; extra == "two-n"
|
|
18
|
-
Requires-Dist: cryptography; extra == "two-n"
|
|
21
|
+
Requires-Dist: cryptography>=38.0.0; extra == "two-n"
|
|
19
22
|
Provides-Extra: graphviz
|
|
20
|
-
Requires-Dist: graphviz; extra == "graphviz"
|
|
23
|
+
Requires-Dist: graphviz>=0.20.1; extra == "graphviz"
|
|
21
24
|
Provides-Extra: gpio
|
|
22
25
|
Requires-Dist: gpiod<3,>=2.1; extra == "gpio"
|
|
23
26
|
Provides-Extra: all
|
|
24
27
|
Requires-Dist: wirely[gpio,graphviz,knx,mqtt,two-n]; extra == "all"
|
|
25
28
|
Provides-Extra: test
|
|
26
|
-
Requires-Dist: pyOpenSSL; extra == "test"
|
|
29
|
+
Requires-Dist: pyOpenSSL>=23.0.0; extra == "test"
|
|
27
30
|
Provides-Extra: pex
|
|
28
31
|
Requires-Dist: pex; extra == "pex"
|
|
29
32
|
Provides-Extra: dev
|
|
30
33
|
Requires-Dist: wirely[pex,test]; extra == "dev"
|
|
34
|
+
Requires-Dist: uv; extra == "dev"
|
|
31
35
|
Dynamic: license-file
|
|
32
36
|
|
|
33
37
|
Wirely
|
|
@@ -42,7 +46,8 @@ these signals; it does not model higher-level concepts such as rooms,
|
|
|
42
46
|
as Home Assistant does.
|
|
43
47
|
|
|
44
48
|
See the [language documentation](doc/language.md) for how to write Wirely
|
|
45
|
-
programs.
|
|
49
|
+
programs and the [changelog](CHANGELOG.md) for release notes and migration
|
|
50
|
+
steps.
|
|
46
51
|
|
|
47
52
|
Installation
|
|
48
53
|
------------
|
|
@@ -62,6 +67,9 @@ wirely compile program.wrl
|
|
|
62
67
|
python3 -m wirely compile program.wrl
|
|
63
68
|
```
|
|
64
69
|
|
|
70
|
+
Use `wirely compile --dump-program program.wrl` to print the compiled
|
|
71
|
+
runtime program, including its variables, configuration, and procedures.
|
|
72
|
+
|
|
65
73
|
Install optional integrations as needed:
|
|
66
74
|
|
|
67
75
|
```
|
|
@@ -84,7 +92,7 @@ checkout launchers:
|
|
|
84
92
|
|
|
85
93
|
```
|
|
86
94
|
tools/setup-venv
|
|
87
|
-
tools/wirely compile test/simple.wrl
|
|
95
|
+
tools/wirely compile test/wrl/simple.wrl
|
|
88
96
|
tools/run-tests
|
|
89
97
|
```
|
|
90
98
|
|
|
@@ -92,3 +100,41 @@ The launchers use `venv/bin/python` when available. Otherwise, they warn and
|
|
|
92
100
|
use the current Python interpreter. `tools/wirely` accepts the same arguments
|
|
93
101
|
as `wirely` and runs the source in this checkout from any working directory.
|
|
94
102
|
The test suite also requires `knxd` and `mosquitto`.
|
|
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
|
+
|
|
123
|
+
Test dependency and Python versions in temporary environments:
|
|
124
|
+
|
|
125
|
+
```
|
|
126
|
+
tools/run-tests-dependencies --versions min --python min
|
|
127
|
+
tools/run-tests-dependencies --versions max --python max
|
|
128
|
+
tools/run-tests-dependencies --versions all-min --python 3.11
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
`--versions` defaults to `min`: minimum direct dependencies, with latest
|
|
132
|
+
compatible transitive dependencies. `all-min` also minimizes transitive
|
|
133
|
+
dependencies; `max` selects the newest compatible dependency set.
|
|
134
|
+
|
|
135
|
+
`--python` accepts a uv version request or an executable name/path and
|
|
136
|
+
defaults to the interpreter running the script. `min` selects the latest
|
|
137
|
+
compatible patch of the oldest supported CPython minor; `max` selects the
|
|
138
|
+
newest compatible stable CPython available through the installed uv.
|
|
139
|
+
uv can download missing interpreters. `tools/run-tests --python PATH` runs
|
|
140
|
+
tests using a specified Python executable.
|
|
@@ -10,7 +10,8 @@ these signals; it does not model higher-level concepts such as rooms,
|
|
|
10
10
|
as Home Assistant does.
|
|
11
11
|
|
|
12
12
|
See the [language documentation](doc/language.md) for how to write Wirely
|
|
13
|
-
programs.
|
|
13
|
+
programs and the [changelog](CHANGELOG.md) for release notes and migration
|
|
14
|
+
steps.
|
|
14
15
|
|
|
15
16
|
Installation
|
|
16
17
|
------------
|
|
@@ -30,6 +31,9 @@ wirely compile program.wrl
|
|
|
30
31
|
python3 -m wirely compile program.wrl
|
|
31
32
|
```
|
|
32
33
|
|
|
34
|
+
Use `wirely compile --dump-program program.wrl` to print the compiled
|
|
35
|
+
runtime program, including its variables, configuration, and procedures.
|
|
36
|
+
|
|
33
37
|
Install optional integrations as needed:
|
|
34
38
|
|
|
35
39
|
```
|
|
@@ -52,7 +56,7 @@ checkout launchers:
|
|
|
52
56
|
|
|
53
57
|
```
|
|
54
58
|
tools/setup-venv
|
|
55
|
-
tools/wirely compile test/simple.wrl
|
|
59
|
+
tools/wirely compile test/wrl/simple.wrl
|
|
56
60
|
tools/run-tests
|
|
57
61
|
```
|
|
58
62
|
|
|
@@ -60,3 +64,41 @@ The launchers use `venv/bin/python` when available. Otherwise, they warn and
|
|
|
60
64
|
use the current Python interpreter. `tools/wirely` accepts the same arguments
|
|
61
65
|
as `wirely` and runs the source in this checkout from any working directory.
|
|
62
66
|
The test suite also requires `knxd` and `mosquitto`.
|
|
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
|
+
|
|
87
|
+
Test dependency and Python versions in temporary environments:
|
|
88
|
+
|
|
89
|
+
```
|
|
90
|
+
tools/run-tests-dependencies --versions min --python min
|
|
91
|
+
tools/run-tests-dependencies --versions max --python max
|
|
92
|
+
tools/run-tests-dependencies --versions all-min --python 3.11
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
`--versions` defaults to `min`: minimum direct dependencies, with latest
|
|
96
|
+
compatible transitive dependencies. `all-min` also minimizes transitive
|
|
97
|
+
dependencies; `max` selects the newest compatible dependency set.
|
|
98
|
+
|
|
99
|
+
`--python` accepts a uv version request or an executable name/path and
|
|
100
|
+
defaults to the interpreter running the script. `min` selects the latest
|
|
101
|
+
compatible patch of the oldest supported CPython minor; `max` selects the
|
|
102
|
+
newest compatible stable CPython available through the installed uv.
|
|
103
|
+
uv can download missing interpreters. `tools/run-tests --python PATH` runs
|
|
104
|
+
tests using a specified Python executable.
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# Wirely documentation
|
|
2
|
+
|
|
3
|
+
Wirely programs are graphs of typed nodes written in `.wrl` files. Start with
|
|
4
|
+
the [language guide](language.md) to learn how to declare nodes and connect
|
|
5
|
+
them. Then use the [library reference](libraries.md) to find the nodes supplied
|
|
6
|
+
with Wirely. The [value type reference](value-types.md) describes the types
|
|
7
|
+
used by parameters, connectors, and state.
|
|
8
|
+
|
|
9
|
+
The [binary program format proposal](bytecode-format.md) describes program
|
|
10
|
+
tables, value encodings, and optional debugging information.
|
|
11
|
+
|
|
12
|
+
For `.wrl` formatting and naming, follow the
|
|
13
|
+
[Wirely style guide](wirely-style.md).
|
|
14
|
+
|
|
15
|
+
To implement nodes and procedures in Python, use the
|
|
16
|
+
[native Python implementation guide](native-python.md). For Python
|
|
17
|
+
contributions, follow the [Python style guide](python-style.md).
|