content: [workspace]
  members = [
      "opentelemetry",
      "opentelemetry-*",
      "opentelemetry-*/examples/*",
      "opentelemetry-otlp/tests/*",
      "examples/*",
      "stress",
  ]
  resolver = "2"
  # Avoid applying patch to force use of workspace members for this
  # not actively maintained crate
  exclude = ["opentelemetry-prometheus"]
  
  [profile.bench]
  # https://doc.rust-lang.org/cargo/reference/profiles.html#debug
  # See function names in profiling reports.
  # 2/true is too much, 0 is not enough, line-tables-only is just right for back traces
  debug = "line-tables-only"
  
  [workspace.dependencies]
  async-trait = "0.1"
  bytes = "1"
  criterion = "0.5"
  futures-core = "0.3"
  futures-executor = "0.3"
  futures-util = { version = "0.3", default-features = false }
  http = { version = "1.1", default-features = false, features = ["std"] }
  http-body-util = "0.1"
  hyper = { version = "1.3", default-features = false }
  hyper-util = "0.1"
  log = "0.4.21"
  once_cell = "1.13"
  pin-project-lite = "0.2"
  prost = "0.14"
  prost-build = "0.14"
  prost-types = "0.14"
  rand = { version = "0.9", default-features = false }
  reqwest = { version = "0.12", default-features = false }
  serde = { version = "1.0", default-features = false }
  serde_json = "1.0"
  temp-env = "0.3.6"
  thiserror = { version = "2", default-features = false }
  tonic = { version = "0.14.1", default-features = false }
  tonic-prost-build = "0.14.1"
  tonic-prost = "0.14.1"
  tokio = { version = "1", default-features = false }
  tokio-stream = "0.1"
  # Using `tracing 0.1.40` because 0.1.39 (which is yanked) introduces the ability to set event names in macros,
  # required for OpenTelemetry's internal logging macros.
  tracing = { version = ">=0.1.40", default-features = false }
  # `tracing-core >=0.1.33` is required for compatibility with `tracing >=0.1.40`.
  tracing-core = { version = ">=0.1.33", default-features = false }
  tracing-subscriber = { version = "0.3", default-features = false }
  url = { version = "2.5", default-features = false }
  anyhow = "1.0.94"
  base64 = "0.22.1"
  chrono = { version = "0.4.34", default-features = false }
  ctor = "0.2.9"
  ctrlc = "3.2.5"
  futures-channel = "0.3"
  futures-sink = "0.3"
  const-hex = "1.14.1"
  lazy_static = "1.4.0"
  num-format = "0.4.4"
  num_cpus = "1.15.0"
  opentelemetry = { path = "opentelemetry", version = "0.31", default-features = false }
  opentelemetry_sdk = { path = "opentelemetry-sdk", version = "0.31", default-features = false }
  opentelemetry-appender-log = { path = "opentelemetry-appender-log", version = "0.31", default-features = false }
  opentelemetry-appender-tracing = { path = "opentelemetry-appender-tracing", version = "0.31.1", default-features = false }
  opentelemetry-http = { path = "opentelemetry-http", version = "0.31", default-features = false }
  opentelemetry-jaeger-propagator = { path = "opentelemetry-jaeger-propagator", version = "0.31", default-features = false }
  opentelemetry-otlp = { path = "opentelemetry-otlp", version = "0.31", default-features = false }
  opentelemetry-proto = { path = "opentelemetry-proto", version= "0.31", default-features = false }
  opentelemetry-semantic-conventions = { path = "opentelemetry-semantic-conventions", version = "0.31", default-features = false }
  opentelemetry-stdout = { path = "opentelemetry-stdout", version = "0.31", default-features = false }
  percent-encoding = "2.0"
  rstest = "0.23.0"
  schemars = "0.8"
  sysinfo = "0.32"
  tempfile = "3.3.0"
  testcontainers = "0.23.1"
  tracing-log = "0.2"
  tracing-opentelemetry = "0.32"
  typed-builder = "0.20"
  uuid = "1.3"
  pprof = { version = "0.14", features = ["flamegraph", "criterion"] }
  
  # Aviod use of crates.io version of these crates through the tracing-opentelemetry dependencies
  [patch.crates-io]
  opentelemetry = { path = "opentelemetry" }
  opentelemetry_sdk = { path = "opentelemetry-sdk" }
  opentelemetry-stdout = { path = "opentelemetry-stdout" }
  
  [workspace.lints.rust]
  rust_2024_compatibility = { level = "warn", priority = -1 }
  # No need to enable those, because it either not needed or results in ugly syntax
  edition_2024_expr_fragment_specifier = "allow"
  if_let_rescope = "allow"
  tail_expr_drop_order = "allow"
  
  [workspace.lints.clippy]
  all = { level = "warn", priority = 1 }
  