code: def update_template(self, template_dict, original_template_path, built_artifacts):
          
  
          original_dir = os.path.dirname(original_template_path)
  
          for logical_id, resource in template_dict.get("Resources", {}).items():
  
              if logical_id not in built_artifacts:
                  # this resource was not built. So skip it
                  continue
  
              # Artifacts are written relative to the template because it makes the template portable
              #   Ex: A CI/CD pipeline build stage could zip the output folder and pass to a
              #   package stage running on a different machine
              artifact_relative_path = os.path.relpath(built_artifacts[logical_id], original_dir)
  
              resource_type = resource.get("Type")
              properties = resource.setdefault("Properties", {})
              if resource_type == "AWS::Serverless::Function":
                  properties["CodeUri"] = artifact_relative_path
  
              if resource_type == "AWS::Lambda::Function":
                  properties["Code"] = artifact_relative_path
  
          return template_dict
docs: Given the path to built artifacts, update the template to point appropriate resource CodeUris to the artifacts
          folder
  
          Parameters
          ----------
          template_dict
          original_template_path : str
              Path where the template file will be written to
  
          built_artifacts : dict
              Map of LogicalId of a resource to the path where the the built artifacts for this resource lives
  
          Returns
          -------
          dict
              Updated template