def __prime_eeweather_cache(): """ Primes the eemeter / eeweather caches by doing a non-existent query This creates the cache directories sooner than if they were created during normal processing (which can lead to a race condition and missing thermostats) """ sql_json = KeyValueStore() if sql_json.key_exists('0') is not False: raise Exception("eeweather cache was not properly primed. Aborting.")
def save_json_cache(index, thermostat_id, station, cache_path=None): """ Saves the cached results from eeweather into a JSON file. Parameters ---------- index : pd.DatetimeIndex hourly index used to compute the years needed. thermostat_id : str A unique identifier for the termostat (used for the filename) station : str Station ID used to retrieve the weather data. cache_path : str Directory path to save the cached data """ if cache_path is None: directory = os.path.join( os.curdir, "epathermostat_weather_data") else: directory = os.path.normpath( cache_path) try: os.mkdir(directory) except OSError as e: if e.errno != errno.EEXIST: raise json_cache = {} sqlite_json_store = KeyValueStore() years = index.groupby(index.year).keys() for year in years: filename = "ISD-{station}-{year}.json".format( station=station, year=year) json_cache[filename] = sqlite_json_store.retrieve_json(filename) thermostat_filename = "{thermostat_id}.json".format(thermostat_id=thermostat_id) thermostat_path = os.path.join(directory, thermostat_filename) try: with open(thermostat_path, 'w') as outfile: json.dump(json_cache, outfile) except Exception as e: warnings.warn("Unable to write JSON file: {}".format(e))
def __init__(self): # create a new test store in a temporary folder self.store = KeyValueStore("sqlite:///{}/cache.db".format(tempfile.mkdtemp()))
def s(): return KeyValueStore("sqlite:///{}/cache.db".format(tempfile.mkdtemp()))