[tool.poetry] name = "nonebot2" version = "2.4.0" description = "An asynchronous python bot framework." authors = ["yanyongyu "] license = "MIT" readme = "README.md" homepage = "https://nonebot.dev/" repository = "https://github.com/nonebot/nonebot2" documentation = "https://nonebot.dev/" keywords = ["bot", "qq", "qqbot", "mirai", "coolq"] classifiers = [ "Development Status :: 5 - Production/Stable", "Framework :: Robot Framework", "Framework :: Robot Framework :: Library", "Operating System :: OS Independent", "Programming Language :: Python :: 3", ] packages = [{ include = "nonebot" }] include = ["nonebot/py.typed"] [tool.poetry.urls] "Bug Tracker" = "https://github.com/nonebot/nonebot2/issues" "Changelog" = "https://nonebot.dev/changelog" "Funding" = "https://afdian.com/@nonebot" [tool.poetry.dependencies] python = "^3.9" yarl = "^1.7.2" anyio = "^4.4.0" pygtrie = "^2.4.1" exceptiongroup = "^1.2.2" loguru = ">=0.6.0,<1.0.0" python-dotenv = ">=0.21.0,<2.0.0" typing-extensions = ">=4.4.0,<5.0.0" pydantic = ">=1.10.0,<3.0.0,!=2.5.0,!=2.5.1" tomli = { version = "^2.0.1", python = "<3.11" } websockets = { version = ">=10.0", optional = true } Quart = { version = ">=0.18.0,<1.0.0", optional = true } fastapi = { version = ">=0.93.0,<1.0.0", optional = true } aiohttp = { version = "^3.9.0b0", extras = ["speedups"], optional = true } httpx = { version = ">=0.20.0,<1.0.0", extras = ["http2"], optional = true } uvicorn = { version = ">=0.20.0,<1.0.0", extras = [ "standard", ], optional = true } [tool.poetry.group.dev.dependencies] ruff = "^0.7.0" isort = "^5.10.1" black = "^24.0.0" nonemoji = "^0.1.2" pre-commit = "^3.0.0" [tool.poetry.group.test.dependencies] nonebot-test = { path = "./envs/test/", develop = false } [tool.poetry.group.docs.dependencies] nb-autodoc = "^1.0.0a5" [tool.poetry.extras] httpx = ["httpx"] aiohttp = ["aiohttp"] websockets = ["websockets"] quart = ["quart", "uvicorn"] fastapi = ["fastapi", "uvicorn"] all = ["fastapi", "quart", "aiohttp", "httpx", "websockets", "uvicorn"] [tool.pytest.ini_options] addopts = "--cov=nonebot --cov-report=term-missing" filterwarnings = ["error", "ignore::DeprecationWarning"] [tool.black] line-length = 88 target-version = ["py39", "py310", "py311", "py312"] include = '\.pyi?$' extend-exclude = ''' ''' [tool.isort] profile = "black" line_length = 88 length_sort = true skip_gitignore = true force_sort_within_sections = true src_paths = ["nonebot", "tests"] extra_standard_library = ["typing_extensions"] [tool.ruff] line-length = 88 target-version = "py39" [tool.ruff.lint] select = [ "F", # Pyflakes "W", # pycodestyle warnings "E", # pycodestyle errors "UP", # pyupgrade "ASYNC", # flake8-async "C4", # flake8-comprehensions "T10", # flake8-debugger "T20", # flake8-print "PYI", # flake8-pyi "PT", # flake8-pytest-style "Q", # flake8-quotes "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.lint.flake8-pytest-style] fixture-parentheses = false mark-parentheses = false [tool.pyright] pythonVersion = "3.9" pythonPlatform = "All" defineConstant = { PYDANTIC_V2 = true } executionEnvironments = [ { root = "./tests", extraPaths = [ "./", ] }, { root = "./" }, ] typeCheckingMode = "standard" reportShadowedImports = false disableBytesTypePromotions = true [build-system] requires = ["poetry_core>=1.0.0"] build-backend = "poetry.core.masonry.api"