human
Here's a good function header given the following:
I wrote the below code

    from spyder.widgets.variableexplorer.texteditor import TextEditor
    from spyder.widgets.variableexplorer.utils import ndarray, FakeObject, Image, is_known_type, DataFrame, Series
    from spyder.widgets.variableexplorer.collectionseditor import CollectionsEditor
    from spyder.widgets.variableexplorer.arrayeditor import ArrayEditor
    if (DataFrame is not FakeObject):
        from spyder.widgets.variableexplorer.dataframeeditor import DataFrameEditor
    conv_func = (lambda data: data)
    readonly = (not is_known_type(obj))
    if (isinstance(obj, ndarray) and (ndarray is not FakeObject)):
        dialog = ArrayEditor()
        if (not dialog.setup_and_check(obj, title=obj_name, readonly=readonly)):
            return
    elif (isinstance(obj, Image) and (Image is not FakeObject) and (ndarray is not FakeObject)):
        dialog = ArrayEditor()
        import numpy as np
        data = np.array(obj)
        if (not dialog.setup_and_check(data, title=obj_name, readonly=readonly)):
            return
        from spyder.pil_patch import Image
        conv_func = (lambda data: Image.fromarray(data, mode=obj.mode))
    elif (isinstance(obj, (DataFrame, Series)) and (DataFrame is not FakeObject)):
        dialog = DataFrameEditor()
        if (not dialog.setup_and_check(obj)):
            return
    elif is_text_string(obj):
        dialog = TextEditor(obj, title=obj_name, readonly=readonly)
    else:
        dialog = CollectionsEditor()
        dialog.setup(obj, title=obj_name, readonly=readonly)
    def end_func(dialog):
        return conv_func(dialog.get_value())
    return (dialog, end_func)

What's a good function header?
assistant
#Here's a good function header.

def create_dialog(obj, obj_name):