[tool.poetry] name = "langflow" version = "1.0.18" description = "A Python package with a built-in web application" authors = ["Langflow "] maintainers = [ "Carlos Coelho ", "Cristhian Zanforlin ", "Gabriel Almeida ", "Igor Carvalho ", "Lucas Eduoli ", "Otávio Anovazzi ", "Rodrigo Nader ", "Italo dos Anjos ", ] repository = "https://github.com/langflow-ai/langflow" license = "MIT" readme = "README.md" keywords = ["nlp", "langchain", "openai", "gpt", "gui"] packages = [{ include = "langflow", from = "src/backend" }] include = ["src/backend/langflow/*", "src/backend/langflow/**/*"] documentation = "https://docs.langflow.org" [tool.uv.sources] langflow-base = {path = "src/backend/base"} [tool.hatch.build.targets.wheel] packages = ["src/backend/langflow"] [project] name = "langflow" version = "1.0.18" description = "A Python package with a built-in web application" requires-python = ">=3.10,<3.13" # Define your main dependencies here dependencies = [ "langflow-base==0.0.96", # Local editable package "beautifulsoup4>=4.12.2", "google-search-results>=2.4.1", "google-api-python-client>=2.130.0", "huggingface-hub[inference]>=0.23.2", "networkx>=3.1", "fake-useragent>=1.5.0", "psycopg2-binary>=2.9.6", "pyarrow>=14.0.0", "wikipedia>=1.4.0", "qdrant-client>=1.9.0", "weaviate-client", "cohere>=5.5.3", "faiss-cpu>=1.8.0", "types-cachetools>=5.3.0.5", "pymongo>=4.6.0", "supabase>=2.3.0", "certifi>=2023.11.17,<2025.0.0", "psycopg>=3.1.9", "fastavro>=1.8.0", "redis>=5.0.1", "metaphor-python>=0.1.11", 'pywin32>=306; sys_platform == "win32"', "langfuse>=2.33.0", "metal-sdk>=2.5.0", "markupsafe>=2.1.3", "boto3~=1.34.162", "numexpr>=2.8.6", "qianfan==0.3.5", "pgvector>=0.2.3", "pyautogen>=0.2.0", "langchain-google-genai>=1.0.8", "langchain-cohere>=0.1.5", "elasticsearch>=8.12.0", "pytube>=15.0.0", "dspy-ai>=2.4.0", "assemblyai>=0.26.0", "litellm>=1.44.0", "chromadb>=0.4", "langchain-anthropic>=0.1.23", "langchain-astradb>=0.3.5", "langchain-openai==0.1.22", "zep-python>=2.0.0rc5", "langchain-google-vertexai>=1.0.10", "langchain-groq>=0.1.9", "langchain-pinecone>=0.1.3", "langchain-mistralai==0.1.12", "youtube-transcript-api>=0.6.2", "markdown>=3.7", "langchain-chroma>=0.1.1", "upstash-vector>=0.5.0", "gitpython>=3.1.43", "langchain-aws>=0.1.16", "langchain-unstructured>=0.1.2", "langchain-mongodb>=0.1.6", "kubernetes>=30.1.0", "firecrawl-py>=0.0.16", "json-repair>=0.25.2", "langchain-nvidia-ai-endpoints==0.1.6", "langchain-google-calendar-tools>=0.0.1", "langchain-milvus>=0.1.1", "langwatch>=0.1.16", "langsmith>=0.1.86", "yfinance>=0.2.40", "langchain-google-community==1.0.7", "wolframalpha>=5.1.3", "astra-assistants>=2.1.2", "composio-langchain==0.5.9", "spider-client>=0.0.27", "nltk>=3.9.1", "bson>=0.5.10", "lark>=1.2.2", "jq>=1.8.0", "pydantic-settings==2.4.0", "ragstack-ai-knowledge-store>=0.2.1", "duckduckgo-search>=6.2.11", ] [project.optional-dependencies] deploy = [ "celery[redis]>=5.3.6", "flower>=2.0.0" ] couchbase = [ "couchbase>=4.2.1" ] cassio = [ "cassio>=0.1.7" ] local = [ "llama-cpp-python~=0.2.0", "sentence-transformers>=2.3.1", "ctransformers>=0.2.10" ] clickhouse-connect = [ "clickhouse-connect[clickhouse-connect]==0.7.19" ] [project.scripts] langflow = "langflow.__main__:main" [tool.poetry.scripts] langflow = "langflow.__main__:main" [tool.poetry.dependencies] python = ">=3.10,<3.13" langflow-base = { path = "./src/backend/base", develop = true } beautifulsoup4 = "^4.12.2" google-search-results = "^2.4.1" google-api-python-client = "^2.130.0" huggingface-hub = { version = "^0.23.2", extras = ["inference"] } llama-cpp-python = { version = "~0.2.0", optional = true } networkx = "^3.1" fake-useragent = "^1.5.0" psycopg2-binary = "^2.9.6" pyarrow = "^14.0.0" wikipedia = "^1.4.0" qdrant-client = "^1.9.0" weaviate-client = "^4.6.5" sentence-transformers = { version = "^2.3.1", optional = true } ctransformers = { version = "^0.2.10", optional = true } cohere = "^5.5.3" faiss-cpu = "^1.8.0" types-cachetools = "^5.3.0.5" pymongo = "^4.6.0" supabase = "^2.3.0" certifi = ">=2023.11.17,<2025.0.0" psycopg = "3.1.9" # https://github.com/psycopg/psycopg/issues/858 fastavro = "^1.8.0" celery = { extras = ["redis"], version = "^5.3.6", optional = true } redis = "^5.0.1" flower = { version = "^2.0.0", optional = true } metaphor-python = "^0.1.11" pywin32 = { version = "^306", markers = "sys_platform == 'win32'" } langfuse = "^2.33.0" metal-sdk = "^2.5.0" markupsafe = "^2.1.3" boto3 = "~1.34.162" numexpr = "^2.8.6" qianfan = "0.3.5" pgvector = "^0.2.3" pyautogen = "^0.2.0" langchain-google-genai = "1.0.8" langchain-cohere = "^0.1.5" elasticsearch = "^8.12.0" pytube = "^15.0.0" dspy-ai = "^2.4.0" assemblyai = "^0.33.0" litellm = "^1.44.0" chromadb = "^0.4" langchain-anthropic = "^0.1.23" langchain-astradb = "^0.3.5" langchain-openai = "0.1.22" zep-python = { version = "^2.0.0rc5", allow-prereleases = true } langchain-google-vertexai = "1.0.10" langchain-groq = "0.1.9" langchain-pinecone = "^0.1.3" langchain-mistralai = "0.1.12" couchbase = { extras = ["couchbase"], version = "^4.2.1", optional = true } youtube-transcript-api = "^0.6.2" markdown = "^3.7" langchain-chroma = "^0.1.1" upstash-vector = "^0.5.0" gitpython = "^3.1.43" cassio = { extras = ["cassio"], version = "^0.1.7", optional = true } unstructured = {extras = ["docx", "md", "pptx"], version = "^0.14.4"} langchain-aws = "^0.1.16" langchain-mongodb = "^0.1.6" kubernetes = "^30.1.0" firecrawl-py = "^0.0.16" json-repair = "^0.25.2" langchain-nvidia-ai-endpoints = "0.1.6" langchain-google-calendar-tools = "^0.0.1" langchain-milvus = "^0.1.1" crewai = {extras = ["tools"], version = "^0.36.0"} langwatch = "^0.1.16" langsmith = "^0.1.86" yfinance = "^0.2.40" langchain-google-community = "1.0.7" wolframalpha = "^5.1.3" astra-assistants = "^2.1.2" composio-langchain = "0.5.9" spider-client = "^0.0.27" nltk = "^3.9.1" bson = "^0.5.10" lark = "^1.2.2" jq = "^1.8.0" clickhouse-connect = {version = "0.7.19", optional = true, extras = ["clickhouse-connect"]} langchain-unstructured = "^0.1.2" pydantic-settings = "2.4.0" ragstack-ai-knowledge-store = "^0.2.1" duckduckgo-search = "^6.2.12" [tool.poetry.group.dev.dependencies] types-redis = "^4.6.0.5" ipykernel = "^6.29.0" mypy = "^1.11.0" ruff = ">=0.6.2,<0.7.0" httpx = "*" pytest = "^8.2.0" types-requests = "^2.32.0" requests = "^2.32.0" pytest-cov = "^5.0.0" pandas-stubs = "^2.1.4.231227" types-pillow = "^10.2.0.20240213" types-pyyaml = "^6.0.12.8" types-python-jose = "^3.3.4.8" types-passlib = "^1.7.7.13" pytest-mock = "^3.14.0" pytest-xdist = "^3.6.0" types-pywin32 = "^306.0.0.4" types-google-cloud-ndb = "^2.2.0.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" pytest-flakefinder = "^1.1.0" types-markdown = "^3.7.0.20240822" packaging = ">=23.2,<24.0" [tool.poetry.extras] deploy = ["celery", "redis", "flower"] couchbase = ["couchbase"] cassio = ["cassio"] local = ["llama-cpp-python", "sentence-transformers", "ctransformers"] [tool.uv] dev-dependencies = [ "pytest-instafail>=0.5.0", "types-redis>=4.6.0.5", "ipykernel>=6.29.0", "mypy>=1.11.0", "ruff>=0.6.2,<0.7.0", "httpx", "pytest>=8.2.0", "types-requests>=2.32.0", "requests>=2.32.0", "pytest-cov>=5.0.0", "pandas-stubs>=2.1.4.231227", "types-pillow>=10.2.0.20240213", "types-pyyaml>=6.0.12.8", "types-python-jose>=3.3.4.8", "types-passlib>=1.7.7.13", "pytest-mock>=3.14.0", "pytest-xdist>=3.6.0", "types-pywin32>=306.0.0.4", "types-google-cloud-ndb>=2.2.0.0", "pytest-sugar>=1.0.0", "respx>=0.21.1", "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", "pytest-flakefinder>=1.1.0", "types-markdown>=3.7.0.20240822", "packaging>=23.2,<24.0" ] [tool.poetry.group.spelling] optional = true [tool.poetry.group.spelling.dependencies] codespell = "^2.3.0" [tool.codespell] skip = '.git,*.pdf,*.svg,*.pdf,*.yaml,*.ipynb,poetry.lock,*.min.js,*.css,package-lock.json,*.trig.,**/node_modules/**,./stuff/*,*.csv' # Ignore latin etc ignore-regex = '.*(Stati Uniti|Tense=Pres).*' [tool.pytest.ini_options] minversion = "6.0" testpaths = ["tests", "integration"] console_output_style = "progress" filterwarnings = ["ignore::DeprecationWarning", "ignore::ResourceWarning"] log_cli = true log_cli_format = "%(asctime)s [%(levelname)8s] %(message)s (%(filename)s:%(lineno)s)" log_cli_date_format = "%Y-%m-%d %H:%M:%S" markers = ["async_test", "api_key_required"] [tool.coverage.run] command_line = """ -m pytest --ignore=tests/integration --cov --cov-report=term --cov-report=html --instafail -ra -n auto -m "not api_key_required" """ source = ["src/backend/base/langflow/"] omit = ["*/alembic/*", "tests/*", "*/__init__.py"] [tool.coverage.report] sort = "Stmts" skip_empty = true show_missing = false ignore_errors = true [tool.coverage.html] directory = "coverage" [tool.ruff] exclude = ["src/backend/langflow/alembic/*"] line-length = 120 [tool.mypy] plugins = ["pydantic.mypy"] follow_imports = "skip" disable_error_code = ["type-var"] namespace_packages = true mypy_path = "langflow" ignore_missing_imports = true [build-system] requires = ["hatchling"] build-backend = "hatchling.build"