code: def compose_args(self, action_name, in_argdict):
          
  
          for action in self.actions:
              if action.name == action_name:
                  # The found 'action' will be visible from outside the loop
                  break
          else:
              raise AttributeError('Unknown Action: {0}'.format(action_name))
  
          # Check for given argument names which do not occur in the expected
          # argument list
          # pylint: disable=undefined-loop-variable
          unexpected = set(in_argdict) - \
              set(argument.name for argument in action.in_args)
          if unexpected:
              raise ValueError(
                  "Unexpected argument '{0}'. Method signature: {1}"
                  .format(next(iter(unexpected)), str(action))
              )
  
          # List the (name, value) tuples for each argument in the argument list
          composed = []
          for argument in action.in_args:
              name = argument.name
              if name in in_argdict:
                  composed.append((name, in_argdict[name]))
                  continue
              if name in self.DEFAULT_ARGS:
                  composed.append((name, self.DEFAULT_ARGS[name]))
                  continue
              if argument.vartype.default is not None:
                  composed.append((name, argument.vartype.default))
              raise ValueError(
                  "Missing argument '{0}'. Method signature: {1}"
                  .format(argument.name, str(action))
              )
          return composed
docs: Compose the argument list from an argument dictionary, with
          respect for default values.
  
          Args:
              action_name (str): The name of the action to be performed.
              in_argdict (dict): Arguments as a dict, eg
                  ``{'InstanceID': 0, 'Speed': 1}. The values
                  can be a string or something with a string representation.
  
          Returns:
              list: a list of ``(name, value)`` tuples.
  
          Raises:
              `AttributeError`: If this service does not support the action.
              `ValueError`: If the argument lists do not match the action
                  signature.