<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def unregister(self, fd):
 """ Unregister a previously registered descriptor :param fd: The descriptor to unregister :raises ValueError: If :meth:`closed()` is True :raises OSError: If the underlying ``epoll_ctl(2)`` fails. The error message matches those found in the manual page. .. note:: For feature parity with Python 3.4, unlike what ``epoll_ctl(2)`` would do, we are silently ignoring ``EBADF`` which is raised if """

        if self._epfd < 0:
            _err_closed()
        ev = epoll_event()
        try:
            epoll_ctl(self._epfd, EPOLL_CTL_DEL, fd, byref(ev))
        except OSError as exc:
            # Allow fd to be closed, matching Python 3.4
            if exc.errno != EBADF:
                raise