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.
docstr: Releases the already acquired lock
docstr_tok: ["Releases","the","already","acquired","lock"]
code: def release(self) -> None:
      """
      Releases the already acquired lock
      """
      expected_token = self.local.token
      if expected_token is None:
          raise LockError("Cannot release an unlocked lock")
      self.local.token = None
      self.do_release(expected_token)
  
imports: import threading
  import time
  import uuid
  from types import SimpleNamespace, TracebackType
  from typing import Optional, Type
  from redis.exceptions import LockError, LockNotOwnedError
  from redis.typing import Number
label_desc: Use image node_id 9 for calling the Lock obj's underlying member method code with example usage: obj.release() without return types