)]}'
{"keystone/common/manager.py":[{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"f0f295c74e4dd0fc2e01fe225c16bd465f86692f","unresolved":false,"context_lines":[{"line_number":14,"context_line":""},{"line_number":15,"context_line":"import functools"},{"line_number":16,"context_line":"import time"},{"line_number":17,"context_line":"from types import FunctionType"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from oslo_log import log"},{"line_number":20,"context_line":"from oslo_log import versionutils"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a5de9d1_1ee08f28","line":17,"updated":"2016-01-29 18:13:54.000000000","message":"Why not just import the module here?","commit_id":"fe4a9aeb5e562bf436b844d1c92556a7abe60e2d"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"0f6209003a8718e404408f97678050238aad12dd","unresolved":false,"context_lines":[{"line_number":14,"context_line":""},{"line_number":15,"context_line":"import functools"},{"line_number":16,"context_line":"import time"},{"line_number":17,"context_line":"from types import FunctionType"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from oslo_log import log"},{"line_number":20,"context_line":"from oslo_log import versionutils"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a5de9d1_6b7780d3","line":17,"in_reply_to":"7a5de9d1_1ee08f28","updated":"2016-01-29 19:45:43.000000000","message":"++","commit_id":"fe4a9aeb5e562bf436b844d1c92556a7abe60e2d"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"f0f295c74e4dd0fc2e01fe225c16bd465f86692f","unresolved":false,"context_lines":[{"line_number":106,"context_line":"            do_trace \u003d LOG.logger.getEffectiveLevel() \u003c\u003d log.TRACE"},{"line_number":107,"context_line":"            try:"},{"line_number":108,"context_line":"                if do_trace:"},{"line_number":109,"context_line":"                    fn_info \u003d \u0027.\u0027.join([f.__name__, f.__class__.name])"},{"line_number":110,"context_line":"                    LOG.trace(\u0027Call %s\u0027 % fn_info)"},{"line_number":111,"context_line":"                ret_val \u003d f(*args, **kwargs)"},{"line_number":112,"context_line":"            except Exception as e:  # nosec"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a5de9d1_3e4b0b2c","line":109,"updated":"2016-01-29 18:13:54.000000000","message":"Should this be:\n\n  fn_info \u003d \u0027.\u0027.join([f.__class__.__name__, f.__name__])","commit_id":"fe4a9aeb5e562bf436b844d1c92556a7abe60e2d"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"0f6209003a8718e404408f97678050238aad12dd","unresolved":false,"context_lines":[{"line_number":115,"context_line":"            finally:"},{"line_number":116,"context_line":"                if do_trace:"},{"line_number":117,"context_line":"                    subst \u003d {"},{"line_number":118,"context_line":"                        \u0027rt\u0027: (time.time() - t),"},{"line_number":119,"context_line":"                        \u0027passed_args\u0027: \u0027, \u0027.join(["},{"line_number":120,"context_line":"                            \u0027, \u0027.join(args),"},{"line_number":121,"context_line":"                            \u0027, \u0027.join([\u0027%(k)s\u003d%(v)r\u0027 % {\u0027k\u0027: k, \u0027v\u0027: v}"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a5de9d1_ee0b7e8c","line":118,"updated":"2016-01-29 19:45:43.000000000","message":"rt -\u003e runtime","commit_id":"fe4a9aeb5e562bf436b844d1c92556a7abe60e2d"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"0f6209003a8718e404408f97678050238aad12dd","unresolved":false,"context_lines":[{"line_number":119,"context_line":"                        \u0027passed_args\u0027: \u0027, \u0027.join(["},{"line_number":120,"context_line":"                            \u0027, \u0027.join(args),"},{"line_number":121,"context_line":"                            \u0027, \u0027.join([\u0027%(k)s\u003d%(v)r\u0027 % {\u0027k\u0027: k, \u0027v\u0027: v}"},{"line_number":122,"context_line":"                                       for k, v in kwargs.items()]),"},{"line_number":123,"context_line":"                        ]),"},{"line_number":124,"context_line":"                        \u0027function\u0027: fn_info,"},{"line_number":125,"context_line":"                        \u0027exception\u0027: exc,"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a5de9d1_ae01066c","line":122,"updated":"2016-01-29 19:45:43.000000000","message":"++","commit_id":"fe4a9aeb5e562bf436b844d1c92556a7abe60e2d"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"0f6209003a8718e404408f97678050238aad12dd","unresolved":false,"context_lines":[{"line_number":130,"context_line":"                               \u0027%(exception)r\u0027) % subst"},{"line_number":131,"context_line":"                    else:"},{"line_number":132,"context_line":"                        msg \u003d (\u0027[%(rt)s] %(function)s\u0027"},{"line_number":133,"context_line":"                               \u0027(%(passed_args)s) \u003d\u003e %(ret_val)r\u0027) % subst"},{"line_number":134,"context_line":"                    LOG.trace(msg)"},{"line_number":135,"context_line":"            return ret_val"},{"line_number":136,"context_line":"        return wrapped"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a5de9d1_4ed412eb","line":133,"updated":"2016-01-29 19:45:43.000000000","message":"where does ret_val come from?","commit_id":"fe4a9aeb5e562bf436b844d1c92556a7abe60e2d"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"699b488dd717fd098d7c77298bf63b4adcaefbdd","unresolved":false,"context_lines":[{"line_number":14,"context_line":""},{"line_number":15,"context_line":"import functools"},{"line_number":16,"context_line":"import time"},{"line_number":17,"context_line":"from types import FunctionType"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from oslo_log import log"},{"line_number":20,"context_line":"from oslo_log import versionutils"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a5de9d1_4e573258","line":17,"updated":"2016-01-29 19:46:51.000000000","message":"import module","commit_id":"08c15d1431f798a628b558e351f38d5260b228cb"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"7070569a4e2eac1645cc39284d9ecaa44404598a","unresolved":false,"context_lines":[{"line_number":14,"context_line":""},{"line_number":15,"context_line":"import functools"},{"line_number":16,"context_line":"import time"},{"line_number":17,"context_line":"from types import FunctionType"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from oslo_log import log"},{"line_number":20,"context_line":"from oslo_log import versionutils"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a5de9d1_3501d3af","line":17,"in_reply_to":"7a5de9d1_4e573258","updated":"2016-01-30 17:37:23.000000000","message":"Will do this next patch, didn\u0027t want to try via the web interface.","commit_id":"08c15d1431f798a628b558e351f38d5260b228cb"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"699b488dd717fd098d7c77298bf63b4adcaefbdd","unresolved":false,"context_lines":[{"line_number":115,"context_line":"            finally:"},{"line_number":116,"context_line":"                if do_trace:"},{"line_number":117,"context_line":"                    subst \u003d {"},{"line_number":118,"context_line":"                        \u0027rt\u0027: (time.time() - t),"},{"line_number":119,"context_line":"                        \u0027passed_args\u0027: \u0027, \u0027.join(["},{"line_number":120,"context_line":"                            \u0027, \u0027.join(args),"},{"line_number":121,"context_line":"                            \u0027, \u0027.join([\u0027%(k)s\u003d%(v)r\u0027 % {\u0027k\u0027: k, \u0027v\u0027: v}"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a5de9d1_cec9e227","line":118,"updated":"2016-01-29 19:46:51.000000000","message":"rt -\u003e runtime","commit_id":"08c15d1431f798a628b558e351f38d5260b228cb"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"7070569a4e2eac1645cc39284d9ecaa44404598a","unresolved":false,"context_lines":[{"line_number":115,"context_line":"            finally:"},{"line_number":116,"context_line":"                if do_trace:"},{"line_number":117,"context_line":"                    subst \u003d {"},{"line_number":118,"context_line":"                        \u0027rt\u0027: (time.time() - t),"},{"line_number":119,"context_line":"                        \u0027passed_args\u0027: \u0027, \u0027.join(["},{"line_number":120,"context_line":"                            \u0027, \u0027.join(args),"},{"line_number":121,"context_line":"                            \u0027, \u0027.join([\u0027%(k)s\u003d%(v)r\u0027 % {\u0027k\u0027: k, \u0027v\u0027: v}"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a5de9d1_75fbcbc1","line":118,"in_reply_to":"7a5de9d1_cec9e227","updated":"2016-01-30 17:37:23.000000000","message":"In Next.","commit_id":"08c15d1431f798a628b558e351f38d5260b228cb"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"699b488dd717fd098d7c77298bf63b4adcaefbdd","unresolved":false,"context_lines":[{"line_number":130,"context_line":"                               \u0027%(exception)r\u0027) % subst"},{"line_number":131,"context_line":"                    else:"},{"line_number":132,"context_line":"                        msg \u003d (\u0027[%(rt)s] %(function)s\u0027"},{"line_number":133,"context_line":"                               \u0027(%(passed_args)s) \u003d\u003e %(ret_val)r\u0027) % subst"},{"line_number":134,"context_line":"                    LOG.trace(msg)"},{"line_number":135,"context_line":"            return ret_val"},{"line_number":136,"context_line":"        return wrapped"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a5de9d1_aed4a6bc","line":133,"updated":"2016-01-29 19:46:51.000000000","message":"ret_val is not in subst","commit_id":"08c15d1431f798a628b558e351f38d5260b228cb"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"7070569a4e2eac1645cc39284d9ecaa44404598a","unresolved":false,"context_lines":[{"line_number":130,"context_line":"                               \u0027%(exception)r\u0027) % subst"},{"line_number":131,"context_line":"                    else:"},{"line_number":132,"context_line":"                        msg \u003d (\u0027[%(rt)s] %(function)s\u0027"},{"line_number":133,"context_line":"                               \u0027(%(passed_args)s) \u003d\u003e %(ret_val)r\u0027) % subst"},{"line_number":134,"context_line":"                    LOG.trace(msg)"},{"line_number":135,"context_line":"            return ret_val"},{"line_number":136,"context_line":"        return wrapped"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a5de9d1_95f8c7c4","line":133,"in_reply_to":"7a5de9d1_aed4a6bc","updated":"2016-01-30 17:37:23.000000000","message":"In Next","commit_id":"08c15d1431f798a628b558e351f38d5260b228cb"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"762bb29ff22433779ae593180c1d44351e598213","unresolved":false,"context_lines":[{"line_number":126,"context_line":"                if do_trace:"},{"line_number":127,"context_line":"                    subst \u003d {"},{"line_number":128,"context_line":"                        \u0027run_time\u0027: (time.time() - t),"},{"line_number":129,"context_line":"                        \u0027passed_args\u0027: \u0027, \u0027.join(["},{"line_number":130,"context_line":"                            \u0027, \u0027.join([repr(a)"},{"line_number":131,"context_line":"                                       for a in args[arg_idx:]]),"},{"line_number":132,"context_line":"                            \u0027, \u0027.join([\u0027%(k)s\u003d%(v)r\u0027 % {\u0027k\u0027: k, \u0027v\u0027: v}"},{"line_number":133,"context_line":"                                       for k, v in kwargs.items()]),"},{"line_number":134,"context_line":"                        ]),"},{"line_number":135,"context_line":"                        \u0027function\u0027: fn_info,"},{"line_number":136,"context_line":"                        \u0027exception\u0027: exc,"},{"line_number":137,"context_line":"                        \u0027ret_val\u0027: ret_val,"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a5de9d1_ddf6288e","line":134,"range":{"start_line":129,"start_character":0,"end_line":134,"end_character":27},"updated":"2016-02-01 22:26:15.000000000","message":"the only issue i found was that sometimes i\u0027d get comms when there is no content: \n\n  [0.000458955764771] function.invalidate_revocation_list(, ) \u003d\u003e None","commit_id":"d3f120f80217dadcd58207e6a0a3ec60c1774c67"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"65cc329f747821c625e8826667bbe4d464fb9974","unresolved":false,"context_lines":[{"line_number":126,"context_line":"                if do_trace:"},{"line_number":127,"context_line":"                    subst \u003d {"},{"line_number":128,"context_line":"                        \u0027run_time\u0027: (time.time() - t),"},{"line_number":129,"context_line":"                        \u0027passed_args\u0027: \u0027, \u0027.join(["},{"line_number":130,"context_line":"                            \u0027, \u0027.join([repr(a)"},{"line_number":131,"context_line":"                                       for a in args[arg_idx:]]),"},{"line_number":132,"context_line":"                            \u0027, \u0027.join([\u0027%(k)s\u003d%(v)r\u0027 % {\u0027k\u0027: k, \u0027v\u0027: v}"},{"line_number":133,"context_line":"                                       for k, v in kwargs.items()]),"},{"line_number":134,"context_line":"                        ]),"},{"line_number":135,"context_line":"                        \u0027function\u0027: fn_info,"},{"line_number":136,"context_line":"                        \u0027exception\u0027: exc,"},{"line_number":137,"context_line":"                        \u0027ret_val\u0027: ret_val,"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a5de9d1_5961e5d1","line":134,"range":{"start_line":129,"start_character":0,"end_line":134,"end_character":27},"in_reply_to":"7a5de9d1_ddf6288e","updated":"2016-02-02 01:53:52.000000000","message":"i also want to add an identifier here. i don\u0027t like that it isn\u0027t a clear info that it\u0027s a trace. the bogus (, ) is likely just an artifact of the join(s). not too terrible to cleanup.","commit_id":"d3f120f80217dadcd58207e6a0a3ec60c1774c67"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"1d3faa327300be2aacdf9783b088d9204fa5cd2b","unresolved":false,"context_lines":[{"line_number":152,"context_line":"    def __new__(meta, classname, bases, class_dict):"},{"line_number":153,"context_line":"        final_cls_dict \u003d {}"},{"line_number":154,"context_line":"        for attr_name, attr in class_dict.items():"},{"line_number":155,"context_line":"            # NOTE(morganfainberg):"},{"line_number":156,"context_line":"            if (isinstance(attr, types.FunctionType) and"},{"line_number":157,"context_line":"                    not attr_name.startswith(\u0027_\u0027)):"},{"line_number":158,"context_line":"                attr \u003d _TraceMeta.wrapper(attr)"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a5de9d1_de4acd54","line":155,"range":{"start_line":155,"start_character":12,"end_line":155,"end_character":35},"updated":"2016-02-01 07:21:50.000000000","message":"what\u0027s the NOTE for?","commit_id":"d3f120f80217dadcd58207e6a0a3ec60c1774c67"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"8a64bdd655ae73043d7069666d4bcc70c51fa7eb","unresolved":false,"context_lines":[{"line_number":152,"context_line":"    def __new__(meta, classname, bases, class_dict):"},{"line_number":153,"context_line":"        final_cls_dict \u003d {}"},{"line_number":154,"context_line":"        for attr_name, attr in class_dict.items():"},{"line_number":155,"context_line":"            # NOTE(morganfainberg):"},{"line_number":156,"context_line":"            if (isinstance(attr, types.FunctionType) and"},{"line_number":157,"context_line":"                    not attr_name.startswith(\u0027_\u0027)):"},{"line_number":158,"context_line":"                attr \u003d _TraceMeta.wrapper(attr)"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a5de9d1_59bd6500","line":155,"range":{"start_line":155,"start_character":12,"end_line":155,"end_character":35},"in_reply_to":"7a5de9d1_0ca7c2aa","updated":"2016-02-02 01:54:26.000000000","message":"I think this is copy/paste error, fixed in next.","commit_id":"d3f120f80217dadcd58207e6a0a3ec60c1774c67"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"804376d0090362821590b6775853e96c0976cd9c","unresolved":false,"context_lines":[{"line_number":152,"context_line":"    def __new__(meta, classname, bases, class_dict):"},{"line_number":153,"context_line":"        final_cls_dict \u003d {}"},{"line_number":154,"context_line":"        for attr_name, attr in class_dict.items():"},{"line_number":155,"context_line":"            # NOTE(morganfainberg):"},{"line_number":156,"context_line":"            if (isinstance(attr, types.FunctionType) and"},{"line_number":157,"context_line":"                    not attr_name.startswith(\u0027_\u0027)):"},{"line_number":158,"context_line":"                attr \u003d _TraceMeta.wrapper(attr)"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a5de9d1_0ca7c2aa","line":155,"range":{"start_line":155,"start_character":12,"end_line":155,"end_character":35},"in_reply_to":"7a5de9d1_613442fb","updated":"2016-02-01 16:15:09.000000000","message":"It had something.. but i like empty notes... thats clearly it! :P","commit_id":"d3f120f80217dadcd58207e6a0a3ec60c1774c67"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"6a3633752cf4866804e8f78e95a885de803cceb7","unresolved":false,"context_lines":[{"line_number":152,"context_line":"    def __new__(meta, classname, bases, class_dict):"},{"line_number":153,"context_line":"        final_cls_dict \u003d {}"},{"line_number":154,"context_line":"        for attr_name, attr in class_dict.items():"},{"line_number":155,"context_line":"            # NOTE(morganfainberg):"},{"line_number":156,"context_line":"            if (isinstance(attr, types.FunctionType) and"},{"line_number":157,"context_line":"                    not attr_name.startswith(\u0027_\u0027)):"},{"line_number":158,"context_line":"                attr \u003d _TraceMeta.wrapper(attr)"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a5de9d1_613442fb","line":155,"range":{"start_line":155,"start_character":12,"end_line":155,"end_character":35},"in_reply_to":"7a5de9d1_de4acd54","updated":"2016-02-01 15:29:57.000000000","message":"maybe he meant: NOTE: nothing to see here :-)","commit_id":"d3f120f80217dadcd58207e6a0a3ec60c1774c67"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"8ea478d7c58ef8d9847690e728b14f699c3aa18c","unresolved":false,"context_lines":[{"line_number":129,"context_line":"                if __do_trace:"},{"line_number":130,"context_line":"                    __subst \u003d {"},{"line_number":131,"context_line":"                        \u0027run_time\u0027: (time.time() - __t),"},{"line_number":132,"context_line":"                        \u0027passed_args\u0027: \u0027, \u0027.join(["},{"line_number":133,"context_line":"                            \u0027, \u0027.join([repr(a)"},{"line_number":134,"context_line":"                                       for a in args[__arg_idx:]]),"},{"line_number":135,"context_line":"                            \u0027, \u0027.join([\u0027%(k)s\u003d%(v)r\u0027 % {\u0027k\u0027: k, \u0027v\u0027: v}"},{"line_number":136,"context_line":"                                       for k, v in kwargs.items()]),"},{"line_number":137,"context_line":"                        ]),"},{"line_number":138,"context_line":"                        \u0027function\u0027: __fn_info,"},{"line_number":139,"context_line":"                        \u0027exception\u0027: __exc,"},{"line_number":140,"context_line":"                        \u0027ret_val\u0027: __ret_val,"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a5de9d1_74803f8c","line":137,"range":{"start_line":132,"start_character":24,"end_line":137,"end_character":27},"updated":"2016-02-02 16:23:40.000000000","message":"This might still produce errant (, ) strings.","commit_id":"a9930094b2083ee751422c1e084f0d5179f99339"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"2e2d248648c0692b0c3f91ba645d074861123281","unresolved":false,"context_lines":[{"line_number":94,"context_line":""},{"line_number":95,"context_line":"    This metaclass automatically wraps all methods on the class when"},{"line_number":96,"context_line":"    instantiated with a decorator that will log entry/exit from a method"},{"line_number":97,"context_line":"    when keystone is run in Trace log level."},{"line_number":98,"context_line":"    \"\"\""},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"    @staticmethod"}],"source_content_type":"text/x-python","patch_set":8,"id":"5a5ae5dd_af0115b1","line":97,"updated":"2016-02-05 05:18:28.000000000","message":"It might be nice to note that this also logs the timing of each method.","commit_id":"8a825bb40d41a22fa1216a627cad7a81b01fb82e"}]}
