pub const UPSTREAM_SPEC_VERSION: &str = "3.1.0";
pub mod compatibility;
pub mod contract_set;
pub mod diagnostics;
pub mod model;
pub mod parser;
pub mod registry;
pub mod schema;
pub mod validation;
#[cfg(feature = "cli")]
pub mod cli;
#[cfg(feature = "python")]
mod python;
pub use compatibility::{diff, ChangeKind, CompatibilityChange, CompatibilityReport};
pub use contract_set::{
load_set, parse_and_validate_set, validate_set, validate_set_with_options, ContractSet,
};
pub use diagnostics::{
codes, inspect_contract, Diagnostic, DiagnosticCategory, DiagnosticReport, DiagnosticStage,
Severity, ValidationPhase, ValidationReport,
};
pub use model::DataContract;
pub use parser::{
parse, parse_file, parse_json, parse_strict, parse_yaml, DocumentFormat, ParseResult,
MAX_PARSE_BYTES,
};
pub use validation::{validate, validate_strict, validate_with_options, ValidationOptions};
#[must_use]
pub fn parse_and_validate(content: &[u8], format: DocumentFormat) -> ValidationReport {
parse(content, format).validate()
}
impl DataContract {
pub fn from_yaml(content: &str) -> ParseResult {
parse(content.as_bytes(), DocumentFormat::Yaml)
}
pub fn from_json(content: &str) -> ParseResult {
parse(content.as_bytes(), DocumentFormat::Json)
}
pub fn from_file(path: impl AsRef<std::path::Path>) -> miette::Result<ParseResult> {
parse_file(path)
}
}