Parse a file from its name (instead of fds).

        If skip_unreadable is False and the file can't be read, will raise a
        ConfigReadingError.

def parse_file(self, filename, skip_unreadable=False):
        """Parse a file from its name (instead of fds).

        If skip_unreadable is False and the file can't be read, will raise a
        ConfigReadingError.
        """
        if not os.access(filename, os.R_OK):
            if skip_unreadable:
                return
            raise ConfigReadingError("Unable to open file %s." % filename)
        with open(filename, 'rt') as f:
            return self.parse(f, name_hint=filename)