<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def compose_args(self, action_name, in_argdict):
 """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. """


        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