def _get_all_var_metadata(self, graph):
        """Collect size, shape, etc. info for all variables referenced
        in the graph.  This info can then be used by all subsystems
        contained in this Assembly.
        """
        varmeta = self._var_meta
        for node, data in graph.nodes_iter(data=True):
            if node not in varmeta and 'comp' not in data:
                meta = self._get_var_info(node)
                self._update_varmeta(node, meta)

        # there are cases where a component will return names from
        # its list_deriv_vars that are not found in the graph, so add them
        # all here just in case
        for node, data in graph.nodes_iter(data=True):
            if data in 'comp' and '.' not in node:
                try:
                    comp = getattr(self, node)
                    ins, outs = comp.list_deriv_vars()
                except AttributeError:
                    continue
                for name in chain(ins, outs):
                    name = '.'.join((node, name))
                    if name not in varmeta:
                        varmeta[name] = self._get_var_info(name)
dataset/ETHPy150Open OpenMDAO/OpenMDAO-Framework/openmdao.main/src/openmdao/main/assembly.py/Assembly._get_all_var_metadata/swapped operands of `in`