[project]
name = "langflow-base"
version = "0.9.4"
description = "A Python package with a built-in web application"
requires-python = ">=3.10,<3.15"
license = "MIT"
keywords = ["nlp", "langchain", "openai", "gpt", "gui"]
readme = "README.md"
maintainers = [
    { name = "Carlos Coelho", email = "carlos@langflow.org" },
    { name = "Cristhian Zanforlin", email = "cristhian.lousa@gmail.com" },
    { name = "Gabriel Almeida", email = "gabriel@langflow.org" },
    { name = "Lucas Eduoli", email = "lucaseduoli@gmail.com" },
    { name = "Otávio Anovazzi", email = "otavio2204@gmail.com" },
    { name = "Rodrigo Nader", email = "rodrigo@langflow.org" },
    { name = "Italo dos Anjos", email = "italojohnnydosanjos@gmail.com" },
]

dependencies = [
    "lfx~=0.4.4",
    "fastapi>=0.135.0,<1.0.0",
    "httpx[http2]>=0.27,<1.0.0",
    "aiofile>=3.9.0,<4.0.0",
    "uvicorn>=0.30.0,<1.0.0",
    "gunicorn>=25.3.0,<27.0.0",
    "langchain~=1.2.0",
    "langchain-community~=0.4.1",
    "langchain-mongodb>=0.11.0",
    "langchain-perplexity>=1.0.0,<2.0.0",
    "langchain-qdrant>=1.0.0,<2.0.0",
    "langchain-weaviate>=0.0.6",
    "langchain-core>=1.3.3,<2.0.0",
    "langchainhub~=0.1.15",
    "loguru>=0.7.1,<1.0.0",
    "structlog>=25.4.0,<26.0.0",
    "rich>=13.7.0,<14.0.0",
    "langchain-experimental~=0.4.1",
    "sqlmodel~=0.0.37",
    "pydantic~=2.12.5",
    "pydantic-settings>=2.2.0,<3.0.0",
    "email-validator>=2.0.0",
    "typer>=0.13.0,<1.0.0",
    "cachetools>=6.0.0",
    "platformdirs>=4.2.0,<5.0.0",
    "python-multipart>=0.0.12,<1.0.0",
    "orjson>=3.11.6,<4.0.0",
    "alembic>=1.13.0,<2.0.0",
    "passlib>=1.7.4,<2.0.0",
    "bcrypt==4.0.1",
    "pillow>=12.1.1,<13.0.0",
    "docstring-parser>=0.16,<1.0.0",
    "PyJWT>=2.12.1",
    "pandas>=2.2.3",
    "multiprocess>=0.70.14,<1.0.0",
    "duckdb>=1.0.0,<2.0.0",
    "python-docx>=1.1.0,<2.0.0",
    "jq>=1.7.0,<2.0.0; sys_platform != 'win32'",
    "nest-asyncio>=1.6.0,<2.0.0",
    "emoji>=2.12.0,<3.0.0",
    "cryptography>=46.0.7",
    "asyncer>=0.0.5,<1.0.0",
    "pyperclip>=1.8.2,<2.0.0",
    "uncurl>=0.0.11,<1.0.0",
    "sentry-sdk[fastapi,loguru]>=2.5.1,<3.0.0",
    "chardet>=7.3.0",
    "firecrawl-py>=1.0.16,<2.0.0",
    "opentelemetry-api>=1.30.0,<2.0.0",
    "opentelemetry-sdk>=1.30.0,<2.0.0",
    "opentelemetry-exporter-prometheus>=0.50b0,<1.0.0",
    "opentelemetry-exporter-otlp>=1.30.0,<2.0.0",
    "opentelemetry-instrumentation-fastapi>=0.50b0,<1.0.0",
    "prometheus-client>=0.20.0,<1.0.0",
    "aiofiles>=24.1.0,<25.0.0",
    "pip>=26.0.0,<27.0.0",
    "setuptools>=80.0.0,<81.0.0",
    "nanoid>=2.0.0,<3.0.0",
    "filelock>=3.20.1,<4.0.0",
    "grandalf>=0.8.0,<1.0.0",
    "spider-client>=0.0.27,<1.0.0",
    "clickhouse-connect==0.7.19",
    "assemblyai>=0.33.0,<1.0.0",
    "fastapi-pagination>=0.13.1,<1.0.0",
    "defusedxml>=0.7.1,<1.0.0",
    "pypdf>=6.10.0,<7.0.0",
    "validators>=0.34.0,<1.0.0",
    "networkx>=3.4.2,<4.0.0",
    "json-repair>=0.30.3,<1.0.0",
    "mcp>=1.17.0,<2.0.0",
    "aiosqlite>=0.20.0,<1.0.0",
    "greenlet>=3.1.1,<4.0.0",
    "jsonquerylang>=1.1.1,<2.0.0",
    "sqlalchemy[aiosqlite]>=2.0.38,<3.0.0",
    'elevenlabs==1.58.1; python_version == "3.12"',
    'elevenlabs>=1.52.0,<2.0.0; python_version != "3.12"',
    "scipy>=1.15.2,<2.0.0",
    "ibm-watsonx-ai>=1.3.1,<2.0.0; python_version < '3.14'",
    "langchain-ibm~=1.0.2; python_version < '3.14'",
    "trustcall>=0.0.38,<1.0.0",
    "langchain-chroma~=0.2.6",
    "jaraco-context>=6.1.0",
    "wheel>=0.46.2,<1.0.0",
    "onnxruntime>=1.20,<1.24; python_version<'3.14'", # >=1.24 does not support Python 3.10; allow 1.23.x for agent-lifecycle-toolkit compatibility
    "onnxruntime>=1.26; python_version>='3.14'",
    "protobuf>=6.33.6,<7.0.0",
    "dynaconf>=3.2.13,<4.0.0",
    "pyasn1>=0.6.3,<0.7.0",
    "langgraph-checkpoint>4.0.0,<5.0.0",
    "transformers>=5.6.0,<6.0.0",
]

[dependency-groups]
dev = [
    "asgi-lifespan>=2.1.0",
    "pytest-github-actions-annotate-failures>=0.2.0",
    "ipykernel>=6.29.0",
    "ruff>=0.12.7",
    "httpx[http2]>=0.27",
    "pytest>=9.0.3",
    "requests>=2.33.0",
    "pytest-cov>=5.0.0",
    "pytest-mock>=3.14.0",
    "pytest-xdist>=3.6.0",
    "pytest-sugar>=1.0.0",
    "respx>=0.21.1",
    "pytest-instafail>=0.5.0",
    "pytest-asyncio>=0.23.0",
    "pytest-profiling>=1.7.0",
    "pre-commit>=3.7.0",
    "vulture>=2.11",
    "dictdiffer>=0.9.0",
    "pytest-split>=0.9.0",
    "devtools>=0.12.2",
    "pytest-flakefinder>=1.1.0",
    "types-markdown>=3.7.0.20240822",
    "codeflash>=0.8.4",
]


[tool.hatch.build.targets.wheel]
packages = ["langflow"]


[tool.pytest.ini_options]
minversion = "6.0"
#addopts = "-ra"
testpaths = ["tests", "integration"]
console_output_style = "progress"
filterwarnings = ["ignore::DeprecationWarning"]
log_cli = true
markers = ["async_test"]
asyncio_mode = "auto"
asyncio_default_fixture_loop_scope = "function"

[tool.codeflash]
# All paths are relative to this pyproject.toml's directory.
module-root = "langflow"
tests-root = "../tests/unit"
test-framework = "pytest"
ignore-paths = ["langflow/components/"]
formatter-cmds = ["ruff check --exit-zero --fix $file", "ruff format $file"]
# disable plugins that might interfere with runtime measurement
pytest-cmd = "pytest -p no:profiling -p no:sugar -p no:xdist -p no:cov -p no:split"


[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"

[project.urls]
Repository = "https://github.com/langflow-ai/langflow"
Documentation = "https://docs.langflow.org"
# Optional dependencies
[project.optional-dependencies]
audio = [
    "webrtcvad>=2.0.10",
]

postgresql = [
    "sqlalchemy[postgresql_psycopg2binary]>=2.0.38,<3.0.0",
    "sqlalchemy[postgresql_psycopg]>=2.0.38,<3.0.0",
]

local = [
    "sentence-transformers>=2.0.0",
    "ctransformers>=0.2"
]

# Individual database providers
couchbase = ["couchbase>=4.2.1"]
cassandra = ["cassio>=0.1.7"]
clickhouse = ["clickhouse-connect==0.7.19"]


mongodb = ["pymongo>=4.10.1"]
supabase = ["supabase>=2.6.0,<3.0.0"]
redis = ["redis>=7.4.0,<8.0.0"]
elasticsearch = ["elasticsearch~=8.19", "langchain-elasticsearch~=1.0.0"]

# Individual vector store providers
faiss = [
    "faiss-cpu==1.9.0.post1; python_version<'3.14'",
    "faiss-cpu>=1.13.2; python_version>='3.14'",
]
qdrant = ["qdrant-client>=1.12.0,<2.0.0"]
qdrant-vectors = ["langchain-qdrant>=1.0.0,<2.0.0"]
weaviate = ["weaviate-client>=4.10.2,<5.0.0"]
chroma = [
    "chromadb>=1.0.0,<2.0.0",
    "langchain-chroma~=0.2.6"
]
upstash = ["upstash-vector==0.6.0"]
pinecone = ["langchain-pinecone~=0.2.13; python_version < '3.14'"]
milvus = ["langchain-milvus~=0.3.2"]
mongodb-vectors = ["langchain-mongodb>=0.11.0"]
astradb = ["langchain-astradb~=1.0.0"]

# Individual LLM providers
openai = ["langchain-openai>=1.1.6", "openai>=1.68.2,<3.0.0"]
anthropic = ["langchain-anthropic~=1.3.0"]
cohere = ["langchain-cohere~=0.5.0"]
google = [
    "langchain-google-genai~=4.1.2",
    "langchain-google-vertexai>=3.2.0",
    "langchain-google-community~=3.0.2",
    "langchain-google-calendar-tools~=0.0.1",
    "google-api-python-client~=2.161",
]
ollama = ["langchain-ollama~=0.3.10"]
nvidia = ["langchain-nvidia-ai-endpoints~=1.0.0"]
mistral = ["langchain-mistralai~=1.1.1"]
sambanova = ["langchain-sambanova~=1.0.0"]
groq = ["langchain-groq~=1.1.1"]

# Individual local LLM providers
sentence-transformers = ["sentence-transformers>=2.3.1"]
ctransformers = ["ctransformers>=0.2.10"]

# Individual monitoring providers
langfuse = ["langfuse~=3.8; python_version < '3.14'"]
langwatch = ["langwatch~=0.10.0; python_version < '3.14'"]
langsmith = ["langsmith>=0.3.42,<1.0.0"]
arize = ["arize-phoenix-otel>=0.6.1"]

# Individual document loaders
pypdf = ["pypdf>=6.10.0,<7.0.0"]
docx = ["python-docx>=1.1.0"]
pytube = ["pytube==15.0.0"]

# Individual agent frameworks
# crewai is commented out due to httpx version conflict
# crewai = ["crewai>=0.126.0"]
smolagents = ["smolagents>=1.8.0"]

# Individual tools
beautifulsoup = ["beautifulsoup4==4.12.3"]
serpapi = ["google-search-results>=2.4.1,<3.0.0"]
google-api = ["google-api-python-client~=2.161"]
wikipedia = ["wikipedia==1.4.0"]
fake-useragent = ["fake-useragent>=2.0.0"]
duckduckgo = ["ddgs>=9.0.0"]
yfinance = ["yfinance==0.2.50"]
wolframalpha = ["wolframalpha==5.1.3"]

# Individual utilities
pyarrow = ["pyarrow>=23.0.1,<24.0.0"]
fastavro = [
    'fastavro==1.9.7; python_version < "3.13"',
    'fastavro>=1.9.8,<2.0.0; python_version >= "3.13"',
]
gitpython = ["GitPython>=3.1.50"]
nltk = ["nltk>=3.9.4"]
lark = ["lark==1.2.2"]

# Additional dependencies from requirements
huggingface = ["huggingface-hub[inference]>=1.0.0,<2.0.0"]
metaphor = ["metaphor-python==0.1.23"]
metal = ["metal_sdk==2.5.1"]
markup = ["MarkupSafe==3.0.2"]
aws = ["boto3>=1.34.162,<2.0.0", "langchain-aws~=1.1.0"]
numexpr = ["numexpr>=2.10.4"]
qianfan = ["qianfan==0.3.5"]
pgvector = ["pgvector>=0.4.2"]
litellm = ["litellm>=1.83.0"]
zep = ["zep-python==2.0.2"]
youtube = ["youtube-transcript-api>=1.0.0,<2.0.0"]
markdown = ["Markdown>=3.8.0"]
kubernetes = ["kubernetes==31.0.0"]
json-repair = ["json_repair==0.30.3"]
composio = [
    "composio==0.9.2",
    "composio-langchain==0.9.2"
]
ragstack = ["ragstack-ai-knowledge-store==0.2.1; python_version < '3.13'"]
opensearch = ["opensearch-py==2.8.0"]
atlassian = ["atlassian-python-api==3.41.16"]
mem0 = ["mem0ai>=2.0.2,<3.0.0"]
needle = ["needle-python>=0.4.0"]
sseclient = ["sseclient-py==1.8.0"]
openinference = ["openinference-instrumentation-langchain>=0.1.29"]
mcp = ["mcp>=1.17.0,<2.0.0"]
ag2 = ["ag2>=0.1.0"]
scrapegraph = ["scrapegraph-py>=1.12.0"]
apify = ["apify-client>=1.8.1"]
spider = ["spider-client>=0.0.27,<1.0.0"]

# ALTK (Agent Lifecycle Toolkit)
# Updated to 0.10.1+ for PyTorch 2.6.0 compatibility (addresses torch.load RCE vulnerability)
# Upper bound prevents breaking changes in future major versions
# Excluded on macOS x86_64: PyTorch dropped Intel Mac wheel builds after v2.2.2 (see LE-172)
altk = ["agent-lifecycle-toolkit>=0.10.1,<1.0; (sys_platform != 'darwin' or platform_machine != 'x86_64') and python_version < '3.14'"]

# Toolguard Integration
toolguard = ["toolguard>=0.2.16,<1.0.0"]

# Additional LangChain integrations
# Excluded on macOS x86_64: transitive torch dependency (via sentence-transformers) has no Intel Mac wheels (see LE-172)
langchain-huggingface = ["langchain-huggingface~=1.2.0; sys_platform != 'darwin' or platform_machine != 'x86_64'"]
langchain-unstructured = ["langchain-unstructured~=1.0.0"]
graph-retriever = ["langchain-graph-retriever==0.8.0", "graph-retriever==0.8.0"]
langchain-mcp-adapters = ["langchain-mcp-adapters>=0.1.14,<0.2.0"]

# Additional monitoring
opik = ["opik>=2.0.0,<3.0.0"]
traceloop = ["traceloop-sdk>=0.43.1,<1.0.0"]
openlayer = ["openlayer>=0.9.0,<1.0.0"]

# Document processing / OCR
docling = [
    "docling-core>=2.77.0,<3.0.0",
    "docling>=2.36.1,<3.0.0; sys_platform != 'darwin' or platform_machine != 'x86_64'",
]
easyocr = ["easyocr>=1.7.2,<2.0.0; sys_platform != 'darwin' or platform_machine != 'x86_64'"]

# Additional tools
cleanlab = ["cleanlab-tlm>=1.1.2,<2.0.0"]
twelvelabs = ["twelvelabs>=0.4.7,<1.0.0"]
jigsawstack = ["jigsawstack==0.2.7"]
assemblyai = ["assemblyai==0.35.1"]

# Data processing
datasets = ["datasets>2.14.7,<5.0.0"]
fastparquet = ["fastparquet>=2024.11.0,<2025.0.0"]

# Vision / ML
vlmrun = ["vlmrun[all]>=0.2.0"]
cuga = [
    "cuga>=0.2.20,<0.3.0; sys_platform != 'darwin' and python_version < '3.14'",
    "cuga>=0.2.20,<0.3.0; sys_platform == 'darwin' and platform_machine == 'arm64' and python_version < '3.14'",
]
mlx = [
    "mlx>=0.29.0; sys_platform == 'darwin' and platform_machine == 'arm64' and python_version >= '3.12'",
    "mlx-vlm~=0.3.9; sys_platform == 'darwin' and platform_machine == 'arm64' and python_version >= '3.12'",
]

# MCP
fastmcp = ["fastmcp>=3.2.0"]

# AWS extras
aioboto3 = ["aioboto3>=15.2.0,<16.0.0"]

# Astra
astrapy = ["astrapy>=2.1.0,<3.0.0"]

# Windows-specific
gassist = ["gassist>=0.0.1; sys_platform == 'win32'"]

# SDKs for IBM watsonx Orchestrate deployment adapter.
ibm-watsonx-clients = [
    "ibm-cloud-sdk-core~=3.24.4",
    "ibm-watsonx-orchestrate-core~=2.8.0; python_version >= '3.11' and python_version < '3.14'",
    "ibm-watsonx-orchestrate-clients~=2.8.0; python_version >= '3.11' and python_version < '3.14'",
]

complete = [
    "langflow-base[couchbase]",
    "langflow-base[cassandra]",
    "langflow-base[clickhouse]",
    "langflow-base[mongodb]",
    "langflow-base[supabase]",
    "langflow-base[redis]",
    "langflow-base[elasticsearch]",
    "langflow-base[faiss]",
    "langflow-base[qdrant]",
    "langflow-base[qdrant-vectors]",
    "langflow-base[weaviate]",
    "langflow-base[chroma]",
    "langflow-base[upstash]",
    "langflow-base[pinecone]",
    "langflow-base[milvus]",
    "langflow-base[mongodb-vectors]",
    "langflow-base[astradb]",
    "langflow-base[openai]",
    "langflow-base[anthropic]",
    "langflow-base[cohere]",
    "langflow-base[google]",
    "langflow-base[ollama]",
    "langflow-base[nvidia]",
    "langflow-base[mistral]",
    "langflow-base[sambanova]",
    "langflow-base[groq]",
    "langflow-base[langfuse]",
    "langflow-base[langwatch]",
    "langflow-base[langsmith]",
    "langflow-base[arize]",
    "langflow-base[pypdf]",
    "langflow-base[docx]",
    "langflow-base[pytube]",
    # "langflow-base[crewai]",  # commented out due to httpx version conflict
    "langflow-base[smolagents]",
    "langflow-base[beautifulsoup]",
    "langflow-base[serpapi]",
    "langflow-base[google-api]",
    "langflow-base[wikipedia]",
    "langflow-base[fake-useragent]",
    "langflow-base[duckduckgo]",
    "langflow-base[yfinance]",
    "langflow-base[wolframalpha]",
    "langflow-base[pyarrow]",
    "langflow-base[fastavro]",
    "langflow-base[gitpython]",
    "langflow-base[nltk]",
    "langflow-base[lark]",
    "langflow-base[huggingface]",
    "langflow-base[metaphor]",
    "langflow-base[metal]",
    "langflow-base[markup]",
    "langflow-base[aws]",
    "langflow-base[numexpr]",
    "langflow-base[qianfan]",
    "langflow-base[pgvector]",
    "langflow-base[litellm]",
    "langflow-base[zep]",
    "langflow-base[youtube]",
    "langflow-base[markdown]",
    "langflow-base[kubernetes]",
    "langflow-base[json-repair]",
    "langflow-base[composio]",
    "langflow-base[ragstack]",
    "langflow-base[opensearch]",
    "langflow-base[atlassian]",
    "langflow-base[mem0]",
    "langflow-base[needle]",
    "langflow-base[sseclient]",
    "langflow-base[openinference]",
    "langflow-base[mcp]",
    "langflow-base[ag2]",
    "langflow-base[scrapegraph]",
    "langflow-base[apify]",
    "langflow-base[spider]",
    # ALTK
    "langflow-base[altk]",
    # Toolguard
    "langflow-base[toolguard]",
    # Additional LangChain integrations
    "langflow-base[langchain-huggingface]",
    "langflow-base[langchain-unstructured]",
    "langflow-base[graph-retriever]",
    "langflow-base[langchain-mcp-adapters]",
    # Additional monitoring
    "langflow-base[opik]",
    "langflow-base[traceloop]",
    "langflow-base[openlayer]",
    # Document processing / OCR
    "langflow-base[docling]",
    "langflow-base[easyocr]",
    # Additional tools
    "langflow-base[cleanlab]",
    "langflow-base[twelvelabs]",
    "langflow-base[jigsawstack]",
    "langflow-base[assemblyai]",
    # Data processing
    "langflow-base[datasets]",
    "langflow-base[fastparquet]",
    # Vision / ML
    "langflow-base[vlmrun]",
    "langflow-base[cuga]",
    "langflow-base[mlx]",
    # MCP
    "langflow-base[fastmcp]",
    # AWS extras
    "langflow-base[aioboto3]",
    # Astra
    "langflow-base[astrapy]",
    # Windows-specific
    "langflow-base[gassist]",
    # wxO deployment adapter,
    "langflow-base[ibm-watsonx-clients]"
]

all = [
    "langflow-base[complete]",
]

[project.scripts]
langflow-base = "langflow.langflow_launcher:main"
