)]}'
{"bandit/core/test_set.py":[{"author":{"_account_id":1528,"name":"Stanislaw Pitucha","email":"viraptor@gmail.com","username":"stanislaw-pitucha"},"change_message_id":"5daf1fc5d9861137549a9019d2ac41be619bad8b","unresolved":false,"context_lines":[{"line_number":122,"context_line":"        for plugin in extmgr.plugins:"},{"line_number":123,"context_line":"            fn_name \u003d plugin.name"},{"line_number":124,"context_line":"            function \u003d plugin.plugin"},{"line_number":125,"context_line":"            if hasattr(function, \u0027_takes_config\u0027):"},{"line_number":126,"context_line":"                test_config \u003d self.config.get_option(function._takes_config)"},{"line_number":127,"context_line":"                if test_config is None:"},{"line_number":128,"context_line":"                    genner \u003d importlib.import_module(function.__module__)"},{"line_number":129,"context_line":"                    if hasattr(genner, \u0027gen_config\u0027):"},{"line_number":130,"context_line":"                        test_config \u003d genner.gen_config(function._takes_config)"},{"line_number":131,"context_line":"                if test_config is None:"},{"line_number":132,"context_line":"                    warnings.warn("},{"line_number":133,"context_line":"                        \u0027\"{0}\" has been skipped due to missing config \u0027"},{"line_number":134,"context_line":"                        \u0027\"{1}\".\u0027.format(function.__name__,"},{"line_number":135,"context_line":"                                        function._takes_config))"},{"line_number":136,"context_line":"                    continue"},{"line_number":137,"context_line":"                else:"},{"line_number":138,"context_line":"                    setattr(function, \"_config\", test_config)"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"            if hasattr(function, \u0027_checks\u0027):"},{"line_number":141,"context_line":"                for check in function._checks:"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa69d971_3a71f1a8","line":138,"range":{"start_line":125,"start_character":0,"end_line":138,"end_character":61},"updated":"2016-01-04 21:38:04.000000000","message":"This seems to reimplement a similar idea to stevedore\u0027s ExtensionManager.invoke_on_load. Maybe it\u0027s enough if the plugins get wrapped in self-activation? gen_config wouldn\u0027t have to be hardcoded as a separate thing in that case (and we could have one per function where needed)\n\nI don\u0027t know if it\u0027s better / worse, but there\u0027s definitely a built-in way to do it. Testconfig can be handled via ExtensionManager.invoke_args","commit_id":"65928025a540e0b6c70c8cc6286cd4254b8e07e5"},{"author":{"_account_id":11861,"name":"Travis McPeak","email":"tmcpeak@us.ibm.com","username":"travis-mcpeak"},"change_message_id":"82fdf9ed21034ebb81a5f627ba0d70daf24a4cae","unresolved":false,"context_lines":[{"line_number":122,"context_line":"        for plugin in extmgr.plugins:"},{"line_number":123,"context_line":"            fn_name \u003d plugin.name"},{"line_number":124,"context_line":"            function \u003d plugin.plugin"},{"line_number":125,"context_line":"            if hasattr(function, \u0027_takes_config\u0027):"},{"line_number":126,"context_line":"                test_config \u003d self.config.get_option(function._takes_config)"},{"line_number":127,"context_line":"                if test_config is None:"},{"line_number":128,"context_line":"                    genner \u003d importlib.import_module(function.__module__)"},{"line_number":129,"context_line":"                    if hasattr(genner, \u0027gen_config\u0027):"},{"line_number":130,"context_line":"                        test_config \u003d genner.gen_config(function._takes_config)"},{"line_number":131,"context_line":"                if test_config is None:"},{"line_number":132,"context_line":"                    warnings.warn("},{"line_number":133,"context_line":"                        \u0027\"{0}\" has been skipped due to missing config \u0027"},{"line_number":134,"context_line":"                        \u0027\"{1}\".\u0027.format(function.__name__,"},{"line_number":135,"context_line":"                                        function._takes_config))"},{"line_number":136,"context_line":"                    continue"},{"line_number":137,"context_line":"                else:"},{"line_number":138,"context_line":"                    setattr(function, \"_config\", test_config)"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"            if hasattr(function, \u0027_checks\u0027):"},{"line_number":141,"context_line":"                for check in function._checks:"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa69d971_1a0aed79","line":138,"range":{"start_line":125,"start_character":0,"end_line":138,"end_character":61},"in_reply_to":"fa69d971_3a71f1a8","updated":"2016-01-04 21:44:10.000000000","message":"I\u0027d be curious what the stevedore way would look like.  The thing I\u0027m most interested in is maintaining the ease of plugin development and keeping config out of code as much as possible.","commit_id":"65928025a540e0b6c70c8cc6286cd4254b8e07e5"}],"bandit/plugins/blacklist_calls.py":[{"author":{"_account_id":11861,"name":"Travis McPeak","email":"tmcpeak@us.ibm.com","username":"travis-mcpeak"},"change_message_id":"bf4580001789e4b50b1b45faa0f22d27475517fe","unresolved":false,"context_lines":[{"line_number":91,"context_line":""},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"_cached_blacklist_checks \u003d []"},{"line_number":94,"context_line":"_cached_blacklist_config \u003d None  # FIXME(tkelsey): this is no point in this ..."},{"line_number":95,"context_line":""},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"def _build_conf_dict(name, qualnames, message, level\u003d\"MEDIUM\"):"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa69d971_3f5b3189","line":94,"range":{"start_line":94,"start_character":51,"end_line":94,"end_character":55},"updated":"2016-01-04 16:25:32.000000000","message":"*there is no point in this, although honestly it\u0027s getting ripped so soon anyway I don\u0027t care","commit_id":"65928025a540e0b6c70c8cc6286cd4254b8e07e5"},{"author":{"_account_id":11716,"name":"Tim Kelsey","email":"timothy.kelsey@uk.ibm.com","username":"tkelsey"},"change_message_id":"09e926cd0e5f0b91806b52b2bacf9637aed94860","unresolved":false,"context_lines":[{"line_number":91,"context_line":""},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"_cached_blacklist_checks \u003d []"},{"line_number":94,"context_line":"_cached_blacklist_config \u003d None  # FIXME(tkelsey): this is no point in this ..."},{"line_number":95,"context_line":""},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"def _build_conf_dict(name, qualnames, message, level\u003d\"MEDIUM\"):"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa69d971_a23b849b","line":94,"range":{"start_line":94,"start_character":51,"end_line":94,"end_character":55},"in_reply_to":"fa69d971_3f5b3189","updated":"2016-01-04 16:28:50.000000000","message":"oops, but yeah its getting ripped out soon so no big deal really.","commit_id":"65928025a540e0b6c70c8cc6286cd4254b8e07e5"}],"bandit/plugins/injection_wildcard.py":[{"author":{"_account_id":11861,"name":"Travis McPeak","email":"tmcpeak@us.ibm.com","username":"travis-mcpeak"},"change_message_id":"bf4580001789e4b50b1b45faa0f22d27475517fe","unresolved":false,"context_lines":[{"line_number":109,"context_line":"from bandit.plugins import injection_shell  # NOTE(tkelsey): shared config"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"gen_config \u003d injection_shell.gen_config"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"@test.takes_config(\u0027shell_injection\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa69d971_df545522","line":112,"updated":"2016-01-04 16:25:32.000000000","message":"Are we going to have a problem if injection_shell is loaded after this?","commit_id":"65928025a540e0b6c70c8cc6286cd4254b8e07e5"},{"author":{"_account_id":11716,"name":"Tim Kelsey","email":"timothy.kelsey@uk.ibm.com","username":"tkelsey"},"change_message_id":"40a5e6a262e6d300ad374b205169917222ec326c","unresolved":false,"context_lines":[{"line_number":109,"context_line":"from bandit.plugins import injection_shell  # NOTE(tkelsey): shared config"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"gen_config \u003d injection_shell.gen_config"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"@test.takes_config(\u0027shell_injection\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa69d971_ee7f09a9","line":112,"in_reply_to":"fa69d971_3a424669","updated":"2016-01-05 09:40:05.000000000","message":"Agreed, and I dont like it, hence the comment. Though tbh there was already an implicit dependency on these two since they share the same config block, editing it for one would impact the other.... maybe we should give it its own config block? This would probably end up being a duplication though, I\u0027m not sure.","commit_id":"65928025a540e0b6c70c8cc6286cd4254b8e07e5"},{"author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"change_message_id":"19ac7b6e3b35f857f06c74d920dc0a9f3004a82f","unresolved":false,"context_lines":[{"line_number":109,"context_line":"from bandit.plugins import injection_shell  # NOTE(tkelsey): shared config"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"gen_config \u003d injection_shell.gen_config"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"@test.takes_config(\u0027shell_injection\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa69d971_3a424669","line":112,"in_reply_to":"fa69d971_c2e8f812","updated":"2016-01-05 04:28:47.000000000","message":"This now creates a dependency between two plugins whereas I thought each plugin was independent.","commit_id":"65928025a540e0b6c70c8cc6286cd4254b8e07e5"},{"author":{"_account_id":11716,"name":"Tim Kelsey","email":"timothy.kelsey@uk.ibm.com","username":"tkelsey"},"change_message_id":"09e926cd0e5f0b91806b52b2bacf9637aed94860","unresolved":false,"context_lines":[{"line_number":109,"context_line":"from bandit.plugins import injection_shell  # NOTE(tkelsey): shared config"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"gen_config \u003d injection_shell.gen_config"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"@test.takes_config(\u0027shell_injection\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa69d971_c2e8f812","line":112,"in_reply_to":"fa69d971_df545522","updated":"2016-01-04 16:28:50.000000000","message":"nope, should hit the import cache same as any other import.","commit_id":"65928025a540e0b6c70c8cc6286cd4254b8e07e5"}],"bandit/plugins/insecure_ssl_tls.py":[{"author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"change_message_id":"19ac7b6e3b35f857f06c74d920dc0a9f3004a82f","unresolved":false,"context_lines":[{"line_number":32,"context_line":"                 \"PROTOCOL_TLSv1\",  # strict option"},{"line_number":33,"context_line":"                 \"SSLv3_METHOD\",    # strict option"},{"line_number":34,"context_line":"                 \"TLSv1_METHOD\"]    # strict option"},{"line_number":35,"context_line":"                }"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"@test.takes_config"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa69d971_9a3812f1","line":35,"range":{"start_line":35,"start_character":15,"end_line":35,"end_character":17},"updated":"2016-01-05 04:28:47.000000000","message":"This looks a space off, but maybe its just gerrit.","commit_id":"65928025a540e0b6c70c8cc6286cd4254b8e07e5"},{"author":{"_account_id":11716,"name":"Tim Kelsey","email":"timothy.kelsey@uk.ibm.com","username":"tkelsey"},"change_message_id":"40a5e6a262e6d300ad374b205169917222ec326c","unresolved":false,"context_lines":[{"line_number":32,"context_line":"                 \"PROTOCOL_TLSv1\",  # strict option"},{"line_number":33,"context_line":"                 \"SSLv3_METHOD\",    # strict option"},{"line_number":34,"context_line":"                 \"TLSv1_METHOD\"]    # strict option"},{"line_number":35,"context_line":"                }"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"@test.takes_config"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa69d971_ce3805f2","line":35,"range":{"start_line":35,"start_character":15,"end_line":35,"end_character":17},"in_reply_to":"fa69d971_9a3812f1","updated":"2016-01-05 09:40:05.000000000","message":"humm, yeah odd, tox pep8 seems to think its OK and it did catch others that were misaligned.","commit_id":"65928025a540e0b6c70c8cc6286cd4254b8e07e5"}]}
