* 🔧 (pyproject.toml): add duckduckgo-search dependency to the project ✨ (DuckDuckGoSearchRun.py): introduce DuckDuckGoSearchComponent for performing web searches using DuckDuckGo search engine ✨ (DuckDuckGo.jsx): add SVG icon for DuckDuckGo ✨ (index.tsx): create DuckDuckGoIcon component for displaying DuckDuckGo icon 🔧 (styleUtils.ts): import DuckDuckGoIcon for nodeIconsLucide in styleUtils * 📝 (DuckDuckGoSearchRun.py): remove unnecessary whitespace to improve code readability and consistency * ✨ (DuckDuckGoSearchRun.py): Add retry logic to DuckDuckGo search component for rate-limited requests 📝 (DuckDuckGoSearchRun.py): Update component description to reflect the addition of retry logic 📝 (DuckDuckGoSearchRun.py): Add new inputs for max_retries and initial_delay to configure retry behavior 📝 (DuckDuckGoSearchRun.py): Update search_response method to use search_with_retry method with retry logic 📝 (DuckDuckGoSearchRun.py): Update format_results method to handle formatted results 📝 (DuckDuckGoSearchRun.py): Add search_with_retry method to handle search with retry logic 📝 (DuckDuckGoSearchRun.py): Update search_response method to use search_with_retry method 📝 (DuckDuckGoSearchRun.py): Update search_response method to set status messages 📝 (DuckDuckGoSearchRun.py): Handle exceptions and set appropriate status messages in search_response method ✨ (duckduckgo.spec.ts): Add integration test for DuckDuckGo search component in frontend * 📝 (DuckDuckGoSearchRun.py): add newline at the end of the file to follow best practices and avoid potential issues with some tools that expect it * [autofix.ci] apply automated fixes * updating duckudckgo * [autofix.ci] apply automated fixes * ✨ (DuckDuckGoSearchRun.py): Refactor DuckDuckGoSearchComponent to use pydantic BaseModel for schema definition and improve code structure for better readability and maintainability. Add support for result limiting in search functionality. * 🔧 (DuckDuckGoSearchRun.py): Remove unnecessary import and update status message for DuckDuckGo Search Tool to improve clarity * [autofix.ci] apply automated fixes * ✨ (duckduckgo.spec.ts): update test selectors for duckduckgo search component to match changes in the frontend code and improve test reliability * 🐛 (linkComponent.spec.ts): fix an issue where the key combination for selecting all text was not working correctly on Mac devices. Updated the key combination to use the correct modifier key based on the user's operating system. * 📝 (frontend): mark is-unicode-supported package as extraneous in package-lock.json * rollback lock file --------- Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
216 lines
6.1 KiB
TOML
216 lines
6.1 KiB
TOML
[tool.poetry]
|
|
name = "langflow"
|
|
version = "1.0.18"
|
|
description = "A Python package with a built-in web application"
|
|
authors = ["Langflow <contact@langflow.org>"]
|
|
maintainers = [
|
|
"Carlos Coelho <carlos@langflow.org>",
|
|
"Cristhian Zanforlin <cristhian.lousa@gmail.com>",
|
|
"Gabriel Almeida <gabriel@langflow.org>",
|
|
"Igor Carvalho <igorr.ackerman@gmail.com>",
|
|
"Lucas Eduoli <lucaseduoli@gmail.com>",
|
|
"Otávio Anovazzi <otavio2204@gmail.com>",
|
|
"Rodrigo Nader <rodrigo@langflow.org>",
|
|
"Italo dos Anjos <italojohnnydosanjos@gmail.com>",
|
|
]
|
|
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.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 = "*"
|
|
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.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 = { 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.0.10"
|
|
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.11"
|
|
|
|
|
|
[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.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 = ["poetry-core"]
|
|
build-backend = "poetry.core.masonry.api"
|