[lint]
extend-select = [
	# upstream

	"C901", # complex-structure
	"I", # isort
	"PERF401", # manual-list-comprehension

	# Ensure modern type annotation syntax and best practices
	# Not including those covered by type-checkers or exclusive to Python 3.11+
	"FA", # flake8-future-annotations
	"F404", # late-future-import
	"PYI", # flake8-pyi
	"UP006", # non-pep585-annotation
	"UP007", # non-pep604-annotation
	"UP010", # unnecessary-future-import
	"UP035", # deprecated-import
	"UP037", # quoted-annotation
	"UP043", # unnecessary-default-type-args

	# local
]
ignore = [
	# upstream

	# Typeshed rejects complex or non-literal defaults for maintenance and testing reasons,
	# irrelevant to this project.
	"PYI011", # typed-argument-default-in-stub
	# https://docs.astral.sh/ruff/formatter/#conflicting-lint-rules
	"W191",
	"E111",
	"E114",
	"E117",
	"D206",
	"D300",
	"Q000",
	"Q001",
	"Q002",
	"Q003",
	"COM812",
	"COM819",

	# local
]

[format]
# Enable preview to get hugged parenthesis unwrapping and other nice surprises
# See https://github.com/jaraco/skeleton/pull/133#issuecomment-2239538373
preview = true
# https://docs.astral.sh/ruff/settings/#format_quote-style
quote-style = "preserve"
