From bc3c8c884786cbc90be6292a51838683fcdb7fee Mon Sep 17 00:00:00 2001 From: tomaDev Date: Wed, 13 May 2026 11:39:31 +0300 Subject: [PATCH] fix(python-uv): pass --no-default-groups to uv export MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PEP 735 dependency-groups.dev is included by default in uv export, so dev/test deps (moto, pytest, cryptography, docker, ...) currently land in every Lambda zip — ~67MB of bloat per function. Adding --no-default-groups mirrors the prior pip-tools behavior (extras/dev not auto-shipped) and cuts cold install time ~4-5x. --- aws_lambda_builders/workflows/python_uv/packager.py | 1 + tests/unit/workflows/python_uv/test_packager.py | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/aws_lambda_builders/workflows/python_uv/packager.py b/aws_lambda_builders/workflows/python_uv/packager.py index fc2ef696f..6c616829e 100644 --- a/aws_lambda_builders/workflows/python_uv/packager.py +++ b/aws_lambda_builders/workflows/python_uv/packager.py @@ -329,6 +329,7 @@ def _build_from_lock_file( "requirements.txt", "--no-emit-project", # Don't include the project itself, only dependencies "--no-hashes", # Skip hashes for cleaner output (optional) + "--no-default-groups", # Exclude PEP 735 default groups (e.g. dev/test) from Lambda zips "--output-file", temp_requirements, # We want to specify the version because `uv export` might default to using a different one diff --git a/tests/unit/workflows/python_uv/test_packager.py b/tests/unit/workflows/python_uv/test_packager.py index d370c3f9c..ebe01faa2 100644 --- a/tests/unit/workflows/python_uv/test_packager.py +++ b/tests/unit/workflows/python_uv/test_packager.py @@ -242,6 +242,11 @@ def test_build_dependencies_pyproject_with_uv_lock(self): # Verify it checked for uv.lock in the right location mock_exists.assert_called_with(os.path.join("path", "to", "uv.lock")) + # Verify export excludes PEP 735 default dependency-groups (dev/test deps + # must not land in Lambda zips). + export_args = self.mock_uv_runner._uv.run_uv_command.call_args[0][0] + self.assertIn("--no-default-groups", export_args) + def test_build_dependencies_pyproject_without_uv_lock(self): """Test that pyproject.toml without uv.lock uses standard pyproject build.""" with (