class_docstr: A shared, distributed Lock. Using Redis for locking allows the Lock
  to be shared across processes and/or machines.
  
  It's left to the user to resolve deadlock issues and make sure
  multiple clients play nicely together.
class_docstr_tok: ["A","shared",",","distributed","Lock",".","Using","Redis","for","locking","allows","the","Lock","to","be","shared","across","processes","and\/or","machines",".","It","'s","left","to","the","user","to","resolve","deadlock","issues","and","make","sure","multiple","clients","play","nicely","together","."]
code: def register_scripts(self):
      cls = self.__class__
      client = self.redis
      if cls.lua_release is None:
          cls.lua_release = client.register_script(
              cls.LUA_RELEASE_SCRIPT
          )
      if cls.lua_extend is None:
          cls.lua_extend = client.register_script(cls.LUA_EXTEND_SCRIPT)
      if cls.lua_reacquire is None:
          cls.lua_reacquire = client.register_script(
              cls.LUA_REACQUIRE_SCRIPT
          )
  
file_path: catboost/contrib/python/redis/py3/redis/asyncio/lock.py
imports: import asyncio
  import threading
  import uuid
  from types import SimpleNamespace
  from typing import TYPE_CHECKING, Awaitable, Optional, Union
  from redis.exceptions import LockError, LockNotOwnedError
label_desc: Use image node_id 2 for calling the Lock obj's underlying member method code with example usage: obj.register_scripts() without return types