def get_member_rst_list(cls, intermediate_prefix=None): """Gets list of RstInfo objects for all the members of the given class""" prefix = intermediate_prefix if intermediate_prefix else '' # create a ordered dict of names -> whether the name is inherited or not, based on do dir() vs. __dict__ comparison members = OrderedDict([(name, name not in cls.__dict__) for name in dir(cls) if not is_name_private(name) ]) # True means we assume all are inherited member_rst_list = [ RstInfo(cls, getattr(cls, name), prefix + name, is_inherited) for name, is_inherited in members.items() ] # add members accessed through intermediate properties, for example, graph.sampling.vertex_sample will appear as 'sampling.vertex_sample' properties = [(name, get_intermediate_class(name, cls)) for name in members.keys() if isinstance(getattr(cls, name), property)] for property_name, intermediate_cls in properties: if intermediate_cls: p = prefix + property_name + '.' member_rst_list.extend( get_member_rst_list(intermediate_cls, intermediate_prefix=p)) # recursion return sorted(member_rst_list, key=lambda m: m.display_name)
def get_args_spec_from_function(function, ignore_self=False, ignore_private_args=False): args, varargs, varkwargs, defaults = inspect.getargspec(function) if ignore_self: args = [a for a in args if a != 'self'] num_defaults = len(defaults) if defaults else 0 if num_defaults: kwargs = zip(args[-num_defaults:], defaults) args = args[:-num_defaults] else: kwargs = [] if ignore_private_args: args = [name for name in args if not is_name_private(name)] kwargs = [(name, value) for name, value in kwargs if not is_name_private(name)] return args, kwargs, varargs, varkwargs
def is_private(self): return is_name_private(self.display_name)
def get_member_rst_list(cls, intermediate_prefix=None): """Gets list of RstInfo objects for all the members of the given class""" prefix = intermediate_prefix if intermediate_prefix else '' # create a ordered dict of names -> whether the name is inherited or not, based on do dir() vs. __dict__ comparison members = OrderedDict([(name, name not in cls.__dict__) for name in dir(cls) if not is_name_private(name)]) # True means we assume all are inherited member_rst_list = [RstInfo(cls, getattr(cls, name), prefix + name, is_inherited) for name, is_inherited in members.items()] # add members accessed through intermediate properties, for example, graph.sampling.vertex_sample will appear as 'sampling.vertex_sample' properties = [(name, get_intermediate_class(name, cls)) for name in members.keys() if isinstance(getattr(cls, name), property)] for property_name, intermediate_cls in properties: if intermediate_cls: p = prefix + property_name + '.' member_rst_list.extend(get_member_rst_list(intermediate_cls, intermediate_prefix=p)) # recursion return sorted(member_rst_list, key=lambda m: m.display_name)