Create a proxy object from a callable.

        If `any_configurable` is true, `obj` takes a parameter named
        ``config``, and `obj` smells like it implements
        :class:`yakonfig.Configurable` (it has a
        :attr:`~yakonfig.Configurable.config_name`), then return it
        directly.

def from_obj(cls, obj, any_configurable=False):
        '''Create a proxy object from a callable.

        If `any_configurable` is true, `obj` takes a parameter named
        ``config``, and `obj` smells like it implements
        :class:`yakonfig.Configurable` (it has a
        :attr:`~yakonfig.Configurable.config_name`), then return it
        directly.

        '''
        discovered = cls.inspect_obj(obj)
        if ((any_configurable and
             'config' in discovered['required'] and
             hasattr(obj, 'config_name'))):
            return obj
        return cls(obj, discovered['name'], discovered['required'],
                   discovered['defaults'])