|
4 | 4 | from typing import Any, Final, Optional, TypedDict
|
5 | 5 |
|
6 | 6 | import boto3
|
| 7 | +import jsonpath_ng |
7 | 8 | from botocore.exceptions import ClientError
|
8 | 9 | from samtranslator.translator.transform import transform as transform_sam
|
9 | 10 |
|
@@ -199,7 +200,6 @@ def _apply_global_macro_transformation(
|
199 | 200 | stack_parameters=parameters,
|
200 | 201 | transformation_parameters=transformation_parameters,
|
201 | 202 | )
|
202 |
| - # The type annotation on the v1 util appears to be incorrect. |
203 | 203 | return transformed_template # noqa
|
204 | 204 |
|
205 | 205 | def _apply_global_transform(
|
@@ -256,31 +256,32 @@ def transform(self) -> tuple[dict, dict]:
|
256 | 256 |
|
257 | 257 | transformed_before_template = self._before_template
|
258 | 258 | if transform_before and not is_nothing(self._before_template):
|
259 |
| - transformed_before_template = self._before_cache.get(_SCOPE_TRANSFORM_TEMPLATE_OUTCOME) |
260 |
| - if not transformed_before_template: |
261 |
| - transformed_before_template = self._before_template |
262 |
| - for before_global_transform in transform_before: |
263 |
| - if not is_nothing(before_global_transform.name): |
264 |
| - transformed_before_template = self._apply_global_transform( |
265 |
| - global_transform=before_global_transform, |
266 |
| - parameters=parameters_before, |
267 |
| - template=transformed_before_template, |
268 |
| - ) |
269 |
| - self._before_cache[_SCOPE_TRANSFORM_TEMPLATE_OUTCOME] = transformed_before_template |
| 259 | + transformed_before_template = self._before_template |
| 260 | + for before_global_transform in transform_before: |
| 261 | + if not is_nothing(before_global_transform.name): |
| 262 | + transformed_before_template = self._apply_global_transform( |
| 263 | + global_transform=before_global_transform, |
| 264 | + parameters=parameters_before, |
| 265 | + template=transformed_before_template, |
| 266 | + ) |
| 267 | + |
| 268 | + # Macro transformations won't remove the transform from the template |
| 269 | + transformed_before_template.pop("Transform", "") |
| 270 | + self._before_cache[_SCOPE_TRANSFORM_TEMPLATE_OUTCOME] = transformed_before_template |
270 | 271 |
|
271 | 272 | transformed_after_template = self._after_template
|
272 | 273 | if transform_after and not is_nothing(self._after_template):
|
273 |
| - transformed_after_template = self._after_cache.get(_SCOPE_TRANSFORM_TEMPLATE_OUTCOME) |
274 |
| - if not transformed_after_template: |
275 |
| - transformed_after_template = self._after_template |
276 |
| - for after_global_transform in transform_after: |
277 |
| - if not is_nothing(after_global_transform.name): |
278 |
| - transformed_after_template = self._apply_global_transform( |
279 |
| - global_transform=after_global_transform, |
280 |
| - parameters=parameters_after, |
281 |
| - template=transformed_after_template, |
282 |
| - ) |
283 |
| - self._after_cache[_SCOPE_TRANSFORM_TEMPLATE_OUTCOME] = transformed_after_template |
| 274 | + transformed_after_template = self._after_template |
| 275 | + for after_global_transform in transform_after: |
| 276 | + if not is_nothing(after_global_transform.name): |
| 277 | + transformed_after_template = self._apply_global_transform( |
| 278 | + global_transform=after_global_transform, |
| 279 | + parameters=parameters_after, |
| 280 | + template=transformed_after_template, |
| 281 | + ) |
| 282 | + # Macro transformations won't remove the transform from the template |
| 283 | + transformed_after_template.pop("Transform", "") |
| 284 | + self._after_cache[_SCOPE_TRANSFORM_TEMPLATE_OUTCOME] = transformed_after_template |
284 | 285 |
|
285 | 286 | self._save_runtime_cache()
|
286 | 287 |
|
@@ -394,7 +395,6 @@ def _normalize_transform(obj):
|
394 | 395 | def _replace_at_jsonpath(self, template, node, result):
|
395 | 396 | path = node.scope.to_jsonpath()
|
396 | 397 | parent_path = ".".join(path.split(".")[:-1])
|
397 |
| - import jsonpath_ng |
398 | 398 |
|
399 | 399 | pattern = jsonpath_ng.parse(parent_path)
|
400 | 400 | result_template = pattern.update(template, result)
|
|
0 commit comments