code: def run(self):
          
          count = {}
  
          # NOTE: self.input() actually returns an element for the InputText.output() target
          for f in self.input():  # The input() method is a wrapper around requires() that returns Target objects
              for line in f.open('r'):  # Target objects are a file system/format abstraction and this will return a file stream object
                  for word in line.strip().split():
                      count[word] = count.get(word, 0) + 1
  
          # output data
          f = self.output().open('w')
          for word, count in six.iteritems(count):
              f.write("%s\t%d\n" % (word, count))
          f.close()
docs: 1. count the words for each of the :py:meth:`~.InputText.output` targets created by :py:class:`~.InputText`
          2. write the count into the :py:meth:`~.WordCount.output` target