content: # Copyright Materialize, Inc. and contributors. All rights reserved.
  #
  # Use of this software is governed by the Business Source License
  # included in the LICENSE file at the root of this repository.
  #
  # As of the Change Date specified in that file, in accordance with
  # the Business Source License, use of this software will be governed
  # by the Apache License, Version 2.0.
  
  [tool.black]
  target_version = ["py310"]
  # DEFAULT_EXCLUDES from https://github.com/psf/black/blob/main/src/black/const.py but without "build" directory since we use it in our source code. Instead exclude target and target-xcompile
  exclude = "(\\.direnv|\\.eggs|\\.git|\\.hg|\\.ipynb_checkpoints|\\.mypy_cache|\\.nox|\\.pytest_cache|\\.ruff_cache|\\.tox|\\.svn|\\.venv|\\.vscode|__pypackages__|_build|buck-out|dist|venv|target|target-xcompile|\\.terraform|misc/fivetran-sdk)"
  
  [tool.ruff]
  target-version = "py310"
  select = [
      "F",
      "I",
      "UP", # e.g. PEP585 (Python 3.10+) type annotations
      "E711", # comparisons to none
  ]
  extend-exclude = [
      "venv", "target",
      # This dbt adapter may be published elsewhere, so doesn't follow the same compatibility rules as our internal code.
      "misc/dbt-materialize",
      # The fivetran-sdk is a submodule that we don't control.
      "misc/fivetran-sdk",
  ]
  
  [tool.ruff.isort]
  known-first-party = ["materialize"]
  
  [tool.pyright]
  # Allow pyright to find imports for python files
  # in random folders, e.g. mzcompose.py files
  extraPaths = ["misc/python"]
  venvPath = "./misc/python"
  venv = "venv"
  exclude = ["**/venv", "**/.terraform"]
  stubPath = "./misc/python/stubs"
  
  reportMissingImports = "warning"
  reportMissingModuleSource = "warning"
  reportMissingTypeStubs = "warning"
  reportOptionalMemberAccess = "warning"
  reportUnboundVariable = "warning"
  reportPrivateImportUsage = "warning"
  reportTypedDictNotRequiredAccess = "none"
  reportOptionalSubscript = "warning"
  typeCheckingMode = "basic"
  ignore = [
    # Rust build artifacts are not subject to our static analysis.
    "target/",
  ]
  
  [tool.pytest.ini_options]
  log_cli = true
  log_cli_level = "INFO"
  # do not include the timestamp which is already provided by Buildkite
  log_cli_format = "[%(levelname)8s] %(message)s (%(filename)s:%(lineno)s)"
  