)]}'
{"bandit/bandit.py":[{"author":{"_account_id":11861,"name":"Travis McPeak","email":"tmcpeak@us.ibm.com","username":"travis-mcpeak"},"change_message_id":"87fae9c10d0427e8949cfa719db52b8a184cb379","unresolved":false,"context_lines":[{"line_number":89,"context_line":"            \u0027Problem with specified output destination\\n\\t%s: %s\u0027,"},{"line_number":90,"context_line":"            check_dest, args.output_file"},{"line_number":91,"context_line":"        )"},{"line_number":92,"context_line":"        sys.exit(1)"},{"line_number":93,"context_line":"    b_mgr.discover_files(args.targets, args.recursive)"},{"line_number":94,"context_line":"    b_mgr.run_tests()"},{"line_number":95,"context_line":"    if args.debug:"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a80dd14_841a7c7a","line":92,"updated":"2015-03-17 21:05:23.000000000","message":"we should use sys.exit(2) here, since we had an error","commit_id":"6aea2698334bf869e73452b63d0bb21c98d43c86"},{"author":{"_account_id":11029,"name":"Jamie Finnigan","email":"jamiefinnigan@gmail.com","username":"jamiefinnigan"},"change_message_id":"c0ca7bb03635d77514dbea51030d32ad27894e6a","unresolved":false,"context_lines":[{"line_number":89,"context_line":"            \u0027Problem with specified output destination\\n\\t%s: %s\u0027,"},{"line_number":90,"context_line":"            check_dest, args.output_file"},{"line_number":91,"context_line":"        )"},{"line_number":92,"context_line":"        sys.exit(1)"},{"line_number":93,"context_line":"    b_mgr.discover_files(args.targets, args.recursive)"},{"line_number":94,"context_line":"    b_mgr.run_tests()"},{"line_number":95,"context_line":"    if args.debug:"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a80dd14_5b4f7e34","line":92,"in_reply_to":"9a80dd14_841a7c7a","updated":"2015-03-17 21:38:22.000000000","message":"Done","commit_id":"6aea2698334bf869e73452b63d0bb21c98d43c86"},{"author":{"_account_id":7063,"name":"Robert Clark","email":"hyakuhei@gmail.com","username":"hyakuhei"},"change_message_id":"924c8f91eec210cfe20b73267f521172a4e92421","unresolved":false,"context_lines":[{"line_number":82,"context_line":"    b_mgr \u003d b_manager.BanditManager(args.config_file, args.agg_type,"},{"line_number":83,"context_line":"                                    args.debug, profile_name\u003dargs.profile)"},{"line_number":84,"context_line":"    # we getLogger() here because BanditManager has configured it at this point"},{"line_number":85,"context_line":"    logger \u003d logging.getLogger()"},{"line_number":86,"context_line":"    check_dest \u003d b_mgr.check_output_destination(args.output_file)"},{"line_number":87,"context_line":"    if check_dest is not True:"},{"line_number":88,"context_line":"        logger.error("}],"source_content_type":"text/x-python","patch_set":2,"id":"9a80dd14_5ba77ea7","line":85,"updated":"2015-03-17 21:43:49.000000000","message":"Seems like an odd place to put it but mmmkay.","commit_id":"1848100fe6480c188f79b1c0f6a329703e0c8f1c"},{"author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"change_message_id":"955319ef007ee89093dd9b7d9590de6b51c915ee","unresolved":false,"context_lines":[{"line_number":83,"context_line":"                                    args.debug, profile_name\u003dargs.profile)"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    # we getLogger() here because BanditManager has configured it at this point"},{"line_number":86,"context_line":"    logger \u003d logging.getLogger()"},{"line_number":87,"context_line":"    check_dest \u003d b_mgr.check_output_destination(args.output_file)"},{"line_number":88,"context_line":"    if check_dest is not True:"},{"line_number":89,"context_line":"        logger.error("}],"source_content_type":"text/x-python","patch_set":3,"id":"9a80dd14_7d5fd275","line":86,"updated":"2015-03-18 00:51:03.000000000","message":"logger is only used within the below if block, might as well move to inside it, unless it would be used elsewhere.","commit_id":"a87ffa394937fb8e2e7cc177669b52fc2136f2ca"},{"author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"change_message_id":"4b979b1cf9d9e0b3c5e9cd2c2e6d6604e04ea8dd","unresolved":false,"context_lines":[{"line_number":83,"context_line":"                                    args.debug, profile_name\u003dargs.profile)"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    # we getLogger() here because BanditManager has configured it at this point"},{"line_number":86,"context_line":"    logger \u003d logging.getLogger()"},{"line_number":87,"context_line":"    check_dest \u003d b_mgr.check_output_destination(args.output_file)"},{"line_number":88,"context_line":"    if check_dest is not True:"},{"line_number":89,"context_line":"        logger.error("}],"source_content_type":"text/x-python","patch_set":3,"id":"9a80dd14_7b435513","line":86,"in_reply_to":"9a80dd14_6ab5457d","updated":"2015-03-18 05:18:07.000000000","message":"In this patch or later?","commit_id":"a87ffa394937fb8e2e7cc177669b52fc2136f2ca"},{"author":{"_account_id":11029,"name":"Jamie Finnigan","email":"jamiefinnigan@gmail.com","username":"jamiefinnigan"},"change_message_id":"55d1dadeb8a074a02a1b280f0b95525bd82e86c7","unresolved":false,"context_lines":[{"line_number":83,"context_line":"                                    args.debug, profile_name\u003dargs.profile)"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    # we getLogger() here because BanditManager has configured it at this point"},{"line_number":86,"context_line":"    logger \u003d logging.getLogger()"},{"line_number":87,"context_line":"    check_dest \u003d b_mgr.check_output_destination(args.output_file)"},{"line_number":88,"context_line":"    if check_dest is not True:"},{"line_number":89,"context_line":"        logger.error("}],"source_content_type":"text/x-python","patch_set":3,"id":"9a80dd14_54dad1e9","line":86,"in_reply_to":"9a80dd14_7b435513","updated":"2015-03-18 13:49:16.000000000","message":"Hopefully sooner than later, but not in this patch.","commit_id":"a87ffa394937fb8e2e7cc177669b52fc2136f2ca"},{"author":{"_account_id":11029,"name":"Jamie Finnigan","email":"jamiefinnigan@gmail.com","username":"jamiefinnigan"},"change_message_id":"6a87fed36401b877bd708d0aaf38da03d69f8877","unresolved":false,"context_lines":[{"line_number":83,"context_line":"                                    args.debug, profile_name\u003dargs.profile)"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    # we getLogger() here because BanditManager has configured it at this point"},{"line_number":86,"context_line":"    logger \u003d logging.getLogger()"},{"line_number":87,"context_line":"    check_dest \u003d b_mgr.check_output_destination(args.output_file)"},{"line_number":88,"context_line":"    if check_dest is not True:"},{"line_number":89,"context_line":"        logger.error("}],"source_content_type":"text/x-python","patch_set":3,"id":"9a80dd14_6ab5457d","line":86,"in_reply_to":"9a80dd14_7d5fd275","updated":"2015-03-18 03:32:49.000000000","message":"I\u0027m thinking I\u0027ll add some of the other error handling that you mentioned in the bug you filed below, and will need the logger for that.","commit_id":"a87ffa394937fb8e2e7cc177669b52fc2136f2ca"},{"author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"change_message_id":"955319ef007ee89093dd9b7d9590de6b51c915ee","unresolved":false,"context_lines":[{"line_number":86,"context_line":"    logger \u003d logging.getLogger()"},{"line_number":87,"context_line":"    check_dest \u003d b_mgr.check_output_destination(args.output_file)"},{"line_number":88,"context_line":"    if check_dest is not True:"},{"line_number":89,"context_line":"        logger.error("},{"line_number":90,"context_line":"            \u0027Problem with specified output destination\\n\\t%s: %s\u0027,"},{"line_number":91,"context_line":"            check_dest, args.output_file"},{"line_number":92,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a80dd14_fd8742b4","line":89,"updated":"2015-03-18 00:51:03.000000000","message":"Shouldn\u0027t check_dest be printed or does the logger.error statement print to stdout?","commit_id":"a87ffa394937fb8e2e7cc177669b52fc2136f2ca"},{"author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"change_message_id":"4b979b1cf9d9e0b3c5e9cd2c2e6d6604e04ea8dd","unresolved":false,"context_lines":[{"line_number":86,"context_line":"    logger \u003d logging.getLogger()"},{"line_number":87,"context_line":"    check_dest \u003d b_mgr.check_output_destination(args.output_file)"},{"line_number":88,"context_line":"    if check_dest is not True:"},{"line_number":89,"context_line":"        logger.error("},{"line_number":90,"context_line":"            \u0027Problem with specified output destination\\n\\t%s: %s\u0027,"},{"line_number":91,"context_line":"            check_dest, args.output_file"},{"line_number":92,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a80dd14_9b49e934","line":89,"in_reply_to":"9a80dd14_4a65e11b","updated":"2015-03-18 05:18:07.000000000","message":"Ok, cool","commit_id":"a87ffa394937fb8e2e7cc177669b52fc2136f2ca"},{"author":{"_account_id":11029,"name":"Jamie Finnigan","email":"jamiefinnigan@gmail.com","username":"jamiefinnigan"},"change_message_id":"6a87fed36401b877bd708d0aaf38da03d69f8877","unresolved":false,"context_lines":[{"line_number":86,"context_line":"    logger \u003d logging.getLogger()"},{"line_number":87,"context_line":"    check_dest \u003d b_mgr.check_output_destination(args.output_file)"},{"line_number":88,"context_line":"    if check_dest is not True:"},{"line_number":89,"context_line":"        logger.error("},{"line_number":90,"context_line":"            \u0027Problem with specified output destination\\n\\t%s: %s\u0027,"},{"line_number":91,"context_line":"            check_dest, args.output_file"},{"line_number":92,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a80dd14_4a65e11b","line":89,"in_reply_to":"9a80dd14_fd8742b4","updated":"2015-03-18 03:32:49.000000000","message":"The logger.error() call will be printed to stdout.","commit_id":"a87ffa394937fb8e2e7cc177669b52fc2136f2ca"},{"author":{"_account_id":11861,"name":"Travis McPeak","email":"tmcpeak@us.ibm.com","username":"travis-mcpeak"},"change_message_id":"882cedf26113d3f17d7c7a24875f61bc3bebbd83","unresolved":false,"context_lines":[{"line_number":100,"context_line":"    if args.debug:"},{"line_number":101,"context_line":"        b_mgr.output_metaast()"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"    # trigger output of results by Bandit Manager"},{"line_number":104,"context_line":"    b_mgr.output_results(args.context_lines, args.level - 1, args.output_file,"},{"line_number":105,"context_line":"                         args.output_format)"},{"line_number":106,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9a80dd14_f1c21385","line":103,"updated":"2015-03-17 22:26:52.000000000","message":"I \u003c3 comments","commit_id":"a87ffa394937fb8e2e7cc177669b52fc2136f2ca"}],"bandit/core/manager.py":[{"author":{"_account_id":11861,"name":"Travis McPeak","email":"tmcpeak@us.ibm.com","username":"travis-mcpeak"},"change_message_id":"87fae9c10d0427e8949cfa719db52b8a184cb379","unresolved":false,"context_lines":[{"line_number":171,"context_line":"                with open(output_filename, \u0027w\u0027) as fin:"},{"line_number":172,"context_line":"                    pass"},{"line_number":173,"context_line":"            except IOError:"},{"line_number":174,"context_line":"                return (\u0027Specified destination is not writable\u0027)"},{"line_number":175,"context_line":"        return True"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"    def run_tests(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a80dd14_784c4877","line":174,"updated":"2015-03-17 21:05:23.000000000","message":"make return parenthesis usage consistent with above please","commit_id":"6aea2698334bf869e73452b63d0bb21c98d43c86"},{"author":{"_account_id":11029,"name":"Jamie Finnigan","email":"jamiefinnigan@gmail.com","username":"jamiefinnigan"},"change_message_id":"c0ca7bb03635d77514dbea51030d32ad27894e6a","unresolved":false,"context_lines":[{"line_number":171,"context_line":"                with open(output_filename, \u0027w\u0027) as fin:"},{"line_number":172,"context_line":"                    pass"},{"line_number":173,"context_line":"            except IOError:"},{"line_number":174,"context_line":"                return (\u0027Specified destination is not writable\u0027)"},{"line_number":175,"context_line":"        return True"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"    def run_tests(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a80dd14_9b6016a6","line":174,"in_reply_to":"9a80dd14_784c4877","updated":"2015-03-17 21:38:22.000000000","message":"Done","commit_id":"6aea2698334bf869e73452b63d0bb21c98d43c86"},{"author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"change_message_id":"955319ef007ee89093dd9b7d9590de6b51c915ee","unresolved":false,"context_lines":[{"line_number":169,"context_line":"            # case where specified destination is not writable"},{"line_number":170,"context_line":"            try:"},{"line_number":171,"context_line":"                fin \u003d open(output_filename, \u0027w\u0027)"},{"line_number":172,"context_line":"                fin.close()"},{"line_number":173,"context_line":"            except IOError:"},{"line_number":174,"context_line":"                return \u0027Specified destination is not writable\u0027"},{"line_number":175,"context_line":"        return True"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a80dd14_1dfc163f","line":172,"updated":"2015-03-18 00:51:03.000000000","message":"Final is not closed if exception is raised.  Typically the close is put in a finally or \u0027with\u0027 context is used.","commit_id":"a87ffa394937fb8e2e7cc177669b52fc2136f2ca"},{"author":{"_account_id":11029,"name":"Jamie Finnigan","email":"jamiefinnigan@gmail.com","username":"jamiefinnigan"},"change_message_id":"6a87fed36401b877bd708d0aaf38da03d69f8877","unresolved":false,"context_lines":[{"line_number":169,"context_line":"            # case where specified destination is not writable"},{"line_number":170,"context_line":"            try:"},{"line_number":171,"context_line":"                fin \u003d open(output_filename, \u0027w\u0027)"},{"line_number":172,"context_line":"                fin.close()"},{"line_number":173,"context_line":"            except IOError:"},{"line_number":174,"context_line":"                return \u0027Specified destination is not writable\u0027"},{"line_number":175,"context_line":"        return True"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a80dd14_ca1e3174","line":172,"in_reply_to":"9a80dd14_1dfc163f","updated":"2015-03-18 03:32:49.000000000","message":"There were a few different ways I tried this before submitting the review.\n\nLong story short, this felt like the cleanest way to write it to me.\n\n - If the open() call results in an exception, I think the file handle won\u0027t be opened anyway so the close() would be a nullop?\n\n - If I use my preferred \u0027with open() as fin\u0027 then I have to actually use fin after it\u0027s defined or PEP8 complains.  I guess I could call fin.close() inside the with, but that feels less \u0027Pythonic\u0027 than this.\n\n - If I use try/finally, then I need to define fin outside the try.  Looked less right.\n\n - I also looked at using os.access() but that got complicated quickly.","commit_id":"a87ffa394937fb8e2e7cc177669b52fc2136f2ca"},{"author":{"_account_id":11029,"name":"Jamie Finnigan","email":"jamiefinnigan@gmail.com","username":"jamiefinnigan"},"change_message_id":"55d1dadeb8a074a02a1b280f0b95525bd82e86c7","unresolved":false,"context_lines":[{"line_number":169,"context_line":"            # case where specified destination is not writable"},{"line_number":170,"context_line":"            try:"},{"line_number":171,"context_line":"                fin \u003d open(output_filename, \u0027w\u0027)"},{"line_number":172,"context_line":"                fin.close()"},{"line_number":173,"context_line":"            except IOError:"},{"line_number":174,"context_line":"                return \u0027Specified destination is not writable\u0027"},{"line_number":175,"context_line":"        return True"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a80dd14_343e3ddb","line":172,"in_reply_to":"9a80dd14_5b405107","updated":"2015-03-18 13:49:16.000000000","message":"Nice, will be in next patchset.","commit_id":"a87ffa394937fb8e2e7cc177669b52fc2136f2ca"},{"author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"change_message_id":"4b979b1cf9d9e0b3c5e9cd2c2e6d6604e04ea8dd","unresolved":false,"context_lines":[{"line_number":169,"context_line":"            # case where specified destination is not writable"},{"line_number":170,"context_line":"            try:"},{"line_number":171,"context_line":"                fin \u003d open(output_filename, \u0027w\u0027)"},{"line_number":172,"context_line":"                fin.close()"},{"line_number":173,"context_line":"            except IOError:"},{"line_number":174,"context_line":"                return \u0027Specified destination is not writable\u0027"},{"line_number":175,"context_line":"        return True"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a80dd14_5b405107","line":172,"in_reply_to":"9a80dd14_ca1e3174","updated":"2015-03-18 05:18:07.000000000","message":"Ok, then maybe change to just this:\n\nopen(output_filename, \u0027w\u0027).close()","commit_id":"a87ffa394937fb8e2e7cc177669b52fc2136f2ca"},{"author":{"_account_id":11716,"name":"Tim Kelsey","email":"timothy.kelsey@uk.ibm.com","username":"tkelsey"},"change_message_id":"c98706a9eeb94680c004e0890c5d2b3f288fce5f","unresolved":false,"context_lines":[{"line_number":168,"context_line":"                return \u0027Specified destination is a directory\u0027"},{"line_number":169,"context_line":"            # case where specified destination is not writable"},{"line_number":170,"context_line":"            try:"},{"line_number":171,"context_line":"                open(output_filename, \u0027w\u0027).close()"},{"line_number":172,"context_line":"            except IOError:"},{"line_number":173,"context_line":"                return \u0027Specified destination is not writable\u0027"},{"line_number":174,"context_line":"        return True"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a80dd14_57dad3e9","line":171,"updated":"2015-03-18 14:04:27.000000000","message":"please use os.access here, rather then open + close","commit_id":"ede852c44ad47675b1fe7b126ec5e55067b5cbcb"}]}
