[project]
name = "open-webui"
description = "Open WebUI (Formerly Ollama WebUI)"
authors = [
    { name = "Timothy Jaeryang Baek", email = "tim@openwebui.com" }
]
license = { file = "LICENSE" }
dependencies = [
    "fastapi==0.111.0",
    "uvicorn[standard]==0.22.0",
    "pydantic==2.8.2",
    "python-multipart==0.0.9",

    "Flask==3.0.3",
    "Flask-Cors==4.0.1",

    "python-socketio==5.11.3",
    "python-jose==3.3.0",
    "passlib[bcrypt]==1.7.4",

    "requests==2.32.3",
    "aiohttp==3.9.5",

    "sqlalchemy==2.0.31",
    "alembic==1.13.2",
    "peewee==3.17.6",
    "peewee-migrate==1.12.2",
    "psycopg2-binary==2.9.9",
    "PyMySQL==1.1.1",
    "bcrypt==4.1.3",

    "pymongo",
    "redis",
    "boto3==1.34.153",

    "argon2-cffi==23.1.0",
    "APScheduler==3.10.4",

    "openai",
    "anthropic",
    "google-generativeai==0.7.2",
    "tiktoken",

    "langchain==0.2.11",
    "langchain-community==0.2.10",
    "langchain-chroma==0.1.2",

    "fake-useragent==1.5.1",
    "chromadb==0.5.4",
    "sentence-transformers==3.0.1",
    "pypdf==4.3.1",
    "docx2txt==0.8",
    "python-pptx==1.0.0",
    "unstructured==0.15.0",
    "Markdown==3.6",
    "pypandoc==1.13",
    "pandas==2.2.2",
    "openpyxl==3.1.5",
    "pyxlsb==1.0.10",
    "xlrd==2.0.1",
    "validators==0.33.0",
    "psutil",

    "opencv-python-headless==4.10.0.84",
    "rapidocr-onnxruntime==1.3.24",

    "fpdf2==2.7.9",
    "rank-bm25==0.2.2",

    "faster-whisper==1.0.2",

    "PyJWT[crypto]==2.8.0",
    "authlib==1.3.1",

    "black==24.8.0",
    "langfuse==2.39.2",
    "youtube-transcript-api==0.6.2",
    "pytube==15.0.0",

    "extract_msg",
    "pydub",
    "duckduckgo-search~=6.2.1",

    "docker~=7.1.0",
    "pytest~=8.2.2",
    "pytest-docker~=3.1.1"
]
readme = "README.md"
requires-python = ">= 3.11, < 3.12.0a1"
dynamic = ["version"]
classifiers = [
    "Development Status :: 4 - Beta",
    "License :: OSI Approved :: MIT License",
    "Programming Language :: Python :: 3",
    "Programming Language :: Python :: 3.11",
    "Topic :: Communications :: Chat",
    "Topic :: Multimedia",
]

[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>[^"]+)"'

[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",
    "webui.db",
    "chroma.sqlite3",
]
force-include = { "CHANGELOG.md" = "open_webui/CHANGELOG.md", build = "open_webui/frontend" }
