aws-lambda-builders 1.42.0__tar.gz → 1.44.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.42.0 → aws_lambda_builders-1.44.0}/PKG-INFO +16 -2
  2. {aws_lambda_builders-1.42.0 → aws_lambda_builders-1.44.0}/aws_lambda_builders/__init__.py +1 -1
  3. {aws_lambda_builders-1.42.0 → aws_lambda_builders-1.44.0}/aws_lambda_builders/actions.py +6 -1
  4. {aws_lambda_builders-1.42.0 → aws_lambda_builders-1.44.0}/aws_lambda_builders/utils.py +4 -0
  5. {aws_lambda_builders-1.42.0 → aws_lambda_builders-1.44.0}/aws_lambda_builders/workflows/nodejs_npm/actions.py +44 -12
  6. {aws_lambda_builders-1.42.0 → aws_lambda_builders-1.44.0}/aws_lambda_builders/workflows/nodejs_npm/workflow.py +10 -8
  7. {aws_lambda_builders-1.42.0 → aws_lambda_builders-1.44.0}/aws_lambda_builders/workflows/nodejs_npm_esbuild/workflow.py +1 -1
  8. {aws_lambda_builders-1.42.0 → aws_lambda_builders-1.44.0}/aws_lambda_builders/workflows/python_pip/actions.py +9 -2
  9. {aws_lambda_builders-1.42.0 → aws_lambda_builders-1.44.0}/aws_lambda_builders/workflows/python_pip/packager.py +16 -11
  10. {aws_lambda_builders-1.42.0 → aws_lambda_builders-1.44.0}/aws_lambda_builders.egg-info/PKG-INFO +16 -2
  11. {aws_lambda_builders-1.42.0 → aws_lambda_builders-1.44.0}/aws_lambda_builders.egg-info/requires.txt +2 -2
  12. {aws_lambda_builders-1.42.0 → aws_lambda_builders-1.44.0}/requirements/dev.txt +2 -2
  13. {aws_lambda_builders-1.42.0 → aws_lambda_builders-1.44.0}/LICENSE +0 -0
  14. {aws_lambda_builders-1.42.0 → aws_lambda_builders-1.44.0}/MANIFEST.in +0 -0
  15. {aws_lambda_builders-1.42.0 → aws_lambda_builders-1.44.0}/NOTICE +0 -0
  16. {aws_lambda_builders-1.42.0 → aws_lambda_builders-1.44.0}/README.md +0 -0
  17. {aws_lambda_builders-1.42.0 → aws_lambda_builders-1.44.0}/aws_lambda_builders/__main__.py +0 -0
  18. {aws_lambda_builders-1.42.0 → aws_lambda_builders-1.44.0}/aws_lambda_builders/architecture.py +0 -0
  19. {aws_lambda_builders-1.42.0 → aws_lambda_builders-1.44.0}/aws_lambda_builders/binary_path.py +0 -0
  20. {aws_lambda_builders-1.42.0 → aws_lambda_builders-1.44.0}/aws_lambda_builders/builder.py +0 -0
  21. {aws_lambda_builders-1.42.0 → aws_lambda_builders-1.44.0}/aws_lambda_builders/exceptions.py +0 -0
  22. {aws_lambda_builders-1.42.0 → aws_lambda_builders-1.44.0}/aws_lambda_builders/path_resolver.py +0 -0
  23. {aws_lambda_builders-1.42.0 → aws_lambda_builders-1.44.0}/aws_lambda_builders/registry.py +0 -0
  24. {aws_lambda_builders-1.42.0 → aws_lambda_builders-1.44.0}/aws_lambda_builders/validator.py +0 -0
  25. {aws_lambda_builders-1.42.0 → aws_lambda_builders-1.44.0}/aws_lambda_builders/workflow.py +0 -0
  26. {aws_lambda_builders-1.42.0 → aws_lambda_builders-1.44.0}/aws_lambda_builders/workflows/__init__.py +0 -0
  27. {aws_lambda_builders-1.42.0 → aws_lambda_builders-1.44.0}/aws_lambda_builders/workflows/custom_make/DESIGN.md +0 -0
  28. {aws_lambda_builders-1.42.0 → aws_lambda_builders-1.44.0}/aws_lambda_builders/workflows/custom_make/__init__.py +0 -0
  29. {aws_lambda_builders-1.42.0 → aws_lambda_builders-1.44.0}/aws_lambda_builders/workflows/custom_make/actions.py +0 -0
  30. {aws_lambda_builders-1.42.0 → aws_lambda_builders-1.44.0}/aws_lambda_builders/workflows/custom_make/exceptions.py +0 -0
  31. {aws_lambda_builders-1.42.0 → aws_lambda_builders-1.44.0}/aws_lambda_builders/workflows/custom_make/make.py +0 -0
  32. {aws_lambda_builders-1.42.0 → aws_lambda_builders-1.44.0}/aws_lambda_builders/workflows/custom_make/utils.py +0 -0
  33. {aws_lambda_builders-1.42.0 → aws_lambda_builders-1.44.0}/aws_lambda_builders/workflows/custom_make/validator.py +0 -0
  34. {aws_lambda_builders-1.42.0 → aws_lambda_builders-1.44.0}/aws_lambda_builders/workflows/custom_make/workflow.py +0 -0
  35. {aws_lambda_builders-1.42.0 → aws_lambda_builders-1.44.0}/aws_lambda_builders/workflows/dotnet_clipackage/DESIGN.md +0 -0
  36. {aws_lambda_builders-1.42.0 → aws_lambda_builders-1.44.0}/aws_lambda_builders/workflows/dotnet_clipackage/__init__.py +0 -0
  37. {aws_lambda_builders-1.42.0 → aws_lambda_builders-1.44.0}/aws_lambda_builders/workflows/dotnet_clipackage/actions.py +0 -0
  38. {aws_lambda_builders-1.42.0 → aws_lambda_builders-1.44.0}/aws_lambda_builders/workflows/dotnet_clipackage/dotnetcli.py +0 -0
  39. {aws_lambda_builders-1.42.0 → aws_lambda_builders-1.44.0}/aws_lambda_builders/workflows/dotnet_clipackage/dotnetcli_resolver.py +0 -0
  40. {aws_lambda_builders-1.42.0 → aws_lambda_builders-1.44.0}/aws_lambda_builders/workflows/dotnet_clipackage/utils.py +0 -0
  41. {aws_lambda_builders-1.42.0 → aws_lambda_builders-1.44.0}/aws_lambda_builders/workflows/dotnet_clipackage/workflow.py +0 -0
  42. {aws_lambda_builders-1.42.0 → aws_lambda_builders-1.44.0}/aws_lambda_builders/workflows/go_modules/DESIGN.md +0 -0
  43. {aws_lambda_builders-1.42.0 → aws_lambda_builders-1.44.0}/aws_lambda_builders/workflows/go_modules/__init__.py +0 -0
  44. {aws_lambda_builders-1.42.0 → aws_lambda_builders-1.44.0}/aws_lambda_builders/workflows/go_modules/actions.py +0 -0
  45. {aws_lambda_builders-1.42.0 → aws_lambda_builders-1.44.0}/aws_lambda_builders/workflows/go_modules/builder.py +0 -0
  46. {aws_lambda_builders-1.42.0 → aws_lambda_builders-1.44.0}/aws_lambda_builders/workflows/go_modules/utils.py +0 -0
  47. {aws_lambda_builders-1.42.0 → aws_lambda_builders-1.44.0}/aws_lambda_builders/workflows/go_modules/validator.py +0 -0
  48. {aws_lambda_builders-1.42.0 → aws_lambda_builders-1.44.0}/aws_lambda_builders/workflows/go_modules/workflow.py +0 -0
  49. {aws_lambda_builders-1.42.0 → aws_lambda_builders-1.44.0}/aws_lambda_builders/workflows/java/__init__.py +0 -0
  50. {aws_lambda_builders-1.42.0 → aws_lambda_builders-1.44.0}/aws_lambda_builders/workflows/java/actions.py +0 -0
  51. {aws_lambda_builders-1.42.0 → aws_lambda_builders-1.44.0}/aws_lambda_builders/workflows/java/utils.py +0 -0
  52. {aws_lambda_builders-1.42.0 → aws_lambda_builders-1.44.0}/aws_lambda_builders/workflows/java_gradle/DESIGN.md +0 -0
  53. {aws_lambda_builders-1.42.0 → aws_lambda_builders-1.44.0}/aws_lambda_builders/workflows/java_gradle/__init__.py +0 -0
  54. {aws_lambda_builders-1.42.0 → aws_lambda_builders-1.44.0}/aws_lambda_builders/workflows/java_gradle/actions.py +0 -0
  55. {aws_lambda_builders-1.42.0 → aws_lambda_builders-1.44.0}/aws_lambda_builders/workflows/java_gradle/gradle.py +0 -0
  56. {aws_lambda_builders-1.42.0 → aws_lambda_builders-1.44.0}/aws_lambda_builders/workflows/java_gradle/gradle_resolver.py +0 -0
  57. {aws_lambda_builders-1.42.0 → aws_lambda_builders-1.44.0}/aws_lambda_builders/workflows/java_gradle/gradle_validator.py +0 -0
  58. {aws_lambda_builders-1.42.0 → aws_lambda_builders-1.44.0}/aws_lambda_builders/workflows/java_gradle/resources/lambda-build-init.gradle +0 -0
  59. {aws_lambda_builders-1.42.0 → aws_lambda_builders-1.44.0}/aws_lambda_builders/workflows/java_gradle/workflow.py +0 -0
  60. {aws_lambda_builders-1.42.0 → aws_lambda_builders-1.44.0}/aws_lambda_builders/workflows/java_maven/DESIGN.md +0 -0
  61. {aws_lambda_builders-1.42.0 → aws_lambda_builders-1.44.0}/aws_lambda_builders/workflows/java_maven/__init__.py +0 -0
  62. {aws_lambda_builders-1.42.0 → aws_lambda_builders-1.44.0}/aws_lambda_builders/workflows/java_maven/actions.py +0 -0
  63. {aws_lambda_builders-1.42.0 → aws_lambda_builders-1.44.0}/aws_lambda_builders/workflows/java_maven/maven.py +0 -0
  64. {aws_lambda_builders-1.42.0 → aws_lambda_builders-1.44.0}/aws_lambda_builders/workflows/java_maven/maven_resolver.py +0 -0
  65. {aws_lambda_builders-1.42.0 → aws_lambda_builders-1.44.0}/aws_lambda_builders/workflows/java_maven/maven_validator.py +0 -0
  66. {aws_lambda_builders-1.42.0 → aws_lambda_builders-1.44.0}/aws_lambda_builders/workflows/java_maven/workflow.py +0 -0
  67. {aws_lambda_builders-1.42.0 → aws_lambda_builders-1.44.0}/aws_lambda_builders/workflows/nodejs_npm/DESIGN.md +0 -0
  68. {aws_lambda_builders-1.42.0 → aws_lambda_builders-1.44.0}/aws_lambda_builders/workflows/nodejs_npm/__init__.py +0 -0
  69. {aws_lambda_builders-1.42.0 → aws_lambda_builders-1.44.0}/aws_lambda_builders/workflows/nodejs_npm/exceptions.py +0 -0
  70. {aws_lambda_builders-1.42.0 → aws_lambda_builders-1.44.0}/aws_lambda_builders/workflows/nodejs_npm/npm.py +0 -0
  71. {aws_lambda_builders-1.42.0 → aws_lambda_builders-1.44.0}/aws_lambda_builders/workflows/nodejs_npm/utils.py +0 -0
  72. {aws_lambda_builders-1.42.0 → aws_lambda_builders-1.44.0}/aws_lambda_builders/workflows/nodejs_npm_esbuild/DESIGN.md +0 -0
  73. {aws_lambda_builders-1.42.0 → aws_lambda_builders-1.44.0}/aws_lambda_builders/workflows/nodejs_npm_esbuild/__init__.py +0 -0
  74. {aws_lambda_builders-1.42.0 → aws_lambda_builders-1.44.0}/aws_lambda_builders/workflows/nodejs_npm_esbuild/actions.py +0 -0
  75. {aws_lambda_builders-1.42.0 → aws_lambda_builders-1.44.0}/aws_lambda_builders/workflows/nodejs_npm_esbuild/esbuild.py +0 -0
  76. {aws_lambda_builders-1.42.0 → aws_lambda_builders-1.44.0}/aws_lambda_builders/workflows/nodejs_npm_esbuild/exceptions.py +0 -0
  77. {aws_lambda_builders-1.42.0 → aws_lambda_builders-1.44.0}/aws_lambda_builders/workflows/python_pip/DESIGN.md +0 -0
  78. {aws_lambda_builders-1.42.0 → aws_lambda_builders-1.44.0}/aws_lambda_builders/workflows/python_pip/__init__.py +0 -0
  79. {aws_lambda_builders-1.42.0 → aws_lambda_builders-1.44.0}/aws_lambda_builders/workflows/python_pip/compat.py +0 -0
  80. {aws_lambda_builders-1.42.0 → aws_lambda_builders-1.44.0}/aws_lambda_builders/workflows/python_pip/exceptions.py +0 -0
  81. {aws_lambda_builders-1.42.0 → aws_lambda_builders-1.44.0}/aws_lambda_builders/workflows/python_pip/utils.py +0 -0
  82. {aws_lambda_builders-1.42.0 → aws_lambda_builders-1.44.0}/aws_lambda_builders/workflows/python_pip/validator.py +0 -0
  83. {aws_lambda_builders-1.42.0 → aws_lambda_builders-1.44.0}/aws_lambda_builders/workflows/python_pip/workflow.py +0 -0
  84. {aws_lambda_builders-1.42.0 → aws_lambda_builders-1.44.0}/aws_lambda_builders/workflows/ruby_bundler/DESIGN.md +0 -0
  85. {aws_lambda_builders-1.42.0 → aws_lambda_builders-1.44.0}/aws_lambda_builders/workflows/ruby_bundler/__init__.py +0 -0
  86. {aws_lambda_builders-1.42.0 → aws_lambda_builders-1.44.0}/aws_lambda_builders/workflows/ruby_bundler/actions.py +0 -0
  87. {aws_lambda_builders-1.42.0 → aws_lambda_builders-1.44.0}/aws_lambda_builders/workflows/ruby_bundler/bundler.py +0 -0
  88. {aws_lambda_builders-1.42.0 → aws_lambda_builders-1.44.0}/aws_lambda_builders/workflows/ruby_bundler/utils.py +0 -0
  89. {aws_lambda_builders-1.42.0 → aws_lambda_builders-1.44.0}/aws_lambda_builders/workflows/ruby_bundler/workflow.py +0 -0
  90. {aws_lambda_builders-1.42.0 → aws_lambda_builders-1.44.0}/aws_lambda_builders/workflows/rust_cargo/DESIGN.md +0 -0
  91. {aws_lambda_builders-1.42.0 → aws_lambda_builders-1.44.0}/aws_lambda_builders/workflows/rust_cargo/__init__.py +0 -0
  92. {aws_lambda_builders-1.42.0 → aws_lambda_builders-1.44.0}/aws_lambda_builders/workflows/rust_cargo/actions.py +0 -0
  93. {aws_lambda_builders-1.42.0 → aws_lambda_builders-1.44.0}/aws_lambda_builders/workflows/rust_cargo/cargo_lambda.py +0 -0
  94. {aws_lambda_builders-1.42.0 → aws_lambda_builders-1.44.0}/aws_lambda_builders/workflows/rust_cargo/exceptions.py +0 -0
  95. {aws_lambda_builders-1.42.0 → aws_lambda_builders-1.44.0}/aws_lambda_builders/workflows/rust_cargo/feature_flag.py +0 -0
  96. {aws_lambda_builders-1.42.0 → aws_lambda_builders-1.44.0}/aws_lambda_builders/workflows/rust_cargo/utils.py +0 -0
  97. {aws_lambda_builders-1.42.0 → aws_lambda_builders-1.44.0}/aws_lambda_builders/workflows/rust_cargo/workflow.py +0 -0
  98. {aws_lambda_builders-1.42.0 → aws_lambda_builders-1.44.0}/aws_lambda_builders.egg-info/SOURCES.txt +0 -0
  99. {aws_lambda_builders-1.42.0 → aws_lambda_builders-1.44.0}/aws_lambda_builders.egg-info/dependency_links.txt +0 -0
  100. {aws_lambda_builders-1.42.0 → aws_lambda_builders-1.44.0}/aws_lambda_builders.egg-info/entry_points.txt +0 -0
  101. {aws_lambda_builders-1.42.0 → aws_lambda_builders-1.44.0}/aws_lambda_builders.egg-info/top_level.txt +0 -0
  102. {aws_lambda_builders-1.42.0 → aws_lambda_builders-1.44.0}/pyproject.toml +0 -0
  103. {aws_lambda_builders-1.42.0 → aws_lambda_builders-1.44.0}/requirements/base.txt +0 -0
  104. {aws_lambda_builders-1.42.0 → aws_lambda_builders-1.44.0}/requirements/python_pip.txt +0 -0
  105. {aws_lambda_builders-1.42.0 → aws_lambda_builders-1.44.0}/setup.cfg +0 -0
  106. {aws_lambda_builders-1.42.0 → aws_lambda_builders-1.44.0}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: aws_lambda_builders
3
- Version: 1.42.0
3
+ Version: 1.44.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
@@ -25,9 +25,23 @@ Classifier: Topic :: Internet
25
25
  Classifier: Topic :: Software Development :: Build Tools
26
26
  Classifier: Topic :: Utilities
27
27
  Requires-Python: >=3.7
28
- Provides-Extra: dev
29
28
  License-File: LICENSE
30
29
  License-File: NOTICE
30
+ Requires-Dist: setuptools
31
+ Requires-Dist: wheel
32
+ Provides-Extra: dev
33
+ Requires-Dist: coverage==7.2.7; python_version < "3.8" and extra == "dev"
34
+ Requires-Dist: coverage==7.3.2; python_version >= "3.8" and extra == "dev"
35
+ Requires-Dist: flake8==3.3.0; python_version < "3.8" and extra == "dev"
36
+ Requires-Dist: flake8==3.8.4; python_version >= "3.8" and extra == "dev"
37
+ Requires-Dist: pytest-cov==4.1.0; extra == "dev"
38
+ Requires-Dist: isort<5,>=4.2.5; python_version < "3.8" and extra == "dev"
39
+ Requires-Dist: pytest>=6.1.1; extra == "dev"
40
+ Requires-Dist: parameterized==0.9.0; extra == "dev"
41
+ Requires-Dist: pyelftools~=0.30; extra == "dev"
42
+ Requires-Dist: black==22.6.0; python_version < "3.8" and extra == "dev"
43
+ Requires-Dist: black==23.11.0; python_version >= "3.8" and extra == "dev"
44
+ Requires-Dist: ruff==0.1.7; extra == "dev"
31
45
 
32
46
  ## Lambda Builders
33
47
 
@@ -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.42.0"
8
+ __version__ = "1.44.0"
9
9
  RPC_PROTOCOL_VERSION = "0.3"
@@ -57,7 +57,7 @@ class _ActionMetaClass(type):
57
57
  def __new__(mcs, name, bases, class_dict):
58
58
  cls = type.__new__(mcs, name, bases, class_dict)
59
59
 
60
- if cls.__name__ == "BaseAction":
60
+ if cls.__name__ in ["BaseAction", "NodejsNpmInstallOrUpdateBaseAction"]:
61
61
  return cls
62
62
 
63
63
  # Validate class variables
@@ -156,7 +156,12 @@ class LinkSinglePathAction(BaseAction):
156
156
  self._dest = dest
157
157
 
158
158
  def execute(self):
159
+ source_path = Path(self._source)
159
160
  destination_path = Path(self._dest)
161
+ if not source_path.exists():
162
+ # Source path doesn't exist, nothing to symlink
163
+ LOG.debug("Source path %s does not exist, skipping generating symlink", source_path)
164
+ return
160
165
  if not destination_path.exists():
161
166
  os.makedirs(destination_path.parent, exist_ok=True)
162
167
  utils.create_symlink_or_copy(str(self._source), str(destination_path))
@@ -198,6 +198,10 @@ def create_symlink_or_copy(source: str, destination: str) -> None:
198
198
  """Tries to create symlink, if it fails it will copy source into destination"""
199
199
  LOG.debug("Creating symlink; source: %s, destination: %s", source, destination)
200
200
  try:
201
+ if Path(destination).exists() and Path(destination).is_symlink():
202
+ # The symlink is already in place, don't try re-creating it
203
+ LOG.debug("Symlink between %s and %s already exists, skipping generating symlink", source, destination)
204
+ return
201
205
  os.symlink(Path(source).absolute(), Path(destination).absolute())
202
206
  except OSError as ex:
203
207
  LOG.warning(
@@ -72,17 +72,14 @@ class NodejsNpmPackAction(BaseAction):
72
72
  raise ActionFailedError(str(ex))
73
73
 
74
74
 
75
- class NodejsNpmInstallAction(BaseAction):
76
-
75
+ class NodejsNpmInstallOrUpdateBaseAction(BaseAction):
77
76
  """
78
- A Lambda Builder Action that installs NPM project dependencies
77
+ A base Lambda Builder Action that is used for installs or updating NPM project dependencies
79
78
  """
80
79
 
81
- NAME = "NpmInstall"
82
- DESCRIPTION = "Installing dependencies from NPM"
83
80
  PURPOSE = Purpose.RESOLVE_DEPENDENCIES
84
81
 
85
- def __init__(self, install_dir: str, subprocess_npm: SubprocessNpm, install_links: Optional[bool] = False):
82
+ def __init__(self, install_dir: str, subprocess_npm: SubprocessNpm):
86
83
  """
87
84
  Parameters
88
85
  ----------
@@ -90,14 +87,20 @@ class NodejsNpmInstallAction(BaseAction):
90
87
  Dependencies will be installed in this directory.
91
88
  subprocess_npm : SubprocessNpm
92
89
  An instance of the NPM process wrapper
93
- install_links : Optional[bool]
94
- Uses the --install-links npm option if True, by default False
95
90
  """
96
91
 
97
- super(NodejsNpmInstallAction, self).__init__()
92
+ super().__init__()
98
93
  self.install_dir = install_dir
99
94
  self.subprocess_npm = subprocess_npm
100
- self.install_links = install_links
95
+
96
+
97
+ class NodejsNpmInstallAction(NodejsNpmInstallOrUpdateBaseAction):
98
+ """
99
+ A Lambda Builder Action that installs NPM project dependencies
100
+ """
101
+
102
+ NAME = "NpmInstall"
103
+ DESCRIPTION = "Installing dependencies from NPM"
101
104
 
102
105
  def execute(self):
103
106
  """
@@ -109,9 +112,38 @@ class NodejsNpmInstallAction(BaseAction):
109
112
  LOG.debug("NODEJS installing in: %s", self.install_dir)
110
113
 
111
114
  command = ["install", "-q", "--no-audit", "--no-save", "--unsafe-perm", "--production"]
112
- if self.install_links:
113
- command.append("--install-links")
115
+ self.subprocess_npm.run(command, cwd=self.install_dir)
116
+
117
+ except NpmExecutionError as ex:
118
+ raise ActionFailedError(str(ex))
119
+
120
+
121
+ class NodejsNpmUpdateAction(NodejsNpmInstallOrUpdateBaseAction):
122
+ """
123
+ A Lambda Builder Action that installs NPM project dependencies
124
+ """
114
125
 
126
+ NAME = "NpmUpdate"
127
+ DESCRIPTION = "Updating dependencies from NPM"
128
+
129
+ def execute(self):
130
+ """
131
+ Runs the action.
132
+
133
+ :raises lambda_builders.actions.ActionFailedError: when NPM execution fails
134
+ """
135
+ try:
136
+ LOG.debug("NODEJS updating in: %s", self.install_dir)
137
+
138
+ command = [
139
+ "update",
140
+ "--no-audit",
141
+ "--no-save",
142
+ "--unsafe-perm",
143
+ "--production",
144
+ "--no-package-lock",
145
+ "--install-links",
146
+ ]
115
147
  self.subprocess_npm.run(command, cwd=self.install_dir)
116
148
 
117
149
  except NpmExecutionError as ex:
@@ -22,6 +22,7 @@ from aws_lambda_builders.workflows.nodejs_npm.actions import (
22
22
  NodejsNpmPackAction,
23
23
  NodejsNpmrcAndLockfileCopyAction,
24
24
  NodejsNpmrcCleanUpAction,
25
+ NodejsNpmUpdateAction,
25
26
  )
26
27
  from aws_lambda_builders.workflows.nodejs_npm.npm import SubprocessNpm
27
28
  from aws_lambda_builders.workflows.nodejs_npm.utils import OSUtils
@@ -119,7 +120,7 @@ class NodejsNpmWorkflow(BaseWorkflow):
119
120
  subprocess_npm=subprocess_npm,
120
121
  osutils=osutils,
121
122
  build_options=self.options,
122
- install_links=is_building_in_source,
123
+ is_building_in_source=is_building_in_source,
123
124
  )
124
125
  )
125
126
 
@@ -211,7 +212,7 @@ class NodejsNpmWorkflow(BaseWorkflow):
211
212
  subprocess_npm: SubprocessNpm,
212
213
  osutils: OSUtils,
213
214
  build_options: Optional[dict],
214
- install_links: Optional[bool] = False,
215
+ is_building_in_source: Optional[bool] = False,
215
216
  ):
216
217
  """
217
218
  Get the install action used to install dependencies.
@@ -228,8 +229,8 @@ class NodejsNpmWorkflow(BaseWorkflow):
228
229
  An instance of OS Utilities for file manipulation
229
230
  build_options : Optional[dict]
230
231
  Object containing build options configurations
231
- install_links : Optional[bool]
232
- Uses the --install-links npm option if True, by default False
232
+ is_building_in_source : Optional[bool]
233
+ States whether --build-in-source flag is set or not
233
234
 
234
235
  Returns
235
236
  -------
@@ -245,12 +246,13 @@ class NodejsNpmWorkflow(BaseWorkflow):
245
246
 
246
247
  if (osutils.file_exists(lockfile_path) or osutils.file_exists(shrinkwrap_path)) and npm_ci_option:
247
248
  return NodejsNpmCIAction(
248
- install_dir=install_dir, subprocess_npm=subprocess_npm, install_links=install_links
249
+ install_dir=install_dir, subprocess_npm=subprocess_npm, install_links=is_building_in_source
249
250
  )
250
251
 
251
- return NodejsNpmInstallAction(
252
- install_dir=install_dir, subprocess_npm=subprocess_npm, install_links=install_links
253
- )
252
+ if is_building_in_source:
253
+ return NodejsNpmUpdateAction(install_dir=install_dir, subprocess_npm=subprocess_npm)
254
+
255
+ return NodejsNpmInstallAction(install_dir=install_dir, subprocess_npm=subprocess_npm)
254
256
 
255
257
  @staticmethod
256
258
  def can_use_install_links(npm_process: SubprocessNpm) -> bool:
@@ -118,7 +118,7 @@ class NodejsNpmEsbuildWorkflow(BaseWorkflow):
118
118
  subprocess_npm=self.subprocess_npm,
119
119
  osutils=self.osutils,
120
120
  build_options=self.options,
121
- install_links=is_building_in_source,
121
+ is_building_in_source=is_building_in_source,
122
122
  )
123
123
  )
124
124
 
@@ -49,11 +49,18 @@ class PythonPipBuildAction(BaseAction):
49
49
  pip_runner = PipRunner(python_exe=python_with_pip, pip=pip)
50
50
 
51
51
  dependency_builder = DependencyBuilder(
52
- osutils=self._os_utils, pip_runner=pip_runner, runtime=self.runtime, architecture=self.architecture
52
+ osutils=self._os_utils,
53
+ python_exe=python_with_pip,
54
+ pip_runner=pip_runner,
55
+ runtime=self.runtime,
56
+ architecture=self.architecture,
53
57
  )
54
58
 
55
59
  package_builder = PythonPipDependencyBuilder(
56
- osutils=self._os_utils, runtime=self.runtime, dependency_builder=dependency_builder
60
+ osutils=self._os_utils,
61
+ runtime=self.runtime,
62
+ python_exe=python_with_pip,
63
+ dependency_builder=dependency_builder,
57
64
  )
58
65
  try:
59
66
  target_artifact_dir = self.artifacts_dir
@@ -5,7 +5,6 @@ Installs packages using PIP
5
5
  import logging
6
6
  import re
7
7
  import subprocess
8
- import sys
9
8
  from email.parser import FeedParser
10
9
  from typing import Tuple
11
10
 
@@ -97,7 +96,7 @@ def get_lambda_abi(runtime):
97
96
 
98
97
 
99
98
  class PythonPipDependencyBuilder(object):
100
- def __init__(self, runtime, osutils=None, dependency_builder=None, architecture=X86_64):
99
+ def __init__(self, runtime, python_exe, osutils=None, dependency_builder=None, architecture=X86_64):
101
100
  """Initialize a PythonPipDependencyBuilder.
102
101
 
103
102
  :type runtime: str
@@ -122,7 +121,7 @@ class PythonPipDependencyBuilder(object):
122
121
  self.osutils = OSUtils()
123
122
 
124
123
  if dependency_builder is None:
125
- dependency_builder = DependencyBuilder(self.osutils, runtime, architecture=architecture)
124
+ dependency_builder = DependencyBuilder(self.osutils, python_exe, runtime, architecture=architecture)
126
125
  self._dependency_builder = dependency_builder
127
126
 
128
127
  def build_dependencies(self, artifacts_dir_path, scratch_dir_path, requirements_path, ui=None, config=None):
@@ -211,7 +210,7 @@ class DependencyBuilder(object):
211
210
  # Unlikely to hit this case.
212
211
  _DEFAULT_GLIBC = (2, 17)
213
212
 
214
- def __init__(self, osutils, runtime, pip_runner=None, architecture=X86_64):
213
+ def __init__(self, osutils, runtime, python_exe, pip_runner=None, architecture=X86_64):
215
214
  """Initialize a DependencyBuilder.
216
215
 
217
216
  :type osutils: :class:`lambda_builders.utils.OSUtils`
@@ -229,8 +228,9 @@ class DependencyBuilder(object):
229
228
  :param architecture: Architecture to build for.
230
229
  """
231
230
  self._osutils = osutils
231
+ self.python_exe = python_exe
232
232
  if pip_runner is None:
233
- pip_runner = PipRunner(python_exe=None, pip=SubprocessPip(osutils))
233
+ pip_runner = PipRunner(python_exe=python_exe, pip=SubprocessPip(osutils))
234
234
  self._pip = pip_runner
235
235
  self.runtime = runtime
236
236
  self.architecture = architecture
@@ -364,7 +364,10 @@ class DependencyBuilder(object):
364
364
  # which will serve as the primary list of dependencies needed to deploy
365
365
  # successfully.
366
366
  self._pip.download_all_dependencies(requirements_filename, directory)
367
- deps = {Package(directory, filename) for filename in self._osutils.get_directory_contents(directory)}
367
+ deps = {
368
+ Package(directory, filename, self.python_exe)
369
+ for filename in self._osutils.get_directory_contents(directory)
370
+ }
368
371
  LOG.debug("Full dependency closure: %s", deps)
369
372
  return deps
370
373
 
@@ -383,7 +386,7 @@ class DependencyBuilder(object):
383
386
 
384
387
  def _categorize_wheel_files(self, directory):
385
388
  final_wheels = [
386
- Package(directory, filename)
389
+ Package(directory, filename, self.python_exe)
387
390
  for filename in self._osutils.get_directory_contents(directory)
388
391
  if filename.endswith(".whl")
389
392
  ]
@@ -506,13 +509,14 @@ class DependencyBuilder(object):
506
509
  class Package(object):
507
510
  """A class to represent a package downloaded but not yet installed."""
508
511
 
509
- def __init__(self, directory, filename, osutils=None):
512
+ def __init__(self, directory, filename, python_exe, osutils=None):
510
513
  self.dist_type = "wheel" if filename.endswith(".whl") else "sdist"
511
514
  self._directory = directory
512
515
  self.filename = filename
513
516
  if osutils is None:
514
517
  osutils = OSUtils()
515
518
  self._osutils = osutils
519
+ self.python_exe = python_exe
516
520
  self._name, self._version = self._calculate_name_and_version()
517
521
 
518
522
  @property
@@ -553,7 +557,7 @@ class Package(object):
553
557
  # {platform tag}.whl
554
558
  name, version = self.filename.split("-")[:2]
555
559
  else:
556
- info_fetcher = SDistMetadataFetcher(osutils=self._osutils)
560
+ info_fetcher = SDistMetadataFetcher(self.python_exe, osutils=self._osutils)
557
561
  sdist_path = self._osutils.joinpath(self._directory, self.filename)
558
562
  name, version = info_fetcher.get_package_name_and_version(sdist_path)
559
563
  normalized_name = self._normalize_name(name)
@@ -572,10 +576,11 @@ class SDistMetadataFetcher(object):
572
576
  "exec(compile(code, __file__, 'exec'))"
573
577
  )
574
578
 
575
- def __init__(self, osutils=None):
579
+ def __init__(self, python_exe, osutils=None):
576
580
  if osutils is None:
577
581
  osutils = OSUtils()
578
582
  self._osutils = osutils
583
+ self.python_exe = python_exe
579
584
 
580
585
  def _parse_pkg_info_file(self, filepath):
581
586
  # The PKG-INFO generated by the egg-info command is in an email feed
@@ -590,7 +595,7 @@ class SDistMetadataFetcher(object):
590
595
  setup_py = self._osutils.joinpath(package_dir, "setup.py")
591
596
  script = self._SETUPTOOLS_SHIM % setup_py
592
597
 
593
- cmd = [sys.executable, "-c", script, "--no-user-cfg", "egg_info", "--egg-base", "egg-info"]
598
+ cmd = [self.python_exe, "-c", script, "--no-user-cfg", "egg_info", "--egg-base", "egg-info"]
594
599
  egg_info_dir = self._osutils.joinpath(package_dir, "egg-info")
595
600
  self._osutils.makedirs(egg_info_dir)
596
601
  p = subprocess.Popen(
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: aws-lambda-builders
3
- Version: 1.42.0
3
+ Version: 1.44.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
@@ -25,9 +25,23 @@ Classifier: Topic :: Internet
25
25
  Classifier: Topic :: Software Development :: Build Tools
26
26
  Classifier: Topic :: Utilities
27
27
  Requires-Python: >=3.7
28
- Provides-Extra: dev
29
28
  License-File: LICENSE
30
29
  License-File: NOTICE
30
+ Requires-Dist: setuptools
31
+ Requires-Dist: wheel
32
+ Provides-Extra: dev
33
+ Requires-Dist: coverage==7.2.7; python_version < "3.8" and extra == "dev"
34
+ Requires-Dist: coverage==7.3.2; python_version >= "3.8" and extra == "dev"
35
+ Requires-Dist: flake8==3.3.0; python_version < "3.8" and extra == "dev"
36
+ Requires-Dist: flake8==3.8.4; python_version >= "3.8" and extra == "dev"
37
+ Requires-Dist: pytest-cov==4.1.0; extra == "dev"
38
+ Requires-Dist: isort<5,>=4.2.5; python_version < "3.8" and extra == "dev"
39
+ Requires-Dist: pytest>=6.1.1; extra == "dev"
40
+ Requires-Dist: parameterized==0.9.0; extra == "dev"
41
+ Requires-Dist: pyelftools~=0.30; extra == "dev"
42
+ Requires-Dist: black==22.6.0; python_version < "3.8" and extra == "dev"
43
+ Requires-Dist: black==23.11.0; python_version >= "3.8" and extra == "dev"
44
+ Requires-Dist: ruff==0.1.7; extra == "dev"
31
45
 
32
46
  ## Lambda Builders
33
47
 
@@ -6,7 +6,7 @@ pytest-cov==4.1.0
6
6
  pytest>=6.1.1
7
7
  parameterized==0.9.0
8
8
  pyelftools~=0.30
9
- ruff==0.1.4
9
+ ruff==0.1.7
10
10
 
11
11
  [dev:python_version < "3.8"]
12
12
  coverage==7.2.7
@@ -17,4 +17,4 @@ black==22.6.0
17
17
  [dev:python_version >= "3.8"]
18
18
  coverage==7.3.2
19
19
  flake8==3.8.4
20
- black==23.10.1
20
+ black==23.11.0
@@ -13,5 +13,5 @@ pyelftools~=0.30 # Used to verify the generated Go binary architecture in integr
13
13
 
14
14
  # formatter
15
15
  black==22.6.0; python_version < "3.8"
16
- black==23.10.1; python_version >= "3.8"
17
- ruff==0.1.4
16
+ black==23.11.0; python_version >= "3.8"
17
+ ruff==0.1.7