Source code for fv3config.config.namelist

import os
import f90nml
from .._exceptions import InvalidFileError


[docs]def config_to_namelist(config, namelist_filename): """Write the namelist of a configuration dictionary to a namelist file. Args: config (dict): a configuration dictionary namelist_filename (str): filename to write, will be overwritten if present """ if os.path.isfile(namelist_filename): os.remove(namelist_filename) f90nml.write(config["namelist"], namelist_filename)
[docs]def config_from_namelist(namelist_filename): """Read a configuration dictionary from a namelist file. Only reads the namelist configuration. Args: namelist_filename (str): a namelist filename Returns: return_dict (dict): a configuration dictionary Raises: InvalidFileError: if the specified filename does not exist """ try: return_dict = _to_nested_dict(f90nml.read(namelist_filename).items()) except FileNotFoundError: raise InvalidFileError(f"namelist {namelist_filename} does not exist") return return_dict
def _to_nested_dict(source): return_value = dict(source) for name, value in return_value.items(): if isinstance(value, f90nml.Namelist): return_value[name] = _to_nested_dict(value) return return_value