def loadYaml(self, name, yamlSchema, default):
bs = binStat(name)
if name in self.__shelve:
cached = self.__shelve[name]
if ((cached['lstat'] == bs) and
(cached.get('vsn') == BOB_INPUT_HASH)):
self.__files[name] = cached['digest']
return cached['data']
with open(name, "r") as f:
try:
rawData = f.read()
data = yaml.safe_load(rawData)
digest = hashlib.sha1(rawData.encode('utf8')).digest()
except Exception as e:
raise ParseError("Error while parsing {}: {}".format(name, str(e)))
if data is None: data = default
try:
data = yamlSchema.validate(data)
except schema.SchemaError as e:
raise ParseError("Error while validating {}: {}".format(name, str(e)))
self.__files[name] = digest
self.__shelve[name] = {
'lstat' : bs,
'data' : data,
'vsn' : BOB_INPUT_HASH,
'digest' : digest
}
return data
评论列表
文章目录