Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
typ = type(v)
# simple base case
if typ in (types.FunctionType, types.MethodType):
yield v
# recursive cases
elif typ in (list, tuple, set):
for child in v:
for child_res in visit_function_obj(child, ids_seen_set):
yield child_res
elif (
typ == dict
or runestone.codelens.pg_encoder.is_class(v)
or runestone.codelens.pg_encoder.is_instance(v)
):
contents_dict = None
if typ == dict:
contents_dict = v
# warning: some classes or instances don't have __dict__ attributes
elif hasattr(v, "__dict__"):
contents_dict = v.__dict__
if contents_dict:
for (key_child, val_child) in contents_dict.items():
for key_child_res in visit_function_obj(key_child, ids_seen_set):
yield key_child_res
for val_child_res in visit_function_obj(val_child, ids_seen_set):
yield val_child_res