From 1b90a38da4f29f00e4efc89812e7968f4130c71d Mon Sep 17 00:00:00 2001 From: "hash-worker[bot]" <180894564+hash-worker[bot]@users.noreply.github.com> Date: Thu, 20 Nov 2025 09:15:31 +0000 Subject: [PATCH 1/7] Update Rust toolchains to nightly-2025-11-17 --- libs/error-stack/README.md | 2 +- libs/error-stack/macros/README.md | 2 +- libs/error-stack/src/lib.rs | 2 +- rust-toolchain.toml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/libs/error-stack/README.md b/libs/error-stack/README.md index 4144d842018..9f28b1807b1 100644 --- a/libs/error-stack/README.md +++ b/libs/error-stack/README.md @@ -7,7 +7,7 @@ [![crates.io](https://img.shields.io/crates/v/error-stack)][crates.io] [![libs.rs](https://img.shields.io/badge/libs.rs-error--stack-orange)][libs.rs] -[![rust-version](https://img.shields.io/static/v1?label=Rust&message=1.83.0/nightly-2025-11-03&color=blue)][rust-version] +[![rust-version](https://img.shields.io/static/v1?label=Rust&message=1.83.0/nightly-2025-11-17&color=blue)][rust-version] [![documentation](https://img.shields.io/docsrs/error-stack)][documentation] [![license](https://img.shields.io/crates/l/error-stack)][license] diff --git a/libs/error-stack/macros/README.md b/libs/error-stack/macros/README.md index 64d5d637511..0a0722c1e2a 100644 --- a/libs/error-stack/macros/README.md +++ b/libs/error-stack/macros/README.md @@ -6,7 +6,7 @@ [![crates.io](https://img.shields.io/crates/v/error-stack-macros)][crates.io] [![libs.rs](https://img.shields.io/badge/libs.rs-error--stack--macros-orange)][libs.rs] -[![rust-version](https://img.shields.io/static/v1?label=Rust&message=1.83.0/nightly-2025-11-03&color=blue)][rust-version] +[![rust-version](https://img.shields.io/static/v1?label=Rust&message=1.83.0/nightly-2025-11-17&color=blue)][rust-version] [![documentation](https://img.shields.io/docsrs/error-stack-macros)][documentation] [![license](https://img.shields.io/crates/l/error-stack)][license] diff --git a/libs/error-stack/src/lib.rs b/libs/error-stack/src/lib.rs index 5be77fc67e8..dcab3f9a09f 100644 --- a/libs/error-stack/src/lib.rs +++ b/libs/error-stack/src/lib.rs @@ -2,7 +2,7 @@ //! //! [![crates.io](https://img.shields.io/crates/v/error-stack)][crates.io] //! [![libs.rs](https://img.shields.io/badge/libs.rs-error--stack-orange)][libs.rs] -//! [![rust-version](https://img.shields.io/static/v1?label=Rust&message=1.83.0/nightly-2025-11-03&color=blue)][rust-version] +//! [![rust-version](https://img.shields.io/static/v1?label=Rust&message=1.83.0/nightly-2025-11-17&color=blue)][rust-version] //! //! [crates.io]: https://crates.io/crates/error-stack //! [libs.rs]: https://lib.rs/crates/error-stack diff --git a/rust-toolchain.toml b/rust-toolchain.toml index 4d8b267a472..e4706ab9c15 100644 --- a/rust-toolchain.toml +++ b/rust-toolchain.toml @@ -1,3 +1,3 @@ [toolchain] -channel = "nightly-2025-11-03" +channel = "nightly-2025-11-17" components = ['rustfmt', 'clippy', 'llvm-tools-preview', 'miri', 'rust-src', 'rust-analyzer', 'rustc-codegen-cranelift-preview'] From 70e70f90a293c7c8af4055b07929667899a7a7a5 Mon Sep 17 00:00:00 2001 From: Bilal Mahmoud Date: Thu, 20 Nov 2025 12:28:18 +0100 Subject: [PATCH 2/7] chore: remove unused feature --- libs/@local/hashql/compiletest/src/lib.rs | 1 - 1 file changed, 1 deletion(-) diff --git a/libs/@local/hashql/compiletest/src/lib.rs b/libs/@local/hashql/compiletest/src/lib.rs index 2f6bd769450..0498414d267 100644 --- a/libs/@local/hashql/compiletest/src/lib.rs +++ b/libs/@local/hashql/compiletest/src/lib.rs @@ -9,7 +9,6 @@ // Library Features assert_matches, - duration_from_nanos_u128, file_buffered, formatting_options, lock_value_accessors, From 22c1db8645af373d06f5de53204903c47c26c5a7 Mon Sep 17 00:00:00 2001 From: Bilal Mahmoud Date: Thu, 20 Nov 2025 12:29:36 +0100 Subject: [PATCH 3/7] chore: manually update to 2025-11-18 --- libs/error-stack/README.md | 2 +- libs/error-stack/macros/README.md | 2 +- libs/error-stack/src/lib.rs | 2 +- rust-toolchain.toml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/libs/error-stack/README.md b/libs/error-stack/README.md index 9f28b1807b1..ab97546d398 100644 --- a/libs/error-stack/README.md +++ b/libs/error-stack/README.md @@ -7,7 +7,7 @@ [![crates.io](https://img.shields.io/crates/v/error-stack)][crates.io] [![libs.rs](https://img.shields.io/badge/libs.rs-error--stack-orange)][libs.rs] -[![rust-version](https://img.shields.io/static/v1?label=Rust&message=1.83.0/nightly-2025-11-17&color=blue)][rust-version] +[![rust-version](https://img.shields.io/static/v1?label=Rust&message=1.83.0/nightly-2025-11-18&color=blue)][rust-version] [![documentation](https://img.shields.io/docsrs/error-stack)][documentation] [![license](https://img.shields.io/crates/l/error-stack)][license] diff --git a/libs/error-stack/macros/README.md b/libs/error-stack/macros/README.md index 0a0722c1e2a..7ff585f7007 100644 --- a/libs/error-stack/macros/README.md +++ b/libs/error-stack/macros/README.md @@ -6,7 +6,7 @@ [![crates.io](https://img.shields.io/crates/v/error-stack-macros)][crates.io] [![libs.rs](https://img.shields.io/badge/libs.rs-error--stack--macros-orange)][libs.rs] -[![rust-version](https://img.shields.io/static/v1?label=Rust&message=1.83.0/nightly-2025-11-17&color=blue)][rust-version] +[![rust-version](https://img.shields.io/static/v1?label=Rust&message=1.83.0/nightly-2025-11-18&color=blue)][rust-version] [![documentation](https://img.shields.io/docsrs/error-stack-macros)][documentation] [![license](https://img.shields.io/crates/l/error-stack)][license] diff --git a/libs/error-stack/src/lib.rs b/libs/error-stack/src/lib.rs index dcab3f9a09f..a5e3c514a33 100644 --- a/libs/error-stack/src/lib.rs +++ b/libs/error-stack/src/lib.rs @@ -2,7 +2,7 @@ //! //! [![crates.io](https://img.shields.io/crates/v/error-stack)][crates.io] //! [![libs.rs](https://img.shields.io/badge/libs.rs-error--stack-orange)][libs.rs] -//! [![rust-version](https://img.shields.io/static/v1?label=Rust&message=1.83.0/nightly-2025-11-17&color=blue)][rust-version] +//! [![rust-version](https://img.shields.io/static/v1?label=Rust&message=1.83.0/nightly-2025-11-18&color=blue)][rust-version] //! //! [crates.io]: https://crates.io/crates/error-stack //! [libs.rs]: https://lib.rs/crates/error-stack diff --git a/rust-toolchain.toml b/rust-toolchain.toml index e4706ab9c15..c1eff52901d 100644 --- a/rust-toolchain.toml +++ b/rust-toolchain.toml @@ -1,3 +1,3 @@ [toolchain] -channel = "nightly-2025-11-17" +channel = "nightly-2025-11-18" components = ['rustfmt', 'clippy', 'llvm-tools-preview', 'miri', 'rust-src', 'rust-analyzer', 'rustc-codegen-cranelift-preview'] From 6ab2a70184113f773741903de4a295c1a8ee19ed Mon Sep 17 00:00:00 2001 From: Bilal Mahmoud Date: Thu, 20 Nov 2025 12:34:20 +0100 Subject: [PATCH 4/7] chore: update snapshots --- .../tests/ui/macro_invalid_args.stderr | 64 +++++++++++++++++++ 1 file changed, 64 insertions(+) diff --git a/libs/error-stack/tests/ui/macro_invalid_args.stderr b/libs/error-stack/tests/ui/macro_invalid_args.stderr index e3599fdc71b..685bded8ce2 100644 --- a/libs/error-stack/tests/ui/macro_invalid_args.stderr +++ b/libs/error-stack/tests/ui/macro_invalid_args.stderr @@ -7,6 +7,22 @@ error[E0277]: the trait bound `&str: IntoReport` is not satisfied | | the trait `std::error::Error` is not implemented for `str` | required by a bound introduced by this call | +note: there are multiple different versions of crate `core` in the dependency graph + --> $RUST/core/src/error.rs + | + | pub trait Error: Debug + Display { + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this is the expected trait + | + ::: $CARGO/serde_core-$VERSION/src/de/mod.rs + | + | declare_error_trait!(Error: Sized + StdError); + | --------------------------------------------- this is the trait that was imported + | + ::: $CARGO/serde_core-$VERSION/src/ser/mod.rs + | + | declare_error_trait!(Error: Sized + StdError); + | --------------------------------------------- this is the trait that was imported + = help: you can use `cargo tree` to explore your dependency tree help: the trait `IntoReport` is implemented for `error_stack::Report` --> src/report.rs | @@ -46,6 +62,22 @@ error[E0277]: the trait bound `&str: Into>` is not sat 17 | bail!("Error") | ^^^^^^^^^^^^^^ the trait `std::error::Error` is not implemented for `str` | +note: there are multiple different versions of crate `core` in the dependency graph + --> $RUST/core/src/error.rs + | + | pub trait Error: Debug + Display { + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this is the expected trait + | + ::: $CARGO/serde_core-$VERSION/src/de/mod.rs + | + | declare_error_trait!(Error: Sized + StdError); + | --------------------------------------------- this is the trait that was imported + | + ::: $CARGO/serde_core-$VERSION/src/ser/mod.rs + | + | declare_error_trait!(Error: Sized + StdError); + | --------------------------------------------- this is the trait that was imported + = help: you can use `cargo tree` to explore your dependency tree help: the trait `IntoReport` is implemented for `error_stack::Report` --> src/report.rs | @@ -66,6 +98,22 @@ error[E0277]: the trait bound `&str: IntoReport` is not satisfied | | the trait `std::error::Error` is not implemented for `str` | required by a bound introduced by this call | +note: there are multiple different versions of crate `core` in the dependency graph + --> $RUST/core/src/error.rs + | + | pub trait Error: Debug + Display { + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this is the expected trait + | + ::: $CARGO/serde_core-$VERSION/src/de/mod.rs + | + | declare_error_trait!(Error: Sized + StdError); + | --------------------------------------------- this is the trait that was imported + | + ::: $CARGO/serde_core-$VERSION/src/ser/mod.rs + | + | declare_error_trait!(Error: Sized + StdError); + | --------------------------------------------- this is the trait that was imported + = help: you can use `cargo tree` to explore your dependency tree help: the trait `IntoReport` is implemented for `error_stack::Report` --> src/report.rs | @@ -105,6 +153,22 @@ error[E0277]: the trait bound `&str: Into>` is not sat 21 | let _ = ensure!(true, "Error"); | ^^^^^^^^^^^^^^^^^^^^^^ the trait `std::error::Error` is not implemented for `str` | +note: there are multiple different versions of crate `core` in the dependency graph + --> $RUST/core/src/error.rs + | + | pub trait Error: Debug + Display { + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this is the expected trait + | + ::: $CARGO/serde_core-$VERSION/src/de/mod.rs + | + | declare_error_trait!(Error: Sized + StdError); + | --------------------------------------------- this is the trait that was imported + | + ::: $CARGO/serde_core-$VERSION/src/ser/mod.rs + | + | declare_error_trait!(Error: Sized + StdError); + | --------------------------------------------- this is the trait that was imported + = help: you can use `cargo tree` to explore your dependency tree help: the trait `IntoReport` is implemented for `error_stack::Report` --> src/report.rs | From defbaa7ff95b24d98a24a03c5853bc4b0858d042 Mon Sep 17 00:00:00 2001 From: Bilal Mahmoud Date: Thu, 20 Nov 2025 12:50:04 +0100 Subject: [PATCH 5/7] chore: update snapshots --- .../tests/ui/macro_invalid_args.stderr | 64 ------------------- 1 file changed, 64 deletions(-) diff --git a/libs/error-stack/tests/ui/macro_invalid_args.stderr b/libs/error-stack/tests/ui/macro_invalid_args.stderr index 685bded8ce2..e3599fdc71b 100644 --- a/libs/error-stack/tests/ui/macro_invalid_args.stderr +++ b/libs/error-stack/tests/ui/macro_invalid_args.stderr @@ -7,22 +7,6 @@ error[E0277]: the trait bound `&str: IntoReport` is not satisfied | | the trait `std::error::Error` is not implemented for `str` | required by a bound introduced by this call | -note: there are multiple different versions of crate `core` in the dependency graph - --> $RUST/core/src/error.rs - | - | pub trait Error: Debug + Display { - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this is the expected trait - | - ::: $CARGO/serde_core-$VERSION/src/de/mod.rs - | - | declare_error_trait!(Error: Sized + StdError); - | --------------------------------------------- this is the trait that was imported - | - ::: $CARGO/serde_core-$VERSION/src/ser/mod.rs - | - | declare_error_trait!(Error: Sized + StdError); - | --------------------------------------------- this is the trait that was imported - = help: you can use `cargo tree` to explore your dependency tree help: the trait `IntoReport` is implemented for `error_stack::Report` --> src/report.rs | @@ -62,22 +46,6 @@ error[E0277]: the trait bound `&str: Into>` is not sat 17 | bail!("Error") | ^^^^^^^^^^^^^^ the trait `std::error::Error` is not implemented for `str` | -note: there are multiple different versions of crate `core` in the dependency graph - --> $RUST/core/src/error.rs - | - | pub trait Error: Debug + Display { - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this is the expected trait - | - ::: $CARGO/serde_core-$VERSION/src/de/mod.rs - | - | declare_error_trait!(Error: Sized + StdError); - | --------------------------------------------- this is the trait that was imported - | - ::: $CARGO/serde_core-$VERSION/src/ser/mod.rs - | - | declare_error_trait!(Error: Sized + StdError); - | --------------------------------------------- this is the trait that was imported - = help: you can use `cargo tree` to explore your dependency tree help: the trait `IntoReport` is implemented for `error_stack::Report` --> src/report.rs | @@ -98,22 +66,6 @@ error[E0277]: the trait bound `&str: IntoReport` is not satisfied | | the trait `std::error::Error` is not implemented for `str` | required by a bound introduced by this call | -note: there are multiple different versions of crate `core` in the dependency graph - --> $RUST/core/src/error.rs - | - | pub trait Error: Debug + Display { - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this is the expected trait - | - ::: $CARGO/serde_core-$VERSION/src/de/mod.rs - | - | declare_error_trait!(Error: Sized + StdError); - | --------------------------------------------- this is the trait that was imported - | - ::: $CARGO/serde_core-$VERSION/src/ser/mod.rs - | - | declare_error_trait!(Error: Sized + StdError); - | --------------------------------------------- this is the trait that was imported - = help: you can use `cargo tree` to explore your dependency tree help: the trait `IntoReport` is implemented for `error_stack::Report` --> src/report.rs | @@ -153,22 +105,6 @@ error[E0277]: the trait bound `&str: Into>` is not sat 21 | let _ = ensure!(true, "Error"); | ^^^^^^^^^^^^^^^^^^^^^^ the trait `std::error::Error` is not implemented for `str` | -note: there are multiple different versions of crate `core` in the dependency graph - --> $RUST/core/src/error.rs - | - | pub trait Error: Debug + Display { - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ this is the expected trait - | - ::: $CARGO/serde_core-$VERSION/src/de/mod.rs - | - | declare_error_trait!(Error: Sized + StdError); - | --------------------------------------------- this is the trait that was imported - | - ::: $CARGO/serde_core-$VERSION/src/ser/mod.rs - | - | declare_error_trait!(Error: Sized + StdError); - | --------------------------------------------- this is the trait that was imported - = help: you can use `cargo tree` to explore your dependency tree help: the trait `IntoReport` is implemented for `error_stack::Report` --> src/report.rs | From 72851cf5ce11d27351f156a0c8f05b09f8b421b8 Mon Sep 17 00:00:00 2001 From: Bilal Mahmoud Date: Fri, 21 Nov 2025 13:57:10 +0100 Subject: [PATCH 6/7] fix: ignore snapshot that adds additional notes --- Cargo.lock | 1 + libs/error-stack/Cargo.toml | 1 + libs/error-stack/tests/compiletest.rs | 19 +++++++++++++++++-- 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index cb9451b4c4f..5db382210c5 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2400,6 +2400,7 @@ dependencies = [ "futures", "futures-core", "futures-util", + "glob", "insta", "owo-colors", "pin-project-lite", diff --git a/libs/error-stack/Cargo.toml b/libs/error-stack/Cargo.toml index 4613631dff3..6b4f813860e 100644 --- a/libs/error-stack/Cargo.toml +++ b/libs/error-stack/Cargo.toml @@ -40,6 +40,7 @@ ansi-to-html = { workspace = true } expect-test = { workspace = true } futures = { workspace = true, default-features = false, features = ["executor"] } futures-util = { workspace = true } +glob = "0.3.3" insta = { workspace = true, features = ["filters", "ron"] } owo-colors = { workspace = true } regex = { workspace = true } diff --git a/libs/error-stack/tests/compiletest.rs b/libs/error-stack/tests/compiletest.rs index d24d7b3d997..dc5d0852cfb 100644 --- a/libs/error-stack/tests/compiletest.rs +++ b/libs/error-stack/tests/compiletest.rs @@ -1,7 +1,22 @@ +use std::ffi::OsStr; + #[cfg_attr(not(nightly), ignore = "Outputs are different across toolchains")] #[cfg_attr(miri, ignore = "Miri does not support UI tests")] #[test] -fn ui() { +fn ui() -> Result<(), Box> { + let paths = glob::glob("tests/ui/*.rs")?.collect::, _>>()?; + let test_cases = trybuild::TestCases::new(); - test_cases.compile_fail("tests/ui/*.rs"); + + for path in paths { + if cfg!(feature = "serde") && path.file_name() == Some(OsStr::new("macro_invalid_args.rs")) + { + // This test adds additional notes when serde is enabled + continue; + } + + test_cases.compile_fail(path); + } + + Ok(()) } From 3e697cd347b2628f47b51fb331540bbd8f934337 Mon Sep 17 00:00:00 2001 From: Bilal Mahmoud Date: Fri, 21 Nov 2025 13:59:48 +0100 Subject: [PATCH 7/7] fix: dependencies --- Cargo.toml | 46 ++++++++++++++++++------------------- libs/error-stack/Cargo.toml | 2 +- 2 files changed, 24 insertions(+), 24 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index e2f025f9e49..70bffc46f81 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -93,29 +93,27 @@ hashql-syntax-jexpr.path = "libs/@local/hashql/syntax-jexpr" type-system.path = "libs/@blockprotocol/type-system/rust" # External dependencies -annotate-snippets = { version = "0.12.8", default-features = false } -ansi-to-html = { version = "0.2.2", default-features = false } -anstream = { version = "0.6.21", default-features = false } -anstyle = { version = "1.0.13", default-features = false } -anstyle-lossy = { version = "1.1.4", default-features = false } -anstyle-svg = { version = "0.1.11", default-features = false } -async-scoped = { version = "0.9.0", default-features = false } -aws-config = { version = "1.8.10" } -aws-sdk-s3 = { version = "1.110.0", default-features = false } -aws-types = { version = "1.3.10", default-features = false } -axum = { version = "0.8.6" } -axum-core = { version = "0.5.5" } -bitvec = { version = "1.0.1", default-features = false } -bon = { version = "3.8.1", default-features = false, features = ["implied-bounds"] } -bstr = { version = "1.12.1" } -bumpalo = { version = "3.19.0", default-features = false, features = ["allocator_api"] } -bytes = { version = "1.10.1" } -bytes-utils = { version = "0.1.4", default-features = false } -camino = { version = "1.1.12", default-features = false } -cargo_metadata = { version = "0.22.0", default-features = false } -lcov = { version = "0.8.1" } -# FIXME: Remove `decimal`: https://github.com/cedar-policy/cedar/issues/1700 -cedar-policy-core = { version = "4.5.1", default-features = false, features = ["decimal"] } +annotate-snippets = { version = "0.12.8", default-features = false } +ansi-to-html = { version = "0.2.2", default-features = false } +anstream = { version = "0.6.21", default-features = false } +anstyle = { version = "1.0.13", default-features = false } +anstyle-lossy = { version = "1.1.4", default-features = false } +anstyle-svg = { version = "0.1.11", default-features = false } +async-scoped = { version = "0.9.0", default-features = false } +aws-config = { version = "1.8.10" } +aws-sdk-s3 = { version = "1.110.0", default-features = false } +aws-types = { version = "1.3.10", default-features = false } +axum = { version = "0.8.6" } +axum-core = { version = "0.5.5" } +bitvec = { version = "1.0.1", default-features = false } +bon = { version = "3.8.1", default-features = false, features = ["implied-bounds"] } +bstr = { version = "1.12.1" } +bumpalo = { version = "3.19.0", default-features = false, features = ["allocator_api"] } +bytes = { version = "1.10.1" } +bytes-utils = { version = "0.1.4", default-features = false } +camino = { version = "1.1.12", default-features = false } +cargo_metadata = { version = "0.22.0", default-features = false } +cedar-policy-core = { version = "4.5.1", default-features = false, features = ["decimal"] } # FIXME: Remove `decimal`: https://github.com/cedar-policy/cedar/issues/1700 circular-buffer = { version = "1.1.0", default-features = false } clap = { version = "4.5.51", features = ["color", "error-context", "help", "std", "suggestions", "usage"] } clap_builder = { version = "4.5.51", default-features = false, features = ["std"] } @@ -146,6 +144,7 @@ futures-core = { version = "0.3.31", default-features = fa futures-io = { version = "0.3.31", default-features = false } futures-sink = { version = "0.3.31", default-features = false } futures-util = { version = "0.3.31", default-features = false } +glob = { version = "0.3.3" } globset = { version = "0.4.18", default-features = false } guppy = { version = "0.17.20", default-features = false } hashbrown = { version = "0.16.0", default-features = false, features = ["inline-more", "nightly"] } @@ -164,6 +163,7 @@ iso8601-duration = { version = "0.2.0", default-features = fal itertools = { version = "0.14.0", default-features = false } json-number = { version = "0.4.9", default-features = false } jsonptr = { version = "0.7.1", default-features = false } +lcov = { version = "0.8.1" } lexical = { version = "7.0.5", default-features = false } libp2p = { version = "0.56.0", default-features = false } libp2p-core = { version = "0.43.1", default-features = false } diff --git a/libs/error-stack/Cargo.toml b/libs/error-stack/Cargo.toml index 6b4f813860e..d564b65b5b2 100644 --- a/libs/error-stack/Cargo.toml +++ b/libs/error-stack/Cargo.toml @@ -40,7 +40,7 @@ ansi-to-html = { workspace = true } expect-test = { workspace = true } futures = { workspace = true, default-features = false, features = ["executor"] } futures-util = { workspace = true } -glob = "0.3.3" +glob = { workspace = true } insta = { workspace = true, features = ["filters", "ron"] } owo-colors = { workspace = true } regex = { workspace = true }