title: How to document and use enum-like data types in Python?
body: <p>Let's assume that the current code is using strings for parameters and you want to document their valid values.</p>
  
  <p>Example</p>
  
  <pre><code>def MyFunc(region = None):
      if region in ['A','B','C', None]:
          # dosomething
      else:
          # complain about invalid parameter
  </code></pre>
  
  <p>Now the question is how can I improve this design in order to solve two problems:</p>
  
  <ul>
  <li><p>be able to use the auto-complete functionality in IDEs to auto-complete with possible values for the parameter.</p></li>
  <li><p>document the list of valid values for the parameter (currently the code is documented using doxygen)</p></li>
  </ul>