Source code for landlab.core.model_parameter_loader

import os
import re

import yaml

_loader = yaml.SafeLoader

[docs]def load_file_contents(file_like): """Load the contents of a file or file-like object. Parameters ---------- file_like : file_like or str File to load either as a file-like object, path to an existing file, or the contents of a file. Returns ------- str The contents of the file. """ try: contents = except AttributeError: # was a str if os.path.isfile(file_like): with open(file_like) as fp: contents = else: contents = file_like return contents
[docs]def load_params(file_like): """Load parameters from a YAML style file. Parameters ---------- file_like : file_like or str Contents of a parameter file, a file-like object, or the path to a parameter file. Returns ------- dict Parameters as key-value pairs. Examples -------- >>> from landlab.core import load_params >>> contents = \"\"\" ... start: 0. ... stop: 10. ... step: 2. ... \"\"\" >>> params = load_params(contents) >>> isinstance(params, dict) True >>> params['start'], params['stop'], params['step'] (0.0, 10.0, 2.0) """ contents = load_file_contents(file_like) params = yaml.load(contents, Loader=_loader) if not isinstance(params, dict): raise ValueError("parsing of parameter file did not produce a dict-like object") return params