mirror of
https://github.com/HKUDS/nanobot.git
synced 2026-04-09 04:33:38 +00:00
PyJWT and cryptography are optional msteams deps; they should not be bundled into the generic dev install. Tests now skip the entire file when the deps are missing, following the dingtalk pattern.
149 lines
3.2 KiB
TOML
149 lines
3.2 KiB
TOML
[project]
|
|
name = "nanobot-ai"
|
|
version = "0.1.4.post6"
|
|
description = "A lightweight personal AI assistant framework"
|
|
readme = { file = "README.md", content-type = "text/markdown" }
|
|
requires-python = ">=3.11"
|
|
license = {text = "MIT"}
|
|
authors = [
|
|
{name = "nanobot contributors"}
|
|
]
|
|
keywords = ["ai", "agent", "chatbot"]
|
|
classifiers = [
|
|
"Development Status :: 3 - Alpha",
|
|
"Intended Audience :: Developers",
|
|
"License :: OSI Approved :: MIT License",
|
|
"Programming Language :: Python :: 3.11",
|
|
"Programming Language :: Python :: 3.12",
|
|
]
|
|
|
|
dependencies = [
|
|
"typer>=0.20.0,<1.0.0",
|
|
"anthropic>=0.45.0,<1.0.0",
|
|
"pydantic>=2.12.0,<3.0.0",
|
|
"pydantic-settings>=2.12.0,<3.0.0",
|
|
"websockets>=16.0,<17.0",
|
|
"websocket-client>=1.9.0,<2.0.0",
|
|
"httpx>=0.28.0,<1.0.0",
|
|
"ddgs>=9.5.5,<10.0.0",
|
|
"oauth-cli-kit>=0.1.3,<1.0.0",
|
|
"loguru>=0.7.3,<1.0.0",
|
|
"readability-lxml>=0.8.4,<1.0.0",
|
|
"rich>=14.0.0,<15.0.0",
|
|
"croniter>=6.0.0,<7.0.0",
|
|
"dingtalk-stream>=0.24.0,<1.0.0",
|
|
"python-telegram-bot[socks]>=22.6,<23.0",
|
|
"lark-oapi>=1.5.0,<2.0.0",
|
|
"socksio>=1.0.0,<2.0.0",
|
|
"python-socketio>=5.16.0,<6.0.0",
|
|
"msgpack>=1.1.0,<2.0.0",
|
|
"slack-sdk>=3.39.0,<4.0.0",
|
|
"slackify-markdown>=0.2.0,<1.0.0",
|
|
"qq-botpy>=1.2.0,<2.0.0",
|
|
"python-socks[asyncio]>=2.8.0,<3.0.0",
|
|
"prompt-toolkit>=3.0.50,<4.0.0",
|
|
"questionary>=2.0.0,<3.0.0",
|
|
"mcp>=1.26.0,<2.0.0",
|
|
"json-repair>=0.57.0,<1.0.0",
|
|
"chardet>=3.0.2,<6.0.0",
|
|
"openai>=2.8.0",
|
|
"tiktoken>=0.12.0,<1.0.0",
|
|
"jinja2>=3.1.0,<4.0.0",
|
|
"dulwich>=0.22.0,<1.0.0",
|
|
]
|
|
|
|
[project.optional-dependencies]
|
|
api = [
|
|
"aiohttp>=3.9.0,<4.0.0",
|
|
]
|
|
wecom = [
|
|
"wecom-aibot-sdk-python>=0.1.5",
|
|
]
|
|
weixin = [
|
|
"qrcode[pil]>=8.0",
|
|
"pycryptodome>=3.20.0",
|
|
]
|
|
msteams = [
|
|
"PyJWT>=2.0,<3.0",
|
|
"cryptography>=41.0",
|
|
]
|
|
|
|
matrix = [
|
|
"matrix-nio[e2e]>=0.25.2",
|
|
"mistune>=3.0.0,<4.0.0",
|
|
"nh3>=0.2.17,<1.0.0",
|
|
]
|
|
discord = [
|
|
"discord.py>=2.5.2,<3.0.0",
|
|
]
|
|
langsmith = [
|
|
"langsmith>=0.1.0",
|
|
]
|
|
dev = [
|
|
"pytest>=9.0.0,<10.0.0",
|
|
"pytest-asyncio>=1.3.0,<2.0.0",
|
|
"aiohttp>=3.9.0,<4.0.0",
|
|
"pytest-cov>=6.0.0,<7.0.0",
|
|
"ruff>=0.1.0",
|
|
]
|
|
|
|
[project.scripts]
|
|
nanobot = "nanobot.cli.commands:app"
|
|
|
|
[build-system]
|
|
requires = ["hatchling"]
|
|
build-backend = "hatchling.build"
|
|
|
|
[tool.hatch.metadata]
|
|
allow-direct-references = true
|
|
|
|
[tool.hatch.build]
|
|
include = [
|
|
"nanobot/**/*.py",
|
|
"nanobot/templates/**/*.md",
|
|
"nanobot/skills/**/*.md",
|
|
"nanobot/skills/**/*.sh",
|
|
]
|
|
|
|
[tool.hatch.build.targets.wheel]
|
|
packages = ["nanobot"]
|
|
|
|
[tool.hatch.build.targets.wheel.sources]
|
|
"nanobot" = "nanobot"
|
|
|
|
[tool.hatch.build.targets.wheel.force-include]
|
|
"bridge" = "nanobot/bridge"
|
|
|
|
[tool.hatch.build.targets.sdist]
|
|
include = [
|
|
"nanobot/",
|
|
"bridge/",
|
|
"README.md",
|
|
"LICENSE",
|
|
]
|
|
|
|
[tool.ruff]
|
|
line-length = 100
|
|
target-version = "py311"
|
|
|
|
[tool.ruff.lint]
|
|
select = ["E", "F", "I", "N", "W"]
|
|
ignore = ["E501"]
|
|
|
|
[tool.pytest.ini_options]
|
|
asyncio_mode = "auto"
|
|
testpaths = ["tests"]
|
|
|
|
[tool.coverage.run]
|
|
source = ["nanobot"]
|
|
omit = ["tests/*", "**/tests/*"]
|
|
|
|
[tool.coverage.report]
|
|
exclude_lines = [
|
|
"pragma: no cover",
|
|
"def __repr__",
|
|
"raise NotImplementedError",
|
|
"if __name__ == .__main__.:",
|
|
"if TYPE_CHECKING:",
|
|
]
|