Yes, that's basically what is already the case with Python 3. (you might have to put it in two places because of how things are currently set up). So are you thinking you'd always read StringIO fully (or at least one line) and then handle appropriately (remember there are both cStringIO and StringIO in Python 2)? then after that you could use TextIOWrapper, right?