- build: packaging moved to a PEP 621
pyproject.toml(setuptools backend);setup.pyis now a compatibility shim, so existingpython setup.py …tooling keeps working. The version is a single plain__version__literal inpypowerwall/__init__.py, read at build time via setuptools'attr:(no import, no regex), replacingsetup.py's regex parse. The publicversionandversion_tupleattributes are unchanged. Thanks @jasonacox-sam, prompted by @hulkster (#389, #388). - fix(build): distributions no longer ship the repository's
proxy/directory as a top-levelproxypackage. The 0.17.x wheels carried the proxy'sserver.pyand tests, and — because a localproxy/pypowerwallsymlink was followed at build time — a duplicate copy of the library (~85 files). Package discovery is now explicit (pypowerwall*), so neither can leak in. Nothing importedproxyfrom the installed package (the proxy's Docker image copies its files from the repo). (#389) - build: declares
requires-python = ">=3.9", matching the CI-tested versions (Python 3.8 is end-of-life); pip keeps Python 3.8 environments on 0.17.x instead of offering an untested release. License metadata uses the PEP 639 SPDX form (license = "MIT"). (#389) - fix:
version_tupleis derived from__version__without raising, so a pre-release version string (e.g.0.18.0rc1) can't breakimport pypowerwall; it yields the numeric release components,(0, 18, 0). (#389) - build: the published dependency list now requires
requests-oauthlib>=1.3.0, matching what CI tests (requirements.txt); a test keeps the two lists in sync. (#389) - ci: new
Packageworkflow builds the sdist and wheel on Python 3.9 and 3.13, runstwine check --strictand the newtools/check_dist.py, and installs each artifact into a clean venv to verify import, metadata version, data files, and that noproxypackage ships. Runpython tools/check_dist.py distlocally before publishing. (#389) - Library version bumped to
0.18.0
Contributors
Thanks to the community members who made this release possible:
- @hulkster — filed #388 proposing single-source versioning, which sparked this packaging modernization
- @jasonacox — review hardening on #389: PEP 639 license metadata, pre-release-safe
version_tuple, dependency alignment, and the Package CI workflow