Skip to content

v0.2.0

Choose a tag to compare

@acedrew acedrew released this 13 Aug 00:58
· 2 commits to main since this release

Supports Python 3.10 and up (previously 3.13 only), so this is the first release
installable on the interpreters most deployments are actually running.

  • requires-python lowered to >=3.10, the floor the dependencies allow — typer
    and pdfminer.six both require it.
  • The one version-dependent construct, enum.StrEnum (3.11+), is shimmed in
    ace_bacnet_devices._compat. A bare class Foo(str, Enum) is not equivalent —
    it stringifies as Foo.BAR rather than bar, and these values are written into
    JSON and generated source — so the shim pins __str__/__format__ to str as
    the standard library does. Every enum spelling, all six bundled definitions as
    JSON, and the generated legacy module are byte-identical on 3.10/3.11/3.12/3.13.
  • CI runs lint, type checks and tests as a matrix over all four versions, and the
    wheel smoke test installs on 3.10 so a wheel that cannot install at the declared
    floor fails before release.
  • The legacy bacpypes adapter is now verified against the real stack rather than
    stubs: asyncore still exists on 3.10/3.11, so bacpypes installs there. All 53
    constrained datatypes are encoded and compared byte for byte against the primitive
    each subclasses, and 40 declared maxima are confirmed to reject out-of-range
    values. These tests skip on 3.12+.

No change to the bundled vendor definitions: 617 proprietary properties across
eight BACnet vendor ids.