Skip to content

Commit a253805

Browse files
docs: Add Podman Usage Examples and Documentation Improvements [skip tests] (#4224)
**Summary** This pull request enhances the documentation of search feature and user guidance for running Ansys Fluent containers with Podman. The changes include: - Added new examples for search feature. - Added unique examples for each case. - Added Podman command-line usage examples: Step-by-step instructions for pulling Docker images into Podman, verifying images, and running containers in both solver and meshing modes. - Updated PyFluent integration instructions: Clear guidance on using PyFluent with Podman, including environment variable configuration and example Python code. - Improved formatting and clarity: - Reorganized documentation sections for better readability and consistency. **Details** Users are now provided with explicit Podman commands to: - Pull images from the Docker daemon into Podman. - List local Podman images. - Run Ansys Fluent containers with the required license environment variable. - Added a dedicated section for running containers using PyFluent, with updated code snippets and environment variable setup. - Enhanced documentation structure with clear section headers and improved code formatting for ease of use. **Motivation** These updates address new examples for search feature and user requests for Podman support and make it easier for both new and existing users to run Ansys Fluent containers in different environments. Please review and let me know if further changes are needed! --------- Co-authored-by: pyansys-ci-bot <[email protected]>
1 parent c78f2e2 commit a253805

File tree

7 files changed

+139
-79
lines changed

7 files changed

+139
-79
lines changed

doc/changelog.d/4224.documentation.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Add podman usage examples and documentation improvements [skip tests]

doc/source/user_guide/make_container_image.rst

Lines changed: 55 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -63,13 +63,13 @@ Run Docker container using the command line
6363

6464
When you run the Docker container, you must specify the Ansys license file.
6565

66-
Execute this command to run the Docker container in solver mode:
66+
To launch the container in solution mode, use:
6767

6868
.. code:: console
6969
7070
sudo docker run -it --name ansys-inc -e ANSYSLMD_LICENSE_FILE=<license file or server> ansys_inc 3ddp -gu
7171
72-
Execute this command to run the Docker container in meshing mode:
72+
To launch the container in meshing mode, use:
7373

7474
.. code:: console
7575
@@ -79,14 +79,65 @@ Execute this command to run the Docker container in meshing mode:
7979
Run Docker container using PyFluent
8080
-----------------------------------
8181

82-
Install `PyFluent <https://github.com/ansys/pyfluent>`_ and execute this code
83-
to run the Docker container using PyFluent:
82+
1. Install `PyFluent <https://github.com/ansys/pyfluent>`_.
83+
2. Use the following Python code to run the container:
8484

8585
.. code:: python
8686
8787
import os
8888
import ansys.fluent.core as pyfluent
89+
os.environ["PYFLUENT_USE_DOCKER_COMPOSE"] = "1"
8990
os.environ["ANSYSLMD_LICENSE_FILE"] = "<license file or server>"
9091
custom_config = {'fluent_image': 'ansys_inc:latest', 'mount_source': f"{os.getcwd()}", 'auto_remove': False}
9192
solver_session = pyfluent.launch_fluent(container_dict=custom_config)
9293
94+
95+
Run Podman container using the command line
96+
-------------------------------------------
97+
98+
Follow these steps to pull and run a Fluent container using Podman.
99+
100+
1. Pull the Docker image into Podman:
101+
102+
.. code:: console
103+
104+
sudo podman pull docker-daemon:ansys-inc:latest
105+
106+
107+
2. Verify the image in the local Podman registry:
108+
109+
.. code:: console
110+
111+
sudo podman images
112+
113+
114+
When you run the Podman container, you must specify the Ansys license file.
115+
116+
To launch the container in solution mode, use:
117+
118+
.. code:: console
119+
120+
sudo podman run -it --name ansys-inc -e ANSYSLMD_LICENSE_FILE=<license file or server> ansys_inc 3ddp -gu
121+
122+
To launch the container in meshing mode, use:
123+
124+
.. code:: console
125+
126+
sudo podman run -it --name ansys-inc -e ANSYSLMD_LICENSE_FILE=<license file or server> ansys_inc 3ddp -gu -meshing
127+
128+
129+
Run Podman container using PyFluent
130+
-----------------------------------
131+
132+
1. Install `PyFluent <https://github.com/ansys/pyfluent>`_.
133+
2. Use the following Python code to run the container:
134+
135+
.. code:: python
136+
137+
import os
138+
import ansys.fluent.core as pyfluent
139+
os.environ["ANSYSLMD_LICENSE_FILE"] = "<license file or server>"
140+
os.environ["PYFLUENT_USE_PODMAN_COMPOSE"] = "1"
141+
custom_config = {'fluent_image': 'ansys_inc:latest', 'mount_source': f"{os.getcwd()}", 'auto_remove': False}
142+
solver_session = pyfluent.launch_fluent(container_dict=custom_config)
143+

doc/source/user_guide/meshing/meshing_workflows.rst

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -819,10 +819,10 @@ Export Fluent 2D mesh
819819
>>> )
820820
>>> export_mesh.Execute()
821821
822-
Switch to solver mode
823-
~~~~~~~~~~~~~~~~~~~~~
822+
Switch to solution mode
823+
~~~~~~~~~~~~~~~~~~~~~~~
824824

825-
Switching to solver mode is not allowed in 2D Meshing mode.
825+
Switching to solution mode is not allowed in 2D Meshing mode.
826826

827827

828828
State access

doc/source/user_guide/session/launching_ansys_fluent.rst

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,8 @@ Launcher options
4040
The following examples show different ways that you can launch Fluent locally.
4141
For more information, see :func:`launch_fluent() <ansys.fluent.core.launcher.launcher.launch_fluent>`.
4242

43-
Solver mode
44-
~~~~~~~~~~~
43+
Solution mode
44+
~~~~~~~~~~~~~
4545
These two examples show equivalent ways to launch Fluent in solution mode:
4646

4747
.. code:: python
@@ -329,7 +329,7 @@ Set environment variables to select the container engine:
329329
330330
>>> import os
331331
>>> os.environ["PYFLUENT_LAUNCH_CONTAINER"] = "1"
332-
>>> os.environ["PYFLUENT_USE_PODMAN_COMPOSE"] = "1" # or os.environ["PYFLUENT_USE_PODMAN_COMPOSE"] = "1"
332+
>>> os.environ["PYFLUENT_USE_DOCKER_COMPOSE"] = "1" # or os.environ["PYFLUENT_USE_PODMAN_COMPOSE"] = "1"
333333
334334
335335
Then launch:

doc/source/user_guide/usability.rst

Lines changed: 74 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -20,69 +20,78 @@ Examples
2020
>>> import ansys.fluent.core as pyfluent
2121
>>>
2222
>>> # Semantic search
23-
>>> pyfluent.search("font")
24-
<meshing_session>.meshing_utilities.count_marked_faces (Query) (similarity: 98.31%)
25-
<meshing_session>.meshing_utilities.delete_marked_faces_in_zones (Command) (similarity: 98.31%)
26-
<meshing_session>.meshing_utilities.get_free_faces_count (Query) (similarity: 98.31%)
27-
<meshing_session>.meshing_utilities.get_multi_faces_count (Query) (similarity: 98.31%)
28-
<meshing_session>.meshing_utilities.get_zones_with_free_faces_for_given_face_zones (Query) (similarity: 98.31%)
29-
<meshing_session>.meshing_utilities.get_zones_with_marked_faces_for_given_face_zones (Query) (similarity: 98.31%)
30-
<meshing_session>.meshing_utilities.get_zones_with_multi_faces_for_given_face_zones (Query) (similarity: 98.31%)
31-
<meshing_session>.meshing_utilities.mark_bad_quality_faces (Query) (similarity: 98.31%)
32-
<meshing_session>.meshing_utilities.mark_duplicate_faces (Query) (similarity: 98.31%)
33-
<meshing_session>.meshing_utilities.mark_faces_by_quality (Query) (similarity: 98.31%)
34-
<meshing_session>.meshing_utilities.mark_faces_deviating_from_size_field (Query) (similarity: 98.31%)
35-
<meshing_session>.meshing_utilities.mark_faces_in_self_proximity (Query) (similarity: 98.31%)
36-
<meshing_session>.meshing_utilities.mark_faces_using_node_degree (Query) (similarity: 98.31%)
37-
<meshing_session>.meshing_utilities.mark_free_faces (Query) (similarity: 98.31%)
38-
<meshing_session>.meshing_utilities.mark_island_faces (Query) (similarity: 98.31%)
39-
<meshing_session>.meshing_utilities.mark_multi_faces (Query) (similarity: 98.31%)
40-
<meshing_session>.meshing_utilities.mark_self_intersecting_faces (Query) (similarity: 98.31%)
41-
<meshing_session>.meshing_utilities.mark_sliver_faces (Query) (similarity: 98.31%)
42-
<meshing_session>.meshing_utilities.refine_marked_faces_in_zones (Query) (similarity: 98.31%)
43-
<meshing_session>.preferences.Appearance.Charts.Font (Object) (similarity: 98.31%)
44-
<meshing_session>.preferences.Appearance.Charts.Font.Axes (Parameter) (similarity: 98.31%)
45-
<meshing_session>.preferences.Appearance.Charts.Font.AxesTitles (Parameter) (similarity: 98.31%)
46-
<meshing_session>.preferences.Appearance.Charts.Font.Legend (Parameter) (similarity: 98.31%)
47-
<meshing_session>.preferences.Appearance.Charts.Font.Title (Parameter) (similarity: 98.31%)
23+
>>> pyfluent.search("speed")
4824
...
49-
<solver_session>.mesh.swap_mesh_faces (Command) (similarity: 98.31%)
50-
<solver_session>.preferences.Appearance.Charts.Font (Object) (similarity: 98.31%)
51-
<solver_session>.preferences.Appearance.Charts.Font.Axes (Parameter) (similarity: 98.31%)
52-
<solver_session>.preferences.Appearance.Charts.Font.AxesTitles (Parameter) (similarity: 98.31%)
53-
<solver_session>.preferences.Appearance.Charts.Font.Legend (Parameter) (similarity: 98.31%)
54-
<solver_session>.preferences.Appearance.Charts.Font.Title (Parameter) (similarity: 98.31%)
25+
<solver_session>.setup.physics.volumes.solid["<name>"].solid_motion.solid_motion_velocity[<index>] (Object) (similarity: 98.31%)
26+
<solver_session>.setup.physics.volumes.solid["<name>"].solid_motion.solid_motion_velocity[<index>].field_name (Parameter) (similarity: 98.31%)
27+
<solver_session>.setup.physics.volumes.solid["<name>"].solid_motion.solid_motion_velocity[<index>].list_properties (Command) (similarity: 98.31%)
28+
<solver_session>.setup.physics.volumes.solid["<name>"].solid_motion.solid_motion_velocity[<index>].option (Parameter) (similarity: 98.31%)
29+
<solver_session>.setup.physics.volumes.solid["<name>"].solid_motion.solid_motion_velocity[<index>].profile_name (Parameter) (similarity: 98.31%)
30+
<solver_session>.setup.physics.volumes.solid["<name>"].solid_motion.solid_motion_velocity[<index>].resize (Command) (similarity: 98.31%)
31+
<solver_session>.setup.physics.volumes.solid["<name>"].solid_motion.solid_motion_velocity[<index>].udf (Parameter) (similarity: 98.31%)
32+
<solver_session>.setup.physics.volumes.solid["<name>"].solid_motion.solid_motion_velocity[<index>].value (Parameter) (similarity: 98.31%)
33+
<solver_session>.setup.reference_frames["<name>"].motion.constant_velocity (Object) (similarity: 98.31%)
34+
<solver_session>.setup.reference_frames["<name>"].motion.constant_velocity.linear_velocity (Parameter) (similarity: 98.31%)
35+
<solver_session>.setup.reference_frames["<name>"].motion.constant_velocity.rotational_velocity (Object) (similarity: 98.31%)
36+
<solver_session>.setup.reference_frames["<name>"].motion.constant_velocity.rotational_velocity.rotation_axis (Parameter) (similarity: 98.31%)
37+
<solver_session>.setup.reference_frames["<name>"].motion.constant_velocity.rotational_velocity.speed (Parameter) (similarity: 98.31%)
38+
<solver_session>.setup.reference_values.velocity (Parameter) (similarity: 98.31%)
39+
<solver_session>.solution.initialization.hybrid_init_options.general_settings.initialization_options.const_velocity (Parameter) (similarity: 98.31%)
40+
<solver_session>.solution.methods.expert.physical_velocity_formulation (Parameter) (similarity: 98.31%)
41+
<solver_session>.solution.methods.expert.velocity_formulation (Parameter) (similarity: 98.31%)
42+
<solver_session>.solution.methods.high_speed_numerics (Object) (similarity: 98.31%)
43+
<solver_session>.solution.methods.high_speed_numerics.enable (Parameter) (similarity: 98.31%)
44+
<solver_session>.solution.methods.high_speed_numerics.expert (Parameter) (similarity: 98.31%)
45+
<solver_session>.solution.methods.high_speed_numerics.robust_fluxes (Parameter) (similarity: 98.31%)
46+
<solver_session>.solution.methods.high_speed_numerics.visualize_pressure_discontinuity_sensor (Parameter) (similarity: 98.31%)
47+
<solver_session>.solution.methods.multiphase_numerics.advanced_stability_controls.hybrid_nita.instability_detector.set_velocity_limit (Parameter) (similarity: 98.31%)
5548
...
5649
>>>
5750
>>> # Semantic search within a specific API object
58-
>>> pyfluent.search("font", api_path="<solver_session>.results.annotation")
59-
<solver_session>.results.annotation["<name>"].font_color (Parameter) (similarity: 98.31%)
60-
<solver_session>.results.annotation["<name>"].font_name (Parameter) (similarity: 98.31%)
61-
<solver_session>.results.annotation["<name>"].font_size (Parameter) (similarity: 98.31%)
62-
<solver_session>.results.annotation["<name>"].font_slant (Parameter) (similarity: 98.31%)
63-
<solver_session>.results.annotation["<name>"].font_weight (Parameter) (similarity: 98.31%)
51+
>>> pyfluent.search("load", api_path="<solver_session>.parallel.partition.set")
52+
<solver_session>.parallel.partition.set.dpm_load_balancing (Object) (similarity: 98.31%)
53+
<solver_session>.parallel.partition.set.dpm_load_balancing.interval (Parameter) (similarity: 98.31%)
54+
<solver_session>.parallel.partition.set.dpm_load_balancing.load_balancing (Parameter) (similarity: 98.31%)
55+
<solver_session>.parallel.partition.set.dpm_load_balancing.threshold (Parameter) (similarity: 98.31%)
56+
<solver_session>.parallel.partition.set.load_distribution (Parameter) (similarity: 98.31%)
6457
>>>
65-
>>> # Chinese semantic search
66-
>>> pyfluent.search("", language="cmn") # search 'read' in Chinese
67-
<solver_session>.file.convert_hanging_nodes_during_read (Parameter) (similarity: 100.0%)
68-
<solver_session>.file.import_.read (Command) (similarity: 100.0%)
69-
<solver_session>.file.interpolate.read_data (Command) (similarity: 100.0%)
70-
<solver_session>.file.read (Command) (similarity: 100.0%)
71-
<solver_session>.file.read_case (Command) (similarity: 100.0%)
72-
<solver_session>.file.read_case_data (Command) (similarity: 100.0%)
73-
<solver_session>.file.read_case_lightweight (Command) (similarity: 100.0%)
74-
<solver_session>.file.read_data (Command) (similarity: 100.0%)
75-
<solver_session>.file.read_field_functions (Command) (similarity: 100.0%)
76-
<solver_session>.file.read_injections (Command) (similarity: 100.0%)
77-
<solver_session>.file.read_isat_table (Command) (similarity: 100.0%)
78-
<solver_session>.file.read_journal (Command) (similarity: 100.0%)
79-
<solver_session>.file.read_macros (Command) (similarity: 100.0%)
80-
<solver_session>.file.read_mesh (Command) (similarity: 100.0%)
81-
<solver_session>.file.read_pdf (Command) (similarity: 100.0%)
82-
<solver_session>.file.read_profile (Command) (similarity: 100.0%)
83-
<solver_session>.file.read_settings (Command) (similarity: 100.0%)
84-
<solver_session>.file.read_surface_mesh (Command) (similarity: 100.0%)
85-
<solver_session>.file.table_file_manager.read_table_file (Command) (similarity: 100.0%)
58+
>>> # Spanish semantic search
59+
>>> pyfluent.search("superficie", language="spa") # search 'surface' in Spanish
60+
<meshing_session>.preferences.Appearance.SurfaceEmissivity (Parameter) (similarity: 100.0%)
61+
<meshing_session>.preferences.Appearance.SurfaceSpecularity (Parameter) (similarity: 100.0%)
62+
<meshing_session>.preferences.Appearance.SurfaceSpecularityForContours (Parameter) (similarity: 100.0%)
63+
<meshing_session>.preferences.Graphics.Performance.SurfaceCaching (Parameter) (similarity: 100.0%)
64+
<meshing_session>.preferences.Graphics.SurfaceGeneralDisplacement (Parameter) (similarity: 100.0%)
65+
<solver_session>.design.geometry.parameterize_and_explore.design_change.export.stl_surfaces (Command) (similarity: 100.0%)
66+
<solver_session>.design.geometry.parameterize_and_explore.design_change.history.surfaces (Parameter) (similarity: 100.0%)
67+
<solver_session>.design.geometry.parameterize_and_explore.design_change.preview.surfaces (Parameter) (similarity: 100.0%)
68+
...
69+
<solver_session>.setup.boundary_conditions.intake_fan["<name>"].multiphase.ht_bottom (Object) (similarity: 88.89%)
70+
<solver_session>.setup.boundary_conditions.intake_fan["<name>"].multiphase.ht_bottom.field_name (Parameter) (similarity: 88.89%)
71+
<solver_session>.setup.boundary_conditions.intake_fan["<name>"].multiphase.ht_bottom.option (Parameter) (similarity: 88.89%)
72+
<solver_session>.setup.boundary_conditions.intake_fan["<name>"].multiphase.ht_bottom.profile_name (Parameter) (similarity: 88.89%)
73+
<solver_session>.setup.boundary_conditions.intake_fan["<name>"].multiphase.ht_bottom.udf (Parameter) (similarity: 88.89%)
74+
<solver_session>.setup.boundary_conditions.intake_fan["<name>"].multiphase.ht_bottom.value (Parameter) (similarity: 88.89%)
75+
...
76+
<solver_session>.setup.boundary_conditions.outlet_vent["<name>"].list (Command) (similarity: 85.71%)
77+
<solver_session>.setup.boundary_conditions.outlet_vent["<name>"].list_properties (Command) (similarity: 85.71%)
78+
<solver_session>.setup.boundary_conditions.outlet_vent["<name>"].make_a_copy (Command) (similarity: 85.71%)
79+
<solver_session>.setup.boundary_conditions.outlet_vent["<name>"].momentum (Object) (similarity: 85.71%)
80+
...
81+
<solver_session>.results.graphics.pathline["<name>"].axes.rules.x_axis.major_rule_line_color (Parameter) (similarity: 83.33%)
82+
<solver_session>.results.graphics.pathline["<name>"].axes.rules.x_axis.major_rule_weight (Parameter) (similarity: 83.33%)
83+
<solver_session>.results.graphics.pathline["<name>"].axes.rules.x_axis.minor_rule_line_color (Parameter) (similarity: 83.33%)
84+
<solver_session>.results.graphics.pathline["<name>"].axes.rules.x_axis.minor_rule_weight (Parameter) (similarity: 83.33%)
85+
<solver_session>.results.graphics.pathline["<name>"].axes.rules.y_axis.major_rule_line_color (Parameter) (similarity: 83.33%)
86+
<solver_session>.results.graphics.pathline["<name>"].axes.rules.y_axis.major_rule_weight (Parameter) (similarity: 83.33%)
87+
<solver_session>.results.graphics.pathline["<name>"].axes.rules.y_axis.minor_rule_line_color (Parameter) (similarity: 83.33%)
88+
...
89+
<solver_session>.setup.physics.volumes.solid["<name>"].boundaries.pressure_outlet["<name>"].settings.species.tss_scalar["<name>"].profile_name (Parameter) (similarity: 82.35%)
90+
<solver_session>.setup.physics.volumes.solid["<name>"].boundaries.pressure_outlet["<name>"].settings.structure.x_disp_boundary_value.profile_name (Parameter) (similarity: 82.35%)
91+
<solver_session>.setup.physics.volumes.solid["<name>"].boundaries.pressure_outlet["<name>"].settings.structure.y_disp_boundary_value.profile_name (Parameter) (similarity: 82.35%)
92+
<solver_session>.setup.physics.volumes.solid["<name>"].boundaries.pressure_outlet["<name>"].settings.structure.z_disp_boundary_value.profile_name (Parameter) (similarity: 82.35%)
93+
<solver_session>.setup.physics.volumes.solid["<name>"].boundaries.pressure_outlet["<name>"].settings.thermal.backflow_total_temperature.profile_name (Parameter) (similarity: 82.35%)
94+
<solver_session>.setup.physics.volumes.solid["<name>"].boundaries.pressure_outlet["<name>"].settings.turbulence.backflow_intermittency.profile_name (Parameter) (similarity: 82.35%)
8695
...
8796
>>>
8897
>>> # Chinese semantic search within a specific API object
@@ -102,11 +111,8 @@ Examples
102111
<solver_session>.tui.results.report.simulation_reports.read_simulation_report_template_file (Command) (similarity: 100.0%)
103112
>>>
104113
>>> # Whole word search
105-
>>> pyfluent.search("ApplicationFontSize", match_whole_word=True)
106-
<meshing_session>.preferences.Appearance.ApplicationFontSize (Parameter)
107-
<solver_session>.preferences.Appearance.ApplicationFontSize (Parameter)
108-
<meshing_session>.tui.preferences.appearance.application_font_size (Command)
109-
<solver_session>.tui.preferences.appearance.application_font_size (Command)
114+
>>> pyfluent.search("iteration_at_creation_or_edit", match_whole_word=True)
115+
<solver_session>.solution.monitor.convergence_conditions.convergence_reports["<name>"].iteration_at_creation_or_edit (Parameter)
110116
>>>
111117
>>> # Whole word search within a specific API object
112118
>>> pyfluent.search("ApplicationFontSize", match_whole_word=True, api_path="preferences")
@@ -128,9 +134,11 @@ Examples
128134
...
129135
>>>
130136
>> # Wildcard pattern search within a specific API object
131-
>>> pyfluent.search("local*", api_path="mesh_interfaces")
132-
<solver_session>.setup.mesh_interfaces.interface["<name>"].local_absolute_mapped_tolerance (Parameter)
133-
<solver_session>.setup.mesh_interfaces.interface["<name>"].local_relative_mapped_tolerance (Parameter)
137+
>>> pyfluent.search("iter*", api_path="<solver_session>.parallel.multidomain")
138+
<solver_session>.parallel.multidomain.conjugate_heat_transfer.set.coupling.iter_per_coupling_count (Parameter)
139+
<solver_session>.parallel.multidomain.conjugate_heat_transfer.set.coupling.single_session_coupling.iteration (Parameter)
140+
<solver_session>.parallel.multidomain.solve.dual_time_iterate (Command)
141+
<solver_session>.parallel.multidomain.solve.iterate (Command)
134142
>>>
135143
>>> # Misspelled search
136144
>>> pyfluent.search("cfb_lma")

examples/00-fluent/conjugate_heat_transfer.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -848,8 +848,8 @@
848848
solver_session.results.surfaces.iso_surface["x=0.012826"] = {"iso_values": [0.012826]}
849849

850850
#############################################################################
851-
# Vecotor Plot
852-
# ============
851+
# Vector Plot
852+
# ===========
853853

854854
vector1 = Vector(solver=solver_session, surfaces=["x=0.012826"], scale=2.0, skip=5)
855855
window3 = GraphicsWindow()

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ dependencies = [
3030
"grpcio-status>=1.26.0",
3131
"nltk>=3.9.1",
3232
"numpy>=1.14.0,<3.0.0",
33-
"pandas>=1.1.0,<2.3",
33+
"pandas>=1.1.0,<3.0.0",
3434
"pyansys-tools-report>=0.8.1",
3535
"pyyaml>=6.0",
3636
]

0 commit comments

Comments
 (0)