<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def show(parent=None, targets=[], modal=None, auto_publish=False, auto_validate=False):
 """Attempt to show GUI Requires install() to have been run first, and a live instance of Pyblish QML in the background. Arguments: parent (None, optional):
 Deprecated targets (list, optional):
 Publishing targets modal (bool, optional):
 Block interactions to parent """


    # Get modal mode from environment
    if modal is None:
        modal = bool(os.environ.get("PYBLISH_QML_MODAL", False))

    # Automatically install if not already installed.
    install(modal)

    show_settings = settings.to_dict()
    show_settings['autoPublish'] = auto_publish
    show_settings['autoValidate'] = auto_validate

    # Show existing GUI
    if _state.get("currentServer"):
        server = _state["currentServer"]
        proxy = ipc.server.Proxy(server)

        try:
            proxy.show(show_settings)
            return server

        except IOError:
            # The running instance has already been closed.
            _state.pop("currentServer")

    if not host.is_headless():
        host.splash()

    try:
        service = ipc.service.Service()
        server = ipc.server.Server(service, targets=targets, modal=modal)
    except Exception:
        # If for some reason, the GUI fails to show.
        traceback.print_exc()
        return host.desplash()

    proxy = ipc.server.Proxy(server)
    proxy.show(show_settings)

    # Store reference to server for future calls
    _state["currentServer"] = server

    log.info("Success. QML server available as "
             "pyblish_qml.api.current_server()")

    server.listen()

    return server