예제 #1
0
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)
예제 #2
0
파일: reflect.py 프로젝트: rainiraj/atk
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
예제 #3
0
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
예제 #4
0
파일: pyrst.py 프로젝트: rainiraj/atk
 def is_private(self):
     return is_name_private(self.display_name)
예제 #5
0
파일: pyrst.py 프로젝트: rainiraj/atk
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)
예제 #6
0
 def is_private(self):
     return is_name_private(self.display_name)