#![cfg_attr(not(feature = "std"), no_std)]
#![warn(missing_docs)]
#![warn(clippy::unwrap_used)]
#![warn(clippy::expect_used)]
#[cfg(feature = "alloc")]
extern crate alloc;
pub mod error;
#[cfg(feature = "timeseries")]
pub mod timeseries;
pub mod stack;
#[cfg(feature = "timeseries")]
pub mod analysis;
#[cfg(feature = "change_detection")]
pub mod change;
#[cfg(feature = "compositing")]
pub mod compositing;
#[cfg(feature = "timeseries")]
pub mod gap_filling;
#[cfg(feature = "aggregation")]
pub mod aggregation;
#[cfg(feature = "phenology")]
pub mod phenology;
#[cfg(feature = "interpolation")]
pub mod interpolation {
pub use crate::gap_filling::*;
}
#[cfg(feature = "trend_analysis")]
pub mod trend {
pub use crate::analysis::trend::*;
}
pub use error::{Result, TemporalError};
#[cfg(feature = "timeseries")]
pub use timeseries::{
CubeDimensions, CubeMetadata, DataCube, PixelStatistics, TemporalMetadata, TemporalRasterEntry,
TemporalResolution, TimeSeriesRaster, TimeSeriesStats,
};
pub use stack::{InterpolationMethod, RasterStack, StackConfig, StackMetadata};
#[cfg(feature = "timeseries")]
pub use analysis::anomaly::{AnomalyDetector, AnomalyMethod, AnomalyResult};
#[cfg(feature = "timeseries")]
pub use analysis::forecast::{ForecastMethod, ForecastParams, ForecastResult, Forecaster};
#[cfg(feature = "timeseries")]
pub use analysis::seasonality::{SeasonalityAnalyzer, SeasonalityMethod, SeasonalityResult};
#[cfg(feature = "timeseries")]
pub use analysis::trend::{TrendAnalyzer, TrendMethod, TrendResult};
#[cfg(feature = "compositing")]
pub use compositing::{CompositeResult, CompositingConfig, CompositingMethod, TemporalCompositor};
#[cfg(feature = "change_detection")]
pub use change::{
BreakpointDetector, BreakpointMethod, BreakpointParams, BreakpointResult,
ChangeDetectionConfig, ChangeDetectionMethod, ChangeDetectionResult, ChangeDetector,
};
#[cfg(feature = "timeseries")]
pub use gap_filling::{GapFillMethod, GapFillParams, GapFillResult, GapFiller};
#[cfg(feature = "aggregation")]
pub use aggregation::{
AggregationConfig, AggregationResult, AggregationStatistic, TemporalAggregator, TemporalWindow,
};
#[cfg(feature = "phenology")]
pub use phenology::{PhenologyConfig, PhenologyExtractor, PhenologyMethod, PhenologyMetrics};
pub const VERSION: &str = env!("CARGO_PKG_VERSION");
#[must_use]
pub fn version() -> &'static str {
VERSION
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_version() {
let v = version();
assert!(!v.is_empty());
assert!(v.contains('.'));
}
#[test]
fn test_error_types() {
let err = TemporalError::invalid_input("test");
assert!(format!("{}", err).contains("test"));
}
}