# Changelog

# 1.0.4 - 2026-09-29

# Changed

  • Documentation only: the README's Documentation list links each page on the documentation site, so readers on GitHub and PyPI land there. The code is the same as 1.0.3.

# 1.0.3 - 2026-09-29

# Changed

  • Documentation only. The README becomes a short entrance to the documentation site, https://offerrall.github.io/pyeasydeploy/, and docs/overview.md holds the introduction: what each step of a deploy does, and what the server needs.
  • A new docs/reference.md lists every public name. get_python_instances, delete_venv, install_package_from_github, supervisor_start, supervisor_stop, has_sudo_password, require_sudo, check_supervisor_installed and create_supervisor_config were documented nowhere; the guide's examples import what they use.
  • RELEASING.md moves to docs/releasing.md. The "Changed in 0.1.5" note leaves the guide for its 0.1.5 entry here, and the changelog headings carry their release dates.
  • pyproject.toml: the description matches the package docstring, and [project.urls] gains Documentation.

The code is the same as 1.0.2.

# 1.0.2 - 2026-09-29

# Added

  • The LICENSE file with the MIT text that pyproject.toml declares, shipped in the package. The code is the same as 1.0.1.

# 1.0.1 - 2026-09-29

# Changed

  • pytypehint is pinned to the exact version this release is tested with, ==1.2.1, instead of >=1.2: a new pytypehint can no longer change what an installed pyeasydeploy does. The code is the same as 1.0.0.

# 1.0.0 - 2026-09-29

The models are rebuilt on pytypehint: deeply immutable, keyword-only, and validated from their types when built. What reaches the server (commands, files, their order) is the same as in 0.1.6.

# Changed (breaking)

  • Python 3.11 or newer, and pytypehint as a dependency.
  • connect_to_host(host, user, password=..., key_filename=..., sudo_password=..., port=...) is now connect(Host(address=..., user=..., auth=..., sudo_password=..., port=...)), where auth is Password(value=...) or Key(path=...): exactly one, by type.
  • VenvPython(venv_name, python_instance, venv_path) is now Venv(python=..., path=...); create_venv(conn, python, path) takes those names.
  • SupervisorService.extra is a tuple of Option(key=..., value=...), written in that order, instead of a dict. A key given twice is rejected.
  • Models take keyword arguments only. Invalid values raise SchemaTypeError and SchemaValueError (subclasses of TypeError and ValueError), naming the field.

# Fixed

  • The README is README.md, as pyproject.toml says: built on Linux, 0.1.6 had no long description.
  • The PyPI badge showed another package's version.

# Added

  • Tests, and releases published to PyPI from GitHub releases.
  • The documentation split into docs/.

# 0.1.5 - 2026-08-04

# Changed

  • create_venv deletes an existing environment and builds a new one. Pass recreate=False to reuse it.