)]}'
{"subunit2sql/read_subunit.py":[{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"9f9a722b437d77982c98b1e36932a2d39df809a0","unresolved":false,"context_lines":[{"line_number":36,"context_line":"    def __init__(self, stream_file, attachments\u003dFalse, attr_regex\u003dNone,"},{"line_number":37,"context_line":"                 targets\u003dNone):"},{"line_number":38,"context_line":"        if targets is None:"},{"line_number":39,"context_line":"            targets \u003d []"},{"line_number":40,"context_line":"        self.stream_file \u003d stream_file"},{"line_number":41,"context_line":"        self.stream \u003d subunit.ByteStreamToStreamResult(stream_file)"},{"line_number":42,"context_line":"        starts \u003d testtools.StreamResult()"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa80f949_48e07c96","line":39,"updated":"2015-11-06 18:17:29.000000000","message":"Probably want an\n\n else:\n     targets \u003d list(targets)\n\nor just\n\n targets \u003d list(targets) if targets else []\n\nThe list() is so that we don\u0027t mutate the parameter","commit_id":"9cfb21bf26a2a99067f13edb9d096afed60a3335"}],"subunit2sql/shell.py":[{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"9f9a722b437d77982c98b1e36932a2d39df809a0","unresolved":false,"context_lines":[{"line_number":162,"context_line":"        return ext.plugin.enabled()"},{"line_number":163,"context_line":"    extensions \u003d enabled.EnabledExtensionManager(\u0027subunit2sql.target\u0027,"},{"line_number":164,"context_line":"                                                 check_func\u003dcheck_enabled,"},{"line_number":165,"context_line":"                                                 verify_requirements\u003dTrue)"},{"line_number":166,"context_line":"    parse_args(sys.argv)"},{"line_number":167,"context_line":"    try:"},{"line_number":168,"context_line":"        targets \u003d list(extensions.map(lambda ext: ext.plugin()))"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa80f949_c8ea2c74","line":165,"updated":"2015-11-06 18:17:29.000000000","message":"verify_requirements should be False. Using True has killed us with requirements conflicts in the past.","commit_id":"9cfb21bf26a2a99067f13edb9d096afed60a3335"},{"author":{"_account_id":6488,"name":"Clint Byrum","email":"clint@fewbar.com","username":"clint-fewbar"},"change_message_id":"5a3ff3ab7228912339573004c468e1ccc503127f","unresolved":false,"context_lines":[{"line_number":162,"context_line":"        return ext.plugin.enabled()"},{"line_number":163,"context_line":"    extensions \u003d enabled.EnabledExtensionManager(\u0027subunit2sql.target\u0027,"},{"line_number":164,"context_line":"                                                 check_func\u003dcheck_enabled,"},{"line_number":165,"context_line":"                                                 verify_requirements\u003dTrue)"},{"line_number":166,"context_line":"    parse_args(sys.argv)"},{"line_number":167,"context_line":"    try:"},{"line_number":168,"context_line":"        targets \u003d list(extensions.map(lambda ext: ext.plugin()))"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa80f949_1b6080ce","line":165,"in_reply_to":"fa80f949_c8ea2c74","updated":"2015-11-06 18:30:12.000000000","message":"ACK","commit_id":"9cfb21bf26a2a99067f13edb9d096afed60a3335"},{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"9f9a722b437d77982c98b1e36932a2d39df809a0","unresolved":false,"context_lines":[{"line_number":166,"context_line":"    parse_args(sys.argv)"},{"line_number":167,"context_line":"    try:"},{"line_number":168,"context_line":"        targets \u003d list(extensions.map(lambda ext: ext.plugin()))"},{"line_number":169,"context_line":"    except RuntimeError:"},{"line_number":170,"context_line":"        targets \u003d []"},{"line_number":171,"context_line":"    if CONF.subunit_files:"},{"line_number":172,"context_line":"        if len(CONF.subunit_files) \u003e 1 and CONF.run_id:"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa80f949_289178f1","line":169,"updated":"2015-11-06 18:17:29.000000000","message":"When would extensions.map be expected to error with RuntimeError?","commit_id":"9cfb21bf26a2a99067f13edb9d096afed60a3335"},{"author":{"_account_id":6488,"name":"Clint Byrum","email":"clint@fewbar.com","username":"clint-fewbar"},"change_message_id":"5a3ff3ab7228912339573004c468e1ccc503127f","unresolved":false,"context_lines":[{"line_number":166,"context_line":"    parse_args(sys.argv)"},{"line_number":167,"context_line":"    try:"},{"line_number":168,"context_line":"        targets \u003d list(extensions.map(lambda ext: ext.plugin()))"},{"line_number":169,"context_line":"    except RuntimeError:"},{"line_number":170,"context_line":"        targets \u003d []"},{"line_number":171,"context_line":"    if CONF.subunit_files:"},{"line_number":172,"context_line":"        if len(CONF.subunit_files) \u003e 1 and CONF.run_id:"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa80f949_7b674ce9","line":169,"in_reply_to":"fa80f949_289178f1","updated":"2015-11-06 18:30:12.000000000","message":"When there are no extensions. I don\u0027t fully understand that behavior, and forgot to dive back in before pushing this up. If there were a flag that said \"don\u0027t try to map because there are no extensions\", or better, if it just returned an empty list, that\u0027d be great. It\u0027s not actually listed in stevedore\u0027s docs that I can see, so it may well be a bug, but I\u0027m fine with treating it like a feature until told otherwise. :-P","commit_id":"9cfb21bf26a2a99067f13edb9d096afed60a3335"}]}
