docs: def imread(files, **kwargs):
      """Return image data from TIFF file(s) as numpy array.
  
      Refer to the TiffFile and  TiffSequence classes and their asarray
      functions for documentation.
  
      Parameters
      ----------
      files : str, binary stream, or sequence
          File name, seekable binary stream, glob pattern, or sequence of
          file names.
      kwargs : dict
          Parameters 'name', 'offset', 'size', 'multifile', and 'is_ome'
          are passed to the TiffFile constructor.
          The 'pattern' parameter is passed to the TiffSequence constructor.
          Other parameters are passed to the asarray functions.
          The first image series in the file is returned if no arguments are
          provided.
  
      """
      kwargs_file = parse_kwargs(kwargs, 'is_ome', 'multifile', '_useframes',
                                 'name', 'offset', 'size',
                                 'multifile_close', 'fastij', 'movie')  # legacy
      kwargs_seq = parse_kwargs(kwargs, 'pattern')
  
      if kwargs.get('pages', None) is not None:
          if kwargs.get('key', None) is not None:
              raise TypeError(
                  "the 'pages' and 'key' arguments cannot be used together")
          log.warning("imread: the 'pages' argument is deprecated")
          kwargs['key'] = kwargs.pop('pages')
  
      if isinstance(files, basestring) and any(i in files for i in '?*'):
          files = glob.glob(files)
      if not files:
          raise ValueError('no files found')
      if not hasattr(files, 'seek') and len(files) == 1:
          files = files[0]
  
      if isinstance(files, basestring) or hasattr(files, 'seek'):
          with TiffFile(files, **kwargs_file) as tif:
              return tif.asarray(**kwargs)
      else:
          with TiffSequence(files, **kwargs_seq) as imseq:
              return imseq.asarray(**kwargs)