)]}'
{"bandit/core/test_properties.py":[{"author":{"_account_id":14692,"name":"Lucas Fisher","email":"lucas.fisher@gmail.com","username":"lucas.fisher"},"change_message_id":"c4941dc2849dcafb1dbc43fed484c6723194490e","unresolved":false,"context_lines":[{"line_number":21,"context_line":"logger \u003d logging.getLogger()"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"def severity(sev):"},{"line_number":25,"context_line":"    \u0027\u0027\u0027Decorator function to set \u0027severity\u0027 attribute.\u0027\u0027\u0027"},{"line_number":26,"context_line":"    def wrapper(func):"},{"line_number":27,"context_line":"        if sev not in constants.SEVERITY_LEVEL._fields:"}],"source_content_type":"text/x-python","patch_set":2,"id":"da86d52c_fb7a77ef","line":24,"updated":"2015-02-19 05:13:13.000000000","message":"Curious as to what caused you to switch to the form of decorator that returns a wrapper function?","commit_id":"ad03a165df3c030ec6fb265d466f074024019aef"},{"author":{"_account_id":11029,"name":"Jamie Finnigan","email":"jamiefinnigan@gmail.com","username":"jamiefinnigan"},"change_message_id":"d8bf9e05f9f0811e886f469b44ac2b54d9f6b280","unresolved":false,"context_lines":[{"line_number":21,"context_line":"logger \u003d logging.getLogger()"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"def severity(sev):"},{"line_number":25,"context_line":"    \u0027\u0027\u0027Decorator function to set \u0027severity\u0027 attribute.\u0027\u0027\u0027"},{"line_number":26,"context_line":"    def wrapper(func):"},{"line_number":27,"context_line":"        if sev not in constants.SEVERITY_LEVEL._fields:"}],"source_content_type":"text/x-python","patch_set":2,"id":"da86d52c_369d060b","line":24,"in_reply_to":"da86d52c_fb7a77ef","updated":"2015-02-19 05:57:13.000000000","message":"It seems to be the generally-accepted way to implement decorators that accept arguments.  Open to other suggestions...","commit_id":"ad03a165df3c030ec6fb265d466f074024019aef"},{"author":{"_account_id":14692,"name":"Lucas Fisher","email":"lucas.fisher@gmail.com","username":"lucas.fisher"},"change_message_id":"c4941dc2849dcafb1dbc43fed484c6723194490e","unresolved":false,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"def severity(sev):"},{"line_number":25,"context_line":"    \u0027\u0027\u0027Decorator function to set \u0027severity\u0027 attribute.\u0027\u0027\u0027"},{"line_number":26,"context_line":"    def wrapper(func):"},{"line_number":27,"context_line":"        if sev not in constants.SEVERITY_LEVEL._fields:"},{"line_number":28,"context_line":"            raise TypeError(\"severity error: %s is not one of %s.\" % (sev,"}],"source_content_type":"text/x-python","patch_set":2,"id":"da86d52c_1b658b44","line":25,"updated":"2015-02-19 05:13:13.000000000","message":"Nit. Let\u0027s be consistent in using attribute vs property in file name and decorator documentation.","commit_id":"ad03a165df3c030ec6fb265d466f074024019aef"},{"author":{"_account_id":11029,"name":"Jamie Finnigan","email":"jamiefinnigan@gmail.com","username":"jamiefinnigan"},"change_message_id":"d8bf9e05f9f0811e886f469b44ac2b54d9f6b280","unresolved":false,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"def severity(sev):"},{"line_number":25,"context_line":"    \u0027\u0027\u0027Decorator function to set \u0027severity\u0027 attribute.\u0027\u0027\u0027"},{"line_number":26,"context_line":"    def wrapper(func):"},{"line_number":27,"context_line":"        if sev not in constants.SEVERITY_LEVEL._fields:"},{"line_number":28,"context_line":"            raise TypeError(\"severity error: %s is not one of %s.\" % (sev,"}],"source_content_type":"text/x-python","patch_set":2,"id":"da86d52c_b69016ee","line":25,"in_reply_to":"da86d52c_1b658b44","updated":"2015-02-19 05:57:13.000000000","message":"Done","commit_id":"ad03a165df3c030ec6fb265d466f074024019aef"},{"author":{"_account_id":14692,"name":"Lucas Fisher","email":"lucas.fisher@gmail.com","username":"lucas.fisher"},"change_message_id":"c4941dc2849dcafb1dbc43fed484c6723194490e","unresolved":false,"context_lines":[{"line_number":25,"context_line":"    \u0027\u0027\u0027Decorator function to set \u0027severity\u0027 attribute.\u0027\u0027\u0027"},{"line_number":26,"context_line":"    def wrapper(func):"},{"line_number":27,"context_line":"        if sev not in constants.SEVERITY_LEVEL._fields:"},{"line_number":28,"context_line":"            raise TypeError(\"severity error: %s is not one of %s.\" % (sev,"},{"line_number":29,"context_line":"                            \",\".join(constants.SEVERITY_LEVEL._fields)))"},{"line_number":30,"context_line":"        func._severity \u003d sev"},{"line_number":31,"context_line":"        return func"}],"source_content_type":"text/x-python","patch_set":2,"id":"da86d52c_3bcfaf2a","line":28,"updated":"2015-02-19 05:13:13.000000000","message":"Good choice of exception type and descriptive message.\n\nCapitalize severity like in the Confidence exception below.","commit_id":"ad03a165df3c030ec6fb265d466f074024019aef"},{"author":{"_account_id":11029,"name":"Jamie Finnigan","email":"jamiefinnigan@gmail.com","username":"jamiefinnigan"},"change_message_id":"d8bf9e05f9f0811e886f469b44ac2b54d9f6b280","unresolved":false,"context_lines":[{"line_number":25,"context_line":"    \u0027\u0027\u0027Decorator function to set \u0027severity\u0027 attribute.\u0027\u0027\u0027"},{"line_number":26,"context_line":"    def wrapper(func):"},{"line_number":27,"context_line":"        if sev not in constants.SEVERITY_LEVEL._fields:"},{"line_number":28,"context_line":"            raise TypeError(\"severity error: %s is not one of %s.\" % (sev,"},{"line_number":29,"context_line":"                            \",\".join(constants.SEVERITY_LEVEL._fields)))"},{"line_number":30,"context_line":"        func._severity \u003d sev"},{"line_number":31,"context_line":"        return func"}],"source_content_type":"text/x-python","patch_set":2,"id":"da86d52c_b6a7364f","line":28,"in_reply_to":"da86d52c_3bcfaf2a","updated":"2015-02-19 05:57:13.000000000","message":"Done","commit_id":"ad03a165df3c030ec6fb265d466f074024019aef"},{"author":{"_account_id":14692,"name":"Lucas Fisher","email":"lucas.fisher@gmail.com","username":"lucas.fisher"},"change_message_id":"c4941dc2849dcafb1dbc43fed484c6723194490e","unresolved":false,"context_lines":[{"line_number":32,"context_line":"    return wrapper"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"def confidence(func, conf):"},{"line_number":36,"context_line":"    \u0027\u0027\u0027Decorator function to set \u0027confidence\u0027 attribute.\u0027\u0027\u0027"},{"line_number":37,"context_line":"    def wrapper(func):"},{"line_number":38,"context_line":"        if conf not in constants.CONFIDENCE_LEVEL:"}],"source_content_type":"text/x-python","patch_set":2,"id":"da86d52c_9bd7bbbe","line":35,"updated":"2015-02-19 05:13:13.000000000","message":"Remove the confidence() decorator. Confidence will not be a decorator but returned by test after it runs.","commit_id":"ad03a165df3c030ec6fb265d466f074024019aef"},{"author":{"_account_id":11029,"name":"Jamie Finnigan","email":"jamiefinnigan@gmail.com","username":"jamiefinnigan"},"change_message_id":"d8bf9e05f9f0811e886f469b44ac2b54d9f6b280","unresolved":false,"context_lines":[{"line_number":32,"context_line":"    return wrapper"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"def confidence(func, conf):"},{"line_number":36,"context_line":"    \u0027\u0027\u0027Decorator function to set \u0027confidence\u0027 attribute.\u0027\u0027\u0027"},{"line_number":37,"context_line":"    def wrapper(func):"},{"line_number":38,"context_line":"        if conf not in constants.CONFIDENCE_LEVEL:"}],"source_content_type":"text/x-python","patch_set":2,"id":"da86d52c_36b42681","line":35,"in_reply_to":"da86d52c_9bd7bbbe","updated":"2015-02-19 05:57:13.000000000","message":"Done","commit_id":"ad03a165df3c030ec6fb265d466f074024019aef"}]}
