Files
dify/api/pyproject.toml
-LAN- dce25a3909 fix(api): filter Graphon workflow response events
Apply Graphon ResponseStreamFilter to workflow-based app runners so workflow execution consumes filtered graph events in both streaming and blocking paths.

Pin Graphon to the PR revision while the change waits for the 0.5.0 release, and update unit coverage for the filtered event stream behavior.
2026-05-18 15:54:55 +08:00

298 lines
9.5 KiB
TOML

[project]
name = "dify-api"
version = "1.14.1"
requires-python = "~=3.12.0"
dependencies = [
# Legacy: mature and widely deployed
"bleach>=6.3.0",
"boto3>=1.43.6",
"celery>=5.6.3",
"croniter>=6.2.2",
"flask>=3.1.3,<4.0.0",
"flask-cors>=6.0.2",
"gevent>=26.4.0",
"gevent-websocket>=0.10.1",
"gmpy2>=2.3.0",
"google-api-python-client>=2.196.0",
"gunicorn>=26.0.0",
"psycogreen>=1.0.2",
"psycopg2-binary>=2.9.12",
"python-socketio>=5.13.0",
"redis[hiredis]>=7.4.0",
"sendgrid>=6.12.5",
"sseclient-py>=1.8.0",
# Stable: production-proven, cap below the next major
"aliyun-log-python-sdk>=0.9.44,<1.0.0",
"azure-identity>=1.25.3,<2.0.0",
"flask-compress>=1.24,<2.0.0",
"flask-login>=0.6.3,<1.0.0",
"flask-migrate>=4.1.0,<5.0.0",
"flask-orjson>=2.0.0,<3.0.0",
"flask-restx>=1.3.2,<2.0.0",
"google-cloud-aiplatform>=1.151.0,<2.0.0",
"httpx[socks]>=0.28.1,<1.0.0",
"opentelemetry-distro>=0.62b1,<1.0.0",
"opentelemetry-instrumentation-celery>=0.62b0,<1.0.0",
"opentelemetry-instrumentation-flask>=0.62b0,<1.0.0",
"opentelemetry-instrumentation-httpx>=0.62b0,<1.0.0",
"opentelemetry-instrumentation-redis>=0.62b0,<1.0.0",
"opentelemetry-instrumentation-sqlalchemy>=0.62b0,<1.0.0",
"opentelemetry-propagator-b3>=1.41.1,<2.0.0",
"readabilipy>=0.3.0,<1.0.0",
"resend>=2.27.0,<3.0.0",
# Emerging: newer and fast-moving, use compatible pins
"fastopenapi[flask]~=0.7.0",
"graphon~=0.4.0",
"httpx-sse~=0.4.0",
"json-repair~=0.59.4",
]
# Before adding new dependency, consider place it in
# alphabet order (a-z) and suitable group.
[tool.setuptools]
packages = []
[tool.uv.workspace]
members = ["providers/vdb/*", "providers/trace/*"]
exclude = ["providers/vdb/__pycache__", "providers/trace/__pycache__"]
[tool.uv.sources]
dify-agent = { path = "../dify-agent" }
dify-vdb-alibabacloud-mysql = { workspace = true }
dify-vdb-analyticdb = { workspace = true }
dify-vdb-baidu = { workspace = true }
dify-vdb-chroma = { workspace = true }
dify-vdb-clickzetta = { workspace = true }
dify-vdb-couchbase = { workspace = true }
dify-vdb-elasticsearch = { workspace = true }
dify-vdb-hologres = { workspace = true }
dify-vdb-huawei-cloud = { workspace = true }
dify-vdb-iris = { workspace = true }
dify-vdb-lindorm = { workspace = true }
dify-vdb-matrixone = { workspace = true }
dify-vdb-milvus = { workspace = true }
dify-vdb-myscale = { workspace = true }
dify-vdb-oceanbase = { workspace = true }
dify-vdb-opengauss = { workspace = true }
dify-vdb-opensearch = { workspace = true }
dify-vdb-oracle = { workspace = true }
dify-vdb-pgvecto-rs = { workspace = true }
dify-vdb-pgvector = { workspace = true }
dify-vdb-qdrant = { workspace = true }
dify-vdb-relyt = { workspace = true }
dify-vdb-tablestore = { workspace = true }
dify-vdb-tencent = { workspace = true }
dify-vdb-tidb-on-qdrant = { workspace = true }
dify-vdb-tidb-vector = { workspace = true }
dify-vdb-upstash = { workspace = true }
dify-vdb-vastbase = { workspace = true }
dify-vdb-vikingdb = { workspace = true }
dify-vdb-weaviate = { workspace = true }
dify-trace-aliyun = { workspace = true }
dify-trace-arize-phoenix = { workspace = true }
dify-trace-langfuse = { workspace = true }
dify-trace-langsmith = { workspace = true }
dify-trace-mlflow = { workspace = true }
dify-trace-opik = { workspace = true }
dify-trace-tencent = { workspace = true }
dify-trace-weave = { workspace = true }
graphon = { git = "https://github.com/langgenius/graphon.git", rev = "853bd461c42489a3fcf26cf36f2831ba03c444a6" }
[tool.uv]
default-groups = ["storage", "tools", "vdb-all", "trace-all"]
package = false
override-dependencies = [
"litellm>=1.83.7",
"pyarrow>=18.0.0",
]
[dependency-groups]
############################################################
# [ Dev ] dependency group
# Required for development and running tests
############################################################
dev = [
"coverage>=7.13.4",
"dify-agent",
"dotenv-linter>=0.7.0",
"faker>=40.15.0",
"lxml-stubs>=0.5.1",
"ruff>=0.15.12",
"pytest>=9.0.3",
"pytest-benchmark>=5.2.3",
"pytest-cov>=7.1.0",
"pytest-env>=1.6.0",
"pytest-mock>=3.15.1",
"testcontainers>=4.14.2",
"types-aiofiles>=25.1.0",
"types-beautifulsoup4>=4.12.0",
"types-cachetools>=7.0.0.20260503",
"types-colorama>=0.4.15",
"types-defusedxml>=0.7.0",
"types-deprecated>=1.3.1",
"types-docutils>=0.22.3",
"types-flask-cors>=6.0.0",
"types-flask-migrate>=4.1.0",
"types-gevent>=26.4.0",
"types-greenlet>=3.5.0.20260428",
"types-html5lib>=1.1.11",
"types-markdown>=3.10.2",
"types-oauthlib>=3.3.0",
"types-objgraph>=3.6.0",
"types-olefile>=0.47.0",
"types-openpyxl>=3.1.5",
"types-pexpect>=4.9.0",
"types-protobuf>=7.34.1.20260503",
"types-psutil>=7.2.2",
"types-psycopg2>=2.9.21.20260422",
"types-pygments>=2.20.0",
"types-pymysql>=1.1.0",
"types-python-dateutil>=2.9.0",
"types-pywin32>=311.0.0",
"types-pyyaml>=6.0.12",
"types-regex>=2026.4.4",
"types-shapely>=2.1.0",
"types-simplejson>=3.20.0.20260408",
"types-six>=1.17.0.20260408",
"types-tensorflow>=2.18.0.20260408",
"types-tqdm>=4.67.3.20260408",
"types-ujson>=5.10.0",
"boto3-stubs>=1.43.2",
"types-jmespath>=1.1.0.20260408",
"hypothesis>=6.152.4",
"types_pyOpenSSL>=24.1.0",
"types_cffi>=2.0.0.20260429",
"types_setuptools>=82.0.0.20260408",
"pandas-stubs>=3.0.0",
"scipy-stubs>=1.17.1.4",
"types-python-http-client>=3.3.7.20260408",
"import-linter>=2.3",
"types-redis>=4.6.0.20241004",
"celery-types>=0.23.0",
"mypy>=1.20.2",
# "locust>=2.40.4", # Temporarily removed due to compatibility issues. Uncomment when resolved.
"pytest-timeout>=2.4.0",
"pytest-xdist>=3.8.0",
"pyrefly>=1.0.0",
"xinference-client>=2.7.0",
]
############################################################
# [ Storage ] dependency group
# Required for storage clients
############################################################
storage = [
"azure-storage-blob>=12.28.0",
"bce-python-sdk>=0.9.71",
"cos-python-sdk-v5>=1.9.42",
"esdk-obs-python>=3.22.2",
"google-cloud-storage>=3.10.1",
"opendal>=0.46.0",
"oss2>=2.19.1",
"supabase>=2.30.0",
"tos>=2.9.0",
]
############################################################
# [ Tools ] dependency group
############################################################
tools = ["cloudscraper>=1.2.71", "nltk>=3.9.1"]
############################################################
# [ VDB ] workspace plugins — hollow packages under providers/vdb/*
# Each declares its own third-party deps and registers dify.vector_backends entry points.
# Use: uv sync --group vdb-all | uv sync --group vdb-qdrant
############################################################
vdb-all = [
"dify-vdb-alibabacloud-mysql",
"dify-vdb-analyticdb",
"dify-vdb-baidu",
"dify-vdb-chroma",
"dify-vdb-clickzetta",
"dify-vdb-couchbase",
"dify-vdb-elasticsearch",
"dify-vdb-hologres",
"dify-vdb-huawei-cloud",
"dify-vdb-iris",
"dify-vdb-lindorm",
"dify-vdb-matrixone",
"dify-vdb-milvus",
"dify-vdb-myscale",
"dify-vdb-oceanbase",
"dify-vdb-opengauss",
"dify-vdb-opensearch",
"dify-vdb-oracle",
"dify-vdb-pgvecto-rs",
"dify-vdb-pgvector",
"dify-vdb-qdrant",
"dify-vdb-relyt",
"dify-vdb-tablestore",
"dify-vdb-tencent",
"dify-vdb-tidb-on-qdrant",
"dify-vdb-tidb-vector",
"dify-vdb-upstash",
"dify-vdb-vastbase",
"dify-vdb-vikingdb",
"dify-vdb-weaviate",
]
vdb-alibabacloud-mysql = ["dify-vdb-alibabacloud-mysql"]
vdb-analyticdb = ["dify-vdb-analyticdb"]
vdb-baidu = ["dify-vdb-baidu"]
vdb-chroma = ["dify-vdb-chroma"]
vdb-clickzetta = ["dify-vdb-clickzetta"]
vdb-couchbase = ["dify-vdb-couchbase"]
vdb-elasticsearch = ["dify-vdb-elasticsearch"]
vdb-hologres = ["dify-vdb-hologres"]
vdb-huawei-cloud = ["dify-vdb-huawei-cloud"]
vdb-iris = ["dify-vdb-iris"]
vdb-lindorm = ["dify-vdb-lindorm"]
vdb-matrixone = ["dify-vdb-matrixone"]
vdb-milvus = ["dify-vdb-milvus"]
vdb-myscale = ["dify-vdb-myscale"]
vdb-oceanbase = ["dify-vdb-oceanbase"]
vdb-opengauss = ["dify-vdb-opengauss"]
vdb-opensearch = ["dify-vdb-opensearch"]
vdb-oracle = ["dify-vdb-oracle"]
vdb-pgvecto-rs = ["dify-vdb-pgvecto-rs"]
vdb-pgvector = ["dify-vdb-pgvector"]
vdb-qdrant = ["dify-vdb-qdrant"]
vdb-relyt = ["dify-vdb-relyt"]
vdb-tablestore = ["dify-vdb-tablestore"]
vdb-tencent = ["dify-vdb-tencent"]
vdb-tidb-on-qdrant = ["dify-vdb-tidb-on-qdrant"]
vdb-tidb-vector = ["dify-vdb-tidb-vector"]
vdb-upstash = ["dify-vdb-upstash"]
vdb-vastbase = ["dify-vdb-vastbase"]
vdb-vikingdb = ["dify-vdb-vikingdb"]
vdb-weaviate = ["dify-vdb-weaviate"]
# Optional client used by some tests / integrations (not a vector backend plugin)
vdb-xinference = ["xinference-client>=2.7.0"]
trace-all = [
"dify-trace-aliyun",
"dify-trace-arize-phoenix",
"dify-trace-langfuse",
"dify-trace-langsmith",
"dify-trace-mlflow",
"dify-trace-opik",
"dify-trace-tencent",
"dify-trace-weave",
]
trace-aliyun = ["dify-trace-aliyun"]
trace-arize-phoenix = ["dify-trace-arize-phoenix"]
trace-langfuse = ["dify-trace-langfuse"]
trace-langsmith = ["dify-trace-langsmith"]
trace-mlflow = ["dify-trace-mlflow"]
trace-opik = ["dify-trace-opik"]
trace-tencent = ["dify-trace-tencent"]
trace-weave = ["dify-trace-weave"]
[tool.pyrefly]
project-includes = ["."]
project-excludes = [".venv", "migrations/"]
python-platform = "linux"
python-version = "3.12.0"
infer-with-first-use = false