Files
open-webui/pyproject.toml
T

252 lines
5.7 KiB
TOML
Raw Normal View History

[project]
name = "open-webui"
2024-08-14 17:13:37 +02:00
description = "Open WebUI"
authors = [
2024-05-21 20:39:37 -07:00
{ name = "Timothy Jaeryang Baek", email = "tim@openwebui.com" }
]
license = { file = "LICENSE" }
dependencies = [
2026-03-08 00:12:22 +01:00
"fastapi==0.135.1",
"uvicorn[standard]==0.41.0",
2025-12-02 08:34:57 +01:00
"pydantic==2.12.5",
"python-multipart==0.0.22",
2025-09-18 10:43:59 -05:00
"itsdangerous==2.2.0",
2025-08-04 23:40:17 +09:00
2026-02-09 23:15:39 +01:00
"python-socketio==5.16.1",
"python-jose==3.5.0",
2026-03-24 20:06:43 -05:00
"cryptography==46.0.5",
2025-10-01 19:19:56 -05:00
"bcrypt==5.0.0",
2025-09-25 14:53:21 -05:00
"argon2-cffi==25.1.0",
2026-02-09 23:15:39 +01:00
"PyJWT[crypto]==2.11.0",
2026-04-13 21:46:32 -05:00
"authlib==1.6.10",
2025-08-04 23:40:17 +09:00
2026-04-13 21:46:32 -05:00
"requests==2.33.1",
"aiohttp==3.13.5", # do not update to 3.13.3 - broken
2026-03-24 20:04:12 -05:00
"async-timeout==5.0.1",
"aiocache==0.12.3",
"aiofiles==25.1.0",
"starlette-compress==1.7.0",
2026-04-24 14:40:17 +09:00
"Brotli==1.2.0",
2026-04-24 16:47:30 +09:00
"brotlicffi==1.2.0.1",
2025-08-01 02:58:51 +09:00
"httpx[socks,http2,zstd,cli,brotli]==0.28.1",
2025-09-25 14:53:21 -05:00
"starsessions[redis]==2.2.1",
2025-12-10 23:59:52 -05:00
"python-mimeparse==2.0.0",
2025-08-04 23:40:17 +09:00
2026-04-24 14:35:15 +09:00
"sqlalchemy[asyncio]==2.0.48",
2026-04-21 19:37:22 +09:00
"aiosqlite==0.21.0",
2026-04-24 18:20:10 +09:00
"psycopg[binary]==3.2.9",
2026-03-08 00:12:22 +01:00
"alembic==1.18.4",
2026-01-17 18:44:32 +01:00
"peewee==3.19.0",
2025-12-02 08:34:57 +01:00
"peewee-migrate==1.14.3",
2025-08-04 23:40:17 +09:00
2026-03-08 00:12:22 +01:00
"pycrdt==0.12.47",
2026-03-24 20:04:12 -05:00
"redis==7.4.0",
"valkey-glide-sync==2.3.1",
2025-08-26 23:05:44 +04:00
2026-03-08 00:12:22 +01:00
"pytz==2026.1.post1",
"APScheduler==3.11.2",
"RestrictedPython==8.1",
2025-08-04 23:40:17 +09:00
2025-05-05 16:49:21 +04:00
"loguru==0.7.3",
2026-02-09 23:15:39 +01:00
"asgiref==3.11.1",
2025-08-04 23:40:17 +09:00
2026-03-24 20:04:12 -05:00
"tiktoken==0.12.0",
"mcp==1.26.0",
2025-09-23 02:40:59 -04:00
2026-03-24 20:04:12 -05:00
"openai==2.29.0",
"anthropic==0.86.0",
2026-03-08 00:12:22 +01:00
"google-genai==1.66.0",
2025-08-04 23:40:17 +09:00
2026-03-08 00:12:22 +01:00
"langchain==1.2.10",
2025-12-22 09:42:50 +04:00
"langchain-community==0.4.1",
"langchain-classic==1.0.1",
2026-03-08 00:12:22 +01:00
"langchain-text-splitters==1.1.1",
2025-08-04 23:40:17 +09:00
2025-08-10 02:25:40 +04:00
"fake-useragent==2.2.0",
2026-03-08 00:12:22 +01:00
"chromadb==1.5.2",
"opensearch-py==3.1.0",
"PyMySQL==1.1.2",
2026-03-08 00:12:22 +01:00
"boto3==1.42.62",
2025-09-12 23:33:08 +04:00
2026-04-13 13:36:54 -05:00
"transformers==5.5.4",
2026-04-13 13:49:28 -05:00
"sentence-transformers==5.4.0",
2026-03-24 20:06:43 -05:00
"accelerate==1.13.0",
"pyarrow==20.0.0", # fix: pin pyarrow version to 20 for rpi compatibility #15897
"einops==0.8.2",
2025-08-04 23:40:17 +09:00
2025-12-02 08:34:57 +01:00
"ftfy==6.3.1",
2025-11-25 10:52:25 +01:00
"chardet==5.2.0",
2026-03-08 00:12:22 +01:00
"pypdf==6.7.5",
"fpdf2==2.8.7",
"pymdown-extensions==10.21",
"docx2txt==0.9",
2025-06-16 12:39:42 +04:00
"python-pptx==1.0.2",
2026-02-09 23:15:39 +01:00
"msoffcrypto-tool==6.0.0",
2026-03-08 00:12:22 +01:00
"nltk==3.9.3",
"Markdown==3.10.2",
2026-03-26 17:26:06 -05:00
"beautifulsoup4==4.14.3",
2025-12-02 08:34:57 +01:00
"pypandoc==1.16.2",
2026-03-08 00:12:22 +01:00
"pandas==3.0.1",
2024-08-03 00:47:05 +02:00
"openpyxl==3.1.5",
"pyxlsb==1.0.10",
"xlrd==2.0.2",
2025-06-10 17:50:32 +04:00
"validators==0.35.0",
2026-03-24 20:04:12 -05:00
"psutil==7.2.2",
"sentencepiece==0.2.1",
2025-02-01 21:02:12 -08:00
"soundfile==0.13.1",
2025-06-10 17:50:32 +04:00
"azure-ai-documentintelligence==1.0.2",
2025-08-04 23:40:17 +09:00
2026-03-08 00:12:22 +01:00
"pillow==12.1.1",
2026-02-09 23:15:39 +01:00
"opencv-python-headless==4.13.0.92",
2025-05-05 16:49:21 +04:00
"rapidocr-onnxruntime==1.4.4",
"rank-bm25==0.2.2",
2025-08-04 23:40:17 +09:00
2026-03-08 00:12:22 +01:00
"onnxruntime==1.24.3",
"faster-whisper==1.2.1",
2025-08-04 23:40:17 +09:00
2026-04-13 21:45:17 -05:00
"black==26.3.1",
"youtube-transcript-api==1.2.4",
2024-05-22 09:50:22 +01:00
"pytube==15.0.0",
2025-08-04 23:40:17 +09:00
2026-03-24 20:04:12 -05:00
"pydub==0.25.1",
2026-03-11 14:25:18 -05:00
"ddgs==9.11.3",
2025-08-04 23:40:17 +09:00
2026-03-24 20:04:12 -05:00
"google-api-python-client==2.193.0",
"google-auth-httplib2==0.3.0",
"google-auth-oauthlib==1.3.0",
2025-08-04 23:40:17 +09:00
2025-12-02 08:34:57 +01:00
"googleapis-common-protos==1.72.0",
2026-02-09 23:15:39 +01:00
"google-cloud-storage==3.9.0",
2025-08-04 23:40:17 +09:00
2026-03-08 00:12:22 +01:00
"azure-identity==1.25.2",
2026-01-17 18:44:32 +01:00
"azure-storage-blob==12.28.0",
2025-08-04 23:40:17 +09:00
2025-01-22 10:43:08 -08:00
"ldap3==2.9.1",
]
readme = "README.md"
2024-12-14 18:09:10 +08:00
requires-python = ">= 3.11, < 3.13.0a1"
dynamic = ["version"]
classifiers = [
"Development Status :: 4 - Beta",
2025-06-17 12:17:02 +04:00
"License :: Other/Proprietary License",
2024-05-20 11:12:03 +08:00
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.11",
2024-12-14 18:09:10 +08:00
"Programming Language :: Python :: 3.12",
"Topic :: Communications :: Chat",
"Topic :: Multimedia",
]
2025-08-26 23:05:44 +04:00
[project.optional-dependencies]
postgres = [
"psycopg2-binary==2.9.11",
"pgvector==0.4.2",
2025-08-26 23:05:44 +04:00
]
mariadb = [
"mariadb==1.1.14",
]
2026-03-13 20:57:12 -05:00
unstructured = [
"unstructured==0.18.31",
]
2025-08-26 23:05:44 +04:00
all = [
2026-03-24 20:04:12 -05:00
"pymongo==4.16.0",
"psycopg2-binary==2.9.11",
"pgvector==0.4.2",
2025-08-26 23:05:44 +04:00
"moto[s3]>=5.0.26",
"gcp-storage-emulator>=2024.8.3",
"docker~=7.1.0",
"pytest~=8.3.2",
2025-12-02 08:34:57 +01:00
"pytest-docker~=3.2.5",
"playwright==1.58.0", # Caution: version must match docker-compose.playwright.yaml - Update the docker-compose.yaml if necessary
2026-02-09 23:15:39 +01:00
"elasticsearch==9.3.0",
2025-09-12 23:33:08 +04:00
2026-03-08 00:12:22 +01:00
"qdrant-client==1.17.0",
2025-12-22 19:06:15 +04:00
2026-03-08 00:12:22 +01:00
"weaviate-client==4.20.3",
"pymilvus==2.6.9",
2025-09-12 23:33:08 +04:00
"pinecone==6.0.2",
"oracledb==3.4.2",
"colbert-ai==0.2.22",
2025-11-13 19:14:00 -05:00
"azure-search-documents==11.6.0",
2026-03-13 20:57:12 -05:00
"unstructured==0.18.31",
2025-08-26 23:05:44 +04:00
]
[project.scripts]
open-webui = "open_webui:app"
[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
[tool.rye]
managed = true
dev-dependencies = []
[tool.hatch.metadata]
allow-direct-references = true
[tool.hatch.version]
path = "package.json"
pattern = '"version":\s*"(?P<version>[^"]+)"'
2024-05-20 11:12:03 +08:00
[tool.hatch.build.hooks.custom] # keep this for reading hooks from `hatch_build.py`
[tool.hatch.build.targets.wheel]
sources = ["backend"]
exclude = [
".dockerignore",
".gitignore",
".webui_secret_key",
"dev.sh",
"requirements.txt",
"start.sh",
"start_windows.bat",
2024-05-20 11:12:03 +08:00
"webui.db",
"chroma.sqlite3",
]
2024-05-20 11:12:03 +08:00
force-include = { "CHANGELOG.md" = "open_webui/CHANGELOG.md", build = "open_webui/frontend" }
2025-01-03 14:06:43 -05:00
[tool.codespell]
# Ref: https://github.com/codespell-project/codespell#using-a-config-file
skip = '.git*,*.svg,package-lock.json,i18n,*.lock,*.css,*-bundle.js,locales,example-doc.txt,emoji-shortcodes.json'
check-hidden = true
# ignore-regex = ''
ignore-words-list = 'ans'
2025-07-15 10:56:13 +09:00
[dependency-groups]
dev = [
"pytest-asyncio>=1.0.0",
2026-03-16 01:22:27 +03:00
"ruff>=0.15.5",
2025-07-15 10:56:13 +09:00
]
2026-03-16 01:22:27 +03:00
[tool.black]
line-length = 120
skip-string-normalization = true
2026-03-16 01:22:27 +03:00
[tool.ruff]
line-length = 120
[tool.ruff.format]
quote-style = "single"
docstring-code-format = false
[tool.ruff.lint]
select = [
"E", # pycodestyle errors
"F", # pyflakes
"W", # pycodestyle warnings
"I", # isort
"UP", # pyupgrade
"C90", # mccabe
"Q", # flake8-quotes
"ICN", # flake8-import-conventions
]
# Plugin configs:
flake8-import-conventions.banned-from = [ "ast", "datetime" ]
flake8-import-conventions.aliases = { datetime = "dt" }
flake8-quotes.inline-quotes = "single"
mccabe.max-complexity = 10
pydocstyle.convention = "google"