diff --git a/Cargo.lock b/Cargo.lock index 2680901..8bfa4a1 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -86,7 +86,7 @@ dependencies = [ "arrow-data", "arrow-schema", "chrono", - "chrono-tz", + "chrono-tz 0.10.4", "half", "hashbrown", "num-complex", @@ -353,6 +353,17 @@ dependencies = [ "windows-link 0.2.1", ] +[[package]] +name = "chrono-tz" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d59ae0466b83e838b81a54256c39d5d7c20b9d7daa10510a242d9b75abd5936e" +dependencies = [ + "chrono", + "chrono-tz-build", + "phf 0.11.3", +] + [[package]] name = "chrono-tz" version = "0.10.4" @@ -363,6 +374,17 @@ dependencies = [ "phf 0.12.1", ] +[[package]] +name = "chrono-tz-build" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "433e39f13c9a060046954e0592a8d0a4bcb1040125cbf91cb8ee58964cfb350f" +dependencies = [ + "parse-zoneinfo", + "phf 0.11.3", + "phf_codegen", +] + [[package]] name = "comfy-table" version = "7.1.2" @@ -1027,12 +1049,30 @@ dependencies = [ "windows-link 0.2.1", ] +[[package]] +name = "parse-zoneinfo" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f2a05b18d44e2957b88f96ba460715e295bc1d7510468a2f3d3b44535d26c24" +dependencies = [ + "regex", +] + [[package]] name = "percent-encoding" version = "2.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" +[[package]] +name = "phf" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd6780a80ae0c52cc120a26a1a42c1ae51b247a253e4e06113d23d2c2edd078" +dependencies = [ + "phf_shared 0.11.3", +] + [[package]] name = "phf" version = "0.12.1" @@ -1052,6 +1092,35 @@ dependencies = [ "serde", ] +[[package]] +name = "phf_codegen" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aef8048c789fa5e851558d709946d6d79a8ff88c0440c587967f8e94bfb1216a" +dependencies = [ + "phf_generator", + "phf_shared 0.11.3", +] + +[[package]] +name = "phf_generator" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c80231409c20246a13fddb31776fb942c38553c51e871f8cbd687a4cfb5843d" +dependencies = [ + "phf_shared 0.11.3", + "rand 0.8.5", +] + +[[package]] +name = "phf_shared" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67eabc2ef2a60eb7faa00097bd1ffdb5bd28e62bf39990626a582201b7a754e5" +dependencies = [ + "siphasher", +] + [[package]] name = "phf_shared" version = "0.12.1" @@ -1110,7 +1179,7 @@ dependencies = [ "hmac", "md-5", "memchr", - "rand", + "rand 0.9.2", "sha2", "stringprep", ] @@ -1151,7 +1220,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "37a6df7eab65fc7bee654a421404947e10a0f7085b6951bf2ea395f4659fb0cf" dependencies = [ "chrono", - "chrono-tz", + "chrono-tz 0.10.4", "indexmap", "indoc", "libc", @@ -1177,7 +1246,7 @@ dependencies = [ "arrow-schema", "arrow-select", "chrono", - "chrono-tz", + "chrono-tz 0.10.4", "half", "indexmap", "numpy", @@ -1244,6 +1313,15 @@ version = "5.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "rand_core 0.6.4", +] + [[package]] name = "rand" version = "0.9.2" @@ -1251,7 +1329,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1" dependencies = [ "rand_chacha", - "rand_core", + "rand_core 0.9.3", ] [[package]] @@ -1261,9 +1339,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" dependencies = [ "ppv-lite86", - "rand_core", + "rand_core 0.9.3", ] +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" + [[package]] name = "rand_core" version = "0.9.3" @@ -1640,7 +1724,7 @@ dependencies = [ "pin-project-lite", "postgres-protocol", "postgres-types", - "rand", + "rand 0.9.2", "socket2", "tokio", "tokio-util", @@ -1768,7 +1852,7 @@ dependencies = [ "byteorder", "bytes", "chrono", - "chrono-tz", + "chrono-tz 0.8.6", "deadpool-postgres", "futures-util", "mimalloc", diff --git a/Cargo.toml b/Cargo.toml index 5dd14d4..d86c168 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -13,7 +13,7 @@ crate-type = ["cdylib", "rlib"] # 1. Python Bindings for FFI pyo3 = { version = "0.27.1", features = ["extension-module", "chrono-tz"] } -chrono-tz = "0.10" +chrono-tz = "0.8" # 2. Configuration Parsing (YAML) serde = { version = "1.0", features = ["derive"] } @@ -54,9 +54,11 @@ pyo3-arrow = "0.15.0" # 13. System CPU Count (NEW) num_cpus = "1.16" -[target.'cfg(not(target_env = "msvc"))'.dependencies] -mimalloc = { version = "0.1.39" } +tracing-subscriber = "0.3.20" tracing = "0.1" -tracing-subscriber = "0.3" -tracing-tracy = "0.11" \ No newline at end of file + +tracing-tracy = "0.11" + +[target.'cfg(not(target_env = "msvc"))'.dependencies] +mimalloc = { version = "0.1.39" } \ No newline at end of file diff --git a/src/lib.rs b/src/lib.rs index 813c2d1..516779b 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -23,6 +23,8 @@ use crate::config::{load_and_validate_config, ConnectorConfig}; // NOTE: run_profiler_logic added, requires definition in parser.rs use crate::parser::{run_db_logic, run_profiler_logic}; +use tracing_subscriber::layer::SubscriberExt; +use tracing_subscriber::util::SubscriberInitExt; // --- THE PYTHON-CALLABLE ENTRY POINT (Load Data) --- @@ -90,6 +92,11 @@ fn profile_data(config_path: String) -> PyResult { // --- PYTHON MODULE EXPORT --- #[pymodule] fn unchecked_io(_py: Python<'_>, m: &Bound<'_, PyModule>) -> PyResult<()> { + + let _ = tracing_subscriber::registry() + .with(tracing_tracy::TracyLayer::new()) + .try_init(); + m.add_function(wrap_pyfunction!(load_data_from_config, m)?)?; m.add_function(wrap_pyfunction!(to_pandas_dataframe, m)?)?; m.add_function(wrap_pyfunction!(profile_data, m)?)?; // NEW: Schema profiler