def _has_property(self, subject, name, *args):
        if args:
            try:
                value = getattr(subject, name)
            except __HOLE__:
                return False, 'property {0!r} not found'.format(name)
            else:
                expected_value = default_matcher(args[0])
                result, _ = expected_value._match(value)
                if not result:
                    return  False, 'property {0!r} {1!r} not found'.format(name, expected_value)
                return True, 'property {0!r} {1!r} found'.format(name, expected_value)

        if not hasattr(subject, name):
            return False, 'property {0!r} not found'.format(name)
        return True, 'property {0!r} found'.format(name)
dataset/ETHPy150Open jaimegildesagredo/expects/expects/matchers/built_in/have_properties.py/_PropertyMatcher._has_property