Compiling a regex with the `re.DEBUG` flag indicates that the user wants to see the debug output. `re.compile` is cached, though, so there is the possibility of no output. Example: import re re.compile('1',re.DEBUG) #expected output re.compile('1',re.DEBUG) #no output re.compile('',re.DEBUG) #no output (empty regex) The workaround is to call `re.purge()`, which may remove other cached regexes that are still in use. (Background: I wanted to check for equivalence of regexes, and a StackOverflow answer suggested comparing their `re.DEBUG`. http://stackoverflow.com/a/21398362/2963903)
A simple workaround is to bypass the cache when DEBUG is passed. See attached patch. (not sure this applies as a bug fix, but DEBUG probably isn't used in production anyway: the potential for breakage is low)
New changeset a7b180d5df5f by Antoine Pitrou in branch '3.3': Issue #20426: When passing the re.DEBUG flag, re.compile() displays the debug output every time it is called, regardless of the compilation cache. http://hg.python.org/cpython/rev/a7b180d5df5f New changeset a8bcfa290e68 by Antoine Pitrou in branch 'default': Issue #20426: When passing the re.DEBUG flag, re.compile() displays the debug output every time it is called, regardless of the compilation cache. http://hg.python.org/cpython/rev/a8bcfa290e68
New changeset e47f6883dedf by Antoine Pitrou in branch '2.7': Issue #20426: When passing the re.DEBUG flag, re.compile() displays the debug output every time it is called, regardless of the compilation cache. http://hg.python.org/cpython/rev/e47f6883dedf