'Convert a callable into one suitable for adding to the
instance. This will return a 2-tuple containing the computed
(name, property) pair.'

@classmethod
def make_property(cls, callable, name=None, reify=False):

    is_property = isinstance(callable, property)
    if is_property:
        fn = callable
        if (name is None):
            raise ValueError('must    specify    "name"    for    a    property')
        if reify:
            raise ValueError('cannot    reify    a    property')
    elif (name is not None):
        fn = (lambda this: callable(this))
        fn.__name__ = get_callable_name(name)
        fn.__doc__ = callable.__doc__
    else:
        name = callable.__name__
        fn = callable
    if reify:
        import pyramid.decorator
        fn = pyramid.decorator.reify(fn)
    elif (not is_property):
        fn = property(fn)
    return (name, fn)
