diff --git a/pyproject.toml b/pyproject.toml index 7fd4228..e1c2965 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -8,14 +8,35 @@ packages = [{include = "pinecone_text"}] [tool.poetry.dependencies] python = ">=3.9,<4.0" -torch = { version = ">=1.13.1", optional = true } -transformers = { version = ">=4.26.1", optional = true } +# torch >=2.3 dropped Python 3.9 support (its triton/setuptools chain requires +# Python >=3.10), so cap torch on 3.9 to keep the dependency graph resolvable. +# See https://github.com/pinecone-io/pinecone-text/issues/101 +torch = [ + { version = ">=1.13.1,<2.3", python = "<3.10", optional = true }, + { version = ">=1.13.1", python = ">=3.10", optional = true }, +] +# transformers >=4.49 gates torch.load behind torch >=2.6 (CVE-2025-32434 +# mitigation) and raises at runtime for SPLADE models that ship as .bin. Python +# 3.9 is capped at torch <2.3 above, so cap transformers <4.49 there to keep the +# torch.load path working; the >=3.10 line stays open where torch >=2.6 is used. +# See https://github.com/pinecone-io/pinecone-text/issues/101 +transformers = [ + { version = ">=4.26.1,<4.49", python = "<3.10", optional = true }, + { version = ">=4.26.1", python = ">=3.10", optional = true }, +] sentence-transformers = { version = ">=2.0.0", optional = true } mmh3 = "^4.1.0" nltk = "^3.9.1" openai = { version = "^1.2.3", optional = true } cohere = { version = "^4.37", optional = true } -numpy = ">=1.21.5" +# torch <2.3 (used on Python 3.9, above) is built against the numpy 1.x ABI and +# raises "Numpy is not available" at runtime under numpy 2.x, so cap numpy <2 on +# Python <3.10 to match. Keep the open range on >=3.10 where torch >=2.3 supports +# numpy 2.x. See https://github.com/pinecone-io/pinecone-text/issues/101 +numpy = [ + { version = ">=1.21.5,<2", python = "<3.10" }, + { version = ">=1.21.5", python = ">=3.10" }, +] requests = "^2.25.0" types-requests = "^2.25.0" python-dotenv = "^1.0.1"