Skip to content

Commit 7dfb026

Browse files
authored
Merge branch 'main' into refactoring_scattering
2 parents 1910559 + 9417af3 commit 7dfb026

File tree

6 files changed

+71
-42
lines changed

6 files changed

+71
-42
lines changed

.github/workflows/unit_tests.yml

+3-3
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ jobs:
6969
- name: 'Unit testing'
7070
uses: nick-fields/retry@v3
7171
with:
72-
max_attempts: 3
72+
max_attempts: 1
7373
retry_on: error
7474
timeout_minutes: 40
7575
command: |
@@ -132,13 +132,13 @@ jobs:
132132
- name: 'Unit testing'
133133
uses: nick-fields/retry@v3
134134
with:
135-
max_attempts: 3
135+
max_attempts: 2
136136
retry_on: error
137137
timeout_minutes: 50
138138
command: |
139139
testenv\Scripts\Activate.ps1
140140
Set-Item -Path env:PYTHONMALLOC -Value "malloc"
141-
pytest -n 6 --dist loadfile --durations=50 -v --cov=pyaedt --cov-report=xml --cov-report=html --junitxml=junit/test-results.xml _unittest
141+
pytest -n 4 --dist loadfile --durations=50 -v --cov=pyaedt --cov-report=xml --cov-report=html --junitxml=junit/test-results.xml _unittest
142142
143143
- uses: codecov/codecov-action@v4
144144
env:

_unittest/conftest.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@
3838
settings.enable_error_handler = False
3939
settings.enable_desktop_logs = False
4040
settings.desktop_launch_timeout = 180
41-
41+
settings.release_on_exception = False
4242

4343
from pyaedt import Edb
4444
from pyaedt import Hfss

_unittest/test_12_PostProcessing.py

+9-9
Original file line numberDiff line numberDiff line change
@@ -355,18 +355,18 @@ def test_18_diff_plot(self, diff_test):
355355
context="Differential Pairs",
356356
)
357357
assert data1.primary_sweep == "Freq"
358-
data1.plot(formula="db20")
358+
data1.plot(formula="db20", snapshot_path=os.path.join(self.local_scratch.path, "temp1.jpg"))
359359
data1.primary_sweep = "l1"
360360
assert data1.primary_sweep == "l1"
361361
assert len(data1.data_magnitude()) == 5
362-
assert data1.plot("S(Diff1, Diff1)")
363-
assert data1.plot(formula="db20")
364-
assert data1.plot(formula="db10")
365-
assert data1.plot(formula="mag")
366-
assert data1.plot(formula="re")
367-
assert data1.plot(formula="im")
368-
assert data1.plot(formula="phasedeg")
369-
assert data1.plot(formula="phaserad")
362+
assert data1.plot("S(Diff1, Diff1)", snapshot_path=os.path.join(self.local_scratch.path, "temp2.jpg"))
363+
assert data1.plot(formula="db20", snapshot_path=os.path.join(self.local_scratch.path, "temp3.jpg"))
364+
assert data1.plot(formula="db10", snapshot_path=os.path.join(self.local_scratch.path, "temp4.jpg"))
365+
assert data1.plot(formula="mag", snapshot_path=os.path.join(self.local_scratch.path, "temp5.jpg"))
366+
assert data1.plot(formula="re", snapshot_path=os.path.join(self.local_scratch.path, "temp6.jpg"))
367+
assert data1.plot(formula="im", snapshot_path=os.path.join(self.local_scratch.path, "temp7.jpg"))
368+
assert data1.plot(formula="phasedeg", snapshot_path=os.path.join(self.local_scratch.path, "temp8.jpg"))
369+
assert data1.plot(formula="phaserad", snapshot_path=os.path.join(self.local_scratch.path, "temp9.jpg"))
370370

371371
assert diff_test.create_touchstone_report(
372372
plot_name="Diff_plot",

pyaedt/desktop.py

+5-1
Original file line numberDiff line numberDiff line change
@@ -470,6 +470,7 @@ def __new__(cls, *args, **kwargs):
470470
pyaedt_logger.info("Initializing new Desktop session.")
471471
return object.__new__(cls)
472472

473+
@pyaedt_function_handler()
473474
def __init__(
474475
self,
475476
specified_version=None,
@@ -1482,7 +1483,10 @@ def release_desktop(self, close_projects=True, close_on_exit=True):
14821483
if not result:
14831484
self.logger.error("Error releasing desktop.")
14841485
return False
1485-
self.logger.info("Desktop has been released")
1486+
if close_on_exit:
1487+
self.logger.info("Desktop has been released and closed.")
1488+
else:
1489+
self.logger.info("Desktop has been released.")
14861490
del _desktop_sessions[self.aedt_process_id]
14871491
props = [a for a in dir(self) if not a.startswith("__")]
14881492
for a in props:

pyaedt/generic/general_methods.py

+38-28
Original file line numberDiff line numberDiff line change
@@ -198,38 +198,48 @@ def _check_types(arg):
198198
return ""
199199

200200

201+
def raise_exception(e):
202+
if not settings.enable_error_handler:
203+
if settings.release_on_exception:
204+
from pyaedt.generic.desktop_sessions import _desktop_sessions
205+
206+
for v in list(_desktop_sessions.values())[:]:
207+
v.release_desktop(v.launched_by_pyaedt, v.launched_by_pyaedt)
208+
raise e
209+
else:
210+
return False
211+
212+
201213
def _function_handler_wrapper(user_function, **deprecated_kwargs):
214+
202215
def wrapper(*args, **kwargs):
216+
203217
if deprecated_kwargs and kwargs:
204218
deprecate_kwargs(user_function.__name__, kwargs, deprecated_kwargs)
205-
if not settings.enable_error_handler:
206-
result = user_function(*args, **kwargs)
207-
return result
208-
else:
209-
try:
210-
settings.time_tick = time.time()
211-
out = user_function(*args, **kwargs)
212-
if settings.enable_debug_logger or settings.enable_debug_edb_logger:
213-
_log_method(user_function, args, kwargs)
214-
return out
215-
except MethodNotSupportedError:
216-
message = "This method is not supported in current AEDT design type."
217-
if settings.enable_screen_logs:
218-
pyaedt_logger.error("**************************************************************")
219-
pyaedt_logger.error(
220-
"PyAEDT error on method {}: {}. Check again".format(user_function.__name__, message)
221-
)
222-
pyaedt_logger.error("**************************************************************")
223-
pyaedt_logger.error("")
224-
if settings.enable_file_logs:
225-
settings.error(message)
226-
return False
227-
except GrpcApiError:
228-
_exception(sys.exc_info(), user_function, args, kwargs, "AEDT grpc API call Error")
229-
return False
230-
except BaseException:
231-
_exception(sys.exc_info(), user_function, args, kwargs, str(sys.exc_info()[1]).capitalize())
232-
return False
219+
try:
220+
settings.time_tick = time.time()
221+
out = user_function(*args, **kwargs)
222+
if settings.enable_debug_logger or settings.enable_debug_edb_logger:
223+
_log_method(user_function, args, kwargs)
224+
return out
225+
except MethodNotSupportedError as e:
226+
message = "This method is not supported in current AEDT design type."
227+
if settings.enable_screen_logs:
228+
pyaedt_logger.error("**************************************************************")
229+
pyaedt_logger.error(
230+
"PyAEDT error on method {}: {}. Check again".format(user_function.__name__, message)
231+
)
232+
pyaedt_logger.error("**************************************************************")
233+
pyaedt_logger.error("")
234+
if settings.enable_file_logs:
235+
settings.error(message)
236+
raise_exception(e)
237+
except GrpcApiError as e:
238+
_exception(sys.exc_info(), user_function, args, kwargs, "AEDT grpc API call Error")
239+
raise_exception(e)
240+
except BaseException as e:
241+
_exception(sys.exc_info(), user_function, args, kwargs, str(sys.exc_info()[1]).capitalize())
242+
raise_exception(e)
233243

234244
return wrapper
235245

pyaedt/generic/settings.py

+15
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ def __init__(self):
2424
self._enable_debug_internal_methods_logger = False
2525
self._enable_debug_logger = False
2626
self._enable_error_handler = True
27+
self._release_on_exception = True
2728
self._aedt_version = None
2829
self._aedt_install_dir = None
2930
self._use_multi_desktop = False
@@ -72,6 +73,20 @@ def __init__(self):
7273
self.__lazy_load = True
7374
self.__objects_lazy_load = False
7475

76+
@property
77+
def release_on_exception(self):
78+
"""
79+
80+
Returns
81+
-------
82+
83+
"""
84+
return self._release_on_exception
85+
86+
@release_on_exception.setter
87+
def release_on_exception(self, value):
88+
self._release_on_exception = value
89+
7590
@property
7691
def objects_lazy_load(self):
7792
"""Flag for enabling and disabling the lazy load.

0 commit comments

Comments
 (0)