def __init__(self, regexp=r'<STR_LIT>', mutability='<STR_LIT>', depth='<STR_LIT>', fallback=False, include=True, **kwargs):
super().__init__(**kwargs)<EOL>depth = depth.lower()<EOL>if depth not in ('<STR_LIT>', '<STR_LIT>', '<STR_LIT>'):<EOL><INDENT>raise ValueError<EOL><DEDENT>mutability = mutability.lower()<EOL>if mutability not in ('<STR_LIT>', '<STR_LIT>', '<STR_LIT>'):<EOL><INDENT>raise ValueError<EOL><DEDENT>self._regexp = regexp<EOL>self._mutability = mutability<EOL>self._depth = depth<EOL>self._fallback = fallback<EOL>self._include = include<EOL>
Constrain input based on function metadata. Include or avoid functions selected by the specified criteria.

Examples:
#Do not explore any human transactions that end up calling a constant function
no_human_constant = FilterFunctions(depth='human', mutability='constant', include=False)

#At human tx depth only accept synthetic check functions
only_tests = FilterFunctions(regexp=r'mcore_.*', depth='human', include=False)

:param regexp: a regular expression over the name of the function '.*' will match all functions
:param mutability: mutable, constant or both will match functions declared in the abi to be of such class
:param depth: match functions in internal transactions, in human initiated transactions or in both types
:param fallback: if True include the fallback function. Hash will be 00000000 for it
:param include: if False exclude the selected functions, if True include them