irfpy.util.check
¶
Misc functions related to discovering typical programming errors.
Code author: Martin Wieser
|
Warns when accessing globals. |
Verifies 'np' is a module. |
- irfpy.util.check.warn_globals(func)[source]¶
Warns when accessing globals.
Decorator that warns if a function accesses global “variables”, i.e. objects that are not callable and that not other modules.
>>> import irfpy.util.check as check >>> b = 1 # A global variable >>> >>> @check.warn_globals ... def myfunc(a): ... print(b) # b is a global variable, which has not passed as parameter to myfunc. Probably, the intention of the developer is to refer to ``a``. >>> myfunc(a=15) 1
When
myfunc
is called,myfunc
referred tob
, a global variable. The decorator makes a warning asWarning: in 'myfunc': accessing global 'b'
.The warning is shown using the python logging system with the logger name of
irfpy.util.check
and the level ofwarning
.
- irfpy.util.check.np_is_module()[source]¶
Verifies ‘np’ is a module.
Verifies that the object ‘np’, if it exists, refers to a module (typically numpy) and is not the proton number density defined often as np in old (and odd) scripts.
Call anywhere, e.g. at end of your script.
Typical use case is as follows. The below function
myfunc
>>> import numpy as np # A typical use of numpy
At a certain point, you (unintentionally) overwrite
np
to proton density.>>> np = 3.0
Later, you want to use
np
as numpy. AttributionError occurs.>>> zero_array = np.zeros(20) Traceback (most recent call last): ... AttributeError: 'float' object has no attribute 'zeros'
You can check if
np
is overwritten or not. Change the function as>>> from irfpy.util import check >>> check.np_is_module()
You get the message
irfpy.util.check: WARNING: Warning: 'np' is not a (numpy) module (anymore).
The warning is shown using the python logging system with the logger name of
irfpy.util.check
and the level ofwarning
.