hide pprint._cache to avoid print into it; other misc fixes
filter_function now gets parent as variable