def METHOD_NAME(path):
    """Read model_data from NetCDF file"""
    with xr.open_dataset(path) as model_data:
        model_data.load()
    calliope_version = model_data.attrs.get("calliope_version", False)
    if calliope_version:
        if not str(calliope_version) in __version__:
            exceptions.warn(
                "This model data was created with Calliope version {}, "
                "but you are running {}. Proceed with caution!".format(
                    calliope_version, __version__
                )
            )
    for attr in _pop_serialised_list(model_data.attrs, "serialised_dicts"):
        model_data.attrs[attr] = AttrDict.from_yaml_string(model_data.attrs[attr])
    for attr in _pop_serialised_list(model_data.attrs, "serialised_bools"):
        model_data.attrs[attr] = bool(model_data.attrs[attr])
    for attr in _pop_serialised_list(model_data.attrs, "serialised_nones"):
        model_data.attrs[attr] = None
    # Convert empty strings back to np.NaN
    # TODO: revert when this issue is solved: https://github.com/pydata/xarray/issues/1647
    for var_name, var_array in model_data.data_vars.items():
        if var_array.dtype.kind in ["U", "O"]:
            model_data[var_name] = var_array.where(lambda x: x != "")
    # FIXME some checks for consistency
    # use check_dataset from the checks module
    # also check the old checking from 0.5.x
    return model_data