[Email-SIG] API thoughts

Steffen Daode Nurpmeso sdaoden at googlemail.com
Thu Mar 3 16:28:32 CET 2011


On Wed, Mar 02, 2011 at 07:50:20PM -0500, R. David Murray wrote:
> That is, if the defects list is non-empty,
> the message is technically malformed.  Of course, that information by
> itself isn't necessarily useful, which is why defects is a list
> of defects.
> "is_processable" lies in the eyes of the application.
> What defects is it capable of dealing with?  The email package
> can't know that.  So, again, that's why defects is a list.
> 
> Let me clarify what I mean by the policy controlling "what, exactly, is
> a defect".  The idea here is that when parsing an email, each deviance
> from the RFCs counts as a defect (the current email package, by the way,
> only detects a small number of such defects!).  But when parsing, say,
> an http stream, non-ascii characters in headers are perfectly legal.
> So it seems to make sense that the HTTP policy would change what counts
> as a defect during the operation of the parser.

So i would hope for '.all_defects[]' and (policy-adjusted) 
'.defects[]'.  I would hope for 
'.had_header_defects(policy_only=True)', 
'.had_payload_defects(policy_only=True)'.

Doing so would fill the huge hole in between 'not len(defects)' 
and the detailed inspection of a defects list which consists of 
a highly differentiated tree of classes.

The parser has to parse- and does encounter all of these anyway, 
and an application cannot re-collect this (dropped) information 
except with expensive effort, i.e. at least choosing a different, 
stricter policy followed by another parse of the bogus mail.

In the end it is my believe that a framework should bring light 
onto all aspects of a thing, such that no other framework is ever 
needed, but especially not on a lower level (except the framework 
is so designed that it allows replacement of its own low-level 
interface, say). 
And i don't think there can be a higher level interface than 
message_from_(bytes|string)().


More information about the Email-SIG mailing list