Changes for the upcoming release can be found in the "changelog.d" directory in our repository.
This section covers the changes between major version 2 and version 3.
- Released
2023-10-09
- Maintainer
418
: Replace~collection.OrderedDict
withdict
.The dict datatype is ordered since Python 3.7. As we do not support Python 3.6 anymore, it can be considered safe to avoid
~collection.OrderedDict
. Related to419
.426
: Fix~semver.version.Version.replace
method to use the derived class of an instance instead of~semver.version.Version
class.
431
: Clarify version policy for the different semver versions (v2, v3, >v3) and the supported Python versions.432
: Improve external doc links to Python and Pydantic.
417
: Amend GitHub Actions to check against MacOS.
420
: Introduce :py~typing.ClassVar
for some~semver.version.Version
class variables, mainly~semver.version.Version.NAMES
and some private.421
: Insert mypy configuration intopyproject.toml
and remove config options fromtox.ini
.
- Released
2023-06-14
- Maintainer
Tom Schraitle
410
: Export functions properly using__all__
in__init__.py
.
- Released
2023-04-02
- Maintainer
Tom Schraitle
291
: Disallow negative numbers in VersionInfo arguments formajor
,minor
, andpatch
.310
: Rework API documentation. Follow a more "semi-manual" attempt and add auto directives intodocs/api.rst
.344
: Allow empty string, a string with a prefix, orNone
as token in~semver.version.Version.bump_build
and~semver.version.Version.bump_prerelease
.374
: Correct Towncrier's config entries in thepyproject.toml
file. The old entries[[tool.towncrier.type]]
are deprecated and need to be replaced by[tool.towncrier.fragment.<TYPE>]
.384
: General cleanup, reformat files:- Reformat source code with black again as some config options did accidentely exclude the semver source code. Mostly remove some includes/excludes in the black config.
- Integrate concurrency in GH Action
- Ignore Python files on project dirs in .gitignore
- Remove unused patterns in MANIFEST.in
- Use
extend-exclude
for flake insetup.cfg
` and adapt list. - Use
skip_install=True
intox.ini
for black
393
: Fix commandpython -m semver
to avoid the error "invalid choice"396
: Calling~semver.version.Version.parse
on a derived class will show correct type of derived class.
169
: Deprecate CLI functions not imported fromsemver.cli
.234
: Insetup.py
simplified file and removeTox
andClean
classes284
: Deprecate the use of~Version.isvalid
.Rename
~semver.version.Version.isvalid
to~semver.version.Version.is_valid
for consistency reasons with~semver.version.Version.is_compatible
.290
: For semver 3.0.0-alpha0 deprecated:- 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
setup.py
simplified file and removeTox
andClean
classes - Remove old Python versions (2.7, 3.4, 3.5, and pypy) from Travis
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 agreed to remove support for Python 3.6.
402
: Keepsemver.compare <semver._deprecated.compare>
.Although it breaks consistency with module level functions, it seems it's a much needed/used function. It's still unclear if we should deprecate this function or not (that's why we use :py
PendingDeprecationWarning
).As we don't have a uniform initializer yet, this function stays in the
_deprecated.py
file for the time being until we find a better solution. See258
for details.
169
: Create semver package and split code among different modules in the packages:- Remove
semver.py
- Create
src/semver/__init__.py
- Create
src/semver/cli.py
for all CLI methods - Create
src/semver/_deprecated.py
for thedeprecated
decorator and other deprecated functions - Create
src/semver/__main__.py
to allow calling the CLI usingpython -m semver
- Create
src/semver/_types.py
to hold type aliases - Create
src/semver/version.py
to hold theVersion
class (old nameVersionInfo
) and its utility functions - Create
src/semver/__about__.py
for all the metadata variables
- Remove
213
: Add typing information284
: Implement~semver.version.Version.is_compatible
to make "is self compatible with X".305
: Rename~semver.version.VersionInfo
to~semver.version.Version
but keep an alias for compatibility359
: Add optional parameteroptional_minor_and_patch
in~semver.version.Version.parse
to allow optional minor and patch parts.362
: Make~semver.version.Version.match
accept a bare version string as match expression, defaulting to equality testing.364
: Enhancepyproject.toml
to make it possible to use thepyproject-build
command from the build module. For more information, seebuild-semver
.365
: Improvepyproject.toml
.- Use setuptools, add metadata. Taken approach from A Practical Guide to Setuptools and Pyproject.toml.
- Doc: Describe building of semver
- Remove
.travis.yml
inMANIFEST.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
276
: Document how to create a sublass from~semver.version.VersionInfo
class284
: Document deprecation of~semver.version.Version.isvalid
.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.
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~semver.version.Version
rename.312
: Rework "Usage" section.- Mention the rename of
~semver.version.VersionInfo
to~semver.version.Version
class - Remove semver. prefix in doctests to make examples shorter
- Correct some references to dunder methods like
~semver.version.Version.__getitem__
,~semver.version.Version.__gt__
etc. - Remove inconsistencies and mention module level function as deprecated and discouraged from using
- Make empty :py
super
call insemverwithvprefix.py
example
- Mention the rename of
315
: Improve release procedure text335
: 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 file343
: 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"
392
: Fix the example in the documentation for combining semver and pydantic.
169
: Adapted infrastructure code to the new project layout.- Replace
setup.py
withsetup.cfg
because thesetup.cfg
is easier to use - Adapt documentation code snippets where needed
- Adapt tests
- Changed the
deprecated
to hardcode thesemver
package name in the warning.
Increase coverage to 100% for all non-deprecated APIs
- Replace
290
: Add supported Python versions toblack
.304
: Support PEP-561py.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.309
: Some (private) functions from thesemver.version
module has been changed.The following functions got renamed:
- function
semver.version.comparator
got renamed tosemver.version._comparator
as it is only useful inside the~semver.version.Version
class. - function
semver.version.cmp
got renamed tosemver.version._cmp
as it is only useful inside the~semver.version.Version
class.
The following functions got integrated into the
~semver.version.Version
class:- function
semver.version._nat_cmd
as a classmethod - function
semver.version.ensure_str
- function
313
: Correcttox.ini
forchangelog
entry to skip installation for semver. This should speed up the execution of towncrier.316
: Comparisons of~semver.version.Version
class and other types return now a :pyNotImplemented
constant instead of a :pyTypeError
exception.The NotImplemented section of the Python documentation recommends returning this constant when comparing with
__gt__
,__lt__
, and other comparison operators to "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.378
: Fix some typos in Towncrier configuration388
: For pytest, switch to the more modernimportlib
approach as it doesn't require to modifysys.path
: https://docs.pytest.org/en/7.2.x/explanation/pythonpath.html389
: Add public class variableVersion.NAMES <semver.version.Version.NAMES>
.This class variable contains a tuple of strings that contains the names of all attributes of a Version (like
"major"
,"minor"
etc).In cases we need to have dynamical values, this makes it easier to iterate.