Skip to content

Commit 929d78d

Browse files
authored
Improve info on available qualifiers (#1027)
* Print available qualifiers in result_info * Add AvailableResult.qualifier_combinations property * Add test for str(result_info) with qualifiers * Add test for AvailableResult.qualifier_combinations * Fix typing * Fix retro * Fix retro * Fix version check in result_info.py * raise in ResultInfo.__str__ for debug * Try up required version for qualifiers in ResultInfo print * Fix test_print_result_info_with_qualifiers * Set back result_info str server version requirements for qualifiers to 5.0 * Set back result_info str server version requirements for qualifiers to 7.0 * Debug docker * Debug docker * Actually test_result_info with qualifiers on all server types * Remove rogue prints from tests, please use str() instead to test strings * add verbose mode to delete_downloads() * Remove progress bars for Workflows in tests * Remove debug prints * Revert "Remove debug prints" This reverts commit f51aba8. * Revert "Remove progress bars for Workflows in tests" This reverts commit 9a4df92. * Revert "add verbose mode to delete_downloads()" This reverts commit 7d26e0b. * Revert "Remove rogue prints from tests, please use str() instead to test strings" This reverts commit 47bf517. * Revert "Revert "Remove debug prints"" This reverts commit 036fc89. * Revert "Revert "Remove progress bars for Workflows in tests"" This reverts commit cf45e1f. * Revert "Revert "Remove rogue prints from tests, please use str() instead to test strings"" This reverts commit 03794f7. * Revert "Revert "add verbose mode to delete_downloads()"" This reverts commit 329f9ad.
1 parent dd09263 commit 929d78d

26 files changed

+181
-31
lines changed

src/ansys/dpf/core/available_result.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
===============
44
"""
55

6+
from typing import List
67
from warnings import warn
78
from ansys.dpf.core.common import _remove_spaces, _make_as_function_name, natures
89
from enum import Enum, unique
@@ -250,6 +251,14 @@ def qualifier_labels(self) -> dict:
250251
"""Returns a dictionary of available labels for each available qualifier."""
251252
return self._qualifier_labels
252253

254+
@property
255+
def qualifier_combinations(self) -> List[dict]:
256+
"""Returns the list of valid qualifier combinations for this result.
257+
258+
Each combination is a dictionary which can be used for a result request.
259+
"""
260+
return [q.__dict__() for q in self.qualifiers]
261+
253262

254263
_result_properties = {
255264
"S": {"location": "ElementalNodal", "scripting_name": "stress"},

src/ansys/dpf/core/examples/downloads.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
EXAMPLE_REPO = "https://github.com/ansys/example-data/raw/master/"
1111

1212

13-
def delete_downloads():
13+
def delete_downloads(verbose=True):
1414
"""Delete all downloaded examples to free space or update the files"""
1515
from ansys.dpf.core import LOCAL_DOWNLOADED_EXAMPLES_PATH, examples
1616

@@ -34,7 +34,8 @@ def delete_downloads():
3434
if not os.path.join(root, name) in not_to_remove:
3535
try:
3636
os.remove(os.path.join(root, name))
37-
print(f"deleting {os.path.join(root, name)}")
37+
if verbose:
38+
print(f"deleting {os.path.join(root, name)}")
3839
except Exception as e:
3940
warnings.warn(
4041
f"couldn't delete {os.path.join(root, name)} with error:\n {e.args}"
@@ -43,7 +44,8 @@ def delete_downloads():
4344
if len(dirs) == 0 and len(files) == 0:
4445
try:
4546
os.rmdir(root)
46-
print(f"deleting {root}")
47+
if verbose:
48+
print(f"deleting {root}")
4749
except Exception as e:
4850
warnings.warn(f"couldn't delete {root} with error:\n {e.args}")
4951

src/ansys/dpf/core/result_info.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,8 +127,23 @@ def __str__(self):
127127
]
128128
txt += "{0:^4} {1:^2} {2:<30}".format(*line) + "\n"
129129

130+
if self._server.meet_version("7.0"):
131+
qualifiers_labels = self.available_qualifier_labels
132+
if len(qualifiers_labels) > 0:
133+
txt += "Available qualifier labels:\n"
134+
for label in qualifiers_labels:
135+
label_support = self.qualifier_label_support(label)
136+
names_field = label_support.string_field_support_by_property("names")
137+
label_names = names_field.data_as_list
138+
label_values = names_field.scoping.ids.tolist()
139+
txt += f" - {label}: "
140+
for i, value in enumerate(label_values):
141+
label_values[i] = label_names[i] + f" ({value})"
142+
txt += f"{', '.join(label_values)}\n"
143+
130144
return txt
131145
except Exception as e:
146+
raise e
132147
from ansys.dpf.core.core import _description
133148

134149
return _description(self._internal_obj, self._server)

tests/slow/test_remoteworkflow.py

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,15 @@
1616
def test_simple_remote_workflow(simple_bar, local_server):
1717
data_sources1 = core.DataSources(simple_bar)
1818
wf = core.Workflow()
19+
wf.progress_bar = False
1920
op = ops.result.displacement(data_sources=data_sources1)
2021
average = core.operators.math.norm_fc(op)
2122

2223
wf.add_operators([op, average])
2324
wf.set_output_name("out", average.outputs.fields_container)
2425

2526
local_wf = core.Workflow()
27+
local_wf.progress_bar = False
2628
min_max = ops.min_max.min_max_fc()
2729
local_wf.add_operator(min_max)
2830
local_wf.set_input_name("in", min_max.inputs.fields_container)
@@ -53,6 +55,7 @@ def test_multi_process_remote_workflow():
5355
for i in files:
5456
data_sources1 = core.DataSources(files[i])
5557
wf = core.Workflow()
58+
wf.progress_bar = False
5659
op = ops.result.displacement(data_sources=data_sources1)
5760
average = core.operators.math.norm_fc(op)
5861

@@ -75,6 +78,7 @@ def test_multi_process_remote_workflow():
7578
workflows.append(remote_workflow)
7679

7780
local_wf = core.Workflow()
81+
local_wf.progress_bar = False
7882
merge = ops.utility.merge_fields_containers()
7983
min_max = ops.min_max.min_max_fc(merge)
8084
local_wf.add_operator(merge)
@@ -95,6 +99,7 @@ def test_multi_process_remote_workflow():
9599
def test_multi_process_connect_remote_workflow():
96100
files = examples.download_distributed_files()
97101
wf = core.Workflow()
102+
wf.progress_bar = False
98103
op = ops.result.displacement()
99104
average = core.operators.math.norm_fc(op)
100105

@@ -121,6 +126,7 @@ def test_multi_process_connect_remote_workflow():
121126
workflows.append(remote_workflow)
122127

123128
local_wf = core.Workflow()
129+
local_wf.progress_bar = False
124130
merge = ops.utility.merge_fields_containers()
125131
min_max = ops.min_max.min_max_fc(merge)
126132
local_wf.add_operator(merge)
@@ -141,6 +147,7 @@ def test_multi_process_connect_remote_workflow():
141147
def test_multi_process_connect_operator_remote_workflow():
142148
files = examples.download_distributed_files()
143149
wf = core.Workflow()
150+
wf.progress_bar = False
144151
op = ops.result.displacement()
145152
average = core.operators.math.norm_fc(op)
146153

@@ -168,6 +175,7 @@ def test_multi_process_connect_operator_remote_workflow():
168175
workflows.append(remote_workflow)
169176

170177
local_wf = core.Workflow()
178+
local_wf.progress_bar = False
171179
merge = ops.utility.merge_fields_containers()
172180
min_max = ops.min_max.min_max_fc(merge)
173181
local_wf.add_operator(merge)
@@ -188,6 +196,7 @@ def test_multi_process_connect_operator_remote_workflow():
188196
def test_multi_process_getoutput_remote_workflow():
189197
files = examples.download_distributed_files()
190198
wf = core.Workflow()
199+
wf.progress_bar = False
191200
op = ops.result.displacement()
192201
average = core.operators.math.norm_fc(op)
193202

@@ -214,6 +223,7 @@ def test_multi_process_getoutput_remote_workflow():
214223
workflows.append(remote_workflow)
215224

216225
local_wf = core.Workflow()
226+
local_wf.progress_bar = False
217227
merge = ops.utility.merge_fields_containers()
218228
min_max = ops.min_max.min_max_fc(merge)
219229
local_wf.add_operator(merge)
@@ -236,6 +246,7 @@ def test_multi_process_getoutput_remote_workflow():
236246
def test_multi_process_chain_remote_workflow():
237247
files = examples.download_distributed_files()
238248
wf = core.Workflow()
249+
wf.progress_bar = False
239250
op = ops.result.displacement()
240251
average = core.operators.math.norm_fc(op)
241252

@@ -262,6 +273,7 @@ def test_multi_process_chain_remote_workflow():
262273
workflows.append(remote_workflow)
263274

264275
local_wf = core.Workflow()
276+
local_wf.progress_bar = False
265277
merge = ops.utility.merge_fields_containers()
266278
min_max = ops.min_max.min_max_fc(merge)
267279
local_wf.add_operator(merge)
@@ -293,6 +305,7 @@ def test_multi_process_chain_remote_workflow():
293305
)
294306
def test_remote_workflow_info(local_server):
295307
wf = core.Workflow()
308+
wf.progress_bar = False
296309
op = ops.result.displacement()
297310
average = core.operators.math.norm_fc(op)
298311

@@ -318,6 +331,7 @@ def test_multi_process_local_remote_local_remote_workflow():
318331
files = examples.download_distributed_files()
319332

320333
wf = core.Workflow()
334+
wf.progress_bar = False
321335
average = core.operators.math.norm_fc()
322336

323337
wf.add_operators([average])
@@ -340,6 +354,7 @@ def test_multi_process_local_remote_local_remote_workflow():
340354
remote_workflow = remote_workflow_prov.get_output(0, core.types.workflow)
341355

342356
first_wf = core.Workflow()
357+
first_wf.progress_bar = False
343358
op = ops.result.displacement()
344359
first_wf.add_operator(op)
345360
first_wf.set_input_name("data_sources", op.inputs.data_sources)
@@ -351,6 +366,7 @@ def test_multi_process_local_remote_local_remote_workflow():
351366
workflows.append(remote_workflow)
352367

353368
local_wf = core.Workflow()
369+
local_wf.progress_bar = False
354370
merge = ops.utility.merge_fields_containers()
355371
min_max = ops.min_max.min_max_fc(merge)
356372
local_wf.add_operator(merge)
@@ -374,6 +390,7 @@ def test_multi_process_transparent_api_remote_workflow():
374390
for i in files:
375391
data_sources1 = core.DataSources(files[i], server=local_servers[i])
376392
wf = core.Workflow(server=local_servers[i])
393+
wf.progress_bar = False
377394
op = ops.result.displacement(data_sources=data_sources1, server=local_servers[i])
378395
average = core.operators.math.norm_fc(op, server=local_servers[i])
379396

@@ -383,6 +400,7 @@ def test_multi_process_transparent_api_remote_workflow():
383400
workflows.append(wf)
384401

385402
local_wf = core.Workflow()
403+
local_wf.progress_bar = False
386404
merge = ops.utility.merge_fields_containers()
387405
min_max = ops.min_max.min_max_fc(merge)
388406
local_wf.add_operator(merge)
@@ -406,6 +424,7 @@ def test_multi_process_with_names_transparent_api_remote_workflow():
406424
for i in files:
407425
data_sources1 = core.DataSources(files[i], server=local_servers[i])
408426
wf = core.Workflow(server=local_servers[i])
427+
wf.progress_bar = False
409428
op = ops.result.displacement(data_sources=data_sources1, server=local_servers[i])
410429
average = core.operators.math.norm_fc(op, server=local_servers[i])
411430

@@ -415,6 +434,7 @@ def test_multi_process_with_names_transparent_api_remote_workflow():
415434
workflows.append(wf)
416435

417436
local_wf = core.Workflow()
437+
local_wf.progress_bar = False
418438
merge = ops.utility.merge_fields_containers()
419439
min_max = ops.min_max.min_max_fc(merge)
420440
local_wf.add_operator(merge)
@@ -437,6 +457,7 @@ def test_multi_process_transparent_api_connect_local_datasources_remote_workflow
437457
workflows = []
438458
for i in files:
439459
wf = core.Workflow(server=local_servers[i])
460+
wf.progress_bar = False
440461
op = ops.result.displacement(server=local_servers[i])
441462
average = core.operators.math.norm_fc(op, server=local_servers[i])
442463

@@ -446,6 +467,7 @@ def test_multi_process_transparent_api_connect_local_datasources_remote_workflow
446467
workflows.append(wf)
447468

448469
local_wf = core.Workflow()
470+
local_wf.progress_bar = False
449471
merge = ops.utility.merge_fields_containers()
450472
min_max = ops.min_max.min_max_fc(merge)
451473
local_wf.add_operator(merge)
@@ -470,6 +492,7 @@ def test_multi_process_transparent_api_connect_local_op_remote_workflow():
470492
workflows = []
471493
for i in files:
472494
wf = core.Workflow(server=local_servers[i])
495+
wf.progress_bar = False
473496
op = ops.result.displacement(server=local_servers[i])
474497
average = core.operators.math.norm_fc(op, server=local_servers[i])
475498

@@ -479,6 +502,7 @@ def test_multi_process_transparent_api_connect_local_op_remote_workflow():
479502
workflows.append(wf)
480503

481504
local_wf = core.Workflow()
505+
local_wf.progress_bar = False
482506
merge = ops.utility.merge_fields_containers()
483507
min_max = ops.min_max.min_max_fc(merge)
484508
local_wf.add_operator(merge)
@@ -502,6 +526,7 @@ def test_multi_process_transparent_api_connect_local_op_remote_workflow():
502526
def test_multi_process_transparent_api_create_on_local_remote_workflow():
503527
files = examples.download_distributed_files()
504528
wf = core.Workflow()
529+
wf.progress_bar = False
505530
op = ops.result.displacement()
506531
average = core.operators.math.norm_fc(op)
507532

@@ -510,6 +535,7 @@ def test_multi_process_transparent_api_create_on_local_remote_workflow():
510535
wf.set_input_name("ds", op.inputs.data_sources)
511536

512537
local_wf = core.Workflow()
538+
local_wf.progress_bar = False
513539
merge = ops.utility.merge_fields_containers()
514540
min_max = ops.min_max.min_max_fc(merge)
515541
local_wf.add_operator(merge)
@@ -533,6 +559,7 @@ def test_multi_process_transparent_api_create_on_local_remote_workflow():
533559
def test_multi_process_transparent_api_create_on_local_remote_ith_address_workflow():
534560
files = examples.download_distributed_files()
535561
wf = core.Workflow()
562+
wf.progress_bar = False
536563
op = ops.result.displacement()
537564
average = core.operators.math.norm_fc(op)
538565

tests/test_animator.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@ def test_animator_animate(displacement_fields):
6969
loop_over_field.unit = frequencies.unit
7070

7171
wf = Workflow()
72+
wf.progress_bar = False
7273
extract_field_op = dpf.operators.utility.extract_field(displacement_fields)
7374
wf.set_input_name("loop_over", extract_field_op.inputs.indices)
7475
wf.set_output_name("to_render", extract_field_op.outputs.field)
@@ -85,6 +86,7 @@ def test_animator_animate_raise_wrong_scale_factor(remove_gifs, displacement_fie
8586
loop_over_field.unit = frequencies.unit
8687

8788
wf = Workflow()
89+
wf.progress_bar = False
8890
extract_field_op = dpf.operators.utility.extract_field(displacement_fields)
8991
wf.set_input_name("loop_over", extract_field_op.inputs.indices)
9092
wf.set_output_name("to_render", extract_field_op.outputs.field)

tests/test_cff.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ def test_cff_model(server_type, fluent_multi_species):
2222
)
2323
def test_results_cfx(cfx_heating_coil, server_type):
2424
model = dpf.Model(cfx_heating_coil(server=server_type), server=server_type)
25-
print(model)
25+
# print(model)
2626
result_names = [
2727
"specific_heat",
2828
"epsilon",
@@ -55,7 +55,7 @@ def test_results_cfx(cfx_heating_coil, server_type):
5555
)
5656
def test_results_fluent(fluent_mixing_elbow_steady_state, server_type):
5757
model = dpf.Model(fluent_mixing_elbow_steady_state(server=server_type), server=server_type)
58-
print(model)
58+
# print(model)
5959
result_names = [
6060
"epsilon",
6161
"enthalpy",

tests/test_codegeneration.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -286,7 +286,7 @@ def test_generated_operator_set_config():
286286
inpt2.unit = "m"
287287

288288
conf = op.math.add.default_config()
289-
print(conf)
289+
# print(conf)
290290
conf.set_work_by_index_option(True)
291291
op1 = op.math.add(config=conf)
292292
op1.inputs.fieldA.connect(inpt)

tests/test_custom_type_field.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ def test_set_get_data_custom_type_field(server_type):
2727
data[i] = np.byte(b"2")
2828
field.data = data
2929
assert np.allclose(field.data, data)
30-
print(field.data)
30+
# print(field.data)
3131

3232

3333
@conftest.raises_for_servers_version_under("5.0")
@@ -96,7 +96,7 @@ def test_set_get_field_def_custom_type_field(server_type):
9696

9797
copy = field.field_definition
9898

99-
print(copy.dimensionality)
99+
# print(copy.dimensionality)
100100
assert copy.dimensionality == dpf.core.Dimensionality([3], dpf.core.natures.vector)
101101
assert copy.location == core.locations.elemental
102102
assert copy.name == "thing"

tests/test_cyclic_support.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,7 @@ def test_cyc_support_from_to_workflow(cyclic_lin_rst, server_type):
117117
cyc_support = result_info.cyclic_support
118118
op = dpf.operators.metadata.cyclic_mesh_expansion(server=server_type)
119119
wf = dpf.Workflow(server=server_type)
120+
wf.progress_bar = False
120121
wf.set_input_name("sup", op.inputs.cyclic_support)
121122
wf.set_output_name("sup", op.outputs.cyclic_support)
122123
wf.connect("sup", cyc_support)

tests/test_elements.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ def test_no_element_descriptor():
136136
# descriptor = dpf.element_types.descriptor(89)
137137
# assert not descriptor
138138
descriptor = dpf.element_types.descriptor(dpf.element_types.General)
139-
print(descriptor)
139+
# print(descriptor)
140140
unknown_shape = "unknown_shape"
141141
assert descriptor.shape == unknown_shape
142142
assert dpf.element_types.descriptor(dpf.element_types.General).shape == unknown_shape

0 commit comments

Comments
 (0)