aws-lambda-builders 1.54.0__tar.gz → 1.56.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (106) hide show
  1. {aws_lambda_builders-1.54.0/aws_lambda_builders.egg-info → aws_lambda_builders-1.56.0}/PKG-INFO +4 -4
  2. {aws_lambda_builders-1.54.0 → aws_lambda_builders-1.56.0}/aws_lambda_builders/__init__.py +1 -1
  3. {aws_lambda_builders-1.54.0 → aws_lambda_builders-1.56.0}/aws_lambda_builders/workflows/nodejs_npm/actions.py +30 -0
  4. {aws_lambda_builders-1.54.0 → aws_lambda_builders-1.56.0}/aws_lambda_builders/workflows/nodejs_npm/workflow.py +8 -0
  5. {aws_lambda_builders-1.54.0 → aws_lambda_builders-1.56.0}/aws_lambda_builders/workflows/python_pip/packager.py +79 -12
  6. {aws_lambda_builders-1.54.0 → aws_lambda_builders-1.56.0/aws_lambda_builders.egg-info}/PKG-INFO +4 -4
  7. {aws_lambda_builders-1.54.0 → aws_lambda_builders-1.56.0}/aws_lambda_builders.egg-info/requires.txt +3 -3
  8. {aws_lambda_builders-1.54.0 → aws_lambda_builders-1.56.0}/requirements/dev.txt +3 -3
  9. {aws_lambda_builders-1.54.0 → aws_lambda_builders-1.56.0}/LICENSE +0 -0
  10. {aws_lambda_builders-1.54.0 → aws_lambda_builders-1.56.0}/MANIFEST.in +0 -0
  11. {aws_lambda_builders-1.54.0 → aws_lambda_builders-1.56.0}/NOTICE +0 -0
  12. {aws_lambda_builders-1.54.0 → aws_lambda_builders-1.56.0}/README.md +0 -0
  13. {aws_lambda_builders-1.54.0 → aws_lambda_builders-1.56.0}/aws_lambda_builders/__main__.py +0 -0
  14. {aws_lambda_builders-1.54.0 → aws_lambda_builders-1.56.0}/aws_lambda_builders/actions.py +0 -0
  15. {aws_lambda_builders-1.54.0 → aws_lambda_builders-1.56.0}/aws_lambda_builders/architecture.py +0 -0
  16. {aws_lambda_builders-1.54.0 → aws_lambda_builders-1.56.0}/aws_lambda_builders/binary_path.py +0 -0
  17. {aws_lambda_builders-1.54.0 → aws_lambda_builders-1.56.0}/aws_lambda_builders/builder.py +0 -0
  18. {aws_lambda_builders-1.54.0 → aws_lambda_builders-1.56.0}/aws_lambda_builders/exceptions.py +0 -0
  19. {aws_lambda_builders-1.54.0 → aws_lambda_builders-1.56.0}/aws_lambda_builders/path_resolver.py +0 -0
  20. {aws_lambda_builders-1.54.0 → aws_lambda_builders-1.56.0}/aws_lambda_builders/registry.py +0 -0
  21. {aws_lambda_builders-1.54.0 → aws_lambda_builders-1.56.0}/aws_lambda_builders/utils.py +0 -0
  22. {aws_lambda_builders-1.54.0 → aws_lambda_builders-1.56.0}/aws_lambda_builders/validator.py +0 -0
  23. {aws_lambda_builders-1.54.0 → aws_lambda_builders-1.56.0}/aws_lambda_builders/workflow.py +0 -0
  24. {aws_lambda_builders-1.54.0 → aws_lambda_builders-1.56.0}/aws_lambda_builders/workflows/__init__.py +0 -0
  25. {aws_lambda_builders-1.54.0 → aws_lambda_builders-1.56.0}/aws_lambda_builders/workflows/custom_make/DESIGN.md +0 -0
  26. {aws_lambda_builders-1.54.0 → aws_lambda_builders-1.56.0}/aws_lambda_builders/workflows/custom_make/__init__.py +0 -0
  27. {aws_lambda_builders-1.54.0 → aws_lambda_builders-1.56.0}/aws_lambda_builders/workflows/custom_make/actions.py +0 -0
  28. {aws_lambda_builders-1.54.0 → aws_lambda_builders-1.56.0}/aws_lambda_builders/workflows/custom_make/exceptions.py +0 -0
  29. {aws_lambda_builders-1.54.0 → aws_lambda_builders-1.56.0}/aws_lambda_builders/workflows/custom_make/make.py +0 -0
  30. {aws_lambda_builders-1.54.0 → aws_lambda_builders-1.56.0}/aws_lambda_builders/workflows/custom_make/utils.py +0 -0
  31. {aws_lambda_builders-1.54.0 → aws_lambda_builders-1.56.0}/aws_lambda_builders/workflows/custom_make/validator.py +0 -0
  32. {aws_lambda_builders-1.54.0 → aws_lambda_builders-1.56.0}/aws_lambda_builders/workflows/custom_make/workflow.py +0 -0
  33. {aws_lambda_builders-1.54.0 → aws_lambda_builders-1.56.0}/aws_lambda_builders/workflows/dotnet_clipackage/DESIGN.md +0 -0
  34. {aws_lambda_builders-1.54.0 → aws_lambda_builders-1.56.0}/aws_lambda_builders/workflows/dotnet_clipackage/__init__.py +0 -0
  35. {aws_lambda_builders-1.54.0 → aws_lambda_builders-1.56.0}/aws_lambda_builders/workflows/dotnet_clipackage/actions.py +0 -0
  36. {aws_lambda_builders-1.54.0 → aws_lambda_builders-1.56.0}/aws_lambda_builders/workflows/dotnet_clipackage/dotnetcli.py +0 -0
  37. {aws_lambda_builders-1.54.0 → aws_lambda_builders-1.56.0}/aws_lambda_builders/workflows/dotnet_clipackage/dotnetcli_resolver.py +0 -0
  38. {aws_lambda_builders-1.54.0 → aws_lambda_builders-1.56.0}/aws_lambda_builders/workflows/dotnet_clipackage/utils.py +0 -0
  39. {aws_lambda_builders-1.54.0 → aws_lambda_builders-1.56.0}/aws_lambda_builders/workflows/dotnet_clipackage/workflow.py +0 -0
  40. {aws_lambda_builders-1.54.0 → aws_lambda_builders-1.56.0}/aws_lambda_builders/workflows/go_modules/DESIGN.md +0 -0
  41. {aws_lambda_builders-1.54.0 → aws_lambda_builders-1.56.0}/aws_lambda_builders/workflows/go_modules/__init__.py +0 -0
  42. {aws_lambda_builders-1.54.0 → aws_lambda_builders-1.56.0}/aws_lambda_builders/workflows/go_modules/actions.py +0 -0
  43. {aws_lambda_builders-1.54.0 → aws_lambda_builders-1.56.0}/aws_lambda_builders/workflows/go_modules/builder.py +0 -0
  44. {aws_lambda_builders-1.54.0 → aws_lambda_builders-1.56.0}/aws_lambda_builders/workflows/go_modules/utils.py +0 -0
  45. {aws_lambda_builders-1.54.0 → aws_lambda_builders-1.56.0}/aws_lambda_builders/workflows/go_modules/validator.py +0 -0
  46. {aws_lambda_builders-1.54.0 → aws_lambda_builders-1.56.0}/aws_lambda_builders/workflows/go_modules/workflow.py +0 -0
  47. {aws_lambda_builders-1.54.0 → aws_lambda_builders-1.56.0}/aws_lambda_builders/workflows/java/__init__.py +0 -0
  48. {aws_lambda_builders-1.54.0 → aws_lambda_builders-1.56.0}/aws_lambda_builders/workflows/java/actions.py +0 -0
  49. {aws_lambda_builders-1.54.0 → aws_lambda_builders-1.56.0}/aws_lambda_builders/workflows/java/utils.py +0 -0
  50. {aws_lambda_builders-1.54.0 → aws_lambda_builders-1.56.0}/aws_lambda_builders/workflows/java_gradle/DESIGN.md +0 -0
  51. {aws_lambda_builders-1.54.0 → aws_lambda_builders-1.56.0}/aws_lambda_builders/workflows/java_gradle/__init__.py +0 -0
  52. {aws_lambda_builders-1.54.0 → aws_lambda_builders-1.56.0}/aws_lambda_builders/workflows/java_gradle/actions.py +0 -0
  53. {aws_lambda_builders-1.54.0 → aws_lambda_builders-1.56.0}/aws_lambda_builders/workflows/java_gradle/gradle.py +0 -0
  54. {aws_lambda_builders-1.54.0 → aws_lambda_builders-1.56.0}/aws_lambda_builders/workflows/java_gradle/gradle_resolver.py +0 -0
  55. {aws_lambda_builders-1.54.0 → aws_lambda_builders-1.56.0}/aws_lambda_builders/workflows/java_gradle/gradle_validator.py +0 -0
  56. {aws_lambda_builders-1.54.0 → aws_lambda_builders-1.56.0}/aws_lambda_builders/workflows/java_gradle/resources/lambda-build-init.gradle +0 -0
  57. {aws_lambda_builders-1.54.0 → aws_lambda_builders-1.56.0}/aws_lambda_builders/workflows/java_gradle/workflow.py +0 -0
  58. {aws_lambda_builders-1.54.0 → aws_lambda_builders-1.56.0}/aws_lambda_builders/workflows/java_maven/DESIGN.md +0 -0
  59. {aws_lambda_builders-1.54.0 → aws_lambda_builders-1.56.0}/aws_lambda_builders/workflows/java_maven/__init__.py +0 -0
  60. {aws_lambda_builders-1.54.0 → aws_lambda_builders-1.56.0}/aws_lambda_builders/workflows/java_maven/actions.py +0 -0
  61. {aws_lambda_builders-1.54.0 → aws_lambda_builders-1.56.0}/aws_lambda_builders/workflows/java_maven/maven.py +0 -0
  62. {aws_lambda_builders-1.54.0 → aws_lambda_builders-1.56.0}/aws_lambda_builders/workflows/java_maven/maven_resolver.py +0 -0
  63. {aws_lambda_builders-1.54.0 → aws_lambda_builders-1.56.0}/aws_lambda_builders/workflows/java_maven/maven_validator.py +0 -0
  64. {aws_lambda_builders-1.54.0 → aws_lambda_builders-1.56.0}/aws_lambda_builders/workflows/java_maven/workflow.py +0 -0
  65. {aws_lambda_builders-1.54.0 → aws_lambda_builders-1.56.0}/aws_lambda_builders/workflows/nodejs_npm/DESIGN.md +0 -0
  66. {aws_lambda_builders-1.54.0 → aws_lambda_builders-1.56.0}/aws_lambda_builders/workflows/nodejs_npm/__init__.py +0 -0
  67. {aws_lambda_builders-1.54.0 → aws_lambda_builders-1.56.0}/aws_lambda_builders/workflows/nodejs_npm/exceptions.py +0 -0
  68. {aws_lambda_builders-1.54.0 → aws_lambda_builders-1.56.0}/aws_lambda_builders/workflows/nodejs_npm/npm.py +0 -0
  69. {aws_lambda_builders-1.54.0 → aws_lambda_builders-1.56.0}/aws_lambda_builders/workflows/nodejs_npm/utils.py +0 -0
  70. {aws_lambda_builders-1.54.0 → aws_lambda_builders-1.56.0}/aws_lambda_builders/workflows/nodejs_npm_esbuild/DESIGN.md +0 -0
  71. {aws_lambda_builders-1.54.0 → aws_lambda_builders-1.56.0}/aws_lambda_builders/workflows/nodejs_npm_esbuild/__init__.py +0 -0
  72. {aws_lambda_builders-1.54.0 → aws_lambda_builders-1.56.0}/aws_lambda_builders/workflows/nodejs_npm_esbuild/actions.py +0 -0
  73. {aws_lambda_builders-1.54.0 → aws_lambda_builders-1.56.0}/aws_lambda_builders/workflows/nodejs_npm_esbuild/esbuild.py +0 -0
  74. {aws_lambda_builders-1.54.0 → aws_lambda_builders-1.56.0}/aws_lambda_builders/workflows/nodejs_npm_esbuild/exceptions.py +0 -0
  75. {aws_lambda_builders-1.54.0 → aws_lambda_builders-1.56.0}/aws_lambda_builders/workflows/nodejs_npm_esbuild/workflow.py +0 -0
  76. {aws_lambda_builders-1.54.0 → aws_lambda_builders-1.56.0}/aws_lambda_builders/workflows/python_pip/DESIGN.md +0 -0
  77. {aws_lambda_builders-1.54.0 → aws_lambda_builders-1.56.0}/aws_lambda_builders/workflows/python_pip/__init__.py +0 -0
  78. {aws_lambda_builders-1.54.0 → aws_lambda_builders-1.56.0}/aws_lambda_builders/workflows/python_pip/actions.py +0 -0
  79. {aws_lambda_builders-1.54.0 → aws_lambda_builders-1.56.0}/aws_lambda_builders/workflows/python_pip/compat.py +0 -0
  80. {aws_lambda_builders-1.54.0 → aws_lambda_builders-1.56.0}/aws_lambda_builders/workflows/python_pip/exceptions.py +0 -0
  81. {aws_lambda_builders-1.54.0 → aws_lambda_builders-1.56.0}/aws_lambda_builders/workflows/python_pip/utils.py +0 -0
  82. {aws_lambda_builders-1.54.0 → aws_lambda_builders-1.56.0}/aws_lambda_builders/workflows/python_pip/validator.py +0 -0
  83. {aws_lambda_builders-1.54.0 → aws_lambda_builders-1.56.0}/aws_lambda_builders/workflows/python_pip/workflow.py +0 -0
  84. {aws_lambda_builders-1.54.0 → aws_lambda_builders-1.56.0}/aws_lambda_builders/workflows/ruby_bundler/DESIGN.md +0 -0
  85. {aws_lambda_builders-1.54.0 → aws_lambda_builders-1.56.0}/aws_lambda_builders/workflows/ruby_bundler/__init__.py +0 -0
  86. {aws_lambda_builders-1.54.0 → aws_lambda_builders-1.56.0}/aws_lambda_builders/workflows/ruby_bundler/actions.py +0 -0
  87. {aws_lambda_builders-1.54.0 → aws_lambda_builders-1.56.0}/aws_lambda_builders/workflows/ruby_bundler/bundler.py +0 -0
  88. {aws_lambda_builders-1.54.0 → aws_lambda_builders-1.56.0}/aws_lambda_builders/workflows/ruby_bundler/utils.py +0 -0
  89. {aws_lambda_builders-1.54.0 → aws_lambda_builders-1.56.0}/aws_lambda_builders/workflows/ruby_bundler/workflow.py +0 -0
  90. {aws_lambda_builders-1.54.0 → aws_lambda_builders-1.56.0}/aws_lambda_builders/workflows/rust_cargo/DESIGN.md +0 -0
  91. {aws_lambda_builders-1.54.0 → aws_lambda_builders-1.56.0}/aws_lambda_builders/workflows/rust_cargo/__init__.py +0 -0
  92. {aws_lambda_builders-1.54.0 → aws_lambda_builders-1.56.0}/aws_lambda_builders/workflows/rust_cargo/actions.py +0 -0
  93. {aws_lambda_builders-1.54.0 → aws_lambda_builders-1.56.0}/aws_lambda_builders/workflows/rust_cargo/cargo_lambda.py +0 -0
  94. {aws_lambda_builders-1.54.0 → aws_lambda_builders-1.56.0}/aws_lambda_builders/workflows/rust_cargo/exceptions.py +0 -0
  95. {aws_lambda_builders-1.54.0 → aws_lambda_builders-1.56.0}/aws_lambda_builders/workflows/rust_cargo/feature_flag.py +0 -0
  96. {aws_lambda_builders-1.54.0 → aws_lambda_builders-1.56.0}/aws_lambda_builders/workflows/rust_cargo/utils.py +0 -0
  97. {aws_lambda_builders-1.54.0 → aws_lambda_builders-1.56.0}/aws_lambda_builders/workflows/rust_cargo/workflow.py +0 -0
  98. {aws_lambda_builders-1.54.0 → aws_lambda_builders-1.56.0}/aws_lambda_builders.egg-info/SOURCES.txt +0 -0
  99. {aws_lambda_builders-1.54.0 → aws_lambda_builders-1.56.0}/aws_lambda_builders.egg-info/dependency_links.txt +0 -0
  100. {aws_lambda_builders-1.54.0 → aws_lambda_builders-1.56.0}/aws_lambda_builders.egg-info/entry_points.txt +0 -0
  101. {aws_lambda_builders-1.54.0 → aws_lambda_builders-1.56.0}/aws_lambda_builders.egg-info/top_level.txt +0 -0
  102. {aws_lambda_builders-1.54.0 → aws_lambda_builders-1.56.0}/pyproject.toml +0 -0
  103. {aws_lambda_builders-1.54.0 → aws_lambda_builders-1.56.0}/requirements/base.txt +0 -0
  104. {aws_lambda_builders-1.54.0 → aws_lambda_builders-1.56.0}/requirements/python_pip.txt +0 -0
  105. {aws_lambda_builders-1.54.0 → aws_lambda_builders-1.56.0}/setup.cfg +0 -0
  106. {aws_lambda_builders-1.54.0 → aws_lambda_builders-1.56.0}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: aws_lambda_builders
3
- Version: 1.54.0
3
+ Version: 1.56.0
4
4
  Summary: Python library to compile, build & package AWS Lambda functions for several runtimes & frameworks.
5
5
  Home-page: https://github.com/awslabs/aws-lambda-builders
6
6
  Author: Amazon Web Services
@@ -30,17 +30,17 @@ License-File: NOTICE
30
30
  Requires-Dist: setuptools
31
31
  Requires-Dist: wheel
32
32
  Provides-Extra: dev
33
- Requires-Dist: coverage==7.7.0; python_version >= "3.9" and extra == "dev"
33
+ Requires-Dist: coverage==7.9.2; python_version >= "3.9" and extra == "dev"
34
34
  Requires-Dist: coverage==7.6.1; python_version < "3.9" and extra == "dev"
35
35
  Requires-Dist: flake8==3.8.4; extra == "dev"
36
- Requires-Dist: pytest-cov==6.0.0; python_version >= "3.9" and extra == "dev"
36
+ Requires-Dist: pytest-cov==6.1.1; python_version >= "3.9" and extra == "dev"
37
37
  Requires-Dist: pytest-cov==5.0.0; python_version < "3.9" and extra == "dev"
38
38
  Requires-Dist: pytest>=6.1.1; extra == "dev"
39
39
  Requires-Dist: parameterized==0.9.0; extra == "dev"
40
40
  Requires-Dist: pyelftools~=0.32; extra == "dev"
41
41
  Requires-Dist: black==25.1.0; python_version >= "3.9" and extra == "dev"
42
42
  Requires-Dist: black==24.8.0; python_version < "3.9" and extra == "dev"
43
- Requires-Dist: ruff==0.11.0; extra == "dev"
43
+ Requires-Dist: ruff==0.11.13; extra == "dev"
44
44
  Dynamic: author
45
45
  Dynamic: author-email
46
46
  Dynamic: classifier
@@ -5,5 +5,5 @@ AWS Lambda Builder Library
5
5
  # Changing version will trigger a new release!
6
6
  # Please make the version change as the last step of your development.
7
7
 
8
- __version__ = "1.54.0"
8
+ __version__ = "1.56.0"
9
9
  RPC_PROTOCOL_VERSION = "0.3"
@@ -3,6 +3,7 @@ Action to resolve NodeJS dependencies using NPM
3
3
  """
4
4
 
5
5
  import logging
6
+ import os
6
7
  from typing import Optional
7
8
 
8
9
  from aws_lambda_builders.actions import ActionFailedError, BaseAction, Purpose
@@ -321,3 +322,32 @@ class NodejsNpmLockFileCleanUpAction(BaseAction):
321
322
 
322
323
  except OSError as ex:
323
324
  raise ActionFailedError(str(ex))
325
+
326
+
327
+ class NodejsNpmTestAction(NodejsNpmInstallOrUpdateBaseAction):
328
+ """
329
+ A Lambda Builder Action that runs tests in NPM project
330
+ """
331
+
332
+ NAME = "NpmTest"
333
+ DESCRIPTION = "Running tests from NPM"
334
+
335
+ def execute(self):
336
+ """
337
+ Runs the action if environment variable `SAM_NPM_RUN_TEST_WITH_BUILD` is `true`.
338
+
339
+ :raises lambda_builders.actions.ActionFailedError: when NPM execution fails
340
+ """
341
+ try:
342
+ is_run_test_with_build = os.getenv("SAM_NPM_RUN_TEST_WITH_BUILD", "False")
343
+ if is_run_test_with_build == "true":
344
+ LOG.debug("NODEJS running tests in: %s", self.install_dir)
345
+
346
+ command = ["test", "--if-present"]
347
+ self.subprocess_npm.run(command, cwd=self.install_dir)
348
+ else:
349
+ LOG.debug("NODEJS skipping tests")
350
+ LOG.debug("Add env variable 'SAM_NPM_RUN_TEST_WITH_BUILD=true' to run tests with build")
351
+
352
+ except NpmExecutionError as ex:
353
+ raise ActionFailedError(str(ex))
@@ -22,6 +22,7 @@ from aws_lambda_builders.workflows.nodejs_npm.actions import (
22
22
  NodejsNpmPackAction,
23
23
  NodejsNpmrcAndLockfileCopyAction,
24
24
  NodejsNpmrcCleanUpAction,
25
+ NodejsNpmTestAction,
25
26
  NodejsNpmUpdateAction,
26
27
  )
27
28
  from aws_lambda_builders.workflows.nodejs_npm.npm import SubprocessNpm
@@ -123,6 +124,13 @@ class NodejsNpmWorkflow(BaseWorkflow):
123
124
  )
124
125
  )
125
126
 
127
+ self.actions.append(
128
+ NodejsNpmTestAction(
129
+ install_dir=self.manifest_dir if is_building_in_source and is_external_manifest else self.build_dir,
130
+ subprocess_npm=subprocess_npm,
131
+ )
132
+ )
133
+
126
134
  if is_building_in_source and is_external_manifest:
127
135
  # Since we run `npm install` in the manifest directory, so we need to link the node_modules directory in
128
136
  # the source directory.
@@ -2,11 +2,12 @@
2
2
  Installs packages using PIP
3
3
  """
4
4
 
5
+ import itertools
5
6
  import logging
6
7
  import re
7
8
  import subprocess
8
9
  from email.parser import FeedParser
9
- from typing import Tuple
10
+ from typing import List, Tuple
10
11
 
11
12
  from aws_lambda_builders.architecture import ARM64, X86_64
12
13
  from aws_lambda_builders.utils import extract_tarfile
@@ -171,19 +172,25 @@ class DependencyBuilder(object):
171
172
  packager.
172
173
  """
173
174
 
174
- _COMPATIBLE_PLATFORM_ARM64 = {
175
+ _COMPATIBLE_PLATFORM_ARM64 = [
175
176
  "any",
176
177
  "linux_aarch64",
177
178
  "manylinux2014_aarch64",
178
- }
179
+ "manylinux_2_17_aarch64",
180
+ "manylinux_2_28_aarch64",
181
+ "manylinux_2_34_aarch64",
182
+ ]
179
183
 
180
- _COMPATIBLE_PLATFORM_X86_64 = {
184
+ _COMPATIBLE_PLATFORM_X86_64 = [
181
185
  "any",
182
186
  "linux_x86_64",
183
187
  "manylinux1_x86_64",
184
188
  "manylinux2010_x86_64",
185
189
  "manylinux2014_x86_64",
186
- }
190
+ "manylinux_2_17_x86_64",
191
+ "manylinux_2_28_x86_64",
192
+ "manylinux_2_34_x86_64",
193
+ ]
187
194
 
188
195
  _COMPATIBLE_PLATFORMS = {
189
196
  ARM64: _COMPATIBLE_PLATFORM_ARM64,
@@ -206,13 +213,22 @@ class DependencyBuilder(object):
206
213
  "cp39": (2, 26),
207
214
  "cp310": (2, 26),
208
215
  "cp311": (2, 26),
209
- "cp312": (2, 26),
216
+ "cp312": (2, 34),
217
+ "cp313": (2, 34),
210
218
  }
211
219
  # Fallback version if we're on an unknown python version
212
220
  # not in _RUNTIME_GLIBC.
213
221
  # Unlikely to hit this case.
214
222
  _DEFAULT_GLIBC = (2, 17)
215
223
 
224
+ # Mapping of glibc version to the most recent manylinux version compatible.
225
+ # The offically supported manylinux versions are 2_17, 2_28 and 2_34 as per https://github.com/pypa/manylinux
226
+ _GLIBC_TO_LATEST_MANYLINUX = {
227
+ (2, 17): "manylinux_2_17",
228
+ (2, 26): "manylinux_2_17",
229
+ (2, 34): "manylinux_2_34",
230
+ }
231
+
216
232
  def __init__(self, osutils, runtime, python_exe, pip_runner=None, architecture=X86_64):
217
233
  """Initialize a DependencyBuilder.
218
234
 
@@ -378,8 +394,60 @@ class DependencyBuilder(object):
378
394
  # Try to get binary wheels for each package that isn't compatible.
379
395
  LOG.debug("Downloading missing wheels: %s", packages)
380
396
  lambda_abi = get_lambda_abi(self.runtime)
381
- platform = "manylinux2014_aarch64" if self.architecture == ARM64 else "manylinux2014_x86_64"
382
- self._pip.download_manylinux_wheels([pkg.identifier for pkg in packages], directory, lambda_abi, platform)
397
+ self._pip.download_manylinux_wheels(
398
+ [pkg.identifier for pkg in packages], directory, lambda_abi, self.compatible_platforms
399
+ )
400
+
401
+ @property
402
+ def compatible_platforms(self) -> List[str]:
403
+ """Get the list of all compatible platforms for the current architecture.
404
+
405
+ Examples:
406
+ ```python
407
+ # Return value with python 3.11 on x86_64
408
+ [
409
+ 'any',
410
+ 'linux_x86_64',
411
+ 'manylinux1_x86_64',
412
+ 'manylinux2010_x86_64',
413
+ 'manylinux2014_x86_64',
414
+ 'manylinux_2_17_x86_64'
415
+ ]
416
+
417
+ # Return value with python 3.12 on x86_64
418
+ [
419
+ 'any',
420
+ 'linux_x86_64',
421
+ 'manylinux1_x86_64',
422
+ 'manylinux2010_x86_64',
423
+ 'manylinux2014_x86_64',
424
+ 'manylinux_2_17_x86_64',
425
+ 'manylinux_2_28_x86_64',
426
+ 'manylinux_2_34_x86_64'
427
+ ]
428
+
429
+ # Return value with python 3.13 on ARM64
430
+ [
431
+ 'any',
432
+ 'linux_aarch64',
433
+ 'manylinux2014_aarch64',
434
+ 'manylinux_2_17_aarch64',
435
+ 'manylinux_2_28_aarch64',
436
+ 'manylinux_2_34_aarch64'
437
+ ]
438
+ ```
439
+ """
440
+ lambda_abi = get_lambda_abi(self.runtime)
441
+ manylinux_prefix = self._GLIBC_TO_LATEST_MANYLINUX.get(self._RUNTIME_GLIBC.get(lambda_abi, self._DEFAULT_GLIBC))
442
+ architecture = "aarch64" if self.architecture == ARM64 else "x86_64"
443
+
444
+ # Get the latest compatible platform tag for the current architecture,
445
+ # all the previous ones are also compatible.
446
+ latest_compatible_platform = f"{manylinux_prefix}_{architecture}"
447
+
448
+ all_platforms = self._COMPATIBLE_PLATFORMS[self.architecture]
449
+ max_index = all_platforms.index(latest_compatible_platform)
450
+ return all_platforms[: max_index + 1]
383
451
 
384
452
  def _build_sdists(self, sdists, directory, compile_c=True):
385
453
  LOG.debug("Build missing wheels from sdists " "(C compiling %s): %s", compile_c, sdists)
@@ -431,7 +499,7 @@ class DependencyBuilder(object):
431
499
 
432
500
  In addition to checking the tag pattern, we also need to verify the glibc version
433
501
  """
434
- if platform in self._COMPATIBLE_PLATFORMS[self.architecture]:
502
+ if platform in self.compatible_platforms:
435
503
  return True
436
504
 
437
505
  arch = "aarch64" if self.architecture == ARM64 else "x86_64"
@@ -831,7 +899,7 @@ class PipRunner(object):
831
899
  # complain at deployment time.
832
900
  self.build_wheel(wheel_package_path, directory)
833
901
 
834
- def download_manylinux_wheels(self, packages, directory, lambda_abi, platform="manylinux2014_x86_64"):
902
+ def download_manylinux_wheels(self, packages, directory, lambda_abi, platforms):
835
903
  """Download wheel files for manylinux for all the given packages."""
836
904
  # If any one of these dependencies fails pip will bail out. Since we
837
905
  # are only interested in all the ones we can download, we need to feed
@@ -845,8 +913,7 @@ class PipRunner(object):
845
913
  arguments = [
846
914
  "--only-binary=:all:",
847
915
  "--no-deps",
848
- "--platform",
849
- platform,
916
+ *list(itertools.chain.from_iterable(["--platform", element] for element in platforms)),
850
917
  "--implementation",
851
918
  "cp",
852
919
  "--abi",
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: aws_lambda_builders
3
- Version: 1.54.0
3
+ Version: 1.56.0
4
4
  Summary: Python library to compile, build & package AWS Lambda functions for several runtimes & frameworks.
5
5
  Home-page: https://github.com/awslabs/aws-lambda-builders
6
6
  Author: Amazon Web Services
@@ -30,17 +30,17 @@ License-File: NOTICE
30
30
  Requires-Dist: setuptools
31
31
  Requires-Dist: wheel
32
32
  Provides-Extra: dev
33
- Requires-Dist: coverage==7.7.0; python_version >= "3.9" and extra == "dev"
33
+ Requires-Dist: coverage==7.9.2; python_version >= "3.9" and extra == "dev"
34
34
  Requires-Dist: coverage==7.6.1; python_version < "3.9" and extra == "dev"
35
35
  Requires-Dist: flake8==3.8.4; extra == "dev"
36
- Requires-Dist: pytest-cov==6.0.0; python_version >= "3.9" and extra == "dev"
36
+ Requires-Dist: pytest-cov==6.1.1; python_version >= "3.9" and extra == "dev"
37
37
  Requires-Dist: pytest-cov==5.0.0; python_version < "3.9" and extra == "dev"
38
38
  Requires-Dist: pytest>=6.1.1; extra == "dev"
39
39
  Requires-Dist: parameterized==0.9.0; extra == "dev"
40
40
  Requires-Dist: pyelftools~=0.32; extra == "dev"
41
41
  Requires-Dist: black==25.1.0; python_version >= "3.9" and extra == "dev"
42
42
  Requires-Dist: black==24.8.0; python_version < "3.9" and extra == "dev"
43
- Requires-Dist: ruff==0.11.0; extra == "dev"
43
+ Requires-Dist: ruff==0.11.13; extra == "dev"
44
44
  Dynamic: author
45
45
  Dynamic: author-email
46
46
  Dynamic: classifier
@@ -6,7 +6,7 @@ flake8==3.8.4
6
6
  pytest>=6.1.1
7
7
  parameterized==0.9.0
8
8
  pyelftools~=0.32
9
- ruff==0.11.0
9
+ ruff==0.11.13
10
10
 
11
11
  [dev:python_version < "3.9"]
12
12
  coverage==7.6.1
@@ -14,6 +14,6 @@ pytest-cov==5.0.0
14
14
  black==24.8.0
15
15
 
16
16
  [dev:python_version >= "3.9"]
17
- coverage==7.7.0
18
- pytest-cov==6.0.0
17
+ coverage==7.9.2
18
+ pytest-cov==6.1.1
19
19
  black==25.1.0
@@ -1,7 +1,7 @@
1
- coverage==7.7.0; python_version>="3.9"
1
+ coverage==7.9.2; python_version>="3.9"
2
2
  coverage==7.6.1; python_version<"3.9"
3
3
  flake8==3.8.4
4
- pytest-cov==6.0.0; python_version>="3.9"
4
+ pytest-cov==6.1.1; python_version>="3.9"
5
5
  pytest-cov==5.0.0; python_version<"3.9"
6
6
 
7
7
  # Test requirements
@@ -12,4 +12,4 @@ pyelftools~=0.32 # Used to verify the generated Go binary architecture in integr
12
12
  # formatter
13
13
  black==25.1.0; python_version>="3.9"
14
14
  black==24.8.0; python_version<"3.9"
15
- ruff==0.11.0
15
+ ruff==0.11.13