class_docstr: Resolve delayed returns.
class_docstr_tok: ["Resolve","delayed","returns","."]
docstr: Resolve delayed return.
  
  Args:
      delayed_returns: list of delayed returns to resolve.
      hmac_key: key used to encrypt serialized and deserialized function and arguments.
      parameter_resolver: resolver used to pipeline parameters.
      execution_variable_resolver: resolver used to resolve execution variables.
      s3_base_uri (str): the s3 base uri of the function step that
          the serialized artifacts will be uploaded to.
          The s3_base_uri = s3_root_uri + pipeline_name.
      **settings: settings to pass to the deserialization function.
docstr_tok: ["Resolve","delayed","return",".","Args",":","delayed_returns",":","list","of","delayed","returns","to","resolve",".","hmac_key",":","key","used","to","encrypt","serialized","and","deserialized","function","and","arguments",".","parameter_resolver",":","resolver","used","to","pipeline","parameters",".","execution_variable_resolver",":","resolver","used","to","resolve","execution","variables",".","s3_base_uri","(","str",")",":","the","s3","base","uri","of","the","function","step","that","the","serialized","artifacts","will","be","uploaded","to",".","The","s3_base_uri","=","s3_root_uri","+","pipeline_name",".","*","*","settings",":","settings","to","pass","to","the","deserialization","function","."]
code: def __init__(
      self,
      delayed_returns: List[_DelayedReturn],
      hmac_key: str,
      parameter_resolver: _ParameterResolver,
      execution_variable_resolver: _ExecutionVariableResolver,
      s3_base_uri: str,
      **settings,
  ):
      """Resolve delayed return.
  
      Args:
          delayed_returns: list of delayed returns to resolve.
          hmac_key: key used to encrypt serialized and deserialized function and arguments.
          parameter_resolver: resolver used to pipeline parameters.
          execution_variable_resolver: resolver used to resolve execution variables.
          s3_base_uri (str): the s3 base uri of the function step that
              the serialized artifacts will be uploaded to.
              The s3_base_uri = s3_root_uri + pipeline_name.
          **settings: settings to pass to the deserialization function.
      """
      self._s3_base_uri = s3_base_uri
      self._parameter_resolver = parameter_resolver
      self._execution_variable_resolver = execution_variable_resolver
      # different delayed returns can have the same uri, so we need to dedupe
      uris = {
          self._resolve_delayed_return_uri(delayed_return)
          for delayed_return in delayed_returns
      }
  
      def deserialization_task(uri):
          return uri, deserialize_obj_from_s3(
              sagemaker_session=settings["sagemaker_session"],
              s3_uri=uri,
              hmac_key=hmac_key,
          )
  
      with ThreadPoolExecutor() as executor:
          self._deserialized_objects = dict(
              executor.map(deserialization_task, uris)
          )
  
imports: from __future__ import absolute_import
  from concurrent.futures import ThreadPoolExecutor
  from dataclasses import dataclass, field
  from typing import Any, Union, Dict, List, Tuple
  from sagemaker.s3 import s3_path_join
  from sagemaker.remote_function.core.serialization import deserialize_obj_from_s3
label_desc: Use image node_id 1 to create a new _DelayedReturnResolver object  with example: obj = _DelayedReturnResolver(delayed_returns, hmac_key, parameter_resolver, execution_variable_resolver, s3_base_uri)