class_docstr: Data object representing a countdown timer acquisition and release
  that is used between the ``TimerClient`` and ``TimerServer``.
  A negative ``expiration_time`` should be interpreted as a "release"
  request.
  
  .. note:: the type of ``worker_id`` is implementation specific.
            It is whatever the TimerServer and TimerClient implementations
            have on to uniquely identify a worker.
class_docstr_tok: ["Data","object","representing","a","countdown","timer","acquisition","and","release","that","is","used","between","the","``","TimerClient","``","and","``","TimerServer","``",".","A","negative","``","expiration_time","``","should","be","interpreted","as","a","``","release","''","request",".","..","note",":",":","the","type","of","``","worker_id","``","is","implementation","specific",".","It","is","whatever","the","TimerServer","and","TimerClient","implementations","have","on","to","uniquely","identify","a","worker","."]
code: def __init__(
      self, worker_id: Any, scope_id: str, expiration_time: float
  ):
      self.worker_id = worker_id
      self.scope_id = scope_id
      self.expiration_time = expiration_time
  
imports: import abc
  import logging
  import threading
  import time
  from contextlib import contextmanager
  from inspect import getframeinfo, stack
  from typing import Any, Dict, List, Optional, Set
label_desc: Use image node_id 1 to create a new TimerRequest object  with example: obj = TimerRequest(worker_id, scope_id, expiration_time)