Currently, running openEMS's example Python scripts on macOS always fails
with the following error:
$ python3 MSL_NotchFilter.py
Traceback (most recent call last):
File "/Users/gentoo/code/openEMS-Project/openEMS/python/Tutorials/MSL_NotchFilter.py", line 103, in <module>
FDTD.Run(Sim_Path, cleanup=True)
File "openEMS/openEMS.pyx", line 489, in openEMS.openEMS.openEMS.Run
AssertionError
This is caused by an oversight of an assertion in openEMS.pyx:
os.chdir(sim_path)
# ...
assert os.getcwd() == sim_path
The problem here is that "sim_path" is not a canonical path name,
so the assertion would fail if the path we're switching into contains
a symbolic link. This problem affects all operating systems, it's not
limited to macOS. But on macOS, the problem is especially serious,
since macOS's "/tmp" is a link to "/private/tmp" by default. Thus, it
causes an AssertionError in all the included Python examples.
Instead of doing "assert os.getcwd() == sim_path", we should write
"assert os.getcwd() == os.path.realpath(sim_path)" to ensure that
we're checking a canonical path.
Signed-off-by: Yifeng Li <tomli@tomli.me>
Accroding to NumPy's development team, "for a long time, np.int has
been an alias of the builtin int. This is repeatedly a cause of
confusion for newcomers, and existed mainly for historic reasons."
This and many other aliases have been deprecated since NumPy v1.20.0,
and at this point they've been completely removed. Replace "np.int"
with "int" allows ports.py to run again.
Signed-off-by: Yifeng Li <tomli@tomli.me>
Otherwise, it fails with:
File "/usr/local/lib/python2.7/dist-packages/openEMS/ports.py", line 205, in __init__
super(MSLPort, self).__init__(CSX, port_nr=port_nr, start=start, stop=stop, excite=excite, **kw)
TypeError: super() argument 1 must be type, not classobj