use serde::{Deserialize, Serialize};
use super::array::ArrayLayoutSummary;
use super::tensor3d::Tensor3DPlaneStats;
use crate::results::ColumnarCommonFields;
use crate::results::MinimalFallback;
#[derive(Debug, Clone, Default, Deserialize, Serialize)]
pub struct NpyMetadata {
pub byte_count: usize,
#[serde(flatten)]
pub layout: ArrayLayoutSummary,
#[serde(flatten)]
pub common: ColumnarCommonFields,
#[serde(skip_serializing_if = "Option::is_none")]
pub tensor3d: Option<Tensor3DPlaneStats>,
}
impl MinimalFallback for NpyMetadata {
fn minimal_fallback(file_size_bytes: usize) -> Self {
Self {
byte_count: file_size_bytes,
common: ColumnarCommonFields::default(),
..Self::default()
}
}
}
#[derive(Debug, Clone, Default, Deserialize, Serialize)]
pub struct NpzNpyEntrySummary {
pub name: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub uncompressed_size: Option<u64>,
#[serde(flatten)]
pub layout: ArrayLayoutSummary,
#[serde(flatten)]
pub common: ColumnarCommonFields,
#[serde(skip_serializing_if = "Option::is_none")]
pub tensor3d: Option<Tensor3DPlaneStats>,
#[serde(skip_serializing_if = "Option::is_none")]
pub entry_parse_error: Option<String>,
}
#[derive(Debug, Clone, Default, Deserialize, Serialize)]
pub struct NpzMetadata {
pub byte_count: usize,
#[serde(skip_serializing_if = "Option::is_none")]
pub zip_entry_count: Option<usize>,
#[serde(skip_serializing_if = "Option::is_none")]
pub npy_entries_scanned: Option<usize>,
#[serde(skip_serializing_if = "Option::is_none")]
pub npy_entries: Option<Vec<NpzNpyEntrySummary>>,
}
impl MinimalFallback for NpzMetadata {
fn minimal_fallback(file_size_bytes: usize) -> Self {
Self {
byte_count: file_size_bytes,
..Self::default()
}
}
}