Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix desktop reference counting #4094

Merged
merged 5 commits into from
Jan 19, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions _unittest/test_01_Design.py
Original file line number Diff line number Diff line change
Expand Up @@ -410,3 +410,12 @@ def test_40_get_design_settings(self, add_app):
assert "AmbRadTemp" in design_settings_dict
assert "GravityVec" in design_settings_dict
assert "GravityDir" in design_settings_dict

def test_41_desktop_reference_counting(self, desktop):
num_references = desktop._connected_app_instances
with Hfss() as hfss:
assert hfss
assert desktop._connected_app_instances == num_references + 1
hfss.set_active_design(hfss.design_name)
assert desktop._connected_app_instances == num_references + 1
assert desktop._connected_app_instances == num_references
13 changes: 6 additions & 7 deletions pyaedt/application/Design.py
Original file line number Diff line number Diff line change
Expand Up @@ -137,13 +137,14 @@ def __str__(self):
def __exit__(self, ex_type, ex_value, ex_traceback):
if ex_type:
exception_to_desktop(ex_value, ex_traceback)
if self._desktop_class._connected_designs > 1:
self._desktop_class._connected_designs -= 1
elif self._desktop_class._initialized_from_design:
if self._desktop_class._connected_app_instances > 0: # pragma: no cover
self._desktop_class._connected_app_instances -= 1
if self._desktop_class._connected_app_instances <= 0 and self._desktop_class._initialized_from_design:
self.release_desktop(self.close_on_exit, self.close_on_exit)

def __enter__(self):
pass
def __enter__(self): # pragma: no cover
self._desktop_class._connected_app_instances += 1
return self

@pyaedt_function_handler()
def __getitem__(self, variable_name):
Expand Down Expand Up @@ -234,8 +235,6 @@ def load_aedt_thread(path):
port,
aedt_process_id,
)
self._desktop_class._connected_designs += 1

self.student_version = self._desktop_class.student_version
if self.student_version:
settings.disable_bounding_box_sat = True
Expand Down
3 changes: 0 additions & 3 deletions pyaedt/circuit.py
Original file line number Diff line number Diff line change
Expand Up @@ -154,9 +154,6 @@ def __init__(
def _init_from_design(self, *args, **kwargs):
self.__init__(*args, **kwargs)

def __enter__(self):
return self

def _get_number_from_string(self, stringval):
value = stringval[stringval.find("=") + 1 :].strip().replace("{", "").replace("}", "").replace(",", ".")
value = value.replace("µ", "u")
Expand Down
2 changes: 1 addition & 1 deletion pyaedt/desktop.py
Original file line number Diff line number Diff line change
Expand Up @@ -484,7 +484,7 @@ def __init__(
self._initialized_from_design = True if Desktop._invoked_from_design else False
Desktop._invoked_from_design = False

self._connected_designs = 0
self._connected_app_instances = 0

"""Initialize desktop."""
self.launched_by_pyaedt = False
Expand Down
4 changes: 0 additions & 4 deletions pyaedt/emit.py
Original file line number Diff line number Diff line change
Expand Up @@ -189,10 +189,6 @@ def couplings(self):
"""
return self._couplings

@pyaedt_function_handler()
def __enter__(self):
return self

@pyaedt_function_handler()
def version(self, detailed=False):
"""
Expand Down
3 changes: 0 additions & 3 deletions pyaedt/hfss.py
Original file line number Diff line number Diff line change
Expand Up @@ -201,9 +201,6 @@ def __init__(
def _init_from_design(self, *args, **kwargs):
self.__init__(*args, **kwargs)

def __enter__(self):
return self

@property
def field_setups(self):
"""List of AEDT radiation fields.
Expand Down
3 changes: 0 additions & 3 deletions pyaedt/hfss3dlayout.py
Original file line number Diff line number Diff line change
Expand Up @@ -148,9 +148,6 @@ def __init__(
def _init_from_design(self, *args, **kwargs):
self.__init__(*args, **kwargs)

def __enter__(self):
return self

@pyaedt_function_handler()
def create_edge_port(
self,
Expand Down
3 changes: 0 additions & 3 deletions pyaedt/icepak.py
Original file line number Diff line number Diff line change
Expand Up @@ -171,9 +171,6 @@ def __init__(
def _init_from_design(self, *args, **kwargs):
self.__init__(*args, **kwargs)

def __enter__(self):
return self

@property
def problem_type(self):
"""Problem type of the Icepak design. Options are ``"TemperatureAndFlow"``, ``"TemperatureOnly"``,
Expand Down
3 changes: 0 additions & 3 deletions pyaedt/maxwell.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,9 +21,6 @@


class Maxwell(object):
def __enter__(self):
return self

def __init__(self):
pass

Expand Down
3 changes: 0 additions & 3 deletions pyaedt/maxwellcircuit.py
Original file line number Diff line number Diff line change
Expand Up @@ -204,6 +204,3 @@ def export_netlist_from_schematic(self, file_to_export):
return file_to_export
except:
return False

def __enter__(self):
return self
3 changes: 0 additions & 3 deletions pyaedt/mechanical.py
Original file line number Diff line number Diff line change
Expand Up @@ -130,9 +130,6 @@ def __init__(
def _init_from_design(self, *args, **kwargs):
self.__init__(*args, **kwargs)

def __enter__(self):
return self

@pyaedt_function_handler()
def assign_em_losses(
self,
Expand Down
3 changes: 0 additions & 3 deletions pyaedt/q3d.py
Original file line number Diff line number Diff line change
Expand Up @@ -82,9 +82,6 @@ def __init__(
for el in list(self.omatrix.ListReduceMatrixes()):
self.matrices.append(Matrix(self, el))

def __enter__(self):
return self

@property
def excitations(self):
"""Get all excitation names.
Expand Down
3 changes: 0 additions & 3 deletions pyaedt/rmxprt.py
Original file line number Diff line number Diff line change
Expand Up @@ -239,9 +239,6 @@ def __init__(
def _init_from_design(self, *args, **kwargs):
self.__init__(*args, **kwargs)

def __enter__(self):
return self

@property
def design_type(self):
"""Machine design type."""
Expand Down
3 changes: 0 additions & 3 deletions pyaedt/twinbuilder.py
Original file line number Diff line number Diff line change
Expand Up @@ -563,6 +563,3 @@ def add_q3d_dynamic_component(
if is_loaded:
app.close_project(save_project=False)
return True

def __enter__(self):
return self