// Copyright © 2023-2024 Apple Inc. #pragma once #include #include #include #include #include #include #include #include #include #include "mlx/io.h" namespace mx = mlx::core; namespace nb = nanobind; using LoadOutputTypes = std::variant< mx::array, std::unordered_map, mx::SafetensorsLoad, mx::GGUFLoad>; mx::SafetensorsLoad mlx_load_safetensor_helper( nb::object file, mx::StreamOrDevice s); void mlx_save_safetensor_helper( nb::object file, nb::dict d, std::optional m); mx::GGUFLoad mlx_load_gguf_helper(nb::object file, mx::StreamOrDevice s); void mlx_save_gguf_helper( nb::object file, nb::dict d, std::optional m); LoadOutputTypes mlx_load_helper( nb::object file, std::optional format, bool return_metadata, mx::StreamOrDevice s); void mlx_save_helper(nb::object file, mx::array a); void mlx_savez_helper( nb::object file, nb::args args, const nb::kwargs& kwargs, bool compressed = false);