[tool.ruff]
line-length = 125
target-version = "py38"

[tool.ruff.lint]
select = [
  "ASYNC",  # flake8-async
  "B",      # flake8-bugbear
  "C4",     # flake8-comprehensions
  "COM",    # flake8-commas
  "DJ",     # flake8-django
  "E",      # pycodestyle
  "F",      # Pyflakes
  "FBT",    # flake8-boolean-trap
  "FLY",    # flynt
  "G",      # flake8-logging-format
  "INT",    # flake8-gettext
  "ISC",    # flake8-implicit-str-concat
  "NPY",    # NumPy-specific rules
  "PD",     # pandas-vet
  "PIE",    # flake8-pie
  "PLE",    # Pylint errors
  "PT",     # flake8-pytest-style
  "RET504", # flake8-return
  "RSE",    # flake8-raise
  "SIM",    # flake8-simplify
  "T10",    # flake8-debugger
  "TID",    # flake8-tidy-imports
  "UP",     # pyupgrade
  "W",      # pycodestyle
  "YTT",    # flake8-2020
  "RUF",    # Ruff-specific rules
]
ignore = [
  "B008",
  "B018",
  "C408",
  "COM812",
  "DJ007",
  "DJ008",
  "E721",
  "E731",
  "E741",
  "FBT003",
  "PD011",
  "PD901",
  "PIE790",  # See https://github.com/astral-sh/ruff/issues/10538
  "PT001",
  "PT003",
  "PT006",
  "PT007",
  "PT009",
  "PT011",
  "PT012",
  "PT013",
  "PT017",
  "PT019",
  "PT023",
  "PT027",
  "RUF001",  # don't break our tests by rewriting confusables
  "RUF005",
  "RUF017",
  "SIM102",
  "SIM105",
  "SIM108",
  "SIM114",
  "SIM117",
  "SIM300",
  "UP031",
  "UP037",
]

[tool.ruff.lint.per-file-ignores]
"hypothesis-python/src/hypothesis/core.py" = ["B030", "B904", "FBT001"]
"hypothesis-python/src/hypothesis/internal/compat.py" = ["F401"]
"hypothesis-python/src/hypothesis/internal/conjecture/data.py" = ["FBT001"]
"hypothesis-python/src/hypothesis/internal/conjecture/datatree.py" = ["FBT001"]
"hypothesis-python/tests/nocover/test_imports.py" = ["F403", "F405"]
"hypothesis-python/tests/numpy/test_randomness.py" = ["NPY002"]
"hypothesis-python/src/hypothesis/internal/conjecture/*" = ["B023"]
"hypothesis-python/tests/conjecture/test_data_tree.py" = ["B023"]
"hypothesis-python/tests/conjecture/test_test_data.py" = ["FBT001"]

[tool.mypy]
python_version = "3.10"
platform = "linux"

allow_redefinition = true
disallow_untyped_decorators = true
disallow_incomplete_defs = true
no_implicit_optional = true
no_implicit_reexport = true

follow_imports = "silent"
ignore_missing_imports = true

strict_equality = true
warn_no_return = true
warn_unused_ignores = true
warn_unused_configs = true
warn_redundant_casts = true

disable_error_code = "annotation-unchecked"
