Talin wrote: > It seems to me that no matter how you slice it, you can't have an > abstract "buffering" layer that is independent of both the layer beneath > and the layer above. Both the text decoding layer and the disk i/o layer > need to have fairly intimate knowledge of their buffers if you want > maximum efficiency. (I'm not opposed to a custom implementation of > buffering in the level 1 file object itself, although I suspect in most > cases you'd be better off using what the OS or its standard libs provide.)
You'd insert a buffering layer at the appropriate point for whatever you're trying to do. The advantage of pulling the buffering out into a separate layer is that it can be reused with different byte sources & sinks by supplying the appropriate configuration parameters, instead of having to reimplement it for each different source/sink. Applications generally won't be expected to construct these IO stacks manually. File IO stacks, for example, will most likely still be created by a call to the open() builtin (although the default mode may change to be binary if no text encoding is specified). Here's a list of the IO stacks I believe will be commonly used: Unbuffered byte IO stack: - byte stream API - byte source/sink Block buffered byte IO stack: - byte stream API - block buffering layer - byte source/sink Character buffered text IO stack: - text stream API - text codec layer - byte source/sink (effectively unbuffered for single byte encodings like ASCII) Block buffered text IO stack: - text stream API - text codec layer - block buffering - byte source/sink Line buffered text IO stack: - text stream API - line buffering - text codec layer - block buffering - byte source/sink Cheers, Nick. -- Nick Coghlan | [EMAIL PROTECTED] | Brisbane, Australia --------------------------------------------------------------- http://www.boredomandlaziness.org _______________________________________________ Python-3000 mailing list Python-3000@python.org http://mail.python.org/mailman/listinfo/python-3000 Unsubscribe: http://mail.python.org/mailman/options/python-3000/archive%40mail-archive.com