content: [tool.black]
  line-length = 99
  target-version = ["py310", "py311", "py312", "py313"]
  include = '\.pyi?$'
  
  [tool.isort]
  profile = "black"
  py_version = 312
  src_paths = ["mlos_core", "mlos_bench", "mlos_viz"]
  
  # TODO: Consider switching to pydocstringformatter
  [tool.docformatter]
  recursive = true
  black = true
  style = "numpy"
  pre-summary-newline = true
  close-quotes-on-newline = true
  
  # TODO: move some other setup.cfg configs here
  
  [tool.pylint.main]
  # Specify a score threshold to be exceeded before program exits with error.
  fail-under = 9.9
  
  # Make sure public methods are documented.
  # See Also: https://github.com/PyCQA/pydocstyle/issues/309#issuecomment-1426642147
  # Also fail on unused imports.
  fail-on = [
      "missing-function-docstring",
      "unused-import",
  ]
  
  # Help inform pylint where to find the project's source code without needing to relyon PYTHONPATH.
  #init-hook="from pylint.config import find_pylintrc; import os, sys; sys.path.append(os.path.dirname(find_pylintrc())); from logging import warning; warning(sys.path)"
  #init-hook = "from logging import warning; warning(sys.path)"
  
  # Load some extra checkers.
  load-plugins = [
      "pylint.extensions.bad_builtin",
      "pylint.extensions.code_style",
      "pylint.extensions.docparams",
      "pylint.extensions.docstyle",
      "pylint.extensions.for_any_all",
      "pylint.extensions.mccabe",
      "pylint.extensions.no_self_use",
      "pylint.extensions.private_import",
      "pylint.extensions.redefined_loop_name",
      "pylint.extensions.redefined_variable_type",
      "pylint.extensions.set_membership",
      "pylint.extensions.typing",
  ]
  
  [tool.pylint.format]
  # Maximum number of characters on a single line.
  max-line-length = 99
  
  [tool.pylint."messages control"]
  disable = [
      "R0801", # ignore similar code messages
      "fixme",
      "no-else-return",
      "consider-using-assignment-expr",
      "docstring-first-line-empty",
      "missing-raises-doc",
  ]
  
  [tool.pylint.string]
  check-quote-consistency = true
  check-str-concat-over-line-jumps = true
  
  # Tell the vscode python extension to ignore some autogenerated files.
  [tool.pyright]
  exclude = [
      ".git",
      ".mypy_cache",
      ".pytest_cache",
      "**/node_modules",
      "**/__pycache__",
      "**/*.egg-info",
      "doc/source/autoapi",
      "doc/build/html",
      "doc/build/doctrees",
      "htmlcov",
      "mlos_*/build/",
      "mlos_*/dist/",
      "mlos_*/setup.py"
  ]
  typeCheckingMode = "standard"
  reportMissingTypeStubs = false  # not as granular as mypy to override on a per package basis
  #reportMissingImports = false    # somewhat expected for build files and docs
  