From 4e0b7534b68b5b4855b20f030c2e5e5e92074c6d Mon Sep 17 00:00:00 2001 From: David Bold Date: Thu, 6 Jul 2023 21:23:51 +0200 Subject: [PATCH 1/3] Update doc string for python 3.12 --- docs/usage/convert-version-into-different-types.rst | 2 +- docs/usage/create-a-version.rst | 2 +- src/semver/version.py | 3 +-- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/docs/usage/convert-version-into-different-types.rst b/docs/usage/convert-version-into-different-types.rst index 6948438c..e0af7076 100644 --- a/docs/usage/convert-version-into-different-types.rst +++ b/docs/usage/convert-version-into-different-types.rst @@ -17,7 +17,7 @@ It is possible to convert a :class:`~semver.version.Version` instance: >>> v = Version(major=3, minor=4, patch=5) >>> v.to_dict() - OrderedDict([('major', 3), ('minor', 4), ('patch', 5), ('prerelease', None), ('build', None)]) + OrderedDict({'major': 3, 'minor': 4, 'patch': 5, 'prerelease': None, 'build': None}) * Into a tuple with :meth:`~semver.version.Version.to_tuple`:: diff --git a/docs/usage/create-a-version.rst b/docs/usage/create-a-version.rst index 48bb58a1..36c27a07 100644 --- a/docs/usage/create-a-version.rst +++ b/docs/usage/create-a-version.rst @@ -90,7 +90,7 @@ Depending on your use case, the following methods are available: To access individual parts, you can use the function :func:`semver.parse`:: >>> semver.parse("3.4.5-pre.2+build.4") - OrderedDict([('major', 3), ('minor', 4), ('patch', 5), ('prerelease', 'pre.2'), ('build', 'build.4')]) + OrderedDict({'major': 3, 'minor': 4, 'patch': 5, 'prerelease': 'pre.2', 'build': 'build.4'}) If you pass an invalid version string you will get a :py:exc:`ValueError`:: diff --git a/src/semver/version.py b/src/semver/version.py index d2f336c0..6d86e1f8 100644 --- a/src/semver/version.py +++ b/src/semver/version.py @@ -228,8 +228,7 @@ def to_dict(self) -> VersionDict: ``patch``, ``prerelease``, and ``build``. >>> semver.Version(3, 2, 1).to_dict() - OrderedDict([('major', 3), ('minor', 2), ('patch', 1), \ -('prerelease', None), ('build', None)]) + OrderedDict({'major': 3, 'minor': 4, 'patch': 5, 'prerelease': None, 'build': None}) """ return collections.OrderedDict( ( From a34e218cc1b79433bc7ca0d9f2d5aff98fbfa171 Mon Sep 17 00:00:00 2001 From: Tom Schraitle Date: Fri, 7 Jul 2023 08:04:30 +0200 Subject: [PATCH 2/3] Fix from black --- src/semver/version.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/semver/version.py b/src/semver/version.py index 6d86e1f8..df418555 100644 --- a/src/semver/version.py +++ b/src/semver/version.py @@ -228,7 +228,8 @@ def to_dict(self) -> VersionDict: ``patch``, ``prerelease``, and ``build``. >>> semver.Version(3, 2, 1).to_dict() - OrderedDict({'major': 3, 'minor': 4, 'patch': 5, 'prerelease': None, 'build': None}) + OrderedDict({'major': 3, 'minor': 4, 'patch': 5, 'prerelease': None, \ + 'build': None}) """ return collections.OrderedDict( ( From 686ce6711a6d31744a9baf67c90d64709c14034f Mon Sep 17 00:00:00 2001 From: Tom Schraitle Date: Fri, 7 Jul 2023 13:53:20 +0200 Subject: [PATCH 3/3] se #doctest: +SKIP to avoid OrderedDict result The OrderedDict.__repr__ method was changed in Python 3.12 to output a different string than before (see #418 for details). The respective doctests which show the output was marked as "skipped" with the above directive. We keep the test for documentation purpuses. In the test tests/test_semver.py::test_should_versioninfo_to_dict we test the keys and values separately. --- docs/usage/convert-version-into-different-types.rst | 2 +- docs/usage/create-a-version.rst | 2 +- src/semver/version.py | 2 +- tests/test_semver.py | 1 + 4 files changed, 4 insertions(+), 3 deletions(-) diff --git a/docs/usage/convert-version-into-different-types.rst b/docs/usage/convert-version-into-different-types.rst index e0af7076..b40895da 100644 --- a/docs/usage/convert-version-into-different-types.rst +++ b/docs/usage/convert-version-into-different-types.rst @@ -16,7 +16,7 @@ It is possible to convert a :class:`~semver.version.Version` instance: * Into a dictionary with :meth:`~semver.version.Version.to_dict`:: >>> v = Version(major=3, minor=4, patch=5) - >>> v.to_dict() + >>> v.to_dict() #doctest: +SKIP OrderedDict({'major': 3, 'minor': 4, 'patch': 5, 'prerelease': None, 'build': None}) * Into a tuple with :meth:`~semver.version.Version.to_tuple`:: diff --git a/docs/usage/create-a-version.rst b/docs/usage/create-a-version.rst index 36c27a07..04d7a8a3 100644 --- a/docs/usage/create-a-version.rst +++ b/docs/usage/create-a-version.rst @@ -89,7 +89,7 @@ Depending on your use case, the following methods are available: To access individual parts, you can use the function :func:`semver.parse`:: - >>> semver.parse("3.4.5-pre.2+build.4") + >>> semver.parse("3.4.5-pre.2+build.4") #doctest: +SKIP OrderedDict({'major': 3, 'minor': 4, 'patch': 5, 'prerelease': 'pre.2', 'build': 'build.4'}) If you pass an invalid version string you will get a :py:exc:`ValueError`:: diff --git a/src/semver/version.py b/src/semver/version.py index df418555..280bb822 100644 --- a/src/semver/version.py +++ b/src/semver/version.py @@ -227,7 +227,7 @@ def to_dict(self) -> VersionDict: :return: an OrderedDict with the keys in the order ``major``, ``minor``, ``patch``, ``prerelease``, and ``build``. - >>> semver.Version(3, 2, 1).to_dict() + >>> semver.Version(3, 2, 1).to_dict() #doctest: +SKIP OrderedDict({'major': 3, 'minor': 4, 'patch': 5, 'prerelease': None, \ 'build': None}) """ diff --git a/tests/test_semver.py b/tests/test_semver.py index 782d5c79..add9bb64 100644 --- a/tests/test_semver.py +++ b/tests/test_semver.py @@ -28,6 +28,7 @@ def test_should_versioninfo_to_dict(version): resultdict = version.to_dict() assert isinstance(resultdict, dict), "Got type from to_dict" assert list(resultdict.keys()) == ["major", "minor", "patch", "prerelease", "build"] + assert tuple(resultdict.values()) == tuple(version) def test_should_versioninfo_to_tuple(version):