Source code for openmdao.utils.iter_utils

"""
Various utilities for working with iterators.
"""


[docs]def meta2item_iter(metaiter, item): """ Convert a metadata iterator to an iterator over (name, <item>). Parameters ---------- metaiter : iter of (name, meta) Iterator over variable names and their metadata dicts. item : str The item to extract from the metadata. Yields ------ tuple Tuple of (name, <item>) for each variable. """ for name, meta in metaiter: yield name, meta[item]
[docs]def meta2items_iter(metaiter, items): """ Convert a metadata iterator to an iterator over [name, meta[item0], meta[item1], ...]. Parameters ---------- metaiter : iter of (name, meta) Iterator over variable names and their metadata dicts. items : list of str The items to extract from the metadata. Yields ------ list [name, meta[item0], meta[item1], ...] for each variable. """ for name, meta in metaiter: toyield = [name] for item in items: toyield.append(meta[item]) yield toyield
[docs]def size2range_iter(size_iter): """ Convert a size iterator to a range iterator. Parameters ---------- size_iter : iter of (name, size) Iterator over variable names and their sizes. Yields ------ tuple Tuple of (name, (start, end)) for each variable. """ start = 0 for name, size in size_iter: yield name, (start, start + size) start += size