[project] name = "zhenxun-bot" version = "0.2.4" description = "基于 Nonebot2 和 go-cqhttp 开发,以 postgresql 作为数据库,非常可爱的绪山真寻bot" authors = [{ name = "HibiKier", email = "775757368@qq.com" }] license = { text = "AGPL-3.0" } requires-python = ">=3.10" dependencies = [ "playwright==1.57.0", "nonebot-adapter-onebot>=2.3.1", "nonebot-plugin-apscheduler>=0.5", "tortoise-orm>=0.20.0,<0.21.0", "cattrs>=23.2.3,<24.0.0", "ruamel-yaml>=0.18.5", "strenum>=0.4.15,<0.5.0", "nonebot-plugin-session>=0.3.2", "ujson>=5.9.0", "nb-cli>=1.3.0", "nonebot2[fastapi]>=2.3.3", "pillow>=10.0.0,<11.0.0", "retrying>=1.3.4,<2.0.0", "aiofiles>=23.2.1", "nonebot-plugin-htmlrender>=0.6.0,<1.0.0", "pypinyin>=0.51.0", "beautifulsoup4>=4.12.3,<5.0.0", "lxml>=5.1.0,<6.0.0", "psutil>=5.9.8,<6.0.0", "feedparser>=6.0.11,<7.0.0", "imagehash>=4.3.1,<5.0.0", "numpy>=1.26,<2.3", "cn2an>=0.5.22,<0.6.0", "dateparser>=1.2.0,<2.0.0", "python-jose[cryptography]>=3.3.0,<4.0.0", "python-multipart>=0.0.9,<0.1.0", "aiocache[redis]>=0.12.3", "asyncpg>=0.20.0", "redis>=5", "py-cpuinfo>=9.0.0,<10.0.0", "nonebot-plugin-alconna>=0.56.0", "tenacity>=9.0.0,<10.0.0", "nonebot-plugin-uninfo>=0.7.3", "nonebot-plugin-waiter>=0.8.1", "multidict>=6.0.0,!=6.3.2", "json-repair>=0.54.0,<0.55.0", "alibabacloud-devops20210625>=5.0.2,<6.0.0", "uvloop>=0.21.0; sys_platform != 'win32'", "pytest-timeout>=2.4.0", "aiomysql>=0.3.2", "mcp>=1.8.0", "jieba>=0.42.1", "aiodocker>=0.24.0", ] [project.scripts] zx = "zhenxun.cli:main" [dependency-groups] dev = [ "nonebug>=0.4,<0.5", "pytest-cov>=5.0.0,<6.0.0", "pytest-mock>=3.6.1,<4.0.0", "pytest-asyncio>=0.25,<0.26", "pytest-xdist>=3.3.1,<4.0.0", "respx>=0.21.1,<0.22.0", "ruff>=0.8.0,<0.9.0", "pre-commit>=4.0.0,<5.0.0", ] [tool.hatch.build.targets.wheel] packages = ["zhenxun"] [tool.uv] [[tool.uv.index]] name = "aliyun" url = "https://mirrors.aliyun.com/pypi/simple/" [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 reportMissingImports = "none" disableBytesTypePromotions = true [tool.pytest.ini_options] asyncio_mode = "auto" asyncio_default_fixture_loop_scope = "session" timeout = 120 [build-system] requires = ["hatchling"] build-backend = "hatchling.build"