<story><title>Inbox.py: SMTP for Humans</title><url>https://github.com/kennethreitz/inbox.py</url></story><parent_chain><item><author>illumen</author><text>I&apos;m guessing this is not complete?  I&apos;ll review it like it is complete though, since it doesn&apos;t say anywhere if it is or not.&lt;p&gt;I hope no one uses this in production.  Handling SMTP well is all about the edge cases, and this doesn&apos;t seem to handle any of them.&lt;p&gt;This is just a thin wrapper on python stdlib smtpd.SMTPServer, which is itself not production ready.  It also doesn&apos;t really make it easier.  The original API is better.  Why are magic decorators better than inheritance again?&lt;p&gt;Also, monkey patching?  Hidden side effects make sad pandas cry.  Let me throw up a little in my mouth.&lt;p&gt;There are zero unit tests for this, and no functional tests.&lt;p&gt;The original API has better documentation.  What are the to, sender, and body arguments?&lt;p&gt;Below seems a simpler API, and gives you the subject too.  I thought humans would be interested in the subject... but I guess not.&lt;p&gt;&lt;pre&gt;&lt;code&gt;  import inbox
  for m in inbox:
      toprint = m.to, m.from, m.subject, m.body
      print (&quot;to:{} from:{} subject:{} body:{}&quot;.format(toprint))&lt;/code&gt;&lt;/pre&gt;</text></item></parent_chain><comment><author>shazow</author><text>You&apos;re right, it&apos;s a trivial wrapper with a subjective/opinionated usability improvement.&lt;p&gt;I think the biggest service here is&lt;p&gt;1. Education about Python&apos;s pretty decent standard smtpd lib.&lt;p&gt;2. Food for thought about making thin custom interfaces over standard libraries.&lt;p&gt;3. Perhaps inspiration to do more?&lt;p&gt;It&apos;s no Linux kernel, but I enjoyed reading through the source and I feel like I have a better understanding of Python&apos;s smtpd lib and I&apos;ve some of my own ideas for future API design.&lt;p&gt;Additionally, I like your generator-based API proposal. Also inspiring. Need to think more about routing in that context, though.</text></comment>
<story><title>Inbox.py: SMTP for Humans</title><url>https://github.com/kennethreitz/inbox.py</url></story><parent_chain><item><author>illumen</author><text>I&apos;m guessing this is not complete?  I&apos;ll review it like it is complete though, since it doesn&apos;t say anywhere if it is or not.&lt;p&gt;I hope no one uses this in production.  Handling SMTP well is all about the edge cases, and this doesn&apos;t seem to handle any of them.&lt;p&gt;This is just a thin wrapper on python stdlib smtpd.SMTPServer, which is itself not production ready.  It also doesn&apos;t really make it easier.  The original API is better.  Why are magic decorators better than inheritance again?&lt;p&gt;Also, monkey patching?  Hidden side effects make sad pandas cry.  Let me throw up a little in my mouth.&lt;p&gt;There are zero unit tests for this, and no functional tests.&lt;p&gt;The original API has better documentation.  What are the to, sender, and body arguments?&lt;p&gt;Below seems a simpler API, and gives you the subject too.  I thought humans would be interested in the subject... but I guess not.&lt;p&gt;&lt;pre&gt;&lt;code&gt;  import inbox
  for m in inbox:
      toprint = m.to, m.from, m.subject, m.body
      print (&quot;to:{} from:{} subject:{} body:{}&quot;.format(toprint))&lt;/code&gt;&lt;/pre&gt;</text></item></parent_chain><comment><author>mmerickel</author><text>I don&apos;t understand why the library chooses to require gevent. That&apos;s a large dependency for an API that might be useful otherwise. That should really be up to the user since it looks like it&apos;d work fine in its own thread or standalone.</text></comment>