On Mon, Jan 6, 2014 at 8:59 AM, Antoine Pitrou <solipsis@pitrou.net> wrote:
On Tue, 7 Jan 2014 00:54:17 +1100 Chris Angelico <rosuav@gmail.com> wrote:
On Tue, Jan 7, 2014 at 12:44 AM, Antoine Pitrou <solipsis@pitrou.net> wrote:
BTW, there's a subtlety here: ``%s`` currently means "insert the result of calling __str__", but bytes formatting should *not* call __str__.
Since it derives from the C printf notation, it means "insert string here". The fact that __str__ will be called is secondary to that. I would say it's not a problem for bytes formatting to call __bytes__, or in some other way convert to bytes without calling __str__.
Will it be confusing to have bytes and str supporting distinctly different format operations? Might it be better to instead create a separate and very different method on a bytes, just to emphasize the difference?
The people who want bytes formatting, AFAICT, want something that is reasonably 2.x-compatible. That means using the same method / operator and calling conventions.
Right, but that also doesn't mean that a library from the Cheeseshop couldn't be provided which works around any Python 2/3 differences. But my suspicion is anyone requesting this feature (e.g. Mercurial) want it implemented in C for performance and so some pure Python library to help with this won't get any traction.