code: def _merge_nbval_coverage_data(cov):
      
      if not cov:
          return
  
      suffix = _make_suffix(cov)
      if suffix is True:
          # Note: If suffix is true, we are running in parallel, so several
          # files will be generated. This will cause some warnings about "no coverage"
          # but is otherwise OK. Do nothing.
          return
  
      # Get the filename of the nbval coverage:
      filename = cov.data_files.filename + '.' + suffix
  
      # Read coverage generated by nbval in this run:
      nbval_data = coverage.CoverageData(debug=cov.debug)
      try:
          nbval_data.read_file(os.path.abspath(filename))
      except coverage.CoverageException:
          return
  
      # Set up aliases (following internal coverage.py code here)
      aliases = None
      if cov.config.paths:
          aliases = coverage.files.PathAliases()
          for paths in cov.config.paths.values():
              result = paths[0]
              for pattern in paths[1:]:
                  aliases.add(pattern, result)
  
      # Merge nbval data into pytest-cov data:
      cov.data.update(nbval_data, aliases=aliases)
      # Delete our nbval coverage data
      coverage.misc.file_be_gone(filename)
docs: Merge nbval coverage data into pytest-cov data.