code: def release(self) -> None:
          
          self._value += 1
          while self._waiters:
              waiter = self._waiters.popleft()
              if not waiter.done():
                  self._value -= 1
  
                  # If the waiter is a coroutine paused at
                  #
                  #     with (yield semaphore.acquire()):
                  #
                  # then the context manager's __exit__ calls release() at the end
                  # of the "with" block.
                  waiter.set_result(_ReleasingContextManager(self))
                  break
docs: Increment the counter and wake one waiter.