content: [tool.poetry]
  name = "isdb-scanner"
  version = "1.3.2"
  description = "受信可能な日本のテレビチャンネル (ISDB-T/ISDB-S) を全自動でスキャンし、スキャン結果を様々な形式で出力するツール"
  authors = ["tsukumi <tsukumijima@users.noreply.github.com>"]
  license = "MIT"
  readme = "Readme.md"
  
  [tool.taskipy.tasks]
  lint = "ruff check --fix ."
  format = "ruff format ."
  
  [tool.poetry.dependencies]
  python = ">=3.11,<3.13"
  ariblib = {url = "https://github.com/tsukumijima/ariblib/releases/download/v0.1.4/ariblib-0.1.4-py3-none-any.whl"}
  devtools = ">=0.12.0"
  libusb-package = ">=1.0.26"
  pydantic = ">=2.1.0"
  pyusb = ">=1.2.1"
  ruamel-yaml = ">=0.17.0"
  typer = ">=0.9.0"
  typing-extensions = ">=4.7.1"
  
  [tool.poetry.group.dev.dependencies]
  pyinstaller = ">=5.13.2"
  ruff = ">=0.9.1"
  taskipy = "^1.14.0"
  
  [build-system]
  requires = ["poetry-core"]
  build-backend = "poetry.core.masonry.api"
  
  [tool.ruff]
  # 1行の長さを最大140文字に設定
  line-length = 140
  # インデントの幅を4スペースに設定
  indent-width = 4
  # Python 3.11 を利用する
  target-version = "py311"
  
  [tool.ruff.lint]
  # flake8, pycodestyle, pyupgrade, isort, Ruff 固有のルールを使う
  select = ["F", "E", "W", "UP", "I", "RUF", "TID251"]
  ignore = [
      "E501",    # 1行の長さを超えている場合の警告を抑制
      "E731",    # Do not assign a `lambda` expression, use a `def` を抑制
      "RUF001",  # 全角記号など `ambiguous unicode character` も使いたいため
      "RUF002",  # 全角記号など `ambiguous unicode character` も使いたいため
      "RUF003",  # 全角記号など `ambiguous unicode character` も使いたいため
      "RUF012",
  ]
  
  [tool.ruff.lint.isort]
  # インポートブロックの後に2行空ける
  lines-after-imports = 2
  
  [tool.ruff.lint.flake8-tidy-imports.banned-api]
  # Python 3.11 + Pydantic で TypedDict を扱う際は、typing_extensions.TypedDict を使う必要がある
  # ref: https://github.com/langchain-ai/langgraph/pull/2910
  "typing.TypedDict".msg = "Use typing_extensions.TypedDict instead."
  
  [tool.ruff.format]
  # シングルクオートを使う
  quote-style = "single"
  # インデントにはスペースを使う
  indent-style = "space"
  