Skip to content

v0.1.0

Choose a tag to compare

@github-actions github-actions released this 04 Oct 12:55
· 2 commits to main since this release
3d4fd48
PyPI https://pypi.org/project/zboxapi/0.1.0/
Install pipx install zboxapi==0.1.0 or uv tool install zboxapi==0.1.0
Upgrade pipx upgrade zboxapi or uv tool upgrade zboxapi

Added

  • Releases follow the shared zPodFactory standard. tools/release.py cuts a version
    (changelog heading, pyproject.toml and uv.lock bump, tests, commit, tag, push) and
    tools/release_notes.py publishes the changelog section as the GitHub release note.
    .github/workflows/release.yml runs it on every tag, then builds the wheel and sdist,
    publishes them to PyPI with uv publish and attaches them to the release.
    .github/workflows/checks.yml runs the release rules and the test suite on every push.
    See tools/README.md.
  • Unit tests: pytest suite covering hostname validation, hosts-file handling,
    VLAN configuration/validation, every /dns and /vlan endpoint, authentication and
    OpenAPI operation IDs. System paths and commands are faked, so the tests run anywhere.
  • Python 3.14 support: tested on Python 3.13 and 3.14; classifiers list 3.10 to 3.14.

Changed

  • Build tooling: migrated from Poetry to uv with a
    PEP 621 pyproject.toml, the uv_build backend and uv.lock. justfile recipes now
    use uv and include test, lint and format.
  • Dependencies: FastAPI, Pydantic and uvicorn upgraded to current releases
    (Pydantic 2.12+ is required for Python 3.14). ipython moved to the dev group.
  • Hostname validation: fully qualified names such as esx01.lab.local are now
    accepted. Total length is limited to 253 characters and each label to 63, labels may
    not start or end with a hyphen, and error messages name the offending label.
  • Password lookup: the zPod password is resolved at application startup (lifespan)
    and cached, instead of at module import. Behaviour for the systemd service is unchanged.
  • Operation IDs: generated through FastAPI's generate_unique_id_function; the
    previous post-hoc rewrite was a no-op on FastAPI 0.142+.
  • Version string: zboxapi.__version__ is read from package metadata, so only
    pyproject.toml needs bumping.

Fixed

  • VLAN create/update when a system VLAN interface has no address: the overlap check
    tried to parse the system-default / system-zpod placeholder as a network and
    rejected every request with a misleading "Network overlap detected" error. Placeholders
    are now skipped.
  • 403 for system VLANs on update and delete: PUT /vlan/{id} and DELETE /vlan/{id}
    returned 500 for system VLANs; they now return 403 like enable and disable, as
    documented.
  • Config paths: the hosts file, /etc/zboxapi.conf and /etc/network/interfaces.d
    are module-level constants (HOSTS_FILE, CONFIG_FILE, INTERFACES_DIR), making them
    overridable in tests.

Full changelog: v0.0.7...v0.1.0

Every release: https://github.com/zPodFactory/zboxapi/blob/main/CHANGELOG.md