[tool.poetry] name = "langflow" version = "0.6.12" description = "A Python package with a built-in web application" authors = ["Logspace "] maintainers = [ "Carlos Coelho ", "Cristhian Zanforlin ", "Gabriel Almeida ", "Igor Carvalho ", "Lucas Eduoli ", "Otávio Anovazzi ", "Rodrigo Nader ", ] repository = "https://github.com/logspace-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.poetry.scripts] langflow = "langflow.__main__:main" [tool.poetry.dependencies] python = ">=3.9,<3.12" fastapi = "^0.109.0" uvicorn = "^0.27.0" beautifulsoup4 = "^4.12.2" google-search-results = "^2.4.1" google-api-python-client = "^2.118.0" typer = "^0.9.0" gunicorn = "^21.2.0" langchain = "~0.1.0" openai = "^1.12.0" pandas = "2.2.0" chromadb = "^0.4.0" huggingface-hub = { version = "^0.20.0", extras = ["inference"] } rich = "^13.7.0" llama-cpp-python = { version = "~0.2.0", optional = true } networkx = "^3.1" unstructured = "^0.12.0" pypdf = "^4.0.0" lxml = "^4.9.2" pysrt = "^1.1.2" fake-useragent = "^1.4.0" docstring-parser = "^0.15" psycopg2-binary = "^2.9.6" pyarrow = "^14.0.0" tiktoken = "~0.6.0" wikipedia = "^1.4.0" qdrant-client = "^1.7.0" websockets = "^10.3" weaviate-client = "*" sentence-transformers = { version = "^2.3.1", optional = true } ctransformers = { version = "^0.2.10", optional = true } cohere = "^4.47.0" python-multipart = "^0.0.7" sqlmodel = "^0.0.14" faiss-cpu = "^1.7.4" orjson = "3.9.15" multiprocess = "^0.70.14" cachetools = "^5.3.1" types-cachetools = "^5.3.0.5" platformdirs = "^4.2.0" pinecone-client = "^3.0.3" pymongo = "^4.6.0" supabase = "^2.3.0" certifi = "^2023.11.17" google-cloud-aiplatform = "^1.42.0" psycopg = "^3.1.9" psycopg-binary = "^3.1.9" fastavro = "^1.8.0" langchain-experimental = "*" celery = { extras = ["redis"], version = "^5.3.6", optional = true } redis = { version = "^5.0.1", optional = true } flower = { version = "^2.0.0", optional = true } alembic = "^1.13.0" passlib = "^1.7.4" bcrypt = "4.0.1" python-jose = "^3.3.0" metaphor-python = "^0.1.11" pydantic = "^2.6.0" pydantic-settings = "^2.1.0" zep-python = "*" pywin32 = { version = "^306", markers = "sys_platform == 'win32'" } loguru = "^0.7.1" langfuse = "^2.9.0" pillow = "^10.2.0" metal-sdk = "^2.5.0" markupsafe = "^2.1.3" extract-msg = "^0.47.0" # jq is not available for windows jq = { version = "^1.6.0", markers = "sys_platform != 'win32'" } boto3 = "^1.34.0" numexpr = "^2.8.6" qianfan = "0.3.0" pgvector = "^0.2.3" pyautogen = "^0.2.0" langchain-google-genai = "^0.0.6" elasticsearch = "^8.12.0" pytube = "^15.0.0" llama-index = "0.9.48" langchain-openai = "^0.0.6" urllib3 = "<2" langchain-anthropic = "^0.1.4" [tool.poetry.group.dev.dependencies] pytest-asyncio = "^0.23.1" types-redis = "^4.6.0.5" ipykernel = "^6.29.0" mypy = "^1.8.0" ruff = "^0.2.1" httpx = "*" pytest = "^8.0.0" types-requests = "^2.31.0" requests = "^2.31.0" pytest-cov = "^4.1.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" locust = "^2.23.1" pytest-mock = "^3.12.0" pytest-xdist = "^3.5.0" types-pywin32 = "^306.0.0.4" types-google-cloud-ndb = "^2.2.0.0" pytest-sugar = "^1.0.0" pytest-instafail = "^0.5.0" [tool.poetry.extras] deploy = ["langchain-serve", "celery", "redis", "flower"] local = ["llama-cpp-python", "sentence-transformers", "ctransformers"] all = ["deploy", "local"] [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"] [tool.ruff] exclude = ["src/backend/langflow/alembic/*"] line-length = 120 [tool.mypy] plugins = ["pydantic.mypy"] follow_imports = "silent" [build-system] requires = ["poetry-core"] build-backend = "poetry.core.masonry.api"