content: [build-system]
  requires = ["setuptools>=45", "wheel", "setuptools_scm>=6.2"]
  
  
  [tool.setuptools_scm]
  write_to = "mpl_interactions/_version.py"
  
  [tool.black]
  line-length = 100
  
  [tool.isort]
  profile = "black"
  line_length = 100
  
  [tool.pytest.ini_options]
  testpaths = ["docs/examples", "tests"]
  norecursedirs = [
      ".ipynb_checkpoints",
      "devlop",
      "docs/examples/gallery",
      "node_modules",
  ]
  addopts = [
      "--current-env",
      "--doctest-continue-on-failure",
      "--doctest-modules",
      "--ignore-glob=docs/examples/*.py",
      "--mpl",
      "--nbval",
  ]
  
  
  # https://github.com/charliermarsh/ruff
  [tool.ruff]
  line-length = 100
  
  exclude = ["docs/examples/devlop/*.ipynb"]
  [tool.ruff.lint]
  extend-select = [
      "E",    # style errors
      "F",    # flakes
      "D",    # pydocstyle
      "I001", # isort
      "U",    # pyupgrade
      # "N",  # pep8-naming
      # "S",  # bandit
      "C",      # flake8-comprehensions
      "B",      # flake8-bugbear
      "A001",   # flake8-builtins
      "RUF",    # ruff-specific rules
      "RUF100", # Unused noqa directive
  ]
  extend-ignore = [
      "D100", # Missing docstring in public module
      "D107", # Missing docstring in __init__
      "D203", # 1 blank line required before class docstring
      "D212", # Multi-line docstring summary should start at the first line
      "D213", # Multi-line docstring summary should start at the second line
      "D413", # Missing blank line after last section
      "D416", # Section name should end with a colon
      "C901", # function too complex
  ]
  
  
  [tool.ruff.lint.per-file-ignores]
  "ipyplot.py" = ["F401"]
  "tests/*.py" = ["D"]
  "__init__.py" = ["E402", "F403", "D104"]
  "docs/conf.py" = ["A001", "C901", "D200", "D400", "D415"]
  "docs/examples/**/*.py" = ["D400", "D415", "D205", "D103"]
  "docs/examples/**/*.ipynb" = ["D400", "D415", "D205", "D103", "F811", "E402"]
  