How to suppress a third-party warning using warnings.filterwarnings
Easiest way would be as the warnings module suggests here:
with warnings.catch_warnings(): warnings.simplefilter("ignore") import paramiko
The module
argument to warnings.filterwarnings
takes a case-sensitive regular expression which should match the fully qualified module name, so
warnings.filterwarnings( action='ignore', category=DeprecationWarning, module=r'.*randpool')
or
warnings.filterwarnings( action='ignore', category=DeprecationWarning, module=r'Crypto\.Utils\.randpool')
should work. You may need to write RandomPool_DeprecationWarning
explicitly instead of DeprecationWarning
if for some reason RandomPool_DeprecationWarning
is not a subclass of DeprecationWarning
.
You can also disable the warning on the command line when you invoke the script by passing the -W
option to the interpreter like so:
$ python -W ignore::RandomPool_DeprecationWarning:Crypto.Utils.randpool: my_script.py
The -W
takes filters in the format action:message:category:module:lineno
, where this time module
must exactly match the (fully-qualified) module name where the warning is raised.
See https://docs.python.org/2/library/warnings.html?highlight=warnings#the-warnings-filter and https://docs.python.org/2/using/cmdline.html#cmdoption-w
To filter only a specific warning:
with warnings.catch_warnings(): warnings.simplefilter('ignore', SpecificWarningObject) #do something that raises a Warning