def make_sink_proxies(drivers):
sink_proxies = OrderedDict()<EOL>if drivers is not None:<EOL><INDENT>for driver_name in drivers._fields:<EOL><INDENT>driver = getattr(drivers, driver_name)<EOL>driver_sink = getattr(driver, '<STR_LIT:input>')<EOL>if driver_sink is not None:<EOL><INDENT>driver_sink_proxies = OrderedDict()<EOL>for name in driver_sink._fields:<EOL><INDENT>driver_sink_proxies[name] = Subject()<EOL><DEDENT>sink_proxies[driver_name] = driver.input(**driver_sink_proxies)<EOL><DEDENT><DEDENT><DEDENT>return sink_proxies<EOL>
Build a list of sink proxies. sink proxies are a two-level ordered
    dictionary. The first level contains the lst of drivers, and the second
    level contains the list of sink proxies for each driver:

    drv1-->sink1
      | |->sink2
      |
    drv2-->sink1
        |->sink2