CAMFR
CAMFR copied to clipboard
remove global imports of `numpy` etc.
From @demisjohn on February 28, 2018 9:38
the module repeatedly calls from numpy import *
, which, aside from being bad practice, actually has stomped on one of it's own functions.
The camfr function full()
, as in set_mode_correct(full)
, has been replaced by numpy.full()
(which presumably didn't exist in ~2005). This now pops an error.
set_mode_correction(full)
Boost.Python.ArgumentError: Python argument types in
camfr._camfr.set_mode_correction(function)
did not match C++ signature:
set_mode_correction(Mode_correction)
Must go thru the python files and replace the import statement with import numpy as np
and go through to prepend all numpy functions with np.
!
Copied from original issue: demisjohn/CAMFR#5
A workaround may be to use the number 3 instead of "full", as I believe this is just an enumerated enum
in C or something.
See camfr_wrap.cpp
, and search for full
30415335d12ad3bc2ea304a3b76d37845a38a9e3 fixes the numpy *
stomping on full
ModeSolver option.
Still have a few more include files to remove the global numpy import from, and also must runs testsuite to confirm it didn't break anything.
The last global import is in __init__.py
, where it calls from pylab import *
. Not sure which modules use this.
This does actually generate a full()
function from numpy, but _camfr.so
is loaded afterwards, so CAMFR stomps on numpy's full
function, so CAMFR works as expected when run with import camfr as *
.
Should remove this line, but find out where it is used first to see if it'll break anything.