Changelog semver3 development

This site contains all the changes during the development phase.

Version 3.0.0-dev.4




Bug Fixes

  • #374: Correct Towncrier’s config entries in the pyproject.toml file. The old entries [[tool.towncrier.type]] are deprecated and need to be replaced by [tool.towncrier.fragment.<TYPE>].


  • #372: Deprecate support for Python 3.6.

    Python 3.6 reached its end of life and isn’t supported anymore. At the time of writing (Dec 2022), the lowest version is 3.7.

    Although the poll didn’t cast many votes, the majority agree to remove support for Python 3.6.

Improved Documentation

  • #335: Add new section “Converting versions between PyPI and semver” the limitations and possible use cases to convert from one into the other versioning scheme.

  • #340: Describe how to get version from a file

  • #343: Describe combining Pydantic with semver in the “Advanced topic” section.

  • #350: Restructure usage section. Create subdirectory “usage/” and splitted all section into different files.

  • #351: Introduce new topics for:

    • “Migration to semver3”

    • “Advanced topics”


  • PR #359: Add optional parameter optional_minor_and_patch in Version.parse() to allow optional minor and patch parts.

  • PR #362: Make Version.match() accept a bare version string as match expression, defaulting to equality testing.

  • #364: Enhance pyproject.toml to make it possible to use the pyproject-build command from the build module. For more information, see Building semver.

  • #365: Improve pyproject.toml.

    • Use setuptools, add metadata. Taken approach from A Practical Guide to Setuptools and Pyproject.toml.

    • Doc: Describe building of semver

    • Remove .travis.yml in (not needed anymore)

    • Distinguish between Python 3.6 and others in tox.ini

    • Add skip_missing_interpreters option for tox.ini

    • GH Action: Upgrade setuptools and setuptools-scm and test against 3.11.0-rc.2

Trivial/Internal Changes

  • #378: Fix some typos in Towncrier configuration

Version 3.0.0-dev.3




Tom Schraitle

Bug Fixes

  • #310: Rework API documentation. Follow a more “semi-manual” attempt and add auto directives into docs/api.rst.

Improved Documentation

  • #312: Rework “Usage” section.

    • Mention the rename of VersionInfo to Version class

    • Remove semver. prefix in doctests to make examples shorter

    • Correct some references to dunder methods like __getitem__(), __gt__() etc.

    • Remove inconsistencies and mention module level function as deprecated and discouraged from using

    • Make empty super call in example

  • #315: Improve release procedure text

Trivial/Internal Changes

  • #309: Some (private) functions from the semver.version module has been changed.

    The following functions got renamed:

    • function semver.version.comparator() got renamed to semver.version._comparator() as it is only useful inside the Version class.

    • function semver.version.cmp() got renamed to semver.version._cmp() as it is only useful inside the Version class.

    The following functions got integrated into the Version class:

    • function semver.version._nat_cmd() as a classmethod

    • function semver.version.ensure_str()

  • #313: Correct tox.ini for changelog entry to skip installation for semver. This should speed up the execution of towncrier.

  • #316: Comparisons of Version class and other types return now a NotImplemented constant instead of a TypeError exception.

    In the Python documentation, NotImplemented recommends returning this constant when comparing with __gt__, __lt__, and other comparison operators “to indicate that the operation is not implemented with respect to the other type”.

  • #319: Introduce stages in .travis.yml The config file contains now two stages: check and test. If check fails, the test stage won’t be executed. This could speed up things when some checks fails.

  • #322: Switch from Travis CI to GitHub Actions.

  • #347: Support Python 3.10 in GitHub Action and other config files.

Version 3.0.0-dev.2




Tom Schraitle



  • #169: Create semver package and split code among different modules in the packages.

    • Remove

    • Create src/semver/

    • Create src/semver/ for all CLI methods

    • Create src/semver/ for the deprecated decorator and other deprecated functions

    • Create src/semver/ to allow calling the CLI using python -m semver

    • Create src/semver/ to hold type aliases

    • Create src/semver/ to hold the Version class (old name VersionInfo) and its utility functions

    • Create src/semver/ for all the metadata variables

  • #305: Rename VersionInfo to Version but keep an alias for compatibility

Improved Documentation

  • #304: Several improvements in documentation:

    • Reorganize API documentation.

    • Add migration chapter from semver2 to semver3.

    • Distinguish between changlog for version 2 and 3

  • #305: Add note about Version rename.

Trivial/Internal Changes

  • #169: Adapted infrastructure code to the new project layout.

    • Replace with setup.cfg because the setup.cfg is easier to use

    • Adapt documentation code snippets where needed

    • Adapt tests

    • Changed the deprecated to hardcode the semver package name in the warning.

    Increase coverage to 100% for all non-deprecated APIs

  • #304: Support PEP-561 py.typed.

    According to the mentioned PEP:

    “Package maintainers who wish to support type checking of their code MUST add a marker file named py.typed to their package supporting typing.”

    Add package_data to setup.cfg to include this marker in dist and whl file.

Version 3.0.0-dev.1




Tom Schraitle


  • PR #290: For semver 3.0.0-alpha0:

    • Remove anything related to Python2

    • In tox.ini and .travis.yml Remove targets py27, py34, py35, and pypy. Add py38, py39, and nightly (allow to fail)

    • In simplified file and remove Tox and Clean classes

    • Remove old Python versions (2.7, 3.4, 3.5, and pypy) from Travis

  • #234: In simplified file and remove Tox and Clean classes


  • PR #290: Create semver 3.0.0-alpha0

    • Update README.rst, mention maintenance branch maint/v2.

    • Remove old code mainly used for Python2 compatibility, adjusted code to support Python3 features.

    • Split test suite into separate files under tests/ directory

    • Adjust and update Requires Python >=3.6.* Extract metadata directly from source (affects all the __version__, __author__ etc. variables)

  • #270: Configure Towncrier (PR #273:)

    • Add changelog.d/.gitignore to keep this directory

    • Create changelog.d/README.rst with some descriptions

    • Add changelog.d/_template.rst as Towncrier template

    • Add [tool.towncrier] section in pyproject.toml

    • Add “changelog” target into tox.ini. Use it like tox -e changelog -- CMD whereas CMD is a Towncrier command. The default tox -e changelog calls Towncrier to create a draft of the changelog file and output it to stdout.

    • Update documentation and add include a new section “Changelog” included from changelog.d/README.rst.

  • #276: Document how to create a sublass from VersionInfo class

  • #213: Add typing information

Bug Fixes

  • #291: Disallow negative numbers in VersionInfo arguments for major, minor, and patch.

Improved Documentation

  • PR #290: Several improvements in the documentation:

    • New layout to distinguish from the semver2 development line.

    • Create new logo.

    • Remove any occurances of Python2.

    • Describe changelog process with Towncrier.

    • Update the release process.

Trivial/Internal Changes

  • PR #290: Add supported Python versions to black.