@rbac(('owner', 'user'))
    def setup_systems(self):
        rgraph = self._reduced_graph

        # create systems for all simple components
        for node, data in rgraph.nodes_iter(data=True):
            if 'comp' in data:
                data['system'] = _create_simple_sys(self, rgraph, node)

        self._top_driver.setup_systems()

        # copy the reduced graph
        rgraph = rgraph.subgraph(rgraph.nodes_iter())

        rgraph.collapse_subdrivers([], [self._top_driver])

        drvname = self._top_driver.name

        if 1 > len(rgraph):
            self._system = SerialSystem(self, rgraph, rgraph.component_graph(),
                                        self.name+'._inner_asm')
            # see if there's a driver cycle (happens when driver has params and
            # constraints/objectives that are boundary vars.)
            # FIXME: if we modify the graph to have to/from edges between a driver and
            # all of its workflow comps, then use strongly connected components to
            # determine full iteration sets, this will never happen.
            for strong in strongly_connected_components(rgraph):
                if drvname in strong:
                    if len(strong) > 1:
                        # break driver input edge
                        for p in rgraph.predecessors(drvname):
                            if p in strong:
                                rgraph.remove_edge(p, drvname)
                                if is_directed_acyclic_graph(rgraph):
                                    break
                    break
            self._system.set_ordering(nx.topological_sort(rgraph), {})
        else:
            # TODO: if top driver has no params/constraints, possibly
            # remove driver system entirely and just go directly to workflow
            # system...
            self._system = rgraph.node[self._top_driver.name]['system']

        for name in self._unexecuted:
            comp = getattr(self, name)
            if has_interface(comp, IDriver) or has_interface(comp, IAssembly):
                comp.setup_systems()
dataset/ETHPy150Open OpenMDAO/OpenMDAO-Framework/openmdao.main/src/openmdao/main/assembly.py/Assembly.setup_systems/swapped operands of `>`