docs: def extract_patch_images(f, which_set):
      """Extracts a dict of the "patch images" for ILSVRC2010.
  
      Parameters
      ----------
      f : str or file-like object
          The filename or file-handle to the patch images TAR file.
      which_set : str
          Which set of images to extract. One of 'train', 'valid', 'test'.
  
      Returns
      -------
      dict
          A dictionary contains a mapping of filenames (without path) to a
          bytes object containing the replacement image.
  
      Notes
      -----
      Certain images in the distributed archives are blank, or display
      an "image not available" banner. A separate TAR file of
      "patch images" is distributed with the corrected versions of
      these. It is this archive that this function is intended to read.
  
      """
      if which_set not in ('train', 'valid', 'test'):
          raise ValueError('which_set must be one of train, valid, or test')
      which_set = 'val' if which_set == 'valid' else which_set
      patch_images = {}
      with tar_open(f) as tar:
          for info_obj in tar:
              if not info_obj.name.endswith('.JPEG'):
                  continue
              # Pretty sure that '/' is used for tarfile regardless of
              # os.path.sep, but I officially don't care about Windows.
              tokens = info_obj.name.split('/')
              file_which_set = tokens[-2]
              if file_which_set != which_set:
                  continue
              filename = tokens[-1]
              patch_images[filename] = tar.extractfile(info_obj.name).read()
      return patch_images