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 (