code: def _execute(self, *args):
          
          command = (
              [
                  'task',
                  'rc:%s' % self.config_filename,
              ]
              + self.get_configuration_override_args()
              + [six.text_type(arg) for arg in args]
          )
  
          # subprocess is expecting bytestrings only, so nuke unicode if present
          # and remove control characters
          for i in range(len(command)):
              if isinstance(command[i], six.text_type):
                  command[i] = (
                      taskw.utils.clean_ctrl_chars(command[i].encode('utf-8')))
  
          try:
              proc = subprocess.Popen(
                  command,
                  stdout=subprocess.PIPE,
                  stderr=subprocess.PIPE,
              )
              stdout, stderr = proc.communicate()
          except OSError as e:
              if e.errno == errno.ENOENT:
                  raise OSError("Unable to find the 'task' command-line tool.")
              raise
  
          if proc.returncode != 0:
              raise TaskwarriorError(command, stderr, stdout, proc.returncode)
  
          # We should get bytes from the outside world.  Turn those into unicode
          # as soon as we can.
          # Everything going into and coming out of taskwarrior *should* be
          # utf-8, but there are weird edge cases where something totally unusual
          # made it in.. so we need to be able to handle (or at least try to
          # handle) whatever.  Kitchen tries its best.
          try:
              stdout = stdout.decode(self.config.get('encoding', 'utf-8'))
          except UnicodeDecodeError as e:
              stdout = kitchen.text.converters.to_unicode(stdout)
          try:
              stderr = stderr.decode(self.config.get('encoding', 'utf-8'))
          except UnicodeDecodeError as e:
              stderr = kitchen.text.converters.to_unicode(stderr)
  
          # strip any crazy terminal escape characters like bells, backspaces,
          # and form feeds
          for c in ('\a', '\b', '\f', ''):
              stdout = stdout.replace(c, '?')
              stderr = stderr.replace(c, '?')
  
          return stdout, stderr
docs: Execute a given taskwarrior command with arguments
  
          Returns a 2-tuple of stdout and stderr (respectively).