title: Using Design by Contract in Python
body: <p>I am looking to start using DBC on a large number of Python-based projects at work and am wondering what experiences others have had with it. So far my research turned up the following:</p>
  
  <ul>
  <li><a href="http://www.python.org/dev/peps/pep-0316/" rel="noreferrer">http://www.python.org/dev/peps/pep-0316/</a> - PEP 316 that is supposed to standardize design by contract for Python which has been deferred. This PEP suggests using docstrings.</li>
  <li><a href="http://www.wayforward.net/pycontract/" rel="noreferrer">http://www.wayforward.net/pycontract/</a> - Contracts for Python. This seems to be a complete, but unmaintained framework using docstrings.</li>
  <li><a href="http://www.nongnu.org/pydbc/" rel="noreferrer">http://www.nongnu.org/pydbc/</a> - PyDBC which implements contracts using metaclasses. Also unmaintained for a few years.</li>
  </ul>
  
  <p>My questions are: have you used DBC with Python for mature production code? How well did it work/was it worth the effort? Which tools would you recommend? </p>