[tool.poetry] name = "zhenxun_bot" version = "0.2.4" description = "基于 Nonebot2 和 go-cqhttp 开发,以 postgresql 作为数据库,非常可爱的绪山真寻bot" authors = ["HibiKier <775757368@qq.com>"] license = "AGPL" package-mode = false [[tool.poetry.source]] name = "aliyun" url = "https://mirrors.aliyun.com/pypi/simple/" priority = "primary" [tool.poetry.dependencies] python = "^3.10" playwright = "^1.41.1" nonebot-adapter-onebot = ">=2.3.1" nonebot-plugin-apscheduler = "^0.5" tortoise-orm = "^0.20.0" cattrs = "^23.2.3" ruamel-yaml = "^0.18.5" strenum = "^0.4.15" nonebot-plugin-session = "^0.3.2" ujson = ">=5.9.0" nb-cli = ">=1.3.0" nonebot2 = { extras = ["fastapi"], version = ">=2.3.3" } pillow = "^10.0.0" retrying = "^1.3.4" aiofiles = "^23.2.1" nonebot-plugin-htmlrender = ">=0.6.0,<1.0.0" pypinyin = ">=0.51.0" beautifulsoup4 = "^4.12.3" lxml = "^5.1.0" psutil = "^5.9.8" feedparser = "^6.0.11" imagehash = "^4.3.1" cn2an = "^0.5.22" dateparser = "^1.2.0" bilireq = ">=0.2.10" python-jose = { extras = ["cryptography"], version = "^3.3.0" } python-multipart = "^0.0.9" aiocache = {extras = ["redis"], version = "^0.12.3"} py-cpuinfo = "^9.0.0" nonebot-plugin-alconna = ">=0.56.0" tenacity = "^9.0.0" nonebot-plugin-uninfo = ">=0.7.3" nonebot-plugin-waiter = "^0.8.1" multidict = ">=6.0.0,!=6.3.2" redis = { version = ">=5", optional = true } asyncpg = { version = ">=0.20.0", optional = true } alibabacloud-devops20210625 = "^5.0.2" [tool.poetry.group.dev.dependencies] nonebug = "^0.4" pytest-cov = "^5.0.0" pytest-mock = "^3.6.1" pytest-asyncio = "^0.25" pytest-xdist = "^3.3.1" respx = "^0.21.1" ruff = "^0.8.0" pre-commit = "^4.0.0" [tool.poetry.extras] redis = ["redis"] postgresql = ["asyncpg"] [tool.nonebot] plugins = [ "nonebot_plugin_apscheduler", "nonebot_plugin_session", "nonebot_plugin_htmlrender", "nonebot_plugin_alconna", ] plugin_dirs = ["zhenxun/services", "zhenxun/builtin_plugins", "zhenxun/plugins"] adapters = [ { name = "OneBot V11", module_name = "nonebot.adapters.onebot.v11" }, # { name = "DoDo", module_name = "nonebot.adapters.dodo" }, # { name = "开黑啦", module_name = "nonebot.adapters.kaiheila" }, ] [tool.ruff] line-length = 88 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 "TID252", # relative-imports ] [tool.ruff.lint.isort] force-sort-within-sections = true known-first-party = ["zhenxun", "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 [tool.pytest.ini_options] asyncio_mode = "auto" asyncio_default_fixture_loop_scope = "session" [build-system] requires = ["poetry-core>=1.0.0"] build-backend = "poetry.core.masonry.api"