From 713c49b4c41ad2ffcf6d7bb3d9396e34368de628 Mon Sep 17 00:00:00 2001 From: golem Date: Sun, 4 Oct 2026 19:09:02 -0600 Subject: [PATCH] =?UTF-8?q?doc:=20Python=20support=20policy=20=E2=80=94=20?= =?UTF-8?q?drop=20EOL=20versions=20over=20contorting=20code?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 5.5 (1M context) --- CLAUDE.md | 4 ++++ app_skellington/_version.py | 32 ++++++++++++++++++-------------- 2 files changed, 22 insertions(+), 14 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index 73ccd6a..2ec8a91 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -27,6 +27,10 @@ python -m setuptools_scm # print the version the build will get - **Lint is not currently clean on `main`.** black wants to reformat 2 files, isort flags 3, and flake8 reports W391 and W503. Keep unrelated reformatting out of feature diffs. - Tests cover only `cfg` (ConfigObj fixtures live in `tests/cfg/`) plus a CommandTree constructor smoke test. `tests/test_log.py` is empty. +## Python support policy + +`requires-python` is `>=3.8`, and the claim should match what CI actually tests. When an end-of-life Python version starts failing, drop it: raise `requires-python` and remove its CI lane. Don't add compat shims, version branches or contorted code just to keep it working. Clean code matters more than supporting EOL runtimes. Users on old Pythons keep the older releases on PyPI. + ## Architecture Package layout: `_bootstrap.py`, `_util.py`, `cfg.py`, `log.py`, `cli.py` and `app_container.py`. `__init__.py` re-exports the public names explicitly. diff --git a/app_skellington/_version.py b/app_skellington/_version.py index 8ec8685..8b8b410 100644 --- a/app_skellington/_version.py +++ b/app_skellington/_version.py @@ -1,20 +1,24 @@ -# file generated by setuptools-scm +# file generated by vcs-versioning # don't change, don't track in version control +from __future__ import annotations -__all__ = ["__version__", "__version_tuple__", "version", "version_tuple"] - -TYPE_CHECKING = False -if TYPE_CHECKING: - from typing import Tuple, Union - - VERSION_TUPLE = Tuple[Union[int, str], ...] -else: - VERSION_TUPLE = object +__all__ = [ + "__version__", + "__version_tuple__", + "version", + "version_tuple", + "__commit_id__", + "commit_id", +] version: str __version__: str -__version_tuple__: VERSION_TUPLE -version_tuple: VERSION_TUPLE +__version_tuple__: tuple[int | str, ...] +version_tuple: tuple[int | str, ...] +commit_id: str | None +__commit_id__: str | None -__version__ = version = "0.3.0.dev7+gd155176.d20250223" -__version_tuple__ = version_tuple = (0, 3, 0, "dev7", "gd155176.d20250223") +__version__ = version = '0.3.0.dev10+gda9568b4f.d20261005' +__version_tuple__ = version_tuple = (0, 3, 0, 'dev10', 'gda9568b4f.d20261005') + +__commit_id__ = commit_id = 'gda9568b4f'