)]}'
{"bandit/core/result_store.py":[{"author":{"_account_id":12000,"name":"Ian Cordasco","email":"sigmavirus24@gmail.com","username":"sigmavirus24"},"change_message_id":"9229be45ec503f518c47837a47903268f9ec29d6","unresolved":false,"context_lines":[{"line_number":27,"context_line":"from operator import itemgetter"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"import constants"},{"line_number":30,"context_line":"import subunit"},{"line_number":31,"context_line":"import utils"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"7a016987_8299807b","line":30,"updated":"2015-05-29 20:15:18.000000000","message":"This is the python-subunit library in the test-requirements.txt right? If so, this belongs above this group since it\u0027s a third party import and constants and utils are local.\n\nFurther, if we\u0027re always importing this it will only work if we have python-subunit installed so this patch needs to move that from test-requirements.txt to requirements.txt.","commit_id":"3c4c6b671429518de4410c729a03e6d3f4b0c151"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"b8962fdf7ff64942709f291d066fb150cfdd8377","unresolved":false,"context_lines":[{"line_number":27,"context_line":"from operator import itemgetter"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"import constants"},{"line_number":30,"context_line":"import subunit"},{"line_number":31,"context_line":"import utils"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"7a016987_85ee27eb","line":30,"in_reply_to":"7a016987_8299807b","updated":"2015-05-29 22:56:23.000000000","message":"Done","commit_id":"3c4c6b671429518de4410c729a03e6d3f4b0c151"},{"author":{"_account_id":11716,"name":"Tim Kelsey","email":"timothy.kelsey@uk.ibm.com","username":"tkelsey"},"change_message_id":"76e6e8d38b3b5714ba5d7b006716def7fbbd920d","unresolved":false,"context_lines":[{"line_number":167,"context_line":"        :param files_list: Which files were inspected"},{"line_number":168,"context_line":"        :param scores: The scores awarded to each file in the scope"},{"line_number":169,"context_line":"        :param excluded_files: Which files were excluded from the scope"},{"line_number":170,"context_line":"        :return: A collection containing the CSV data"},{"line_number":171,"context_line":"        \u0027\u0027\u0027"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"        if self.out_file is None:"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a016987_6052e014","line":170,"updated":"2015-06-01 09:45:29.000000000","message":"A collection containing the CSV data, looks like copy-past issue.","commit_id":"5c05973772e7dd97920c11c75a653322e0ec5733"},{"author":{"_account_id":12000,"name":"Ian Cordasco","email":"sigmavirus24@gmail.com","username":"sigmavirus24"},"change_message_id":"6590facd7fc761e1611615810b5761e982501156","unresolved":false,"context_lines":[{"line_number":177,"context_line":"        output \u003d open(self.out_file, \u0027w\u0027)"},{"line_number":178,"context_line":"        output \u003d subunit.v2.StreamResultToBytes(output)"},{"line_number":179,"context_line":"        output.startTestRun()"},{"line_number":180,"context_line":"        for filename, issues in items:"},{"line_number":181,"context_line":"            for issue in issues:"},{"line_number":182,"context_line":"                test \u003d issue[\u0027test\u0027]"},{"line_number":183,"context_line":"                name \u003d filename + \u0027[\u0027 + test + \u0027]\u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a016987_f8bd79b1","line":180,"updated":"2015-05-31 03:35:42.000000000","message":"Is there a reason that you\u0027re not doing\n\n    for filename, issues in self.resstore.items():\n\nYou don\u0027t seem to be using items elsewhere.","commit_id":"5c05973772e7dd97920c11c75a653322e0ec5733"}],"bandit/formatters/subunit.py":[{"author":{"_account_id":12000,"name":"Ian Cordasco","email":"sigmavirus24@gmail.com","username":"sigmavirus24"},"change_message_id":"c630a3081bdfca7be522a436712fdc6ac3c94754","unresolved":false,"context_lines":[{"line_number":20,"context_line":""},{"line_number":21,"context_line":"def _write_subunit_result(self, output, status, name, metadata\u003dNone,"},{"line_number":22,"context_line":"                          attachments\u003dNone):"},{"line_number":23,"context_line":"    STATUS_CODES \u003d frozenset(["},{"line_number":24,"context_line":"        \u0027exists\u0027,"},{"line_number":25,"context_line":"        \u0027fail\u0027,"},{"line_number":26,"context_line":"        \u0027skip\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a1a9d01_a703a40c","line":23,"updated":"2015-09-28 16:46:13.000000000","message":"If we bind functools.partial to partial locally, then it will avoid the extra overhead of looking it up on the module each time. I don\u0027t think it\u0027s a big issue, but something that might be nice given how frequently we use it below.","commit_id":"dac5a199ad3de8caa4a7598f63780c9377a89a34"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"a317f479e075a603e759c43ddf3aff53f5855eb5","unresolved":false,"context_lines":[{"line_number":20,"context_line":""},{"line_number":21,"context_line":"def _write_subunit_result(self, output, status, name, metadata\u003dNone,"},{"line_number":22,"context_line":"                          attachments\u003dNone):"},{"line_number":23,"context_line":"    STATUS_CODES \u003d frozenset(["},{"line_number":24,"context_line":"        \u0027exists\u0027,"},{"line_number":25,"context_line":"        \u0027fail\u0027,"},{"line_number":26,"context_line":"        \u0027skip\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a1a9d01_885cfa19","line":23,"in_reply_to":"9a1a9d01_a703a40c","updated":"2015-09-30 22:32:55.000000000","message":"Done","commit_id":"dac5a199ad3de8caa4a7598f63780c9377a89a34"},{"author":{"_account_id":12000,"name":"Ian Cordasco","email":"sigmavirus24@gmail.com","username":"sigmavirus24"},"change_message_id":"c630a3081bdfca7be522a436712fdc6ac3c94754","unresolved":false,"context_lines":[{"line_number":28,"context_line":"        \u0027uxsuccess\u0027,"},{"line_number":29,"context_line":"        \u0027xfail\u0027,"},{"line_number":30,"context_line":"    ])"},{"line_number":31,"context_line":"    metadata \u003d metadata or {}"},{"line_number":32,"context_line":"    write_status \u003d output.status"},{"line_number":33,"context_line":"    if \u0027tags\u0027 in metadata:"},{"line_number":34,"context_line":"        tags \u003d metadata[\u0027tags\u0027]"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a1a9d01_470ac822","line":31,"updated":"2015-09-28 16:46:13.000000000","message":"Travis, we could but don\u0027t need to. Python only creates on dictionary. If someone updates this to alter metadata, then it will alter the default value and that would carry over to the next time this is called. We don\u0027t want that.\n\nThis could also be written more explicitly as:\n\n    if metadata is None:\n        metadata \u003d {}","commit_id":"dac5a199ad3de8caa4a7598f63780c9377a89a34"},{"author":{"_account_id":11861,"name":"Travis McPeak","email":"tmcpeak@us.ibm.com","username":"travis-mcpeak"},"change_message_id":"600c18fd1a0aaf8cd5a7c0836e9e20cff16bbf56","unresolved":false,"context_lines":[{"line_number":28,"context_line":"        \u0027uxsuccess\u0027,"},{"line_number":29,"context_line":"        \u0027xfail\u0027,"},{"line_number":30,"context_line":"    ])"},{"line_number":31,"context_line":"    metadata \u003d metadata or {}"},{"line_number":32,"context_line":"    write_status \u003d output.status"},{"line_number":33,"context_line":"    if \u0027tags\u0027 in metadata:"},{"line_number":34,"context_line":"        tags \u003d metadata[\u0027tags\u0027]"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba15a1d1_a2e2a29e","line":31,"updated":"2015-09-23 07:47:26.000000000","message":"couldn\u0027t we just do metadata\u003d{} in the function definition?","commit_id":"dac5a199ad3de8caa4a7598f63780c9377a89a34"},{"author":{"_account_id":11861,"name":"Travis McPeak","email":"tmcpeak@us.ibm.com","username":"travis-mcpeak"},"change_message_id":"9eb0f98dca471f0ab1c3be879242d063dd2cda05","unresolved":false,"context_lines":[{"line_number":28,"context_line":"        \u0027uxsuccess\u0027,"},{"line_number":29,"context_line":"        \u0027xfail\u0027,"},{"line_number":30,"context_line":"    ])"},{"line_number":31,"context_line":"    metadata \u003d metadata or {}"},{"line_number":32,"context_line":"    write_status \u003d output.status"},{"line_number":33,"context_line":"    if \u0027tags\u0027 in metadata:"},{"line_number":34,"context_line":"        tags \u003d metadata[\u0027tags\u0027]"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a1a9d01_56c4938f","line":31,"in_reply_to":"9a1a9d01_470ac822","updated":"2015-09-29 12:37:16.000000000","message":"Done","commit_id":"dac5a199ad3de8caa4a7598f63780c9377a89a34"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"a317f479e075a603e759c43ddf3aff53f5855eb5","unresolved":false,"context_lines":[{"line_number":28,"context_line":"        \u0027uxsuccess\u0027,"},{"line_number":29,"context_line":"        \u0027xfail\u0027,"},{"line_number":30,"context_line":"    ])"},{"line_number":31,"context_line":"    metadata \u003d metadata or {}"},{"line_number":32,"context_line":"    write_status \u003d output.status"},{"line_number":33,"context_line":"    if \u0027tags\u0027 in metadata:"},{"line_number":34,"context_line":"        tags \u003d metadata[\u0027tags\u0027]"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a1a9d01_8814fae8","line":31,"in_reply_to":"9a1a9d01_56c4938f","updated":"2015-09-30 22:32:55.000000000","message":"Done","commit_id":"dac5a199ad3de8caa4a7598f63780c9377a89a34"},{"author":{"_account_id":12000,"name":"Ian Cordasco","email":"sigmavirus24@gmail.com","username":"sigmavirus24"},"change_message_id":"c630a3081bdfca7be522a436712fdc6ac3c94754","unresolved":false,"context_lines":[{"line_number":30,"context_line":"    ])"},{"line_number":31,"context_line":"    metadata \u003d metadata or {}"},{"line_number":32,"context_line":"    write_status \u003d output.status"},{"line_number":33,"context_line":"    if \u0027tags\u0027 in metadata:"},{"line_number":34,"context_line":"        tags \u003d metadata[\u0027tags\u0027]"},{"line_number":35,"context_line":"        write_status \u003d functools.partial(write_status,"},{"line_number":36,"context_line":"                                         test_tags\u003dtags.split(\u0027,\u0027))"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a1a9d01_670d8c36","line":33,"updated":"2015-09-28 16:46:13.000000000","message":"This should be written as:\n\n    tags \u003d metadata.get(\u0027tags\u0027)\n    if tags is not None:\n        write_status \u003d functools.partial(write_status, test_tags\u003dtags.split(\u0027,\u0027))\n\n(With the side note that I don\u0027t care about the formatting of the call to functools.partial)","commit_id":"dac5a199ad3de8caa4a7598f63780c9377a89a34"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"a317f479e075a603e759c43ddf3aff53f5855eb5","unresolved":false,"context_lines":[{"line_number":30,"context_line":"    ])"},{"line_number":31,"context_line":"    metadata \u003d metadata or {}"},{"line_number":32,"context_line":"    write_status \u003d output.status"},{"line_number":33,"context_line":"    if \u0027tags\u0027 in metadata:"},{"line_number":34,"context_line":"        tags \u003d metadata[\u0027tags\u0027]"},{"line_number":35,"context_line":"        write_status \u003d functools.partial(write_status,"},{"line_number":36,"context_line":"                                         test_tags\u003dtags.split(\u0027,\u0027))"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a1a9d01_68bde600","line":33,"in_reply_to":"9a1a9d01_670d8c36","updated":"2015-09-30 22:32:55.000000000","message":"Done","commit_id":"dac5a199ad3de8caa4a7598f63780c9377a89a34"},{"author":{"_account_id":12000,"name":"Ian Cordasco","email":"sigmavirus24@gmail.com","username":"sigmavirus24"},"change_message_id":"c630a3081bdfca7be522a436712fdc6ac3c94754","unresolved":false,"context_lines":[{"line_number":53,"context_line":""},{"line_number":54,"context_line":"def report(manager, filename, sev_level, conf_level, lines\u003d-1,"},{"line_number":55,"context_line":"           out_format\u003d\u0027subunit\u0027):"},{"line_number":56,"context_line":"        \u0027\u0027\u0027Prints/returns warnings in subunit format"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"        :param manager: the bandit manager object"},{"line_number":59,"context_line":"        :param filename: The output file name, or None for stdout"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a1a9d01_0715b03e","line":56,"updated":"2015-09-28 16:46:13.000000000","message":"PEP-0257 says the quotes should be \"\"\" not \u0027\u0027\u0027 for docstrings unless \"\"\" is present inside the docstring.","commit_id":"dac5a199ad3de8caa4a7598f63780c9377a89a34"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"a317f479e075a603e759c43ddf3aff53f5855eb5","unresolved":false,"context_lines":[{"line_number":53,"context_line":""},{"line_number":54,"context_line":"def report(manager, filename, sev_level, conf_level, lines\u003d-1,"},{"line_number":55,"context_line":"           out_format\u003d\u0027subunit\u0027):"},{"line_number":56,"context_line":"        \u0027\u0027\u0027Prints/returns warnings in subunit format"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"        :param manager: the bandit manager object"},{"line_number":59,"context_line":"        :param filename: The output file name, or None for stdout"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a1a9d01_08430a14","line":56,"in_reply_to":"9a1a9d01_0715b03e","updated":"2015-09-30 22:32:55.000000000","message":"Done","commit_id":"dac5a199ad3de8caa4a7598f63780c9377a89a34"},{"author":{"_account_id":1528,"name":"Stanislaw Pitucha","email":"viraptor@gmail.com","username":"stanislaw-pitucha"},"change_message_id":"f0cc4e1929765dbdfc930096a8a5402a3d59ebf3","unresolved":false,"context_lines":[{"line_number":16,"context_line":"import sys"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"import subunit"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"def _write_subunit_result(self, output, status, name, metadata\u003dNone,"},{"line_number":22,"context_line":"                          attachments\u003dNone):"}],"source_content_type":"text/x-python","patch_set":6,"id":"da85f559_5673c6b1","line":19,"updated":"2015-11-09 07:45:48.000000000","message":"For people who need to work with this and have never seen a subunit result before, it would be useful to include either a link to subunit documentation about it, or some short intro about the format. (with examples)","commit_id":"89c23b579e1b29e26ef55ce6c4a797303878cf67"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"af89a22618a0c7efe670883b4263381c3c583f63","unresolved":false,"context_lines":[{"line_number":16,"context_line":"import sys"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"import subunit"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"def _write_subunit_result(self, output, status, name, metadata\u003dNone,"},{"line_number":22,"context_line":"                          attachments\u003dNone):"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a7e1126_ccea0bdb","line":19,"in_reply_to":"da85f559_5673c6b1","updated":"2015-12-21 22:30:10.000000000","message":"Done","commit_id":"89c23b579e1b29e26ef55ce6c4a797303878cf67"},{"author":{"_account_id":1528,"name":"Stanislaw Pitucha","email":"viraptor@gmail.com","username":"stanislaw-pitucha"},"change_message_id":"e0dfd46c90cbe0d6a956ba98b7b7e9bc807775a5","unresolved":false,"context_lines":[{"line_number":16,"context_line":"import sys"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"import subunit"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"def _write_subunit_result(self, output, status, name, metadata\u003dNone,"},{"line_number":22,"context_line":"                          attachments\u003dNone):"}],"source_content_type":"text/x-python","patch_set":7,"id":"3a7e1126_07a46c05","line":19,"updated":"2015-12-21 23:08:10.000000000","message":"Formatters have documentation included as a module comment now. It would be good if subunit had one too.","commit_id":"3b44abaea9e9023aa34f4c2f3367006844cb0347"},{"author":{"_account_id":1528,"name":"Stanislaw Pitucha","email":"viraptor@gmail.com","username":"stanislaw-pitucha"},"change_message_id":"e0dfd46c90cbe0d6a956ba98b7b7e9bc807775a5","unresolved":false,"context_lines":[{"line_number":18,"context_line":"import subunit"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"def _write_subunit_result(self, output, status, name, metadata\u003dNone,"},{"line_number":22,"context_line":"                          attachments\u003dNone):"},{"line_number":23,"context_line":"    partial \u003d functools.partial"},{"line_number":24,"context_line":"    STATUS_CODES \u003d frozenset(["}],"source_content_type":"text/x-python","patch_set":7,"id":"3a7e1126_ac71bf0d","line":21,"updated":"2015-12-21 23:08:10.000000000","message":"This seems wrong. I haven\u0027t tested it yet, but this is a normal function with a \"self\" parameter and then it\u0027s called with only 3 positional args?","commit_id":"3b44abaea9e9023aa34f4c2f3367006844cb0347"},{"author":{"_account_id":1528,"name":"Stanislaw Pitucha","email":"viraptor@gmail.com","username":"stanislaw-pitucha"},"change_message_id":"e0dfd46c90cbe0d6a956ba98b7b7e9bc807775a5","unresolved":false,"context_lines":[{"line_number":21,"context_line":"def _write_subunit_result(self, output, status, name, metadata\u003dNone,"},{"line_number":22,"context_line":"                          attachments\u003dNone):"},{"line_number":23,"context_line":"    partial \u003d functools.partial"},{"line_number":24,"context_line":"    STATUS_CODES \u003d frozenset(["},{"line_number":25,"context_line":"        \u0027exists\u0027,"},{"line_number":26,"context_line":"        \u0027fail\u0027,"},{"line_number":27,"context_line":"        \u0027skip\u0027,"}],"source_content_type":"text/x-python","patch_set":7,"id":"3a7e1126_47d35460","line":24,"updated":"2015-12-21 23:08:10.000000000","message":"This is available as output.status_mask.keys()","commit_id":"3b44abaea9e9023aa34f4c2f3367006844cb0347"},{"author":{"_account_id":1528,"name":"Stanislaw Pitucha","email":"viraptor@gmail.com","username":"stanislaw-pitucha"},"change_message_id":"e0dfd46c90cbe0d6a956ba98b7b7e9bc807775a5","unresolved":false,"context_lines":[{"line_number":33,"context_line":"        metadata \u003d {}"},{"line_number":34,"context_line":"    write_status \u003d output.status"},{"line_number":35,"context_line":"    tags \u003d metadata.get(\u0027tags\u0027)"},{"line_number":36,"context_line":"    if \u0027tags\u0027 is not None:"},{"line_number":37,"context_line":"        write_status \u003d partial(write_status, test_tags\u003dtags.split(\u0027,\u0027))"},{"line_number":38,"context_line":"    write_status \u003d partial(write_status, test_id\u003dname)"},{"line_number":39,"context_line":"    write_status()"}],"source_content_type":"text/x-python","patch_set":7,"id":"3a7e1126_2cd38fd6","line":36,"updated":"2015-12-21 23:08:10.000000000","message":"\u0027tags\u0027 is never None. (string) This will explode on execution, because then it does tags.split.","commit_id":"3b44abaea9e9023aa34f4c2f3367006844cb0347"},{"author":{"_account_id":1528,"name":"Stanislaw Pitucha","email":"viraptor@gmail.com","username":"stanislaw-pitucha"},"change_message_id":"e0dfd46c90cbe0d6a956ba98b7b7e9bc807775a5","unresolved":false,"context_lines":[{"line_number":37,"context_line":"        write_status \u003d partial(write_status, test_tags\u003dtags.split(\u0027,\u0027))"},{"line_number":38,"context_line":"    write_status \u003d partial(write_status, test_id\u003dname)"},{"line_number":39,"context_line":"    write_status()"},{"line_number":40,"context_line":"    write_status \u003d partial(write_status, test_id\u003dname)"},{"line_number":41,"context_line":"    if status in STATUS_CODES:"},{"line_number":42,"context_line":"        write_status \u003d partial(write_status, test_status\u003dstatus)"},{"line_number":43,"context_line":"    write_status()"}],"source_content_type":"text/x-python","patch_set":7,"id":"3a7e1126_c7fc24ba","line":40,"updated":"2015-12-21 23:08:10.000000000","message":"this is doing exactly the same as line 38","commit_id":"3b44abaea9e9023aa34f4c2f3367006844cb0347"},{"author":{"_account_id":1528,"name":"Stanislaw Pitucha","email":"viraptor@gmail.com","username":"stanislaw-pitucha"},"change_message_id":"e0dfd46c90cbe0d6a956ba98b7b7e9bc807775a5","unresolved":false,"context_lines":[{"line_number":45,"context_line":"        for attach in attachments:"},{"line_number":46,"context_line":"            write_status \u003d partial(write_status, filename\u003dattach,"},{"line_number":47,"context_line":"                                   file_bytes\u003dattachments[attach], eof\u003dTrue)"},{"line_number":48,"context_line":"    write_status()"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"def report(manager, filename, sev_level, conf_level, lines\u003d-1,"}],"source_content_type":"text/x-python","patch_set":7,"id":"3a7e1126_070eace4","line":48,"updated":"2015-12-21 23:08:10.000000000","message":"I don\u0027t get the usage of partial and multiple `write_status()` calls. It seems to me like not only every test will get multiple status reports, but also some things will be overwritten (for example, each loop of attachments will just assign new value to filename and file_bytes).\n\nWhy is it using partial at all?","commit_id":"3b44abaea9e9023aa34f4c2f3367006844cb0347"},{"author":{"_account_id":1528,"name":"Stanislaw Pitucha","email":"viraptor@gmail.com","username":"stanislaw-pitucha"},"change_message_id":"e0dfd46c90cbe0d6a956ba98b7b7e9bc807775a5","unresolved":false,"context_lines":[{"line_number":70,"context_line":"    else:"},{"line_number":71,"context_line":"        output \u003d open(filename, \u0027w\u0027)"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"    output \u003d subunit.v2.StreamResultToBytes(output)"},{"line_number":74,"context_line":"    output.startTestRun()"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"    for result in results:"}],"source_content_type":"text/x-python","patch_set":7,"id":"3a7e1126_8ca96326","line":73,"updated":"2015-12-21 23:08:10.000000000","message":"If it\u0027s to bytes, shouldn\u0027t the open() use \u0027wb\u0027?","commit_id":"3b44abaea9e9023aa34f4c2f3367006844cb0347"}],"requirements.txt":[{"author":{"_account_id":12000,"name":"Ian Cordasco","email":"sigmavirus24@gmail.com","username":"sigmavirus24"},"change_message_id":"c630a3081bdfca7be522a436712fdc6ac3c94754","unresolved":false,"context_lines":[{"line_number":2,"context_line":"PyYAML\u003e\u003d3.1.0"},{"line_number":3,"context_line":"six\u003e\u003d1.9.0"},{"line_number":4,"context_line":"stevedore\u003e\u003d1.5.0  # Apache 2.0"},{"line_number":5,"context_line":"python-subunit\u003e\u003d0.0.18"}],"source_content_type":"text/plain","patch_set":5,"id":"9a1a9d01_8700e002","line":5,"updated":"2015-09-28 16:46:13.000000000","message":"Did we want this to always be a requirement or to be optional as an extra, e.g.,\n\n    pip install bandit[subunit]\n\nWould pull in python-subunit to keep the list of dependencies short. If we do this, we would need to wrap the imports in the plugin for subunit and have it error if someone tries to use it without python-subunit installed.\n\nI don\u0027t have an opinion either way, just offering an alternative given the knowledge I have that most people prefer a smaller list of dependencies.","commit_id":"dac5a199ad3de8caa4a7598f63780c9377a89a34"},{"author":{"_account_id":11861,"name":"Travis McPeak","email":"tmcpeak@us.ibm.com","username":"travis-mcpeak"},"change_message_id":"600c18fd1a0aaf8cd5a7c0836e9e20cff16bbf56","unresolved":false,"context_lines":[{"line_number":2,"context_line":"PyYAML\u003e\u003d3.1.0"},{"line_number":3,"context_line":"six\u003e\u003d1.9.0"},{"line_number":4,"context_line":"stevedore\u003e\u003d1.5.0  # Apache 2.0"},{"line_number":5,"context_line":"python-subunit\u003e\u003d0.0.18"}],"source_content_type":"text/plain","patch_set":5,"id":"ba15a1d1_e28adabe","line":5,"updated":"2015-09-23 07:47:26.000000000","message":"I\u0027d prefer to keep these alphabetical","commit_id":"dac5a199ad3de8caa4a7598f63780c9377a89a34"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"a317f479e075a603e759c43ddf3aff53f5855eb5","unresolved":false,"context_lines":[{"line_number":2,"context_line":"PyYAML\u003e\u003d3.1.0"},{"line_number":3,"context_line":"six\u003e\u003d1.9.0"},{"line_number":4,"context_line":"stevedore\u003e\u003d1.5.0  # Apache 2.0"},{"line_number":5,"context_line":"python-subunit\u003e\u003d0.0.18"}],"source_content_type":"text/plain","patch_set":5,"id":"9a1a9d01_686ba685","line":5,"in_reply_to":"9a1a9d01_8700e002","updated":"2015-09-30 22:32:55.000000000","message":"Ok, I\u0027ll do it as a setuptools extra, but the caveat being it\u0027ll still be in test-requirements. But, that\u0027s not a big deal I guess","commit_id":"dac5a199ad3de8caa4a7598f63780c9377a89a34"}],"setup.cfg":[{"author":{"_account_id":11716,"name":"Tim Kelsey","email":"timothy.kelsey@uk.ibm.com","username":"tkelsey"},"change_message_id":"e3b6f237130c01df98fd8e38f904053acf1634af","unresolved":false,"context_lines":[{"line_number":119,"context_line":""},{"line_number":120,"context_line":"[extras]"},{"line_number":121,"context_line":"subunit \u003d"},{"line_number":122,"context_line":"    python-subunit\u003e\u003d0.0.18"}],"source_content_type":"text/x-ttcn-cfg","patch_set":6,"id":"7a2fa921_abaad217","line":122,"updated":"2015-10-06 12:50:56.000000000","message":"Is this the right way to do things with pdr / OpenStack ??","commit_id":"89c23b579e1b29e26ef55ce6c4a797303878cf67"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"af89a22618a0c7efe670883b4263381c3c583f63","unresolved":false,"context_lines":[{"line_number":119,"context_line":""},{"line_number":120,"context_line":"[extras]"},{"line_number":121,"context_line":"subunit \u003d"},{"line_number":122,"context_line":"    python-subunit\u003e\u003d0.0.18"}],"source_content_type":"text/x-ttcn-cfg","patch_set":6,"id":"3a7e1126_acebffda","line":122,"in_reply_to":"7a2fa921_abaad217","updated":"2015-12-21 22:30:10.000000000","message":"Yes","commit_id":"89c23b579e1b29e26ef55ce6c4a797303878cf67"}]}
