#[allow(unused_imports)]
use crate::error::{AprenderError, Result};
#[allow(unused_imports)]
use serde::{de::DeserializeOwned, Deserialize, Serialize};
#[allow(unused_imports)]
use std::collections::HashMap;
#[allow(unused_imports)]
use std::fs::File;
#[cfg(feature = "format-compression")]
#[allow(unused_imports)]
use std::io::Cursor;
#[allow(unused_imports)]
use std::io::{BufReader, BufWriter, Read, Write};
#[allow(unused_imports)]
use std::path::Path;
#[cfg(feature = "format-quantize")]
pub mod quantize;
#[cfg(feature = "format-homomorphic")]
pub mod homomorphic;
pub mod compare;
pub mod v2;
pub mod gguf;
pub mod onnx;
pub mod hexdump;
pub mod model_card;
#[allow(clippy::case_sensitive_file_extension_comparisons)]
pub mod validation;
pub mod converter_types;
#[allow(
clippy::unnecessary_wraps,
clippy::type_complexity,
clippy::trivially_copy_pass_by_ref,
clippy::explicit_iter_loop,
clippy::cast_lossless,
clippy::needless_pass_by_value,
clippy::map_unwrap_or,
clippy::case_sensitive_file_extension_comparisons,
clippy::uninlined_format_args,
clippy::derivable_impls
)]
pub mod converter;
#[allow(
clippy::struct_excessive_bools,
clippy::field_reassign_with_default,
clippy::uninlined_format_args,
dead_code
)]
pub mod lint;
pub mod sharded;
pub mod golden;
pub mod rosetta;
pub mod rosetta_ml;
pub mod types;
pub mod f16_safety;
pub mod core_io;
pub mod tensors;
pub mod diff;
pub mod layout_contract;
pub mod validated_tensors;
pub mod validated_classification;
pub mod model_family;
pub mod model_family_loader;
#[cfg(test)]
mod special_tokens_contract_falsify;
#[cfg(test)]
mod metadata_bounds_contract_falsify;
#[cfg(test)]
mod tokenizer_vocab_contract_falsify;
#[cfg(test)]
mod embedding_contract_falsify;
#[cfg(test)]
mod classification_contract_falsify;
#[cfg(feature = "format-signing")]
pub mod signing;
#[cfg(feature = "format-encryption")]
pub mod encryption;
#[cfg(any(kani, test))]
mod kani_proofs;
pub mod verification_specs;
#[cfg(test)]
pub mod test_factory;
pub use golden::{
verify_logits, GoldenTrace, GoldenTraceSet, GoldenVerifyReport, LogitStats, TraceVerifyResult,
};
pub use model_card::{ModelCard, TrainingDataInfo};
pub use validation::{
AprHeader, AprValidator, Category, CheckStatus, TensorStats, ValidationCheck, ValidationReport,
};
#[allow(deprecated)]
pub use validation::no_validation_result;
pub use validation::{fail_no_validation_rules, Gate, PokaYoke, PokaYokeResult};
pub use converter::{
apr_convert, apr_export, apr_import, apr_merge, streaming_quantize_peak_estimate, AprConverter,
Architecture, ConvertOptions, ConvertReport, EvolutionaryMergeConfig, EvolutionaryMergeResult,
ExportFormat, ExportOptions, ExportReport, ImportError, ImportOptions, MergeOptions,
MergeReport, MergeStrategy, QuantizationType, Source, TensorExpectation, ValidationConfig,
};
pub use lint::{
lint_apr_file, lint_model, lint_model_file, LintCategory, LintIssue, LintLevel, LintReport,
ModelLintInfo, TensorLintInfo,
};
pub use sharded::{
estimate_shard_memory, get_shard_files, is_sharded_model, CacheStats, CachedShard, ImportPhase,
ImportProgress, ImportReport, ShardCache, ShardIndex, ShardedImportConfig, ShardedImporter,
};
pub use rosetta::{
ConversionOptions, ConversionPath, ConversionReport, FormatType, InspectionReport,
RosettaStone, TensorInfo, VerificationReport,
};
pub use rosetta_ml::{
AndonLevel, AnomalyDetector, CanaryFile, CategorySummary, ConversionCategory,
ConversionDecision, ConversionIssue, ErrorPattern, ErrorPatternLibrary, FixAction,
HanseiReport, JidokaViolation, PatternSource, Priority, Regression, Severity, TarantulaTracker,
TensorCanary, TensorFeatures, Trend, WilsonScore,
};
pub use tensors::{
format_size, is_valid_apr_magic, list_tensors, list_tensors_from_bytes,
TensorInfo as TensorListInfo, TensorListOptions, TensorListResult,
};
pub use diff::{diff_inspections, diff_models, DiffCategory, DiffEntry, DiffOptions, DiffReport};
pub use layout_contract::{
block_sizes, contract, validate_ffn_shape_symmetry, validation_rules, ContractError,
LayoutContract, TensorContract,
};
pub use validated_tensors::{
ContractValidationError, RowMajor, TensorStats as ValidatedTensorStats, ValidatedEmbedding,
ValidatedVector, ValidatedWeight,
};
pub use validated_classification::{
ValidatedClassLogits, ValidatedClassifierWeight, ValidatedSafetyLabel,
};
#[cfg(feature = "format-quantize")]
pub use quantize::{
dequantize, quantize as quantize_data, Q4_0Quantizer, Q8_0Quantizer, QuantType,
QuantizationInfo, QuantizedBlock, QuantizedTensor, Quantizer, BLOCK_SIZE,
};
#[cfg(feature = "format-homomorphic")]
pub use homomorphic::{
Ciphertext, HeContext, HeGaloisKeys, HeParameters, HePublicKey, HeRelinKeys, HeScheme,
HeSecretKey, Plaintext, SecurityLevel,
};
#[cfg(feature = "format-signing")]
pub use ed25519_dalek::{SigningKey, VerifyingKey};
#[cfg(feature = "format-signing")]
pub const SIGNATURE_SIZE: usize = 64;
#[cfg(feature = "format-signing")]
pub const PUBLIC_KEY_SIZE: usize = 32;
#[cfg(feature = "format-encryption")]
pub const SALT_SIZE: usize = 16;
#[cfg(feature = "format-encryption")]
pub const NONCE_SIZE: usize = 12;
#[cfg(feature = "format-encryption")]
pub const KEY_SIZE: usize = 32;
#[cfg(feature = "format-encryption")]
pub const X25519_PUBLIC_KEY_SIZE: usize = 32;
#[cfg(feature = "format-encryption")]
pub const RECIPIENT_HASH_SIZE: usize = 8;
#[cfg(feature = "format-encryption")]
pub const HKDF_INFO: &[u8] = b"apr-v1-encrypt";
#[cfg(feature = "format-encryption")]
pub use x25519_dalek::{PublicKey as X25519PublicKey, StaticSecret as X25519SecretKey};
pub const MAGIC: [u8; 4] = [0x41, 0x50, 0x52, 0x4E];
pub const FORMAT_VERSION: (u8, u8) = (1, 0);
pub const HEADER_SIZE: usize = 32;
pub const MAX_UNCOMPRESSED_SIZE: u32 = 1024 * 1024 * 1024;
pub use types::*;
pub use core_io::*;
#[cfg(feature = "format-signing")]
pub use signing::*;
#[cfg(feature = "format-encryption")]
pub use encryption::*;
#[cfg(test)]
mod tests;