content: target-version = "py39"
  line-length = 120
  
  [lint]
  exclude = [
      "tests/fixtures/*.py",
  ]
  select = ["ALL"]
  ignore = [
      "A001",  # Variable is shadowing a Python builtin
      "A005",  # Module shadows a Python standard-library module
      "ANN101",  # Missing type annotation for self
      "ANN102",  # Missing type annotation for cls
      "ANN204",  # Missing return type annotation for special method __str__
      "ANN401",  # Dynamically typed expressions (typing.Any) are disallowed
      "ARG005",  # Unused lambda argument
      "C901",  # Too complex
      "D105",  # Missing docstring in magic method
      "D417",  # Missing argument description in the docstring
      "E501",  # Line too long
      "EM",  # Raw strings in exceptions
      "FIX001",  # Line contains FIXME
      "FIX002",  # Line contains TODO
      "ERA001",  # Commented out code
      "PD",  # Pandas-related
      "PERF203",  # Try-except block in for loop (zero-cost with Python 3.11+)
      "PLR0911",  # Too many return statements
      "PLR0912",  # Too many branches
      "PLR0913",  # Too many arguments to function call
      "PLR0915",  # Too many statements
      "SLF001",  # Private member accessed
      "TD001",  # Invalid TODO tag: FIXME
      "TD002",  # Missing author in TODO
      "TD003",  # Missing issue link on the line following this TODO
      "TRY003",  # Avoid specifying long messages outside the exception class
  ]
  
  logger-objects = ["griffe.logger"]
  
  [lint.per-file-ignores]
  "src/griffe/__main__.py" = [
      "D100",  # Missing module docstring
  ]
  "src/griffe/_internal/cli.py" = [
      "T201",  # Print statement
  ]
  "src/griffe/_internal/git.py" = [
      "S603",  # `subprocess` call: check for execution of untrusted input
      "S607",  # Starting a process with a partial executable path
  ]
  "src/griffe/_internal/agents/nodes/*.py" = [
      "ARG001",  # Unused function argument
      "N812",  # Lowercase `keyword` imported as non-lowercase `NodeKeyword`
  ]
  "src/griffe/_internal/debug.py" = [
      "T201",  # Print statement
  ]
  "src/griffe/_internal/**.py" = [
      "D100",  # Missing docstring in public module
  ]
  "scripts/*.py" = [
      "D100",  # Missing docstring in public module
      "D101",  # Missing docstring in public class
      "D103",  # Missing docstring in public function
      "INP001",  # File is part of an implicit namespace package
      "T201",  # Print statement
  ]
  "tests/test_git.py" = [
      "S603",  # `subprocess` call: check for execution of untrusted input
      "S607",  # Starting a process with a partial executable path
  ]
  "tests/**.py" = [
      "ARG005",  # Unused lambda argument
      "FBT001",  # Boolean positional arg in function definition
      "PLC1901",  # a == "" can be simplified to not a
      "PLR2004",  # Magic value used in comparison
      "S101",  # Use of assert detected
  ]
  
  [lint.flake8-quotes]
  docstring-quotes = "double"
  
  [lint.flake8-tidy-imports]
  ban-relative-imports = "all"
  
  [lint.isort]
  known-first-party = ["griffe"]
  
  [lint.pydocstyle]
  convention = "google"
  
  [format]
  exclude = [
      "tests/fixtures/*.py",
  ]
  docstring-code-format = true
  docstring-code-line-length = 80
  