Skip to main content

Wirely

Wirely is a node-based language and runtime for low-level home automation. It connects signals from KNX group addresses, MQTT topics, and other device interfaces through nodes that process values and apply logic. For example, it can listen for boolean values on two KNX group addresses and publish first_value AND NOT second_value to a third. Wirely works directly with these signals; it does not model higher-level concepts such as rooms, as Home Assistant does.

See the language documentation for how to write Wirely programs and the changelog for release notes and migration steps.

Installation

Wirely requires Python 3.11 or newer. Install the core package with:

python3 -m pip install wirely

The core install includes the compiler and command-line interface. The installed wirely command and python3 -m wirely provide the same subcommands. For example:

wirely compile program.wrl
python3 -m wirely compile program.wrl

Use wirely compile --dump-program program.wrl to print the compiled runtime program, including its variables, configuration, and procedures.

Install optional integrations as needed:

python3 -m pip install 'wirely[knx]'           # KNX
python3 -m pip install 'wirely[mqtt]'          # MQTT
python3 -m pip install 'wirely[two-n]'         # 2N devices
python3 -m pip install 'wirely[graphviz]'      # show-graph
python3 -m pip install 'wirely[gpio]'          # GPIO
python3 -m pip install 'wirely[all]'           # all optional integrations

The test extra adds dependencies used only by the test suite. Install wirely[all,test] to include both integrations and test dependencies.

Development checkout

Create a virtual environment with all dependencies, then use the checkout launchers:

tools/setup-venv
tools/wirely compile test/wrl/simple.wrl
tools/run-tests

The launchers use venv/bin/python when available. Otherwise, they warn and use the current Python interpreter. tools/wirely accepts the same arguments as wirely and runs the source in this checkout from any working directory. The test suite also requires knxd and mosquitto.

Pass test names to run a selection, and add --timings to list durations slowest first:

tools/run-tests --timings unit/types unit/equality

To check that compilation does not depend on declaration order, set WIRELY_COMPILER_SHUFFLE_SEED to an integer. The compiler then shuffles declarations, node parameters, struct literal fields, and procedure bindings with that seed; connections keep their relative order. Also set WIRELY_COMPILER_SHUFFLE_LAYOUT=1 to shuffle struct fields and enum members, which changes serialization and enum default values. Negative tests may report different diagnostics in this mode.

WIRELY_COMPILER_SHUFFLE_SEED=1 tools/run-tests

Test dependency and Python versions in temporary environments:

tools/run-tests-dependencies --versions min --python min
tools/run-tests-dependencies --versions max --python max
tools/run-tests-dependencies --versions all-min --python 3.11

--versions defaults to min: minimum direct dependencies, with latest compatible transitive dependencies. all-min also minimizes transitive dependencies; max selects the newest compatible dependency set.

--python accepts a uv version request or an executable name/path and defaults to the interpreter running the script. min selects the latest compatible patch of the oldest supported CPython minor; max selects the newest compatible stable CPython available through the installed uv. uv can download missing interpreters. tools/run-tests --python PATH runs tests using a specified Python executable.

Metadata

Release files for wirely 0.1.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for wirely 0.1.2
File Size Uploaded
wirely-0.1.2.tar.gz 300.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for wirely 0.1.2
File Interpreter ABI Platform
wirely-0.1.2-py3-none-any.whl Python 3 none any Details

Total release size: 485.9 kB

Release files / wirely-0.1.2.tar.gz

Download URL wirely-0.1.2.tar.gz
Size 300.2 kB
Tags Source
SHA-256 checksum
How to use checksums
ea9aa9183b299c787ae1e80a362e2a695327849b2aa9195ff5815f1d2a97917f
BLAKE2b-256 checksum
How to use checksums
3b45276dcdaa35d5b5cbceda36ed1e1afc3d580772b9fe673f7813cc09a063f9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.5

Release files / wirely-0.1.2-py3-none-any.whl

Download URL wirely-0.1.2-py3-none-any.whl
Size 185.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
c2e29c417a8df3e2085739b98dfea25b6d1a2c6b0052a069c9a6980068b4f71d
BLAKE2b-256 checksum
How to use checksums
c97cf5cfd570f0b682d0f9511b7c2e027d98fbe933cc09655d186a8d58f31800
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.5

Release history Release notifications | RSS feed

0.1.3

2 release files

This release

0.1.2 This release

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page