<p>A couple of people at PyCon Au mentioned running into this kind of issue with Python 3. It relates to the fact that:<br>
1. String formatting is *coercive* by default<br>
2. Absolutely everything, including bytes objects can be coerced to a string, due to the repr() fallback</p>
<p>So it's relatively easy to miss a decode or encode operation, and end up interpolating an unwanted "b" prefix and some quotes.</p>
<p>For existing versions, I think the easiest answer is to craft a regex that matches bytes object repr's and advise people to check that it *doesn’t* match their formatted strings in their unit tests.</p>
<p>For 3.4+ a non-coercive string interpolation format code may be desirable.</p>
<p>Cheers,<br>
Nick.</p>
<p>--<br>
Sent from my phone, thus the relative brevity :) </p>