code: def test_script_object_in_pipeline(self, r):
      multiply = r.register_script(multiply_script)
      precalculated_sha = multiply.sha
      assert precalculated_sha
      pipe = r.pipeline()
      pipe.set("a", 2)
      pipe.get("a")
      multiply(keys=["a"], args=[3], client=pipe)
      assert r.script_exists(multiply.sha) == [False]
      # [SET worked, GET 'a', result of multiple script]
      assert pipe.execute() == [True, b"2", 6]
      # The script should have been loaded by pipe.execute()
      assert r.script_exists(multiply.sha) == [True]
      # The precalculated sha should have been the correct one
      assert multiply.sha == precalculated_sha
  
      # purge the script from redis's cache and re-run the pipeline
      # the multiply script should be reloaded by pipe.execute()
      r.script_flush()
      pipe = r.pipeline()
      pipe.set("a", 2)
      pipe.get("a")
      multiply(keys=["a"], args=[3], client=pipe)
      assert r.script_exists(multiply.sha) == [False]
      # [SET worked, GET 'a', result of multiple script]
      assert pipe.execute() == [True, b"2", 6]
      assert r.script_exists(multiply.sha) == [True]
  
imports: import pytest
  import redis
  from redis import exceptions
  from redis.commands.core import Script
  from tests.conftest import skip_if_redis_enterprise, skip_if_server_version_lt
label_desc: Use image node_id 15 for calling the TestScripting obj's underlying member method code with example usage: obj.test_script_object_in_pipeline(r) without return types