docs: def _self_pipe(self):
          """
          This sets up a self-pipe so we can hand back an fd to the caller
          allowing the object to manage event triggers.  The ends of the pipe are
          set non-blocking so it doesn't really matter if a bunch of events fill
          the pipe buffer.
      """
          import fcntl
  
          self._poll_fd, self._poll_send = os.pipe()
          for fd in [self._poll_fd, self._poll_send]:
              fl = fcntl.fcntl(fd, fcntl.F_GETFL)
              fcntl.fcntl(fd, fcntl.F_SETFL, fl | os.O_NONBLOCK)