docs: def acquire(self, **kwargs):
          """
          Aquire the lock. Returns True if the lock was acquired; False otherwise.
  
          timeout (int): Timeout to wait for the lock to change if it is already acquired.
              Defaults to what was provided during initialization, which will block and retry until acquired. 
          """
          token = str(uuid.uuid4())
          attempted = False
          while self.token is None:
              try:
                  self.client.test_and_set(self.key, token, "0", ttl=self.ttl)
                  self.token = token
              except etcd.EtcdKeyNotFound, e:
                  try:
                      self.client.write(self.key, token, prevExist=False, recursive=True, ttl=self.ttl)
                      self.token = token
                  except etcd.EtcdAlreadyExist, e:
                      pass  # someone created the right before us
              except ValueError, e:
                  # someone else has the lock
                  if 'timeout' in kwargs or self.timeout is not None:
                      if attempted is True: return False
                      kwargs.setdefault("timeout", self.timeout)
                      try:
                          self.client.read(self.key, wait=True, timeout=kwargs["timeout"])
                          attempted = True
                      except etcd.EtcdException, e:
                          return False
                  else:
                      self.client.watch(self.key)
  
          if self.renewSecondsPrior is not None:
              timer_ttl = self.ttl - self.renewSecondsPrior
  
              if timer_ttl > 0:
                  def renew():
                      if self.renew():
                          Timer(timer_ttl, renew).start()
  
                  Timer(timer_ttl, renew).start()
          else:
              def cleanup():
                  if self.token is token:
                      self.token = None
  
              Timer(self.ttl, cleanup).start()
  
          return True