content: [build-system]
  requires = ["setuptools>=45", "wheel", "setuptools_scm[toml]>=6.2"]
  
  [tool.ruff]
  target-version = "py311"
  line-length = 120
  
  [tool.ruff.lint]
  select = [
      "E",  # pycodestyle errors
      "W",  # pycodestyle warnings
      "F",  # pyflakes
      "I",  # isort
      "B",  # flake8-bugbear
      "C4", # flake8-comprehensions
      "UP", # pyupgrade
  ]
  ignore = [
      "E501",  # line too long, handled by black
      "B008",  # do not perform function calls in argument defaults
      "C901",  # too complex
  ]
  
  [tool.ruff.lint.per-file-ignores]
  "tests/*" = ["E501"]
  "stubs/*" = ["F401"]
  
  [tool.ruff.lint.isort]
  known-first-party = ["custom_components.wiim"]
  
  [tool.black]
  target-version = ["py311"]
  line-length = 120
  
  [tool.mypy]
  python_version = "3.13"
  strict = true
  ignore_missing_imports = true
  exclude = [
      ".*/site-packages/.*"
  ]
  plugins = ["pydantic.mypy"]
  mypy_path = "stubs"
  
  [[tool.mypy.overrides]]
  module = "tests.*"
  disallow_untyped_defs = false
  
  [[tool.mypy.overrides]]
  module = "tests.*"
  ignore_errors = true
  
  [[tool.mypy.overrides]]
  module = "stubs.*"
  ignore_errors = true
  
  [[tool.mypy.overrides]]
  module = "custom_components.wiim.api"
  ignore_errors = true
  
  [[tool.mypy.overrides]]
  module = "custom_components.wiim.coordinator"
  ignore_errors = true
  
  [[tool.mypy.overrides]]
  module = "custom_components.wiim.*"
  ignore_errors = true
  
  [[tool.mypy.overrides]]
  module = "homeassistant.*"
  ignore_errors = true
  