docs: def _build_module_list(source_module, index_filename, ignore_modules):
      '''Builds a list of python modules in the current directory.'''
      out = []
      dirs_with_init = set()
      module_prefix = '' if source_module == '.' else source_module
  
      for root, _, filenames in walk('.'):
          root = root[2:]
          module_root = root.replace('/', '.')
          file_names = [filename[:-3] for filename in filenames if filename.endswith('.py')]
  
          for filename in file_names:
              if filename == '__init__':
                  dirs_with_init.add(root)
                  module_name = '.'.join([module_prefix, module_root]) if module_root else source_module
              elif not root:
                  module_name = '.'.join([module_prefix, filename])
              else:
                  module_name = '.'.join([module_prefix, root.replace('/', '.'), filename])
  
              if module_name.startswith('.'):
                  module_name = module_name[1:]
  
              if module_name in ignore_modules:
                  print 'Ignored file: {}{}.py'.format('{}/'.format(root), filename)
                  continue
  
              if root and root not in dirs_with_init:
                  print 'No __init__.py, skipping: {}{}.py'.format('{}/'.format(root), filename)
                  continue
  
              source_name = '{}.py'.format(filename)
              if root:
                  source_name = '{}/{}'.format(root, source_name)
  
              if filename == '__init__':
                  output_name = '{}.md'.format(index_filename)
              else:
                  output_name = '{}.md'.format(filename)
              if root:
                  output_name = '{}/{}'.format(root, output_name)
  
              out.append({
                  'directory': root,
                  'file': filename,
                  'module': module_name,
                  'output': output_name,
                  'source': source_name
              })
  
      return out