def parse_config_sq(self, filename, inputhash):
        # Conversion functions from string to the correct type, str is identity
        convert = {'atomic': bool, 'user':str, 'group':str, 'mode':str}
        require_dir = set(['atomic'])
        result = []

        template = self.loader.load_template(filename)
        contents = template.render(inputhash, loader=self.loader)

        for line in contents.split('\n'):
            # These are the default values
            item = {'atomic': False, 'user':None, 'group':None, 'mode':None}

            if line == "" or line.startswith("#"):
                continue

            args = line.split()
            if len(args) < 2:
                raise ValueError('Line "{}" in file {} isn\'t formatted correctly'.format(line, filename))

            filepath = args[0]
            for arg in args[1:]:
                (key, value) = arg.split(':', 2)

                if key in require_dir:
                    # if this key requires us to be a directory, check
                    if not filepath.endswith(os.path.sep):
                        raise ValueError('Key {} requires entry {} to end with' +
                                ' a slash (must be directory) in file {}'.format(key, filepath, filename))

                #Only do work if we know about this parameter
                if key in convert:
                    item[key] = convert[key](value)
                else:
                    raise ValueError('Unknown config.sq value {} in file {}'.format(key, filename))
            result.append(FileConfig(filepath, item['atomic'], item['user'], item['group'], item['mode']))

        return result
Parses a config.sq file which contains metadata about files in this
dataset/ETHPy150Open gosquadron/squadron/squadron/template.py/DirectoryRender.parse_config_sq