title: usage of __init__.py
body: <p>I use <code>__init__.py</code> to run checks when I do <code>from myprojects.something import blabla</code>.</p>
  
  <p>Today I started using <code>pyzmq</code> and I wanted to see what's going on behind the scenes. So I browsed the code in github and I find (for me) some strange usage of <code>__init__.py</code> there that I cannot explain myself.</p>
  
  <p>For example <a href="https://github.com/zeromq/pyzmq/blob/master/zmq/core/__init__.py" rel="noreferrer"><code>zmq/core/__init__.py</code></a>. What's the point of adding in <code>zmq.core.__all__</code> the <code>__all__</code>'s value of <code>zmq.core.constants, zmq.core.error, zmq.core.message, etc.</code>?</p>
  
  <p>In <a href="https://github.com/zeromq/pyzmq/blob/master/zmq/__init__.py" rel="noreferrer"><code>zmq/__init__.py</code></a> I see at the end</p>
  
  <pre><code>__all__ = ['get_includes'] + core.__all__
  </code></pre>
  
  <p>where <code>get_includes</code> is a function which basically returns a list with the directory of the module and the utils directory in the parent directory.</p>
  
  <p>What's the point of that? What has <code>__init.py__</code> achieved by doing that?</p>