content: [project]
  authors = [{ name = "felinae98", email = "felinae225@qq.com" }]
  license = { text = "MIT" }
  requires-python = "<4.0.0,>=3.10"
  dependencies = [
    "beautifulsoup4>=4.12.3",
    "feedparser<7.0.0,>=6.0.11",
    "httpx>=0.27.2",
    "nonebot2[fastapi]<3.0.0,>=2.3.3",
    "nonebot-adapter-onebot<3.0.0,>=2.4.5",
    "nonebot-plugin-htmlrender>=0.7.0a1",
    "nonebot-plugin-datastore<2.0.0,>=1.3.0",
    "nonebot-plugin-apscheduler>=0.5.0",
    "nonebot-plugin-send-anything-anywhere<0.7.2,>=0.7.1",
    "pillow<11.1,>=11.0.0",
    "pyjwt<3.0.0,>=2.9.0",
    "python-socketio<6.0.0,>=5.11.4",
    "tinydb<5.0.0,>=4.8.0",
    "qrcode<8.0.0,>=7.4.2",
    "pydantic!=2.5.0,!=2.5.1,<3.0.0,>=2.9.2",
    "lxml>=5.3.0",
    "yarl>=1.11.1",
    "hishel<1.0.0,>=0.0.30",
    "expiringdictx<2.0.0,>=1.1.0",
    "rapidfuzz<4.0.0,>=3.9.7",
    "nonebot-plugin-prometheus>=0.4.1",
  ]
  name = "nonebot-bison"
  version = "0.9.13"
  description = "Subscribe message from social medias"
  keywords = ["nonebot", "nonebot2", "qqbot"]
  readme = "README.md"
  classifiers = [
    "Development Status :: 4 - Beta",
    "Operating System :: POSIX :: Linux",
    "Operating System :: Microsoft :: Windows",
    "Operating System :: MacOS",
    "Programming Language :: Python :: 3.10",
    "Programming Language :: Python :: 3.11",
    "Programming Language :: Python :: 3.12",
    "Programming Language :: Python :: Implementation :: CPython",
    "License :: OSI Approved :: MIT License",
  ]
  
  [project.urls]
  homepage = "https://github.com/felinae98/nonebot-bison"
  
  [project.entry-points.nb_scripts]
  bison = "nonebot_bison.script.cli:main"
  
  [dependency-groups]
  dev = [
    "ipdb<1.0.0,>=0.13.13",
    "nonemoji<1.0.0,>=0.1.4",
    "nb-cli<2.0.0,>=1.4.2",
    "pre-commit<5.0.0,>=4.0.1",
    "ruff<1.0.0,>=0.8.2",
  ]
  test = [
    "flaky<4.0.0,>=3.8.1",
    "nonebug<1.0.0,>=0.3.7",
    "nonebug-saa<1.0.0,>=0.4.1",
    "pytest<9.0.0,>=8.3.3",
    "pytest-asyncio<0.24.1,>=0.24.0",
    "pytest-cov<7,>=6.0.0",
    "pytest-mock<4.0.0,>=3.14.0",
    "pytest-xdist[psutil]<4.0.0,>=3.6.1",
    "respx<0.23.0,>=0.22.0",
    "freezegun<2.0.0,>=1.5.1",
    "pytz>=2025.1",
  ]
  
  [project.optional-dependencies]
  docker = [
    "nb-cli<2.0.0,>=1.4.2",
    "nonebot2[aiohttp,fastapi]<3.0.0,>=2.3.3",
    "nonebot-adapter-qq<2.0.0,>=1.5.1",
    "nonebot-adapter-satori>=0.13.1",
    "pip>=24.3.1",
  ]
  
  [tool.uv]
  default-groups = ["dev", "test"]
  
  [build-system]
  requires = ["pdm-backend"]
  build-backend = "pdm.backend"
  
  [tool.pytest.ini_options]
  markers = [
    "compare: compare fetching result with rsshub",
    "render: render img by chrome",
    "external: use external resources",
  ]
  asyncio_mode = "auto"
  
  [tool.ruff]
  line-length = 120
  target-version = "py310"
  
  [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
  ]
  
  [tool.ruff.format]
  line-ending = "lf"
  
  [tool.ruff.lint.isort]
  force-sort-within-sections = true
  known-first-party = ["nonebot_bison", "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.nonebot]
  adapters = [
    { name = "OneBot V11", module_name = "nonebot.adapters.onebot.v11" },
  ]
  plugins = ["nonebot_bison", "nonebot_plugin_prometheus"]
  plugin_dirs = ["extra_plugins"]
  builtin_plugins = ["echo"]
  
  [tool.pyright]
  typeCheckingMode = "basic"
  reportShadowedImports = false
  disableBytesTypePromotions = true
  pythonVersion = "3.10"
  pythonPlatform = "All"
  executionEnvironments = [
    { root = "./tests", extraPaths = [
      "./",
    ] },
    { root = "./" },
  ]
  defineConstant = { PYDANTIC_V2 = true }
  