My concern was that if there are two build_post_aggregators() (one in util.aggregators and one in util.postaggregator), the wrong one may be called in client.py. I've convinced myself that this does not happen; however, I still don't understand why you want this level of indirection. What will ever call aggregators.build_post_aggregators()? When will aggregators.build_post_aggregators() be called over postaggregator.build_post_aggregators()? 

I believe there should be two separate and orthogonal functions for building aggregators and postAggregators respectively. If you could convince me otherwise that would be cool!