Insert an entry into the list of warnings filters (at the front).

    'action' -- one of "error", "ignore", "always", "default", "module",
                or "once"
    'message' -- a regex that the warning message must match
    'category' -- a class that the warning must be a subclass of
    'module' -- a regex that the module name must match
    'lineno' -- an integer line number, 0 matches all warnings
    'append' -- if true, append to the list of filters
    'emodule' -- a regex that the module emitting the warning must match.

def filterwarnings(action, message="", category=Warning, module="", lineno=0,
                   append=False, emodule=""):
    """Insert an entry into the list of warnings filters (at the front).

    'action' -- one of "error", "ignore", "always", "default", "module",
                or "once"
    'message' -- a regex that the warning message must match
    'category' -- a class that the warning must be a subclass of
    'module' -- a regex that the module name must match
    'lineno' -- an integer line number, 0 matches all warnings
    'append' -- if true, append to the list of filters
    'emodule' -- a regex that the module emitting the warning must match.

    """
    assert action in ("error", "ignore", "always", "default", "module",
                      "once"), "invalid action: %r" % (action,)
    assert isinstance(message, str), "message must be a string"
    assert isinstance(category, type), "category must be a class"
    assert issubclass(category, Warning), "category must be a Warning subclass"
    assert isinstance(module, str), "module must be a string"
    assert isinstance(lineno, int) and lineno >= 0, \
        "lineno must be an int >= 0"
    if emodule:
        item = (action, re.compile(message, re.I), category,
            re.compile(module), lineno, re.compile(emodule, ))
    else:
        item = (action, re.compile(message, re.I), category,
            re.compile(module), lineno)
    if append:
        warnings.filters.append(_set_proxy_filter(item))
    else:
        warnings.filters.insert(0, _set_proxy_filter(item))
    warnings._filters_mutated()