langflow/pyproject.toml
Sebastián Estévez fbb097dc4c
chore: uv to replace poetry (#3900)
* uv sync works

* fist stab at Makefile

* uv treatment for langflow-base

* sqlmodel to 0.0.18

* add reinstall_backend to Makefile

* makefile - reinstall_backend fix and unit_test dependency

* fix dev dependencies

* fix dev dependencies

* fix dev dependencies

* lock

* Makefile

* [autofix.ci] apply automated fixes

* Update Makefile

Co-authored-by: Gabriel Luiz Freitas Almeida <gabriel@langflow.org>

* delete update_dependencies

* fix lint

* Remove Poetry lock check from GitHub Actions workflow

* Switch to 'uv' for dependency management and caching in style-check workflow

* Update style-check workflow to use '--only-dev' flag for Ruff check

* Integrate 'uv' package setup and caching in GitHub Actions workflows

* Update version check in GitHub Actions to use 'uv tree' for langflow-base

* Remove redundant poetry environment setup in GitHub Actions workflow

* Add step to minimize uv cache in GitHub Actions workflow

* Update GitHub Actions workflow to use 'uv' for dependency management and caching

* Remove redundant script execution from build_langflow target in Makefile

* [autofix.ci] apply automated fixes

* Switch build system from Poetry to Hatchling and update dependencies

- Replace `poetry-core` with `hatchling` in build-system requirements
- Update `langflow-base` dependency to version `0.0.96`
- Add `tool.hatch.build.targets.wheel` configuration
- Adjust `tool.uv.sources` paths for `langflow-frontend` and `langflow-base`

* update lock

* Switch build system from Poetry to Hatchling in pyproject.toml

* Add langchain-unstructured dependency to pyproject.toml

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Gabriel Luiz Freitas Almeida <gabriel@langflow.org>
2024-09-25 13:40:30 -07:00

365 lines
No EOL
9.8 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.uv.sources]
langflow-base = {path = "src/backend/base"}
[tool.hatch.build.targets.wheel]
packages = ["src/backend/langflow"]
[project]
name = "langflow"
version = "1.0.18"
description = "A Python package with a built-in web application"
requires-python = ">=3.10,<3.13"
# Define your main dependencies here
dependencies = [
"langflow-base==0.0.96", # Local editable package
"beautifulsoup4>=4.12.2",
"google-search-results>=2.4.1",
"google-api-python-client>=2.130.0",
"huggingface-hub[inference]>=0.23.2",
"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",
"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",
"fastavro>=1.8.0",
"redis>=5.0.1",
"metaphor-python>=0.1.11",
'pywin32>=306; 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>=2.0.0rc5",
"langchain-google-vertexai>=1.0.10",
"langchain-groq>=0.1.9",
"langchain-pinecone>=0.1.3",
"langchain-mistralai==0.1.12",
"youtube-transcript-api>=0.6.2",
"markdown>=3.7",
"langchain-chroma>=0.1.1",
"upstash-vector>=0.5.0",
"gitpython>=3.1.43",
"langchain-aws>=0.1.16",
"langchain-unstructured>=0.1.2",
"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",
"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.2",
"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",
"pydantic-settings==2.4.0",
"ragstack-ai-knowledge-store>=0.2.1",
"duckduckgo-search>=6.2.11",
]
[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[clickhouse-connect]==0.7.19"
]
[project.scripts]
langflow = "langflow.__main__:main"
[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 = "^4.6.5"
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.33.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.2"
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.12"
[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.uv]
dev-dependencies = [
"pytest-instafail>=0.5.0",
"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-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.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 = ["hatchling"]
build-backend = "hatchling.build"