)]}'
{"bandit/__init__.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"1813e29300efc7363140c8b13a7044a1d9f82d42","unresolved":false,"context_lines":[{"line_number":13,"context_line":"# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the"},{"line_number":14,"context_line":"# License for the specific language governing permissions and limitations"},{"line_number":15,"context_line":"# under the License."},{"line_number":16,"context_line":"from __future__ import absolute_import"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from .core import config  # noqa"},{"line_number":19,"context_line":"from .core import context  # noqa"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a016987_650a408c","line":16,"updated":"2015-05-28 17:54:55.000000000","message":"bandit should switch to the OpenStack convention of fully qualified imports instead.","commit_id":"1f713ac905382aa64c3da627b867af9795020601"},{"author":{"_account_id":12000,"name":"Ian Cordasco","email":"sigmavirus24@gmail.com","username":"sigmavirus24"},"change_message_id":"5470f71a1c90bd2ff0fadc90db944eb8b82af9c3","unresolved":false,"context_lines":[{"line_number":13,"context_line":"# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the"},{"line_number":14,"context_line":"# License for the specific language governing permissions and limitations"},{"line_number":15,"context_line":"# under the License."},{"line_number":16,"context_line":"from __future__ import absolute_import"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from .core import config  # noqa"},{"line_number":19,"context_line":"from .core import context  # noqa"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a016987_f3c27784","line":16,"in_reply_to":"7a016987_650a408c","updated":"2015-05-28 20:11:41.000000000","message":"Yeah, I started adding this and then remembered that OpenStack doesn\u0027t use this. Instead they use hacking to enforce it.","commit_id":"1f713ac905382aa64c3da627b867af9795020601"}],"bandit/bandit.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"1813e29300efc7363140c8b13a7044a1d9f82d42","unresolved":false,"context_lines":[{"line_number":20,"context_line":"import os"},{"line_number":21,"context_line":"import sys"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"from bandit.core import manager as b_manager"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"default_test_config \u003d \u0027bandit.yaml\u0027"},{"line_number":26,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"7a016987_c54694bf","line":23,"updated":"2015-05-28 17:54:55.000000000","message":"this part does both absolute_import and qualifying.","commit_id":"1f713ac905382aa64c3da627b867af9795020601"},{"author":{"_account_id":12000,"name":"Ian Cordasco","email":"sigmavirus24@gmail.com","username":"sigmavirus24"},"change_message_id":"5470f71a1c90bd2ff0fadc90db944eb8b82af9c3","unresolved":false,"context_lines":[{"line_number":20,"context_line":"import os"},{"line_number":21,"context_line":"import sys"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"from bandit.core import manager as b_manager"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"default_test_config \u003d \u0027bandit.yaml\u0027"},{"line_number":26,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"7a016987_733d678e","line":23,"in_reply_to":"7a016987_c54694bf","updated":"2015-05-28 20:11:41.000000000","message":"Yep. The absolute_import import just ensures that stuff doesn\u0027t regress","commit_id":"1f713ac905382aa64c3da627b867af9795020601"}],"bandit/core/context.py":[{"author":{"_account_id":11861,"name":"Travis McPeak","email":"tmcpeak@us.ibm.com","username":"travis-mcpeak"},"change_message_id":"9715289cd987205429f056e2caa803eff485e6a4","unresolved":false,"context_lines":[{"line_number":183,"context_line":""},{"line_number":184,"context_line":"        elif isinstance(literal, _ast.Str):"},{"line_number":185,"context_line":"            return literal.s"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"        # Python 3 only"},{"line_number":188,"context_line":"        # elif isinstance(literal, _ast.Bytes):"},{"line_number":189,"context_line":"        #    return literal.s"}],"source_content_type":"text/x-python","patch_set":9,"id":"5afe65bd_2b22f900","line":186,"updated":"2015-06-03 16:13:15.000000000","message":"Should this be uncommented now?","commit_id":"2bd5fd85130e47bce79d52ed8356db29066d3209"},{"author":{"_account_id":12000,"name":"Ian Cordasco","email":"sigmavirus24@gmail.com","username":"sigmavirus24"},"change_message_id":"c82e0788de4b2aef9850621d7edd977d12f6b356","unresolved":false,"context_lines":[{"line_number":183,"context_line":""},{"line_number":184,"context_line":"        elif isinstance(literal, _ast.Str):"},{"line_number":185,"context_line":"            return literal.s"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"        # Python 3 only"},{"line_number":188,"context_line":"        # elif isinstance(literal, _ast.Bytes):"},{"line_number":189,"context_line":"        #    return literal.s"}],"source_content_type":"text/x-python","patch_set":9,"id":"5afe65bd_6bb23196","line":186,"in_reply_to":"5afe65bd_2b22f900","updated":"2015-06-03 16:16:23.000000000","message":"These will break on Python 2. I was considering just removing them. That said, we probably need a way to handle this just in case.","commit_id":"2bd5fd85130e47bce79d52ed8356db29066d3209"},{"author":{"_account_id":11861,"name":"Travis McPeak","email":"tmcpeak@us.ibm.com","username":"travis-mcpeak"},"change_message_id":"9715289cd987205429f056e2caa803eff485e6a4","unresolved":false,"context_lines":[{"line_number":213,"context_line":"            # what do we want to do with this?"},{"line_number":214,"context_line":"            pass"},{"line_number":215,"context_line":""},{"line_number":216,"context_line":"        # Python 3 only"},{"line_number":217,"context_line":"        # elif isinstance(literal, _ast.NameConstant):"},{"line_number":218,"context_line":"        #    return literal.value"},{"line_number":219,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"5afe65bd_0b1dfdbc","line":216,"updated":"2015-06-03 16:13:15.000000000","message":"Should this be uncommented now?","commit_id":"2bd5fd85130e47bce79d52ed8356db29066d3209"},{"author":{"_account_id":12000,"name":"Ian Cordasco","email":"sigmavirus24@gmail.com","username":"sigmavirus24"},"change_message_id":"c82e0788de4b2aef9850621d7edd977d12f6b356","unresolved":false,"context_lines":[{"line_number":213,"context_line":"            # what do we want to do with this?"},{"line_number":214,"context_line":"            pass"},{"line_number":215,"context_line":""},{"line_number":216,"context_line":"        # Python 3 only"},{"line_number":217,"context_line":"        # elif isinstance(literal, _ast.NameConstant):"},{"line_number":218,"context_line":"        #    return literal.value"},{"line_number":219,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"5afe65bd_cb67e523","line":216,"in_reply_to":"5afe65bd_0b1dfdbc","updated":"2015-06-03 16:16:23.000000000","message":"NameConstant\u0027s value can be accessed with \u0027value\u0027, which is why I have that as a fallback at the end.","commit_id":"2bd5fd85130e47bce79d52ed8356db29066d3209"}],"bandit/core/manager.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"1813e29300efc7363140c8b13a7044a1d9f82d42","unresolved":false,"context_lines":[{"line_number":19,"context_line":"import os"},{"line_number":20,"context_line":"import sys"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from bandit.core import config as b_config"},{"line_number":23,"context_line":"from bandit.core import meta_ast as b_meta_ast"},{"line_number":24,"context_line":"from bandit.core import node_visitor as b_node_visitor"},{"line_number":25,"context_line":"from bandit.core import result_store as b_result_store"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a016987_a51a78c4","line":22,"updated":"2015-05-28 17:54:55.000000000","message":"nice!","commit_id":"1f713ac905382aa64c3da627b867af9795020601"}],"bandit/core/result_store.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"1813e29300efc7363140c8b13a7044a1d9f82d42","unresolved":false,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":"class BanditResultStore():"},{"line_number":33,"context_line":"    resstore \u003d OrderedDict()"},{"line_number":34,"context_line":"    skipped \u003d None"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    def __init__(self, logger, config, agg_type):"},{"line_number":37,"context_line":"        self.count \u003d 0"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a016987_6566c052","line":34,"updated":"2015-05-28 17:54:55.000000000","message":"what\u0027s up with this change? seems unrelated.","commit_id":"1f713ac905382aa64c3da627b867af9795020601"},{"author":{"_account_id":12000,"name":"Ian Cordasco","email":"sigmavirus24@gmail.com","username":"sigmavirus24"},"change_message_id":"5470f71a1c90bd2ff0fadc90db944eb8b82af9c3","unresolved":false,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":"class BanditResultStore():"},{"line_number":33,"context_line":"    resstore \u003d OrderedDict()"},{"line_number":34,"context_line":"    skipped \u003d None"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    def __init__(self, logger, config, agg_type):"},{"line_number":37,"context_line":"        self.count \u003d 0"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a016987_53da6b4c","line":34,"in_reply_to":"7a016987_6566c052","updated":"2015-05-28 20:11:41.000000000","message":"Oh yeah, I was trying to debug something and missed the fact that there was the property below. The property below was breaking everything on Python 3.","commit_id":"1f713ac905382aa64c3da627b867af9795020601"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"7e397f1be070a41a80ac7e60dfad71e958e3863a","unresolved":false,"context_lines":[{"line_number":47,"context_line":"        self.format \u003d \u0027txt\u0027"},{"line_number":48,"context_line":"        self.out_file \u003d None"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    @property"},{"line_number":51,"context_line":"    def count(self):"},{"line_number":52,"context_line":"        \u0027\u0027\u0027Count property - used to get the current number of test results"},{"line_number":53,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"5afe65bd_a9aefa95","side":"PARENT","line":50,"updated":"2015-06-03 14:03:59.000000000","message":"this looks like it should be in a separate commit since it was just wrong.","commit_id":"e7bf93f742978038178779a7c13295d064606eae"},{"author":{"_account_id":12000,"name":"Ian Cordasco","email":"sigmavirus24@gmail.com","username":"sigmavirus24"},"change_message_id":"9767a4f7ee28997d17950a92b3f0e475d8b50699","unresolved":false,"context_lines":[{"line_number":47,"context_line":"        self.format \u003d \u0027txt\u0027"},{"line_number":48,"context_line":"        self.out_file \u003d None"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    @property"},{"line_number":51,"context_line":"    def count(self):"},{"line_number":52,"context_line":"        \u0027\u0027\u0027Count property - used to get the current number of test results"},{"line_number":53,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"5afe65bd_94deb63d","side":"PARENT","line":50,"in_reply_to":"5afe65bd_a9aefa95","updated":"2015-06-03 14:48:38.000000000","message":"This was actually working fine in Python 2. I can pull it out into a separate commit and make this change dependent upon it, but it isn\u0027t really wrong outside the context of moving to Py34.","commit_id":"e7bf93f742978038178779a7c13295d064606eae"}],"bandit/plugins/exec.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"7e397f1be070a41a80ac7e60dfad71e958e3863a","unresolved":false,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":"def exec_issue():"},{"line_number":24,"context_line":"    return bandit.Issue("},{"line_number":25,"context_line":"        severity\u003dconstants.MEDIUM,"},{"line_number":26,"context_line":"        confidence\u003dconstants.HIGH,"},{"line_number":27,"context_line":"        text\u003d\"Use of exec detected.\""},{"line_number":28,"context_line":"    )"}],"source_content_type":"text/x-python","patch_set":8,"id":"5afe65bd_69ca4270","line":25,"updated":"2015-06-03 14:03:59.000000000","message":"why this change? bandit wasn\u0027t exporting symbols correctly?","commit_id":"41376bab20e679f464cad59d8c9bfb851921698e"},{"author":{"_account_id":12000,"name":"Ian Cordasco","email":"sigmavirus24@gmail.com","username":"sigmavirus24"},"change_message_id":"9767a4f7ee28997d17950a92b3f0e475d8b50699","unresolved":false,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":"def exec_issue():"},{"line_number":24,"context_line":"    return bandit.Issue("},{"line_number":25,"context_line":"        severity\u003dconstants.MEDIUM,"},{"line_number":26,"context_line":"        confidence\u003dconstants.HIGH,"},{"line_number":27,"context_line":"        text\u003d\"Use of exec detected.\""},{"line_number":28,"context_line":"    )"}],"source_content_type":"text/x-python","patch_set":8,"id":"5afe65bd_f4edeaef","line":25,"in_reply_to":"5afe65bd_69ca4270","updated":"2015-06-03 14:48:38.000000000","message":"Ah, yeah, I was toying around and didn\u0027t mean to commit this.","commit_id":"41376bab20e679f464cad59d8c9bfb851921698e"},{"author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"change_message_id":"098b88eeb0a184424e16648e2077f8d946b496d7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"5afe65bd_ab2149a1","updated":"2015-06-03 15:59:39.000000000","message":"Looks like the name of the plugin changed.  Anyone who currently created a profile in their bandit.yaml will now need to change the referred plugin.","commit_id":"2bd5fd85130e47bce79d52ed8356db29066d3209"},{"author":{"_account_id":12000,"name":"Ian Cordasco","email":"sigmavirus24@gmail.com","username":"sigmavirus24"},"change_message_id":"b8feb3845bbde8ec7f0b6c1e2a3c7cba4ba6546a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"5afe65bd_abd269d0","in_reply_to":"5afe65bd_ab2149a1","updated":"2015-06-03 16:13:44.000000000","message":"How do you mean? The file hasn\u0027t changed, and @checks only registers AST checkers.","commit_id":"2bd5fd85130e47bce79d52ed8356db29066d3209"},{"author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"change_message_id":"03bdd640cc447dfc5e7468813f7d2532dca83796","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"5afe65bd_d05e7111","in_reply_to":"5afe65bd_abd269d0","updated":"2015-06-03 17:33:26.000000000","message":"The plugin names in bandit.yaml map to these function names.  But looks like you fixed it in the next patch set.  Thanks","commit_id":"2bd5fd85130e47bce79d52ed8356db29066d3209"},{"author":{"_account_id":11861,"name":"Travis McPeak","email":"tmcpeak@us.ibm.com","username":"travis-mcpeak"},"change_message_id":"9715289cd987205429f056e2caa803eff485e6a4","unresolved":false,"context_lines":[{"line_number":28,"context_line":""},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"if six.PY2:"},{"line_number":31,"context_line":"    @checks(\u0027Exec\u0027)"},{"line_number":32,"context_line":"    def exec_used(context):"},{"line_number":33,"context_line":"        return exec_issue()"},{"line_number":34,"context_line":"else:"}],"source_content_type":"text/x-python","patch_set":9,"id":"5afe65bd_8b87add6","line":31,"updated":"2015-06-03 16:13:15.000000000","message":"nice!","commit_id":"2bd5fd85130e47bce79d52ed8356db29066d3209"}],"bandit/plugins/jinja2_templates.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"7e397f1be070a41a80ac7e60dfad71e958e3863a","unresolved":false,"context_lines":[{"line_number":43,"context_line":"                        )"},{"line_number":44,"context_line":"                    # found autoescape"},{"line_number":45,"context_line":"                    if getattr(node, \u0027arg\u0027, None) \u003d\u003d \u0027autoescape\u0027:"},{"line_number":46,"context_line":"                        if (getattr(node.value, \u0027id\u0027, None) \u003d\u003d \u0027True\u0027 or"},{"line_number":47,"context_line":"                                getattr(node.value, \u0027value\u0027, None) is True):"},{"line_number":48,"context_line":"                            return"},{"line_number":49,"context_line":"                        else:"}],"source_content_type":"text/x-python","patch_set":8,"id":"5afe65bd_09b74ed9","line":46,"updated":"2015-06-03 14:03:59.000000000","message":"isn\u0027t the missing space after if a pep8 failure?","commit_id":"41376bab20e679f464cad59d8c9bfb851921698e"},{"author":{"_account_id":12000,"name":"Ian Cordasco","email":"sigmavirus24@gmail.com","username":"sigmavirus24"},"change_message_id":"9767a4f7ee28997d17950a92b3f0e475d8b50699","unresolved":false,"context_lines":[{"line_number":43,"context_line":"                        )"},{"line_number":44,"context_line":"                    # found autoescape"},{"line_number":45,"context_line":"                    if getattr(node, \u0027arg\u0027, None) \u003d\u003d \u0027autoescape\u0027:"},{"line_number":46,"context_line":"                        if (getattr(node.value, \u0027id\u0027, None) \u003d\u003d \u0027True\u0027 or"},{"line_number":47,"context_line":"                                getattr(node.value, \u0027value\u0027, None) is True):"},{"line_number":48,"context_line":"                            return"},{"line_number":49,"context_line":"                        else:"}],"source_content_type":"text/x-python","patch_set":8,"id":"5afe65bd_94835604","line":46,"in_reply_to":"5afe65bd_09b74ed9","updated":"2015-06-03 14:48:38.000000000","message":"I don\u0027t think so, that said, we have a fair number of things ignored in tox.ini","commit_id":"41376bab20e679f464cad59d8c9bfb851921698e"}],"tests/test_node_visitor.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"7e397f1be070a41a80ac7e60dfad71e958e3863a","unresolved":false,"context_lines":[{"line_number":70,"context_line":"            count \u003d count - 1"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"        # line 9 should be three lines long"},{"line_number":73,"context_line":"        self.assertEqual(3, len(stmt[\u0027linerange\u0027]))"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"        # the range should be the correct line numbers"},{"line_number":76,"context_line":"        self.assertEqual([11, 12, 13], list(stmt[\u0027linerange\u0027]))"}],"source_content_type":"text/x-python","patch_set":8,"id":"5afe65bd_69692225","line":73,"updated":"2015-06-03 14:03:59.000000000","message":"it\u0027s strange that list() isn\u0027t needed here... at line 76 we would have already iterated.","commit_id":"41376bab20e679f464cad59d8c9bfb851921698e"},{"author":{"_account_id":12000,"name":"Ian Cordasco","email":"sigmavirus24@gmail.com","username":"sigmavirus24"},"change_message_id":"9767a4f7ee28997d17950a92b3f0e475d8b50699","unresolved":false,"context_lines":[{"line_number":70,"context_line":"            count \u003d count - 1"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"        # line 9 should be three lines long"},{"line_number":73,"context_line":"        self.assertEqual(3, len(stmt[\u0027linerange\u0027]))"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"        # the range should be the correct line numbers"},{"line_number":76,"context_line":"        self.assertEqual([11, 12, 13], list(stmt[\u0027linerange\u0027]))"}],"source_content_type":"text/x-python","patch_set":8,"id":"5afe65bd_14c64648","line":73,"in_reply_to":"5afe65bd_69692225","updated":"2015-06-03 14:48:38.000000000","message":"A range object probably has a __len__ defined so you don\u0027t need to iterate over it (on Py3).","commit_id":"41376bab20e679f464cad59d8c9bfb851921698e"}]}
