Get requested data either by downloading it or by reading it from the disk (if it
        was previously downloaded and saved).

        :param save_data: flag to turn on/off saving of data to disk. Default is ``False``.
        :type save_data: bool
        :param redownload: if ``True``, download again the requested data even though it's already saved to disk.
                            Default is ``False``, do not download if data is already available on disk.
        :type redownload: bool
        :param data_filter: Used to specify which items will be returned by the method and in which order. E.g. with
            ``data_filter=[0, 2, -1]`` the method will return only 1st, 3rd and last item. Default filter is ``None``.
        :type data_filter: list(int) or None
        :param max_threads: number of threads to use when downloading data; default is ``max_threads=None`` which
            by default uses the number of processors on the system
        :type max_threads: int
        :param raise_download_errors: If ``True`` any error in download process should be raised as
            ``DownloadFailedException``. If ``False`` failed downloads will only raise warnings and the method will
            return list with ``None`` values in places where the results of failed download requests should be.
        :type raise_download_errors: bool
        :return: requested images as numpy arrays, where each array corresponds to a single acquisition and has
                    shape ``[height, width, channels]``.
        :rtype: list of numpy arrays

def get_data(self, *, save_data=False, data_filter=None, redownload=False, max_threads=None,
                 raise_download_errors=True):
        """
        Get requested data either by downloading it or by reading it from the disk (if it
        was previously downloaded and saved).

        :param save_data: flag to turn on/off saving of data to disk. Default is ``False``.
        :type save_data: bool
        :param redownload: if ``True``, download again the requested data even though it's already saved to disk.
                            Default is ``False``, do not download if data is already available on disk.
        :type redownload: bool
        :param data_filter: Used to specify which items will be returned by the method and in which order. E.g. with
            ``data_filter=[0, 2, -1]`` the method will return only 1st, 3rd and last item. Default filter is ``None``.
        :type data_filter: list(int) or None
        :param max_threads: number of threads to use when downloading data; default is ``max_threads=None`` which
            by default uses the number of processors on the system
        :type max_threads: int
        :param raise_download_errors: If ``True`` any error in download process should be raised as
            ``DownloadFailedException``. If ``False`` failed downloads will only raise warnings and the method will
            return list with ``None`` values in places where the results of failed download requests should be.
        :type raise_download_errors: bool
        :return: requested images as numpy arrays, where each array corresponds to a single acquisition and has
                    shape ``[height, width, channels]``.
        :rtype: list of numpy arrays
        """
        self._preprocess_request(save_data, True)
        data_list = self._execute_data_download(data_filter, redownload, max_threads, raise_download_errors)
        return self._add_saved_data(data_list, data_filter, raise_download_errors)