当前位置: 首页>>代码示例>>Python>>正文


Python inspect.safe_getattr函数代码示例

本文整理汇总了Python中sphinx.util.inspect.safe_getattr函数的典型用法代码示例。如果您正苦于以下问题:Python safe_getattr函数的具体用法?Python safe_getattr怎么用?Python safe_getattr使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。


在下文中一共展示了safe_getattr函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。

示例1: get_motor_attr

def get_motor_attr(motor_class, name, *defargs):
    """If any Motor attributes can't be accessed, grab the equivalent PyMongo
    attribute. While we're at it, store some info about each attribute
    in the global motor_info dict.
    """
    attr = safe_getattr(motor_class, name)
    method_class = safe_getattr(attr, 'im_class', None)
    from_pymongo = not safe_getattr(
        method_class, '__module__', '').startswith('motor')

    # Store some info for process_motor_nodes()
    full_name = '%s.%s.%s' % (
        motor_class.__module__, motor_class.__name__, name)

    is_async_method = getattr(attr, 'is_async_method', False)
    is_cursor_method = getattr(attr, 'is_motorcursor_chaining_method', False)
    if is_async_method or is_cursor_method:
        pymongo_method = getattr(
            motor_class.__delegate_class__, attr.pymongo_method_name)
    else:
        pymongo_method = None

    is_pymongo_docstring = from_pymongo or is_async_method or is_cursor_method

    motor_info[full_name] = {
        # These sub-attributes are set in motor.asynchronize()
        'is_async_method': is_async_method,
        'callback_required': getattr(attr, 'callback_required', False),
        'is_pymongo_docstring': is_pymongo_docstring,
        'pymongo_method': pymongo_method }

    return attr
开发者ID:Taejun,项目名称:motor,代码行数:32,代码来源:motor_extensions.py

示例2: get_members

    def get_members(clazz, obj, typ):
        names = set()
        items = []

        # the default dir
        for name in dir(obj):
            try:
                documenter = get_documenter(safe_getattr(obj, name), obj)
            except AttributeError:
                continue
            if documenter.objtype == typ and not name.startswith('_'):
                if name not in AutoCosmoSummary.exclude:
                    items.append((clazz,name))
                    names.add(name) # keep track of method/attribute conflicts

        # the delegate dro
        for n in obj.dro:
            for name in dir(n):
                try:
                    documenter = get_documenter(safe_getattr(n, name), n)
                except AttributeError:
                    continue

                # dont do conflicts
                if name not in names:
                    if documenter.objtype == typ and not name.startswith('_'):
                        if name not in AutoCosmoSummary.exclude:
                            x = "%s.%s" %(n.__module__, n.__name__)
                            items.append((x,name))
                            names.add(name)

        return ['~%s.%s' %item for item in sorted(items, key=lambda x: x[1])]
开发者ID:bccp,项目名称:nbodykit,代码行数:32,代码来源:conf.py

示例3: get_object_members

 def get_object_members(self, want_all):
     if want_all:
         # if not hasattr(self.object, '__all__'):
         #     for implicit module members, check __module__ to avoid
         #     documenting imported objects
             return True, safe_getmembers(self.object)
         # else:
         #     memberlist = self.object.__all__
         #     # Sometimes __all__ is broken...
         #     if not isinstance(memberlist, (list, tuple)) or not \
         #        all(isinstance(entry, string_types) for entry in memberlist):
         #         self.directive.warn(
         #             '__all__ should be a list of strings, not %r '
         #             '(in module %s) -- ignoring __all__' %
         #             (memberlist, self.fullname))
         #         # fall back to all members
         #         return True, safe_getmembers(self.object)
     else:
         memberlist = self.options.members or []
     ret = []
     for mname in memberlist:
         try:
             ret.append((mname, safe_getattr(self.object, mname)))
         except AttributeError:
             self.directive.warn(
                 'missing attribute mentioned in :members: or __all__: '
                 'module %s, attribute %s' % (
                     safe_getattr(self.object, '__name__', '???'), mname))
     return False, ret
开发者ID:cxh852456,项目名称:pwntools,代码行数:29,代码来源:conf.py

示例4: get_motor_attr

def get_motor_attr(motor_class, name, *defargs):
    """If any Motor attributes can't be accessed, grab the equivalent PyMongo
    attribute. While we're at it, store some info about each attribute
    in the global motor_info dict.
    """
    attr = safe_getattr(motor_class, name)
    method_class = safe_getattr(attr, "im_class", None)
    from_pymongo = not safe_getattr(method_class, "__module__", "").startswith("motor")

    # Store some info for process_motor_nodes()
    full_name = "%s.%s.%s" % (motor_class.__module__, motor_class.__name__, name)

    is_async_method = getattr(attr, "is_async_method", False)
    is_cursor_method = getattr(attr, "is_motorcursor_chaining_method", False)
    if is_async_method or is_cursor_method:
        pymongo_method = getattr(motor_class.__delegate_class__, attr.pymongo_method_name)
    else:
        pymongo_method = None

    is_pymongo_docstring = from_pymongo or is_async_method or is_cursor_method

    motor_info[full_name] = {
        # These sub-attributes are set in motor.asynchronize()
        "is_async_method": is_async_method,
        "is_pymongo_docstring": is_pymongo_docstring,
        "pymongo_method": pymongo_method,
    }

    return attr
开发者ID:jettify,项目名称:motor,代码行数:29,代码来源:motor_extensions.py

示例5: test_safe_getattr_with_exception

def test_safe_getattr_with_exception():
    class Foo:
        def __getattr__(self, item):
            raise Exception

    obj = Foo()

    try:
        inspect.safe_getattr(obj, 'bar')
    except AttributeError as exc:
        assert exc.args[0] == 'bar'
    else:
        pytest.fail('AttributeError not raised')
开发者ID:olivier-heurtier,项目名称:sphinx,代码行数:13,代码来源:test_util_inspect.py

示例6: test_safe_getattr_with_exception

    def test_safe_getattr_with_exception(self):
        class Foo(object):
            def __getattr__(self, item):
                raise Exception

        obj = Foo()

        try:
            inspect.safe_getattr(obj, 'bar')
        except AttributeError as exc:
            self.assertEqual(exc.args[0], 'bar')
        else:
            self.fail('AttributeError not raised')
开发者ID:nwf,项目名称:sphinx,代码行数:13,代码来源:test_util_inspect.py

示例7: test_safe_getattr_with___dict___override

    def test_safe_getattr_with___dict___override(self):
        class Foo(object):
            @property
            def __dict__(self):
                raise Exception

        obj = Foo()

        try:
            inspect.safe_getattr(obj, 'bar')
        except AttributeError as exc:
            self.assertEqual(exc.args[0], 'bar')
        else:
            self.fail('AttributeError not raised')
开发者ID:nwf,项目名称:sphinx,代码行数:14,代码来源:test_util_inspect.py

示例8: test_safe_getattr_with___dict___override

def test_safe_getattr_with___dict___override():
    class Foo:
        @property
        def __dict__(self):
            raise Exception

    obj = Foo()

    try:
        inspect.safe_getattr(obj, 'bar')
    except AttributeError as exc:
        assert exc.args[0] == 'bar'
    else:
        pytest.fail('AttributeError not raised')
开发者ID:olivier-heurtier,项目名称:sphinx,代码行数:14,代码来源:test_util_inspect.py

示例9: test_safe_getattr_with_property_exception

def test_safe_getattr_with_property_exception():
    class Foo(object):
        @property
        def bar(self):
            raise Exception

    obj = Foo()

    try:
        inspect.safe_getattr(obj, 'bar')
    except AttributeError as exc:
        assert exc.args[0] == 'bar'
    else:
        pytest.fail('AttributeError not raised')
开发者ID:mgeier,项目名称:sphinx,代码行数:14,代码来源:test_util_inspect.py

示例10: get_members_class

            def get_members_class(obj, typ, include_public=[],
                                  include_base=False):
                """
                typ = None -> all
                include_base -> include attrs that are from a base class
                """
                items = []

                # using dir gets all of the attributes, including the elements
                # from the base class, otherwise use __slots__ or __dict__
                if include_base:
                    names = dir(obj)
                else:
                    if hasattr(obj, '__slots__'):
                        names = tuple(getattr(obj, '__slots__'))
                    else:
                        names = getattr(obj, '__dict__').keys()

                for name in names:
                    try:
                        documenter = get_documenter(safe_getattr(obj, name),
                                                    obj)
                    except AttributeError:
                        continue
                    if typ is None or documenter.objtype == typ:
                        items.append(name)
                public = [x for x in items
                          if x in include_public or not x.startswith('_')]
                return public, items
开发者ID:bnaul,项目名称:gatspy,代码行数:29,代码来源:automodsumm.py

示例11: get_motor_attr

def get_motor_attr(motor_class, name, *defargs):
    """If any Motor attributes can't be accessed, grab the equivalent PyMongo
    attribute. While we're at it, store some info about each attribute
    in the global motor_info dict.
    """
    from_pymongo = False
    try:
        attr = safe_getattr(motor_class, name, *defargs)
    except AttributeError:
        # Typically, this means 'name' is refers not to an async method like
        # MotorDatabase.command, but to a ReadOnlyProperty, e.g.
        # MotorClient.close(). The latter can't be accessed directly, but we
        # can get the docstring and method signature from the equivalent
        # PyMongo attribute, e.g. pymongo.mongo_client.MongoClient.close().
        attr = getattr(motor_class.__delegate_class__, name, *defargs)
        from_pymongo = True

    # Store some info for process_motor_nodes()
    full_name = '%s.%s.%s' % (
        motor_class.__module__, motor_class.__name__, name)

    is_async_method = getattr(attr, 'is_async_method', False)
    motor_info[full_name] = {
        # These sub-attributes are set in motor.asynchronize()
        'is_async_method': is_async_method,
        'callback_required': getattr(attr, 'callback_required', False),
        'is_pymongo_docstring': from_pymongo or is_async_method}

    return attr
开发者ID:chiehwen,项目名称:motor,代码行数:29,代码来源:motor_extensions.py

示例12: get_motor_attr

def get_motor_attr(motor_class, name, *defargs):
    """If any Motor attributes can't be accessed, grab the equivalent PyMongo
    attribute. While we're at it, store some info about each attribute
    in the global motor_info dict.
    """
    attr = safe_getattr(motor_class, name)

    # Store some info for process_motor_nodes()
    full_name = '%s.%s.%s' % (
        motor_class.__module__, motor_class.__name__, name)

    full_name_legacy = 'motor.%s.%s.%s' % (
        motor_class.__module__, motor_class.__name__, name)

    # These sub-attributes are set in motor.asynchronize()
    has_coroutine_annotation = getattr(attr, 'coroutine_annotation', False)
    is_async_method = getattr(attr, 'is_async_method', False)
    is_cursor_method = getattr(attr, 'is_motorcursor_chaining_method', False)
    if is_async_method or is_cursor_method:
        pymongo_method = getattr(
            motor_class.__delegate_class__, attr.pymongo_method_name)
    else:
        pymongo_method = None

    # attr.doc is set by statement like 'error = AsyncRead(doc="OBSOLETE")'.
    is_pymongo_doc = pymongo_method and attr.__doc__ == pymongo_method.__doc__

    motor_info[full_name] = motor_info[full_name_legacy] = {
        'is_async_method': is_async_method or has_coroutine_annotation,
        'is_pymongo_docstring': is_pymongo_doc,
        'pymongo_method': pymongo_method,
    }

    return attr
开发者ID:wujuguang,项目名称:motor,代码行数:34,代码来源:motor_extensions.py

示例13: add_content

 def add_content(self, more_content, no_docstring=False):
     if self.doc_as_attr:
         classname = safe_getattr(self.object, '__name__', None)
         if classname:
             content = ViewList(
                 [_('alias of :class:`%s`') % classname], source='')
             MatModuleLevelDocumenter.add_content(self, content,
                                               no_docstring=True)
     else:
         MatModuleLevelDocumenter.add_content(self, more_content)
开发者ID:Lemma1,项目名称:MINAMI,代码行数:10,代码来源:mat_documenters.py

示例14: def_members

 def def_members(obj, typ, include_public=[]):
     items = []
     try:
         obj_dict = safe_getattr(obj, '__dict__')
     except AttributeError:
         return []
     defined = obj_dict.keys()
     defined.sort()
     for name in defined:
         if sys.skip_member(name, obj): continue
         try:
             documenter = get_documenter(safe_getattr(obj, name), obj)
         except AttributeError:
             continue
         if documenter.objtype == typ:
             items.append(name)
     public = [x for x in items
               if x in include_public or not x.startswith('_')]
     return public
开发者ID:ChristenedGamer,项目名称:gui2py,代码行数:19,代码来源:generate.py

示例15: test_safe_getattr_with_default

def test_safe_getattr_with_default():
    class Foo:
        def __getattr__(self, item):
            raise Exception

    obj = Foo()

    result = inspect.safe_getattr(obj, 'bar', 'baz')

    assert result == 'baz'
开发者ID:olivier-heurtier,项目名称:sphinx,代码行数:10,代码来源:test_util_inspect.py


注:本文中的sphinx.util.inspect.safe_getattr函数示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。