Files
dify/api/pyproject.toml
dependabot[bot] d82e0f0e70 chore(deps-dev): bump the dev group in /api with 6 updates
Bumps the dev group in /api with 6 updates:

| Package | From | To |
| --- | --- | --- |
| [faker](https://github.com/joke2k/faker) | `40.13.0` | `40.15.0` |
| [basedpyright](https://github.com/detachhead/basedpyright) | `1.39.0` | `1.39.2` |
| [ruff](https://github.com/astral-sh/ruff) | `0.15.10` | `0.15.11` |
| [boto3-stubs](https://github.com/youtype/mypy_boto3_builder) | `1.42.88` | `1.42.91` |
| [hypothesis](https://github.com/HypothesisWorks/hypothesis) | `6.151.12` | `6.152.1` |
| [scipy-stubs](https://github.com/scipy/scipy-stubs) | `1.17.1.3` | `1.17.1.4` |


Updates `faker` from 40.13.0 to 40.15.0
- [Release notes](https://github.com/joke2k/faker/releases)
- [Changelog](https://github.com/joke2k/faker/blob/master/CHANGELOG.md)
- [Commits](https://github.com/joke2k/faker/compare/v40.13.0...v40.15.0)

Updates `basedpyright` from 1.39.0 to 1.39.2
- [Release notes](https://github.com/detachhead/basedpyright/releases)
- [Commits](https://github.com/detachhead/basedpyright/compare/v1.39.0...v1.39.2)

Updates `ruff` from 0.15.10 to 0.15.11
- [Release notes](https://github.com/astral-sh/ruff/releases)
- [Changelog](https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md)
- [Commits](https://github.com/astral-sh/ruff/compare/0.15.10...0.15.11)

Updates `boto3-stubs` from 1.42.88 to 1.42.91
- [Release notes](https://github.com/youtype/mypy_boto3_builder/releases)
- [Commits](https://github.com/youtype/mypy_boto3_builder/commits)

Updates `hypothesis` from 6.151.12 to 6.152.1
- [Release notes](https://github.com/HypothesisWorks/hypothesis/releases)
- [Commits](https://github.com/HypothesisWorks/hypothesis/compare/hypothesis-python-6.151.12...hypothesis-python-6.152.1)

Updates `scipy-stubs` from 1.17.1.3 to 1.17.1.4
- [Release notes](https://github.com/scipy/scipy-stubs/releases)
- [Commits](https://github.com/scipy/scipy-stubs/compare/v1.17.1.3...v1.17.1.4)

---
updated-dependencies:
- dependency-name: faker
  dependency-version: 40.15.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: dev
- dependency-name: basedpyright
  dependency-version: 1.39.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: dev
- dependency-name: ruff
  dependency-version: 0.15.11
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: dev
- dependency-name: boto3-stubs
  dependency-version: 1.42.91
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: dev
- dependency-name: hypothesis
  dependency-version: 6.152.1
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: dev
- dependency-name: scipy-stubs
  dependency-version: 1.17.1.4
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: dev
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-04-20 01:30:16 +00:00

296 lines
9.3 KiB
TOML

[project]
name = "dify-api"
version = "1.13.3"
requires-python = "~=3.12.0"
dependencies = [
# Legacy: mature and widely deployed
"bleach>=6.3.0",
"boto3>=1.42.88",
"celery>=5.6.3",
"croniter>=6.2.2",
"flask-cors>=6.0.2",
"gevent>=26.4.0",
"gevent-websocket>=0.10.1",
"gmpy2>=2.3.0",
"google-api-python-client>=2.194.0",
"gunicorn>=25.3.0",
"psycogreen>=1.0.2",
"psycopg2-binary>=2.9.11",
"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.147.0,<2.0.0",
"httpx[socks]>=0.28.1,<1.0.0",
"opentelemetry-distro>=0.62b0,<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.0,<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.2.2",
"httpx-sse~=0.4.0",
"json-repair~=0.59.2",
]
# 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-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 }
[tool.uv]
default-groups = ["storage", "tools", "vdb-all", "trace-all"]
package = false
override-dependencies = [
"pyarrow>=18.0.0",
]
[dependency-groups]
############################################################
# [ Dev ] dependency group
# Required for development and running tests
############################################################
dev = [
"coverage>=7.13.4",
"dotenv-linter>=0.7.0",
"faker>=40.15.0",
"lxml-stubs>=0.5.1",
"basedpyright>=1.39.2",
"ruff>=0.15.11",
"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>=6.2.0",
"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.4.0",
"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",
"types-psutil>=7.2.2",
"types-psycopg2>=2.9.21",
"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.42.91",
"types-jmespath>=1.1.0.20260408",
"hypothesis>=6.152.1",
"types_pyOpenSSL>=24.1.0",
"types_cffi>=2.0.0.20260408",
"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.1",
# "locust>=2.40.4", # Temporarily removed due to compatibility issues. Uncomment when resolved.
"pytest-timeout>=2.4.0",
"pytest-xdist>=3.8.0",
"pyrefly>=0.61.1",
"xinference-client>=2.4.0",
]
############################################################
# [ Storage ] dependency group
# Required for storage clients
############################################################
storage = [
"azure-storage-blob>=12.28.0",
"bce-python-sdk>=0.9.69",
"cos-python-sdk-v5>=1.9.41",
"esdk-obs-python>=3.22.2",
"google-cloud-storage>=3.10.1",
"opendal>=0.46.0",
"oss2>=2.19.1",
"supabase>=2.18.1",
"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.4.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