Skip to content

Commit a1bfa92

Browse files
authored
Fix server_to_ansys_version (#2013)
* Fix/refactor ansys.dpf.core._version.ServerToAnsysVersion * Add testing * Refactor using packaging.version, add comments. * Remove support for proposed DPF versioning YEAR.REVISION.PATCH * Update test_checkversion.test_version
1 parent f89b36c commit a1bfa92

File tree

3 files changed

+53
-25
lines changed

3 files changed

+53
-25
lines changed

src/ansys/dpf/core/_version.py

+11-24
Original file line numberDiff line numberDiff line change
@@ -22,36 +22,23 @@
2222

2323
"""Version for ansys-dpf-core."""
2424

25+
from packaging.version import parse as parse_version
26+
2527
# Minimal DPF server version supported
2628
min_server_version = "4.0"
2729

2830

2931
class ServerToAnsysVersion:
30-
legacy_version_map = {
31-
"1.0": "2021R1",
32-
"2.0": "2021R2",
33-
"3.0": "2022R1",
34-
"4.0": "2022R2",
35-
"5.0": "2023R1",
36-
"6.0": "2023R2",
37-
"6.1": "2023R2",
38-
"6.2": "2023R2",
39-
"7.0": "2024R1",
40-
"7.1": "2024R1",
41-
"8.0": "2024R2",
42-
"8.1": "2024R2",
43-
"8.2": "2024R2",
44-
"9.0": "2025R1",
45-
"9.1": "2025R1",
46-
"10.0": "2025R2",
47-
}
48-
4932
def __getitem__(self, item):
50-
if len(item) == 3:
51-
return self.legacy_version_map[item]
52-
else:
53-
split = item.split(".")
54-
return split[0] + "R" + split[1]
33+
version = parse_version(item)
34+
# The current DPF versioning scheme is MAJOR.MINOR.PATCH
35+
# Compute release version equivalent (YEAR+'R'+REVISION)
36+
# The revision is 'R1' for any odd major DPF version, 'R2' for even major versions.
37+
ansys_revision = 2 - version.major % 2
38+
# The year is 2021 for DPF 1.0, and bumped every two releases.
39+
ansys_year = 2020 + version.major // 2 + version.major % 2
40+
# Return the corresponding Ansys release
41+
return f"{ansys_year}R{ansys_revision}"
5542

5643

5744
server_to_ansys_version = ServerToAnsysVersion()

tests/test_checkversion.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -112,4 +112,4 @@ def test_version():
112112
from ansys.dpf.core._version import server_to_ansys_version
113113

114114
assert server_to_ansys_version["1.0"] == "2021R1"
115-
assert server_to_ansys_version["2099.9"] == "2099R9"
115+
assert server_to_ansys_version["10.0.12"] == "2025R2"

tests/test_version.py

+41
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
# Copyright (C) 2020 - 2025 ANSYS, Inc. and/or its affiliates.
2+
# SPDX-License-Identifier: MIT
3+
#
4+
#
5+
# Permission is hereby granted, free of charge, to any person obtaining a copy
6+
# of this software and associated documentation files (the "Software"), to deal
7+
# in the Software without restriction, including without limitation the rights
8+
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9+
# copies of the Software, and to permit persons to whom the Software is
10+
# furnished to do so, subject to the following conditions:
11+
#
12+
# The above copyright notice and this permission notice shall be included in all
13+
# copies or substantial portions of the Software.
14+
#
15+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17+
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18+
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20+
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21+
# SOFTWARE.
22+
23+
import pytest
24+
25+
from ansys.dpf.core._version import server_to_ansys_version
26+
27+
28+
@pytest.mark.parametrize(
29+
"server_version,ansys_version",
30+
[
31+
# Current DPF versioning
32+
("1.0", "2021R1"),
33+
("2.0", "2021R2"),
34+
("2.1", "2021R2"),
35+
("3.0", "2022R1"),
36+
("2023.0", "3032R1"),
37+
("2023.1.12", "3032R1"),
38+
],
39+
)
40+
def test_server_to_ansys_version(server_version, ansys_version):
41+
assert server_to_ansys_version[server_version] == ansys_version

0 commit comments

Comments
 (0)