Source code for mescal.caching

import pickle
from pathlib import Path
from .filesystem_constants import DIR_DATABASE_CACHE


[docs] def cache_database(database: list[dict], database_name: str) -> None: """ Create a pickle file to store the database :param database: database to store :param database_name: name of the database :return: None """ Path(DIR_DATABASE_CACHE).mkdir(parents=True, exist_ok=True) with open(DIR_DATABASE_CACHE / f"{database_name}.pickle", "wb") as output_file: pickle.dump(database, output_file) print(f"{database_name}.pickle created!")
[docs] def load_db(database_name: str, filepath: str = None) -> list[dict]: """ Load a database from a pickle file :param database_name: name of the database :param filepath: path to the pickle file :return: database """ if filepath is None: filepath = DIR_DATABASE_CACHE / f"{database_name}.pickle" with open(filepath, "rb") as input_file: db = pickle.load(input_file) if 'biosphere' not in database_name: for ds in db: if "categories" in ds: del ds["categories"] return db