def METHOD_NAME(path):
    if not path:
        return
    # check path exist and readable
    if not os.path.exists(path):
        message = tr("Path do not exist: ") + path
        iface.messageBar().pushCritical("Trends.Earth", message)
        return
    if not os.access(path, mode=os.R_OK | os.W_OK):
        message = tr("No read or write permission on path: ") + path
        iface.messageBar().pushCritical("Trends.Earth", message)
        return
    if sys.platform == "darwin":
        subprocess.check_call(["open", path])
    elif sys.platform == "linux":
        subprocess.check_call(["xdg-open", path])
    elif sys.platform == "win32":
        res = subprocess.run(["explorer", path])
        # For some reason windows "explorer" often returns 1 on success (as
        # apparently do other windows GUI programs...)
        if res.returncode not in [0, 1]:
            raise subprocess.CalledProcessError