content: [package]
  name = "editoast"
  license.workspace = true
  version.workspace = true
  edition.workspace = true
  
  [workspace]
  members = [
    ".",
    "authz",
    "cache",
    "common",
    "core_client",
    "database",
    "editoast_derive",
    "editoast_models",
    "fga",
    "fga_derive",
    "osm_to_railjson",
    "osrdyne_client",
    "schemas",
    "search",
  ]
  
  [workspace.lints.rust]
  async_fn_in_trait = "allow" # all of our public traits are only used inside the project
  dependency_on_unit_never_type_fallback = "allow" # this is caused by tracing, we can't do anything about it
  
  [workspace.package]
  version = "0.1.0"
  edition = "2024"
  license = "LGPL-3.0"
  
  [workspace.dependencies]
  approx = "0.5.1"
  arcstr = { version = "1.2.0", features = ["serde"] }
  authz = { path = "./authz" }
  cache = { path = "./cache" }
  chrono = { version = "0.4.42", default-features = false, features = ["serde"] }
  clap = { version = "4.5", features = ["derive", "env"] }
  common = { path = "./common" }
  core_client = { path = "./core_client" }
  darling = "0.21"
  database = { path = "./database" }
  deadpool = { version = "0.12.3", default-features = false, features = [
    "managed",
    "rt_tokio_1",
    "unmanaged",
  ] }
  deadpool-redis = { version = "0.22.0", default-features = false, features = [
    "tokio-comp",
    "tokio-native-tls-comp",
  ] }
  derive_more = { version = "2.0.1", features = [
    "debug",
    "deref",
    "display",
    "from",
    "from_str",
  ] }
  diesel = { version = "2.2", default-features = false, features = [
    "32-column-tables",
    "chrono",
    "postgres",
    "serde_json",
    "uuid",
  ] }
  diesel-async = { version = "0.5", default-features = false, features = [
    "deadpool",
    "postgres",
  ] }
  diesel_json = "0.2.1"
  editoast_derive = { path = "./editoast_derive" }
  editoast_models = { path = "./editoast_models" }
  educe = "0.6.0"
  enum-map = "2.7.3"
  fga = { path = "./fga" }
  futures = "0.3.31"
  futures-util = "0.3.30"
  geojson = { version = "0.24", default-features = false }
  geos = { version = "8.3.1", features = ["json"] }
  hostname = "0.4.0"
  itertools = "0.14.0"
  lapin = "2.5.4"
  linkme = "0.3.35"
  mvt = "0.10.3"
  openssl = "0.10.73"
  opentelemetry = { version = "0.30.0", default-features = false, features = [
    "trace",
  ] }
  opentelemetry-semantic-conventions = { version = "0.26", features = [
    "semconv_experimental",
  ] }
  opentelemetry_sdk = { version = "0.30.0", default-features = false, features = [
    "internal-logs",
    "rt-tokio",
    "trace",
  ] }
  osrdyne_client = { path = "./osrdyne_client" }
  postgis_diesel = { version = "2.5.0", features = ["serde"] }
  postgres-openssl = "0.5.2"
  pretty_assertions = "1.4.1"
  proc-macro2 = "1.0"
  quote = "1.0"
  rand = "0.9.2"
  rangemap = "1.6.0"
  regex = "1.11"
  reqwest = { version = "0.12.23", features = ["json"] }
  rstest = { version = "0.19.0", default-features = false }
  schemas = { path = "./schemas" }
  search = { path = "./search" }
  serde = { version = "1.0.228", features = ["derive", "rc"] }
  serde_json = "1.0.145"
  serde_with = { version = "3.15.0", default-features = false, features = [
    "macros",
  ] }
  stdext = "0.3.3"
  strum = { version = "0.26.3", features = ["derive"] }
  syn = "2.0"
  tempfile = "3.20.0" # redis-test (crate cache) isn't up to date
  thiserror = "2.0.17"
  tokio = { version = "1.47.1", features = ["fs", "macros", "rt-multi-thread"] }
  tokio-postgres = "0.7.14"
  tracing = { version = "0.1.41", default-features = false, features = [
    "attributes",
    "log",
  ] }
  tracing-opentelemetry = { version = "0.31.0", default-features = false, features = [
    "tracing-log",
  ] }
  tracing-subscriber = { version = "0.3.20", features = ["env-filter"] }
  uom = { version = "0.36.0", default-features = false, features = ["f64", "si"] }
  url = { version = "2.5.7", features = ["serde"] }
  urlencoding = "2.1.3"
  utoipa = { version = "5.4.0", features = ["chrono", "uuid"] }
  uuid = { version = "1.18.1", features = ["serde", "v4"] }
  
  [dependencies]
  anyhow = "1.0"
  approx.workspace = true
  arcstr.workspace = true
  authz.workspace = true
  axum = { version = "0.8.4", default-features = false, features = [
    "multipart",
    "tracing",
  ] }
  axum-extra = { version = "0.10.1", default-features = false, features = [
    "typed-header",
  ] }
  axum-test = { version = "18.0", default-features = false }
  axum-tracing-opentelemetry = { version = "0.30.0", default-features = false, features = [
    "tracing_level_info",
  ] }
  cache.workspace = true
  chrono.workspace = true
  clap.workspace = true
  colored = "3.0.0"
  common = { workspace = true }
  core_client = { workspace = true, features = ["mocking_client"] }
  dashmap = "6.1.0"
  database.workspace = true
  deadpool.workspace = true
  deadpool-redis.workspace = true
  derive_more.workspace = true
  diesel.workspace = true
  diesel-async = { workspace = true }
  diesel_json.workspace = true
  editoast_derive.workspace = true
  editoast_models.workspace = true
  educe.workspace = true
  enum-map.workspace = true
  fga.workspace = true
  futures.workspace = true
  futures-util.workspace = true
  geos.workspace = true
  headers = "0.4.1"
  hostname.workspace = true
  image = { version = "0.25.6", default-features = false, features = [
    "bmp",
    "gif",
    "jpeg",
    "png",
    "tiff",
    "webp",
  ] }
  inventory = "0.3"
  itertools.workspace = true
  json-patch = { version = "4.1.0", default-features = false, features = [
    "utoipa",
  ] }
  lapin.workspace = true
  linkme.workspace = true
  mime = "0.3.17"
  mvt.workspace = true
  opentelemetry.workspace = true
  opentelemetry-otlp = { version = "0.30.0", default-features = false, features = [
    "grpc-tonic",
    "trace",
  ] }
  opentelemetry-semantic-conventions.workspace = true
  opentelemetry_sdk.workspace = true
  ordered-float = { version = "5.0.0", features = ["serde"] }
  osrdyne_client.workspace = true
  pathfinding = "4.14.0"
  petgraph = "0.8.2"
  postgis_diesel.workspace = true
  rand.workspace = true
  rangemap.workspace = true
  regex.workspace = true
  reqwest.workspace = true
  schemas.workspace = true
  search = { workspace = true }
  serde = { workspace = true, features = ["derive"] }
  serde_json.workspace = true
  serde_with.workspace = true
  serde_yaml = "0.9.34"
  sha1 = "0.10"
  strum.workspace = true
  thiserror.workspace = true
  tokio.workspace = true
  tokio-util = { version = "0.7.16", features = ["io", "tracing"] }
  tower = "0.5.2"
  tower-http = { version = "0.6.6", features = [
    "cors",
    "fs",
    "limit",
    "normalize-path",
    "trace",
  ] }
  tracing.workspace = true
  tracing-opentelemetry.workspace = true
  tracing-subscriber.workspace = true
  uom.workspace = true
  url.workspace = true
  utoipa.workspace = true
  uuid.workspace = true
  
  [dev-dependencies]
  authz = { workspace = true }
  axum = { version = "0.8.4", default-features = false, features = [
    "macros",
    "multipart",
    "tracing",
  ] }
  core_client = { workspace = true, features = ["mocking_client"] }
  database = { workspace = true, features = ["testing"] }
  editoast_models = { workspace = true, features = ["testing"] }
  fga = { path = "./fga", features = ["test_utilities"] }
  osrdyne_client = { workspace = true, features = ["mock_client"] }
  pretty_assertions.workspace = true
  rstest.workspace = true
  schemas = { workspace = true, features = ["testing"] }
  stdext.workspace = true
  tempfile.workspace = true
  
  [lints]
  workspace = true
  
  [profile.dev]
  debug = "limited"
  
  [profile.dev-for-debug]
  inherits = "dev"
  debug = "full"
  
  # Makes snapshot diffs faster to compute.
  # insta is used in editast_derive to track changes made to proc-macros.
  # Cf. https://insta.rs/docs/quickstart/#optional-faster-runs
  [profile.dev.package]
  insta.opt-level = 3
  similar.opt-level = 3
  