Source code for torx.fileio.namelist_reader_m

"""Implementation of a reader for Fortran namelists."""
from collections import defaultdict
from os import name
from pathlib import Path
import f90nml
from tempfile import NamedTemporaryFile
from torx.autodoc_decorators_m import autodoc_function

[docs] @autodoc_function def read_fortran_namelist(path: Path): """Read a Fortran namelist using the f90nml module.""" assert path.exists() namelist = f90nml_read_file(path) return convert_dict_to_defaultdict_recursive(namelist)
def f90nml_read_file(filename: Path): """Read a Fortran namelist file and return a dict.""" namelist = f90nml.read(str(filename)).todict() return namelist def convert_dict_to_defaultdict_recursive(input_dict): """Convert all dicts and values into defaults recursively.""" input_dict = defaultdict(list, input_dict) for key, item in input_dict.items(): if isinstance(item, dict): input_dict[key] = convert_dict_to_defaultdict_recursive(item) return input_dict