On Mar 07, 2011, at 09:06 PM, Steffen Daode Nurpmeso wrote: >I find the interface a bit inconsistent in respect to >replace_header() (replaces the first header found), __delitem__() >(drops them all), __setitem__() (appends) in any case. >(I personally would through these __accessor__ things away, they >taste a bit strange when used to access email payload.)
I personally like this part of the API, and I think it's held up well under years of use. In general you don't care about header order, so using various combinations of del, .get_all(), and __setitem__ work fine. The semantics of message-as-dict API, header ordering, the various header methods, etc. was thought out and discussed, and I don't have a problem with them. >And i would provide a series of functions which can be used >to get/set/modify header fields and bodies: >i would check wether the argument is a list and if, it would mean >"all bodies of a field". This is of course very hard to implement >if it's done gracefully, i.e. with modification-detection, >order-preservation etc. > >Another, easier to implement, idea would be (yet) an(other) >iterator which supports in-place editing. Perfect: it could yield >a (to be invented) class which offers methods like .field(), >.bodies() (all [bodies] - maybe even as sub-iterator), >.remove_field() etc... >Doing it like this would offer the possibility to easily detect >in-place editing of header bodies etc... > >All of these are just suggestions and my very personal point of >view, of course. >But one thing is true, and that's that it is currently really hard >to remove or replace just one body of a field, especially if there >are multiple bodies for a field. Well, replace one header retaining original order is a bit difficult, but I've rarely had to do that. Still, it would probably make sense to add such functionality -- *if* it can be done without complicating the API or the implementation. I think it could too, by adding an index argument to .replace_header(), and using .get_all() to get an ordered list of the headers of interest. Cheers, -Barry
signature.asc
Description: PGP signature
_______________________________________________ Email-SIG mailing list Email-SIG@python.org Your options: http://mail.python.org/mailman/options/email-sig/archive%40mail-archive.com