Repository navigation
fix(showcase): lock the AG2 showcase's Python dependencies - #8389
Open
NathanTarbert wants to merge 1 commit into
Open
NathanTarbert wants to merge 1 commit into
NathanTarbert wants to merge 1 commit into
Conversation
NathanTarbert
requested review from
jpr5,
mme and
tylerslaton
as code owners
November 13, 2026 11:37
Contributor
|
Important Review skippedIgnore keyword(s) in the title. ⛔ Ignored keywords: 4
Please check the settings in the CodeRabbit UI or the
|
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #7285
The AG2 showcase now installs an exact, locked set of Python packages, so rebuilding the same commit gives the same environment.
Thanks @contextablemark for a really clear issue. The acceptance criteria, and especially the call to check that two clean builds produce the same package inventory, shaped how this was verified.
What changed
The five top-level requirements now live in
showcase/integrations/ag2/requirements.in. The ranges are the same as before, and so is theag2[openai,ag-ui,mcp]==1.1.2pin.requirements.txtis now generated from it withuv pip compile --universal. Every package is pinned with==, including everything that comes in through ag2's extras. It covers Python 3.10 and up, so the CI jobs that install this file get the locked versions without any change on their side. The Compatibility source check still reads ag2 as an exact1.1.2pin.requirements.lockis generated fromrequirements.txtwith hashes, for Python 3.12 on linux/x86_64 to match thepython:3.12.13base image. The Dockerfile installs it with--require-hashes. The image build installs exactly these files and stops if anything is missing a pin or a hash. Because it is built from the exact pins, the two files always agree on versions.The issue was written before #7767 moved AG2 to 1.1.2, so this locks the 1.1.2 set rather than a pre-1.0 one.
openaiandag-ui-protocolare no longer top-level lines. They are pinned through the lock now (openai 3.49.0, ag-ui-protocol 1.0.0).To update a dependency, edit
requirements.inand run the two commands in its header. Both generated files also show the full command at the top.Verification
Two
docker build --no-cacheruns of the agent-builder stage on linux/amd64 produced identicalpip freezeoutput. It matches the lock exactly (41 packages). The ag2 Python tests pass on 3.10 and 3.12 using the same install command CI uses (20 passed on each).validate-pinsreports the same results as before. Editing the ag2 hashes in the lock makes the image install fail with a hash mismatch.Happy to change the shape if you'd rather go with a
uv.lockanduv sync --locked. That would mean changing the CI install steps too, so it felt like a bigger step for one integration. A small check that keepsrequirements.lockin sync withrequirements.txtcould be a nice follow-up.Checklist
--require-hashes