Idiomatic way to aggregate modules into a single "facade" module
<ol>
<li><p>I want to combine a list of known modules (<code>bar</code>, <code>baz</code>, <code>qux</code>) from different packages into a single module that my application can access as a facade (<code>foo</code>).</p></li>
<li><p>I also want <code>bar</code>, <code>baz</code>, and <code>qux</code> to have control over what it "exports", while <code>foo</code> will have no knowledge of the contents of these modules and will simply "re-export" them.</p></li>
</ol>

<p>For example:</p>

<p>The full contents of foo.py</p>

<pre><code>from somepackage.bar import *
from otherpackage.baz import *
from yetanotherpackage.qux import *
</code></pre>

<p>And partial contents of bar, baz, and qux:</p>

<p>bar.py:</p>

<pre><code>def bar1():
   print "bar1"

__all__ = ["bar1"]
</code></pre>

<p>baz.py:</p>

<pre><code>def baz1():
   print "baz1"

def baz2():
   print "baz1" 

__all__ = ["baz1", "baz2"]
</code></pre>

<p>qux.py:</p>

<pre><code>def qux1():
   print "qux1" 

__all__ = ["qux1"]
</code></pre>

<p>Now when I import foo in my application, I will have access to <code>foo.bar1</code>, <code>foo.baz1</code>, <code>foo.baz2</code>, and <code>foo.qux1</code>.  Which is what I want.</p>

<p>However, there is a stigma associated with using <code>import *</code>, which makes me think there is a possibility that I am overlooking some pitfalls in doing it this way.</p>

<p>Is my example above the idiomatic way to accomplish the two goals above?  Or is there a better way?</p>
