#![warn(missing_docs)]
#![deny(clippy::clone_on_ref_ptr)]
mod session_context;
pub use session_context::ExonSession;
#[allow(clippy::cmp_owned)]
mod config;
pub use config::new_exon_config;
pub mod datasources;
pub mod udfs;
pub mod physical_optimizer;
pub mod physical_plan;
#[cfg(feature = "ffi")]
pub mod ffi;
mod runtime_env;
pub use runtime_env::ExonRuntimeEnvExt;
mod error;
pub use error::ExonError;
pub use error::Result;
pub mod streaming_bgzf;
pub(crate) mod rust_bio_alignment;
mod logical_plan;
mod sinks;
mod sql;
#[cfg(test)]
mod tests {
use std::sync::Arc;
#[allow(unused_imports)]
use datafusion::datasource::listing::ListingTableUrl;
use datafusion::{
logical_expr::Operator,
physical_plan::{expressions::BinaryExpr, PhysicalExpr},
};
use object_store::{local::LocalFileSystem, ObjectStore};
pub(crate) fn eq(left: Arc<dyn PhysicalExpr>, right: Arc<dyn PhysicalExpr>) -> BinaryExpr {
BinaryExpr::new(left, Operator::Eq, right)
}
pub(crate) fn gteq(left: Arc<dyn PhysicalExpr>, right: Arc<dyn PhysicalExpr>) -> BinaryExpr {
BinaryExpr::new(left, Operator::GtEq, right)
}
pub(crate) fn gt(left: Arc<dyn PhysicalExpr>, right: Arc<dyn PhysicalExpr>) -> BinaryExpr {
BinaryExpr::new(left, Operator::Gt, right)
}
pub(crate) fn lt(left: Arc<dyn PhysicalExpr>, right: Arc<dyn PhysicalExpr>) -> BinaryExpr {
BinaryExpr::new(left, Operator::Lt, right)
}
pub fn make_object_store() -> Arc<dyn ObjectStore> {
let local_file_system = LocalFileSystem::new();
Arc::new(local_file_system)
}
#[cfg(feature = "fixtures")]
pub fn test_fixture_table_url(
relative_path: &str,
) -> Result<ListingTableUrl, datafusion::error::DataFusionError> {
use std::path::PathBuf;
let cwd = std::env::current_dir().unwrap().join("exon");
let start_directory = std::env::var("CARGO_MANIFEST_DIR")
.map(PathBuf::from)
.unwrap_or(cwd);
let abs_file_path = start_directory
.join("test-data")
.join("fixtures")
.join(relative_path);
ListingTableUrl::parse(abs_file_path.to_str().unwrap())
}
}