/
githubmirror
/
langroid
Обзор
Документация
Войти
/
githubmirror
/
langroid
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
pyproject.toml
435 строк
11 KB
Prasad Chalasani
bump: version 0.65.15 → 0.65.16
29 июл 2026, 15:59
29 июл 2026, 15:59
786c4fe
Код
Авторство
О чём код?
[project] name = "langroid" version = "0.65.16" authors = [ {name = "Prasad Chalasani", email = "pchalasani@gmail.com"}, ] description = "Harness LLMs with Multi-Agent Programming" readme = "README.md" license = {text = "MIT"} requires-python = "<3.14,>=3.10" dependencies = [ "adb-cloud-connector<2.0.0,>=1.0.2", "aiohttp<4.0.0,>=3.9.1", "async-generator<2.0,>=1.10", "bs4<1.0.0,>=0.0.1", "cerebras-cloud-sdk<2.0.0,>=1.1.0", "colorlog<7.0.0,>=6.7.0", "docstring-parser<1.0,>=0.16", "duckduckgo-search<7.0.0,>=6.0.0", "exa-py>=1.8.7", "faker<19.0.0,>=18.9.0", "fakeredis<3.0.0,>=2.12.1", "fastmcp>=2.2.5", "fire<1.0.0,>=0.5.0", "gitpython<4.0.0,>=3.1.43", "google-api-python-client<3.0.0,>=2.95.0", "google-genai>=1.0.0", "groq<1.0.0,>=0.13.0", "grpcio<2.0.0,>=1.62.1", "halo<1.0.0,>=0.0.31", "jinja2<4.0.0,>=3.1.2", # Capped below 0.61.3: that release changed how unquoted values are # repaired, and an unquoted value followed by another key and a nested # object silently swallows the next key/value pair, e.g. # {request: foo, args: bar baz, opts: {"a": b}} # yields {'request': 'foo,\n args: bar baz', 'opts': {...}} -- the `args` # field is LOST. langroid parses exactly this shape out of sloppy LLM tool # calls, so the field loss is silent and material. 0.61.0-0.61.2 are fine; # see tests/main/test_json.py::test_repair_keeps_unquoted_value_fields. "json-repair>=0.29.9,<0.61.3", "lxml<7.0.0,>=6.1.0", "markdownify>=0.13.1", "nest-asyncio<2.0.0,>=1.6.0", "nltk<4.0.0,>=3.8.2", "onnxruntime<2.0.0,>=1.16.1", "openai>=1.106.0,<3.0.0", "pandas<3.0.0,>=2.0.3", "prettytable<4.0.0,>=3.8.0", "pydantic<3.0.0,>=2.0.0", "pydantic-settings<3.0.0,>=2.0.0", "pygithub<2.0.0,>=1.58.1", "pygments<3.0.0,>=2.15.1", "pyparsing<4.0.0,>=3.0.9", "pypdfium2<5.0.0,>=4.30.0", "pytest-rerunfailures<16.0,>=15.0", "python-dotenv>=1.0.0,<2.0.0", "python-magic<1.0.0,>=0.4.27", "pyyaml<7.0.0,>=6.0.1", "qdrant-client<2.0.0,>=1.8.0", "rank-bm25<1.0.0,>=0.2.2", "redis<6.0.0,>=5.0.1", "requests<3.0.0,>=2.31.0", "requests-oauthlib<2.0.0,>=1.3.1", "rich<14.0.0,>=13.3.4", "thefuzz<1.0.0,>=0.20.0", "tiktoken<1.0.0,>=0.7.0", "trafilatura>=2.0.0,<3.0.0", "typer<1.0.0,>=0.9.0", "wget<4.0,>=3.2", ] [project.optional-dependencies] doc-chat = [ "docling<3.0.0,>=2.20.0", "pdf2image<2.0.0,>=1.17.0", "pymupdf4llm<0.1.0,>=0.0.17", "pymupdf<2.0.0,>=1.23.3", "pypdf>=5.1.0", "pytesseract<0.4.0,>=0.3.10", "python-docx<2.0.0,>=1.1.0", "unstructured[docx,pdf,pptx]<1.0.0,>=0.16.15", "marker-pdf" ] hf-transformers = [ "sentence-transformers<3.0.0,>=2.2.2", "torch<3.0.0,>=2.0.0", "transformers<5.0.0,>=4.40.1", "huggingface-hub<1.0.0,>=0.21.2", ] vecdbs = [ "lancedb>=0.9.0", "tantivy<0.22.0,>=0.21.0", "pyarrow>=15.0.0", "chromadb<=0.4.23,>=0.4.21", "weaviate-client>=4.9.6", "pinecone-client>=5.0.1", ] db = [ "sqlalchemy<3.0.0,>=2.0.19", "psycopg2<3.0.0,>=2.9.7", "psycopg2-binary>=2.9.10", "pymysql<2.0.0,>=1.1.0", "sqlglot>=23.0.0", ] all = [ "pdf2image<2.0.0,>=1.17.0", "pymupdf<2.0.0,>=1.23.3", "pymupdf4llm<0.1.0,>=0.0.17", "docling<3.0.0,>=2.16.0", "pypdf>=5.1.0", "pytesseract<0.4.0,>=0.3.10", "python-docx<2.0.0,>=1.1.0", "unstructured[docx,pdf,pptx]<1.0.0,>=0.16.15", "sqlalchemy<3.0.0,>=2.0.19", "psycopg2<3.0.0,>=2.9.7", "pymysql<2.0.0,>=1.1.0", "sqlglot>=23.0.0", "sentence-transformers<3.0.0,>=2.2.2", "torch<3.0.0,>=2.0.0", "transformers<5.0.0,>=4.40.1", "huggingface-hub<1.0.0,>=0.21.2", "chromadb<=0.4.23,>=0.4.21", "weaviate-client>=4.9.6", "metaphor-python<0.2.0,>=0.1.23", "neo4j<6.0.0,>=5.14.1", "python-arango<9.0.0,>=8.1.2", "arango-datasets<2.0.0,>=1.2.2", "litellm<2.0.0,>=1.30.1", "chainlit<3.0.0,>=2.0.1", "python-socketio<6.0.0,>=5.11.0", "fastembed<0.4.0,>=0.3.1", "pgvector>=0.3.6", "psycopg2-binary>=2.9.10", "marker-pdf", "seltz>=0.2.0", ] # More granular groupings lancedb = [ "lancedb>=0.9.0", "tantivy<0.22.0,>=0.21.0", "pyarrow>=15.0.0", ] docling = [ "docling<3.0.0,>=2.16.0", ] pymupdf4llm = [ "pymupdf4llm<0.1.0,>=0.0.17", ] pypdfium2 = [ "pypdfium2<5.0.0,>=4.30.0", ] pdf-parsers = [ "docling<3.0.0,>=2.16.0", "pypdf>=5.1.0", "pymupdf<2.0.0,>=1.23.3", "pymupdf4llm<0.1.0,>=0.0.17", "pdf2image<2.0.0,>=1.17.0", "pytesseract<0.4.0,>=0.3.10", "markitdown[docx,xlsx,pptx]>=0.0.1a3", "marker-pdf", ] docx = [ "python-docx<2.0.0,>=1.1.0", ] markitdown = [ "markitdown[docx,xlsx,pptx]>=0.0.1a3", ] marker-pdf = [ "marker-pdf[full]>=1.6.0; sys_platform != 'darwin' or platform_machine != 'x86_64'", "opencv-python>=4.11.0.86", ] scrapy = [ "scrapy<3.0.0,>=2.11.0", ] hf-embeddings = [ "sentence-transformers<3.0.0,>=2.2.2", "torch<3.0.0,>=2.0.0", ] transformers = [ "transformers<5.0.0,>=4.40.1", "huggingface-hub<1.0.0,>=0.21.2", "torch<3.0.0,>=2.0.0", ] unstructured = [ "unstructured[docx,pdf,pptx]<1.0.0,>=0.16.15", ] postgres = [ "pgvector>=0.3.6", "psycopg2<3.0.0,>=2.9.7", "psycopg2-binary>=2.9.10", "sqlalchemy<3.0.0,>=2.0.19", "sqlglot>=23.0.0", ] mysql = [ "pymysql<2.0.0,>=1.1.0", "sqlglot>=23.0.0", ] sql = [ "sqlalchemy<3.0.0,>=2.0.19", "pymysql<2.0.0,>=1.1.0", "psycopg2<3.0.0,>=2.9.7", "sqlglot>=23.0.0", ] litellm = [ "litellm<2.0.0,>=1.30.1", ] neo4j = [ "neo4j<6.0.0,>=5.14.1", ] arango = [ "python-arango<9.0.0,>=8.1.2", "arango-datasets<2.0.0,>=1.2.2", ] metaphor = [ "metaphor-python<0.2.0,>=0.1.23", ] exa = [ "exa-py>=1.8.7", ] tavily = [ "tavily-python>=0.5.0", ] seltz = [ "seltz>=0.2.0", ] chainlit = [ "chainlit<3.0.0,>=2.0.1", "python-socketio<6.0.0,>=5.11.0", ] chromadb = [ "chromadb<=0.4.23,>=0.4.21", ] weaviate = [ "weaviate-client>=4.9.6", ] meilisearch = [ "meilisearch-python-sdk<3.0.0,>=2.2.3", ] fastembed = [ "fastembed<0.4.0,>=0.3.1", ] google-genai = [ "google-genai>=1.0.0", ] google-generativeai = [ "google-genai>=1.0.0", ] doc-parsers = [ "markitdown[docx,xlsx,pptx]>=0.0.1a3", "openpyxl>=3.1.5", "python-docx>=1.1.2", "python-pptx>=1.0.2", "xlrd>=2.0.1", ] pinecone = [ "pinecone-client>=5.0.1" ] asyncio = [ "asyncio>=3.4.3", ] firecrawl = [ "firecrawl-py>=1.13.5", ] crawl4ai = [ "crawl4ai>=0.6.3", ] [dependency-groups] dev = [ "black[jupyter]>=24.3.0,<25.0.0", "flake8<7.0.0,>=6.0.0", "mypy<2.0.0,>=1.11.2", "ruff<1.0.0,>=0.8.4", "pre-commit<4.0.0,>=3.3.2", "autopep8<3.0.0,>=2.0.2", "types-python-dateutil>=2.8.0", "types-redis<5.0.0.0,>=4.5.5.2", "types-requests<3.0.0.0,>=2.31.0.1", "types-pyyaml<7.0.0.0,>=6.0.12.20240311", "types-pillow<11.0.0.0,>=10.2.0.20240406", "pytest<8.0.0,>=7.3.1", "pytest-redis<4.0.0,>=3.0.2", "pytest-asyncio<1.0.0,>=0.21.1", "pytest-postgresql<6.0.0,>=5.0.0", "coverage<8.0.0,>=7.2.5", "pytest-xdist<4.0.0,>=3.6.1", "pytest-timeout<3.0.0,>=2.3.1", "pytest-cov<6.0.0,>=5.0.0", "docker<8.0.0,>=7.1.0", "commitizen>=4.1.0", "pytest-mysql>=3.1.0", ] docs = [ "mkdocs<2.0.0,>=1.4.2", "mkdocs-material<10.0.0,>=9.1.5", "mkdocstrings[python]<1.0.0,>=0.25.2", "mkdocs-awesome-pages-plugin<3.0.0,>=2.8.0", "mkdocs-rss-plugin<2.0.0,>=1.8.0", "mkdocs-gen-files<1.0.0,>=0.4.0", "mkdocs-literate-nav<1.0.0,>=0.6.0", "mkdocs-section-index<1.0.0,>=0.3.5", "mkdocs-jupyter<1.0.0,>=0.24.1", "nbconvert>=7.17.0", "griffe<1.0.0", ] # Lock-only constraints (NOT part of published metadata / downstream installs). # The bulk `uv lock --upgrade` (to drain Dependabot alerts) moved these deps # -- none of which has a security alert -- to versions that break us: # - qdrant-client>=1.16 removes Client.search_batch + CollectionInfo.vectors_count # used by QdrantDB (runtime break). Public range stays broad pending a code migration. # - onnxruntime>=1.24 ships no cp310 wheels/sdist, breaking `uv sync` on Python 3.10 # (we advertise >=3.10). pip installs are unaffected (they pick the newest cp310 wheel). # - mypy>=1.16 (dev-only) adds stricter checks that flag safe Responder-union access. # - pinecone-client>=6 is an import-time stub that raises ("renamed to `pinecone`"), # breaking VectorStore.create() for every backend. Hold at the working 5.x line. # Pinning here (not in [project]/[dependency-groups]) keeps public ranges untouched. [tool.uv] constraint-dependencies = [ "qdrant-client<1.16", "onnxruntime<1.24", "mypy<1.16", "pinecone-client<6", ] [build-system] requires = ["hatchling"] build-backend = "hatchling.build" [tool.hatch.build] only-packages = true include = ["langroid/py.typed", "langroid/"] exclude = [ "tests/", "examples/", "**/__pycache__", "**/*.pyc", "**/node_modules/**", ] [tool.black] line-length = 88 include = '\.pyi?$' # extend-exclude = '.*pyi$' # exclude = '^stubs/' [tool.pytype] inputs = ["langroid"] [tool.mypy] python_version = "3.11" #mypy_path = ["stubs"] #follow_imports = "skip" #check_untyped_defs = true disallow_untyped_defs = true ignore_missing_imports = true warn_unused_ignores = false strict = true exclude = [ "docs", ".venv", "venv", "examples", "examples_dev", "langroid/utils/web", "notebooks", "langroid/parsing/repo_loader.py", "langroid/embedding_models/clustering.py", "langroid/agent/callbacks/chainlit.py", "langroid/vector_store/chromadb.py", "langroid/embedding_models/protoc" # ignore generated files ] files=["langroid/*"] plugins = [ "pydantic.mypy" ] [tool.ruff] line-length = 88 # Allow unused variables when underscore-prefixed. lint.dummy-variable-rgx = "^(_+|(_+[a-zA-Z0-9_]*[a-zA-Z0-9]+?))$" lint.select = [ "E", # pycodestyle "F", # pyflakes "I", # isort ] lint.exclude = ["docs/**", ".venv", "venv", "examples/**", "examples_dev", "langroid/utils/web", "notebooks", "__init__.py", "langroid/embedding_models/protoc/*"] lint.fixable = ["A", "B", "C", "D", "E", "F", "G", "I", "N", "Q", "S", "T", "W", "ANN", "ARG", "BLE", "COM", "DJ", "DTZ", "EM", "ERA", "EXE", "FBT", "ICN", "INP", "ISC", "NPY", "PD", "PGH", "PIE", "PL", "PT", "PTH", "PYI", "RET", "RSE", "RUF", "SIM", "SLF", "TCH", "TID", "TRY", "UP", "YTT"] lint.unfixable = [] lint.extend-ignore = ["F821"] # Assume Python 3.11. target-version = "py311" [tool.pytest.ini_options] filterwarnings = ["ignore::DeprecationWarning"] [tool.commitizen] name = "cz_conventional_commits" tag_format = "$version" version_scheme = "semver" version_provider = "pep621" major_version_zero = true