Skip to content

Commit fed2f19

Browse files
committed
Merge branch 'master' into fix/remove_grid_cache
2 parents 9199890 + e17deae commit fed2f19

File tree

5 files changed

+37
-15
lines changed

5 files changed

+37
-15
lines changed

ansys/dpf/core/core.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -428,6 +428,7 @@ def get_runtime_client_config(self):
428428
misc.RUNTIME_CLIENT_CONFIG = RuntimeClientConfig(
429429
data_tree=data_tree.DataTree(server=self._server())
430430
)
431+
misc.RUNTIME_CLIENT_CONFIG._data_tree._holds_server = False
431432
config_to_return = misc.RUNTIME_CLIENT_CONFIG
432433
return config_to_return
433434

ansys/dpf/core/data_tree.py

Lines changed: 28 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import enum
88
import traceback
99
import warnings
10+
import weakref
1011

1112
from ansys.dpf.core.mapping_types import types
1213
from ansys.dpf.core import server as server_module
@@ -64,16 +65,17 @@ class DataTree:
6465
6566
Notes
6667
-----
67-
Class available with server's version starting at 4.0.
68+
Class available with server's version starting at 4.0 (Ansys 2022R2).
6869
"""
6970

7071
def __init__(self, data=None, data_tree=None, server=None):
7172
# __set_attr__ method has been overridden, self._common_keys is used to list the "real"
7273
# names used as its class attributes
7374
self._common_keys = ["_common_keys", "_server", "_internal_obj", "_owner_data_tree",
74-
"_dict", "_api_instance", "_deleter_func"]
75+
"_dict", "_api_instance", "_deleter_func", "_holds_server_instance",
76+
"_server_instance", "_holds_server"]
7577
# step 1: get server
76-
self._server = server_module.get_or_create_server(server)
78+
self._server_instance = server_module.get_or_create_server(server)
7779

7880
if data_tree is None and not self._server.meet_version("4.0"):
7981
raise errors.DpfVersionNotSupported("4.0")
@@ -98,6 +100,24 @@ def __init__(self, data=None, data_tree=None, server=None):
98100
if data:
99101
self.add(data)
100102

103+
self._holds_server_instance = True
104+
105+
@property
106+
def _holds_server(self):
107+
return self._holds_server_instance
108+
109+
@property
110+
def _server(self):
111+
if isinstance(self._server_instance, weakref.ref):
112+
return self._server_instance()
113+
return self._server_instance
114+
115+
@_holds_server.setter
116+
def _holds_server(self, value):
117+
self._holds_server_instance = value
118+
if value is False and not isinstance(self._server_instance, weakref.ref):
119+
self._server_instance = weakref.ref(self._server_instance)
120+
101121
@property
102122
def _api(self) -> dpf_data_tree_abstract_api.DpfDataTreeAbstractAPI:
103123
if not self._api_instance:
@@ -124,6 +144,7 @@ def add(self, *args, **kwargs):
124144
>>> data_tree.add(id=3, qualities=["nice", "funny"], name="George")
125145
126146
"""
147+
127148
def add_data(self, key, value):
128149
if isinstance(value, str):
129150
self._api.dpf_data_tree_set_string_attribute(self, key, value, len(value))
@@ -159,6 +180,7 @@ def add_data(self, key, value):
159180
else:
160181
raise TypeError(f"{type(value[0]).__name__} is not a supported type, "
161182
"use lists, int, float, strings or DataTree.")
183+
162184
for entry in args:
163185
for key, value in entry.items():
164186
add_data(self, key, value)
@@ -468,9 +490,10 @@ def __del__(self):
468490

469491
class _LocalDataTree(DataTree):
470492
def __init__(self, data_tree):
471-
self._common_keys = ["_owner_data_tree", "_dict", "_common_keys"]
493+
self._common_keys = ["_owner_data_tree", "_dict", "_common_keys", "_is_exited"]
472494
self._owner_data_tree = data_tree
473495
self.__cache_data__()
496+
self._is_exited = False
474497

475498
def add(self, *args, **kwargs):
476499
"""
@@ -514,6 +537,6 @@ def __exit__(self, type_to_use, value, tb):
514537
print(tb)
515538

516539
def __del__(self):
517-
if not hasattr(self, "_is_exited") or not self._is_exited:
540+
if not self._is_exited:
518541
self._is_exited = True
519542
self.release_data()

docs/source/conf.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,8 @@ def reset_servers(gallery_conf, fname, when):
127127
"pypandoc": True,
128128
# path to your examples scripts
129129
"examples_dirs": ["../../examples"],
130+
# abort build at first example error
131+
'abort_on_example_error': True,
130132
# path where to save gallery generated examples
131133
"gallery_dirs": ["examples"],
132134
# Patter to search for example files

examples/00-basic/03-create_entities.py

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ def search_sequence_numpy(arr, seq):
3939

4040
###############################################################################
4141
# Add nodes:
42-
id = 1
42+
n_id = 1
4343
for i, x in enumerate(
4444
[
4545
float(i) * length / float(num_nodes_in_length)
@@ -58,8 +58,8 @@ def search_sequence_numpy(arr, seq):
5858
for i in range(0, num_nodes_in_depth)
5959
]
6060
):
61-
mesh.nodes.add_node(id, [x, y, z])
62-
id += 1
61+
mesh.nodes.add_node(n_id, [x, y, z])
62+
n_id += 1
6363

6464
###############################################################################
6565
# Get the nodes' coordinates field:
@@ -75,7 +75,7 @@ def search_sequence_numpy(arr, seq):
7575

7676
###############################################################################
7777
# Add solid elements (linear hexa with eight nodes):
78-
id = 1
78+
e_id = 1
7979
for i, x in enumerate(
8080
[
8181
float(i) * length / float(num_nodes_in_length)
@@ -111,7 +111,8 @@ def search_sequence_numpy(arr, seq):
111111
tmp = connectivity[6]
112112
connectivity[6] = connectivity[7]
113113
connectivity[7] = tmp
114-
mesh.elements.add_solid_element(id, connectivity)
114+
mesh.elements.add_solid_element(e_id, connectivity)
115+
e_id += 1
115116
mesh.plot()
116117

117118
###############################################################################

tests/conftest.py

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -383,11 +383,6 @@ def __getitem__(self, item):
383383
if len(self._local_servers) <= item:
384384
while len(self._local_servers) <= item:
385385
self._local_servers.append(core.start_local_server(as_global=False, config=conf))
386-
if SERVERS_VERSION_GREATER_THAN_OR_EQUAL_TO_4_0:
387-
runtime_config = core.settings.get_runtime_client_config(
388-
self._local_servers[-1]
389-
)
390-
runtime_config.cache_enabled = False
391386
try:
392387
self._local_servers[item].info
393388
return self._local_servers[item]

0 commit comments

Comments
 (0)