code: def add_dependency (self, targets, sources):
          
          if isinstance (targets, str):
              targets = [targets]
          if isinstance (sources, str):
              sources = [sources]
          assert is_iterable(targets)
          assert is_iterable(sources)
  
          for target in targets:
              for source in sources:
                  self.do_add_dependency (target, source)
docs: Adds a dependency from 'targets' to 'sources'
  
          Both 'targets' and 'sources' can be either list
          of target names, or a single target name.