blob: 8e7a78267bd4f6b1e6ebf55465326955f550767d [file] [log] [blame]
# Copyright 2012 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import copy
import json_parse
def Load(filename):
try:
with open(filename, 'rb') as handle:
schemas = json_parse.Parse(handle.read().decode('utf8'))
return schemas
except:
print('FAILED: Exception encountered while loading "%s"' % filename)
raise
# A dictionary mapping |filename| to the object resulting from loading the JSON
# at |filename|.
_cache = {}
def CachedLoad(filename):
"""Equivalent to Load(filename), but caches results for subsequent calls"""
if filename not in _cache:
_cache[filename] = Load(filename)
# Return a copy of the object so that any changes a caller makes won't affect
# the next caller.
return copy.deepcopy(_cache[filename])