docs: def pipeline(self, transaction=True, shard_hint=None):
          """
          Return a new pipeline object that can queue multiple commands for
          later execution. ``transaction`` indicates whether all commands
          should be executed atomically. Apart from making a group of operations
          atomic, pipelines are useful for reducing the back-and-forth overhead
          between the client and server.
  
          Overridden in order to provide the right client through the pipeline.
          """
          p = Pipeline(
              connection_pool=self.connection_pool,
              response_callbacks=self.response_callbacks,
              transaction=transaction,
              shard_hint=shard_hint)
          p.setEncoder(self._encoder)
          p.setDecoder(self._decoder)
          return p