From eb8754034b868bbe8821fa18d8a203b5594f1576 Mon Sep 17 00:00:00 2001 From: Eric Hulburd Date: Thu, 30 May 2024 17:36:42 -0700 Subject: [PATCH 01/21] fix: update opentelemetry dependencies --- Cargo.lock | 289 +++++++++--------- Cargo.toml | 17 +- crates/opentelemetry-macros/src/lib.rs | 5 +- crates/opentelemetry/Cargo.toml | 3 +- crates/opentelemetry/src/lib.rs | 6 +- crates/tracing-subscriber/Cargo.toml | 11 +- .../src/layers/otel_otlp.rs | 16 +- .../src/layers/otel_otlp_file.rs | 7 +- crates/tracing-subscriber/src/lib.rs | 1 - examples/pyo3-opentelemetry-lib/Cargo.toml | 5 +- 10 files changed, 182 insertions(+), 178 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 885a7e9..b05d869 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -51,7 +51,7 @@ checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193" dependencies = [ "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.66", ] [[package]] @@ -62,7 +62,7 @@ checksum = "bc00ceb34980c03614e35a3a4e218276a0a824e911d07651cd0d858a51e8c0f0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.66", ] [[package]] @@ -137,6 +137,12 @@ version = "0.21.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "35636a1494ede3b646cc98f74f8e62c773a38a659ebc777a2cf26b9b74171df9" +[[package]] +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + [[package]] name = "bitflags" version = "1.3.2" @@ -185,6 +191,15 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +[[package]] +name = "chrono" +version = "0.4.38" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401" +dependencies = [ + "num-traits", +] + [[package]] name = "core-foundation" version = "0.9.4" @@ -210,25 +225,6 @@ dependencies = [ "libc", ] -[[package]] -name = "crossbeam-channel" -version = "0.5.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a33c2bf77f2df06183c3aa30d1e96c0695a313d4f9c453cc3762a6db39f99200" -dependencies = [ - "cfg-if", - "crossbeam-utils", -] - -[[package]] -name = "crossbeam-utils" -version = "0.8.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a22b2d63d4d1dc0b7f1b6b2747dd0088008a9be28b6ddf0b1e7d335e3037294" -dependencies = [ - "cfg-if", -] - [[package]] name = "crypto-common" version = "0.1.6" @@ -339,7 +335,7 @@ checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72" dependencies = [ "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.66", ] [[package]] @@ -405,11 +401,17 @@ version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6fb8d784f27acf97159b40fc4db5ecd8aa23b9ad5ef69cdd136d3bc80665f0c0" +[[package]] +name = "glob" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" + [[package]] name = "h2" -version = "0.3.22" +version = "0.3.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d6250322ef6e60f93f9a2162799302cd6f68f79f6e5d85c8c16f14d1d958178" +checksum = "81fe527a889e1532da5c525686d96d4c2e74cdd345badf8dfef9f6b39dd5f5e8" dependencies = [ "bytes", "fnv", @@ -724,26 +726,29 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" [[package]] name = "opentelemetry" -version = "0.20.0" +version = "0.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9591d937bc0e6d2feb6f71a559540ab300ea49955229c347a517a28d27784c54" +checksum = "1b69a91d4893e713e06f724597ad630f1fa76057a5e1026c0ca67054a9032a76" dependencies = [ - "opentelemetry_api", - "opentelemetry_sdk", + "futures-core", + "futures-sink", + "js-sys", + "once_cell", + "pin-project-lite", + "thiserror", ] [[package]] name = "opentelemetry-otlp" -version = "0.13.0" +version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e5e5a5c4135864099f3faafbe939eb4d7f9b80ebf68a8448da961b32a7c1275" +checksum = "a94c69209c05319cdf7460c6d4c055ed102be242a0a6245835d7bc42c6ec7f54" dependencies = [ "async-trait", "futures-core", "http", + "opentelemetry", "opentelemetry-proto", - "opentelemetry-semantic-conventions", - "opentelemetry_api", "opentelemetry_sdk", "prost", "thiserror", @@ -753,72 +758,50 @@ dependencies = [ [[package]] name = "opentelemetry-proto" -version = "0.3.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1e3f814aa9f8c905d0ee4bde026afd3b2577a97c10e1699912e3e44f0c4cbeb" +checksum = "984806e6cf27f2b49282e2a05e288f30594f3dbc74eb7a6e99422bc48ed78162" dependencies = [ - "opentelemetry_api", + "opentelemetry", "opentelemetry_sdk", "prost", "tonic", ] -[[package]] -name = "opentelemetry-semantic-conventions" -version = "0.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73c9f9340ad135068800e7f1b24e9e09ed9e7143f5bf8518ded3d3ec69789269" -dependencies = [ - "opentelemetry", -] - [[package]] name = "opentelemetry-stdout" -version = "0.1.0" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8bd550321bc0f9d3f6dcbfe5c75262789de5b3e2776da2cbcfd2392aa05db0c6" +checksum = "d6d080bf06af02b738feb2e6830cf72c30b76ca18b40f555cdf1b53e7b491bfe" dependencies = [ + "async-trait", + "chrono", "futures-util", - "opentelemetry_api", + "opentelemetry", "opentelemetry_sdk", "ordered-float", "serde", "serde_json", -] - -[[package]] -name = "opentelemetry_api" -version = "0.20.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a81f725323db1b1206ca3da8bb19874bbd3f57c3bcd59471bfb04525b265b9b" -dependencies = [ - "futures-channel", - "futures-util", - "indexmap 1.9.3", - "js-sys", - "once_cell", - "pin-project-lite", "thiserror", - "urlencoding", ] [[package]] name = "opentelemetry_sdk" -version = "0.20.0" +version = "0.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa8e705a0612d48139799fcbaba0d4a90f06277153e43dd2bdc16c6f0edd8026" +checksum = "ae312d58eaa90a82d2e627fd86e075cf5230b3f11794e2ed74199ebbe572d4fd" dependencies = [ "async-trait", - "crossbeam-channel", "futures-channel", "futures-executor", "futures-util", + "glob", + "lazy_static", "once_cell", - "opentelemetry_api", + "opentelemetry", "ordered-float", "percent-encoding", "rand", - "regex", "serde_json", "thiserror", "tokio", @@ -827,9 +810,9 @@ dependencies = [ [[package]] name = "ordered-float" -version = "3.9.2" +version = "4.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1e1c390732d15f1d48471625cd92d154e66db2c56645e29a9cd26f4699f72dc" +checksum = "a76df7075c7d4d01fdcb46c912dd17fba5b60c78ea480b475f2b6ab6f666584e" dependencies = [ "num-traits", ] @@ -900,7 +883,7 @@ dependencies = [ "pest_meta", "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.66", ] [[package]] @@ -931,7 +914,7 @@ checksum = "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405" dependencies = [ "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.66", ] [[package]] @@ -954,18 +937,18 @@ checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" [[package]] name = "proc-macro2" -version = "1.0.67" +version = "1.0.84" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d433d9f1a3e8c1263d9456598b16fec66f4acc9a74dacffd35c7bb09b3a1328" +checksum = "ec96c6a92621310b51366f1e28d05ef11489516e93be030060e5fc12024a49d6" dependencies = [ "unicode-ident", ] [[package]] name = "prost" -version = "0.11.9" +version = "0.12.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b82eaa1d779e9a4bc1c3217db8ffbeabaae1dca241bf70183242128d48681cd" +checksum = "deb1435c188b76130da55f17a466d252ff7b1418b2ad3e037d127b94e3411f29" dependencies = [ "bytes", "prost-derive", @@ -973,15 +956,15 @@ dependencies = [ [[package]] name = "prost-derive" -version = "0.11.9" +version = "0.12.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5d2d8d10f3c6ded6da8b05b5fb3b8a5082514344d56c9f871412d29b4e075b4" +checksum = "81bddcdb20abf9501610992b6759a4c888aef7d1a7247ef75e2404275ac24af1" dependencies = [ "anyhow", "itertools", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.66", ] [[package]] @@ -1043,7 +1026,7 @@ dependencies = [ "proc-macro2", "pyo3-macros-backend", "quote", - "syn 2.0.37", + "syn 2.0.66", ] [[package]] @@ -1055,7 +1038,7 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.66", ] [[package]] @@ -1065,7 +1048,6 @@ dependencies = [ "futures-util", "once_cell", "opentelemetry", - "opentelemetry_api", "opentelemetry_sdk", "pyo3", "pyo3-opentelemetry-macros", @@ -1080,7 +1062,6 @@ name = "pyo3-opentelemetry-lib" version = "0.1.0" dependencies = [ "opentelemetry", - "opentelemetry_api", "opentelemetry_sdk", "pyo3", "pyo3-asyncio", @@ -1099,7 +1080,7 @@ dependencies = [ "proc-macro2", "quote", "rstest", - "syn 2.0.37", + "syn 2.0.66", ] [[package]] @@ -1111,7 +1092,6 @@ dependencies = [ "opentelemetry-otlp", "opentelemetry-proto", "opentelemetry-stdout", - "opentelemetry_api", "opentelemetry_sdk", "pyo3", "pyo3-asyncio", @@ -1129,9 +1109,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.33" +version = "1.0.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" +checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" dependencies = [ "proc-macro2", ] @@ -1299,44 +1279,55 @@ dependencies = [ [[package]] name = "rustls" -version = "0.21.12" +version = "0.22.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f56a14d1f48b391359b22f731fd4bd7e43c97f3c50eee276f3aa09c94784d3e" +checksum = "bf4ef73721ac7bcd79b2b315da7779d8fc09718c6b3d2d1b2d94850eb8c18432" dependencies = [ "log", "ring", + "rustls-pki-types", "rustls-webpki", - "sct", + "subtle", + "zeroize", ] [[package]] name = "rustls-native-certs" -version = "0.6.3" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9aace74cb666635c918e9c12bc0d348266037aa8eb599b5cba565709a8dff00" +checksum = "8f1fb85efa936c42c6d5fc28d2629bb51e4b2f4b8a5211e297d599cc5a093792" dependencies = [ "openssl-probe", "rustls-pemfile", + "rustls-pki-types", "schannel", "security-framework", ] [[package]] name = "rustls-pemfile" -version = "1.0.4" +version = "2.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" +checksum = "29993a25686778eb88d4189742cd713c9bce943bc54251a33509dc63cbacf73d" dependencies = [ - "base64", + "base64 0.22.1", + "rustls-pki-types", ] +[[package]] +name = "rustls-pki-types" +version = "1.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "976295e77ce332211c0d24d92c0e83e50f5c5f046d11082cea19f3df13a3562d" + [[package]] name = "rustls-webpki" -version = "0.101.7" +version = "0.102.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765" +checksum = "ff448f7e92e913c4b7d4c6d8e4540a1724b319b4152b8aef6d4cf8339712b33e" dependencies = [ "ring", + "rustls-pki-types", "untrusted", ] @@ -1367,16 +1358,6 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" -[[package]] -name = "sct" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414" -dependencies = [ - "ring", - "untrusted", -] - [[package]] name = "security-framework" version = "2.10.0" @@ -1423,7 +1404,7 @@ checksum = "43576ca501357b9b071ac53cdc7da8ef0cbd9493d8df094cd821777ea6e894d3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.66", ] [[package]] @@ -1498,6 +1479,12 @@ version = "0.9.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" +[[package]] +name = "subtle" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc" + [[package]] name = "syn" version = "1.0.109" @@ -1511,9 +1498,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.37" +version = "2.0.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7303ef2c05cd654186cb250d29049a24840ca25d2747c25c0381c8d9e2f582e8" +checksum = "c42f3f41a2de00b01c0aaad383c5a45241efc8b2d1eda5661812fda5f3cdcff5" dependencies = [ "proc-macro2", "quote", @@ -1547,22 +1534,22 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.49" +version = "1.0.61" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1177e8c6d7ede7afde3585fd2513e611227efd6481bd78d2e82ba1ce16557ed4" +checksum = "c546c80d6be4bc6a00c0f01730c08df82eaa7a7a61f11d656526506112cc1709" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.49" +version = "1.0.61" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10712f02019e9288794769fba95cd6847df9874d49d871d062172f9dd41bc4cc" +checksum = "46c3384250002a6d5af4d114f2845d37b57521033f30d5c3f46c4d70e1197533" dependencies = [ "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.66", ] [[package]] @@ -1577,9 +1564,9 @@ dependencies = [ [[package]] name = "tokio" -version = "1.32.0" +version = "1.38.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17ed6077ed6cd6c74735e21f37eb16dc3935f96878b1fe961074089cc80893f9" +checksum = "ba4f4a02a7a80d6f274636f0aa95c7e383b912d41fe721a31f29e29698585a4a" dependencies = [ "backtrace", "bytes", @@ -1605,22 +1592,23 @@ dependencies = [ [[package]] name = "tokio-macros" -version = "2.1.0" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "630bdcf245f78637c13ec01ffae6187cca34625e8c63150d424b59e55af2675e" +checksum = "5f5ae998a069d4b5aba8ee9dad856af7d520c3699e6159b185c2acd48155d39a" dependencies = [ "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.66", ] [[package]] name = "tokio-rustls" -version = "0.24.1" +version = "0.25.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081" +checksum = "775e0c0f0adb3a2f22a00c4745d728b479985fc15ee7ca6a2608388c5569860f" dependencies = [ "rustls", + "rustls-pki-types", "tokio", ] @@ -1651,17 +1639,15 @@ dependencies = [ [[package]] name = "tonic" -version = "0.9.2" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3082666a3a6433f7f511c7192923fa1fe07c69332d3c6a2e6bb040b569199d5a" +checksum = "76c4eb7a4e9ef9d4763600161f12f5070b92a578e1b634db88a6887844c91a13" dependencies = [ "async-stream", "async-trait", "axum", - "base64", + "base64 0.21.5", "bytes", - "futures-core", - "futures-util", "h2", "http", "http-body", @@ -1672,6 +1658,7 @@ dependencies = [ "prost", "rustls-native-certs", "rustls-pemfile", + "rustls-pki-types", "tokio", "tokio-rustls", "tokio-stream", @@ -1720,6 +1707,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8" dependencies = [ "cfg-if", + "log", "pin-project-lite", "tracing-attributes", "tracing-core", @@ -1733,7 +1721,7 @@ checksum = "5f4f31f56159e98206da9efd823404b79b6ef3143b4a7ab76e67b1751b25a4ab" dependencies = [ "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.66", ] [[package]] @@ -1757,20 +1745,33 @@ dependencies = [ "tracing-core", ] +[[package]] +name = "tracing-log" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" +dependencies = [ + "log", + "once_cell", + "tracing-core", +] + [[package]] name = "tracing-opentelemetry" -version = "0.21.0" +version = "0.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75327c6b667828ddc28f5e3f169036cb793c3f588d83bf0f262a7f062ffed3c8" +checksum = "f68803492bf28ab40aeccaecc7021096bd256baf7ca77c3d425d89b35a7be4e4" dependencies = [ + "js-sys", "once_cell", "opentelemetry", "opentelemetry_sdk", "smallvec", "tracing", "tracing-core", - "tracing-log", + "tracing-log 0.2.0", "tracing-subscriber", + "web-time", ] [[package]] @@ -1800,7 +1801,7 @@ dependencies = [ "thread_local", "tracing", "tracing-core", - "tracing-log", + "tracing-log 0.1.3", "tracing-serde", ] @@ -1840,12 +1841,6 @@ version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" -[[package]] -name = "urlencoding" -version = "2.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "daf8dba3b7eb870caf1ddeed7bc9d2a049f3cfdfae7cb521b087cc33ae4c49da" - [[package]] name = "valuable" version = "0.1.0" @@ -1894,7 +1889,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.66", "wasm-bindgen-shared", ] @@ -1916,7 +1911,7 @@ checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.66", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -1927,6 +1922,16 @@ version = "0.2.87" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ca6ad05a4870b2bf5fe995117d3728437bd27d7cd5f06f13c17443ef369775a1" +[[package]] +name = "web-time" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + [[package]] name = "winapi" version = "0.3.9" @@ -2080,3 +2085,9 @@ name = "windows_x86_64_msvc" version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04" + +[[package]] +name = "zeroize" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" diff --git a/Cargo.toml b/Cargo.toml index 035dd22..e583f78 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -4,17 +4,16 @@ members = ["crates/*", "examples/*"] resolver = "2" [workspace.dependencies] -thiserror = "1.0.49" -serde = { version = "1.0.188", features = ["derive"] } -opentelemetry = { version = "0.20.0" } -opentelemetry_api = { version = "0.20.0" } -opentelemetry_sdk = { version = "0.20.0" } +thiserror = "1.0.57" +serde = { version = "1.0.145", features = ["derive"] } +opentelemetry = { version = "0.23.0" } +opentelemetry_sdk = { version = "0.23.0" } pyo3 = { version = "0.20.0", features = ["macros", "extension-module"] } -pyo3-asyncio = "0.20.0" +pyo3-asyncio = { version = "0.20.0", features = ["tokio-runtime"] } pyo3-build-config = "0.20.0" rstest = "0.17.0" -tokio = { version = "1.27.0", features = [] } -tracing = "0.1.37" -tracing-opentelemetry = "0.21.0" +tokio = { version = "1.36.0", features = [] } +tracing = { version = "0.1.37", features = ["log"] } +tracing-opentelemetry = "0.24.0" tracing-subscriber = "0.3.17" diff --git a/crates/opentelemetry-macros/src/lib.rs b/crates/opentelemetry-macros/src/lib.rs index 9fedd71..e155567 100644 --- a/crates/opentelemetry-macros/src/lib.rs +++ b/crates/opentelemetry-macros/src/lib.rs @@ -16,7 +16,6 @@ #![deny(clippy::all)] #![deny(clippy::pedantic)] #![deny(clippy::cargo)] -#![allow(clippy::multiple_crate_versions)] #![warn(clippy::nursery)] // Has false positives that conflict with unreachable_pub #![allow(clippy::redundant_pub_crate)] @@ -213,7 +212,7 @@ fn wrap_block_in_current_context( let error_handler: proc_macro2::TokenStream = match config.on_context_extraction_failure { RuntimeErrorHandler::Trace => syn::parse_quote! { if let Err(e) = #context_guard_name { - use opentelemetry_api::trace::TraceContextExt; + use opentelemetry::trace::TraceContextExt; let ctx = opentelemetry::Context::current(); ctx.span().record_error(&e); } @@ -338,7 +337,7 @@ fn get_item_impl_method_names(item_impl: &syn::ItemImpl) -> HashSet { /// - must be a valid Rust identifier. /// - `on_context_extraction_failure`: What to do when the context cannot be extracted from Python. Defaults to `print`. /// - `print`: Print the error to stderr and continue. -/// - `trace`: Record the error on the current span using `opentelemetry_api::trace::TraceContextExt::record_error`. +/// - `trace`: Record the error on the current span using `opentelemetry::trace::TraceContextExt::record_error`. /// - `py_error`: Return a `pyo3::PyErr`. /// - `ignore`: Ignore the error. /// - `exclude`: A list of method names to exclude. Only valid on `impl` items. diff --git a/crates/opentelemetry/Cargo.toml b/crates/opentelemetry/Cargo.toml index 3396736..12a4027 100644 --- a/crates/opentelemetry/Cargo.toml +++ b/crates/opentelemetry/Cargo.toml @@ -12,7 +12,6 @@ rust-version = "1.65.0" [dependencies] opentelemetry = { workspace = true } -opentelemetry_api = { workspace = true } opentelemetry_sdk = { workspace = true } pyo3 = { workspace = true } pyo3-opentelemetry-macros = { path = "../opentelemetry-macros", version = "0.3.1" } @@ -20,7 +19,7 @@ pyo3-opentelemetry-macros = { path = "../opentelemetry-macros", version = "0.3.1 [dev-dependencies] futures-util = "0.3.28" once_cell = "1.17.1" -opentelemetry = { workspace = true, features = ["trace", "rt-tokio"] } +opentelemetry = { workspace = true, features = ["trace"] } tokio = { workspace = true, features = ["sync", "parking_lot", "macros"] } tracing = { workspace = true } tracing-opentelemetry = { workspace = true } diff --git a/crates/opentelemetry/src/lib.rs b/crates/opentelemetry/src/lib.rs index 2d84d5e..196444b 100644 --- a/crates/opentelemetry/src/lib.rs +++ b/crates/opentelemetry/src/lib.rs @@ -16,7 +16,6 @@ #![deny(clippy::all)] #![deny(clippy::pedantic)] #![deny(clippy::cargo)] -#![allow(clippy::multiple_crate_versions)] #![warn(clippy::nursery)] // Has false positives that conflict with unreachable_pub #![allow(clippy::redundant_pub_crate)] @@ -100,7 +99,6 @@ use std::collections::HashMap; use pyo3::{prelude::*, types::IntoPyDict}; use opentelemetry::{propagation::Extractor, Context}; -use opentelemetry_api::ContextGuard; pub use pyo3_opentelemetry_macros::pypropagate; @@ -145,7 +143,7 @@ impl Carrier { /// When a `Propagator` is passed to a function or method, this method should be called /// at the beginning of the function or method to attach the context. This should not be used with /// async functions. - fn attach(&self) -> ContextGuard { + fn attach(&self) -> opentelemetry::ContextGuard { use opentelemetry::propagation::TextMapPropagator; let propagator = opentelemetry_sdk::propagation::TraceContextPropagator::new(); @@ -180,7 +178,7 @@ impl Carrier { /// Any Python error that occurs while trying to get the current context from Python will /// be returned; this includes import errors when importing `opentelemetry.context` and /// `opentelemetry.propagate`. -pub fn attach_otel_context_from_python(py: Python<'_>) -> PyResult { +pub fn attach_otel_context_from_python(py: Python<'_>) -> PyResult { let get_current_context = py.import("opentelemetry.context")?.getattr("get_current")?; let inject = py.import("opentelemetry.propagate")?.getattr("inject")?; diff --git a/crates/tracing-subscriber/Cargo.toml b/crates/tracing-subscriber/Cargo.toml index 7d0b2ab..5993b86 100644 --- a/crates/tracing-subscriber/Cargo.toml +++ b/crates/tracing-subscriber/Cargo.toml @@ -13,17 +13,16 @@ rust-version = "1.67.0" [dependencies] handlebars = { version = "4.4.0", optional = true } pyo3 = { workspace = true } -opentelemetry = { workspace = true, features = ["rt-tokio"] } -opentelemetry-otlp = { version = "0.13.0", features = ["grpc-tonic", "trace", "tls-roots"], optional = true } -opentelemetry-proto = { version = "0.3.0", optional = true, features = ["tonic"] } -opentelemetry-stdout = { version = "0.1.0", optional = true, features = ["trace"] } -opentelemetry_api = { workspace = true } +opentelemetry = { workspace = true } +opentelemetry-otlp = { version = "0.16.0", features = ["grpc-tonic", "trace", "tls-roots"], optional = true } +opentelemetry-proto = { version = "0.6.0", optional = true, features = ["tonic"] } +opentelemetry-stdout = { version = "0.4.0", optional = true, features = ["trace"] } opentelemetry_sdk = { workspace = true, features = ["rt-tokio-current-thread"] } pyo3-asyncio = { workspace = true, features = ["tokio-runtime"] } serde = { workspace = true } thiserror = { workspace = true } tokio = { workspace = true, features = ["rt-multi-thread"] } -tonic = { version = "0.9.2", features = ["tls", "tls-roots"], optional = true } +tonic = { version = "0.11.0", features = ["tls", "tls-roots"], optional = true } tracing = { workspace = true } tracing-opentelemetry = { workspace = true } tracing-subscriber = { workspace = true, features = ["env-filter", "fmt", "json"] } diff --git a/crates/tracing-subscriber/src/layers/otel_otlp.rs b/crates/tracing-subscriber/src/layers/otel_otlp.rs index cc5300d..6e52fa7 100644 --- a/crates/tracing-subscriber/src/layers/otel_otlp.rs +++ b/crates/tracing-subscriber/src/layers/otel_otlp.rs @@ -14,9 +14,9 @@ use std::{collections::HashMap, time::Duration}; -use opentelemetry_api::{trace::TraceError, KeyValue}; use opentelemetry_otlp::{TonicExporterBuilder, WithExportConfig}; use opentelemetry_sdk::{ + runtime::TokioCurrentThread, trace::{Sampler, SpanLimits}, Resource, }; @@ -61,7 +61,7 @@ pub(crate) struct Config { impl Config { fn initialize_otlp_exporter(&self) -> TonicExporterBuilder { - let mut otlp_exporter = opentelemetry_otlp::new_exporter().tonic().with_env(); + let mut otlp_exporter = opentelemetry_otlp::new_exporter().tonic(); if let Some(endpoint) = self.endpoint.clone() { otlp_exporter = otlp_exporter.with_endpoint(endpoint); } @@ -103,7 +103,7 @@ impl Config { ); let tracer = if batch { - pipeline.install_batch(opentelemetry::runtime::Tokio) + pipeline.install_batch(TokioCurrentThread {}) } else { pipeline.install_simple() } @@ -131,7 +131,7 @@ pub(super) enum Error { #[derive(thiserror::Error, Debug)] pub(crate) enum BuildError { #[error("failed to build opentelemetry-otlp pipeline: {0}")] - BatchInstall(#[from] TraceError), + TraceInstall(#[from] opentelemetry::trace::TraceError), #[error("provider not set on returned opentelemetry-otlp tracer")] ProviderNotSetOnTracer, #[error("error in the configuration: {0}")] @@ -304,8 +304,8 @@ impl From for Resource { let kvs = resource .attrs .into_iter() - .map(|(k, v)| KeyValue::new(k, v)) - .collect::>(); + .map(|(k, v)| opentelemetry::KeyValue::new(k, v)) + .collect::>(); match resource.schema_url { Some(schema_url) => Self::from_schema_url(kvs, schema_url), None => Self::new(kvs), @@ -339,7 +339,7 @@ pub(crate) enum PyResourceValueArray { String(Vec), } -impl From for opentelemetry_api::Array { +impl From for opentelemetry::Array { fn from(py_resource_value_array: PyResourceValueArray) -> Self { match py_resource_value_array { PyResourceValueArray::Bool(b) => Self::Bool(b), @@ -352,7 +352,7 @@ impl From for opentelemetry_api::Array { } } -impl From for opentelemetry_api::Value { +impl From for opentelemetry::Value { fn from(py_resource_value: PyResourceValue) -> Self { match py_resource_value { PyResourceValue::Bool(b) => Self::Bool(b), diff --git a/crates/tracing-subscriber/src/layers/otel_otlp_file.rs b/crates/tracing-subscriber/src/layers/otel_otlp_file.rs index 102407e..7d0d412 100644 --- a/crates/tracing-subscriber/src/layers/otel_otlp_file.rs +++ b/crates/tracing-subscriber/src/layers/otel_otlp_file.rs @@ -13,7 +13,7 @@ // limitations under the License. use crate::create_init_submodule; -use opentelemetry_api::trace::TracerProvider; +use opentelemetry_sdk::runtime::TokioCurrentThread; use pyo3::prelude::*; use tracing_subscriber::Layer; @@ -43,6 +43,7 @@ impl crate::layers::Config for Config { } fn build(&self, batch: bool) -> LayerBuildResult { + use opentelemetry::trace::TracerProvider as _; let exporter_builder = opentelemetry_stdout::SpanExporter::builder(); let exporter_builder = match self.file_path.as_ref() { Some(file_path) => { @@ -53,14 +54,14 @@ impl crate::layers::Config for Config { }; let provider = if batch { opentelemetry_sdk::trace::TracerProvider::builder() - .with_batch_exporter(exporter_builder.build(), opentelemetry::runtime::Tokio) + .with_batch_exporter(exporter_builder.build(), TokioCurrentThread) .build() } else { opentelemetry_sdk::trace::TracerProvider::builder() .with_simple_exporter(exporter_builder.build()) .build() }; - let tracer = provider.tracer("stdout"); + let tracer = provider.tracer("pyo3-opentelemetry-stdout"); let env_filter = build_env_filter(self.filter.clone())?; let layer = tracing_opentelemetry::layer() .with_tracer(tracer) diff --git a/crates/tracing-subscriber/src/lib.rs b/crates/tracing-subscriber/src/lib.rs index 9b80d8d..130a915 100644 --- a/crates/tracing-subscriber/src/lib.rs +++ b/crates/tracing-subscriber/src/lib.rs @@ -16,7 +16,6 @@ #![deny(clippy::all)] #![deny(clippy::pedantic)] #![deny(clippy::cargo)] -#![allow(clippy::multiple_crate_versions)] #![warn(clippy::nursery)] // Has false positives that conflict with unreachable_pub #![allow(clippy::redundant_pub_crate)] diff --git a/examples/pyo3-opentelemetry-lib/Cargo.toml b/examples/pyo3-opentelemetry-lib/Cargo.toml index f5f6fea..835d42f 100644 --- a/examples/pyo3-opentelemetry-lib/Cargo.toml +++ b/examples/pyo3-opentelemetry-lib/Cargo.toml @@ -18,9 +18,8 @@ name = "pyo3_opentelemetry_lib" crate-type = ["cdylib", "rlib"] [dependencies] -opentelemetry = "0.20.0" -opentelemetry_api = "0.20.0" -opentelemetry_sdk = "0.20.0" +opentelemetry = "0.23.0" +opentelemetry_sdk = "0.23.0" pyo3 = { workspace = true } pyo3-asyncio = { workspace = true, features = ["tokio", "tokio-runtime"] } pyo3-opentelemetry = { path = "../../crates/opentelemetry" } From 1214d0da67beb38ecfaa0bf5ba602c5b4cf8dbe5 Mon Sep 17 00:00:00 2001 From: Eric Hulburd Date: Fri, 31 May 2024 10:08:42 -0700 Subject: [PATCH 02/21] chore: configure duplicated crate deps --- .clippy.toml | 18 +++++ .github/workflows/checks.yml | 2 +- Cargo.lock | 72 ++----------------- crates/opentelemetry-macros/src/lib.rs | 2 +- crates/tracing-subscriber/Cargo.toml | 1 - .../tracing-subscriber/src/contextmanager.rs | 28 ++++++-- 6 files changed, 45 insertions(+), 78 deletions(-) create mode 100644 .clippy.toml diff --git a/.clippy.toml b/.clippy.toml new file mode 100644 index 0000000..eeb746c --- /dev/null +++ b/.clippy.toml @@ -0,0 +1,18 @@ +allowed-duplicate-crates = [ + "base64", + "hashbrown", + "indexmap", + "regex-automata", + "regex-syntax", + "socket2", + "tracing-log", + "windows-sys", + "windows-targets", + "windows_aarch64_gnullvm", + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc" +] diff --git a/.github/workflows/checks.yml b/.github/workflows/checks.yml index 80f2f47..25705f9 100644 --- a/.github/workflows/checks.yml +++ b/.github/workflows/checks.yml @@ -15,7 +15,7 @@ jobs: matrix: python-version: [ '3.8', '3.9', '3.10', '3.11', '3.12' ] rust: - - stable + - 1.78.0 # the scripts seem to inevitably involve building something that requires a newer version # of rust, so we just run against stable for now. # - 1.60.0 diff --git a/Cargo.lock b/Cargo.lock index b05d869..2740961 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -79,7 +79,7 @@ checksum = "3b829e4e32b91e643de6eafe82b1d90675f5874230191a4ffbc1b336dec4d6bf" dependencies = [ "async-trait", "axum-core", - "bitflags 1.3.2", + "bitflags", "bytes", "futures-util", "http", @@ -149,12 +149,6 @@ version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" -[[package]] -name = "bitflags" -version = "2.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07" - [[package]] name = "block-buffer" version = "0.10.4" @@ -257,22 +251,6 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" -[[package]] -name = "errno" -version = "0.3.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245" -dependencies = [ - "libc", - "windows-sys 0.52.0", -] - -[[package]] -name = "fastrand" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5" - [[package]] name = "fnv" version = "1.0.7" @@ -596,12 +574,6 @@ version = "0.2.150" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "89d92a4743f9a61002fae18374ed11e7973f530cb3a3255fb354818118b2203c" -[[package]] -name = "linux-raw-sys" -version = "0.4.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "969488b55f8ac402214f3f5fd243ebb7206cf82de60d3172994707a4bcc2b829" - [[package]] name = "lock_api" version = "0.4.10" @@ -841,7 +813,7 @@ checksum = "93f00c865fe7cabf650081affecd3871070f26767e7b2070a3ffae14c654b447" dependencies = [ "cfg-if", "libc", - "redox_syscall 0.3.5", + "redox_syscall", "smallvec", "windows-targets 0.48.5", ] @@ -1098,7 +1070,6 @@ dependencies = [ "rstest", "serde", "serde_json", - "tempfile", "thiserror", "tokio", "tonic", @@ -1152,16 +1123,7 @@ version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" dependencies = [ - "bitflags 1.3.2", -] - -[[package]] -name = "redox_syscall" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" -dependencies = [ - "bitflags 1.3.2", + "bitflags", ] [[package]] @@ -1264,19 +1226,6 @@ dependencies = [ "semver", ] -[[package]] -name = "rustix" -version = "0.38.25" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc99bc2d4f1fed22595588a013687477aedf3cdcfb26558c559edb67b4d9b22e" -dependencies = [ - "bitflags 2.4.1", - "errno", - "libc", - "linux-raw-sys", - "windows-sys 0.48.0", -] - [[package]] name = "rustls" version = "0.22.4" @@ -1364,7 +1313,7 @@ version = "2.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "770452e37cad93e0a50d5abc3990d2bc351c36d0328f86cefec2f2fb206eaef6" dependencies = [ - "bitflags 1.3.2", + "bitflags", "core-foundation", "core-foundation-sys", "libc", @@ -1519,19 +1468,6 @@ version = "0.12.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9d0e916b1148c8e263850e1ebcbd046f333e0683c724876bb0da63ea4373dc8a" -[[package]] -name = "tempfile" -version = "3.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ef1adac450ad7f4b3c28589471ade84f25f731a7a0fe30d71dfa9f60fd808e5" -dependencies = [ - "cfg-if", - "fastrand", - "redox_syscall 0.4.1", - "rustix", - "windows-sys 0.48.0", -] - [[package]] name = "thiserror" version = "1.0.61" diff --git a/crates/opentelemetry-macros/src/lib.rs b/crates/opentelemetry-macros/src/lib.rs index e155567..2dbf699 100644 --- a/crates/opentelemetry-macros/src/lib.rs +++ b/crates/opentelemetry-macros/src/lib.rs @@ -355,7 +355,7 @@ fn get_item_impl_method_names(item_impl: &syn::ItemImpl) -> HashSet { /// Ok(()) /// } /// -/// #[pypropagate(context_guard_name = "_my_context_guard", on_context_extraction_failure = "py_error"))] +/// #[pypropagate(context_guard_name = "_my_context_guard", on_context_extraction_failure = "py_error")] /// #[pyfunction] /// fn my_function2(py: Python<'_>, arg1: u32, arg2: String) -> PyResult<()> { /// // ... diff --git a/crates/tracing-subscriber/Cargo.toml b/crates/tracing-subscriber/Cargo.toml index 5993b86..a0429c4 100644 --- a/crates/tracing-subscriber/Cargo.toml +++ b/crates/tracing-subscriber/Cargo.toml @@ -35,4 +35,3 @@ stubs = ["dep:handlebars"] [dev-dependencies] rstest = { workspace = true } serde_json = "1.0.107" -tempfile = "3.8.0" diff --git a/crates/tracing-subscriber/src/contextmanager.rs b/crates/tracing-subscriber/src/contextmanager.rs index bc4cf22..1278a42 100644 --- a/crates/tracing-subscriber/src/contextmanager.rs +++ b/crates/tracing-subscriber/src/contextmanager.rs @@ -185,7 +185,13 @@ impl Tracing { #[cfg(feature = "layer-otel-otlp-file")] #[cfg(test)] mod test { - use std::{io::BufRead, thread::sleep, time::Duration}; + use std::{ + env::temp_dir, + io::BufRead, + path::PathBuf, + thread::sleep, + time::{Duration, SystemTime, UNIX_EPOCH}, + }; use tokio::runtime::Builder; @@ -234,8 +240,7 @@ mod test { /// Test that a global batch process can be started and stopped and that it exports /// accurate spans as configured. fn test_global_batch() { - let temporary_file = tempfile::NamedTempFile::new().unwrap(); - let temporary_file_path = temporary_file.path().to_owned(); + let temporary_file_path = get_tempfile("test_global_batch"); let layer_config = Box::new(crate::layers::otel_otlp_file::Config { file_path: Some(temporary_file_path.as_os_str().to_str().unwrap().to_owned()), filter: Some("error,pyo3_tracing_subscriber=info".to_string()), @@ -300,8 +305,7 @@ mod test { /// Test that a global simple export process can be started and stopped and that it /// exports accurate spans as configured. fn test_global_simple() { - let temporary_file = tempfile::NamedTempFile::new().unwrap(); - let temporary_file_path = temporary_file.path().to_owned(); + let temporary_file_path = get_tempfile("test_global_simple"); let layer_config = Box::new(crate::layers::otel_otlp_file::Config { file_path: Some(temporary_file_path.as_os_str().to_str().unwrap().to_owned()), filter: Some("error,pyo3_tracing_subscriber=info".to_string()), @@ -361,12 +365,22 @@ mod test { } } + fn get_tempfile(prefix: &str) -> PathBuf { + let timestamp = SystemTime::now() + .duration_since(UNIX_EPOCH) + .expect("should be able to get current time") + .as_nanos(); + let dir = temp_dir(); + dir.join(std::path::Path::new( + format!("{prefix}-{timestamp}.txt").as_str(), + )) + } + #[test] /// Test that a current thread simple export process can be started and stopped and that it /// exports accurate spans as configured. fn test_current_thread_simple() { - let temporary_file = tempfile::NamedTempFile::new().unwrap(); - let temporary_file_path = temporary_file.path().to_owned(); + let temporary_file_path = get_tempfile("test_current_thread_simple"); let layer_config = Box::new(crate::layers::otel_otlp_file::Config { file_path: Some(temporary_file_path.as_os_str().to_str().unwrap().to_owned()), filter: Some("error,pyo3_tracing_subscriber=info".to_string()), From fb9211f0ccd8b4fc2ceabf67ceb558578fe3be25 Mon Sep 17 00:00:00 2001 From: Eric Hulburd Date: Fri, 31 May 2024 10:35:11 -0700 Subject: [PATCH 03/21] chore: update cargo deny configuration --- .github/workflows/checks.yml | 2 +- Cargo.lock | 477 +++++++++++++++++------------------ Makefile.toml | 4 +- deny.toml | 33 +-- 4 files changed, 251 insertions(+), 265 deletions(-) diff --git a/.github/workflows/checks.yml b/.github/workflows/checks.yml index 25705f9..80f2f47 100644 --- a/.github/workflows/checks.yml +++ b/.github/workflows/checks.yml @@ -15,7 +15,7 @@ jobs: matrix: python-version: [ '3.8', '3.9', '3.10', '3.11', '3.12' ] rust: - - 1.78.0 + - stable # the scripts seem to inevitably involve building something that requires a newer version # of rust, so we just run against stable for now. # - 1.60.0 diff --git a/Cargo.lock b/Cargo.lock index 2740961..ddf18a6 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4,9 +4,9 @@ version = 3 [[package]] name = "addr2line" -version = "0.21.0" +version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" +checksum = "6e4503c46a5c0c7844e948c9a4d6acd9f50cccb4de1c48eb9e291ea17470c678" dependencies = [ "gimli", ] @@ -19,18 +19,18 @@ checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" [[package]] name = "aho-corasick" -version = "1.1.2" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0" +checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" dependencies = [ "memchr", ] [[package]] name = "anyhow" -version = "1.0.75" +version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6" +checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da" [[package]] name = "async-stream" @@ -56,9 +56,9 @@ dependencies = [ [[package]] name = "async-trait" -version = "0.1.73" +version = "0.1.80" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc00ceb34980c03614e35a3a4e218276a0a824e911d07651cd0d858a51e8c0f0" +checksum = "c6fa2087f2753a7da8cc1c0dbfcf89579dd57458e36769de5ac750b4671737ca" dependencies = [ "proc-macro2", "quote", @@ -67,9 +67,9 @@ dependencies = [ [[package]] name = "autocfg" -version = "1.1.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "axum" @@ -79,7 +79,7 @@ checksum = "3b829e4e32b91e643de6eafe82b1d90675f5874230191a4ffbc1b336dec4d6bf" dependencies = [ "async-trait", "axum-core", - "bitflags", + "bitflags 1.3.2", "bytes", "futures-util", "http", @@ -118,9 +118,9 @@ dependencies = [ [[package]] name = "backtrace" -version = "0.3.69" +version = "0.3.72" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837" +checksum = "17c6a35df3749d2e8bb1b7b21a976d82b15548788d2735b9d82f329268f71a11" dependencies = [ "addr2line", "cc", @@ -133,9 +133,9 @@ dependencies = [ [[package]] name = "base64" -version = "0.21.5" +version = "0.21.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35636a1494ede3b646cc98f74f8e62c773a38a659ebc777a2cf26b9b74171df9" +checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" [[package]] name = "base64" @@ -149,6 +149,12 @@ version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" +[[package]] +name = "bitflags" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1" + [[package]] name = "block-buffer" version = "0.10.4" @@ -160,24 +166,21 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.14.0" +version = "3.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec" +checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" [[package]] name = "bytes" -version = "1.5.0" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223" +checksum = "514de17de45fdb8dc022b1a7975556c53c86f9f0aa5f534b98977b171857c2c9" [[package]] name = "cc" -version = "1.0.83" +version = "1.0.98" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" -dependencies = [ - "libc", -] +checksum = "41c270e7540d725e65ac7f1b212ac8ce349719624d7bcff99f8e2e488e8cf03f" [[package]] name = "cfg-if" @@ -212,9 +215,9 @@ checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" [[package]] name = "cpufeatures" -version = "0.2.11" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce420fe07aecd3e67c5f910618fe65e94158f6dcc0adf44e00d69ce2bdfe0fd0" +checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504" dependencies = [ "libc", ] @@ -241,9 +244,9 @@ dependencies = [ [[package]] name = "either" -version = "1.9.0" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07" +checksum = "3dca9240753cf90908d7e4aac30f630662b02aebaa1b58a3cadabdb23385b58b" [[package]] name = "equivalent" @@ -259,9 +262,9 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "futures" -version = "0.3.28" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23342abe12aba583913b2e62f22225ff9c950774065e4bfb61a19cd9770fec40" +checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0" dependencies = [ "futures-channel", "futures-core", @@ -274,9 +277,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.28" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "955518d47e09b25bbebc7a18df10b81f0c766eaf4c4f1cccef2fca5f2a4fb5f2" +checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" dependencies = [ "futures-core", "futures-sink", @@ -284,15 +287,15 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.28" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bca583b7e26f571124fe5b7561d49cb2868d79116cfa0eefce955557c6fee8c" +checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" [[package]] name = "futures-executor" -version = "0.3.28" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccecee823288125bd88b4d7f565c9e58e41858e47ab72e8ea2d64e93624386e0" +checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d" dependencies = [ "futures-core", "futures-task", @@ -301,15 +304,15 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.28" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fff74096e71ed47f8e023204cfd0aa1289cd54ae5430a9523be060cdb849964" +checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" [[package]] name = "futures-macro" -version = "0.3.28" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72" +checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", @@ -318,27 +321,27 @@ dependencies = [ [[package]] name = "futures-sink" -version = "0.3.28" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f43be4fe21a13b9781a69afa4985b0f6ee0e1afab2c6f454a8cf30e2b2237b6e" +checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" [[package]] name = "futures-task" -version = "0.3.28" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76d3d132be6c0e6aa1534069c705a74a5997a356c0dc2f86a47765e5617c5b65" +checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" [[package]] name = "futures-timer" -version = "3.0.2" +version = "3.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e64b03909df88034c26dc1547e8970b91f98bdb65165d6a4e9110d94263dbb2c" +checksum = "f288b0a4f20f9a56b5d1da57e2227c661b7b16168e2f72365f57b63326e29b24" [[package]] name = "futures-util" -version = "0.3.28" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26b01e40b772d54cf6c6d721c1d1abd0647a0106a12ecaa1c186273392a69533" +checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" dependencies = [ "futures-channel", "futures-core", @@ -364,9 +367,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.10" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427" +checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" dependencies = [ "cfg-if", "libc", @@ -375,9 +378,9 @@ dependencies = [ [[package]] name = "gimli" -version = "0.28.0" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fb8d784f27acf97159b40fc4db5ecd8aa23b9ad5ef69cdd136d3bc80665f0c0" +checksum = "40ecd4077b5ae9fd2e9e169b102c6c330d0605168eb0e8bf79952b256dbefffd" [[package]] name = "glob" @@ -397,7 +400,7 @@ dependencies = [ "futures-sink", "futures-util", "http", - "indexmap 2.1.0", + "indexmap 2.2.6", "slab", "tokio", "tokio-util", @@ -426,9 +429,9 @@ checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" [[package]] name = "hashbrown" -version = "0.14.3" +version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604" +checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" [[package]] name = "heck" @@ -438,15 +441,15 @@ checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" [[package]] name = "hermit-abi" -version = "0.3.3" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d77f7ec81a6d05a3abb01ab6eb7590f6083d08449fe5a1c8b1e620283546ccb7" +checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" [[package]] name = "http" -version = "0.2.11" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8947b1a6fad4393052c7ba1f4cd97bed3e953a95c79c92ad9b051a04611d9fbb" +checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" dependencies = [ "bytes", "fnv", @@ -455,9 +458,9 @@ dependencies = [ [[package]] name = "http-body" -version = "0.4.5" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1" +checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" dependencies = [ "bytes", "http", @@ -478,9 +481,9 @@ checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" [[package]] name = "hyper" -version = "0.14.27" +version = "0.14.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffb1cfd654a8219eaef89881fdb3bb3b1cdc5fa75ded05d6933b2b382e395468" +checksum = "bf96e135eb83a2a8ddf766e426a841d8ddd7449d5f00d34ea02b41d2f19eef80" dependencies = [ "bytes", "futures-channel", @@ -493,7 +496,7 @@ dependencies = [ "httpdate", "itoa", "pin-project-lite", - "socket2 0.4.10", + "socket2", "tokio", "tower-service", "tracing", @@ -524,40 +527,40 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.1.0" +version = "2.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d530e1a18b1cb4c484e6e34556a0d948706958449fca0cab753d649f2bce3d1f" +checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26" dependencies = [ "equivalent", - "hashbrown 0.14.3", + "hashbrown 0.14.5", ] [[package]] name = "indoc" -version = "2.0.4" +version = "2.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e186cfbae8084e513daff4240b4797e342f988cecda4fb6c939150f96315fd8" +checksum = "b248f5224d1d606005e02c97f5aa4e88eeb230488bcc03bc9ca4d7991399f2b5" [[package]] name = "itertools" -version = "0.10.5" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" +checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" dependencies = [ "either", ] [[package]] name = "itoa" -version = "1.0.9" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" +checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" [[package]] name = "js-sys" -version = "0.3.64" +version = "0.3.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5f195fe497f702db0f318b07fdd68edb16955aed830df8363d837542f8f935a" +checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d" dependencies = [ "wasm-bindgen", ] @@ -570,15 +573,15 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] name = "libc" -version = "0.2.150" +version = "0.2.155" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89d92a4743f9a61002fae18374ed11e7973f530cb3a3255fb354818118b2203c" +checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c" [[package]] name = "lock_api" -version = "0.4.10" +version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1cc9717a20b1bb222f333e6a92fd32f7d8a18ddc5a3191a11af45dcbf4dcd16" +checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" dependencies = [ "autocfg", "scopeguard", @@ -586,9 +589,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.20" +version = "0.4.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" +checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c" [[package]] name = "matchers" @@ -607,15 +610,15 @@ checksum = "0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94" [[package]] name = "memchr" -version = "2.6.3" +version = "2.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f232d6ef707e1956a43342693d2a31e72989554d58299d7a88738cc95b0d35c" +checksum = "6c8640c5d730cb13ebd907d8d04b52f55ac9a2eec55b440c8892f40d56c76c1d" [[package]] name = "memoffset" -version = "0.9.0" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c" +checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a" dependencies = [ "autocfg", ] @@ -628,18 +631,18 @@ checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" [[package]] name = "miniz_oxide" -version = "0.7.1" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7" +checksum = "87dfd01fe195c66b572b37921ad8803d010623c0aca821bea2302239d155cdae" dependencies = [ "adler", ] [[package]] name = "mio" -version = "0.8.9" +version = "0.8.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3dce281c5e46beae905d4de1870d8b1509a9142b62eedf18b443b011ca8343d0" +checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c" dependencies = [ "libc", "wasi", @@ -658,9 +661,9 @@ dependencies = [ [[package]] name = "num-traits" -version = "0.2.17" +version = "0.2.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39e3200413f237f41ab11ad6d161bc7239c84dcb631773ccd7de3dfe4b5c267c" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" dependencies = [ "autocfg", ] @@ -677,18 +680,18 @@ dependencies = [ [[package]] name = "object" -version = "0.32.1" +version = "0.35.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cf5f9dd3933bd50a9e1f149ec995f39ae2c496d31fd772c1fd45ebc27e902b0" +checksum = "b8ec7ab813848ba4522158d5517a6093db1ded27575b070f4177b8d12b41db5e" dependencies = [ "memchr", ] [[package]] name = "once_cell" -version = "1.18.0" +version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" +checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" [[package]] name = "openssl-probe" @@ -797,9 +800,9 @@ checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" [[package]] name = "parking_lot" -version = "0.12.1" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" +checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" dependencies = [ "lock_api", "parking_lot_core", @@ -807,28 +810,28 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.9.8" +version = "0.9.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93f00c865fe7cabf650081affecd3871070f26767e7b2070a3ffae14c654b447" +checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" dependencies = [ "cfg-if", "libc", "redox_syscall", "smallvec", - "windows-targets 0.48.5", + "windows-targets 0.52.5", ] [[package]] name = "percent-encoding" -version = "2.3.0" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94" +checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "pest" -version = "2.7.5" +version = "2.7.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae9cee2a55a544be8b89dc6848072af97a20f2422603c10865be2a42b580fff5" +checksum = "560131c633294438da9f7c4b08189194b20946c8274c6b9e38881a7874dc8ee8" dependencies = [ "memchr", "thiserror", @@ -837,9 +840,9 @@ dependencies = [ [[package]] name = "pest_derive" -version = "2.7.5" +version = "2.7.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81d78524685f5ef2a3b3bd1cafbc9fcabb036253d9b1463e726a91cd16e2dfc2" +checksum = "26293c9193fbca7b1a3bf9b79dc1e388e927e6cacaa78b4a3ab705a1d3d41459" dependencies = [ "pest", "pest_generator", @@ -847,9 +850,9 @@ dependencies = [ [[package]] name = "pest_generator" -version = "2.7.5" +version = "2.7.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68bd1206e71118b5356dae5ddc61c8b11e28b09ef6a31acbd15ea48a28e0c227" +checksum = "3ec22af7d3fb470a85dd2ca96b7c577a1eb4ef6f1683a9fe9a8c16e136c04687" dependencies = [ "pest", "pest_meta", @@ -860,9 +863,9 @@ dependencies = [ [[package]] name = "pest_meta" -version = "2.7.5" +version = "2.7.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c747191d4ad9e4a4ab9c8798f1e82a39affe7ef9648390b7e5548d18e099de6" +checksum = "d7a240022f37c361ec1878d646fc5b7d7c4d28d5946e1a80ad5a7a4f4ca0bdcd" dependencies = [ "once_cell", "pest", @@ -871,18 +874,18 @@ dependencies = [ [[package]] name = "pin-project" -version = "1.1.3" +version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fda4ed1c6c173e3fc7a83629421152e01d7b1f9b7f65fb301e490e8cfc656422" +checksum = "b6bf43b791c5b9e34c3d182969b4abb522f9343702850a2e57f460d00d09b4b3" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.3" +version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405" +checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" dependencies = [ "proc-macro2", "quote", @@ -891,9 +894,9 @@ dependencies = [ [[package]] name = "pin-project-lite" -version = "0.2.13" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58" +checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" [[package]] name = "pin-utils" @@ -901,6 +904,12 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" +[[package]] +name = "portable-atomic" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7170ef9988bc169ba16dd36a7fa041e5c4cbeb6a35b76d4c03daded371eae7c0" + [[package]] name = "ppv-lite86" version = "0.2.17" @@ -941,15 +950,16 @@ dependencies = [ [[package]] name = "pyo3" -version = "0.20.0" +version = "0.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04e8453b658fe480c3e70c8ed4e3d3ec33eb74988bd186561b0cc66b85c3bc4b" +checksum = "53bdbb96d49157e65d45cc287af5f32ffadd5f4761438b527b055fb0d4bb8233" dependencies = [ "cfg-if", "indoc", "libc", "memoffset", "parking_lot", + "portable-atomic", "pyo3-build-config", "pyo3-ffi", "pyo3-macros", @@ -971,9 +981,9 @@ dependencies = [ [[package]] name = "pyo3-build-config" -version = "0.20.0" +version = "0.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a96fe70b176a89cff78f2fa7b3c930081e163d5379b4dcdf993e3ae29ca662e5" +checksum = "deaa5745de3f5231ce10517a1f5dd97d53e5a2fd77aa6b5842292085831d48d7" dependencies = [ "once_cell", "target-lexicon", @@ -981,9 +991,9 @@ dependencies = [ [[package]] name = "pyo3-ffi" -version = "0.20.0" +version = "0.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "214929900fd25e6604661ed9cf349727c8920d47deff196c4e28165a6ef2a96b" +checksum = "62b42531d03e08d4ef1f6e85a2ed422eb678b8cd62b762e53891c05faf0d4afa" dependencies = [ "libc", "pyo3-build-config", @@ -991,9 +1001,9 @@ dependencies = [ [[package]] name = "pyo3-macros" -version = "0.20.0" +version = "0.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dac53072f717aa1bfa4db832b39de8c875b7c7af4f4a6fe93cdbf9264cf8383b" +checksum = "7305c720fa01b8055ec95e484a6eca7a83c841267f0dd5280f0c8b8551d2c158" dependencies = [ "proc-macro2", "pyo3-macros-backend", @@ -1003,12 +1013,13 @@ dependencies = [ [[package]] name = "pyo3-macros-backend" -version = "0.20.0" +version = "0.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7774b5a8282bd4f25f803b1f0d945120be959a36c72e08e7cd031c792fdfd424" +checksum = "7c7e9b68bb9c3149c5b0cade5d07f953d6d125eb4337723c4ccdb665f1f96185" dependencies = [ "heck", "proc-macro2", + "pyo3-build-config", "quote", "syn 2.0.66", ] @@ -1119,23 +1130,23 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.3.5" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" +checksum = "469052894dcb553421e483e4209ee581a45100d31b4018de03e5a7ad86374a7e" dependencies = [ - "bitflags", + "bitflags 2.5.0", ] [[package]] name = "regex" -version = "1.10.2" +version = "1.10.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "380b951a9c5e80ddfd6136919eef32310721aa4aacd4889a8d39124b026ab343" +checksum = "c117dbdfde9c8308975b6a18d71f3f385c89461f7b3fb054288ecf2a2058ba4c" dependencies = [ "aho-corasick", "memchr", - "regex-automata 0.4.3", - "regex-syntax 0.8.2", + "regex-automata 0.4.6", + "regex-syntax 0.8.3", ] [[package]] @@ -1149,13 +1160,13 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.3" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f804c7828047e88b2d32e2d7fe5a105da8ee3264f01902f796c8e067dc2483f" +checksum = "86b83b8b9847f9bf95ef68afb0b8e6cdb80f498442f5179a29fad448fcc1eaea" dependencies = [ "aho-corasick", "memchr", - "regex-syntax 0.8.2", + "regex-syntax 0.8.3", ] [[package]] @@ -1166,9 +1177,9 @@ checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" [[package]] name = "regex-syntax" -version = "0.8.2" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" +checksum = "adad44e29e4c806119491a7f06f03de4d1af22c3a680dd47f1e6e179439d1f56" [[package]] name = "ring" @@ -1213,9 +1224,9 @@ dependencies = [ [[package]] name = "rustc-demangle" -version = "0.1.23" +version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" +checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" [[package]] name = "rustc_version" @@ -1282,15 +1293,15 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.14" +version = "1.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4" +checksum = "955d28af4278de8121b7ebeb796b6a45735dc01436d898801014aced2773a3d6" [[package]] name = "ryu" -version = "1.0.15" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741" +checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" [[package]] name = "schannel" @@ -1309,11 +1320,11 @@ checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] name = "security-framework" -version = "2.10.0" +version = "2.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "770452e37cad93e0a50d5abc3990d2bc351c36d0328f86cefec2f2fb206eaef6" +checksum = "c627723fd09706bacdb5cf41499e95098555af3c3c29d014dc3c458ef6be11c0" dependencies = [ - "bitflags", + "bitflags 2.5.0", "core-foundation", "core-foundation-sys", "libc", @@ -1332,24 +1343,24 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.19" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad977052201c6de01a8ef2aa3378c4bd23217a056337d1d6da40468d267a4fb0" +checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" [[package]] name = "serde" -version = "1.0.193" +version = "1.0.203" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25dd9975e68d0cb5aa1120c288333fc98731bd1dd12f561e468ea4728c042b89" +checksum = "7253ab4de971e72fb7be983802300c30b5a7f0c2e56fab8abfc6a214307c0094" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.193" +version = "1.0.203" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43576ca501357b9b071ac53cdc7da8ef0cbd9493d8df094cd821777ea6e894d3" +checksum = "500cbc0ebeb6f46627f50f3f5811ccf6bf00643be300b4c3eabc0ef55dc5b5ba" dependencies = [ "proc-macro2", "quote", @@ -1358,9 +1369,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.108" +version = "1.0.117" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d1c7e3eac408d115102c4c24ad393e0821bb3a5df4d506a80f85f7a742a526b" +checksum = "455182ea6142b14f93f4bc5320a2b31c1f266b66a4a5c858b013302a5d8cbfc3" dependencies = [ "itoa", "ryu", @@ -1380,9 +1391,9 @@ dependencies = [ [[package]] name = "sharded-slab" -version = "0.1.4" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "900fba806f70c630b0a382d0d825e17a0f19fcd059a2ade1ff237bcddf446b31" +checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" dependencies = [ "lazy_static", ] @@ -1398,28 +1409,18 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "942b4a808e05215192e39f4ab80813e599068285906cc91aa64f923db842bd5a" - -[[package]] -name = "socket2" -version = "0.4.10" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f7916fc008ca5542385b89a3d3ce689953c143e9304a9bf8beec1de48994c0d" -dependencies = [ - "libc", - "winapi", -] +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "socket2" -version = "0.5.5" +version = "0.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b5fac59a5cb5dd637972e5fca70daf0523c9067fcdc4842f053dae04a18f8e9" +checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c" dependencies = [ "libc", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] @@ -1464,9 +1465,9 @@ checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" [[package]] name = "target-lexicon" -version = "0.12.11" +version = "0.12.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d0e916b1148c8e263850e1ebcbd046f333e0683c724876bb0da63ea4373dc8a" +checksum = "e1fc403891a21bcfb7c37834ba66a547a8f402146eba7265b5a6d88059c9ff2f" [[package]] name = "thiserror" @@ -1490,9 +1491,9 @@ dependencies = [ [[package]] name = "thread_local" -version = "1.1.7" +version = "1.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdd6f064ccff2d6567adcb3873ca630700f00b5ad3f060c25b5dcfd9a4ce152" +checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c" dependencies = [ "cfg-if", "once_cell", @@ -1511,7 +1512,7 @@ dependencies = [ "num_cpus", "parking_lot", "pin-project-lite", - "socket2 0.5.5", + "socket2", "tokio-macros", "windows-sys 0.48.0", ] @@ -1550,9 +1551,9 @@ dependencies = [ [[package]] name = "tokio-stream" -version = "0.1.14" +version = "0.1.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "397c988d37662c7dda6d2208364a706264bf3d6138b11d436cbac0ad38832842" +checksum = "267ac89e0bec6e691e5813911606935d77c476ff49024f98abcea3e7b15e37af" dependencies = [ "futures-core", "pin-project-lite", @@ -1561,16 +1562,15 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.10" +version = "0.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5419f34732d9eb6ee4c3578b7989078579b7f039cbbb9ca2c4da015749371e15" +checksum = "9cf6b47b3771c49ac75ad09a6162f53ad4b8088b76ac60e8ec1455b31a189fe1" dependencies = [ "bytes", "futures-core", "futures-sink", "pin-project-lite", "tokio", - "tracing", ] [[package]] @@ -1582,7 +1582,7 @@ dependencies = [ "async-stream", "async-trait", "axum", - "base64 0.21.5", + "base64 0.21.7", "bytes", "h2", "http", @@ -1638,11 +1638,10 @@ checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" [[package]] name = "tracing" -version = "0.1.37" +version = "0.1.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8" +checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" dependencies = [ - "cfg-if", "log", "pin-project-lite", "tracing-attributes", @@ -1651,9 +1650,9 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.26" +version = "0.1.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f4f31f56159e98206da9efd823404b79b6ef3143b4a7ab76e67b1751b25a4ab" +checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", @@ -1662,25 +1661,14 @@ dependencies = [ [[package]] name = "tracing-core" -version = "0.1.31" +version = "0.1.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0955b8137a1df6f1a2e9a37d8a6656291ff0297c1a97c24e0d8425fe2312f79a" +checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" dependencies = [ "once_cell", "valuable", ] -[[package]] -name = "tracing-log" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78ddad33d2d10b1ed7eb9d1f518a5674713876e97e5bb9b7345a7984fbb4f922" -dependencies = [ - "lazy_static", - "log", - "tracing-core", -] - [[package]] name = "tracing-log" version = "0.2.0" @@ -1705,7 +1693,7 @@ dependencies = [ "smallvec", "tracing", "tracing-core", - "tracing-log 0.2.0", + "tracing-log", "tracing-subscriber", "web-time", ] @@ -1722,9 +1710,9 @@ dependencies = [ [[package]] name = "tracing-subscriber" -version = "0.3.17" +version = "0.3.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30a651bc37f915e81f087d86e62a18eec5f79550c7faff886f7090b4ea757c77" +checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b" dependencies = [ "matchers", "nu-ansi-term", @@ -1737,15 +1725,15 @@ dependencies = [ "thread_local", "tracing", "tracing-core", - "tracing-log 0.1.3", + "tracing-log", "tracing-serde", ] [[package]] name = "try-lock" -version = "0.2.4" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed" +checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" [[package]] name = "typenum" @@ -1806,9 +1794,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.87" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7706a72ab36d8cb1f80ffbf0e071533974a60d0a308d01a5d0375bf60499a342" +checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8" dependencies = [ "cfg-if", "wasm-bindgen-macro", @@ -1816,9 +1804,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.87" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ef2b6d3c510e9625e5fe6f509ab07d66a760f0885d858736483c32ed7809abd" +checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da" dependencies = [ "bumpalo", "log", @@ -1831,9 +1819,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.87" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dee495e55982a3bd48105a7b947fd2a9b4a8ae3010041b9e0faab3f9cd028f1d" +checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -1841,9 +1829,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.87" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" +checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" dependencies = [ "proc-macro2", "quote", @@ -1854,9 +1842,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.87" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca6ad05a4870b2bf5fe995117d3728437bd27d7cd5f06f13c17443ef369775a1" +checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96" [[package]] name = "web-time" @@ -1905,7 +1893,7 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" dependencies = [ - "windows-targets 0.52.0", + "windows-targets 0.52.5", ] [[package]] @@ -1925,17 +1913,18 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.52.0" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a18201040b24831fbb9e4eb208f8892e1f50a37feb53cc7ff887feb8f50e7cd" +checksum = "6f0713a46559409d202e70e28227288446bf7841d3211583a4b53e3f6d96e7eb" dependencies = [ - "windows_aarch64_gnullvm 0.52.0", - "windows_aarch64_msvc 0.52.0", - "windows_i686_gnu 0.52.0", - "windows_i686_msvc 0.52.0", - "windows_x86_64_gnu 0.52.0", - "windows_x86_64_gnullvm 0.52.0", - "windows_x86_64_msvc 0.52.0", + "windows_aarch64_gnullvm 0.52.5", + "windows_aarch64_msvc 0.52.5", + "windows_i686_gnu 0.52.5", + "windows_i686_gnullvm", + "windows_i686_msvc 0.52.5", + "windows_x86_64_gnu 0.52.5", + "windows_x86_64_gnullvm 0.52.5", + "windows_x86_64_msvc 0.52.5", ] [[package]] @@ -1946,9 +1935,9 @@ checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" [[package]] name = "windows_aarch64_gnullvm" -version = "0.52.0" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb7764e35d4db8a7921e09562a0304bf2f93e0a51bfccee0bd0bb0b666b015ea" +checksum = "7088eed71e8b8dda258ecc8bac5fb1153c5cffaf2578fc8ff5d61e23578d3263" [[package]] name = "windows_aarch64_msvc" @@ -1958,9 +1947,9 @@ checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" [[package]] name = "windows_aarch64_msvc" -version = "0.52.0" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbaa0368d4f1d2aaefc55b6fcfee13f41544ddf36801e793edbbfd7d7df075ef" +checksum = "9985fd1504e250c615ca5f281c3f7a6da76213ebd5ccc9561496568a2752afb6" [[package]] name = "windows_i686_gnu" @@ -1970,9 +1959,15 @@ checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" [[package]] name = "windows_i686_gnu" -version = "0.52.0" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88ba073cf16d5372720ec942a8ccbf61626074c6d4dd2e745299726ce8b89670" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a28637cb1fa3560a16915793afb20081aba2c92ee8af57b4d5f28e4b3e7df313" +checksum = "87f4261229030a858f36b459e748ae97545d6f1ec60e5e0d6a3d32e0dc232ee9" [[package]] name = "windows_i686_msvc" @@ -1982,9 +1977,9 @@ checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" [[package]] name = "windows_i686_msvc" -version = "0.52.0" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffe5e8e31046ce6230cc7215707b816e339ff4d4d67c65dffa206fd0f7aa7b9a" +checksum = "db3c2bf3d13d5b658be73463284eaf12830ac9a26a90c717b7f771dfe97487bf" [[package]] name = "windows_x86_64_gnu" @@ -1994,9 +1989,9 @@ checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" [[package]] name = "windows_x86_64_gnu" -version = "0.52.0" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d6fa32db2bc4a2f5abeacf2b69f7992cd09dca97498da74a151a3132c26befd" +checksum = "4e4246f76bdeff09eb48875a0fd3e2af6aada79d409d33011886d3e1581517d9" [[package]] name = "windows_x86_64_gnullvm" @@ -2006,9 +2001,9 @@ checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" [[package]] name = "windows_x86_64_gnullvm" -version = "0.52.0" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a657e1e9d3f514745a572a6846d3c7aa7dbe1658c056ed9c3344c4109a6949e" +checksum = "852298e482cd67c356ddd9570386e2862b5673c85bd5f88df9ab6802b334c596" [[package]] name = "windows_x86_64_msvc" @@ -2018,9 +2013,9 @@ checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" [[package]] name = "windows_x86_64_msvc" -version = "0.52.0" +version = "0.52.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04" +checksum = "bec47e5bfd1bff0eeaf6d8b485cc1074891a197ab4225d504cb7a1ab88b02bf0" [[package]] name = "zeroize" diff --git a/Makefile.toml b/Makefile.toml index 8534ec2..cb55650 100644 --- a/Makefile.toml +++ b/Makefile.toml @@ -203,8 +203,8 @@ # Reintroduce cargo deny upon resolution of https://github.com/rigetti/pyo3-opentelemetry/issues/16 [tasks.check-all] - dependencies = ["check", "clippy", "deadlinks", "msrv-verify", "nextest"] + dependencies = ["check", "clippy", "deadlinks", "msrv-verify", "deny", "nextest"] [tasks.pre-ci-flow] - dependencies = ["check", "clippy", "deadlinks", "msrv-verify"] + dependencies = ["check", "clippy", "deadlinks", "msrv-verify", "deny"] diff --git a/deny.toml b/deny.toml index 80db5c7..2cd0166 100644 --- a/deny.toml +++ b/deny.toml @@ -14,14 +14,8 @@ db-path = "~/.cargo/advisory-db" # The url(s) of the advisory databases to use db-urls = ["https://github.com/rustsec/advisory-db"] -# The lint level for security vulnerabilities -vulnerability = "deny" -# The lint level for unmaintained crates -unmaintained = "deny" # The lint level for crates that have been yanked from their source registry yanked = "deny" -# The lint level for crates with security notices. -notice = "deny" # A list of advisory IDs to ignore. Note that ignored advisories will still # output a note when they are encountered. #ignore = [ @@ -33,7 +27,6 @@ notice = "deny" # https://embarkstudios.github.io/cargo-deny/checks/licenses/cfg.html [licenses] unused-allowed-license = "allow" -unlicensed = "deny" allow = [ "Apache-2.0", "ISC", @@ -44,32 +37,30 @@ allow = [ "Unicode-DFS-2016", "Apache-2.0 WITH LLVM-exception", ] -# List of explictly disallowed licenses -# See https://spdx.org/licenses/ for list of possible licenses -# [possible values: any SPDX 3.11 short identifier (+ optional exception)]. -deny = [ - #"Nokia", -] # Lint level for licenses considered copyleft -copyleft = "deny" -allow-osi-fsf-free = "neither" -default = "deny" confidence-threshold = 0.8 -exceptions = [ -] [licenses.private] # If true, ignores workspace crates that aren't published, or are only # published to private registries ignore = true +[[licenses.clarify]] +name = "ring" +expression = "MIT AND ISC AND OpenSSL" +license-files = [ + { path = "LICENSE", hash = 0xbd0eed23 } +] + # This section is considered when running `cargo deny check bans`. # More documentation about the 'bans' section can be found here: # https://embarkstudios.github.io/cargo-deny/checks/bans/cfg.html [bans] -multiple-versions = "warn" -wildcards = "warn" -# allow-wildcard-paths = true +# clippy::cargo now handles multiple versions; we don't need two +# tools barking at us for the same thing +multiple-versions = "allow" +wildcards = "deny" +allow-wildcard-paths = true highlight = "all" skip-tree = [] # This section is considered when running `cargo deny check sources`. From f4e4e6af95fb21fb3fd82ebce586d383b9def9c2 Mon Sep 17 00:00:00 2001 From: Eric Hulburd Date: Fri, 31 May 2024 12:39:42 -0700 Subject: [PATCH 04/21] fix: drop batch stdout support --- .clippy.toml | 1 + crates/tracing-subscriber/Cargo.toml | 2 +- .../tracing-subscriber/src/contextmanager.rs | 69 +------- .../src/layers/otel_otlp.rs | 3 +- .../src/layers/otel_otlp_file.rs | 20 +-- examples/pyo3-opentelemetry-lib/Makefile.toml | 17 +- .../_tracing_subscriber/__init__.py | 1 - .../_tracing_subscriber/layers/__init__.py | 2 - .../_tracing_subscriber/layers/__init__.pyi | 19 +- .../layers/file/__init__.py | 3 - .../layers/file/__init__.pyi | 1 - .../layers/otel_otlp/__init__.py | 2 - .../layers/otel_otlp/__init__.pyi | 9 +- .../layers/otel_otlp_file/__init__.py | 2 - .../layers/otel_otlp_file/__init__.pyi | 1 - .../subscriber/__init__.py | 2 - .../subscriber/__init__.pyi | 1 - .../test/__artifacts__/.keep | 0 .../test/tracing_test.py | 163 +++++++++--------- 19 files changed, 116 insertions(+), 202 deletions(-) delete mode 100644 examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/test/__artifacts__/.keep diff --git a/.clippy.toml b/.clippy.toml index eeb746c..d5acd3f 100644 --- a/.clippy.toml +++ b/.clippy.toml @@ -1,5 +1,6 @@ allowed-duplicate-crates = [ "base64", + "bitflags", "hashbrown", "indexmap", "regex-automata", diff --git a/crates/tracing-subscriber/Cargo.toml b/crates/tracing-subscriber/Cargo.toml index a0429c4..6356345 100644 --- a/crates/tracing-subscriber/Cargo.toml +++ b/crates/tracing-subscriber/Cargo.toml @@ -17,7 +17,7 @@ opentelemetry = { workspace = true } opentelemetry-otlp = { version = "0.16.0", features = ["grpc-tonic", "trace", "tls-roots"], optional = true } opentelemetry-proto = { version = "0.6.0", optional = true, features = ["tonic"] } opentelemetry-stdout = { version = "0.4.0", optional = true, features = ["trace"] } -opentelemetry_sdk = { workspace = true, features = ["rt-tokio-current-thread"] } +opentelemetry_sdk = { workspace = true, features = ["rt-tokio", "rt-tokio-current-thread"] } pyo3-asyncio = { workspace = true, features = ["tokio-runtime"] } serde = { workspace = true } thiserror = { workspace = true } diff --git a/crates/tracing-subscriber/src/contextmanager.rs b/crates/tracing-subscriber/src/contextmanager.rs index 1278a42..7784394 100644 --- a/crates/tracing-subscriber/src/contextmanager.rs +++ b/crates/tracing-subscriber/src/contextmanager.rs @@ -197,7 +197,7 @@ mod test { use crate::{ contextmanager::{CurrentThreadTracingConfig, GlobalTracingConfig, TracingConfig}, - export_process::{BatchConfig, ExportProcess, ExportProcessConfig, SimpleConfig}, + export_process::{ExportProcess, ExportProcessConfig, SimpleConfig}, subscriber::TracingSubscriberRegistryConfig, }; @@ -236,71 +236,6 @@ mod test { end_time_unix_nano: u128, } - #[test] - /// Test that a global batch process can be started and stopped and that it exports - /// accurate spans as configured. - fn test_global_batch() { - let temporary_file_path = get_tempfile("test_global_batch"); - let layer_config = Box::new(crate::layers::otel_otlp_file::Config { - file_path: Some(temporary_file_path.as_os_str().to_str().unwrap().to_owned()), - filter: Some("error,pyo3_tracing_subscriber=info".to_string()), - }); - let subscriber = Box::new(TracingSubscriberRegistryConfig { layer_config }); - let config = TracingConfig::Global(GlobalTracingConfig { - export_process: ExportProcessConfig::Batch(BatchConfig { - subscriber: crate::subscriber::PyConfig { - subscriber_config: subscriber, - }, - }), - }); - let export_process = ExportProcess::start(config).unwrap(); - let rt2 = Builder::new_current_thread().enable_time().build().unwrap(); - let _guard = rt2.enter(); - let export_runtime = rt2 - .block_on(tokio::time::timeout(Duration::from_secs(1), async move { - for _ in 0..N_SPANS { - example(); - } - export_process.shutdown().await - })) - .unwrap() - .unwrap() - .unwrap(); - drop(export_runtime); - - let reader = std::io::BufReader::new(std::fs::File::open(temporary_file_path).unwrap()); - let lines = reader.lines(); - let spans = lines - .flat_map(|line| { - let line = line.unwrap(); - let span_data: SpanData = serde_json::from_str(line.as_str()).unwrap(); - span_data - .resource_spans - .iter() - .flat_map(|resource_span| { - resource_span - .scope_spans - .iter() - .flat_map(|scope_span| scope_span.spans.clone()) - }) - .collect::>() - }) - .collect::>(); - assert_eq!(spans.len(), N_SPANS); - - let span_grace = Duration::from_millis(200); - for span in spans { - assert_eq!(span.name, "example"); - assert!( - span.end_time_unix_nano - span.start_time_unix_nano >= SPAN_DURATION.as_nanos() - ); - assert!( - (span.end_time_unix_nano - span.start_time_unix_nano) - <= (SPAN_DURATION.as_nanos() + span_grace.as_nanos()) - ); - } - } - #[test] /// Test that a global simple export process can be started and stopped and that it /// exports accurate spans as configured. @@ -352,7 +287,7 @@ mod test { .collect::>(); assert_eq!(spans.len(), N_SPANS); - let span_grace = Duration::from_millis(10); + let span_grace = Duration::from_millis(50); for span in spans { assert_eq!(span.name, "example"); assert!( diff --git a/crates/tracing-subscriber/src/layers/otel_otlp.rs b/crates/tracing-subscriber/src/layers/otel_otlp.rs index 6e52fa7..8c86483 100644 --- a/crates/tracing-subscriber/src/layers/otel_otlp.rs +++ b/crates/tracing-subscriber/src/layers/otel_otlp.rs @@ -16,7 +16,6 @@ use std::{collections::HashMap, time::Duration}; use opentelemetry_otlp::{TonicExporterBuilder, WithExportConfig}; use opentelemetry_sdk::{ - runtime::TokioCurrentThread, trace::{Sampler, SpanLimits}, Resource, }; @@ -103,7 +102,7 @@ impl Config { ); let tracer = if batch { - pipeline.install_batch(TokioCurrentThread {}) + pipeline.install_batch(opentelemetry_sdk::runtime::Tokio {}) } else { pipeline.install_simple() } diff --git a/crates/tracing-subscriber/src/layers/otel_otlp_file.rs b/crates/tracing-subscriber/src/layers/otel_otlp_file.rs index 7d0d412..8956e2e 100644 --- a/crates/tracing-subscriber/src/layers/otel_otlp_file.rs +++ b/crates/tracing-subscriber/src/layers/otel_otlp_file.rs @@ -13,7 +13,6 @@ // limitations under the License. use crate::create_init_submodule; -use opentelemetry_sdk::runtime::TokioCurrentThread; use pyo3::prelude::*; use tracing_subscriber::Layer; @@ -52,16 +51,13 @@ impl crate::layers::Config for Config { } None => exporter_builder, }; - let provider = if batch { - opentelemetry_sdk::trace::TracerProvider::builder() - .with_batch_exporter(exporter_builder.build(), TokioCurrentThread) - .build() - } else { - opentelemetry_sdk::trace::TracerProvider::builder() - .with_simple_exporter(exporter_builder.build()) - .build() - }; - let tracer = provider.tracer("pyo3-opentelemetry-stdout"); + if batch { + return Err(BuildError::BatchModeNotSupported)?; + } + let provider = opentelemetry_sdk::trace::TracerProvider::builder() + .with_simple_exporter(exporter_builder.build()) + .build(); + let tracer = provider.tracer("pyo3_tracing_subscriber"); let env_filter = build_env_filter(self.filter.clone())?; let layer = tracing_opentelemetry::layer() .with_tracer(tracer) @@ -77,6 +73,8 @@ impl crate::layers::Config for Config { pub(crate) enum BuildError { #[error("failed to initialize file span exporter for specified file path: {0}")] InvalidFile(#[from] std::io::Error), + #[error("batch mode is not supported for stdout layer")] + BatchModeNotSupported, } create_init_submodule! { diff --git a/examples/pyo3-opentelemetry-lib/Makefile.toml b/examples/pyo3-opentelemetry-lib/Makefile.toml index 09e6b39..93b4cf7 100644 --- a/examples/pyo3-opentelemetry-lib/Makefile.toml +++ b/examples/pyo3-opentelemetry-lib/Makefile.toml @@ -36,15 +36,14 @@ # separate process; that proved non-trivial on a first attempt, as the tests ran into sevaral unexpected # failures. - poetry run pytest 'pyo3_opentelemetry_lib/test/tracing_test.py::test_file_export[2]' --with-global-tracing-configuration - poetry run pytest 'pyo3_opentelemetry_lib/test/tracing_test.py::test_file_export[3]' --with-global-tracing-configuration - poetry run pytest 'pyo3_opentelemetry_lib/test/tracing_test.py::test_file_export_async[0]' --with-global-tracing-configuration - poetry run pytest 'pyo3_opentelemetry_lib/test/tracing_test.py::test_file_export_async[1]' --with-global-tracing-configuration - - poetry run pytest 'pyo3_opentelemetry_lib/test/tracing_test.py::test_otlp_export[config2]' --with-global-tracing-configuration - poetry run pytest 'pyo3_opentelemetry_lib/test/tracing_test.py::test_otlp_export[config3]' --with-global-tracing-configuration - poetry run pytest 'pyo3_opentelemetry_lib/test/tracing_test.py::test_otlp_export_async[config0]' --with-global-tracing-configuration - poetry run pytest 'pyo3_opentelemetry_lib/test/tracing_test.py::test_otlp_export_async[config1]' --with-global-tracing-configuration + poetry run pytest 'pyo3_opentelemetry_lib/test/tracing_test.py::test_file_export[02]' --with-global-tracing-configuration + poetry run pytest 'pyo3_opentelemetry_lib/test/tracing_test.py::test_file_export[03]' --with-global-tracing-configuration + poetry run pytest 'pyo3_opentelemetry_lib/test/tracing_test.py::test_file_export_asynchronous[00]' --with-global-tracing-configuration + + poetry run pytest 'pyo3_opentelemetry_lib/test/tracing_test.py::test_otlp_export[02]' --with-global-tracing-configuration + poetry run pytest 'pyo3_opentelemetry_lib/test/tracing_test.py::test_otlp_export[03]' --with-global-tracing-configuration + poetry run pytest 'pyo3_opentelemetry_lib/test/tracing_test.py::test_otlp_export_asynchronous[00]' --with-global-tracing-configuration + poetry run pytest 'pyo3_opentelemetry_lib/test/tracing_test.py::test_otlp_export_asynchronous[01]' --with-global-tracing-configuration ''' [tasks.python-check-all] diff --git a/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/__init__.py b/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/__init__.py index 0993fc1..5b14109 100644 --- a/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/__init__.py +++ b/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/__init__.py @@ -12,6 +12,5 @@ from pyo3_opentelemetry_lib import _tracing_subscriber - __doc__ = _tracing_subscriber.__doc__ __all__ = getattr(_tracing_subscriber, "__all__", []) diff --git a/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/layers/__init__.py b/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/layers/__init__.py index a2c6030..a4dbb1c 100644 --- a/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/layers/__init__.py +++ b/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/layers/__init__.py @@ -12,7 +12,5 @@ from pyo3_opentelemetry_lib._tracing_subscriber import layers - __doc__ = layers.__doc__ __all__ = getattr(layers, "__all__", []) - diff --git a/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/layers/__init__.pyi b/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/layers/__init__.pyi index 741a427..50d94c1 100644 --- a/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/layers/__init__.pyi +++ b/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/layers/__init__.pyi @@ -11,20 +11,21 @@ # ***************************************************************************** from __future__ import annotations + from typing import TYPE_CHECKING -from . import file as file -from . import otel_otlp_file as otel_otlp_file +from . import file as file from . import otel_otlp as otel_otlp +from . import otel_otlp_file as otel_otlp_file if TYPE_CHECKING: - from typing import Union + from typing import Union - Config = Union[ - file.Config, - otel_otlp_file.Config, - otel_otlp.Config, - ] - """ + Config = Union[ + file.Config, + otel_otlp_file.Config, + otel_otlp.Config, + ] + """ One of the supported layer configurations that may be set on the subscriber configuration. """ diff --git a/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/layers/file/__init__.py b/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/layers/file/__init__.py index 365f089..ea3053c 100644 --- a/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/layers/file/__init__.py +++ b/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/layers/file/__init__.py @@ -12,8 +12,5 @@ from pyo3_opentelemetry_lib._tracing_subscriber.layers import file - __doc__ = file.__doc__ __all__ = getattr(file, "__all__", []) - - diff --git a/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/layers/file/__init__.pyi b/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/layers/file/__init__.pyi index 7caa5c2..8054827 100644 --- a/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/layers/file/__init__.pyi +++ b/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/layers/file/__init__.pyi @@ -39,4 +39,3 @@ class Config: :param json: Whether or not to format the output as JSON. Defaults to `True`. """ ... - diff --git a/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/layers/otel_otlp/__init__.py b/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/layers/otel_otlp/__init__.py index cd94b23..efccc22 100644 --- a/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/layers/otel_otlp/__init__.py +++ b/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/layers/otel_otlp/__init__.py @@ -12,7 +12,5 @@ from pyo3_opentelemetry_lib._tracing_subscriber.layers import otel_otlp - __doc__ = otel_otlp.__doc__ __all__ = getattr(otel_otlp, "__all__", []) - diff --git a/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/layers/otel_otlp/__init__.pyi b/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/layers/otel_otlp/__init__.pyi index 5dde690..6accc02 100644 --- a/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/layers/otel_otlp/__init__.pyi +++ b/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/layers/otel_otlp/__init__.pyi @@ -11,7 +11,8 @@ # ***************************************************************************** from __future__ import annotations -from typing import Dict, Optional, TYPE_CHECKING, final + +from typing import TYPE_CHECKING, Dict, Optional, final @final class SpanLimits: @@ -47,8 +48,6 @@ class Resource: schema_url: Optional[str] = None, ) -> "Resource": ... - - @final class Config: """ @@ -98,14 +97,14 @@ class Config: ... if TYPE_CHECKING: - from typing import List, Union + from typing import List, Union ResourceValueArray = Union[List[bool], List[int], List[float], List[str]] """ An array of `ResourceValue`s. This array is homogenous, so all values must be of the same type. """ - ResourceValue= Union[bool, int, float, str, ResourceValueArray] + ResourceValue = Union[bool, int, float, str, ResourceValueArray] """ A value that can be added to a `Resource`. """ diff --git a/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/layers/otel_otlp_file/__init__.py b/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/layers/otel_otlp_file/__init__.py index db105d0..e28b7c3 100644 --- a/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/layers/otel_otlp_file/__init__.py +++ b/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/layers/otel_otlp_file/__init__.py @@ -12,7 +12,5 @@ from pyo3_opentelemetry_lib._tracing_subscriber.layers import otel_otlp_file - __doc__ = otel_otlp_file.__doc__ __all__ = getattr(otel_otlp_file, "__all__", []) - diff --git a/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/layers/otel_otlp_file/__init__.pyi b/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/layers/otel_otlp_file/__init__.pyi index 613126b..31e2f49 100644 --- a/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/layers/otel_otlp_file/__init__.pyi +++ b/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/layers/otel_otlp_file/__init__.pyi @@ -32,4 +32,3 @@ class Config: and then `RUST_LOG` environment variable. If all of these values are empty, no spans will be exported. """ ... - diff --git a/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/subscriber/__init__.py b/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/subscriber/__init__.py index 5737e29..64d80de 100644 --- a/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/subscriber/__init__.py +++ b/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/subscriber/__init__.py @@ -12,7 +12,5 @@ from pyo3_opentelemetry_lib._tracing_subscriber import subscriber - __doc__ = subscriber.__doc__ __all__ = getattr(subscriber, "__all__", []) - diff --git a/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/subscriber/__init__.pyi b/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/subscriber/__init__.pyi index 548de0c..e0894d0 100644 --- a/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/subscriber/__init__.pyi +++ b/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/subscriber/__init__.pyi @@ -22,4 +22,3 @@ class Config: """ def __new__(cls, *, layer: layers.Config) -> "Config": ... - diff --git a/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/test/__artifacts__/.keep b/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/test/__artifacts__/.keep deleted file mode 100644 index e69de29..0000000 diff --git a/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/test/tracing_test.py b/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/test/tracing_test.py index c717545..176137e 100644 --- a/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/test/tracing_test.py +++ b/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/test/tracing_test.py @@ -44,38 +44,36 @@ def global_tracing(param: Any): return pytest.param(param, marks=pytest.mark.global_tracing_configuration) -@pytest.mark.parametrize( - "config_builder", - [ - lambda filename: CurrentThreadTracingConfig( +_TEST_FILE_EXPORT = [ + lambda filename: CurrentThreadTracingConfig( + export_process=SimpleConfig( + subscriber=subscriber.Config(layer=file.Config(file_path=os.path.join(_TEST_ARTIFACTS_DIR, filename))) + ) + ), + lambda filename: CurrentThreadTracingConfig( + export_process=BatchConfig( + subscriber=subscriber.Config(layer=file.Config(file_path=os.path.join(_TEST_ARTIFACTS_DIR, filename))) + ) + ), + global_tracing( + lambda filename: GlobalTracingConfig( export_process=SimpleConfig( subscriber=subscriber.Config(layer=file.Config(file_path=os.path.join(_TEST_ARTIFACTS_DIR, filename))) ) - ), - lambda filename: CurrentThreadTracingConfig( + ) + ), + global_tracing( + lambda filename: GlobalTracingConfig( export_process=BatchConfig( subscriber=subscriber.Config(layer=file.Config(file_path=os.path.join(_TEST_ARTIFACTS_DIR, filename))) ) - ), - global_tracing( - lambda filename: GlobalTracingConfig( - export_process=SimpleConfig( - subscriber=subscriber.Config( - layer=file.Config(file_path=os.path.join(_TEST_ARTIFACTS_DIR, filename)) - ) - ) - ) - ), - global_tracing( - lambda filename: GlobalTracingConfig( - export_process=BatchConfig( - subscriber=subscriber.Config( - layer=file.Config(file_path=os.path.join(_TEST_ARTIFACTS_DIR, filename)) - ) - ) - ) - ), - ], + ) + ), +] + + +@pytest.mark.parametrize( + "config_builder", _TEST_FILE_EXPORT, ids=[str(i).zfill(2) for i in range(len(_TEST_FILE_EXPORT))] ) async def test_file_export(config_builder: Callable[[str], TracingConfig], tracer: Tracer, file_export_filter: None): """ @@ -84,20 +82,24 @@ async def test_file_export(config_builder: Callable[[str], TracingConfig], trace await _test_file_export(config_builder, tracer) +_TEST_FILE_EXPORT_MULTI_THREADS = [ + lambda filename: CurrentThreadTracingConfig( + export_process=SimpleConfig( + subscriber=subscriber.Config(layer=file.Config(file_path=os.path.join(_TEST_ARTIFACTS_DIR, filename))) + ) + ), + lambda filename: CurrentThreadTracingConfig( + export_process=BatchConfig( + subscriber=subscriber.Config(layer=file.Config(file_path=os.path.join(_TEST_ARTIFACTS_DIR, filename))) + ) + ), +] + + @pytest.mark.parametrize( "config_builder", - [ - lambda filename: CurrentThreadTracingConfig( - export_process=SimpleConfig( - subscriber=subscriber.Config(layer=file.Config(file_path=os.path.join(_TEST_ARTIFACTS_DIR, filename))) - ) - ), - lambda filename: CurrentThreadTracingConfig( - export_process=BatchConfig( - subscriber=subscriber.Config(layer=file.Config(file_path=os.path.join(_TEST_ARTIFACTS_DIR, filename))) - ) - ), - ], + _TEST_FILE_EXPORT_MULTI_THREADS, + ids=[str(i).zfill(2) for i in range(len(_TEST_FILE_EXPORT_MULTI_THREADS))], ) async def test_file_export_multi_threads( config_builder: Callable[[str], TracingConfig], tracer: Tracer, file_export_filter: None @@ -149,30 +151,21 @@ async def _test_file_export(config_builder: Callable[[str], TracingConfig], trac assert counter["example_function_impl"] == 1 -@pytest.mark.parametrize( - "config_builder", - [ - global_tracing( - lambda filename: GlobalTracingConfig( - export_process=SimpleConfig( - subscriber=subscriber.Config( - layer=file.Config(file_path=os.path.join(_TEST_ARTIFACTS_DIR, filename)) - ) - ) - ) - ), - global_tracing( - lambda filename: GlobalTracingConfig( - export_process=BatchConfig( - subscriber=subscriber.Config( - layer=file.Config(file_path=os.path.join(_TEST_ARTIFACTS_DIR, filename)) - ) - ) +_TEST_FILE_EXPORT_ASYNC = [ + global_tracing( + lambda filename: GlobalTracingConfig( + export_process=SimpleConfig( + subscriber=subscriber.Config(layer=file.Config(file_path=os.path.join(_TEST_ARTIFACTS_DIR, filename))) ) - ), - ], + ) + ), +] + + +@pytest.mark.parametrize( + "config_builder", _TEST_FILE_EXPORT_ASYNC, ids=[str(i).zfill(2) for i in range(len(_TEST_FILE_EXPORT_ASYNC))] ) -async def test_file_export_async( +async def test_file_export_asynchronous( config_builder: Callable[[str], TracingConfig], tracer: Tracer, file_export_filter: None ): """ @@ -218,18 +211,18 @@ async def test_file_export_async( assert counter["example_function_impl_async"] == 1 +_TEST_OTLP_EXPORT = [ + CurrentThreadTracingConfig(export_process=SimpleConfig(subscriber=subscriber.Config(layer=otlp.Config()))), + CurrentThreadTracingConfig(export_process=BatchConfig(subscriber=subscriber.Config(layer=otlp.Config()))), + global_tracing(GlobalTracingConfig(export_process=SimpleConfig(subscriber=subscriber.Config(layer=otlp.Config())))), + global_tracing(GlobalTracingConfig(export_process=BatchConfig(subscriber=subscriber.Config(layer=otlp.Config())))), +] + + @pytest.mark.parametrize( "config", - [ - CurrentThreadTracingConfig(export_process=SimpleConfig(subscriber=subscriber.Config(layer=otlp.Config()))), - CurrentThreadTracingConfig(export_process=BatchConfig(subscriber=subscriber.Config(layer=otlp.Config()))), - global_tracing( - GlobalTracingConfig(export_process=SimpleConfig(subscriber=subscriber.Config(layer=otlp.Config()))) - ), - global_tracing( - GlobalTracingConfig(export_process=BatchConfig(subscriber=subscriber.Config(layer=otlp.Config()))) - ), - ], + _TEST_OTLP_EXPORT, + ids=[str(i).zfill(2) for i in range(len(_TEST_OTLP_EXPORT))], ) async def test_otlp_export( config: TracingConfig, @@ -267,12 +260,16 @@ async def test_otlp_export( assert counter["example_function_impl"] == 1 +_TEST_OTLP_EXPORT_MULTI_THREADS = [ + CurrentThreadTracingConfig(export_process=SimpleConfig(subscriber=subscriber.Config(layer=otlp.Config()))), + CurrentThreadTracingConfig(export_process=BatchConfig(subscriber=subscriber.Config(layer=otlp.Config()))), +] + + @pytest.mark.parametrize( "config", - [ - CurrentThreadTracingConfig(export_process=SimpleConfig(subscriber=subscriber.Config(layer=otlp.Config()))), - CurrentThreadTracingConfig(export_process=BatchConfig(subscriber=subscriber.Config(layer=otlp.Config()))), - ], + _TEST_OTLP_EXPORT_MULTI_THREADS, + ids=[str(i).zfill(2) for i in range(len(_TEST_OTLP_EXPORT_MULTI_THREADS))], ) async def test_otlp_export_multi_threads( config: TracingConfig, @@ -311,18 +308,18 @@ async def test_otlp_export_multi_threads( assert counter["example_function_impl"] == 1 +TEST_OTLP_EXPORT_ASYNC = [ + global_tracing(GlobalTracingConfig(export_process=SimpleConfig(subscriber=subscriber.Config(layer=otlp.Config())))), + global_tracing(GlobalTracingConfig(export_process=BatchConfig(subscriber=subscriber.Config(layer=otlp.Config())))), +] + + @pytest.mark.parametrize( "config", - [ - global_tracing( - GlobalTracingConfig(export_process=SimpleConfig(subscriber=subscriber.Config(layer=otlp.Config()))) - ), - global_tracing( - GlobalTracingConfig(export_process=BatchConfig(subscriber=subscriber.Config(layer=otlp.Config()))) - ), - ], + TEST_OTLP_EXPORT_ASYNC, + ids=[str(i).zfill(2) for i in range(len(TEST_OTLP_EXPORT_ASYNC))], ) -async def test_otlp_export_async( +async def test_otlp_export_asynchronous( config: TracingConfig, tracer: Tracer, otlp_test_namespace: str, From 0c197af191ba8bf1231c41e631f51079d7218525 Mon Sep 17 00:00:00 2001 From: Eric Hulburd Date: Fri, 31 May 2024 13:07:07 -0700 Subject: [PATCH 05/21] test: mkdir before testing --- examples/pyo3-opentelemetry-lib/Makefile.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/examples/pyo3-opentelemetry-lib/Makefile.toml b/examples/pyo3-opentelemetry-lib/Makefile.toml index 93b4cf7..8d2aefe 100644 --- a/examples/pyo3-opentelemetry-lib/Makefile.toml +++ b/examples/pyo3-opentelemetry-lib/Makefile.toml @@ -29,6 +29,7 @@ [tasks.python-test] dependencies = ["python-build"] script = ''' + mkdir -p pyo3_opentelemetry_lib/test/__artifacts__ poetry run pytest . # Note, the follow are all tests that initialize a global tracing subscriber, which is only possible to do From 0b5c45ba05ec9ffac8f4184638946ae46352d3fc Mon Sep 17 00:00:00 2001 From: Eric Hulburd Date: Fri, 31 May 2024 13:17:26 -0700 Subject: [PATCH 06/21] ci: fix knope prerelease --- .github/workflows/prerelease.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/prerelease.yml b/.github/workflows/prerelease.yml index 2fef290..7038680 100644 --- a/.github/workflows/prerelease.yml +++ b/.github/workflows/prerelease.yml @@ -21,6 +21,7 @@ jobs: - run: | git config --global user.name "${{ github.triggering_actor }}" git config --global user.email "${{ github.triggering_actor}}@users.noreply.github.com" + git pull origin --tags - name: Prepare Prerelease run: knope release --prerelease-label=rc --verbose From 34b7f3deb06fa9a1b800ef34aed8afb99575187b Mon Sep 17 00:00:00 2001 From: Eric Hulburd Date: Fri, 31 May 2024 13:30:11 -0700 Subject: [PATCH 07/21] test: drop batch file configs --- examples/pyo3-opentelemetry-lib/Makefile.toml | 3 +-- .../pyo3_opentelemetry_lib/test/tracing_test.py | 17 ----------------- 2 files changed, 1 insertion(+), 19 deletions(-) diff --git a/examples/pyo3-opentelemetry-lib/Makefile.toml b/examples/pyo3-opentelemetry-lib/Makefile.toml index 8d2aefe..6df2af7 100644 --- a/examples/pyo3-opentelemetry-lib/Makefile.toml +++ b/examples/pyo3-opentelemetry-lib/Makefile.toml @@ -37,8 +37,7 @@ # separate process; that proved non-trivial on a first attempt, as the tests ran into sevaral unexpected # failures. - poetry run pytest 'pyo3_opentelemetry_lib/test/tracing_test.py::test_file_export[02]' --with-global-tracing-configuration - poetry run pytest 'pyo3_opentelemetry_lib/test/tracing_test.py::test_file_export[03]' --with-global-tracing-configuration + poetry run pytest 'pyo3_opentelemetry_lib/test/tracing_test.py::test_file_export[01]' --with-global-tracing-configuration poetry run pytest 'pyo3_opentelemetry_lib/test/tracing_test.py::test_file_export_asynchronous[00]' --with-global-tracing-configuration poetry run pytest 'pyo3_opentelemetry_lib/test/tracing_test.py::test_otlp_export[02]' --with-global-tracing-configuration diff --git a/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/test/tracing_test.py b/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/test/tracing_test.py index 176137e..b2502c9 100644 --- a/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/test/tracing_test.py +++ b/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/test/tracing_test.py @@ -50,11 +50,6 @@ def global_tracing(param: Any): subscriber=subscriber.Config(layer=file.Config(file_path=os.path.join(_TEST_ARTIFACTS_DIR, filename))) ) ), - lambda filename: CurrentThreadTracingConfig( - export_process=BatchConfig( - subscriber=subscriber.Config(layer=file.Config(file_path=os.path.join(_TEST_ARTIFACTS_DIR, filename))) - ) - ), global_tracing( lambda filename: GlobalTracingConfig( export_process=SimpleConfig( @@ -62,13 +57,6 @@ def global_tracing(param: Any): ) ) ), - global_tracing( - lambda filename: GlobalTracingConfig( - export_process=BatchConfig( - subscriber=subscriber.Config(layer=file.Config(file_path=os.path.join(_TEST_ARTIFACTS_DIR, filename))) - ) - ) - ), ] @@ -88,11 +76,6 @@ async def test_file_export(config_builder: Callable[[str], TracingConfig], trace subscriber=subscriber.Config(layer=file.Config(file_path=os.path.join(_TEST_ARTIFACTS_DIR, filename))) ) ), - lambda filename: CurrentThreadTracingConfig( - export_process=BatchConfig( - subscriber=subscriber.Config(layer=file.Config(file_path=os.path.join(_TEST_ARTIFACTS_DIR, filename))) - ) - ), ] From cff97d55cf2cec93069d4d89a36aeb14ffc549be Mon Sep 17 00:00:00 2001 From: Eric Hulburd Date: Fri, 31 May 2024 13:33:28 -0700 Subject: [PATCH 08/21] ci: pull tags before knope release --- .github/workflows/prerelease.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/prerelease.yml b/.github/workflows/prerelease.yml index 7038680..3e8f321 100644 --- a/.github/workflows/prerelease.yml +++ b/.github/workflows/prerelease.yml @@ -21,7 +21,8 @@ jobs: - run: | git config --global user.name "${{ github.triggering_actor }}" git config --global user.email "${{ github.triggering_actor}}@users.noreply.github.com" - git pull origin --tags - name: Prepare Prerelease - run: knope release --prerelease-label=rc --verbose + run: | + git pull origin --tags + knope release --prerelease-label=rc --verbose From 9c7c1cfe2da3743304c2020a19f5d9f426347d12 Mon Sep 17 00:00:00 2001 From: Eric Hulburd Date: Fri, 31 May 2024 13:42:44 -0700 Subject: [PATCH 09/21] chore: prepare new release(s) --- crates/opentelemetry-macros/CHANGELOG.md | 10 ++++++++++ crates/opentelemetry-macros/Cargo.toml | 2 +- crates/opentelemetry/CHANGELOG.md | 10 ++++++++++ crates/opentelemetry/Cargo.toml | 4 ++-- crates/tracing-subscriber/CHANGELOG.md | 10 ++++++++++ crates/tracing-subscriber/Cargo.toml | 2 +- 6 files changed, 34 insertions(+), 4 deletions(-) diff --git a/crates/opentelemetry-macros/CHANGELOG.md b/crates/opentelemetry-macros/CHANGELOG.md index 0f6563a..9933191 100644 --- a/crates/opentelemetry-macros/CHANGELOG.md +++ b/crates/opentelemetry-macros/CHANGELOG.md @@ -1,3 +1,13 @@ +## 0.3.2-rc.0 (2024-05-31) + +### Fixes + +#### use tls tonic features (#18) + +#### update opentelemetry dependencies + +#### drop batch stdout support + ## 0.3.1 (2023-12-18) ### Fixes diff --git a/crates/opentelemetry-macros/Cargo.toml b/crates/opentelemetry-macros/Cargo.toml index ec58f18..c605d2f 100644 --- a/crates/opentelemetry-macros/Cargo.toml +++ b/crates/opentelemetry-macros/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pyo3-opentelemetry-macros" -version = "0.3.1" +version = "0.3.2-rc.0" edition = "2021" categories = ["Python bindings", "OpenTelemetry", "Tracing", "Macros"] keywords = ["python", "pyo3", "opentelemetry", "tracing"] diff --git a/crates/opentelemetry/CHANGELOG.md b/crates/opentelemetry/CHANGELOG.md index 6e757f1..d5dfb26 100644 --- a/crates/opentelemetry/CHANGELOG.md +++ b/crates/opentelemetry/CHANGELOG.md @@ -1,3 +1,13 @@ +## 0.3.2-rc.0 (2024-05-31) + +### Fixes + +#### use tls tonic features (#18) + +#### update opentelemetry dependencies + +#### drop batch stdout support + ## 0.3.1 (2023-12-18) ### Fixes diff --git a/crates/opentelemetry/Cargo.toml b/crates/opentelemetry/Cargo.toml index 12a4027..f743748 100644 --- a/crates/opentelemetry/Cargo.toml +++ b/crates/opentelemetry/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pyo3-opentelemetry" -version = "0.3.1" +version = "0.3.2-rc.0" edition = "2021" categories = ["Python bindings", "OpenTelemetry", "Tracing", "Macros"] keywords = ["python", "pyo3", "opentelemetry", "tracing"] @@ -14,7 +14,7 @@ rust-version = "1.65.0" opentelemetry = { workspace = true } opentelemetry_sdk = { workspace = true } pyo3 = { workspace = true } -pyo3-opentelemetry-macros = { path = "../opentelemetry-macros", version = "0.3.1" } +pyo3-opentelemetry-macros = { path = "../opentelemetry-macros", version = "0.3.2-rc.0" } [dev-dependencies] futures-util = "0.3.28" diff --git a/crates/tracing-subscriber/CHANGELOG.md b/crates/tracing-subscriber/CHANGELOG.md index 8f3ab80..ddda536 100644 --- a/crates/tracing-subscriber/CHANGELOG.md +++ b/crates/tracing-subscriber/CHANGELOG.md @@ -1,3 +1,13 @@ +## 0.1.2-rc.0 (2024-05-31) + +### Fixes + +#### use tls tonic features (#18) + +#### update opentelemetry dependencies + +#### drop batch stdout support + ## 0.1.1 (2023-12-18) ### Fixes diff --git a/crates/tracing-subscriber/Cargo.toml b/crates/tracing-subscriber/Cargo.toml index 6356345..abf0c7a 100644 --- a/crates/tracing-subscriber/Cargo.toml +++ b/crates/tracing-subscriber/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pyo3-tracing-subscriber" -version = "0.1.1" +version = "0.1.2-rc.0" edition = "2021" categories = ["Python bindings", "OpenTelemetry", "Tracing"] keywords = ["python", "pyo3", "opentelemetry", "tracing"] From 357edbab5b1fb190658bfa175edb884229c5e05d Mon Sep 17 00:00:00 2001 From: Eric Hulburd Date: Fri, 31 May 2024 13:45:06 -0700 Subject: [PATCH 10/21] chore: prepare new release(s) --- crates/opentelemetry-macros/CHANGELOG.md | 10 ++++++++++ crates/opentelemetry-macros/Cargo.toml | 2 +- crates/opentelemetry/CHANGELOG.md | 10 ++++++++++ crates/opentelemetry/Cargo.toml | 4 ++-- crates/tracing-subscriber/CHANGELOG.md | 10 ++++++++++ crates/tracing-subscriber/Cargo.toml | 2 +- 6 files changed, 34 insertions(+), 4 deletions(-) diff --git a/crates/opentelemetry-macros/CHANGELOG.md b/crates/opentelemetry-macros/CHANGELOG.md index 9933191..843c666 100644 --- a/crates/opentelemetry-macros/CHANGELOG.md +++ b/crates/opentelemetry-macros/CHANGELOG.md @@ -1,3 +1,13 @@ +## 0.3.2-dev.0 (2024-05-31) + +### Fixes + +#### use tls tonic features (#18) + +#### update opentelemetry dependencies + +#### drop batch stdout support + ## 0.3.2-rc.0 (2024-05-31) ### Fixes diff --git a/crates/opentelemetry-macros/Cargo.toml b/crates/opentelemetry-macros/Cargo.toml index c605d2f..1563382 100644 --- a/crates/opentelemetry-macros/Cargo.toml +++ b/crates/opentelemetry-macros/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pyo3-opentelemetry-macros" -version = "0.3.2-rc.0" +version = "0.3.2-dev.0" edition = "2021" categories = ["Python bindings", "OpenTelemetry", "Tracing", "Macros"] keywords = ["python", "pyo3", "opentelemetry", "tracing"] diff --git a/crates/opentelemetry/CHANGELOG.md b/crates/opentelemetry/CHANGELOG.md index d5dfb26..2528c0e 100644 --- a/crates/opentelemetry/CHANGELOG.md +++ b/crates/opentelemetry/CHANGELOG.md @@ -1,3 +1,13 @@ +## 0.3.2-dev.0 (2024-05-31) + +### Fixes + +#### use tls tonic features (#18) + +#### update opentelemetry dependencies + +#### drop batch stdout support + ## 0.3.2-rc.0 (2024-05-31) ### Fixes diff --git a/crates/opentelemetry/Cargo.toml b/crates/opentelemetry/Cargo.toml index f743748..a253199 100644 --- a/crates/opentelemetry/Cargo.toml +++ b/crates/opentelemetry/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pyo3-opentelemetry" -version = "0.3.2-rc.0" +version = "0.3.2-dev.0" edition = "2021" categories = ["Python bindings", "OpenTelemetry", "Tracing", "Macros"] keywords = ["python", "pyo3", "opentelemetry", "tracing"] @@ -14,7 +14,7 @@ rust-version = "1.65.0" opentelemetry = { workspace = true } opentelemetry_sdk = { workspace = true } pyo3 = { workspace = true } -pyo3-opentelemetry-macros = { path = "../opentelemetry-macros", version = "0.3.2-rc.0" } +pyo3-opentelemetry-macros = { path = "../opentelemetry-macros", version = "0.3.2-dev.0" } [dev-dependencies] futures-util = "0.3.28" diff --git a/crates/tracing-subscriber/CHANGELOG.md b/crates/tracing-subscriber/CHANGELOG.md index ddda536..ecd1c60 100644 --- a/crates/tracing-subscriber/CHANGELOG.md +++ b/crates/tracing-subscriber/CHANGELOG.md @@ -1,3 +1,13 @@ +## 0.1.2-dev.0 (2024-05-31) + +### Fixes + +#### use tls tonic features (#18) + +#### update opentelemetry dependencies + +#### drop batch stdout support + ## 0.1.2-rc.0 (2024-05-31) ### Fixes diff --git a/crates/tracing-subscriber/Cargo.toml b/crates/tracing-subscriber/Cargo.toml index abf0c7a..73d3c53 100644 --- a/crates/tracing-subscriber/Cargo.toml +++ b/crates/tracing-subscriber/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pyo3-tracing-subscriber" -version = "0.1.2-rc.0" +version = "0.1.2-dev.0" edition = "2021" categories = ["Python bindings", "OpenTelemetry", "Tracing"] keywords = ["python", "pyo3", "opentelemetry", "tracing"] From d37537463388c8719a7b179f4391f0d8b86db8b7 Mon Sep 17 00:00:00 2001 From: Eric Hulburd Date: Tue, 4 Jun 2024 09:55:41 -0700 Subject: [PATCH 11/21] chore: ensure example format after build --- examples/pyo3-opentelemetry-lib/Makefile.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/pyo3-opentelemetry-lib/Makefile.toml b/examples/pyo3-opentelemetry-lib/Makefile.toml index 6df2af7..34db01a 100644 --- a/examples/pyo3-opentelemetry-lib/Makefile.toml +++ b/examples/pyo3-opentelemetry-lib/Makefile.toml @@ -18,7 +18,7 @@ ''' [tasks.python-check] - dependencies = ["python-build"] + dependencies = ["python-build", "python-format"] script = ''' poetry run black . --check poetry run ruff . @@ -27,7 +27,7 @@ ''' [tasks.python-test] - dependencies = ["python-build"] + dependencies = ["python-build", "python-format"] script = ''' mkdir -p pyo3_opentelemetry_lib/test/__artifacts__ poetry run pytest . From 71df20751f86fa5067f3dd7cc10c5dce4e5b95a5 Mon Sep 17 00:00:00 2001 From: Eric Hulburd Date: Tue, 4 Jun 2024 10:15:49 -0700 Subject: [PATCH 12/21] fix: use explicit extension-module features --- Cargo.lock | 6 +++--- Cargo.toml | 2 +- crates/opentelemetry/Cargo.toml | 2 ++ crates/tracing-subscriber/Cargo.toml | 7 +++++-- crates/tracing-subscriber/src/lib.rs | 17 +++++++++++++++-- examples/pyo3-opentelemetry-lib/Cargo.toml | 2 +- examples/pyo3-opentelemetry-lib/Makefile.toml | 7 +++---- 7 files changed, 30 insertions(+), 13 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index ddf18a6..cb4f3bd 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1026,7 +1026,7 @@ dependencies = [ [[package]] name = "pyo3-opentelemetry" -version = "0.3.1" +version = "0.3.2-dev.0" dependencies = [ "futures-util", "once_cell", @@ -1058,7 +1058,7 @@ dependencies = [ [[package]] name = "pyo3-opentelemetry-macros" -version = "0.3.1" +version = "0.3.2-dev.0" dependencies = [ "proc-macro2", "quote", @@ -1068,7 +1068,7 @@ dependencies = [ [[package]] name = "pyo3-tracing-subscriber" -version = "0.1.1" +version = "0.1.2-dev.0" dependencies = [ "handlebars", "opentelemetry", diff --git a/Cargo.toml b/Cargo.toml index e583f78..38aa1e7 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -8,7 +8,7 @@ thiserror = "1.0.57" serde = { version = "1.0.145", features = ["derive"] } opentelemetry = { version = "0.23.0" } opentelemetry_sdk = { version = "0.23.0" } -pyo3 = { version = "0.20.0", features = ["macros", "extension-module"] } +pyo3 = { version = "0.20.0", features = ["macros"] } pyo3-asyncio = { version = "0.20.0", features = ["tokio-runtime"] } pyo3-build-config = "0.20.0" rstest = "0.17.0" diff --git a/crates/opentelemetry/Cargo.toml b/crates/opentelemetry/Cargo.toml index a253199..a1ee826 100644 --- a/crates/opentelemetry/Cargo.toml +++ b/crates/opentelemetry/Cargo.toml @@ -26,4 +26,6 @@ tracing-opentelemetry = { workspace = true } tracing-subscriber = { workspace = true } [features] +extension-module = ["pyo3/extension-module"] +default = ["extension-module"] diff --git a/crates/tracing-subscriber/Cargo.toml b/crates/tracing-subscriber/Cargo.toml index 73d3c53..a521168 100644 --- a/crates/tracing-subscriber/Cargo.toml +++ b/crates/tracing-subscriber/Cargo.toml @@ -12,13 +12,13 @@ rust-version = "1.67.0" [dependencies] handlebars = { version = "4.4.0", optional = true } -pyo3 = { workspace = true } +pyo3 = { workspace = true, optional = true } opentelemetry = { workspace = true } opentelemetry-otlp = { version = "0.16.0", features = ["grpc-tonic", "trace", "tls-roots"], optional = true } opentelemetry-proto = { version = "0.6.0", optional = true, features = ["tonic"] } opentelemetry-stdout = { version = "0.4.0", optional = true, features = ["trace"] } opentelemetry_sdk = { workspace = true, features = ["rt-tokio", "rt-tokio-current-thread"] } -pyo3-asyncio = { workspace = true, features = ["tokio-runtime"] } +pyo3-asyncio = { workspace = true, features = ["tokio-runtime"], optional = true } serde = { workspace = true } thiserror = { workspace = true } tokio = { workspace = true, features = ["rt-multi-thread"] } @@ -31,6 +31,9 @@ tracing-subscriber = { workspace = true, features = ["env-filter", "fmt", "json" layer-otel-otlp = ["dep:opentelemetry-otlp", "dep:opentelemetry-proto", "dep:tonic"] layer-otel-otlp-file = ["dep:opentelemetry-stdout"] stubs = ["dep:handlebars"] +pyo3 = ["dep:pyo3", "dep:pyo3-asyncio"] +extension-module = ["pyo3", "pyo3/extension-module"] +default = ["extension-module"] [dev-dependencies] rstest = { workspace = true } diff --git a/crates/tracing-subscriber/src/lib.rs b/crates/tracing-subscriber/src/lib.rs index 130a915..45abbdf 100644 --- a/crates/tracing-subscriber/src/lib.rs +++ b/crates/tracing-subscriber/src/lib.rs @@ -62,9 +62,11 @@ //! //! # Features //! +//! * `pyo3` - enables the Python bindings for the tracing subscriber. This feature is enabled by default. +//! * `extension-module` - enables the Python extension module for the tracing subscriber. This feature is enabled by default. //! * `layer-otel-otlp-file` - exports trace data with `opentelemetry-stdout`. See `crate::layers::otel_otlp_file`. //! * `layer-otel-otlp` - exports trace data with `opentelemetry-otlp`. See `crate::layers::otel_otlp`. -//! * `stubs` - supports writing stub files in your Python source code from your Rust build scripts. See `crates::stubs` +//! * `stubs` - supports writing stub files in your Python source code from your Rust build scripts. See `crates::stubs`. This should only be used in build scripts with default features disabled. //! //! # Requirements and Limitations //! @@ -110,7 +112,8 @@ //! //! async main(): //! async with Tracing(): -//! # do stuff +//! +//! # do stuff //! pass //! //! @@ -121,22 +124,31 @@ //! # Related Crates //! //! * `pyo3-opentelemetry` - propagates `OpenTelemetry` contexts from Python into Rust. +#[cfg(feature = "pyo3")] use pyo3::{types::PyModule, PyResult, Python}; +#[cfg(feature = "pyo3")] use self::{ contextmanager::{CurrentThreadTracingConfig, GlobalTracingConfig, TracingContextManagerError}, export_process::{BatchConfig, SimpleConfig, TracingShutdownError, TracingStartError}, }; +#[cfg(feature = "pyo3")] pub use contextmanager::Tracing; +#[cfg(feature = "pyo3")] pub(crate) mod common; +#[cfg(feature = "pyo3")] mod contextmanager; +#[cfg(feature = "pyo3")] mod export_process; +#[cfg(feature = "pyo3")] pub(crate) mod layers; #[cfg(feature = "stubs")] pub mod stubs; +#[cfg(feature = "pyo3")] pub(crate) mod subscriber; +#[cfg(feature = "pyo3")] create_init_submodule! { classes: [ Tracing, @@ -152,6 +164,7 @@ create_init_submodule! { ], } +#[cfg(feature = "pyo3")] /// Add the tracing submodule to the given module. This will add the submodule to the `sys.modules` /// dictionary so that it can be imported from Python. /// diff --git a/examples/pyo3-opentelemetry-lib/Cargo.toml b/examples/pyo3-opentelemetry-lib/Cargo.toml index 835d42f..81fa8f9 100644 --- a/examples/pyo3-opentelemetry-lib/Cargo.toml +++ b/examples/pyo3-opentelemetry-lib/Cargo.toml @@ -31,6 +31,6 @@ tracing-subscriber = { version = "0.3.17", features = ["env-filter"], optional = [features] [build-dependencies] -pyo3-tracing-subscriber = { path = "../../crates/tracing-subscriber", features = ["layer-otel-otlp-file", "layer-otel-otlp", "stubs"] } +pyo3-tracing-subscriber = { path = "../../crates/tracing-subscriber", features = ["layer-otel-otlp-file", "layer-otel-otlp", "stubs"], default-features = false } pyo3-build-config.workspace = true diff --git a/examples/pyo3-opentelemetry-lib/Makefile.toml b/examples/pyo3-opentelemetry-lib/Makefile.toml index 34db01a..c013b38 100644 --- a/examples/pyo3-opentelemetry-lib/Makefile.toml +++ b/examples/pyo3-opentelemetry-lib/Makefile.toml @@ -6,8 +6,7 @@ dependencies = ["python-install-dependencies"] script = ''' poetry run maturin develop - poetry run black . - poetry run ruff . --fix + cargo make python-format ''' [tasks.python-format] @@ -18,7 +17,7 @@ ''' [tasks.python-check] - dependencies = ["python-build", "python-format"] + dependencies = ["python-build"] script = ''' poetry run black . --check poetry run ruff . @@ -27,7 +26,7 @@ ''' [tasks.python-test] - dependencies = ["python-build", "python-format"] + dependencies = ["python-build"] script = ''' mkdir -p pyo3_opentelemetry_lib/test/__artifacts__ poetry run pytest . From 724573284e245635bcaa4abc05f39e3a2a764537 Mon Sep 17 00:00:00 2001 From: Eric Hulburd Date: Tue, 4 Jun 2024 11:05:52 -0700 Subject: [PATCH 13/21] ci: publish dev releases --- .github/workflows/prerelease.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/prerelease.yml b/.github/workflows/prerelease.yml index 3e8f321..4383d25 100644 --- a/.github/workflows/prerelease.yml +++ b/.github/workflows/prerelease.yml @@ -24,5 +24,5 @@ jobs: - name: Prepare Prerelease run: | git pull origin --tags - knope release --prerelease-label=rc --verbose + knope release --prerelease-label=dev --verbose From 573c2fb87d6ed7c46dab0bf9662e64733ad1ebb6 Mon Sep 17 00:00:00 2001 From: Eric Hulburd Date: Tue, 4 Jun 2024 11:06:51 -0700 Subject: [PATCH 14/21] chore: prepare new release(s) --- crates/opentelemetry-macros/CHANGELOG.md | 12 ++++++++++++ crates/opentelemetry-macros/Cargo.toml | 2 +- crates/opentelemetry/CHANGELOG.md | 12 ++++++++++++ crates/opentelemetry/Cargo.toml | 4 ++-- crates/tracing-subscriber/CHANGELOG.md | 12 ++++++++++++ crates/tracing-subscriber/Cargo.toml | 2 +- 6 files changed, 40 insertions(+), 4 deletions(-) diff --git a/crates/opentelemetry-macros/CHANGELOG.md b/crates/opentelemetry-macros/CHANGELOG.md index 843c666..55eea6d 100644 --- a/crates/opentelemetry-macros/CHANGELOG.md +++ b/crates/opentelemetry-macros/CHANGELOG.md @@ -1,3 +1,15 @@ +## 0.3.2-dev.1 (2024-06-04) + +### Fixes + +#### use tls tonic features (#18) + +#### update opentelemetry dependencies + +#### drop batch stdout support + +#### use explicit extension-module features + ## 0.3.2-dev.0 (2024-05-31) ### Fixes diff --git a/crates/opentelemetry-macros/Cargo.toml b/crates/opentelemetry-macros/Cargo.toml index 1563382..0ebd790 100644 --- a/crates/opentelemetry-macros/Cargo.toml +++ b/crates/opentelemetry-macros/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pyo3-opentelemetry-macros" -version = "0.3.2-dev.0" +version = "0.3.2-dev.1" edition = "2021" categories = ["Python bindings", "OpenTelemetry", "Tracing", "Macros"] keywords = ["python", "pyo3", "opentelemetry", "tracing"] diff --git a/crates/opentelemetry/CHANGELOG.md b/crates/opentelemetry/CHANGELOG.md index 2528c0e..92667d4 100644 --- a/crates/opentelemetry/CHANGELOG.md +++ b/crates/opentelemetry/CHANGELOG.md @@ -1,3 +1,15 @@ +## 0.3.2-dev.1 (2024-06-04) + +### Fixes + +#### use tls tonic features (#18) + +#### update opentelemetry dependencies + +#### drop batch stdout support + +#### use explicit extension-module features + ## 0.3.2-dev.0 (2024-05-31) ### Fixes diff --git a/crates/opentelemetry/Cargo.toml b/crates/opentelemetry/Cargo.toml index a1ee826..963ce5b 100644 --- a/crates/opentelemetry/Cargo.toml +++ b/crates/opentelemetry/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pyo3-opentelemetry" -version = "0.3.2-dev.0" +version = "0.3.2-dev.1" edition = "2021" categories = ["Python bindings", "OpenTelemetry", "Tracing", "Macros"] keywords = ["python", "pyo3", "opentelemetry", "tracing"] @@ -14,7 +14,7 @@ rust-version = "1.65.0" opentelemetry = { workspace = true } opentelemetry_sdk = { workspace = true } pyo3 = { workspace = true } -pyo3-opentelemetry-macros = { path = "../opentelemetry-macros", version = "0.3.2-dev.0" } +pyo3-opentelemetry-macros = { path = "../opentelemetry-macros", version = "0.3.2-dev.1" } [dev-dependencies] futures-util = "0.3.28" diff --git a/crates/tracing-subscriber/CHANGELOG.md b/crates/tracing-subscriber/CHANGELOG.md index ecd1c60..c1695cf 100644 --- a/crates/tracing-subscriber/CHANGELOG.md +++ b/crates/tracing-subscriber/CHANGELOG.md @@ -1,3 +1,15 @@ +## 0.1.2-dev.1 (2024-06-04) + +### Fixes + +#### use tls tonic features (#18) + +#### update opentelemetry dependencies + +#### drop batch stdout support + +#### use explicit extension-module features + ## 0.1.2-dev.0 (2024-05-31) ### Fixes diff --git a/crates/tracing-subscriber/Cargo.toml b/crates/tracing-subscriber/Cargo.toml index a521168..ab25d4f 100644 --- a/crates/tracing-subscriber/Cargo.toml +++ b/crates/tracing-subscriber/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "pyo3-tracing-subscriber" -version = "0.1.2-dev.0" +version = "0.1.2-dev.1" edition = "2021" categories = ["Python bindings", "OpenTelemetry", "Tracing"] keywords = ["python", "pyo3", "opentelemetry", "tracing"] From 51265db7481d31d5ce8de740b90edec7a75b6082 Mon Sep 17 00:00:00 2001 From: Kyle J Strand Date: Thu, 3 Oct 2024 14:07:04 -0600 Subject: [PATCH 15/21] update all OTEL dependencies to 0.25.0 (latest supported by tracing-opentelemetry) --- Cargo.lock | 313 ++++++++++++--------- Cargo.toml | 14 +- crates/tracing-subscriber/Cargo.toml | 10 +- examples/pyo3-opentelemetry-lib/Cargo.toml | 4 +- 4 files changed, 203 insertions(+), 138 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index cb4f3bd..f1e48ec 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -65,6 +65,12 @@ dependencies = [ "syn 2.0.66", ] +[[package]] +name = "atomic-waker" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" + [[package]] name = "autocfg" version = "1.3.0" @@ -73,18 +79,17 @@ checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "axum" -version = "0.6.20" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b829e4e32b91e643de6eafe82b1d90675f5874230191a4ffbc1b336dec4d6bf" +checksum = "3a6c9af12842a67734c9a2e355436e5d03b22383ed60cf13cd0c18fbfe3dcbcf" dependencies = [ "async-trait", "axum-core", - "bitflags 1.3.2", "bytes", "futures-util", "http", "http-body", - "hyper", + "http-body-util", "itoa", "matchit", "memchr", @@ -101,17 +106,20 @@ dependencies = [ [[package]] name = "axum-core" -version = "0.3.4" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "759fa577a247914fd3f7f76d62972792636412fbfd634cd452f6a385a74d2d2c" +checksum = "09f2bd6146b97ae3359fa0cc6d6b376d9539582c7b4220f041a33ec24c226199" dependencies = [ "async-trait", "bytes", "futures-util", "http", "http-body", + "http-body-util", "mime", + "pin-project-lite", "rustversion", + "sync_wrapper", "tower-layer", "tower-service", ] @@ -131,24 +139,12 @@ dependencies = [ "rustc-demangle", ] -[[package]] -name = "base64" -version = "0.21.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" - [[package]] name = "base64" version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" -[[package]] -name = "bitflags" -version = "1.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" - [[package]] name = "bitflags" version = "2.5.0" @@ -172,9 +168,9 @@ checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" [[package]] name = "bytes" -version = "1.6.0" +version = "1.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "514de17de45fdb8dc022b1a7975556c53c86f9f0aa5f534b98977b171857c2c9" +checksum = "428d9aa8fbc0670b7b8d6030a7fadd0f86151cae55e4dbbece15f3780a3dfaf3" [[package]] name = "cc" @@ -390,15 +386,15 @@ checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" [[package]] name = "h2" -version = "0.3.26" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81fe527a889e1532da5c525686d96d4c2e74cdd345badf8dfef9f6b39dd5f5e8" +checksum = "524e8ac6999421f49a846c2d4411f337e53497d8ec55d67753beffa43c5d9205" dependencies = [ + "atomic-waker", "bytes", "fnv", "futures-core", "futures-sink", - "futures-util", "http", "indexmap 2.2.6", "slab", @@ -445,11 +441,17 @@ version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" + [[package]] name = "http" -version = "0.2.12" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" +checksum = "21b9ddb458710bc376481b842f5da65cdf31522de232c1ca8146abce2a358258" dependencies = [ "bytes", "fnv", @@ -458,12 +460,24 @@ dependencies = [ [[package]] name = "http-body" -version = "0.4.6" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" +checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" dependencies = [ "bytes", "http", +] + +[[package]] +name = "http-body-util" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "793429d76616a256bcb62c2a2ec2bed781c8307e797e2598c50010f2bee2544f" +dependencies = [ + "bytes", + "futures-util", + "http", + "http-body", "pin-project-lite", ] @@ -481,13 +495,12 @@ checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" [[package]] name = "hyper" -version = "0.14.28" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf96e135eb83a2a8ddf766e426a841d8ddd7449d5f00d34ea02b41d2f19eef80" +checksum = "50dfd22e0e76d0f662d429a5f80fcaf3855009297eab6a0a9f8543834744ba05" dependencies = [ "bytes", "futures-channel", - "futures-core", "futures-util", "h2", "http", @@ -496,23 +509,41 @@ dependencies = [ "httpdate", "itoa", "pin-project-lite", - "socket2", + "smallvec", "tokio", - "tower-service", - "tracing", "want", ] [[package]] name = "hyper-timeout" -version = "0.4.1" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbb958482e8c7be4bc3cf272a766a2b0bf1a6755e7a6ae777f017a31d11b13b1" +checksum = "3203a961e5c83b6f5498933e78b6b263e208c197b63e9c6c53cc82ffd3f63793" dependencies = [ + "hyper", + "hyper-util", + "pin-project-lite", + "tokio", + "tower-service", +] + +[[package]] +name = "hyper-util" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41296eb09f183ac68eec06e03cdbea2e759633d4067b2f6552fc2e009bcad08b" +dependencies = [ + "bytes", + "futures-channel", + "futures-util", + "http", + "http-body", "hyper", "pin-project-lite", + "socket2", "tokio", - "tokio-io-timeout", + "tower-service", + "tracing", ] [[package]] @@ -573,9 +604,9 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] name = "libc" -version = "0.2.155" +version = "0.2.159" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c" +checksum = "561d97a539a36e26a9a5fad1ea11a3039a67714694aaa379433e580854bc3dc5" [[package]] name = "lock_api" @@ -701,9 +732,23 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" [[package]] name = "opentelemetry" -version = "0.23.0" +version = "0.25.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "803801d3d3b71cd026851a53f974ea03df3d179cb758b260136a6c9e22e196af" +dependencies = [ + "futures-core", + "futures-sink", + "js-sys", + "once_cell", + "pin-project-lite", + "thiserror", +] + +[[package]] +name = "opentelemetry" +version = "0.26.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b69a91d4893e713e06f724597ad630f1fa76057a5e1026c0ca67054a9032a76" +checksum = "570074cc999d1a58184080966e5bd3bf3a9a4af650c3b05047c2621e7405cd17" dependencies = [ "futures-core", "futures-sink", @@ -715,16 +760,16 @@ dependencies = [ [[package]] name = "opentelemetry-otlp" -version = "0.16.0" +version = "0.25.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a94c69209c05319cdf7460c6d4c055ed102be242a0a6245835d7bc42c6ec7f54" +checksum = "596b1719b3cab83addb20bcbffdf21575279d9436d9ccccfe651a3bf0ab5ab06" dependencies = [ "async-trait", "futures-core", "http", - "opentelemetry", + "opentelemetry 0.25.0", "opentelemetry-proto", - "opentelemetry_sdk", + "opentelemetry_sdk 0.25.0", "prost", "thiserror", "tokio", @@ -733,27 +778,29 @@ dependencies = [ [[package]] name = "opentelemetry-proto" -version = "0.6.0" +version = "0.25.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "984806e6cf27f2b49282e2a05e288f30594f3dbc74eb7a6e99422bc48ed78162" +checksum = "2c43620e8f93359eb7e627a3b16ee92d8585774986f24f2ab010817426c5ce61" dependencies = [ - "opentelemetry", - "opentelemetry_sdk", + "hex", + "opentelemetry 0.25.0", + "opentelemetry_sdk 0.25.0", "prost", + "serde", "tonic", ] [[package]] name = "opentelemetry-stdout" -version = "0.4.0" +version = "0.25.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6d080bf06af02b738feb2e6830cf72c30b76ca18b40f555cdf1b53e7b491bfe" +checksum = "f76e2ded3f6e5d8b51e7aefc267022e7586975c00763aab70f807ad2cc156e94" dependencies = [ "async-trait", "chrono", "futures-util", - "opentelemetry", - "opentelemetry_sdk", + "opentelemetry 0.25.0", + "opentelemetry_sdk 0.25.0", "ordered-float", "serde", "serde_json", @@ -762,19 +809,17 @@ dependencies = [ [[package]] name = "opentelemetry_sdk" -version = "0.23.0" +version = "0.25.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae312d58eaa90a82d2e627fd86e075cf5230b3f11794e2ed74199ebbe572d4fd" +checksum = "e0da0d6b47a3dbc6e9c9e36a0520e25cf943e046843818faaa3f87365a548c82" dependencies = [ "async-trait", "futures-channel", "futures-executor", "futures-util", "glob", - "lazy_static", "once_cell", - "opentelemetry", - "ordered-float", + "opentelemetry 0.25.0", "percent-encoding", "rand", "serde_json", @@ -783,6 +828,25 @@ dependencies = [ "tokio-stream", ] +[[package]] +name = "opentelemetry_sdk" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2c627d9f4c9cdc1f21a29ee4bfbd6028fcb8bcf2a857b43f3abdf72c9c862f3" +dependencies = [ + "async-trait", + "futures-channel", + "futures-executor", + "futures-util", + "glob", + "once_cell", + "opentelemetry 0.26.0", + "percent-encoding", + "rand", + "serde_json", + "thiserror", +] + [[package]] name = "ordered-float" version = "4.2.0" @@ -818,7 +882,7 @@ dependencies = [ "libc", "redox_syscall", "smallvec", - "windows-targets 0.52.5", + "windows-targets 0.52.6", ] [[package]] @@ -927,9 +991,9 @@ dependencies = [ [[package]] name = "prost" -version = "0.12.6" +version = "0.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "deb1435c188b76130da55f17a466d252ff7b1418b2ad3e037d127b94e3411f29" +checksum = "7b0487d90e047de87f984913713b85c601c05609aad5b0df4b4573fbf69aa13f" dependencies = [ "bytes", "prost-derive", @@ -937,9 +1001,9 @@ dependencies = [ [[package]] name = "prost-derive" -version = "0.12.6" +version = "0.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81bddcdb20abf9501610992b6759a4c888aef7d1a7247ef75e2404275ac24af1" +checksum = "e9552f850d5f0964a4e4d0bf306459ac29323ddfbae05e35a7c0d35cb0803cc5" dependencies = [ "anyhow", "itertools", @@ -1026,12 +1090,12 @@ dependencies = [ [[package]] name = "pyo3-opentelemetry" -version = "0.3.2-dev.0" +version = "0.3.2-dev.1" dependencies = [ "futures-util", "once_cell", - "opentelemetry", - "opentelemetry_sdk", + "opentelemetry 0.25.0", + "opentelemetry_sdk 0.25.0", "pyo3", "pyo3-opentelemetry-macros", "tokio", @@ -1044,8 +1108,8 @@ dependencies = [ name = "pyo3-opentelemetry-lib" version = "0.1.0" dependencies = [ - "opentelemetry", - "opentelemetry_sdk", + "opentelemetry 0.26.0", + "opentelemetry_sdk 0.26.0", "pyo3", "pyo3-asyncio", "pyo3-build-config", @@ -1058,7 +1122,7 @@ dependencies = [ [[package]] name = "pyo3-opentelemetry-macros" -version = "0.3.2-dev.0" +version = "0.3.2-dev.1" dependencies = [ "proc-macro2", "quote", @@ -1068,14 +1132,14 @@ dependencies = [ [[package]] name = "pyo3-tracing-subscriber" -version = "0.1.2-dev.0" +version = "0.1.2-dev.1" dependencies = [ "handlebars", - "opentelemetry", + "opentelemetry 0.25.0", "opentelemetry-otlp", "opentelemetry-proto", "opentelemetry-stdout", - "opentelemetry_sdk", + "opentelemetry_sdk 0.25.0", "pyo3", "pyo3-asyncio", "rstest", @@ -1134,7 +1198,7 @@ version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "469052894dcb553421e483e4209ee581a45100d31b4018de03e5a7ad86374a7e" dependencies = [ - "bitflags 2.5.0", + "bitflags", ] [[package]] @@ -1239,11 +1303,12 @@ dependencies = [ [[package]] name = "rustls" -version = "0.22.4" +version = "0.23.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf4ef73721ac7bcd79b2b315da7779d8fc09718c6b3d2d1b2d94850eb8c18432" +checksum = "05cff451f60db80f490f3c182b77c35260baace73209e9cdbbe526bfe3a4d402" dependencies = [ "log", + "once_cell", "ring", "rustls-pki-types", "rustls-webpki", @@ -1253,9 +1318,9 @@ dependencies = [ [[package]] name = "rustls-native-certs" -version = "0.7.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f1fb85efa936c42c6d5fc28d2629bb51e4b2f4b8a5211e297d599cc5a093792" +checksum = "fcaf18a4f2be7326cd874a5fa579fae794320a0f388d365dca7e480e55f83f8a" dependencies = [ "openssl-probe", "rustls-pemfile", @@ -1270,7 +1335,7 @@ version = "2.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "29993a25686778eb88d4189742cd713c9bce943bc54251a33509dc63cbacf73d" dependencies = [ - "base64 0.22.1", + "base64", "rustls-pki-types", ] @@ -1324,7 +1389,7 @@ version = "2.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c627723fd09706bacdb5cf41499e95098555af3c3c29d014dc3c458ef6be11c0" dependencies = [ - "bitflags 2.5.0", + "bitflags", "core-foundation", "core-foundation-sys", "libc", @@ -1459,9 +1524,9 @@ dependencies = [ [[package]] name = "sync_wrapper" -version = "0.1.2" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" +checksum = "a7065abeca94b6a8a577f9bd45aa0867a2238b74e8eb67cf10d492bc39351394" [[package]] name = "target-lexicon" @@ -1517,16 +1582,6 @@ dependencies = [ "windows-sys 0.48.0", ] -[[package]] -name = "tokio-io-timeout" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30b74022ada614a1b4834de765f9bb43877f910cc8ce4be40e89042c9223a8bf" -dependencies = [ - "pin-project-lite", - "tokio", -] - [[package]] name = "tokio-macros" version = "2.3.0" @@ -1540,9 +1595,9 @@ dependencies = [ [[package]] name = "tokio-rustls" -version = "0.25.0" +version = "0.26.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "775e0c0f0adb3a2f22a00c4745d728b479985fc15ee7ca6a2608388c5569860f" +checksum = "0c7bc40d0e5a97695bb96e27995cd3a08538541b0a846f65bba7a359f36700d4" dependencies = [ "rustls", "rustls-pki-types", @@ -1551,9 +1606,9 @@ dependencies = [ [[package]] name = "tokio-stream" -version = "0.1.15" +version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "267ac89e0bec6e691e5813911606935d77c476ff49024f98abcea3e7b15e37af" +checksum = "4f4e6ce100d0eb49a2734f8c0812bcd324cf357d21810932c5df6b96ef2b86f1" dependencies = [ "futures-core", "pin-project-lite", @@ -1575,26 +1630,28 @@ dependencies = [ [[package]] name = "tonic" -version = "0.11.0" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76c4eb7a4e9ef9d4763600161f12f5070b92a578e1b634db88a6887844c91a13" +checksum = "877c5b330756d856ffcc4553ab34a5684481ade925ecc54bcd1bf02b1d0d4d52" dependencies = [ "async-stream", "async-trait", "axum", - "base64 0.21.7", + "base64", "bytes", "h2", "http", "http-body", + "http-body-util", "hyper", "hyper-timeout", + "hyper-util", "percent-encoding", "pin-project", "prost", "rustls-native-certs", "rustls-pemfile", - "rustls-pki-types", + "socket2", "tokio", "tokio-rustls", "tokio-stream", @@ -1682,14 +1739,14 @@ dependencies = [ [[package]] name = "tracing-opentelemetry" -version = "0.24.0" +version = "0.26.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f68803492bf28ab40aeccaecc7021096bd256baf7ca77c3d425d89b35a7be4e4" +checksum = "5eabc56d23707ad55ba2a0750fc24767125d5a0f51993ba41ad2c441cc7b8dea" dependencies = [ "js-sys", "once_cell", - "opentelemetry", - "opentelemetry_sdk", + "opentelemetry 0.25.0", + "opentelemetry_sdk 0.25.0", "smallvec", "tracing", "tracing-core", @@ -1893,7 +1950,7 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" dependencies = [ - "windows-targets 0.52.5", + "windows-targets 0.52.6", ] [[package]] @@ -1913,18 +1970,18 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f0713a46559409d202e70e28227288446bf7841d3211583a4b53e3f6d96e7eb" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" dependencies = [ - "windows_aarch64_gnullvm 0.52.5", - "windows_aarch64_msvc 0.52.5", - "windows_i686_gnu 0.52.5", + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", "windows_i686_gnullvm", - "windows_i686_msvc 0.52.5", - "windows_x86_64_gnu 0.52.5", - "windows_x86_64_gnullvm 0.52.5", - "windows_x86_64_msvc 0.52.5", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", ] [[package]] @@ -1935,9 +1992,9 @@ checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" [[package]] name = "windows_aarch64_gnullvm" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7088eed71e8b8dda258ecc8bac5fb1153c5cffaf2578fc8ff5d61e23578d3263" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" [[package]] name = "windows_aarch64_msvc" @@ -1947,9 +2004,9 @@ checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" [[package]] name = "windows_aarch64_msvc" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9985fd1504e250c615ca5f281c3f7a6da76213ebd5ccc9561496568a2752afb6" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" [[package]] name = "windows_i686_gnu" @@ -1959,15 +2016,15 @@ checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" [[package]] name = "windows_i686_gnu" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88ba073cf16d5372720ec942a8ccbf61626074c6d4dd2e745299726ce8b89670" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" [[package]] name = "windows_i686_gnullvm" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87f4261229030a858f36b459e748ae97545d6f1ec60e5e0d6a3d32e0dc232ee9" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" [[package]] name = "windows_i686_msvc" @@ -1977,9 +2034,9 @@ checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" [[package]] name = "windows_i686_msvc" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db3c2bf3d13d5b658be73463284eaf12830ac9a26a90c717b7f771dfe97487bf" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" [[package]] name = "windows_x86_64_gnu" @@ -1989,9 +2046,9 @@ checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" [[package]] name = "windows_x86_64_gnu" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e4246f76bdeff09eb48875a0fd3e2af6aada79d409d33011886d3e1581517d9" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" [[package]] name = "windows_x86_64_gnullvm" @@ -2001,9 +2058,9 @@ checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" [[package]] name = "windows_x86_64_gnullvm" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "852298e482cd67c356ddd9570386e2862b5673c85bd5f88df9ab6802b334c596" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" [[package]] name = "windows_x86_64_msvc" @@ -2013,9 +2070,9 @@ checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" [[package]] name = "windows_x86_64_msvc" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bec47e5bfd1bff0eeaf6d8b485cc1074891a197ab4225d504cb7a1ab88b02bf0" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] name = "zeroize" diff --git a/Cargo.toml b/Cargo.toml index 38aa1e7..8c1bccc 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -6,14 +6,20 @@ resolver = "2" [workspace.dependencies] thiserror = "1.0.57" serde = { version = "1.0.145", features = ["derive"] } -opentelemetry = { version = "0.23.0" } -opentelemetry_sdk = { version = "0.23.0" } +# All OTEL packages must have the same version number. +# When updating the OTEL version, be sure to update these optional dependencies in `tracing-subscriber` as well: +# * opentelemetry-otlp +# * opentelemetry-proto +# * opentelemetry-stdout +opentelemetry = "0.25.0" +opentelemetry_sdk = "0.25.0" pyo3 = { version = "0.20.0", features = ["macros"] } pyo3-asyncio = { version = "0.20.0", features = ["tokio-runtime"] } pyo3-build-config = "0.20.0" rstest = "0.17.0" tokio = { version = "1.36.0", features = [] } tracing = { version = "0.1.37", features = ["log"] } -tracing-opentelemetry = "0.24.0" +# Despite how close the version numbers are, this package's release numbers *do +# not* match the OTEL SDK version that it requires. +tracing-opentelemetry = "0.26.0" tracing-subscriber = "0.3.17" - diff --git a/crates/tracing-subscriber/Cargo.toml b/crates/tracing-subscriber/Cargo.toml index ab25d4f..dffa956 100644 --- a/crates/tracing-subscriber/Cargo.toml +++ b/crates/tracing-subscriber/Cargo.toml @@ -14,15 +14,17 @@ rust-version = "1.67.0" handlebars = { version = "4.4.0", optional = true } pyo3 = { workspace = true, optional = true } opentelemetry = { workspace = true } -opentelemetry-otlp = { version = "0.16.0", features = ["grpc-tonic", "trace", "tls-roots"], optional = true } -opentelemetry-proto = { version = "0.6.0", optional = true, features = ["tonic"] } -opentelemetry-stdout = { version = "0.4.0", optional = true, features = ["trace"] } +# These packages *MUST* be kept in sync with the OTEL package versions; but +# since they are optional, they cannot be workspace dependencies. +opentelemetry-otlp = { version = "0.25.0", features = ["grpc-tonic", "trace", "tls-roots"], optional = true } +opentelemetry-proto = { version = "0.25.0", optional = true, features = ["tonic"] } +opentelemetry-stdout = { version = "0.25.0", optional = true, features = ["trace"] } opentelemetry_sdk = { workspace = true, features = ["rt-tokio", "rt-tokio-current-thread"] } pyo3-asyncio = { workspace = true, features = ["tokio-runtime"], optional = true } serde = { workspace = true } thiserror = { workspace = true } tokio = { workspace = true, features = ["rt-multi-thread"] } -tonic = { version = "0.11.0", features = ["tls", "tls-roots"], optional = true } +tonic = { version = "0.12.3", features = ["tls", "tls-roots"], optional = true } tracing = { workspace = true } tracing-opentelemetry = { workspace = true } tracing-subscriber = { workspace = true, features = ["env-filter", "fmt", "json"] } diff --git a/examples/pyo3-opentelemetry-lib/Cargo.toml b/examples/pyo3-opentelemetry-lib/Cargo.toml index 81fa8f9..2925e72 100644 --- a/examples/pyo3-opentelemetry-lib/Cargo.toml +++ b/examples/pyo3-opentelemetry-lib/Cargo.toml @@ -18,8 +18,8 @@ name = "pyo3_opentelemetry_lib" crate-type = ["cdylib", "rlib"] [dependencies] -opentelemetry = "0.23.0" -opentelemetry_sdk = "0.23.0" +opentelemetry = "0.26.0" +opentelemetry_sdk = "0.26.0" pyo3 = { workspace = true } pyo3-asyncio = { workspace = true, features = ["tokio", "tokio-runtime"] } pyo3-opentelemetry = { path = "../../crates/opentelemetry" } From 91f291eca7638120b1c43f759d19eeb16f0ed26e Mon Sep 17 00:00:00 2001 From: Kyle J Strand Date: Thu, 3 Oct 2024 15:04:36 -0600 Subject: [PATCH 16/21] clippy fixes --- crates/opentelemetry-macros/src/lib.rs | 1 - crates/opentelemetry/src/lib.rs | 1 - crates/tracing-subscriber/src/lib.rs | 1 - crates/tracing-subscriber/src/stubs.rs | 1 - .../_tracing_subscriber/__init__.py | 1 + .../_tracing_subscriber/layers/__init__.py | 2 ++ .../_tracing_subscriber/layers/__init__.pyi | 19 +++++++++---------- .../layers/file/__init__.py | 3 +++ .../layers/file/__init__.pyi | 1 + .../layers/otel_otlp/__init__.py | 2 ++ .../layers/otel_otlp/__init__.pyi | 9 +++++---- .../layers/otel_otlp_file/__init__.py | 2 ++ .../layers/otel_otlp_file/__init__.pyi | 1 + .../subscriber/__init__.py | 2 ++ .../subscriber/__init__.pyi | 1 + examples/pyo3-opentelemetry-lib/src/lib.rs | 1 - 16 files changed, 29 insertions(+), 19 deletions(-) diff --git a/crates/opentelemetry-macros/src/lib.rs b/crates/opentelemetry-macros/src/lib.rs index 2dbf699..2cf1f5f 100644 --- a/crates/opentelemetry-macros/src/lib.rs +++ b/crates/opentelemetry-macros/src/lib.rs @@ -37,7 +37,6 @@ overflowing_literals, path_statements, patterns_in_fns_without_body, - pointer_structural_match, private_interfaces, private_bounds, semicolon_in_expressions_from_macros, diff --git a/crates/opentelemetry/src/lib.rs b/crates/opentelemetry/src/lib.rs index 196444b..ce663c1 100644 --- a/crates/opentelemetry/src/lib.rs +++ b/crates/opentelemetry/src/lib.rs @@ -37,7 +37,6 @@ overflowing_literals, path_statements, patterns_in_fns_without_body, - pointer_structural_match, private_interfaces, private_bounds, semicolon_in_expressions_from_macros, diff --git a/crates/tracing-subscriber/src/lib.rs b/crates/tracing-subscriber/src/lib.rs index 45abbdf..059c3ba 100644 --- a/crates/tracing-subscriber/src/lib.rs +++ b/crates/tracing-subscriber/src/lib.rs @@ -37,7 +37,6 @@ overflowing_literals, path_statements, patterns_in_fns_without_body, - pointer_structural_match, private_interfaces, private_bounds, semicolon_in_expressions_from_macros, diff --git a/crates/tracing-subscriber/src/stubs.rs b/crates/tracing-subscriber/src/stubs.rs index ffec339..e307908 100644 --- a/crates/tracing-subscriber/src/stubs.rs +++ b/crates/tracing-subscriber/src/stubs.rs @@ -37,7 +37,6 @@ overflowing_literals, path_statements, patterns_in_fns_without_body, - pointer_structural_match, semicolon_in_expressions_from_macros, trivial_casts, trivial_numeric_casts, diff --git a/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/__init__.py b/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/__init__.py index 5b14109..0993fc1 100644 --- a/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/__init__.py +++ b/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/__init__.py @@ -12,5 +12,6 @@ from pyo3_opentelemetry_lib import _tracing_subscriber + __doc__ = _tracing_subscriber.__doc__ __all__ = getattr(_tracing_subscriber, "__all__", []) diff --git a/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/layers/__init__.py b/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/layers/__init__.py index a4dbb1c..a2c6030 100644 --- a/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/layers/__init__.py +++ b/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/layers/__init__.py @@ -12,5 +12,7 @@ from pyo3_opentelemetry_lib._tracing_subscriber import layers + __doc__ = layers.__doc__ __all__ = getattr(layers, "__all__", []) + diff --git a/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/layers/__init__.pyi b/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/layers/__init__.pyi index 50d94c1..741a427 100644 --- a/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/layers/__init__.pyi +++ b/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/layers/__init__.pyi @@ -11,21 +11,20 @@ # ***************************************************************************** from __future__ import annotations - from typing import TYPE_CHECKING -from . import file as file -from . import otel_otlp as otel_otlp +from . import file as file from . import otel_otlp_file as otel_otlp_file +from . import otel_otlp as otel_otlp if TYPE_CHECKING: - from typing import Union + from typing import Union - Config = Union[ - file.Config, - otel_otlp_file.Config, - otel_otlp.Config, - ] - """ + Config = Union[ + file.Config, + otel_otlp_file.Config, + otel_otlp.Config, + ] + """ One of the supported layer configurations that may be set on the subscriber configuration. """ diff --git a/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/layers/file/__init__.py b/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/layers/file/__init__.py index ea3053c..365f089 100644 --- a/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/layers/file/__init__.py +++ b/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/layers/file/__init__.py @@ -12,5 +12,8 @@ from pyo3_opentelemetry_lib._tracing_subscriber.layers import file + __doc__ = file.__doc__ __all__ = getattr(file, "__all__", []) + + diff --git a/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/layers/file/__init__.pyi b/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/layers/file/__init__.pyi index 8054827..7caa5c2 100644 --- a/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/layers/file/__init__.pyi +++ b/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/layers/file/__init__.pyi @@ -39,3 +39,4 @@ class Config: :param json: Whether or not to format the output as JSON. Defaults to `True`. """ ... + diff --git a/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/layers/otel_otlp/__init__.py b/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/layers/otel_otlp/__init__.py index efccc22..cd94b23 100644 --- a/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/layers/otel_otlp/__init__.py +++ b/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/layers/otel_otlp/__init__.py @@ -12,5 +12,7 @@ from pyo3_opentelemetry_lib._tracing_subscriber.layers import otel_otlp + __doc__ = otel_otlp.__doc__ __all__ = getattr(otel_otlp, "__all__", []) + diff --git a/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/layers/otel_otlp/__init__.pyi b/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/layers/otel_otlp/__init__.pyi index 6accc02..5dde690 100644 --- a/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/layers/otel_otlp/__init__.pyi +++ b/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/layers/otel_otlp/__init__.pyi @@ -11,8 +11,7 @@ # ***************************************************************************** from __future__ import annotations - -from typing import TYPE_CHECKING, Dict, Optional, final +from typing import Dict, Optional, TYPE_CHECKING, final @final class SpanLimits: @@ -48,6 +47,8 @@ class Resource: schema_url: Optional[str] = None, ) -> "Resource": ... + + @final class Config: """ @@ -97,14 +98,14 @@ class Config: ... if TYPE_CHECKING: - from typing import List, Union + from typing import List, Union ResourceValueArray = Union[List[bool], List[int], List[float], List[str]] """ An array of `ResourceValue`s. This array is homogenous, so all values must be of the same type. """ - ResourceValue = Union[bool, int, float, str, ResourceValueArray] + ResourceValue= Union[bool, int, float, str, ResourceValueArray] """ A value that can be added to a `Resource`. """ diff --git a/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/layers/otel_otlp_file/__init__.py b/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/layers/otel_otlp_file/__init__.py index e28b7c3..db105d0 100644 --- a/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/layers/otel_otlp_file/__init__.py +++ b/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/layers/otel_otlp_file/__init__.py @@ -12,5 +12,7 @@ from pyo3_opentelemetry_lib._tracing_subscriber.layers import otel_otlp_file + __doc__ = otel_otlp_file.__doc__ __all__ = getattr(otel_otlp_file, "__all__", []) + diff --git a/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/layers/otel_otlp_file/__init__.pyi b/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/layers/otel_otlp_file/__init__.pyi index 31e2f49..613126b 100644 --- a/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/layers/otel_otlp_file/__init__.pyi +++ b/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/layers/otel_otlp_file/__init__.pyi @@ -32,3 +32,4 @@ class Config: and then `RUST_LOG` environment variable. If all of these values are empty, no spans will be exported. """ ... + diff --git a/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/subscriber/__init__.py b/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/subscriber/__init__.py index 64d80de..5737e29 100644 --- a/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/subscriber/__init__.py +++ b/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/subscriber/__init__.py @@ -12,5 +12,7 @@ from pyo3_opentelemetry_lib._tracing_subscriber import subscriber + __doc__ = subscriber.__doc__ __all__ = getattr(subscriber, "__all__", []) + diff --git a/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/subscriber/__init__.pyi b/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/subscriber/__init__.pyi index e0894d0..548de0c 100644 --- a/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/subscriber/__init__.pyi +++ b/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/subscriber/__init__.pyi @@ -22,3 +22,4 @@ class Config: """ def __new__(cls, *, layer: layers.Config) -> "Config": ... + diff --git a/examples/pyo3-opentelemetry-lib/src/lib.rs b/examples/pyo3-opentelemetry-lib/src/lib.rs index 90f4f46..f77a193 100644 --- a/examples/pyo3-opentelemetry-lib/src/lib.rs +++ b/examples/pyo3-opentelemetry-lib/src/lib.rs @@ -37,7 +37,6 @@ overflowing_literals, path_statements, patterns_in_fns_without_body, - pointer_structural_match, private_interfaces, private_bounds, semicolon_in_expressions_from_macros, From cc021df4b6ef2e3b16b6ea13c4eeddfe37e76a6d Mon Sep 17 00:00:00 2001 From: Kyle J Strand Date: Thu, 3 Oct 2024 15:09:03 -0600 Subject: [PATCH 17/21] remove release-candidate sections from changelogs --- crates/opentelemetry-macros/CHANGELOG.md | 44 --------------------- crates/opentelemetry/CHANGELOG.md | 50 ------------------------ crates/tracing-subscriber/CHANGELOG.md | 44 --------------------- knope.toml | 6 +++ 4 files changed, 6 insertions(+), 138 deletions(-) diff --git a/crates/opentelemetry-macros/CHANGELOG.md b/crates/opentelemetry-macros/CHANGELOG.md index 55eea6d..3718682 100644 --- a/crates/opentelemetry-macros/CHANGELOG.md +++ b/crates/opentelemetry-macros/CHANGELOG.md @@ -1,53 +1,9 @@ -## 0.3.2-dev.1 (2024-06-04) - -### Fixes - -#### use tls tonic features (#18) - -#### update opentelemetry dependencies - -#### drop batch stdout support - -#### use explicit extension-module features - -## 0.3.2-dev.0 (2024-05-31) - -### Fixes - -#### use tls tonic features (#18) - -#### update opentelemetry dependencies - -#### drop batch stdout support - -## 0.3.2-rc.0 (2024-05-31) - -### Fixes - -#### use tls tonic features (#18) - -#### update opentelemetry dependencies - -#### drop batch stdout support - ## 0.3.1 (2023-12-18) ### Fixes #### ci release flow (#11) -## 0.3.1-rc.1 (2023-12-18) - -### Fixes - -#### ci release flow - -## 0.3.1-rc.0 (2023-12-18) - -### Fixes - -#### ci release flow - ## 0.3.0 (2023-12-16) ### Breaking Changes diff --git a/crates/opentelemetry/CHANGELOG.md b/crates/opentelemetry/CHANGELOG.md index 92667d4..0fe306d 100644 --- a/crates/opentelemetry/CHANGELOG.md +++ b/crates/opentelemetry/CHANGELOG.md @@ -1,35 +1,3 @@ -## 0.3.2-dev.1 (2024-06-04) - -### Fixes - -#### use tls tonic features (#18) - -#### update opentelemetry dependencies - -#### drop batch stdout support - -#### use explicit extension-module features - -## 0.3.2-dev.0 (2024-05-31) - -### Fixes - -#### use tls tonic features (#18) - -#### update opentelemetry dependencies - -#### drop batch stdout support - -## 0.3.2-rc.0 (2024-05-31) - -### Fixes - -#### use tls tonic features (#18) - -#### update opentelemetry dependencies - -#### drop batch stdout support - ## 0.3.1 (2023-12-18) ### Fixes @@ -38,24 +6,6 @@ #### ci release flow (#11) -## 0.3.1-rc.1 (2023-12-18) - -### Fixes - -#### update opentelemetry-macros - -#### ci release flow - -#### force rc - -## 0.3.1-rc.0 (2023-12-18) - -### Fixes - -#### update opentelemetry-macros - -#### ci release flow - ## 0.3.0 (2023-12-16) ### Breaking Changes diff --git a/crates/tracing-subscriber/CHANGELOG.md b/crates/tracing-subscriber/CHANGELOG.md index c1695cf..b11bf62 100644 --- a/crates/tracing-subscriber/CHANGELOG.md +++ b/crates/tracing-subscriber/CHANGELOG.md @@ -1,53 +1,9 @@ -## 0.1.2-dev.1 (2024-06-04) - -### Fixes - -#### use tls tonic features (#18) - -#### update opentelemetry dependencies - -#### drop batch stdout support - -#### use explicit extension-module features - -## 0.1.2-dev.0 (2024-05-31) - -### Fixes - -#### use tls tonic features (#18) - -#### update opentelemetry dependencies - -#### drop batch stdout support - -## 0.1.2-rc.0 (2024-05-31) - -### Fixes - -#### use tls tonic features (#18) - -#### update opentelemetry dependencies - -#### drop batch stdout support - ## 0.1.1 (2023-12-18) ### Fixes #### ci release flow (#11) -## 0.1.1-rc.1 (2023-12-18) - -### Fixes - -#### ci release flow - -## 0.1.1-rc.0 (2023-12-18) - -### Fixes - -#### ci release flow - ## 0.1.0 (2023-12-16) ### Breaking Changes diff --git a/knope.toml b/knope.toml index 11719fd..60510fa 100644 --- a/knope.toml +++ b/knope.toml @@ -37,6 +37,12 @@ command = "! git diff --cached --quiet" type = "Command" command = "cargo update -w" +# Do not commit the changelog if the version is a release candidate. +[[workflows.steps]] +type = "Command" +command = 'case "$version" in *"-dev."*) git restore --staged --worktree CHANGELOG.md ;; esac || true' +shell = true + [[workflows.steps]] type = "Command" # git diff --cached --quiet exits with 0 if there are *no* staged changes. From 026cbd34c0ce9f3f6e1dec96ffce4a636f090777 Mon Sep 17 00:00:00 2001 From: Eric Hulburd Date: Fri, 4 Oct 2024 14:24:28 -0700 Subject: [PATCH 18/21] refactor: replace otlp file exporter --- Cargo.lock | 51 +------ Cargo.toml | 1 - crates/opentelemetry/src/lib.rs | 2 +- crates/tracing-subscriber/Cargo.toml | 7 +- .../tracing-subscriber/src/contextmanager.rs | 2 + .../src/export_process/background.rs | 2 +- crates/tracing-subscriber/src/layers/mod.rs | 57 +++++++- .../src/layers/otel_otlp.rs | 40 ++++-- .../src/layers/otel_otlp_file.rs | 129 +++++++++++++++--- crates/tracing-subscriber/src/lib.rs | 48 +++---- crates/tracing-subscriber/src/stubs.rs | 2 +- 11 files changed, 226 insertions(+), 115 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index f1e48ec..cb45127 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -184,15 +184,6 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" -[[package]] -name = "chrono" -version = "0.4.38" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401" -dependencies = [ - "num-traits", -] - [[package]] name = "core-foundation" version = "0.9.4" @@ -690,15 +681,6 @@ dependencies = [ "winapi", ] -[[package]] -name = "num-traits" -version = "0.2.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" -dependencies = [ - "autocfg", -] - [[package]] name = "num_cpus" version = "1.16.0" @@ -790,23 +772,6 @@ dependencies = [ "tonic", ] -[[package]] -name = "opentelemetry-stdout" -version = "0.25.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f76e2ded3f6e5d8b51e7aefc267022e7586975c00763aab70f807ad2cc156e94" -dependencies = [ - "async-trait", - "chrono", - "futures-util", - "opentelemetry 0.25.0", - "opentelemetry_sdk 0.25.0", - "ordered-float", - "serde", - "serde_json", - "thiserror", -] - [[package]] name = "opentelemetry_sdk" version = "0.25.0" @@ -847,15 +812,6 @@ dependencies = [ "thiserror", ] -[[package]] -name = "ordered-float" -version = "4.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a76df7075c7d4d01fdcb46c912dd17fba5b60c78ea480b475f2b6ab6f666584e" -dependencies = [ - "num-traits", -] - [[package]] name = "overload" version = "0.1.1" @@ -1134,11 +1090,11 @@ dependencies = [ name = "pyo3-tracing-subscriber" version = "0.1.2-dev.1" dependencies = [ + "futures-core", "handlebars", "opentelemetry 0.25.0", "opentelemetry-otlp", "opentelemetry-proto", - "opentelemetry-stdout", "opentelemetry_sdk 0.25.0", "pyo3", "pyo3-asyncio", @@ -1434,11 +1390,12 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.117" +version = "1.0.128" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "455182ea6142b14f93f4bc5320a2b31c1f266b66a4a5c858b013302a5d8cbfc3" +checksum = "6ff5456707a1de34e7e37f2a6fd3d3f808c318259cbd01ab6377795054b483d8" dependencies = [ "itoa", + "memchr", "ryu", "serde", ] diff --git a/Cargo.toml b/Cargo.toml index 8c1bccc..9d9b58d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -10,7 +10,6 @@ serde = { version = "1.0.145", features = ["derive"] } # When updating the OTEL version, be sure to update these optional dependencies in `tracing-subscriber` as well: # * opentelemetry-otlp # * opentelemetry-proto -# * opentelemetry-stdout opentelemetry = "0.25.0" opentelemetry_sdk = "0.25.0" pyo3 = { version = "0.20.0", features = ["macros"] } diff --git a/crates/opentelemetry/src/lib.rs b/crates/opentelemetry/src/lib.rs index ce663c1..378f93f 100644 --- a/crates/opentelemetry/src/lib.rs +++ b/crates/opentelemetry/src/lib.rs @@ -68,7 +68,7 @@ //! //! * `pyo3-opentelemetry-macros` - a crate defining the `pypropagate` macro. //! * `pyo3-tracing-subscriber` - a crate supporting configuration and initialization of Rust -//! tracing subscribers from Python. +//! tracing subscribers from Python. //! //! # Examples //! diff --git a/crates/tracing-subscriber/Cargo.toml b/crates/tracing-subscriber/Cargo.toml index dffa956..a9c7d06 100644 --- a/crates/tracing-subscriber/Cargo.toml +++ b/crates/tracing-subscriber/Cargo.toml @@ -18,7 +18,6 @@ opentelemetry = { workspace = true } # since they are optional, they cannot be workspace dependencies. opentelemetry-otlp = { version = "0.25.0", features = ["grpc-tonic", "trace", "tls-roots"], optional = true } opentelemetry-proto = { version = "0.25.0", optional = true, features = ["tonic"] } -opentelemetry-stdout = { version = "0.25.0", optional = true, features = ["trace"] } opentelemetry_sdk = { workspace = true, features = ["rt-tokio", "rt-tokio-current-thread"] } pyo3-asyncio = { workspace = true, features = ["tokio-runtime"], optional = true } serde = { workspace = true } @@ -28,10 +27,12 @@ tonic = { version = "0.12.3", features = ["tls", "tls-roots"], optional = true } tracing = { workspace = true } tracing-opentelemetry = { workspace = true } tracing-subscriber = { workspace = true, features = ["env-filter", "fmt", "json"] } +futures-core = "0.3.30" +serde_json = "1.0.128" [features] -layer-otel-otlp = ["dep:opentelemetry-otlp", "dep:opentelemetry-proto", "dep:tonic"] -layer-otel-otlp-file = ["dep:opentelemetry-stdout"] +layer-otel-otlp = ["layer-otel-otlp-file", "dep:tonic"] +layer-otel-otlp-file = ["dep:opentelemetry-otlp", "dep:opentelemetry-proto"] stubs = ["dep:handlebars"] pyo3 = ["dep:pyo3", "dep:pyo3-asyncio"] extension-module = ["pyo3", "pyo3/extension-module"] diff --git a/crates/tracing-subscriber/src/contextmanager.rs b/crates/tracing-subscriber/src/contextmanager.rs index 7784394..5258ce4 100644 --- a/crates/tracing-subscriber/src/contextmanager.rs +++ b/crates/tracing-subscriber/src/contextmanager.rs @@ -244,6 +244,7 @@ mod test { let layer_config = Box::new(crate::layers::otel_otlp_file::Config { file_path: Some(temporary_file_path.as_os_str().to_str().unwrap().to_owned()), filter: Some("error,pyo3_tracing_subscriber=info".to_string()), + instrumentation_library: None, }); let subscriber = Box::new(TracingSubscriberRegistryConfig { layer_config }); let config = TracingConfig::Global(GlobalTracingConfig { @@ -319,6 +320,7 @@ mod test { let layer_config = Box::new(crate::layers::otel_otlp_file::Config { file_path: Some(temporary_file_path.as_os_str().to_str().unwrap().to_owned()), filter: Some("error,pyo3_tracing_subscriber=info".to_string()), + instrumentation_library: None, }); let subscriber = Box::new(TracingSubscriberRegistryConfig { layer_config }); let config = TracingConfig::CurrentThread(CurrentThreadTracingConfig { diff --git a/crates/tracing-subscriber/src/export_process/background.rs b/crates/tracing-subscriber/src/export_process/background.rs index 3ca8273..a8a63c1 100644 --- a/crates/tracing-subscriber/src/export_process/background.rs +++ b/crates/tracing-subscriber/src/export_process/background.rs @@ -42,7 +42,7 @@ pub(crate) struct ExportProcess { } impl ExportProcess { - fn new(guard: SubscriberManagerGuard, runtime: Runtime) -> Self { + const fn new(guard: SubscriberManagerGuard, runtime: Runtime) -> Self { Self { runtime, guard } } diff --git a/crates/tracing-subscriber/src/layers/mod.rs b/crates/tracing-subscriber/src/layers/mod.rs index 502de60..023d70f 100644 --- a/crates/tracing-subscriber/src/layers/mod.rs +++ b/crates/tracing-subscriber/src/layers/mod.rs @@ -19,7 +19,7 @@ //! //! * [`crate::layers::fmt_file::Config`] - a layer which writes spans to a file (or stdout) in //! * [`crate::layers::otel_otlp_file::Config`] - a layer which writes spans to a file (or stdout) in -//! the `OpenTelemetry` OTLP JSON-serialized format. +//! the `OpenTelemetry` OTLP JSON-serialized format. //! * [`crate::layers::otel_otlp::Config`] - a layer which exports spans to an `OpenTelemetry` collector. pub(crate) mod fmt_file; #[cfg(feature = "layer-otel-otlp")] @@ -27,8 +27,9 @@ pub(crate) mod otel_otlp; #[cfg(feature = "layer-otel-otlp-file")] pub(crate) mod otel_otlp_file; -use std::fmt::Debug; +use std::{borrow::Cow, collections::HashMap, fmt::Debug}; +use opentelemetry::InstrumentationLibrary; use pyo3::prelude::*; use tracing_subscriber::{ filter::{FromEnvError, ParseError}, @@ -210,3 +211,55 @@ pub(crate) fn init_submodule(name: &str, py: Python, m: &PyModule) -> PyResult<( Ok(()) } + +#[pyclass(name = "InstrumentationLibrary")] +#[derive(Debug, Clone)] +pub(crate) struct PyInstrumentationLibrary { + name: String, + version: Option, + schema_url: Option, + attributes: HashMap, +} + +#[pymethods] +impl PyInstrumentationLibrary { + #[new] + #[pyo3(signature = (name, /, version=None, schema_url=None, attributes=None))] + fn new( + name: String, + version: Option, + schema_url: Option, + attributes: Option>, + ) -> Self { + let attributes = attributes.unwrap_or_default(); + Self { + name, + version, + schema_url, + attributes, + } + } +} + +impl From for InstrumentationLibrary { + fn from(py_instrumentation_library: PyInstrumentationLibrary) -> Self { + let mut builder = Self::builder(Cow::from(py_instrumentation_library.name)); + if let Some(version) = py_instrumentation_library.version { + builder = builder.with_version(Cow::from(version)); + } + if let Some(schema_url) = py_instrumentation_library.schema_url { + builder = builder.with_schema_url(Cow::from(schema_url)); + } + let mut attributes = Vec::new(); + for (key, value) in py_instrumentation_library.attributes { + let kv = opentelemetry::KeyValue::new( + opentelemetry::Key::new(key), + opentelemetry::Value::from(value), + ); + attributes.push(kv); + } + builder = builder.with_attributes(attributes); + + builder.build() + } +} diff --git a/crates/tracing-subscriber/src/layers/otel_otlp.rs b/crates/tracing-subscriber/src/layers/otel_otlp.rs index 8c86483..4c95a9e 100644 --- a/crates/tracing-subscriber/src/layers/otel_otlp.rs +++ b/crates/tracing-subscriber/src/layers/otel_otlp.rs @@ -12,14 +12,16 @@ // See the License for the specific language governing permissions and // limitations under the License. -use std::{collections::HashMap, time::Duration}; +use std::{collections::HashMap, sync::Arc, time::Duration}; +use opentelemetry::{trace::TracerProvider, InstrumentationLibrary}; use opentelemetry_otlp::{TonicExporterBuilder, WithExportConfig}; use opentelemetry_sdk::{ trace::{Sampler, SpanLimits}, Resource, }; use pyo3::prelude::*; +use tracing_subscriber::Layer; use crate::create_init_submodule; use opentelemetry_sdk::trace; @@ -27,12 +29,12 @@ use tonic::metadata::{ errors::{InvalidMetadataKey, InvalidMetadataValue}, MetadataKey, }; -use tracing_subscriber::{ - filter::{FromEnvError, ParseError}, - Layer, -}; +use tracing_subscriber::filter::{FromEnvError, ParseError}; -use super::{build_env_filter, force_flush_provider_as_shutdown, LayerBuildResult, WithShutdown}; +use super::{ + build_env_filter, force_flush_provider_as_shutdown, LayerBuildResult, PyInstrumentationLibrary, + WithShutdown, +}; /// Configures the [`opentelemetry-otlp`] crate layer. #[derive(Clone, Debug)] @@ -56,6 +58,8 @@ pub(crate) struct Config { pre_shutdown_timeout: Duration, /// The filter to use for the [`tracing_subscriber::filter::EnvFilter`] layer. filter: Option, + /// The instrumentation library to use for the [`opentelemetry::sdk::trace::TracerProvider`]. + instrumentation_library: Option, } impl Config { @@ -95,22 +99,27 @@ impl Config { .tracing() .with_exporter(self.initialize_otlp_exporter()) .with_trace_config( - trace::config() + trace::Config::default() .with_sampler(self.sampler.clone()) .with_span_limits(self.span_limits) .with_resource(self.resource.clone()), ); - let tracer = if batch { + let provider = if batch { pipeline.install_batch(opentelemetry_sdk::runtime::Tokio {}) } else { pipeline.install_simple() } .map_err(BuildError::from)?; - let provider = tracer - .provider() - .ok_or(BuildError::ProviderNotSetOnTracer)?; let env_filter = build_env_filter(self.filter.clone())?; + + let tracer = self.instrumentation_library.as_ref().map_or_else( + || provider.tracer("pyo3_tracing_subscriber"), + |instrumentation_library| { + provider.library_tracer(Arc::new(instrumentation_library.clone())) + }, + ); + let layer = tracing_opentelemetry::layer() .with_tracer(tracer) .with_filter(env_filter); @@ -131,8 +140,6 @@ pub(super) enum Error { pub(crate) enum BuildError { #[error("failed to build opentelemetry-otlp pipeline: {0}")] TraceInstall(#[from] opentelemetry::trace::TraceError), - #[error("provider not set on returned opentelemetry-otlp tracer")] - ProviderNotSetOnTracer, #[error("error in the configuration: {0}")] Config(#[from] ConfigError), #[error("failed to parse specified trace filter: {0}")] @@ -239,6 +246,7 @@ pub(crate) struct PyConfig { timeout_millis: Option, pre_shutdown_timeout_millis: u64, filter: Option, + instrumentation_library: Option, } #[pymethods] @@ -253,7 +261,8 @@ impl PyConfig { endpoint = None, timeout_millis = None, pre_shutdown_timeout_millis = 2000, - filter = None + filter = None, + instrumentation_library = None ))] #[allow(clippy::too_many_arguments)] fn new( @@ -265,6 +274,7 @@ impl PyConfig { timeout_millis: Option, pre_shutdown_timeout_millis: u64, filter: Option<&str>, + instrumentation_library: Option, ) -> PyResult { Ok(Self { span_limits: span_limits.unwrap_or_default(), @@ -275,6 +285,7 @@ impl PyConfig { timeout_millis, pre_shutdown_timeout_millis, filter: filter.map(String::from), + instrumentation_library, }) } } @@ -447,6 +458,7 @@ impl TryFrom for Config { timeout: config.timeout_millis.map(Duration::from_millis), pre_shutdown_timeout: Duration::from_millis(config.pre_shutdown_timeout_millis), filter: config.filter, + instrumentation_library: config.instrumentation_library.map(Into::into), }) } } diff --git a/crates/tracing-subscriber/src/layers/otel_otlp_file.rs b/crates/tracing-subscriber/src/layers/otel_otlp_file.rs index 8956e2e..c1f686f 100644 --- a/crates/tracing-subscriber/src/layers/otel_otlp_file.rs +++ b/crates/tracing-subscriber/src/layers/otel_otlp_file.rs @@ -12,11 +12,21 @@ // See the License for the specific language governing permissions and // limitations under the License. +use std::{io::Write, sync::Arc}; + use crate::create_init_submodule; +use futures_core::future::BoxFuture; +use opentelemetry::trace::TraceError; +use opentelemetry_proto::transform::{ + common::tonic::ResourceAttributesWithSchema, trace::tonic::group_spans_by_resource_and_scope, +}; use pyo3::prelude::*; -use tracing_subscriber::Layer; +use tracing_subscriber::{fmt::MakeWriter, Layer}; -use super::{build_env_filter, force_flush_provider_as_shutdown, LayerBuildResult, WithShutdown}; +use super::{ + build_env_filter, force_flush_provider_as_shutdown, LayerBuildResult, PyInstrumentationLibrary, + WithShutdown, +}; /// Configures the [`opentelemetry-stdout`] crate layer. If [`file_path`] is None, the layer /// will write to stdout. @@ -25,14 +35,85 @@ use super::{build_env_filter, force_flush_provider_as_shutdown, LayerBuildResult pub(crate) struct Config { pub(crate) file_path: Option, pub(crate) filter: Option, + pub(crate) instrumentation_library: Option, } #[pymethods] impl Config { #[new] - #[pyo3(signature = (/, file_path = None, filter = None))] - const fn new(file_path: Option, filter: Option) -> Self { - Self { file_path, filter } + #[pyo3(signature = (/, file_path = None, filter = None, instrumentation_library = None))] + const fn new( + file_path: Option, + filter: Option, + instrumentation_library: Option, + ) -> Self { + Self { + file_path, + filter, + instrumentation_library, + } + } +} + +#[derive(Debug)] +struct OtelOtlpFile { + writer: Option>>, + resource: ResourceAttributesWithSchema, +} + +impl OtelOtlpFile { + fn new(writer: Option) -> Self { + Self { + writer: writer.map(|writer| Arc::new(tokio::sync::Mutex::new(writer))), + resource: ResourceAttributesWithSchema::default(), + } + } +} + +impl opentelemetry_sdk::export::trace::SpanExporter for OtelOtlpFile { + fn export( + &mut self, + batch: Vec, + ) -> BoxFuture<'static, opentelemetry_sdk::export::trace::ExportResult> { + let writer = self.writer.clone(); + let resource_spans = group_spans_by_resource_and_scope(batch, &self.resource); + + Box::pin(async move { + let traces_data = opentelemetry_proto::tonic::trace::v1::TracesData { resource_spans }; + match writer { + Some(writer) => { + serde_json::to_writer(writer.lock().await.make_writer(), &traces_data) + .map_err(|e| TraceError::Other(Box::new(e))) + } + None => serde_json::to_writer(std::io::stdout(), &traces_data) + .map_err(|e| TraceError::Other(Box::new(e))), + } + }) + } + + fn shutdown(&mut self) {} + + fn force_flush( + &mut self, + ) -> BoxFuture<'static, opentelemetry_sdk::export::trace::ExportResult> { + let writer = self.writer.clone(); + Box::pin(async move { + match writer { + Some(writer) => writer + .lock() + .await + .flush() + .map_err(|e| TraceError::Other(Box::new(e))), + None => std::io::stdout() + .flush() + .map_err(|e| TraceError::Other(Box::new(e))), + } + }) + } + + /// Set the resource for the exporter. + fn set_resource(&mut self, resource: &opentelemetry_sdk::Resource) { + self.resource = ResourceAttributesWithSchema::from(resource); } } @@ -43,21 +124,29 @@ impl crate::layers::Config for Config { fn build(&self, batch: bool) -> LayerBuildResult { use opentelemetry::trace::TracerProvider as _; - let exporter_builder = opentelemetry_stdout::SpanExporter::builder(); - let exporter_builder = match self.file_path.as_ref() { - Some(file_path) => { - let file = std::fs::File::create(file_path).map_err(BuildError::from)?; - exporter_builder.with_writer(file) - } - None => exporter_builder, + let file = self + .file_path + .as_ref() + .map(|file_path| std::fs::File::create(file_path).map_err(BuildError::from)) + .transpose()?; + + let exporter = OtelOtlpFile::new(file); + let provider = if batch { + opentelemetry_sdk::trace::TracerProvider::builder() + .with_batch_exporter(exporter, opentelemetry_sdk::runtime::Tokio {}) + .build() + } else { + opentelemetry_sdk::trace::TracerProvider::builder() + .with_simple_exporter(exporter) + .build() }; - if batch { - return Err(BuildError::BatchModeNotSupported)?; - } - let provider = opentelemetry_sdk::trace::TracerProvider::builder() - .with_simple_exporter(exporter_builder.build()) - .build(); - let tracer = provider.tracer("pyo3_tracing_subscriber"); + + let tracer = self.instrumentation_library.as_ref().map_or_else( + || provider.tracer("pyo3_tracing_subscriber"), + |instrumentation_library| { + provider.library_tracer(Arc::new(instrumentation_library.clone().into())) + }, + ); let env_filter = build_env_filter(self.filter.clone())?; let layer = tracing_opentelemetry::layer() .with_tracer(tracer) @@ -73,8 +162,6 @@ impl crate::layers::Config for Config { pub(crate) enum BuildError { #[error("failed to initialize file span exporter for specified file path: {0}")] InvalidFile(#[from] std::io::Error), - #[error("batch mode is not supported for stdout layer")] - BatchModeNotSupported, } create_init_submodule! { diff --git a/crates/tracing-subscriber/src/lib.rs b/crates/tracing-subscriber/src/lib.rs index 059c3ba..1956da1 100644 --- a/crates/tracing-subscriber/src/lib.rs +++ b/crates/tracing-subscriber/src/lib.rs @@ -70,14 +70,14 @@ //! # Requirements and Limitations //! //! * The tracing subscribers initialized and configured _only_ capture tracing data for the pyo3 -//! library which adds the `pyo3-tracing-subscriber` module. Separate Python libraries require separate -//! bootstrapping. +//! library which adds the `pyo3-tracing-subscriber` module. Separate Python libraries require separate +//! bootstrapping. //! * Python users can initialize tracing subscribers using context managers either globally, in -//! which case they can only initialize once, or per-thread, which is incompatible with Python -//! `async/await`. +//! which case they can only initialize once, or per-thread, which is incompatible with Python +//! `async/await`. //! * The `OTel` OTLP layer requires a heuristic based timeout upon context manager exit to ensure -//! trace data on the Rust side is flushed to the OTLP collector. This issue currently persists despite calls -//! to `force_flush` on the `opentelemetry_sdk::trace::TracerProvider` and `opentelemetry::global::shutdown_tracer_provider`. +//! trace data on the Rust side is flushed to the OTLP collector. This issue currently persists despite calls +//! to `force_flush` on the `opentelemetry_sdk::trace::TracerProvider` and `opentelemetry::global::shutdown_tracer_provider`. //! //! # Examples //! @@ -170,10 +170,10 @@ create_init_submodule! { /// # Arguments /// /// * `fully_qualified_namespace` - the fully qualified namespace of the parent Python module to -/// which the tracing submodule should be added. This may be a nested namespace, such as -/// `my_package.my_module`. +/// which the tracing submodule should be added. This may be a nested namespace, such as +/// `my_package.my_module`. /// * `name` - the name of the tracing subscriber submodule within the specified parent module. -/// This should not be a nested namespace. +/// This should not be a nested namespace. /// * `py` - the Python GIL token. /// * `parent_module` - the parent module to which the tracing subscriber submodule should be added. /// @@ -187,34 +187,34 @@ create_init_submodule! { /// /// * `Tracing` - a Python context manager which initializes the configured tracing subscriber. /// * `GlobalTracingConfig` - a Python context manager which sets the configured tracing subscriber -/// as the global default (ie `tracing::subscriber::set_global_default`). The `Tracing` context -/// manager can be used _only once_ per process with this configuration. +/// as the global default (ie `tracing::subscriber::set_global_default`). The `Tracing` context +/// manager can be used _only once_ per process with this configuration. /// * `CurrentThreadTracingConfig` - a Python context manager which sets the configured tracing -/// subscriber as the current thread default (ie `tracing::subscriber::set_default`). As the -/// context manager exits, the guard is dropped and the tracing subscriber can be re-initialized -/// with another default. Note, the default tracing subscriber will _not_ capture traces across -/// `async/await` boundaries that call `pyo3_asyncio::tokio::future_into_py`. +/// subscriber as the current thread default (ie `tracing::subscriber::set_default`). As the +/// context manager exits, the guard is dropped and the tracing subscriber can be re-initialized +/// with another default. Note, the default tracing subscriber will _not_ capture traces across +/// `async/await` boundaries that call `pyo3_asyncio::tokio::future_into_py`. /// * `BatchConfig` - a Python context manager which configures the tracing subscriber to export -/// trace data in batch. As the `Tracing` context manager enters, a Tokio runtime is initialized -/// and will run in the background until the context manager exits. +/// trace data in batch. As the `Tracing` context manager enters, a Tokio runtime is initialized +/// and will run in the background until the context manager exits. /// * `SimpleConfig` - a Python context manager which configures the tracing subscriber to export -/// trace data in a non-batch manner. This only initializes a Tokio runtime if the underlying layer -/// requires an asynchronous runtime to export trace data (ie the `opentelemetry-otlp` layer). +/// trace data in a non-batch manner. This only initializes a Tokio runtime if the underlying layer +/// requires an asynchronous runtime to export trace data (ie the `opentelemetry-otlp` layer). /// * `layers` - a submodule which contains different layers to add to the tracing subscriber. -/// Currently supported: +/// Currently supported: /// * `tracing::fmt` - a layer which exports trace data to stdout in a non-OpenTelemetry data format. /// * `opentelemetry-stdout` - a layer which exports trace data to stdout (requires the `layer-otel-otlp-file` feature). /// * `opentelemetry-otlp` - a layer which exports trace data to an `OpenTelemetry` collector (requires the `layer-otel-otlp` feature). /// * `subscriber` - a submodule which contains utilities for initialing the tracing subscriber -/// with the configured layer. Currently, the tracing subscriber is initialized as -/// `tracing::subscriber::Registry::default().with(layer)`. +/// with the configured layer. Currently, the tracing subscriber is initialized as +/// `tracing::subscriber::Registry::default().with(layer)`. /// /// The following exceptions are added to the submodule: /// /// * `TracingContextManagerError` - raised when the `Tracing` context manager's methods are not -/// invoked in the correct order or multiplicity. +/// invoked in the correct order or multiplicity. /// * `TracingStartError` - raised if the user-specified tracing layer or subscriber fails to build -/// and initialize properly upon context manager entry. +/// and initialize properly upon context manager entry. /// * `TracingShutdownError` - raised if the tracing layer or subscriber fails to shutdown properly on context manager exit. /// /// For detailed Python usage documentation, see the stub files written by diff --git a/crates/tracing-subscriber/src/stubs.rs b/crates/tracing-subscriber/src/stubs.rs index e307908..2ede801 100644 --- a/crates/tracing-subscriber/src/stubs.rs +++ b/crates/tracing-subscriber/src/stubs.rs @@ -149,7 +149,7 @@ macro_rules! include_stub_and_init { /// /// * `host_package` - The name of the host Python package. /// * `tracing_subscriber_module_name` - The name of the tracing subscriber module (ie the Python -/// module that will contain the stub files). +/// module that will contain the stub files). /// * `directory` - The directory to write the stub files to. /// * `layer_otel_otlp_file` - Whether to include stub files for the `otel_otlp_file` layer. /// * `layer_otel_otlp` - Whether to include stub files for the `otel_otlp` layer. From 091966eb19d31e32a0e57472583d4f898e6620bb Mon Sep 17 00:00:00 2001 From: Eric Hulburd Date: Fri, 4 Oct 2024 14:59:40 -0700 Subject: [PATCH 19/21] chore: fix msrv --- crates/tracing-subscriber/Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/tracing-subscriber/Cargo.toml b/crates/tracing-subscriber/Cargo.toml index a9c7d06..887e5fb 100644 --- a/crates/tracing-subscriber/Cargo.toml +++ b/crates/tracing-subscriber/Cargo.toml @@ -8,7 +8,7 @@ license = "Apache-2.0" readme = "./README.md" description = "A Python module for configuring and initializing tracing subscribers from Python." repository = "https://github.com/rigetti/pyo3-opentelemetry" -rust-version = "1.67.0" +rust-version = "1.70.0" [dependencies] handlebars = { version = "4.4.0", optional = true } From db3540c20813057ba98e0f9b7a10a37860424775 Mon Sep 17 00:00:00 2001 From: Eric Hulburd Date: Fri, 4 Oct 2024 15:20:58 -0700 Subject: [PATCH 20/21] fix: ensure new line between traces data --- .../tracing-subscriber/src/contextmanager.rs | 51 +++++-------------- .../src/layers/otel_otlp_file.rs | 31 ++++++++--- 2 files changed, 37 insertions(+), 45 deletions(-) diff --git a/crates/tracing-subscriber/src/contextmanager.rs b/crates/tracing-subscriber/src/contextmanager.rs index 5258ce4..e49f3ea 100644 --- a/crates/tracing-subscriber/src/contextmanager.rs +++ b/crates/tracing-subscriber/src/contextmanager.rs @@ -200,6 +200,7 @@ mod test { export_process::{ExportProcess, ExportProcessConfig, SimpleConfig}, subscriber::TracingSubscriberRegistryConfig, }; + use opentelemetry_proto::tonic::trace::v1 as otlp; #[tracing::instrument] fn example() { @@ -209,33 +210,6 @@ mod test { const N_SPANS: usize = 5; const SPAN_DURATION: Duration = Duration::from_millis(100); - /// A truncated implementation of `opentelemetry_stdout` that derives - /// `serde::Deserialize`. - #[derive(serde::Deserialize)] - #[serde(rename_all = "camelCase")] - struct SpanData { - resource_spans: Vec, - } - - #[derive(serde::Deserialize)] - #[serde(rename_all = "camelCase")] - struct ResourceSpan { - scope_spans: Vec, - } - - #[derive(serde::Deserialize)] - struct ScopeSpan { - spans: Vec, - } - - #[derive(serde::Deserialize, Clone)] - #[serde(rename_all = "camelCase")] - struct Span { - name: String, - start_time_unix_nano: u128, - end_time_unix_nano: u128, - } - #[test] /// Test that a global simple export process can be started and stopped and that it /// exports accurate spans as configured. @@ -273,7 +247,8 @@ mod test { let spans = lines .flat_map(|line| { let line = line.unwrap(); - let span_data: SpanData = serde_json::from_str(line.as_str()).unwrap(); + let span_data: otlp::TracesData = + serde_json::from_str(line.as_str().trim()).unwrap(); span_data .resource_spans .iter() @@ -283,19 +258,20 @@ mod test { .iter() .flat_map(|scope_span| scope_span.spans.clone()) }) - .collect::>() + .collect::>() }) - .collect::>(); + .collect::>(); assert_eq!(spans.len(), N_SPANS); let span_grace = Duration::from_millis(50); for span in spans { assert_eq!(span.name, "example"); assert!( - span.end_time_unix_nano - span.start_time_unix_nano >= SPAN_DURATION.as_nanos() + (span.end_time_unix_nano - span.start_time_unix_nano) as u128 + >= SPAN_DURATION.as_nanos() ); assert!( - (span.end_time_unix_nano - span.start_time_unix_nano) + (span.end_time_unix_nano - span.start_time_unix_nano) as u128 <= (SPAN_DURATION.as_nanos() + span_grace.as_nanos()) ); } @@ -351,7 +327,7 @@ mod test { let spans = lines .flat_map(|line| { let line = line.unwrap(); - let span_data: SpanData = serde_json::from_str(line.as_str()).unwrap(); + let span_data: otlp::TracesData = serde_json::from_str(line.as_str()).unwrap(); span_data .resource_spans .iter() @@ -361,19 +337,20 @@ mod test { .iter() .flat_map(|scope_span| scope_span.spans.clone()) }) - .collect::>() + .collect::>() }) - .collect::>(); + .collect::>(); assert_eq!(spans.len(), N_SPANS); let span_grace = Duration::from_millis(50); for span in spans { assert_eq!(span.name, "example"); assert!( - span.end_time_unix_nano - span.start_time_unix_nano >= SPAN_DURATION.as_nanos() + (span.end_time_unix_nano - span.start_time_unix_nano) as u128 + >= SPAN_DURATION.as_nanos() ); assert!( - (span.end_time_unix_nano - span.start_time_unix_nano) + (span.end_time_unix_nano - span.start_time_unix_nano) as u128 <= (SPAN_DURATION.as_nanos() + span_grace.as_nanos()) ); } diff --git a/crates/tracing-subscriber/src/layers/otel_otlp_file.rs b/crates/tracing-subscriber/src/layers/otel_otlp_file.rs index c1f686f..8809be8 100644 --- a/crates/tracing-subscriber/src/layers/otel_otlp_file.rs +++ b/crates/tracing-subscriber/src/layers/otel_otlp_file.rs @@ -21,7 +21,7 @@ use opentelemetry_proto::transform::{ common::tonic::ResourceAttributesWithSchema, trace::tonic::group_spans_by_resource_and_scope, }; use pyo3::prelude::*; -use tracing_subscriber::{fmt::MakeWriter, Layer}; +use tracing_subscriber::Layer; use super::{ build_env_filter, force_flush_provider_as_shutdown, LayerBuildResult, PyInstrumentationLibrary, @@ -80,13 +80,28 @@ impl opentelemetry_sdk::export::trace::SpanExporter for OtelOtlpFile { Box::pin(async move { let traces_data = opentelemetry_proto::tonic::trace::v1::TracesData { resource_spans }; - match writer { - Some(writer) => { - serde_json::to_writer(writer.lock().await.make_writer(), &traces_data) - .map_err(|e| TraceError::Other(Box::new(e))) - } - None => serde_json::to_writer(std::io::stdout(), &traces_data) - .map_err(|e| TraceError::Other(Box::new(e))), + let serialized = + serde_json::to_vec(&traces_data).map_err(|e| TraceError::Other(Box::new(e)))?; + if let Some(writer) = writer { + let mut writer = writer.lock().await; + writer + .write(serialized.as_slice()) + .map(|_| ()) + .map_err(|e| TraceError::Other(Box::new(e)))?; + writer + .write(b"\n") + .map(|_| ()) + .map_err(|e| TraceError::Other(Box::new(e))) + } else { + let mut stdout = std::io::stdout().lock(); + stdout + .write(serialized.as_slice()) + .map(|_| ()) + .map_err(|e| TraceError::Other(Box::new(e)))?; + stdout + .write(b"\n") + .map(|_| ()) + .map_err(|e| TraceError::Other(Box::new(e))) } }) } From 911ebc8aae431e5ba04dfb6483cbbcf84614dd20 Mon Sep 17 00:00:00 2001 From: Eric Hulburd Date: Fri, 4 Oct 2024 16:52:10 -0700 Subject: [PATCH 21/21] fix: update tracing subscriber stubs --- Cargo.lock | 59 ++++-------------- .../assets/python_stubs/__init__.pyi | 1 + .../assets/python_stubs/common/__init__.py | 18 ++++++ .../assets/python_stubs/common/__init__.pyi | 45 ++++++++++++++ .../layers/otel_otlp/__init__.pyi | 3 + .../layers/otel_otlp_file/__init__.pyi | 5 +- crates/tracing-subscriber/src/common.rs | 61 +++++++++++++++++++ crates/tracing-subscriber/src/layers/mod.rs | 55 +---------------- .../src/layers/otel_otlp.rs | 6 +- .../src/layers/otel_otlp_file.rs | 8 +-- crates/tracing-subscriber/src/lib.rs | 3 +- crates/tracing-subscriber/src/stubs.rs | 1 + examples/pyo3-opentelemetry-lib/Cargo.toml | 4 +- .../_tracing_subscriber/__init__.py | 1 - .../_tracing_subscriber/__init__.pyi | 1 + .../_tracing_subscriber/common/__init__.py | 16 +++++ .../_tracing_subscriber/common/__init__.pyi | 43 +++++++++++++ .../_tracing_subscriber/layers/__init__.py | 2 - .../_tracing_subscriber/layers/__init__.pyi | 19 +++--- .../layers/file/__init__.py | 3 - .../layers/file/__init__.pyi | 1 - .../layers/otel_otlp/__init__.py | 2 - .../layers/otel_otlp/__init__.pyi | 13 ++-- .../layers/otel_otlp_file/__init__.py | 2 - .../layers/otel_otlp_file/__init__.pyi | 12 +++- .../subscriber/__init__.py | 2 - .../subscriber/__init__.pyi | 1 - .../test/tracing_test.py | 2 +- 28 files changed, 245 insertions(+), 144 deletions(-) create mode 100644 crates/tracing-subscriber/assets/python_stubs/common/__init__.py create mode 100644 crates/tracing-subscriber/assets/python_stubs/common/__init__.pyi create mode 100644 examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/common/__init__.py create mode 100644 examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/common/__init__.pyi diff --git a/Cargo.lock b/Cargo.lock index cb45127..6a66477 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -726,20 +726,6 @@ dependencies = [ "thiserror", ] -[[package]] -name = "opentelemetry" -version = "0.26.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "570074cc999d1a58184080966e5bd3bf3a9a4af650c3b05047c2621e7405cd17" -dependencies = [ - "futures-core", - "futures-sink", - "js-sys", - "once_cell", - "pin-project-lite", - "thiserror", -] - [[package]] name = "opentelemetry-otlp" version = "0.25.0" @@ -749,9 +735,9 @@ dependencies = [ "async-trait", "futures-core", "http", - "opentelemetry 0.25.0", + "opentelemetry", "opentelemetry-proto", - "opentelemetry_sdk 0.25.0", + "opentelemetry_sdk", "prost", "thiserror", "tokio", @@ -765,8 +751,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2c43620e8f93359eb7e627a3b16ee92d8585774986f24f2ab010817426c5ce61" dependencies = [ "hex", - "opentelemetry 0.25.0", - "opentelemetry_sdk 0.25.0", + "opentelemetry", + "opentelemetry_sdk", "prost", "serde", "tonic", @@ -784,7 +770,7 @@ dependencies = [ "futures-util", "glob", "once_cell", - "opentelemetry 0.25.0", + "opentelemetry", "percent-encoding", "rand", "serde_json", @@ -793,25 +779,6 @@ dependencies = [ "tokio-stream", ] -[[package]] -name = "opentelemetry_sdk" -version = "0.26.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2c627d9f4c9cdc1f21a29ee4bfbd6028fcb8bcf2a857b43f3abdf72c9c862f3" -dependencies = [ - "async-trait", - "futures-channel", - "futures-executor", - "futures-util", - "glob", - "once_cell", - "opentelemetry 0.26.0", - "percent-encoding", - "rand", - "serde_json", - "thiserror", -] - [[package]] name = "overload" version = "0.1.1" @@ -1050,8 +1017,8 @@ version = "0.3.2-dev.1" dependencies = [ "futures-util", "once_cell", - "opentelemetry 0.25.0", - "opentelemetry_sdk 0.25.0", + "opentelemetry", + "opentelemetry_sdk", "pyo3", "pyo3-opentelemetry-macros", "tokio", @@ -1064,8 +1031,8 @@ dependencies = [ name = "pyo3-opentelemetry-lib" version = "0.1.0" dependencies = [ - "opentelemetry 0.26.0", - "opentelemetry_sdk 0.26.0", + "opentelemetry", + "opentelemetry_sdk", "pyo3", "pyo3-asyncio", "pyo3-build-config", @@ -1092,10 +1059,10 @@ version = "0.1.2-dev.1" dependencies = [ "futures-core", "handlebars", - "opentelemetry 0.25.0", + "opentelemetry", "opentelemetry-otlp", "opentelemetry-proto", - "opentelemetry_sdk 0.25.0", + "opentelemetry_sdk", "pyo3", "pyo3-asyncio", "rstest", @@ -1702,8 +1669,8 @@ checksum = "5eabc56d23707ad55ba2a0750fc24767125d5a0f51993ba41ad2c441cc7b8dea" dependencies = [ "js-sys", "once_cell", - "opentelemetry 0.25.0", - "opentelemetry_sdk 0.25.0", + "opentelemetry", + "opentelemetry_sdk", "smallvec", "tracing", "tracing-core", diff --git a/crates/tracing-subscriber/assets/python_stubs/__init__.pyi b/crates/tracing-subscriber/assets/python_stubs/__init__.pyi index bfacfbe..0ebc700 100644 --- a/crates/tracing-subscriber/assets/python_stubs/__init__.pyi +++ b/crates/tracing-subscriber/assets/python_stubs/__init__.pyi @@ -15,6 +15,7 @@ from __future__ import annotations from types import TracebackType from typing import TYPE_CHECKING, Optional, Type, final +from . import common as common from . import layers as layers from . import subscriber as subscriber diff --git a/crates/tracing-subscriber/assets/python_stubs/common/__init__.py b/crates/tracing-subscriber/assets/python_stubs/common/__init__.py new file mode 100644 index 0000000..137a842 --- /dev/null +++ b/crates/tracing-subscriber/assets/python_stubs/common/__init__.py @@ -0,0 +1,18 @@ +# ***************************************************************************** +# * AUTO-GENERATED CODE * +# * * +# * This code was generated by the `pyo3-tracing-subscriber` crate. Any * +# * modifications to this file should be made to the script or the generation * +# * process that produced this code. Specifically, see: * +# * `pyo3_tracing_subscriber::stubs::write_stub_files` * +# * * +# * Do not manually edit this file, as your changes may be overwritten the * +# * next time the code is generated. * +# ***************************************************************************** + +from {{ host_package }}.{{ tracing_subscriber_module_name }} import common + + +__doc__ = common.__doc__ +__all__ = getattr(common, "__all__", []) + diff --git a/crates/tracing-subscriber/assets/python_stubs/common/__init__.pyi b/crates/tracing-subscriber/assets/python_stubs/common/__init__.pyi new file mode 100644 index 0000000..0712716 --- /dev/null +++ b/crates/tracing-subscriber/assets/python_stubs/common/__init__.pyi @@ -0,0 +1,45 @@ +# ***************************************************************************** +# * AUTO-GENERATED CODE * +# * * +# * This code was generated by the `pyo3-tracing-subscriber` crate. Any * +# * modifications to this file should be made to the script or the generation * +# * process that produced this code. Specifically, see: * +# * `pyo3_tracing_subscriber::stubs::write_stub_files` * +# * * +# * Do not manually edit this file, as your changes may be overwritten the * +# * next time the code is generated. * +# ***************************************************************************** + +from typing import Dict, Optional, final + + +@final +class InstrumentationLibrary: + """ + Information about a library or crate providing instrumentation. + + An instrumentation library should be named to follow any naming conventions + of the instrumented library (e.g. 'middleware' for a web framework). + + See the `instrumentation libraries `_ + spec for more information. + """ + + def __new__( + cls, + name: str, + version: Optional[str] = None, + schema_url: Optional[str] = None, + attributes: Optional[Dict[str, str]] = None, + ) -> "InstrumentationLibrary": + """ + Initializes a new instance of `InstrumentationLibrary`. + + :param name: The name of the instrumentation library. + :param version: The version of the instrumentation library. + :param schema_url: The `schema URL `_ of + the instrumentation library. + :param attributes: The attributes of the instrumentation library. + """ + ... + diff --git a/crates/tracing-subscriber/assets/python_stubs/layers/otel_otlp/__init__.pyi b/crates/tracing-subscriber/assets/python_stubs/layers/otel_otlp/__init__.pyi index 5dde690..c720928 100644 --- a/crates/tracing-subscriber/assets/python_stubs/layers/otel_otlp/__init__.pyi +++ b/crates/tracing-subscriber/assets/python_stubs/layers/otel_otlp/__init__.pyi @@ -12,6 +12,7 @@ from __future__ import annotations from typing import Dict, Optional, TYPE_CHECKING, final +from {{ host_package }}.{{ tracing_subscriber_module_name }}.common import InstrumentationLibrary @final class SpanLimits: @@ -70,6 +71,7 @@ class Config: timeout_millis: Optional[int] = None, pre_shutdown_timeout_millis: Optional[int] = 2000, filter: Optional[str] = None, + instrumentation_library: Optional[InstrumentationLibrary] = None, ) -> "Config": """ Initializes a new `Config`. @@ -94,6 +96,7 @@ class Config: If not specified, this will first check the `PYO3_TRACING_SUBSCRIBER_ENV_FILTER` environment variable and then `RUST_LOG` environment variable. If all of these values are empty, no spans will be exported. + :param instrumentation_library: Information about the library providing the tracing instrumentation. """ ... diff --git a/crates/tracing-subscriber/assets/python_stubs/layers/otel_otlp_file/__init__.pyi b/crates/tracing-subscriber/assets/python_stubs/layers/otel_otlp_file/__init__.pyi index 613126b..31ec3bf 100644 --- a/crates/tracing-subscriber/assets/python_stubs/layers/otel_otlp_file/__init__.pyi +++ b/crates/tracing-subscriber/assets/python_stubs/layers/otel_otlp_file/__init__.pyi @@ -11,6 +11,8 @@ # ***************************************************************************** from typing import Optional, final +from {{ host_package }}.{{ tracing_subscriber_module_name }}.common import InstrumentationLibrary + @final class Config: @@ -19,7 +21,7 @@ class Config: layer. """ - def __new__(cls, *, file_path: Optional[str] = None, filter: Optional[str] = None) -> "Config": + def __new__(cls, *, file_path: Optional[str] = None, filter: Optional[str] = None, instrumentation_library: Optional[InstrumentationLibrary] = None) -> "Config": """ :param file_path: The path to the file to write to. If not specified, defaults to stdout. :param filter: A filter string to use for this layer. This uses the same format as the @@ -30,6 +32,7 @@ class Config: If not specified, this will first check the `PYO3_TRACING_SUBSCRIBER_ENV_FILTER` environment variable and then `RUST_LOG` environment variable. If all of these values are empty, no spans will be exported. + :param instrumentation_library: Information about the library providing the tracing instrumentation. """ ... diff --git a/crates/tracing-subscriber/src/common.rs b/crates/tracing-subscriber/src/common.rs index 04dcbd5..699831e 100644 --- a/crates/tracing-subscriber/src/common.rs +++ b/crates/tracing-subscriber/src/common.rs @@ -1,7 +1,12 @@ +use std::borrow::Cow; +use std::collections::HashMap; + +use opentelemetry::InstrumentationLibrary; /// This module contains a number of `rigetti-pyo3` ports which were /// backed out due to build issues involving the `pyo3/extension-module` /// feature. This should be replaced upon resolution of /// . +use pyo3::prelude::*; use pyo3::PyErr; /// A macro for initializing a submodule. @@ -103,3 +108,59 @@ impl ToPythonError for std::convert::Infallible { unreachable!("Infallible can never happen") } } + +#[pyclass(name = "InstrumentationLibrary")] +#[derive(Debug, Clone)] +pub(crate) struct PyInstrumentationLibrary { + name: String, + version: Option, + schema_url: Option, + attributes: HashMap, +} + +#[pymethods] +impl PyInstrumentationLibrary { + #[new] + #[pyo3(signature = (name, /, version=None, schema_url=None, attributes=None))] + fn new( + name: String, + version: Option, + schema_url: Option, + attributes: Option>, + ) -> Self { + let attributes = attributes.unwrap_or_default(); + Self { + name, + version, + schema_url, + attributes, + } + } +} + +impl From for InstrumentationLibrary { + fn from(py_instrumentation_library: PyInstrumentationLibrary) -> Self { + let mut builder = Self::builder(Cow::from(py_instrumentation_library.name)); + if let Some(version) = py_instrumentation_library.version { + builder = builder.with_version(Cow::from(version)); + } + if let Some(schema_url) = py_instrumentation_library.schema_url { + builder = builder.with_schema_url(Cow::from(schema_url)); + } + let mut attributes = Vec::new(); + for (key, value) in py_instrumentation_library.attributes { + let kv = opentelemetry::KeyValue::new( + opentelemetry::Key::new(key), + opentelemetry::Value::from(value), + ); + attributes.push(kv); + } + builder = builder.with_attributes(attributes); + + builder.build() + } +} + +create_init_submodule! { + classes: [ PyInstrumentationLibrary ], +} diff --git a/crates/tracing-subscriber/src/layers/mod.rs b/crates/tracing-subscriber/src/layers/mod.rs index 023d70f..254563b 100644 --- a/crates/tracing-subscriber/src/layers/mod.rs +++ b/crates/tracing-subscriber/src/layers/mod.rs @@ -27,9 +27,8 @@ pub(crate) mod otel_otlp; #[cfg(feature = "layer-otel-otlp-file")] pub(crate) mod otel_otlp_file; -use std::{borrow::Cow, collections::HashMap, fmt::Debug}; +use std::fmt::Debug; -use opentelemetry::InstrumentationLibrary; use pyo3::prelude::*; use tracing_subscriber::{ filter::{FromEnvError, ParseError}, @@ -211,55 +210,3 @@ pub(crate) fn init_submodule(name: &str, py: Python, m: &PyModule) -> PyResult<( Ok(()) } - -#[pyclass(name = "InstrumentationLibrary")] -#[derive(Debug, Clone)] -pub(crate) struct PyInstrumentationLibrary { - name: String, - version: Option, - schema_url: Option, - attributes: HashMap, -} - -#[pymethods] -impl PyInstrumentationLibrary { - #[new] - #[pyo3(signature = (name, /, version=None, schema_url=None, attributes=None))] - fn new( - name: String, - version: Option, - schema_url: Option, - attributes: Option>, - ) -> Self { - let attributes = attributes.unwrap_or_default(); - Self { - name, - version, - schema_url, - attributes, - } - } -} - -impl From for InstrumentationLibrary { - fn from(py_instrumentation_library: PyInstrumentationLibrary) -> Self { - let mut builder = Self::builder(Cow::from(py_instrumentation_library.name)); - if let Some(version) = py_instrumentation_library.version { - builder = builder.with_version(Cow::from(version)); - } - if let Some(schema_url) = py_instrumentation_library.schema_url { - builder = builder.with_schema_url(Cow::from(schema_url)); - } - let mut attributes = Vec::new(); - for (key, value) in py_instrumentation_library.attributes { - let kv = opentelemetry::KeyValue::new( - opentelemetry::Key::new(key), - opentelemetry::Value::from(value), - ); - attributes.push(kv); - } - builder = builder.with_attributes(attributes); - - builder.build() - } -} diff --git a/crates/tracing-subscriber/src/layers/otel_otlp.rs b/crates/tracing-subscriber/src/layers/otel_otlp.rs index 4c95a9e..51b5403 100644 --- a/crates/tracing-subscriber/src/layers/otel_otlp.rs +++ b/crates/tracing-subscriber/src/layers/otel_otlp.rs @@ -31,10 +31,8 @@ use tonic::metadata::{ }; use tracing_subscriber::filter::{FromEnvError, ParseError}; -use super::{ - build_env_filter, force_flush_provider_as_shutdown, LayerBuildResult, PyInstrumentationLibrary, - WithShutdown, -}; +use super::{build_env_filter, force_flush_provider_as_shutdown, LayerBuildResult, WithShutdown}; +use crate::common::PyInstrumentationLibrary; /// Configures the [`opentelemetry-otlp`] crate layer. #[derive(Clone, Debug)] diff --git a/crates/tracing-subscriber/src/layers/otel_otlp_file.rs b/crates/tracing-subscriber/src/layers/otel_otlp_file.rs index 8809be8..088cf24 100644 --- a/crates/tracing-subscriber/src/layers/otel_otlp_file.rs +++ b/crates/tracing-subscriber/src/layers/otel_otlp_file.rs @@ -21,12 +21,10 @@ use opentelemetry_proto::transform::{ common::tonic::ResourceAttributesWithSchema, trace::tonic::group_spans_by_resource_and_scope, }; use pyo3::prelude::*; -use tracing_subscriber::Layer; -use super::{ - build_env_filter, force_flush_provider_as_shutdown, LayerBuildResult, PyInstrumentationLibrary, - WithShutdown, -}; +use super::{build_env_filter, force_flush_provider_as_shutdown, LayerBuildResult, WithShutdown}; +use crate::common::PyInstrumentationLibrary; +use tracing_subscriber::Layer; /// Configures the [`opentelemetry-stdout`] crate layer. If [`file_path`] is None, the layer /// will write to stdout. diff --git a/crates/tracing-subscriber/src/lib.rs b/crates/tracing-subscriber/src/lib.rs index 1956da1..32c1a5b 100644 --- a/crates/tracing-subscriber/src/lib.rs +++ b/crates/tracing-subscriber/src/lib.rs @@ -159,7 +159,8 @@ create_init_submodule! { errors: [TracingContextManagerError, TracingStartError, TracingShutdownError], submodules: [ "layers": layers::init_submodule, - "subscriber": subscriber::init_submodule + "subscriber": subscriber::init_submodule, + "common": common::init_submodule ], } diff --git a/crates/tracing-subscriber/src/stubs.rs b/crates/tracing-subscriber/src/stubs.rs index 2ede801..d13417f 100644 --- a/crates/tracing-subscriber/src/stubs.rs +++ b/crates/tracing-subscriber/src/stubs.rs @@ -173,6 +173,7 @@ pub fn write_stub_files( ) .map_err(Box::new) .map_err(Error::from)?; + include_stub_and_init!(directory, "common/", hb); include_stub_and_init!(directory, "subscriber/", hb); include_stub_and_init!(directory, "layers/", hb); include_stub_and_init!(directory, "layers/file/", hb); diff --git a/examples/pyo3-opentelemetry-lib/Cargo.toml b/examples/pyo3-opentelemetry-lib/Cargo.toml index 2925e72..2e76564 100644 --- a/examples/pyo3-opentelemetry-lib/Cargo.toml +++ b/examples/pyo3-opentelemetry-lib/Cargo.toml @@ -18,8 +18,8 @@ name = "pyo3_opentelemetry_lib" crate-type = ["cdylib", "rlib"] [dependencies] -opentelemetry = "0.26.0" -opentelemetry_sdk = "0.26.0" +opentelemetry = { workspace = true } +opentelemetry_sdk = { workspace = true } pyo3 = { workspace = true } pyo3-asyncio = { workspace = true, features = ["tokio", "tokio-runtime"] } pyo3-opentelemetry = { path = "../../crates/opentelemetry" } diff --git a/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/__init__.py b/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/__init__.py index 0993fc1..5b14109 100644 --- a/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/__init__.py +++ b/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/__init__.py @@ -12,6 +12,5 @@ from pyo3_opentelemetry_lib import _tracing_subscriber - __doc__ = _tracing_subscriber.__doc__ __all__ = getattr(_tracing_subscriber, "__all__", []) diff --git a/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/__init__.pyi b/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/__init__.pyi index bfacfbe..0ebc700 100644 --- a/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/__init__.pyi +++ b/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/__init__.pyi @@ -15,6 +15,7 @@ from __future__ import annotations from types import TracebackType from typing import TYPE_CHECKING, Optional, Type, final +from . import common as common from . import layers as layers from . import subscriber as subscriber diff --git a/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/common/__init__.py b/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/common/__init__.py new file mode 100644 index 0000000..1b06751 --- /dev/null +++ b/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/common/__init__.py @@ -0,0 +1,16 @@ +# ***************************************************************************** +# * AUTO-GENERATED CODE * +# * * +# * This code was generated by the `pyo3-tracing-subscriber` crate. Any * +# * modifications to this file should be made to the script or the generation * +# * process that produced this code. Specifically, see: * +# * `pyo3_tracing_subscriber::stubs::write_stub_files` * +# * * +# * Do not manually edit this file, as your changes may be overwritten the * +# * next time the code is generated. * +# ***************************************************************************** + +from pyo3_opentelemetry_lib._tracing_subscriber import common + +__doc__ = common.__doc__ +__all__ = getattr(common, "__all__", []) diff --git a/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/common/__init__.pyi b/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/common/__init__.pyi new file mode 100644 index 0000000..6395b5e --- /dev/null +++ b/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/common/__init__.pyi @@ -0,0 +1,43 @@ +# ***************************************************************************** +# * AUTO-GENERATED CODE * +# * * +# * This code was generated by the `pyo3-tracing-subscriber` crate. Any * +# * modifications to this file should be made to the script or the generation * +# * process that produced this code. Specifically, see: * +# * `pyo3_tracing_subscriber::stubs::write_stub_files` * +# * * +# * Do not manually edit this file, as your changes may be overwritten the * +# * next time the code is generated. * +# ***************************************************************************** + +from typing import Dict, Optional, final + +@final +class InstrumentationLibrary: + """ + Information about a library or crate providing instrumentation. + + An instrumentation library should be named to follow any naming conventions + of the instrumented library (e.g. 'middleware' for a web framework). + + See the `instrumentation libraries `_ + spec for more information. + """ + + def __new__( + cls, + name: str, + version: Optional[str] = None, + schema_url: Optional[str] = None, + attributes: Optional[Dict[str, str]] = None, + ) -> "InstrumentationLibrary": + """ + Initializes a new instance of `InstrumentationLibrary`. + + :param name: The name of the instrumentation library. + :param version: The version of the instrumentation library. + :param schema_url: The `schema URL `_ of + the instrumentation library. + :param attributes: The attributes of the instrumentation library. + """ + ... diff --git a/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/layers/__init__.py b/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/layers/__init__.py index a2c6030..a4dbb1c 100644 --- a/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/layers/__init__.py +++ b/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/layers/__init__.py @@ -12,7 +12,5 @@ from pyo3_opentelemetry_lib._tracing_subscriber import layers - __doc__ = layers.__doc__ __all__ = getattr(layers, "__all__", []) - diff --git a/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/layers/__init__.pyi b/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/layers/__init__.pyi index 741a427..50d94c1 100644 --- a/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/layers/__init__.pyi +++ b/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/layers/__init__.pyi @@ -11,20 +11,21 @@ # ***************************************************************************** from __future__ import annotations + from typing import TYPE_CHECKING -from . import file as file -from . import otel_otlp_file as otel_otlp_file +from . import file as file from . import otel_otlp as otel_otlp +from . import otel_otlp_file as otel_otlp_file if TYPE_CHECKING: - from typing import Union + from typing import Union - Config = Union[ - file.Config, - otel_otlp_file.Config, - otel_otlp.Config, - ] - """ + Config = Union[ + file.Config, + otel_otlp_file.Config, + otel_otlp.Config, + ] + """ One of the supported layer configurations that may be set on the subscriber configuration. """ diff --git a/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/layers/file/__init__.py b/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/layers/file/__init__.py index 365f089..ea3053c 100644 --- a/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/layers/file/__init__.py +++ b/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/layers/file/__init__.py @@ -12,8 +12,5 @@ from pyo3_opentelemetry_lib._tracing_subscriber.layers import file - __doc__ = file.__doc__ __all__ = getattr(file, "__all__", []) - - diff --git a/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/layers/file/__init__.pyi b/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/layers/file/__init__.pyi index 7caa5c2..8054827 100644 --- a/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/layers/file/__init__.pyi +++ b/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/layers/file/__init__.pyi @@ -39,4 +39,3 @@ class Config: :param json: Whether or not to format the output as JSON. Defaults to `True`. """ ... - diff --git a/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/layers/otel_otlp/__init__.py b/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/layers/otel_otlp/__init__.py index cd94b23..efccc22 100644 --- a/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/layers/otel_otlp/__init__.py +++ b/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/layers/otel_otlp/__init__.py @@ -12,7 +12,5 @@ from pyo3_opentelemetry_lib._tracing_subscriber.layers import otel_otlp - __doc__ = otel_otlp.__doc__ __all__ = getattr(otel_otlp, "__all__", []) - diff --git a/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/layers/otel_otlp/__init__.pyi b/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/layers/otel_otlp/__init__.pyi index 5dde690..76699c9 100644 --- a/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/layers/otel_otlp/__init__.pyi +++ b/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/layers/otel_otlp/__init__.pyi @@ -11,7 +11,10 @@ # ***************************************************************************** from __future__ import annotations -from typing import Dict, Optional, TYPE_CHECKING, final + +from typing import TYPE_CHECKING, Dict, Optional, final + +from pyo3_opentelemetry_lib._tracing_subscriber.common import InstrumentationLibrary @final class SpanLimits: @@ -47,8 +50,6 @@ class Resource: schema_url: Optional[str] = None, ) -> "Resource": ... - - @final class Config: """ @@ -70,6 +71,7 @@ class Config: timeout_millis: Optional[int] = None, pre_shutdown_timeout_millis: Optional[int] = 2000, filter: Optional[str] = None, + instrumentation_library: Optional[InstrumentationLibrary] = None, ) -> "Config": """ Initializes a new `Config`. @@ -94,18 +96,19 @@ class Config: If not specified, this will first check the `PYO3_TRACING_SUBSCRIBER_ENV_FILTER` environment variable and then `RUST_LOG` environment variable. If all of these values are empty, no spans will be exported. + :param instrumentation_library: Information about the library providing the tracing instrumentation. """ ... if TYPE_CHECKING: - from typing import List, Union + from typing import List, Union ResourceValueArray = Union[List[bool], List[int], List[float], List[str]] """ An array of `ResourceValue`s. This array is homogenous, so all values must be of the same type. """ - ResourceValue= Union[bool, int, float, str, ResourceValueArray] + ResourceValue = Union[bool, int, float, str, ResourceValueArray] """ A value that can be added to a `Resource`. """ diff --git a/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/layers/otel_otlp_file/__init__.py b/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/layers/otel_otlp_file/__init__.py index db105d0..e28b7c3 100644 --- a/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/layers/otel_otlp_file/__init__.py +++ b/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/layers/otel_otlp_file/__init__.py @@ -12,7 +12,5 @@ from pyo3_opentelemetry_lib._tracing_subscriber.layers import otel_otlp_file - __doc__ = otel_otlp_file.__doc__ __all__ = getattr(otel_otlp_file, "__all__", []) - diff --git a/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/layers/otel_otlp_file/__init__.pyi b/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/layers/otel_otlp_file/__init__.pyi index 613126b..bd2b13a 100644 --- a/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/layers/otel_otlp_file/__init__.pyi +++ b/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/layers/otel_otlp_file/__init__.pyi @@ -12,6 +12,8 @@ from typing import Optional, final +from pyo3_opentelemetry_lib._tracing_subscriber.common import InstrumentationLibrary + @final class Config: """ @@ -19,7 +21,13 @@ class Config: layer. """ - def __new__(cls, *, file_path: Optional[str] = None, filter: Optional[str] = None) -> "Config": + def __new__( + cls, + *, + file_path: Optional[str] = None, + filter: Optional[str] = None, + instrumentation_library: Optional[InstrumentationLibrary] = None, + ) -> "Config": """ :param file_path: The path to the file to write to. If not specified, defaults to stdout. :param filter: A filter string to use for this layer. This uses the same format as the @@ -30,6 +38,6 @@ class Config: If not specified, this will first check the `PYO3_TRACING_SUBSCRIBER_ENV_FILTER` environment variable and then `RUST_LOG` environment variable. If all of these values are empty, no spans will be exported. + :param instrumentation_library: Information about the library providing the tracing instrumentation. """ ... - diff --git a/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/subscriber/__init__.py b/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/subscriber/__init__.py index 5737e29..64d80de 100644 --- a/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/subscriber/__init__.py +++ b/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/subscriber/__init__.py @@ -12,7 +12,5 @@ from pyo3_opentelemetry_lib._tracing_subscriber import subscriber - __doc__ = subscriber.__doc__ __all__ = getattr(subscriber, "__all__", []) - diff --git a/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/subscriber/__init__.pyi b/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/subscriber/__init__.pyi index 548de0c..e0894d0 100644 --- a/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/subscriber/__init__.pyi +++ b/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/_tracing_subscriber/subscriber/__init__.pyi @@ -22,4 +22,3 @@ class Config: """ def __new__(cls, *, layer: layers.Config) -> "Config": ... - diff --git a/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/test/tracing_test.py b/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/test/tracing_test.py index b2502c9..5e3a93f 100644 --- a/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/test/tracing_test.py +++ b/examples/pyo3-opentelemetry-lib/pyo3_opentelemetry_lib/test/tracing_test.py @@ -183,7 +183,7 @@ async def test_file_export_asynchronous( span_trace_id = int(span["traceId"], 16) assert span_trace_id is None or span_trace_id == trace_id, filename if span["name"] == "example_function_impl_async": - duration_ns = span["endTimeUnixNano"] - span["startTimeUnixNano"] + duration_ns = int(span["endTimeUnixNano"]) - int(span["startTimeUnixNano"]) expected_duration_ms = 100 assert duration_ns > (expected_duration_ms * 10**6) assert duration_ns < (1.5 * expected_duration_ms * 10**6)