content: [project]
  name = "nonebot-plugin-jmdownloader"
  version = "1.0.4"
  description = "基于 Nonebot2 的 JMComic 插件"
  readme = "README.md"
  authors = [{ name = "Misty02600", email = "xiao02600@gmail.com" }]
  urls = { Repository = "https://github.com/Misty02600/nonebot-plugin-jmdownloader" }
  requires-python = ">=3.10, <4.0"
  dependencies = [
    "httpx>=0.27.0,<1.0.0",
    "nonebot2>=2.4.2,<3.0.0",
    "nonebot-plugin-uninfo>=0.7.0,<1.0.0",
    "nonebot-plugin-alconna>=0.56.2,<1.0.0",
    "nonebot-plugin-waiter>=0.8.1,<1.0.0",
    "nonebot-plugin-localstore>=0.7.4,<1.0.0",
    "nonebot-plugin-apscheduler>=0.5.0,<1.0.0",
    "nonebot-adapter-onebot>=2.4.6,<3.0.0",
    "jmcomic>=2.5.35",
    "pillow>=11.1.0",
    "img2pdf>=0.6.0",
  ]
  
  [dependency-groups]
  dev = [
    "nonebot2[fastapi]>=2.4.2,<3.0.0",
    "ruff>=0.11.2,<1.0.0",
    # "nonemoji>=0.1.4,<1.0.0", # 推荐全局安装 pipx install nonemoji
    # "pre-commit>=4.1.0",      # 推荐全局安装 pipx install pre-commit
  ]
  
  test = [
    "nonebot2[fastapi]>=2.4.2,<3.0.0",
    "nonebot-adapter-onebot>=2.4.6,<3.0.0",
    "nonebug>=0.3.7,<1.0.0",
    "pytest-xdist>=3.6.1,<4.0.0",
    "pytest-asyncio>=0.23.6,<1.0.0",
  ]
  
  [tool.setuptools]
  packages = ["nonebot_plugin_jmdownloader"]
  
  [tool.nonebot]
  plugins = ["nonebot_plugin_jmdownloader"]
  adapters = [{name = "OneBot V11", module_name = "nonebot.adapters.onebot.v11"}]
  
  [tool.uv.workspace]
  # members = ["nonebot_plugin_jmdownloader", "tests"]
  exclude = [".docs"]
  
  [tool.pytest.ini_options]
  # testpaths = ["tests"]
  asyncio_mode = "auto"
  asyncio_default_fixture_loop_scope = "session"
  
  [tool.ruff]
  line-length = 120
  target-version = "py310"
  
  [tool.ruff.format]
  line-ending = "lf"
  
  [tool.ruff.lint]
  select = [
    "F",     # Pyflakes
    "W",     # pycodestyle warnings
    "E",     # pycodestyle errors
    "I",     # isort
    "UP",    # pyupgrade
    "ASYNC", # flake8-async
    "C4",    # flake8-comprehensions
    "T10",   # flake8-debugger
    "T20",   # flake8-print
    "PYI",   # flake8-pyi
    "PT",    # flake8-pytest-style
    "Q",     # flake8-quotes
    "TID",   # flake8-tidy-imports
    "RUF",   # Ruff-specific rules
  ]
  ignore = [
    "E402",   # module-import-not-at-top-of-file
    "UP037",  # quoted-annotation
    "RUF001", # ambiguous-unicode-character-string
    "RUF002", # ambiguous-unicode-character-docstring
    "RUF003", # ambiguous-unicode-character-comment
    "W191",   # indentation contains tabs
    # "I001",   # isort: imports are incorrectly sorted
  ]
  
  
  [tool.ruff.lint.isort]
  force-sort-within-sections = true
  known-first-party = ["tests/*"]
  extra-standard-library = ["typing_extensions"]
  
  [tool.ruff.lint.flake8-pytest-style]
  fixture-parentheses = false
  mark-parentheses = false
  
  [tool.ruff.lint.pyupgrade]
  keep-runtime-typing = true
  
  
  [tool.pyright]
  pythonVersion = "3.10"
  pythonPlatform = "All"
  defineConstant = { PYDANTIC_V2 = true }
  executionEnvironments = [
    { root = "./tests", extraPaths = [
      "./",
    ] },
    { root = "./" },
  ]
  typeCheckingMode = "standard"
  reportShadowedImports = false
  disableBytesTypePromotions = true
  