docs: def _check_download_conditions(self, lpath, rfile):
          # type: (Downloader, pathlib.Path,
          #        blobxfer.models.azure.StorageEntity) -> DownloadAction
          """Check for download conditions
          :param Downloader self: this
          :param pathlib.Path lpath: local path
          :param blobxfer.models.azure.StorageEntity rfile: remote file
          :rtype: DownloadAction
          :return: download action
          """
          if not lpath.exists():
              if rfile.vectored_io is not None:
                  fpath = blobxfer.models.download.Descriptor.\
                      convert_vectored_io_slice_to_final_path_name(lpath, rfile)
                  if not fpath.exists():
                      return DownloadAction.Download
              else:
                  return DownloadAction.Download
          if not self._spec.options.overwrite:
              logger.info(
                  'not overwriting local file: {} (remote: {})'.format(
                      lpath, rfile.path))
              return DownloadAction.Skip
          # check skip on options, MD5 match takes priority
          md5 = blobxfer.models.metadata.get_md5_from_metadata(rfile)
          if self._spec.skip_on.md5_match and blobxfer.util.is_not_empty(md5):
              return DownloadAction.CheckMd5
          # if neither of the remaining skip on actions are activated, download
          if (not self._spec.skip_on.filesize_match and
                  not self._spec.skip_on.lmt_ge):
              return DownloadAction.Download
          # check skip on file size match
          dl_fs = None
          if self._spec.skip_on.filesize_match:
              lsize = lpath.stat().st_size
              if rfile.mode == blobxfer.models.azure.StorageModes.Page:
                  lsize = blobxfer.util.page_align_content_length(lsize)
              if rfile.size == lsize:
                  dl_fs = False
                  if self._general_options.verbose:
                      logger.debug('filesize match: {} == {} size={}'.format(
                          lpath, rfile.path, lsize))
              else:
                  dl_fs = True
          # check skip on lmt ge
          dl_lmt = None
          if self._spec.skip_on.lmt_ge:
              mtime = blobxfer.util.datetime_from_timestamp(
                  lpath.stat().st_mtime, as_utc=True)
              if mtime >= rfile.lmt:
                  dl_lmt = False
                  if self._general_options.verbose:
                      logger.debug('lmt ge match: {} lmt={} >= {} lmt={}'.format(
                          lpath, mtime, rfile.path, rfile.lmt))
              else:
                  dl_lmt = True
          # download if either skip on mismatch is True
          if dl_fs or dl_lmt:
              return DownloadAction.Download
          else:
              return DownloadAction.Skip