def _assert_path_is_rw(self):
        """
        Make sure, that `self.path` exists, is directory a readable/writeable.

        Raises:
            IOError: In case that any of the assumptions failed.
            ValueError: In case that `self.path` is not set.
        """
        if not self.path:
            raise ValueError("`path` argument must be set!")

        if not os.path.exists(self.path):
            raise IOError("`%s` not found." % self.path)

        if not os.path.isdir(self.path):
            raise IOError("`%s` is not a directory!" % self.path)

        if not os.access(self.path, (os.R_OK or os.W_OK)):
            raise IOError(
                "Can't access `%s`, please check permissions." % self.path
            )