def opposite(self):
        res = eval(repr(self))
        if res._method == 'pub':
            res._method = 'sub'
        elif res._method == 'sub':
            res._method = 'pub'
        elif res._method == 'pull':
            res._method = 'push'
        elif res._method == 'push':
            res._method = 'pull'

        elif res._method == 'rep':
            res._method = 'req'
        elif res._method == 'req':
            res._method = 'rep'
        return res.binding(not res.bind).debugging(False)
If both out and out_shape are missing, should raise exception
dataset/ETHPy150Open philipbergen/zero/py/zero/__init__.py/ZeroSetup.opposite--crossover with--dataset/ETHPy150Open mapbox/rasterio/tests/test_features.py/test_rasterize_missing_out