use serde::{Deserialize, Serialize};
use crate::results::MinimalFallback;
#[derive(Debug, Clone, Default, Deserialize, Serialize)]
pub struct GgufTensorSummary {
pub name: String,
pub kind: u32,
#[serde(skip_serializing_if = "Option::is_none")]
pub kind_name: Option<String>,
pub size: u64,
pub shape: Vec<u64>,
}
#[derive(Debug, Clone, Default, Deserialize, Serialize)]
pub struct GgufMetadata {
pub byte_count: usize,
#[serde(skip_serializing_if = "Option::is_none")]
pub parse_error: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub parse_ok: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub version: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub model_family: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub gguf_file_type: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub model_parameters: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub num_kv: Option<u64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub num_tensor: Option<u64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub kv: Option<serde_json::Value>,
#[serde(skip_serializing_if = "Option::is_none")]
pub tensor_summaries: Option<Vec<GgufTensorSummary>>,
}
impl MinimalFallback for GgufMetadata {
fn minimal_fallback(file_size_bytes: usize) -> Self {
Self {
byte_count: file_size_bytes,
..Self::default()
}
}
}