knxyz
KNXyz for Python: KNXnet/IP clients and .knxproj loading.
Install
pip install knxyz
Host values
An omitted item composes as the row's zero default, so {} asks for every
declared item at its zero default and write(ga, {}, "9.001") transmits
0.0 degree C. An explicit None is a different request: where the row
declares an invalid marker, None asks for that marker.
A host value the document cannot carry faithfully is refused before any
document, frame or socket work exists, so a refused call sends nothing at
all. None, bool, int, a finite float, str, list, tuple and
dict with string keys are carried, including a subclass that stores no
instance state of its own. A set, bytes, a Decimal, a non-dict
Mapping, an arbitrary object, a dict carrying a key that is not a string,
a subclass carrying instance state the document has nowhere to put and a
subclass whose class will not say where its instance state is are
refused with a KnxError whose code is host/non-finite-number,
host/unrepresentable-value, host/circular-structure or
host/value-too-complex.
Errors
A refused KNX operation raises a KnxError carrying a code, a
hierarchical path whose first segment names the authority that refused and
picks the subclass raised. A mistake in the shape of an options object is a
different layer and a different class: it raises a plain ValueError naming
the key, because the remedy is a fix at the call site rather than a branch
on a wire code.
Threads
The address helpers and .knxproj loading hold no state of their own and
are callable from any thread. A client object serializes its own state:
the native tunnel and routing clients each guard their transport and their
monitor subscription with their own locks, so calls on one client from
several threads interleave rather than race, and a second monitor_next
while one is pending is refused rather than admitted. The GIL is released
around every call that blocks on the transport, so a blocked send, monitor
wait or close does not stop other Python threads. The value and option
judgements run before that release, which is why a refused call is refused
without touching a socket.
.knxproj loading
from knxyz import load_knxproj
project = load_knxproj("project.knxproj")
print(len(project.group_addresses))
The knxyz.io documentation tracks the source in the repository. A published version can be built from different source under the same version number, so those pages may describe API this package version does not carry.
Documentation: https://knxyz.io
Repository: https://github.com/goznauk/KNXyz
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file knxyz-0.0.8.tar.gz.
File metadata
- Download URL: knxyz-0.0.8.tar.gz
- Upload date:
- Size: 308.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b937e159d71a13dc6eaf7408d82898fb732e84a9a56463c66c27fd13f4c0967a
|
|
| MD5 |
bfb6e61735b9afb04a8a15203ae4ca4b
|
|
| BLAKE2b-256 |
50562adb692097fe751cb91692bcd9ba845afa2582fb50efeb64e70551502a81
|
Provenance
The following attestation bundles were made for knxyz-0.0.8.tar.gz:
Publisher:
publish-pypi.yml on goznauk/KNXyz
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
knxyz-0.0.8.tar.gz -
Subject digest:
b937e159d71a13dc6eaf7408d82898fb732e84a9a56463c66c27fd13f4c0967a - Sigstore transparency entry: 2580524737
- Sigstore integration time:
-
Permalink:
goznauk/KNXyz@cf5d68fe93f9d501309dda8e39312a5b05ef1402 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/goznauk
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi.yml@cf5d68fe93f9d501309dda8e39312a5b05ef1402 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file knxyz-0.0.8-cp312-cp312-manylinux_2_34_x86_64.whl.
File metadata
- Download URL: knxyz-0.0.8-cp312-cp312-manylinux_2_34_x86_64.whl
- Upload date:
- Size: 908.9 kB
- Tags: CPython 3.12, manylinux: glibc 2.34+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d6005bced85b6a4ceefc4a00a6ffd6537bbe7d1f54c3fd1395dbec2064e8a767
|
|
| MD5 |
f716ef6b4871004c89f0bd95f424d49c
|
|
| BLAKE2b-256 |
2eec643b1ff093aae7ddef018ef9de2438028232d94c5172c5f1e6ff75dc75c7
|
Provenance
The following attestation bundles were made for knxyz-0.0.8-cp312-cp312-manylinux_2_34_x86_64.whl:
Publisher:
publish-pypi.yml on goznauk/KNXyz
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
knxyz-0.0.8-cp312-cp312-manylinux_2_34_x86_64.whl -
Subject digest:
d6005bced85b6a4ceefc4a00a6ffd6537bbe7d1f54c3fd1395dbec2064e8a767 - Sigstore transparency entry: 2580524752
- Sigstore integration time:
-
Permalink:
goznauk/KNXyz@cf5d68fe93f9d501309dda8e39312a5b05ef1402 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/goznauk
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi.yml@cf5d68fe93f9d501309dda8e39312a5b05ef1402 -
Trigger Event:
workflow_dispatch
-
Statement type: