Skip to content

Release-time versioning with [Unreleased]; the shims name 4.0.0 as their removal - #88

Merged
click0 merged 3 commits into
mainfrom
claude/refactor-data-masking-lIcWN
Oct 30, 2026
Merged

click0 merged 3 commits into
mainfrom
claude/refactor-data-masking-lIcWN

Conversation

@click0

@click0 click0 commented Oct 30, 2026

Copy link
Copy Markdown
Owner

Two commits.

Release process: the version is bumped at release

  • Every commit used to bump the patch version (80-odd versions in CHANGELOG.md, most of them one commit). Now changes collect under ## [Unreleased]; the release commit sets the version in datamasking/_version.py and data_masking.py (CI still checks they match) and renames the section to ## [X.Y.Z] - YYYY-MM.
  • tests/test_release_notes.py: the per-push gate accepts one [Unreleased] section, at the top, and still requires a section for the current version (the newest versioned section must be it).
  • release_notes.py --strict refuses a release while [Unreleased] still holds entries; release.yml passes it for tag builds (not for dry-runs). A tag whose version has no section was already refused.
  • CLAUDE.md and the release.yml header describe the procedure. This PR does not bump the version: its entries are under [Unreleased].

Shims: removal in 4.0.0

  • masking/, unmasking/, modules/, rank_data.py are deprecated since 3.0; removing them breaks old imports, so it is the next major. Every DeprecationWarning now says "will be removed in 4.0.0"; docstrings, README (EN/UK), CLAUDE.md and the CHANGELOG say the same, and test_compat_shims.py asserts the text.

Locally: pytest tests/ 1538 passed, 1 skipped; mypy datamasking/ no issues; flake8 --select=E9,F63,F7,F82 clean.


Generated by Claude Code

…der [Unreleased]

Every commit used to bump the patch version, which left 80-odd versions
in CHANGELOG.md, most of them one commit each. Now changes go under
`## [Unreleased]`, and the release commit sets the version in
datamasking/_version.py and data_masking.py and renames the section.

The per-push test accepts one [Unreleased] section, at the top, and still
requires a section for the current version (the newest versioned one).
release_notes.py --strict, which release.yml passes for a tag, refuses to
release while [Unreleased] still holds entries; a missing section for the
tag's version already stopped the release. CLAUDE.md describes the rule.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KWNMnT1qhC9uKcyrNbjL9t
Generated-With: Claude Code 2.1.42
… them

The root shims (masking/, unmasking/, modules/, rank_data.py) have been
deprecated since 3.0 without saying until when. Removing them breaks the
old import paths, so it waits for the next major version: each warning
now says "will be removed in 4.0.0", and so do the shims' docstrings,
README (EN/UK), CLAUDE.md and the [Unreleased] changelog. The shim test
holds every warning to that text.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KWNMnT1qhC9uKcyrNbjL9t
Generated-With: Claude Code 2.1.42
ubuntu-latest is now Ubuntu 26.04, and actions/setup-python has no
Python 3.9 for it ("The version '3.9' with architecture 'x64' was not
found for Ubuntu 26.04"), so the py3.9 job failed before any test ran,
on every branch. 3.9 is the floor of requires-python, so it keeps its
job: the matrix entry runs on ubuntu-24.04 through a `runner` key, and
its name stays "Tests (ubuntu-latest, py3.9)".

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KWNMnT1qhC9uKcyrNbjL9t
Generated-With: Claude Code 2.1.42
@click0
click0 merged commit ca14807 into main Oct 30, 2026
16 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants