code: def python_source_files(path, tests_dirs):
      
      if isdir(path):
          for root, dirs, files in os.walk(path):
              dirs[:] = [d for d in dirs if os.path.join(root, d) not in tests_dirs]
              for filename in files:
                  if filename.endswith('.py'):
                      yield os.path.join(root, filename)
      else:
          yield path
docs: Attempt to guess where the python source files to mutate are and yield
      their paths
  
      :param path: path to a python source file or package directory
      :type path: str
  
      :param tests_dirs: list of directory paths containing test files
          (we do not want to mutate these!)
      :type tests_dirs: list[str]
  
      :return: generator listing the paths to the python source files to mutate
      :rtype: Generator[str, None, None]