import manimlib.imports import inspect import json class ManimHelper: def hierarchical_phase(self, class_dict, module_list, class_name): if len(module_list) == 1: if module_list[0] not in class_dict: class_dict[module_list[0]] = [] class_dict[module_list[0]].append(class_name) else: if module_list[0] not in class_dict: class_dict[module_list[0]] = {} tmp_key = module_list.pop(0) class_dict[tmp_key] = self.hierarchical_phase(class_dict[tmp_key], module_list, class_name) return class_dict def get_class_list(self): members = inspect.getmembers(manimlib.imports, inspect.isclass) class_dict = {} for (member_name, member_type) in members: module_list = str(member_type.__module__).split('.') if module_list[0] == 'manimlib': class_dict = self.hierarchical_phase(class_dict, module_list, member_name) return class_dict def get_arguments(self, name): arg_spec = inspect.getfullargspec(eval(name)) print(arg_spec) arg_name = arg_spec.args if arg_name[0] == 'self': arg_name.pop(0) arg_default = arg_spec.defaults arguments = [] for i in range(0, len(arg_name)): instance_dict = {'name': arg_name[i], 'default': 0} arguments.append(instance_dict) return {'arguments': arguments} def get_function(self, class_name): functions = inspect.getmembers(eval(class_name), inspect.isfunction) function_list = [] for (function, _) in functions: if function[0:2] != '__': function_list.append(function) return {'functions': function_list} # manim_helper = ManimHelper() # print(manim_helper.get_function('manimlib.mobject.svg.tex_mobject.TextMobject'))