Skip to content

Commit 5994a3d

Browse files
fix: Fix python_name issue in runtime python classes (#3797)
* fix: Fix python_name issue in runtime python classes * chore: adding changelog file 3797.fixed.md [dependabot-skip] * chore: adding changelog file 3797.fixed.md [dependabot-skip] * fix: test * Revert "chore: adding changelog file 3797.fixed.md [dependabot-skip]" This reverts commit d2205a5. * chore: adding changelog file 3797.fixed.md [dependabot-skip] --------- Co-authored-by: pyansys-ci-bot <[email protected]>
1 parent f15b96d commit 5994a3d

File tree

5 files changed

+54
-20
lines changed

5 files changed

+54
-20
lines changed

doc/changelog.d/3797.fixed.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Fix python_name issue in runtime python classes
Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,22 @@
11
{% if sections[""] %}
2-
{% for category, val in definitions.items() if category in sections[""] %}
32

4-
{{ definitions[category]['name'] }}
5-
{% set underline = '^' * definitions[category]['name']|length %}
6-
{{ underline }}
3+
.. tab-set::
4+
5+
{%+ for category, val in definitions.items() if category in sections[""] %}
6+
7+
.. tab-item:: {{ definitions[category]['name'] }}
8+
9+
.. list-table::
10+
:header-rows: 0
11+
:widths: auto
712

813
{% for text, values in sections[""][category].items() %}
9-
- {{ text }} {{ values|join(', ') }}
10-
{% endfor %}
14+
* - {{ text }}
15+
- {{ values|join(', ') }}
1116

1217
{% endfor %}
18+
{% endfor %}
19+
1320
{% else %}
1421
No significant changes.
15-
16-
17-
{% endif %}
22+
{% endif %}

doc/source/contributing/environment_variables.rst

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,8 @@ Following is a list of environment variables that can be set to control various
5555
- Disables printing of TUI to settings API upgrade advice.
5656
* - PYFLUENT_TIMEOUT_FORCE_EXIT
5757
- Enables force exit while exiting a Fluent session and specifies the timeout in seconds.
58+
* - PYFLUENT_USE_RUNTIME_PYTHON_CLASSES
59+
- Uses runtime Python classes for settings API.
5860
* - PYFLUENT_WATCHDOG_DEBUG
5961
- Enables debugging for the PyFluent watchdog process.
6062
* - PYFLUENT_WATCHDOG_EXCEPTION_ON_ERROR

src/ansys/fluent/core/solver/flobject.py

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -200,10 +200,10 @@ def _get_python_path_comps(obj):
200200
"""Get python path components for traversing class hierarchy."""
201201
comps = []
202202
while obj:
203-
python_name = obj._python_name
203+
python_name = obj.python_name
204204
obj = obj._parent
205205
if isinstance(obj, (NamedObject, ListObject)):
206-
comps.append(obj._python_name)
206+
comps.append(obj.python_name)
207207
obj = obj._parent
208208
else:
209209
comps.append(python_name)
@@ -1407,7 +1407,7 @@ def __getitem__(self, name: str) -> ChildTypeT:
14071407
)
14081408
raise KeyError(
14091409
allowed_name_error_message(
1410-
context=self.__class__._python_name,
1410+
context=self.python_name,
14111411
trial_name=name,
14121412
allowed_values=self.get_object_names(),
14131413
)
@@ -1960,7 +1960,7 @@ def __setitem__(self, name: str, value):
19601960
else:
19611961
raise KeyError(
19621962
allowed_name_error_message(
1963-
context=self.__class__._python_name,
1963+
context=self.python_name,
19641964
trial_name=name,
19651965
allowed_values=self.get_object_names(),
19661966
)
@@ -2214,15 +2214,19 @@ def get_root(
22142214
"""
22152215
from ansys.fluent.core import CODEGEN_OUTDIR, utils
22162216

2217-
try:
2218-
settings = utils.load_module(
2219-
f"settings_{version}",
2220-
CODEGEN_OUTDIR / "solver" / f"settings_{version}.py",
2221-
)
2222-
root_cls = settings.root
2223-
except FileNotFoundError:
2217+
if os.getenv("PYFLUENT_USE_RUNTIME_PYTHON_CLASSES") == "1":
22242218
obj_info = flproxy.get_static_info()
22252219
root_cls, _ = get_cls("", obj_info, version=version)
2220+
else:
2221+
try:
2222+
settings = utils.load_module(
2223+
f"settings_{version}",
2224+
CODEGEN_OUTDIR / "solver" / f"settings_{version}.py",
2225+
)
2226+
root_cls = settings.root
2227+
except FileNotFoundError:
2228+
obj_info = flproxy.get_static_info()
2229+
root_cls, _ = get_cls("", obj_info, version=version)
22262230
root = root_cls()
22272231
root.set_flproxy(flproxy)
22282232
root._set_on_interrupt(interrupt)

tests/test_settings_api.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -639,3 +639,25 @@ def test_return_types_of_operations_on_named_objects(mixing_elbow_settings_sessi
639639
)
640640
assert var3 == solver.settings.setup.materials.fluid["air-copied"]
641641
assert var3.obj_name == "air-copied"
642+
643+
644+
@pytest.fixture
645+
def use_runtime_python_classes(monkeypatch: pytest.MonkeyPatch):
646+
monkeypatch.setenv("PYFLUENT_USE_RUNTIME_PYTHON_CLASSES", "1")
647+
648+
649+
@pytest.mark.fluent_version(">=24.2")
650+
def test_runtime_python_classes(
651+
use_runtime_python_classes, mixing_elbow_settings_session
652+
):
653+
solver = mixing_elbow_settings_session
654+
solver.setup.materials.database.copy_by_name(type="fluid", name="water-liquid")
655+
solver.settings.setup.cell_zone_conditions.fluid["elbow-fluid"] = {
656+
"material": "water-liquid"
657+
}
658+
assert (
659+
solver.settings.setup.cell_zone_conditions.fluid[
660+
"elbow-fluid"
661+
].general.material()
662+
== "water-liquid"
663+
)

0 commit comments

Comments
 (0)