code: def find_package_docs(package_dir, skippedNames=None):
      logger = logging.getLogger(__name__)
      if skippedNames is None:
          skippedNames = []
      doc_dir = os.path.join(package_dir, 'doc')
      modules_yaml_path = os.path.join(doc_dir, 'manifest.yaml')
      if not os.path.exists(modules_yaml_path):
          raise NoPackageDocs(
              'Manifest YAML not found: {0}'.format(modules_yaml_path))
      with open(modules_yaml_path) as f:
          manifest_data = yaml.safe_load(f)
      module_dirs = {}
      package_dirs = {}
      static_dirs = {}
      if 'modules' in manifest_data:
          for module_name in manifest_data['modules']:
              if module_name in skippedNames:
                  logger.debug('Skipping module {0}'.format(module_name))
                  continue
              module_dir = os.path.join(doc_dir, module_name)
              if not os.path.isdir(module_dir):
                  message = 'module doc dir not found: {0}'.format(module_dir)
                  logger.warning(message)
                  continue
              module_dirs[module_name] = module_dir
              logger.debug('Found module doc dir {0}'.format(module_dir))
      if 'package' in manifest_data:
          package_name = manifest_data['package']
          full_package_dir = os.path.join(doc_dir, package_name)
          if os.path.isdir(full_package_dir) \
                  and package_name not in skippedNames:
              package_dirs[package_name] = full_package_dir
              logger.debug('Found package doc dir {0}'.format(full_package_dir))
          else:
              logger.warning('package doc dir excluded or not found: {0}'.format(
                  full_package_dir))
      if 'statics' in manifest_data:
          for static_dirname in manifest_data['statics']:
              full_static_dir = os.path.join(doc_dir, static_dirname)
              if not os.path.isdir(full_static_dir):
                  message = '_static doc dir not found: {0}'.format(
                      full_static_dir)
                  logger.warning(message)
                  continue
              relative_static_dir = os.path.relpath(
                  full_static_dir,
                  os.path.join(doc_dir, '_static'))
              static_dirs[relative_static_dir] = full_static_dir
              logger.debug('Found _static doc dir: {0}'.format(full_static_dir))
      Dirs = namedtuple('Dirs', ['module_dirs', 'package_dirs', 'static_dirs'])
      return Dirs(module_dirs=module_dirs,
                  package_dirs=package_dirs,
                  static_dirs=static_dirs)