mirror of
https://github.com/volcengine/OpenViking.git
synced 2026-09-29 04:02:57 +08:00
299 lines
7.5 KiB
TOML
299 lines
7.5 KiB
TOML
[build-system]
|
||
requires = [
|
||
"setuptools>=61.0",
|
||
"setuptools-scm>=8.0",
|
||
"cmake>=3.15",
|
||
"maturin>=1.0,<2.0",
|
||
"wheel",
|
||
]
|
||
build-backend = "setuptools.build_meta"
|
||
|
||
[project]
|
||
name = "openviking"
|
||
dynamic = ["version"]
|
||
description = "An Agent-native context database"
|
||
readme = "README.md"
|
||
requires-python = ">=3.10"
|
||
authors = [
|
||
{name = "ByteDance", email = "noreply@bytedance.com"}
|
||
]
|
||
license = "AGPL-3.0"
|
||
classifiers = [
|
||
"Development Status :: 3 - Alpha",
|
||
"Intended Audience :: Developers",
|
||
"Topic :: Scientific/Engineering :: Artificial Intelligence",
|
||
"Programming Language :: Python :: 3",
|
||
"Programming Language :: Python :: 3.10",
|
||
"Programming Language :: Python :: 3.11",
|
||
"Programming Language :: Python :: 3.12",
|
||
"Programming Language :: Python :: 3.13",
|
||
"Programming Language :: Python :: 3.14",
|
||
]
|
||
dependencies = [
|
||
"openviking-sdk>=0.1.9",
|
||
"pydantic>=2.0.0",
|
||
"typing-extensions>=4.5.0",
|
||
"pyyaml>=6.0",
|
||
"httpx>=0.25.0",
|
||
"pdfplumber>=0.10.0",
|
||
"scrapy>=2.11.0",
|
||
"trafilatura>=1.12.0",
|
||
"feedparser>=6.0.0",
|
||
"defusedxml>=0.7.1",
|
||
"openai>=1.0.0",
|
||
"requests>=2.33.0",
|
||
"charset-normalizer>=3.4,<4",
|
||
"firecrawl-anydoc>=0.2.4,<0.3",
|
||
"json-repair>=0.25.0",
|
||
"apscheduler>=3.11.0",
|
||
"volcengine>=1.0.216",
|
||
"volcengine-python-sdk[ark]>=5.0.3",
|
||
"fastapi>=0.128.0",
|
||
"uvicorn>=0.39.0",
|
||
"xxhash>=3.0.0",
|
||
"rapidfuzz>=3.14,<4",
|
||
"jinja2>=3.1.6",
|
||
"tabulate>=0.9.0",
|
||
"urllib3>=2.7.0",
|
||
"protobuf>=6.33.5",
|
||
"pdfminer-six>=20251230",
|
||
"typer>=0.12.0",
|
||
"litellm>=1.83.7,<1.91.2",
|
||
"python-multipart>=0.0.31",
|
||
# Pin the parsing stack to avoid unvalidated upstream API and grammar changes.
|
||
"tree-sitter==0.25.2",
|
||
"tree-sitter-python==0.25.0",
|
||
"tree-sitter-javascript==0.25.0",
|
||
"tree-sitter-typescript==0.23.2",
|
||
"tree-sitter-java==0.23.5",
|
||
"tree-sitter-cpp==0.23.4",
|
||
"tree-sitter-rust==0.24.0",
|
||
"tree-sitter-go==0.25.0",
|
||
"tree-sitter-c-sharp==0.23.1",
|
||
"tree-sitter-php==0.24.1",
|
||
"tree-sitter-lua==0.5.0",
|
||
# OpenTelemetry
|
||
"opentelemetry-api>=1.14",
|
||
"opentelemetry-sdk>=1.14",
|
||
"opentelemetry-exporter-otlp-proto-grpc>=1.14",
|
||
"opentelemetry-exporter-otlp-proto-http>=1.14",
|
||
"opentelemetry-instrumentation-asyncio>=0.61b0",
|
||
"loguru>=0.7.3",
|
||
"cryptography>=48.0.1",
|
||
"argon2-cffi>=23.0.0",
|
||
"lark-oapi>=1.5.3",
|
||
"mcp>=1.27,<2",
|
||
"pathspec>=1.1.1",
|
||
"grep-ast==0.9.0",
|
||
"tree-sitter-language-pack==1.13.3",
|
||
]
|
||
|
||
|
||
[project.optional-dependencies]
|
||
test = [
|
||
"pytest>=7.0.0",
|
||
"pytest-asyncio>=0.21.0",
|
||
"pytest-xdist>=3.5.0",
|
||
"boto3>=1.42.44",
|
||
"pytest-cov>=4.0.0",
|
||
"ragas>=0.1.0",
|
||
"datasets>=2.0.0",
|
||
"pandas>=2.0.0",
|
||
"diff-match-patch>=20200713",
|
||
"hvac>=2.0.0",
|
||
]
|
||
auth = [
|
||
"python-jose[cryptography]>=3.3.0",
|
||
"httpx>=0.25.0",
|
||
"python-ldap>=3.4.0",
|
||
]
|
||
dev = [
|
||
"mypy>=1.0.0",
|
||
"ruff>=0.1.0",
|
||
"setuptools_scm>=10.0.0",
|
||
]
|
||
doc = [
|
||
"sphinx>=7.0.0",
|
||
"sphinx-rtd-theme>=1.3.0",
|
||
"myst-parser>=2.0.0",
|
||
]
|
||
eval = [
|
||
"ragas>=0.1.0",
|
||
"datasets>=2.0.0",
|
||
"pandas>=2.0.0",
|
||
]
|
||
gemini = [
|
||
"google-genai>=1.0.0",
|
||
]
|
||
gemini-async = [
|
||
"google-genai>=1.0.0",
|
||
"anyio>=4.0.0",
|
||
]
|
||
ocr = [
|
||
"pytesseract>=0.3.10",
|
||
]
|
||
build = [
|
||
"setuptools>=61.0",
|
||
"setuptools-scm>=8.0",
|
||
"cmake>=3.15",
|
||
"wheel",
|
||
"build",
|
||
]
|
||
# vikingbot - all features included
|
||
bot = [
|
||
"pydantic-settings>=2.0.0",
|
||
"websockets>=12.0",
|
||
"websocket-client>=1.6.0",
|
||
"httpx[socks]>=0.25.0",
|
||
"readability-lxml>=0.8.0",
|
||
"rich>=13.0.0",
|
||
"croniter>=2.0.0",
|
||
"socksio>=1.0.0",
|
||
"python-socketio>=5.16.2",
|
||
"python-engineio>=4.13.2",
|
||
"msgpack>=1.0.8",
|
||
"python-socks[asyncio]>=2.4.0",
|
||
"prompt-toolkit>=3.0.0",
|
||
"pygments>=2.16.0",
|
||
"html2text>=2020.1.16",
|
||
"beautifulsoup4>=4.12.0",
|
||
"ddgs>=9.0.0",
|
||
"tavily-python>=0.5.0",
|
||
"py-machineid>=1.0.0",
|
||
"mcp>=1,<2",
|
||
# All optional features included by default
|
||
"langfuse>=3.0.0",
|
||
"python-telegram-bot[socks]>=21.0",
|
||
"lark-oapi>=1.0.0",
|
||
"dingtalk-stream>=0.4.0",
|
||
"slack-sdk>=3.26.0",
|
||
"qq-botpy>=1.0.0",
|
||
"opensandbox>=0.1.0",
|
||
"opensandbox-server>=0.1.0",
|
||
"agent-sandbox>=0.0.23",
|
||
"fusepy>=3.0.1",
|
||
"opencode-ai>=0.1.0a0",
|
||
# Auth dependencies
|
||
"python-jose[cryptography]>=3.3.0",
|
||
]
|
||
benchmark = [
|
||
"langchain>=1.0.0",
|
||
"langchain-core>=1.0.0",
|
||
"langchain-openai>=1.0.0",
|
||
"tiktoken>=0.5.0",
|
||
"datasets>=2.0.0",
|
||
"pandas>=2.0.0",
|
||
"python-docx>=1.0.0",
|
||
]
|
||
local-embed = [
|
||
"llama-cpp-python>=0.3.0",
|
||
]
|
||
|
||
[project.urls]
|
||
Homepage = "https://github.com/volcengine/openviking"
|
||
Documentation = "https://openviking.ai"
|
||
Repository = "https://github.com/volcengine/openviking"
|
||
Issues = "https://github.com/volcengine/openviking/issues"
|
||
|
||
[project.scripts]
|
||
ov = "openviking_cli.rust_cli:main" # Rust CLI 入口(极简包装器)
|
||
openviking = "openviking_cli.rust_cli:main" # Rust CLI 入口(放弃 python CLI)
|
||
openviking-server = "openviking_cli.server_bootstrap:main" # also: `openviking-server ingest ...`
|
||
vikingbot = "vikingbot.cli.commands:app"
|
||
|
||
[tool.setuptools_scm]
|
||
write_to = "openviking/_version.py"
|
||
local_scheme = "no-local-version"
|
||
tag_regex = "^v(?P<version>[0-9]+(?:\\.[0-9]+)*)$"
|
||
git_describe_command = "git describe --dirty --tags --long --match v[0-9]*"
|
||
|
||
[tool.setuptools.packages.find]
|
||
where = [".", "bot"]
|
||
include = ["openviking*", "vikingbot*"]
|
||
exclude = ["tests*", "docs*", "examples*"]
|
||
|
||
[tool.setuptools.package-data]
|
||
"vikingbot.studio.providers.feishu" = ["icon.png"]
|
||
openviking = [
|
||
"prompts/templates/**/*.yaml",
|
||
"server/static/**/*",
|
||
"web_studio/dist/**/*",
|
||
"lib/ragfs_python*.so",
|
||
"lib/ragfs_python*.pyd",
|
||
"bin/ov",
|
||
"bin/ov.exe",
|
||
"storage/vectordb/engine/*.abi3.so",
|
||
"storage/vectordb/engine/*.pyd",
|
||
]
|
||
vikingbot = [
|
||
"**/*.mjs",
|
||
"skills/**/*.md",
|
||
"skills/**/*.sh",
|
||
"workspace/**/*",
|
||
"bridge/**/*",
|
||
]
|
||
|
||
[tool.mypy]
|
||
python_version = "3.10"
|
||
warn_return_any = false
|
||
warn_unused_configs = true
|
||
disallow_untyped_defs = false
|
||
disallow_incomplete_defs = false
|
||
check_untyped_defs = true
|
||
no_implicit_optional = false
|
||
warn_redundant_casts = true
|
||
warn_unused_ignores = true
|
||
ignore_missing_imports = true
|
||
|
||
[tool.pytest.ini_options]
|
||
testpaths = ["tests"]
|
||
python_files = ["test_*.py"]
|
||
python_classes = ["Test*"]
|
||
python_functions = ["test_*"]
|
||
asyncio_mode = "auto"
|
||
norecursedirs = ["api_test", "oc2ov_test"]
|
||
markers = [
|
||
"integration: tests that require external services or real model configuration",
|
||
"cli_remote: tests that require a remote OpenViking CLI binary and server connection",
|
||
]
|
||
addopts = "-v --cov=openviking --cov-report=term-missing"
|
||
|
||
[tool.ruff]
|
||
line-length = 100
|
||
exclude = ["third_party"]
|
||
target-version = "py310"
|
||
|
||
[tool.ruff.lint]
|
||
select = [
|
||
"E", # pycodestyle errors
|
||
"W", # pycodestyle warnings
|
||
"F", # pyflakes
|
||
"I", # isort
|
||
"C", # flake8-comprehensions
|
||
"B", # flake8-bugbear
|
||
]
|
||
ignore = [
|
||
"E501", # line too long (handled by black)
|
||
"B008", # do not perform function calls in argument defaults
|
||
"C901", # too complex
|
||
"B006", # Do not use mutable data structures for argument defaults
|
||
"B904", # Within an `except` clause, raise exceptions with `raise ... from err`
|
||
"E741", # Ambiguous variable name
|
||
"E722", # Do not use bare `except`
|
||
"B027", # empty method in an abstract base class
|
||
]
|
||
|
||
[tool.ruff.lint.per-file-ignores]
|
||
"__init__.py" = ["F401"] # Allow unused imports in __init__.py
|
||
|
||
[tool.ruff.format]
|
||
quote-style = "double"
|
||
indent-style = "space"
|
||
skip-magic-trailing-comma = false
|
||
line-ending = "auto"
|
||
|
||
[dependency-groups]
|
||
dev = [
|
||
"pytest>=9.0.2",
|
||
]
|