Hosker Utils
This repository provides the hosker_utils Python package and command-line
helpers for configuring His Majesty's Software Suite (HMSS) and backing up a
configured set of Git repositories.
It also serves as a small, working reference for the standards expected in the owner's other repositories: declarative packaging, isolated tests, one-command validation, explicit release versions, and documented system effects. It is a role model, not a template; copy the principles rather than every file.
Requirements
- Python 3.11 or newer
- A Debian-based Linux distribution for the HMSS installer
Development
Create a virtual environment, install the package, and run the checks:
python3 -m venv .venv
.venv/bin/python -m pip install --upgrade pip
.venv/bin/python -m pip install -e .
.venv/bin/python -m ruff check .
.venv/bin/python -m pytest
.venv/bin/python validate.py
The installer runs apt through sudo, changes the GNOME wallpaper, and
clones the repositories listed in ~/hmss_config.json. Review that generated
configuration before running the installer.
Build and validate Python release artifacts with ./update_version.sh. The
script creates an ignored .venv-release environment and installs current
versions of build and Twine there; it never installs them into the system
Python. It writes only PyPI-compatible artifacts to dist/python/, keeping
them separate from Debian packages. Before completing a pull request, agree
and set the next version in pyproject.toml.
Building and twine check are local operations. Only the separate
twine upload release step contacts PyPI; the script prints that command but
does not run it automatically.
For a release-affecting change, the final checklist is:
- Run
python3 validate.pyandgit diff --check. - Agree and update the version in
pyproject.toml. - Build and validate the Python wheel and source distribution.
- Build and inspect the Debian package when Debian packaging has changed.
- Publish only as a separate, deliberate action.
Install
For an isolated command-line installation on any supported distribution, use
pipx:
pipx install .
On Debian-based systems, build and install a native package instead:
python3 tools/build_deb.py
sudo apt install ./dist/hosker-utils_2.7.0_$(dpkg --print-architecture).deb
The Debian builder requires dpkg-deb, stages files in a temporary directory,
and does not require root. APT handles the package's Python runtime
dependencies. Because Ruff is not available in all APT catalogues, the builder
bundles the Ruff executable from the active development environment.
Install HMSS
After installing by either method, run install-hmss.
Release files for hosker-utils 2.7.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| hosker_utils-2.7.0.tar.gz | 9.1 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| hosker_utils-2.7.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 18.2 MB
Release files / hosker_utils-2.7.0.tar.gz
| Download URL | hosker_utils-2.7.0.tar.gz |
|---|---|
| Size | 9.1 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
5a0493766503633812d7c997e35966cc745036e3fe57d76f94c45c8069fa4c07
|
|
BLAKE2b-256 checksum How to use checksums |
12d7b96b343bfc6239d99e2b6dbc55bb5283bce08e1615f6efc9787505d2c27c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.4
|
Release files / hosker_utils-2.7.0-py3-none-any.whl
| Download URL | hosker_utils-2.7.0-py3-none-any.whl |
|---|---|
| Size | 9.1 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
719b30b4e19be06df036fcd86a52bd586ea9a1a36846ebdf26987bfd3fe8b636
|
|
BLAKE2b-256 checksum How to use checksums |
0eceb4e444052cb6a7a3a4fa0283c727624859f4412e40db088b8f0c6c705c25
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.4
|