content: [workspace]
  resolver = '2'
  
  members = [
    "packages/*",
  ]
  
  exclude = [
    "packages/3rdparty",
    "packages/nextclade-schemas",
  ]
  
  
  [workspace.package]
  name = "nextclade"
  version = "3.17.0"
  description = "Alignment, mutation calling, phylogenetic placement, clade assignment and quality control checks for viral genetic sequences. Library module."
  repository = "https://github.com/nextstrain/nextclade"
  documentation = "https://docs.nextstrain.org/projects/nextclade/en/stable/"
  homepage = "https://clades.nextstrain.org/"
  edition = "2021"
  license = "MIT"
  publish = false
  authors = ["Nextstrain team"]
  
  
  [workspace.dependencies]
  assert2 = "=0.3.11"
  atty = "=0.2.14"
  auto_ops = "=0.3.0"
  base64 = "=0.22.1"
  bio = "=1.3.1"
  bio-types = "=1.0.0"
  bzip2 = { version = "=0.4.4", features = ["static"] }
  chrono = { version = "=0.4.26", default-features = false, features = ["clock", "std", "wasmbind"] }
  clap = { version = "=4.4.2", features = ["derive", "color", "unicode", "unstable-styles"] }
  clap-markdown = "=0.1.4"
  clap_complete = "=4.4.1"
  clap_complete_fig = "=4.4.0"
  color-eyre = "=0.6.2"
  comfy-table = "=7.0.1"
  console = "=0.15.11"
  console_error_panic_hook = "=0.1.7"
  criterion = { version = "=0.5.1", features = ["html_reports"] }
  crossbeam = "=0.8.2"
  crossbeam-channel = "=0.5.8"
  csv = "=1.2.2"
  ctor = "=0.2.2"
  derive_more = "=0.99.17"
  dotenv = "=0.15.0"
  dotenv_codegen = "=0.15.0"
  edit-distance = "=2.1.0"
  either = "=1.8.1"
  env_logger = "=0.10.0"
  eyre = "=0.6.8"
  flate2 = "=1.0.26"
  gcollections = "=1.5.0"
  getrandom = { version = "=0.2.10", features = ["js"] }
  indexmap = { version = "=1.9.3", features = ["serde"] }
  intervallum = "=1.4.0"
  itertools = "=0.11.0"
  js-sys = { version = "=0.3.64", features = [] }
  lazy_static = "=1.4.0"
  log = "=0.4.19"
  maplit = "=1.0.2"
  multimap = "=0.8.3"
  num = "=0.4.0"
  num-traits = "=0.2.15"
  num_cpus = "=1.16.0"
  optfield = "=0.3.0"
  ordered-float = { version = "=3.9.1", features = ["rand", "serde", "schemars"] }
  owo-colors = { version = "=3.5.0", features = ["supports-colors"] }
  percent-encoding = "=2.3.1"
  pretty_assertions = "=1.3.0"
  rayon = "=1.7.0"
  regex = "=1.8.4"
  reqwest = { version = "=0.12.8", default-features = false, features = ["blocking", "deflate", "gzip", "brotli", "socks", "rustls-tls-native-roots", "rustls-tls-webpki-roots"] }
  rstest = "=0.17.0"
  rstest_reuse = "=0.5.0"
  rust_xlsxwriter = { version = "=0.66.0", features = ["wasm"] }
  schemars = { version = "=0.8.22", features = ["chrono", "either", "enumset", "indexmap", "raw_value", "preserve_order"] }
  semver = { version = "=1.0.17", features = ["serde"] }
  serde = { version = "=1.0.164", features = ["derive"] }
  serde-wasm-bindgen = { version = "=0.5.0" }
  serde_json = { version = "=1.0.99", features = ["preserve_order", "indexmap", "unbounded_depth"] }
  serde_repr = "=0.1.12"
  serde_stacker = { version = "=0.1.8" }
  serde_yaml = "=0.9.22"
  strsim = "=0.10.0"
  strum = "=0.27.1"
  strum_macros = "=0.27.1"
  tinytemplate = "=1.2.1"
  traversal = "=0.1.2"
  url = { version = "=2.4.0", features = ["serde"] }
  urlencoding = "=2.1.2"
  validator = { version = "=0.16.1", features = ["derive"] }
  wasm-bindgen = { version = "=0.2.93", features = ["serde-serialize"] }
  wasm-logger = "=0.2.0"
  web-sys = { version = "=0.3.64", features = ["console"] }
  xz2 = { version = "=0.1.7", features = ["static"] }
  zip = { version = "=0.6.6", default-features = false, features = ["aes-crypto", "deflate", "time"] }
  zstd = { version = "=0.12.3", features = ["zstdmt"] }
  
  
  [workspace.lints.rust]
  # Lint groups
  # https://doc.rust-lang.org/rustc/lints/groups.html
  deprecated_in_future = "warn"
  future_incompatible = "warn"
  nonstandard_style = "warn"
  rust_2018_idioms = "warn"
  rust_2021_compatibility = "warn"
  trivial_numeric_casts = "warn"
  
  # Disable some of the lints enabled by default
  # https://doc.rust-lang.org/rustc/lints/listing/warn-by-default.html
  elided_lifetimes_in_paths = "allow"
  
  # Enable lints not enabled by default
  # https://doc.rust-lang.org/rustc/lints/listing/allowed-by-default.html
  absolute_paths_not_starting_with_crate = "warn"
  explicit_outlives_requirements = "warn"
  ffi_unwind_calls = "warn"
  keyword_idents = "warn"
  let_underscore_drop = "warn"
  macro_use_extern_crate = "warn"
  meta_variable_misuse = "warn"
  missing_abi = "warn"
  non_ascii_idents = "warn"
  rust_2021_incompatible_closure_captures = "warn"
  rust_2021_incompatible_or_patterns = "warn"
  rust_2021_prefixes_incompatible_syntax = "warn"
  rust_2021_prelude_collisions = "warn"
  single_use_lifetimes = "warn"
  trivial_casts = "warn"
  unit_bindings = "warn"
  unsafe_code = "warn"
  unsafe_op_in_unsafe_fn = "warn"
  unused_lifetimes = "warn"
  unused_macro_rules = "warn"
  unused_qualifications = "warn"
  unused_tuple_struct_fields = "warn"
  variant_size_differences = "warn"
  # missing_copy_implementations = "warn"
  # missing_debug_implementations = "warn"
  
  [workspace.lints.clippy]
  # https://rust-lang.github.io/rust-clippy/stable/
  # This is a strict (sometimes too much) Clippy setup.
  # We go bold and enable all Clippy lints, then disable the ones that we don't need.
  # This has an advantage that when upgrading Rust and Clippy, we receive new lints automatically.
  all = { level = "warn", priority = -2 }
  pedantic = { level = "warn", priority = -1 }
  blanket_clippy_restriction_lints = "allow"
  restriction = { level = "warn", priority = -1 }
  nursery = { level = "warn", priority = -1 }
  # Disable some of the Clippy lints
  absolute_paths = "allow"
  allow_attributes = "allow"
  arithmetic_side_effects = "allow"
  as_conversions = "allow"
  assign_op_pattern = "allow"
  bool_to_int_with_if = "allow"
  cast_lossless = "allow"
  cast_possible_truncation = "allow"
  cast_possible_wrap = "allow"
  cast_precision_loss = "allow"
  cast_sign_loss = "allow"
  cognitive_complexity = "allow"
  comparison_chain = "allow"
  default_numeric_fallback = "allow"
  deref_by_slicing = "allow"
  doc_markdown = "allow"
  else_if_without_else = "allow"
  exhaustive_enums = "allow"
  exhaustive_structs = "allow"
  expect_used = "allow"
  float_arithmetic = "allow"
  if_not_else = "allow"
  impl_trait_in_params = "allow"
  implicit_hasher = "allow"
  implicit_return = "allow"
  inconsistent_digit_grouping = "allow"
  indexing_slicing = "allow"
  integer_division = "allow"
  iter_nth_zero = "allow"
  large_digit_groups = "allow"
  len_without_is_empty = "allow"
  len_zero = "allow"
  let_underscore_must_use = "allow"
  manual_string_new = "allow"
  match_same_arms = "allow"
  min_ident_chars = "allow"
  missing_assert_message = "allow"
  missing_docs_in_private_items = "allow"
  missing_errors_doc = "allow"
  missing_inline_in_public_items = "allow"
  missing_panics_doc = "allow"
  missing_trait_methods = "allow"
  mod_module_files = "allow"
  module_inception = "allow"
  module_name_repetitions = "allow"
  modulo_arithmetic = "allow"
  must_use_candidate = "allow"
  needless_for_each = "allow"
  needless_raw_string_hashes = "allow"
  needless_raw_strings = "allow"
  new_without_default = "allow"
  non_ascii_literal = "allow"
  option_if_let_else = "allow"
  panic = "allow"
  panic_in_result_fn = "allow"
  pattern_type_mismatch = "allow"
  print_stderr = "allow"
  print_stdout = "allow"
  pub_use = "allow"
  pub_with_shorthand = "allow"
  question_mark_used = "allow"
  self_named_module_files = "allow"
  semicolon_inside_block = "allow"
  semicolon_outside_block = "allow"
  separated_literal_suffix = "allow"
  shadow_reuse = "allow"
  shadow_same = "allow"
  shadow_unrelated = "allow"
  should_implement_trait = "allow"
  similar_names = "allow"
  single_call_fn = "allow"
  single_char_lifetime_names = "allow"
  std_instead_of_alloc = "allow"
  std_instead_of_core = "allow"
  struct_field_names = "allow"
  suboptimal_flops = "allow"
  too_many_arguments = "allow"
  too_many_lines = "allow"
  type_repetition_in_bounds = "allow"
  unnecessary_wraps = "allow"
  unreachable = "allow"
  unreadable_literal = "allow"
  unsafe_derive_deserialize = "allow"
  unused_self = "allow"
  unused_unit = "allow"
  unwrap_in_result = "allow"
  unwrap_used = "allow"
  use_debug = "allow"
  use_self = "allow"
  useless_transmute = "allow"
  wildcard_enum_match_arm = "allow"
  
  
  [workspace.lints.rustdoc]
  broken_intra_doc_links = "warn"
  bare_urls = "warn"
  