|
|
[tool.uv.sources] |
|
|
langflow-base = { workspace = true } |
|
|
langflow = { workspace = true } |
|
|
|
|
|
[tool.uv.workspace] |
|
|
members = ["src/backend/base", "."] |
|
|
|
|
|
[tool.hatch.build.targets.wheel] |
|
|
packages = ["src/backend/langflow"] |
|
|
|
|
|
[project] |
|
|
name = "langflow" |
|
|
version = "1.1.1" |
|
|
description = "A Python package with a built-in web application" |
|
|
requires-python = ">=3.10,<3.13" |
|
|
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 = "Igor Carvalho", email = "igorr.ackerman@gmail.com" }, |
|
|
{ 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 = [ |
|
|
"langflow-base==0.1.1", |
|
|
"beautifulsoup4>=4.12.2,<5.0.0", |
|
|
"google-search-results>=2.4.1,<3.0.0", |
|
|
"google-api-python-client>=2.130.0,<3.0.0", |
|
|
"huggingface-hub[inference]>=0.23.2,<1.0.0", |
|
|
"networkx>=3.1,<4.0.0", |
|
|
"fake-useragent>=1.5.0,<2.0.0", |
|
|
"pyarrow>=14.0.0,<18.0.0", |
|
|
"wikipedia>=1.4.0,<2.0.0", |
|
|
"qdrant-client~=1.9.2", |
|
|
"weaviate-client>=4.8,<5.0.0", |
|
|
"cohere>=5.5.3,<6.0.0", |
|
|
"faiss-cpu>=1.8.0,<2.0.0", |
|
|
"types-cachetools>=5.3.0.5,<6.0.0", |
|
|
"pymongo>=4.6.0,<5.0.0", |
|
|
"supabase~=2.6.0", |
|
|
"certifi>=2023.11.17,<2025.0.0", |
|
|
"fastavro>=1.8.0,<2.0.0", |
|
|
"redis>=5.0.1,<6.0.0", |
|
|
"metaphor-python>=0.1.11,<1.0.0", |
|
|
'pywin32>=306,<307; sys_platform == "win32"', |
|
|
"langfuse~=2.53.1", |
|
|
"metal-sdk>=2.5.0,<3.0.0", |
|
|
"markupsafe>=2.1.3,<4.0.0", |
|
|
"boto3~=1.34.162", |
|
|
"numexpr>=2.8.6,<3.0.0", |
|
|
"qianfan==0.3.5", |
|
|
"pgvector>=0.2.3,<1.0.0", |
|
|
"pyautogen>=0.2.0,<1.0.0", |
|
|
"langchain~=0.3.3", |
|
|
"elasticsearch>=8.12.0,<9.0.0", |
|
|
"pytube>=15.0.0,<16.0.0", |
|
|
"dspy-ai>=2.4.0,<3.0.0", |
|
|
"assemblyai>=0.33.0,<1.0.0", |
|
|
"litellm>=1.44.0,<2.0.0", |
|
|
"chromadb>=0.4,<1.0.0", |
|
|
"zep-python>=2.0.0,<3.0.0", |
|
|
"langchain-groq>=0.1.9,<1.0.0", |
|
|
"langchain-pinecone>=0.1.3,<1.0.0", |
|
|
"youtube-transcript-api>=0.6.2,<1.0.0", |
|
|
"markdown>=3.7,<4.0.0", |
|
|
"upstash-vector>=0.5.0,<1.0.0", |
|
|
"gitpython>=3.1.43,<4.0.0", |
|
|
"kubernetes>=30.1.0,<32.0.0", |
|
|
"json-repair>=0.25.2,<1.0.0", |
|
|
"langchain-google-calendar-tools>=0.0.1,<1.0.0", |
|
|
"langchain-milvus>=0.1.1,<1.0.0", |
|
|
"langwatch==0.1.16", |
|
|
"langsmith~=0.1.137", |
|
|
"yfinance>=0.2.40,<1.0.0", |
|
|
"wolframalpha>=5.1.3,<6.0.0", |
|
|
"astra-assistants[tools]~=2.2.6", |
|
|
"composio-langchain==0.5.42", |
|
|
"spider-client>=0.0.27,<1.0.0", |
|
|
"nltk>=3.9.1,<4.0.0", |
|
|
"lark>=1.2.2,<2.0.0", |
|
|
"jq>=1.8.0,<2.0.0", |
|
|
"pydantic-settings==2.4.0", |
|
|
"ragstack-ai-knowledge-store>=0.2.1,<1.0.0", |
|
|
"duckduckgo-search>=6.3.4,<7.0.0", |
|
|
"opensearch-py>=2.7.1,<3.0.0", |
|
|
"langchain-google-genai>=2.0.1,<3.0.0", |
|
|
"langchain-cohere>=0.1.5,<1.0.0", |
|
|
"langchain-anthropic>=0.1.23,<1.0.0", |
|
|
"langchain-astradb~=0.5.2", |
|
|
"langchain-openai~=0.2.2", |
|
|
"langchain-google-vertexai~=2.0.5", |
|
|
"langchain-groq>=0.1.9,<1.0.0", |
|
|
"langchain-pinecone~=0.2.0", |
|
|
"langchain-mistralai~=0.2.0", |
|
|
"langchain-chroma>=0.1.1,<1.0.0", |
|
|
"langchain-aws>=0.1.16,<1.0.0", |
|
|
"langchain-unstructured~=0.1.5", |
|
|
"langchain-mongodb>=0.1.6,<1.0.0", |
|
|
"langchain-nvidia-ai-endpoints~=0.3.0", |
|
|
"langchain-google-community~=2.0.1", |
|
|
"langchain-elasticsearch>=0.2.0,<1.0.0", |
|
|
"langchain-ollama>=0.2.0,<1.0.0", |
|
|
"sqlalchemy[aiosqlite,postgresql_psycopg2binary,postgresql_psycopgbinary]>=2.0.36,<3.0.0", |
|
|
"atlassian-python-api>=3.41.16,<4.0.0", |
|
|
"mem0ai>=0.1.26,<1.0.0", |
|
|
"aiofile>=3.9.0,<4.0.0", |
|
|
"sseclient-py==1.8.0", |
|
|
"arize-phoenix-otel>=0.6.1", |
|
|
"openinference-instrumentation-langchain>=0.1.29", |
|
|
] |
|
|
|
|
|
[project.urls] |
|
|
Repository = "https://github.com/langflow-ai/langflow" |
|
|
Documentation = "https://docs.langflow.org" |
|
|
|
|
|
[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==0.7.19" |
|
|
] |
|
|
|
|
|
[project.scripts] |
|
|
langflow = "langflow.__main__:main" |
|
|
|
|
|
[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.8.2,<0.9.0", |
|
|
"httpx>=0.27.0", |
|
|
"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>=24.1,<25.0", |
|
|
"asgi-lifespan>=2.1.0", |
|
|
"pytest-github-actions-annotate-failures>=0.2.0", |
|
|
"pytest-codspeed>=3.0.0", |
|
|
"blockbuster>=1.3.2,<1.4", |
|
|
"types-aiofiles>=24.1.0.20240626", |
|
|
] |
|
|
|
|
|
|
|
|
[tool.codespell] |
|
|
skip = '.git,*.pdf,*.svg,*.pdf,*.yaml,*.ipynb,poetry.lock,*.min.js,*.css,package-lock.json,*.trig.,**/node_modules/**,./stuff/*,*.csv' |
|
|
|
|
|
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"] |
|
|
asyncio_mode = "auto" |
|
|
asyncio_default_fixture_loop_scope = "function" |
|
|
|
|
|
[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/base/langflow/alembic/*"] |
|
|
line-length = 120 |
|
|
|
|
|
[tool.ruff.lint] |
|
|
pydocstyle.convention = "google" |
|
|
select = ["ALL"] |
|
|
ignore = [ |
|
|
"C90", |
|
|
"CPY", |
|
|
"COM812", |
|
|
"ERA", |
|
|
"FIX002", |
|
|
"ISC001", |
|
|
"PERF203", |
|
|
"PLR09", |
|
|
"RUF012", |
|
|
"TD002", |
|
|
"TD003", |
|
|
"TRY301", |
|
|
|
|
|
|
|
|
"ANN", |
|
|
] |
|
|
|
|
|
|
|
|
external = ["RUF027"] |
|
|
|
|
|
[tool.ruff.lint.per-file-ignores] |
|
|
"scripts/*" = [ |
|
|
"D1", |
|
|
"INP", |
|
|
"T201", |
|
|
] |
|
|
"src/backend/tests/*" = [ |
|
|
"D1", |
|
|
"PLR2004", |
|
|
"S101", |
|
|
"SLF001", |
|
|
] |
|
|
|
|
|
[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" |
|
|
|