)]}'
{"neutron/callbacks/manager.py":[{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"7006e754a5851c2cb43e86af1d215e60733ed22a","unresolved":false,"context_lines":[{"line_number":163,"context_line":""},{"line_number":164,"context_line":"def _get_id(callback):"},{"line_number":165,"context_line":"    \"\"\"Return a unique identifier for the callback.\"\"\""},{"line_number":166,"context_line":"    # TODO(armax): consider using something other than names"},{"line_number":167,"context_line":"    # https://www.python.org/dev/peps/pep-3155/, but this"},{"line_number":168,"context_line":"    # might be okay for now."},{"line_number":169,"context_line":"    parts \u003d (reflection.get_callable_name(callback),"},{"line_number":170,"context_line":"             str(hash(callback)))"},{"line_number":171,"context_line":"    return \u0027-\u0027.join(parts)"}],"source_content_type":"text/x-python","patch_set":5,"id":"3ac371cc_41399cd6","line":168,"range":{"start_line":166,"start_character":0,"end_line":168,"end_character":28},"updated":"2016-08-17 13:37:22.000000000","message":"Hasn\u0027t this can been addressed now?","commit_id":"4d85336ec157988fef7ab79d5d19eb35f64f8250"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"78c4c715d7e368e7d37f03d15178e148f7cb7de2","unresolved":false,"context_lines":[{"line_number":163,"context_line":""},{"line_number":164,"context_line":"def _get_id(callback):"},{"line_number":165,"context_line":"    \"\"\"Return a unique identifier for the callback.\"\"\""},{"line_number":166,"context_line":"    # TODO(armax): consider using something other than names"},{"line_number":167,"context_line":"    # https://www.python.org/dev/peps/pep-3155/, but this"},{"line_number":168,"context_line":"    # might be okay for now."},{"line_number":169,"context_line":"    parts \u003d (reflection.get_callable_name(callback),"},{"line_number":170,"context_line":"             str(hash(callback)))"},{"line_number":171,"context_line":"    return \u0027-\u0027.join(parts)"}],"source_content_type":"text/x-python","patch_set":5,"id":"3ac371cc_0a7b318d","line":168,"range":{"start_line":166,"start_character":0,"end_line":168,"end_character":28},"in_reply_to":"3ac371cc_41399cd6","updated":"2016-08-17 16:22:56.000000000","message":"This comment stemmed from review [1]. At the time the issue reported was: py27 is weird when determining callback names and py34 might be better, but this doesn\u0027t bite unless you have a clear use case for it. Here we\u0027re solving a slightly different issue, one that stems from py34 being weird, and one where two objects ends up registering the same callback instance.\n\nI think we can safely remove this TODO once we stop supporting py27, but not in the context of this patch.\n\n[1] https://review.openstack.org/#/c/153774/14/neutron/callbacks/manager.py","commit_id":"4d85336ec157988fef7ab79d5d19eb35f64f8250"}]}
