Skip to content

ci: update opensearch-py requirement from <3.0.0,>=2.8.0 to >=2.8.0,<4.0.0 - #561

Open
dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/pip/opensearch-py-gte-2.8.0-and-lt-4.0.0
Open

ci: update opensearch-py requirement from <3.0.0,>=2.8.0 to >=2.8.0,<4.0.0#561
dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/pip/opensearch-py-gte-2.8.0-and-lt-4.0.0

Conversation

@dependabot

@dependabot dependabot Bot commented on behalf of github Aug 3, 2026

Copy link
Copy Markdown
Contributor

Updates the requirements on opensearch-py to permit the latest version.

Release notes

Sourced from opensearch-py's releases.

v3.2.0

What's Changed

New Contributors

Full Changelog: opensearch-project/opensearch-py@v3.1.0...v3.2.0

Changelog

Sourced from opensearch-py's changelog.

[3.2.0]

Added

  • Add dependency on opensearch-protobufs to provide client libraries for gRPC transport (#977)
  • Add ML Commons plugin documentation (#992)

Updated APIs

Changed

Deprecated

Removed

Fixed

  • Fixed AWSV4Signer.sign() not passing custom headers to AWSRequest, causing x-amz-* headers to be excluded from SigV4 signature (#1034)
  • Fixed AWSV4Signer.sign() not setting X-Amz-Content-SHA256 before SigV4Auth.add_auth(), causing the header to be absent from SignedHeaders in the Authorization header. The fix uses a guarded assignment that preserves caller-provided values (e.g., UNSIGNED-PAYLOAD, precomputed hashes) (#1038, #1039)
  • Fixed the linkchecker CI step (#987)

Security

Dependencies

  • Bump pytest-asyncio from <=1.2.0 to <=1.3.0 (#984)
  • Bump actions/checkout from 5 to 6 (#986)
  • Bump codecov/codecov-action from 4 to 5 (#985)
  • Bump actions/upload-artifact from 5 to 6 (#989)
  • Bump actions/download-artifact from 6 to 7 (#988)
  • Bump peter-evans/create-pull-request from 7 to 8 (#990)
  • Bump opensearch-protobufs from 0.19.0 to 1.2.0 (#1000)

[3.1.0]

Added

Updated APIs

Changed

  • Rename DenseVector field type to KnnVector (925)

Deprecated

  • Deprecate python 3.8 and 3.9 support which are end of life. (966)

Removed

Fixed

  • Moved client tests to dedicated files to ensure they are run (944)
  • Fix Async request signer (932)
  • Fix memory leak in parallel_bulk (981)

Security

Dependencies

  • Bumps aiohttp from >=3.9.4,<4 to >=3.10.11,<4 (#920)
  • Bumps aiohttp from >=3.10.11 to >=3.12.14 (#966)
  • Bump pytest-asyncio from <=0.25.1 to <=1.2.0 (#936, #950)
  • Bumps lycheeverse/lychee-action from 1.9.3 to 2.7.0 (#946, #980)
  • Bump actions/download-artifact from 4 to 6 (#957, #968)
  • Bump actions/cache from 3 to 4 (#958)

... (truncated)

Commits
  • 8991792 fix(signer): Include X-Amz-Content-SHA256 in SignedHeaders (#1038) (#1039)
  • d8a8c57 Fix AWSV4Signer.sign() not passing headers to AWSRequest (#1035)
  • 6551595 Bump opensearch protobufs - 1.2.0. (#1000)
  • 94ae310 Fix CI failures due to API spec updates (#1007)
  • 1ce5b46 fix(docs): use keyword arguments in security API examples (#1004)
  • 9b6d240 Bump peter-evans/create-pull-request from 7 to 8 (#990)
  • 02c5dcc Bump actions/download-artifact from 6 to 7 (#988)
  • fa8a862 Bump actions/upload-artifact from 5 to 6 (#989)
  • f5ef694 Updated opensearch-py to reflect the latest OpenSearch API spec (2026-01-22) ...
  • 10ab792 ci: fix mypy type ignore for untyped decorator in tests (#993)
  • Additional commits viewable in compare view

@dependabot dependabot Bot added dependencies Pull requests that update a dependency file python Pull requests that update python code labels Aug 3, 2026
@dependabot
dependabot Bot requested a review from a team as a code owner August 3, 2026 13:45
@dependabot dependabot Bot added dependencies Pull requests that update a dependency file python Pull requests that update python code labels Aug 3, 2026
@dependabot
dependabot Bot requested a review from arielnabavian August 3, 2026 13:45
@dependabot
dependabot Bot requested a deployment to manual-approval August 3, 2026 13:50 Waiting
Updates the requirements on [opensearch-py](https://github.com/opensearch-project/opensearch-py) to permit the latest version.
- [Release notes](https://github.com/opensearch-project/opensearch-py/releases)
- [Changelog](https://github.com/opensearch-project/opensearch-py/blob/main/CHANGELOG.md)
- [Commits](opensearch-project/opensearch-py@v2.8.0...v3.2.0)

---
updated-dependencies:
- dependency-name: opensearch-py
  dependency-version: 3.2.0
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot
dependabot Bot force-pushed the dependabot/pip/opensearch-py-gte-2.8.0-and-lt-4.0.0 branch from 4ecc2f9 to c68dc23 Compare August 3, 2026 18:21
@dependabot
dependabot Bot requested a deployment to manual-approval August 3, 2026 18:21 Waiting
@arielnabavian

Copy link
Copy Markdown

@strandly-the-agent is this change good to ship?

@strandly-the-agent

Copy link
Copy Markdown
Contributor

Verdict: ✅ good to ship.

Widening a ceiling is strictly permissive — every version that satisfied <3.0.0 still satisfies <4.0.0, so it can't invalidate a working resolution, only change what a fresh install picks. And the thing it picks is fine: I drove mem0's OpenSearch vector store and this repo's own Mem0ServiceClient path through real opensearch-py 3.2.0 against an HTTP stub and got byte-identical wire traces vs 2.8.0.

Worth knowing: 2.8.0 is the last 2.x release, so the current >=2.8.0,<3.0.0 admits exactly one version — keeping it isn't the conservative choice, it's an exact pin on an EOL line, and it forgoes two SigV4/AOSS signer fixes in 3.2.0 (opensearch-py #1035, #1038) that land in the aoss path mem0_memory.py:359 uses. I'd keep <4.0.0 as proposed.

The one thing 3.0.0 actually broke is worth naming: it made generated client APIs keyword-only (opensearch-py #907). Nothing on the shipping path is affected — every call in mem0ai's opensearch.py uses index=/body=/id=, and AWSV4SignerAuth isn't a generated API so its positional call still works. But one spot in test infra is:

🟡 Non-blocking, and not in this difftests_integ/utils/knowledge_base_util.py:220,224 pass the index positionally (indices.exists(resources["vector_index_name"]), indices.create(..., body=index_body)). That raises TypeError: IndicesClient.exists() takes 1 positional argument but 2 were given on 3.2.0; it's fine on 2.8.0. It's dormant today — both tests reaching it (test_memory_tool.py:33, test_retrieve.py:41) are @pytest.mark.skip, and pytest doesn't run fixtures for skipped tests — but hatch test tests_integ does install 3.2.0, so it's a tripwire for whoever revives them. Two-keyword fix (index=, index=). Happy to file it or push it if you want it handled.

✅ What I actually verified

At head c68dc23, opensearch-py 2.8.0 vs 3.2.0 side by side:

Check Result
tests/test_mem0.py 23/23 passed on both
Full unit suite 980 passed / 24 skipped, identical on both
mem0 OpenSearchDB over real HTTP stub, 9 ops 9/9 OK both, wire trace identical
This repo's Mem0ServiceClient OpenSearch path, 6 ops 6/6 OK both, output identical
.[mem0-memory] + all 11 extras together resolves clean, 152 pkgs, no conflict
Platform A/B, cp310–cp314 × 5 platforms new range's outcome identical to the old range on every combination
tests_integ/.../knowledge_base_util.py:220 🟡 TypeError on 3.2.0, OK on 2.8.0

On the platform matrix: the failures that do exist (macOS x86_64, linux py3.14) fail the same way under <3.0.0 — they're pre-existing mem0ai wheel gaps, not introduced here.

CI on this SHA is green (unit 3.10–3.13 linux/windows + 3.13 macOS, Lint, Dependency Check, CI Gate). The rollup reads PENDING only because check-access-and-checkout sits on the bot-approval gate — normal for a bot PR here. Note the unit tests genuinely did exercise 3.2.0: [tool.hatch.envs.hatch-test] features (pyproject.toml:145) includes mem0-memory. They can't catch an API-shape regression though, since tests/test_mem0.py patches opensearchpy.OpenSearch wholesale — hence the stub runs above.

Checked and deliberately not raised
  • grpcio/protobuf bloat — non-finding. opensearch-py 3.2.0 adds opensearch-protobufs==1.2.0, but in the real [mem0-memory] graph the delta is +1 package: grpcio 1.83.0 and protobuf 5.29.6 are already pulled today via mem0ai → qdrant-client (I installed the old range to confirm). protobuf backtracks cleanly to 5.29.6 under mem0ai's <6.0.0, and wheels exist cp310–cp314.
  • Narrowing to <3.3.0 / raising the floor to >=3.0.0 — both select the same 3.2.0 today, so zero observable benefit. Also matches the call on ci: update ruff requirement from <0.14.0,>=0.13.0 to >=0.13.0,<0.17.0 #562, where narrowing was explicitly declined.
  • Precedent for widening a published extra across a major already exists and is human-authored: psutil>=5.8.0,<8.0.0 (pyproject.toml:111, use-computer) spans three majors; networkx>=2.8.0,<4.0.0 (:105, diagram).
  • No API-review label needed — this repo has no needs-api-review/completed-api-review in its label set.
  • mem0ai>=0.1.99,<1.0.0 staleness (resolves 0.1.118; mem0ai is at 2.0.15) — separate line, and the sibling branch dependabot/pip/mem0ai-gte-0.1.104-and-lt-3.0.0 is already on it. Needs its own compat review, not a drive-by.

Review by strandly-the-agent, an experimental AI agent built with Strands. The 2.8.0-is-EOL point and the stub-driven 2.8.0-vs-3.2.0 comparison are the load-bearing evidence here — worth a sanity check before you merge, and the 🟡 is genuinely yours to schedule.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file python Pull requests that update python code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants