* chore: update weaviate-client version and add pydantic-ai dependency in pyproject.toml - Updated weaviate-client from version 4.9.6 to 4.10.2. - Added pydantic-ai dependency with a minimum version of 0.0.12. * chore: update pydantic version in pyproject.toml from 2.7.0 to 2.10.0 * chore: update package versions and add new dependencies - Added eval-type-backport version 0.2.0. - Added griffe version 1.5.1 with colorama as a dependency. - Updated grpcio-health-checking and grpcio-tools from version 1.62.3 to 1.68.1. - Updated pydantic_core from version 2.18.4 to 2.27.1. - Updated weaviate-client from version 4.9.6 to 4.10.2. * chore: update pydantic version in dependency files - Updated pydantic version from 2.10.0 to 2.10.1 in both uv.lock and pyproject.toml to ensure compatibility with the latest features and fixes.
278 lines
7.5 KiB
TOML
278 lines
7.5 KiB
TOML
[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.14"
|
|
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" },
|
|
]
|
|
|
|
# Define your main dependencies here
|
|
dependencies = [
|
|
"langflow-base==0.1.1",
|
|
"beautifulsoup4==4.12.3",
|
|
"google-search-results>=2.4.1,<3.0.0",
|
|
"google-api-python-client==2.154.0",
|
|
"huggingface-hub[inference]>=0.23.2,<1.0.0",
|
|
"networkx==3.4.2",
|
|
"fake-useragent==1.5.1",
|
|
"pyarrow==17.0.0",
|
|
"wikipedia==1.4.0",
|
|
"qdrant-client==1.9.2",
|
|
"weaviate-client==4.10.2",
|
|
"faiss-cpu==1.9.0.post1",
|
|
"types-cachetools==5.5.0.20240820",
|
|
"pymongo==4.10.1",
|
|
"supabase==2.6.0",
|
|
"certifi>=2023.11.17,<2025.0.0",
|
|
"certifi==2024.8.30",
|
|
"fastavro==1.9.7",
|
|
"redis==5.2.1",
|
|
"metaphor-python==0.1.23",
|
|
'pywin32>=306,<307; sys_platform == "win32"',
|
|
"langfuse==2.53.9",
|
|
"metal_sdk==2.5.1",
|
|
"MarkupSafe==3.0.2",
|
|
"boto3==1.34.162",
|
|
"numexpr==2.10.2",
|
|
"qianfan==0.3.5",
|
|
"pgvector==0.3.6",
|
|
"langchain==0.3.10",
|
|
"elasticsearch==8.16.0",
|
|
"pytube==15.0.0",
|
|
"dspy-ai==2.5.41",
|
|
"assemblyai==0.35.1",
|
|
"litellm==1.54.1",
|
|
"chromadb==0.5.23",
|
|
"zep-python==2.0.2",
|
|
"youtube-transcript-api==0.6.3",
|
|
"Markdown==3.7",
|
|
"upstash-vector==0.6.0",
|
|
"GitPython==3.1.43",
|
|
"kubernetes==31.0.0",
|
|
"json_repair==0.30.3",
|
|
"langwatch==0.1.16",
|
|
"langsmith==0.1.147",
|
|
"yfinance==0.2.50",
|
|
"wolframalpha==5.1.3",
|
|
"astra-assistants[tools]~=2.2.6",
|
|
"composio-langchain==0.5.42",
|
|
"spider-client==0.1.24",
|
|
"nltk==3.9.1",
|
|
"lark==1.2.2",
|
|
"jq==1.8.0",
|
|
"pydantic-settings==2.4.0",
|
|
"ragstack-ai-knowledge-store==0.2.1",
|
|
"duckduckgo_search==6.3.7",
|
|
"opensearch-py==2.8.0",
|
|
"langchain-google-genai==2.0.6",
|
|
"langchain-cohere==0.3.3",
|
|
"langchain-anthropic==0.3.0",
|
|
"langchain-astradb==0.5.2",
|
|
"langchain-openai==0.2.12",
|
|
"langchain-google-vertexai==2.0.7",
|
|
"langchain-groq==0.2.1",
|
|
"langchain-pinecone==0.2.0",
|
|
"langchain-mistralai==0.2.3",
|
|
"langchain-chroma==0.1.4",
|
|
"langchain-aws==0.2.7",
|
|
"langchain-unstructured==0.1.5",
|
|
"langchain-milvus==0.1.7",
|
|
"langchain-mongodb==0.2.0",
|
|
"langchain-nvidia-ai-endpoints==0.3.5",
|
|
"langchain-google-calendar-tools==0.0.1",
|
|
"langchain-google-community==2.0.3",
|
|
"langchain-elasticsearch==0.3.0",
|
|
"langchain-ollama==0.2.1",
|
|
"langchain-community~=0.3.10",
|
|
"sqlalchemy[aiosqlite,postgresql_psycopg2binary,postgresql_psycopgbinary]>=2.0.36,<3.0.0",
|
|
"atlassian-python-api==3.41.16",
|
|
"mem0ai==0.1.34",
|
|
"needle-python>=0.4.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",
|
|
"crewai~=0.86.0",
|
|
"ag2",
|
|
"pydantic-ai>=0.0.12",
|
|
]
|
|
|
|
[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 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"]
|
|
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", # McCabe complexity
|
|
"CPY", # Missing copyright
|
|
"COM812", # Messes with the formatter
|
|
"ERA", # Eradicate commented-out code
|
|
"FIX002", # Line contains TODO
|
|
"ISC001", # Messes with the formatter
|
|
"PERF203", # Rarely useful
|
|
"PLR09", # Too many something (arg, statements, etc)
|
|
"RUF012", # Pydantic models are currently not well detected. See https://github.com/astral-sh/ruff/issues/13630
|
|
"TD002", # Missing author in TODO
|
|
"TD003", # Missing issue link in TODO
|
|
"TRY301", # A bit too harsh (Abstract `raise` to an inner function)
|
|
|
|
# Rules that are TODOs
|
|
"ANN",
|
|
]
|
|
|
|
# Preview rules that are not yet activated
|
|
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"
|