Ctrl K
ComunidadGuías…

api/pyproject.toml

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
[project]
name = "dify-api"
version = "1.19.0"
requires-python = "~=3.13.0"

dependencies = [
    # Legacy: mature and widely deployed
    "bleach>=6.4.0,<7.0.0",
    "boto3>=1.43.107,<2.0.0",
    "celery>=5.6.3,<6.0.0",
    "croniter>=6.2.2,<7.0.0",
    "dify-agent",
    "dify-trace-sdk",
    "flask>=3.1.3,<4.0.0",
    "flask-cors>=6.0.5,<7.0.0",
    "gevent>=26.4.0,<26.5.0",
    "gevent-websocket==0.10.1",
    "gmpy2>=2.3.0,<3.0.0",
    "google-api-python-client>=2.201.0,<3.0.0",
    "gunicorn>=26.2.0,<27.0.0",
    "psycogreen>=1.0.2,<2.0.0",
    "psycopg2-binary>=2.9.12,<3.0.0",
    "python-socketio>=5.13.0,<6.0.0",
    "redis[hiredis]>=7.4.0,<8.0.0",
    "sendgrid>=6.12.5,<7.0.0",
    "sseclient-py>=1.8.0,<2.0.0",
    # Stable: production-proven, cap below the next major
    "aliyun-log-python-sdk==0.9.44",
    "azure-identity>=1.26.0,<2.0.0",
    "email-validator>=2.3.0,<3.0.0",
    "flask-compress>=1.25,<2.0.0",
    "flask-login==0.6.3",
    "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>=2.7.0,<3.0.0",
    "httpx[socks]==0.28.1",
    "markdown-it-py>=4.0.0,<5.0.0",
    "opentelemetry-distro==0.65b0",
    "opentelemetry-exporter-otlp-proto-grpc>=1.44.0,<2.0.0",
    "opentelemetry-exporter-otlp-proto-http>=1.44.0,<2.0.0",
    "opentelemetry-instrumentation-celery==0.65b0",
    "opentelemetry-instrumentation-flask==0.65b0",
    "opentelemetry-instrumentation-httpx==0.65b0",
    "opentelemetry-instrumentation-redis==0.65b0",
    "opentelemetry-instrumentation-sqlalchemy==0.65b0",
    "opentelemetry-propagator-b3>=1.45.2,<2.0.0",
    "pydantic-settings>=2.14.2,<3.0.0",
    "readabilipy==0.3.0",
    "resend>=2.27.0,<3.0.0",
    "sentry-sdk>=2.57.0,<3.0.0",
    "tzdata>=2025.2",
    "werkzeug>=3.1.7,<4.0.0",
    "zstandard==0.25.0",
    # Emerging: newer and fast-moving, use compatible pins
    "alibabacloud-dingtalk>=2.2.54,<3.0.0",
    "botbuilder-schema>=4.17.0,<5.0.0",
    "botframework-connector>=4.17.0,<5.0.0",
    "fastopenapi[flask]==0.7.0",
    "graphon==0.8.0",
    "httpx-sse==0.4.3",
    "json-repair==0.60.1",
    "lark-oapi==1.7.2",
    "pyjwt>=2.10.1,<3.0.0",
    "slack-sdk>=3.43.0,<4.0.0",
    "wechatpy>=1.8.18,<2.0.0",
    "yarl>=1.25.1,<2.0.0",
]
# 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", editable = true }
flask-restx = { git = "https://github.com/asukaminato0721/flask-restx", rev = "e44a2861b854" }
# shortcut: pin the 0.8.0 container-type fix until a release includes graphon#344.
graphon = { git = "https://github.com/langgenius/graphon", rev = "4fa22141774dff80e90e4dfa98ea3e6fbf0421bb" }
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-sdk = { workspace = true }
dify-trace-opik = { workspace = true }
dify-trace-tencent = { workspace = true }
dify-trace-weave = { workspace = true }

[tool.uv]
default-groups = ["kms", "storage", "tools", "vdb-all", "trace-all"]
package = false
override-dependencies = [
    "litellm>=1.100.4,<2.0.0",
    "pyarrow>=23.0.1,<24.0.0",
    "cryptography>=50.0.0,<51.0.0",
    "setuptools>=84.0.0,<85",
    # `tos` hard-pins `wrapt==1.16.0` without importing it, which blocks
    # `unstructured>=0.24.0` (requires `wrapt>=2.1.1`).
    "wrapt>=2.1.1,<3.0.0",
]

[dependency-groups]

############################################################
# [ Dev ] dependency group
# Required for development and running tests
############################################################
dev = [
    "coverage>=7.17.0",
    "dotenv-linter>=0.9.0",
    "faker>=40.44.0",
    "lxml-stubs>=0.5.1",
    "ruff>=0.17.3",
    "pytest>=9.2.0",
    "pytest-benchmark>=5.3.0",
    "pytest-cov>=7.1.0",
    "pytest-env>=1.8.3",
    "pytest-mock>=3.17.0",
    "testcontainers>=4.15.0,<4.16",
    "types-aiofiles>=25.1.0.20260518",
    "types-beautifulsoup4>=4.12.0",
    "types-cachetools>=7.0.0.20260713",
    "types-colorama>=0.4.15.20260508",
    "types-defusedxml>=0.7.0.20260504",
    "types-deprecated>=1.3.1.20260928",
    "types-docutils>=0.23.0.20260923",
    "types-flask-cors>=6.0.3.20260712",
    "types-flask-migrate>=4.1.0.20260508",
    "types-gevent>=26.9.0.20261006",
    "types-greenlet>=3.5.0.20260518",
    "types-html5lib>=1.1.11.20260518",
    "types-markdown>=3.11.2.20261029",
    "types-oauthlib>=4.0.0.20261018",
    "types-objgraph>=3.7.0.20261018",
    "types-olefile>=0.47.0.20260508",
    "types-openpyxl>=3.1.5.20261017",
    "types-pexpect>=4.9.0.20260518",
    "types-protobuf>=7.35.1.20260906",
    "types-psutil>=7.2.2.20260906",
    "types-psycopg2>=2.9.21.20261008",
    "types-pygments>=2.21.0.20260819",
    "types-pymysql>=1.2.0.20260923",
    "types-python-dateutil>=2.9.0.20261029",
    "types-pywin32>=312.0.0.20261024",
    "types-pyyaml>=6.0.12.20260906",
    "types-regex>=2026.9.29.20261017",
    "types-shapely>=2.1.0.20260728",
    "types-simplejson>=4.2.0.20261006",
    "types-six>=1.17.0.20261008",
    "types-tensorflow>=2.18.0.20261009",
    "types-tqdm>=4.70.0.20260906",
    "types-ujson>=5.10.0",
    "boto3-stubs>=1.43.122",
    "types-jmespath>=1.1.0.20260724",
    "hypothesis>=6.170.13",
    "types_pyOpenSSL>=24.1.0",
    "types_cffi>=2.1.0.20260827",
    "types_setuptools>=84.0.0.20261006",
    "pandas-stubs>=3.1.0.261029",
    "scipy-stubs>=1.18.1.1",
    "types-python-http-client>=3.3.7.20260518",
    "import-linter>=2.15",
    "types-redis>=4.6.0.20241004",
    "celery-types>=0.23.0",
    # "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.4.0",
    "xinference-client>=2.7.0",
    "types-bleach>=6.4.0.20260728",
    "types-croniter>=6.2.4.20261006",
    "types-jsonschema>=4.26.0.20261006",
    "types-grpcio>=1.85.0.20261028",
]

############################################################
# [ KMS ] dependency group
# Required for key management / credential encryption key providers
############################################################
kms = [
    "azure-keyvault-keys>=4.11.2,<5.0.0",
]

############################################################
# [ Storage ] dependency group
# Required for storage clients
############################################################
storage = [
    "azure-storage-blob>=12.31.0,<13.0.0",
    "bce-python-sdk==0.9.79",
    "cos-python-sdk-v5>=1.9.44,<2.0.0",
    "esdk-obs-python>=3.26.6,<4.0.0",
    "google-cloud-storage>=3.16.0,<4.0.0",
    "opendal==0.46.0",
    "oss2>=2.19.1,<3.0.0",
    "supabase>=2.31.0,<3.0.0",
    "tos>=2.9.3,<3.0.0",
]

############################################################
# [ Tools ] dependency group
############################################################
tools = ["cloudscraper>=1.2.71,<2.0.0", "nltk>=3.10.4,<4.0.0"]

############################################################
# [ 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,<3.0.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.13.0"
infer-with-first-use = true
min-severity = "warn"
errors = { missing-override-decorator = "error", unnecessary-type-conversion = "info" }