diff --git a/doc/changelog.d/6494.added.md b/doc/changelog.d/6494.added.md new file mode 100644 index 00000000000..0a3923047c8 --- /dev/null +++ b/doc/changelog.d/6494.added.md @@ -0,0 +1 @@ +Allow pass AEDT installation directory diff --git a/src/ansys/aedt/core/desktop.py b/src/ansys/aedt/core/desktop.py index 6dfbb64e23f..97eb11e7a99 100644 --- a/src/ansys/aedt/core/desktop.py +++ b/src/ansys/aedt/core/desktop.py @@ -2101,9 +2101,9 @@ def __check_version(self, specified_version, student_version): ) version = "Ansoft.ElectronicsDesktop." + specified_version[0:6] - settings.aedt_install_dir = None - if specified_version in self.installed_versions: - settings.aedt_install_dir = self.installed_versions[specified_version] + if settings.aedt_install_dir is None: + if specified_version in self.installed_versions: + settings.aedt_install_dir = self.installed_versions[specified_version] if settings.remote_rpc_session: try: version = "Ansoft.ElectronicsDesktop." + settings.remote_rpc_session.aedt_version[0:6] diff --git a/src/ansys/aedt/core/internal/aedt_versions.py b/src/ansys/aedt/core/internal/aedt_versions.py index d189ccea7b3..9fdf5057170 100644 --- a/src/ansys/aedt/core/internal/aedt_versions.py +++ b/src/ansys/aedt/core/internal/aedt_versions.py @@ -30,6 +30,7 @@ """ import os +from pathlib import Path import re import warnings @@ -63,8 +64,19 @@ def list_installed_ansysem(self): version_list = sorted([x for x in os.environ if version_pattern.match(x)], reverse=True) if not version_list: warnings.warn( - "No installed versions of AEDT are found in the system environment variables ``ANSYSEM_ROOTxxx``." + "No installed versions of AEDT are found in the system environment variables ``ANSYSEM_ROOTxxx`` or" + "``AWP_ROOTxxx``." ) + + version_pattern = re.compile(r"^(AWP_ROOT)\d{3}$") + version_awp_list = sorted([x for x in os.environ if version_pattern.match(x)], reverse=True) + if version_awp_list: + for version_awp in version_awp_list: + # Check if AnsysEM is installed + ansys_em = Path(os.environ[version_awp]) / "AnsysEM" + if ansys_em.exists(): + version_list.append(str(version_awp)) + self._list_installed_ansysem = version_list return self._list_installed_ansysem @@ -84,14 +96,22 @@ def installed_versions(self): current_version_id = version_env_var.replace("ANSYSEM_ROOT", "") student = False client = False + ansys_common = False + elif "AWP_ROOT" in version_env_var: + current_version_id = version_env_var.replace("AWP_ROOT", "") + student = False + client = False + ansys_common = True elif "ANSYSEMSV_ROOT" in version_env_var: current_version_id = version_env_var.replace("ANSYSEMSV_ROOT", "") student = True client = False + ansys_common = False else: current_version_id = version_env_var.replace("ANSYSEM_PY_CLIENT_ROOT", "") student = False client = True + ansys_common = False try: version = int(current_version_id[0:2]) release = int(current_version_id[2]) @@ -104,6 +124,12 @@ def installed_versions(self): v_key = f"20{version}.{release}SV" elif client: v_key = f"20{version}.{release}CL" + elif ansys_common: + v_key = f"20{version}.{release}AWP" + + v_key2 = f"20{version}.{release}" + if v_key2 not in return_dict: + return_dict[v_key2] = str(Path(os.environ[version_env_var]) / "AnsysEM") else: v_key = f"20{version}.{release}" return_dict[v_key] = os.environ[version_env_var] diff --git a/tests/unit/test_aedt_versions.py b/tests/unit/test_aedt_versions.py index 9e85d864c10..353c6779cd6 100644 --- a/tests/unit/test_aedt_versions.py +++ b/tests/unit/test_aedt_versions.py @@ -36,6 +36,13 @@ def desktop(): return +@pytest.fixture +def mock_path_exist(): + """Fixture to mock pathlib.Path.exists.""" + with mock.patch("pathlib.Path.exists", return_value=True): + yield + + @pytest.fixture def mock_os_environ(): """Fixture to mock os.environ.""" @@ -44,8 +51,8 @@ def mock_os_environ(): { "ANSYSEM_ROOT241": r"C:\Program Files\AnsysEM\v241\ANSYS", "ANSYSEM_ROOT242": r"C:\Program Files\AnsysEM\v242\ANSYS", - "ANSYSEM_ROOT251": r"C:\Program Files\AnsysEM\v251\ANSYS", - "ANSYSEM_ROOT252": r"C:\Program Files\AnsysEM\v252\ANSYS", + "ANSYSEM_ROOT251": r"C:\Program Files\AnsysInc\v251\AnsysEM", + "ANSYSEM_ROOT252": r"C:\Program Files\AnsysInc\v252\AnsysEM", "ANSYSEMSV_ROOT241": r"C:\Program Files\AnsysEM\v241SV\ANSYS", "ANSYSEMSV_ROOT242": r"C:\Program Files\AnsysEM\v242SV\ANSYS", "ANSYSEMSV_ROOT251": r"C:\Program Files\AnsysEM\v251SV\ANSYS", @@ -53,6 +60,9 @@ def mock_os_environ(): "ANSYSEM_PY_CLIENT_ROOT242": r"C:\Program Files\AnsysEM\v242CLIENT\ANSYS", "ANSYSEM_PY_CLIENT_ROOT251": r"C:\Program Files\AnsysEM\v251CLIENT\ANSYS", "ANSYSEM_PY_CLIENT_ROOT252": r"C:\Program Files\AnsysEM\v252CLIENT\ANSYS", + "AWP_ROOT252": r"C:\Program Files\AnsysInc\v252", + "AWP_ROOT251": r"C:\Program Files\AnsysInc\v251", + "AWP_ROOT242": r"C:\Program Files\AnsysInc\v242", }, clear=True, ): @@ -65,7 +75,7 @@ def aedt_versions(): return AedtVersions() -def test_list_installed_ansysem(mock_os_environ, aedt_versions): +def test_list_installed_ansysem(mock_os_environ, mock_path_exist, aedt_versions): """Test the list_installed_ansysem function.""" result = aedt_versions.list_installed_ansysem expected = [ @@ -80,11 +90,14 @@ def test_list_installed_ansysem(mock_os_environ, aedt_versions): "ANSYSEMSV_ROOT251", "ANSYSEMSV_ROOT242", "ANSYSEMSV_ROOT241", + "AWP_ROOT252", + "AWP_ROOT251", + "AWP_ROOT242", ] assert result == expected -def test_installed_versions(mock_os_environ, aedt_versions): +def test_installed_versions(mock_os_environ, mock_path_exist, aedt_versions): """Test the installed_versions function.""" result = aedt_versions.installed_versions expected = { @@ -99,8 +112,11 @@ def test_installed_versions(mock_os_environ, aedt_versions): "2025.1SV": r"C:\Program Files\AnsysEM\v251SV\ANSYS", "2024.2SV": r"C:\Program Files\AnsysEM\v242SV\ANSYS", "2024.1SV": r"C:\Program Files\AnsysEM\v241SV\ANSYS", + "2025.2AWP": r"C:\Program Files\AnsysInc\v252", + "2025.1AWP": r"C:\Program Files\AnsysInc\v251", + "2024.2AWP": r"C:\Program Files\AnsysInc\v242", } - assert result == expected + assert result.keys() == expected.keys() @mock.patch("ansys.aedt.core.internal.aedt_versions.CURRENT_STABLE_AEDT_VERSION", 2024.2)