docs: def _trigger(self, fd, **params):
          """
          We need events to fire on appearance because the code
          doesn't see the file until after it has been created.
  
          In WF_KQUEUE mode, this simulates triggering an event by firing
          a oneshot timer event to fire immediately (0 msecs).  Because
          this uses the file descriptor as the timer identity and get() doesn't
          care what filter actually fired the event, the outside world sees
          this as a file change.
  
          In WF_INOTIFYX mode, this triggers an event by setting IN_OPEN on
          the inotify watch, opening the file in read-only mode, closing it,
          and removing the IN_OPEN setting.  The file is not discovered unless
          it can be opened so this is reliable.
  
          In WF_POLLING mode, this resets our knowledge of the stat
          info, and then triggers file activity to wake up the caller.
      """
          log = self._getparam('log', self._discard, **params)
          if self._mode == WF_KQUEUE:
              try:
                  ev = select.kevent(fd, filter=select.KQ_FILTER_TIMER,
                              flags=select.KQ_EV_ADD | select.KQ_EV_CLEAR | select.KQ_EV_ONESHOT, data=0)
                  self._kq.control([ev], 0, 0)
                  log.debug("Added timer event following pending file promotion")
              except Exception as e:
                  log.error("Failed to add timer event following pending file promotion -- %s", e)
          elif self._mode == WF_INOTIFYX:
              if fd in self.fds_open:
                  try:
                      path = self.fds_open[fd]
                      nfd = pynotifyx.add_watch(self._inx_fd, path, self._inx_mask|pynotifyx.IN_OPEN)
                      if nfd != fd:
                          raise Exception("Assertion failed: IN_OPEN add_watch() set gave new wd")
                      tfd = os.open(path, os.O_RDONLY)
                      try: os.close(tfd)
                      except: pass
                      nfd = pynotifyx.add_watch(self._inx_fd, path, self._inx_mask)
                      if nfd != fd:
                          raise Exception("Assertion failed: IN_OPEN add_watch() clear gave new wd")
                  except Exception as e:
                      log.error("Failed to trigger event via os.open() following pending file promotion -- %s", e)
              else:
                  log.error("Pending file promotion of unknown wd %d failed", fd)
          elif self._mode == WF_POLLING:
              self._poll_stat[fd] = ()
              self._poll_trigger()