'Returns True if src conforms to dst, False otherwise.
If conformable, the types are the same, the ndims are equal, and each axis spec is conformable.
Any packing/access spec is conformable to itself.
\'direct\' and \'ptr\' are conformable to \'full\'.
\'contig\' and \'follow\' are conformable to \'strided\'.
Any other combo is not conformable.'

def conforms_to(self, dst, broadcast=False, copying=False):

    from . import MemoryView
    src = self
    if (src.dtype != dst.dtype):
        return False
    if (src.ndim != dst.ndim):
        if broadcast:
            (src, dst) = MemoryView.broadcast_types(src, dst)
        else:
            return False
    for (src_spec, dst_spec) in zip(src.axes, dst.axes):
        (src_access, src_packing) = src_spec
        (dst_access, dst_packing) = dst_spec
        if ((src_access != dst_access) and (dst_access != 'full')):
            return False
        if ((src_packing != dst_packing) and (dst_packing != 'strided') and (not copying)):
            return False
    return True
