def retrieve_callable_info(callable_obj):
    """Return 2-tuple.

    The first value is the callable source or its
    docstring.

    The second value is a boolean which is True if
    the source was retrieve and false otherwise.

    Parameters
    ==========

    callable_obj (any inspectable Python callable)
    """
    ### try retrieving the source code for the callable
    ### as the text containing info about the callable
    try:
        text = getsource(callable_obj)

    ### if it is not possible (for instance, the built-in
    ### function 'pow' can't have its source retrieved,
    ### even though it works with inspect.signature),
    ### just use the docstring or a placeholder text,
    ### if the docstring is None

    except (OSError, TypeError):

        managed_to_get_source = False

        text = getdoc(callable_obj)

        if text is None:
            text = t.editing.data.no_source_available

    ### if it is, set flag to True
    else:
        managed_to_get_source = True

    ### finally return the text retrieved/used and
    ### the flag
    return text, managed_to_get_source
Return 2-tuple.

    The first value is the callable source or its
    docstring.

    The second value is a boolean which is True if
    the source was retrieve and false otherwise.

    Parameters
    ==========

    callable_obj (any inspectable Python callable)
    
nodezator/editing/data.py