* chore: Update dependencies and improve platform markers in configuration files - Added 'hypothesis' version 6.123.17 to dev-dependencies in pyproject.toml. - Updated platform markers from 'sys_platform' to 'platform_system' for better compatibility in uv.lock, affecting multiple packages including 'jinxed', 'colorama', and 'appnope'. - Ensured consistency in platform checks across various dependencies to enhance cross-platform support. This update improves the project's dependency management and ensures better compatibility across different operating systems. * feat: Enhance ResultDataResponse serialization with truncation support - Introduced a new method `_serialize_and_truncate` to handle serialization and truncation of various data types, including strings, bytes, datetime, Decimal, UUID, and BaseModel instances. - Updated the `serialize_results` method to utilize the new truncation logic for both individual results and dictionary outputs. - Enhanced the `serialize_model` method to ensure all relevant fields are serialized and truncated according to the defined maximum text length. This update improves the handling of large data outputs, ensuring that responses remain concise and manageable. * fix: Reduce MAX_TEXT_LENGTH in constants.py from 99999 to 20000 This change lowers the maximum text length limit to improve data handling and ensure more manageable output sizes across the application. * test: Add comprehensive unit tests for ResultDataResponse and VertexBuildResponse - Introduced a new test suite in `test_api_schemas.py` to validate the serialization and truncation behavior of `ResultDataResponse` and `VertexBuildResponse`. - Implemented tests for handling long strings, special data types, nested structures, and combined fields, ensuring proper serialization and truncation. - Enhanced coverage for logging and output handling, verifying that all fields are correctly processed and truncated as per the defined maximum text length. - Utilized Hypothesis for property-based testing to ensure robustness and reliability of the serialization logic. This update significantly improves the test coverage for the API response schemas, ensuring better data handling and output management.
283 lines
7.6 KiB
TOML
283 lines
7.6 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.6.13",
|
|
"composio-core==0.6.13",
|
|
"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",
|
|
"mcp>=0.9.1",
|
|
"uv>=0.5.7",
|
|
"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.9.1,<0.10",
|
|
"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.5.8,<1.6",
|
|
"types-aiofiles>=24.1.0.20240626",
|
|
"codeflash>=0.8.4",
|
|
"hypothesis>=6.123.17",
|
|
]
|
|
|
|
|
|
[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"
|