datafusion_openlineage/
config.rs1pub use openlineage_client::OpenLineageConfig;
9
10pub const DATAFUSION_PRODUCER: &str =
12 "https://github.com/open-lakehouse/headwaters/datafusion-openlineage";
13
14pub trait DataFusionConfig {
16 fn for_datafusion() -> Self;
19
20 fn for_datafusion_from_env() -> Self;
24}
25
26impl DataFusionConfig for OpenLineageConfig {
27 fn for_datafusion() -> Self {
28 stamp_datafusion(OpenLineageConfig {
29 producer: DATAFUSION_PRODUCER.to_string(),
30 ..OpenLineageConfig::with_env(None, None)
31 })
32 }
33
34 fn for_datafusion_from_env() -> Self {
35 stamp_datafusion(OpenLineageConfig {
36 producer: DATAFUSION_PRODUCER.to_string(),
37 ..OpenLineageConfig::from_env()
38 })
39 }
40}
41
42fn stamp_datafusion(mut cfg: OpenLineageConfig) -> OpenLineageConfig {
46 cfg.engine_name = "DataFusion".to_string();
47 cfg.engine_version = datafusion::DATAFUSION_VERSION.to_string();
48 cfg
49}
50
51#[cfg(test)]
52mod tests {
53 use super::*;
54
55 #[test]
56 fn datafusion_identity_is_stable() {
57 let cfg = OpenLineageConfig::for_datafusion();
58 assert_eq!(cfg.producer, DATAFUSION_PRODUCER);
59 assert_eq!(cfg.engine_name, "DataFusion");
60 assert_eq!(cfg.adapter_version, env!("CARGO_PKG_VERSION"));
61 assert!(!cfg.engine_version.is_empty());
62 }
63}