nodes: 0, module; 1, function_definition; 2, function_name:get_iterargs; 3, parameters; 4, block; 5, identifier:self; 6, identifier:item; 7, expression_statement; 8, comment:# iterargs should always be mandatory, unless there's a good reason; 9, comment:# not to, which I can't think of right now.; 10, expression_statement; 11, return_statement; 12, comment:""" Returns a tuple of all iterags for item, sorted by name."""; 13, assignment; 14, call; 15, identifier:args; 16, call; 17, identifier:tuple; 18, argument_list; 19, attribute; 20, argument_list; 21, call; 22, identifier:self; 23, identifier:_get_aggregate_args; 24, identifier:item; 25, string; 26, identifier:sorted; 27, argument_list; 28, string_content:mandatoryArgs; 29, list_comprehension; 30, identifier:arg; 31, for_in_clause; 32, if_clause; 33, identifier:arg; 34, identifier:args; 35, comparison_operator:arg in self.iterargs; 36, identifier:arg; 37, attribute; 38, identifier:self; 39, identifier:iterargs
code: def get_iterargs(self, item):
      """ Returns a tuple of all iterags for item, sorted by name."""
      # iterargs should always be mandatory, unless there's a good reason
      # not to, which I can't think of right now.
  
      args = self._get_aggregate_args(item, 'mandatoryArgs')
      return tuple(sorted([arg for arg in args if arg in self.iterargs]))