Consider this example:
def gen(): print 'hi mom!' yield 42 print 'not covered' print gen().next()
If I run it without --branch, coverage tells me the first print and yield are executed, but the third print isn't; all as expected.
If I run it with --branch, coverage tells me the first print was executed, but that the yield was not executed at all. Huh?