def __init__(self, cls, member, display_name, is_inherited): self.display_name = display_name self.is_inherited = is_inherited self.in_method_table = hasattr(member, '__call__') and not self.is_private self.args_text = '' if not self.in_method_table else "(%s)" % get_args_text_from_function(member) if isinstance(member, property): member = member.fget command_def = getattr(member, "command") if hasattr(member, "command") else None if self.display_name[-8:] == "__init__": if len(self.display_name) > 8: # mask (make private) the __init__ methods for properties (intermediates) self.display_name = "__private__init__" self.summary_rst_name = ":ref:`__init__ <%s>`\ " % get_cls_init_rst_label(cls) self.rst_name = command_def.name if command_def else "" else: self.summary_rst_name = ":doc:`%s <%s>`\ " % (self.display_name, self.display_name.replace('.', '/')) self.rst_name = self.display_name.replace('.', '/') intermediate_class = get_intermediate_class(display_name, cls) if intermediate_class: self.display_name = "__private_" + self.display_name if command_def: command_def.rst_info = self self.maturity = command_def.maturity else: self.maturity = None #self.name = self.display_name self.doc = command_def.doc if command_def else self.doc_to_rst(member.__doc__)
def __init__(self, cls, member, display_name, is_inherited): self.display_name = display_name self.is_inherited = is_inherited self.in_method_table = hasattr(member, '__call__') and not self.is_private self.args_text = '' if not self.in_method_table else "(%s)" % get_args_text_from_function(member) if isinstance(member, property): member = member.fget command_def = getattr(member, "command") if hasattr(member, "command") else None if self.display_name[-8:] == "__init__": if len(self.display_name) > 8: # mask (make private) the __init__ methods for properties (intermediates) self.display_name = "__private__init__" self.summary_rst_name = ":ref:`__init__ <%s>`\ " % get_cls_init_rst_label(cls) self.rst_name = command_def.name if command_def else "" else: self.summary_rst_name = ":doc:`%s <%s>`\ " % (self.display_name, self.display_name.replace('.', '/')) self.rst_name = self.display_name.replace('.', '/') intermediate_class = get_intermediate_class(display_name, cls) if intermediate_class: self.display_name = "__private_" + self.display_name if command_def: command_def.rst_info = self self.maturity = command_def.maturity else: self.maturity = None #self.name = self.display_name self.doc = command_def.doc if command_def else self.doc_to_rst(member.__doc__)
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_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 walker(obj): for name in dir(obj): if not name.startswith("_") or (inc_init and name == "__init__"): a = getattr(obj, name) if inspect.isclass(a): if is_api(a) and cls_func: cls_func(a) walker(a) else: if isinstance(a, property): intermediate_class = metaprog.get_intermediate_class(name, obj) if intermediate_class: walker(intermediate_class) a = a.fget if is_api(a) and attr_func: attr_func(obj, a)
def walker(obj): for name in dir(obj): if not name.startswith("_") or (inc_init and name == "__init__"): a = getattr(obj, name) if inspect.isclass(a): if is_api(a) and cls_func: cls_func(a) walker(a) else: if isinstance(a, property): intermediate_class = metaprog.get_intermediate_class(name, obj) if intermediate_class: walker(intermediate_class) a = a.fget if is_api(a) and attr_func: attr_func(obj, a)