def METHOD_NAME(src: np.ndarray,
                    dst: np.ndarray,
                    A: Affine,
                    resampling: Resampling,
                    src_nodata: Nodata = None,
                    dst_nodata: Nodata = None,
                    **kwargs) -> np.ndarray:
    """
    Perform Affine warp using rasterio as backend library.
    :param        src: image as ndarray
    :param        dst: image as ndarray
    :param          A: Affine transform, maps from dst_coords to src_coords
    :param resampling: str|rasterio.warp.Resampling resampling strategy
    :param src_nodata: Value representing "no data" in the source image
    :param dst_nodata: Value to represent "no data" in the destination image
    :param     kwargs: any other args to pass to ``rasterio.warp.reproject``
    :returns: dst
    """
    crs = _WRP_CRS
    src_transform = Affine.identity()
    dst_transform = A
    if isinstance(resampling, str):
        resampling = resampling_s2rio(resampling)
    # GDAL support for int8 is patchy, warp doesn't support it, so we need to convert to int16
    if src.dtype.name == 'int8':
        src = src.astype('int16')
    if dst.dtype.name == 'int8':
        _dst = dst.astype('int16')
    else:
        _dst = dst
    rasterio.warp.reproject(src,
                            _dst,
                            src_transform=src_transform,
                            dst_transform=dst_transform,
                            src_crs=crs,
                            dst_crs=crs,
                            resampling=resampling,
                            src_nodata=src_nodata,
                            dst_nodata=dst_nodata,
                            **kwargs)
    if dst is not _dst:
        # int8 workaround copy pixels back to int8
        np.copyto(dst, _dst, casting='unsafe')
    return dst