Skip to content

Normalize release tags to vX.X.X format for python-semantic-release #569

Description

@farhan

Purpose

Normalize the release/version tag format to vX.X.X (with the v prefix) across the repos listed below.

Why this is needed

As we convert repos to python-semantic-release (PSR), PSR looks at existing tags to determine the current version and compute the next one. PSR expects tags in the form v#.#.#, but several repos currently tag versions without the v prefix (e.g. 4.0.0 instead of v4.0.0).

When the v prefix is missing, PSR fails to recognize the latest version and wrongly starts a fresh 0.1.0 release instead of bumping from the real current version. Re-tagging these repos to the vX.X.X format ensures PSR picks up the correct history and versions the next release accurately.

Original context from the Feanil:

Something to watch out for as we convert things to python semantic release — to find old versions to figure out what the next version should be. PSR looks for tags like v#.#.#, but in many of our repos we don't currently have the v prefix on version tags, so in those cases it wrongly tags a new 0.1.0 version.

Slack message

Repos to fix

These repos have their latest release/version tag without the v prefix:

Parent: #506

Activity

  1. feanil commented on Sep 23, 2026

    @feanil
    Contributor

    Tagged the 14 repos that have a real version history. Each new tag points at the same commit as the existing unprefixed tag, so PSR resolves to the version that is actually on PyPI.

    Repo New tag Commit
    acid-block v0.4.1 ad2eb138
    opaque-keys v4.0.0 ae7f1353
    ccx-keys v2.0.2 c3fe0b8c
    edx-enterprise-data v10.22.14 b1bb7477
    openedx-chem v2.0.0 15489246
    enmerkar-underscore v2.4.1 d220b9e1
    pytest-repo-health v4.0.0 d219ba93
    taxonomy-connector v4.0.0 e23cc187
    olxcleaner v0.3.0 ad7bfd47
    codejail-includes v2.0.0 1615d644
    xblock-skill-tagging v1.0.0 827ff4af
    openedx-ledger v2.0.0 a458d661
    edx-enterprise-subsidy-client v2.2.2 430228bb
    enterprise-integrated-channels v0.1.70 7bbc52f8

    Four repos are dropped from the list. web-fragments and xblock-free-text-response are archived, so they cannot be pushed to and are not PSR conversion candidates. license-manager and openedx-webhooks have no version tags at all; theirs are deployment markers like release/verawood.1 and release-2023-11-27, and both declare version = "0.1.0" in pyproject.toml. There is no earlier version for PSR to miss in those two, so starting at 0.1.0 is the right answer rather than a bug.

    Two corrections to the list. enterprise-integrated-channels is at 0.1.70, not 0.1.69; 0.1.70 went out 2026-09-11. acid-block got v0.4.1 rather than v0.4.0, because acid/__init__.py at ad2eb138, the commit the 0.4.0 tag points at, reads __version__ = '0.4.1' and PyPI has acid-xblock 0.4.1 from 2024-10-01 with no matching tag. Tagging v0.4.0 there would have let PSR compute 0.4.1 next and collide with what is already published.

    Five publish workflows fired and failed, which is expected. ccx-keys, edx-enterprise-data, openedx-chem, enmerkar-underscore and pytest-repo-health run pypi-publish.yml on push: tags: - '*', so each tag built the already-released version and got 400 File already exists back from PyPI. Nothing was published, and every dist still shows its original version and upload date. Those workflows get replaced by release.yml as each repo converts.

    One thing to watch at conversion time: openedx-chem declares 2.0.1 in chem/__init__.py and codejail-includes hardcodes 3.0.0 in setup.py, but the last release of each is 2.0.0. PSR computes the next version from commit messages off v2.0.0, so those hand-written numbers will be ignored.

    Verified 2026-09-23.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions