def read(self, reader):

        assert not self._reader, "There's already a reader installed."
        self._reader = reader
        self._add_io_state(self.io.READ)
        return self
compares param collection of search dirs with valid names, raises ValueError if invalid.
dataset/ETHPy150Open HenryHu/pybbs/xmpp/readstream.py/ReadStream.read--crossover with--dataset/ETHPy150Open ros/catkin/python/catkin/find_in_workspaces.py/_get_valid_search_dirs