)]}'
{"nova/api/openstack/contrib/admin_actions.py":[{"author":{"_account_id":642,"name":"Matt Dietz","email":"matthew.dietz@gmail.com","username":"cerberus"},"change_message_id":"c321227f6ca9c3ff9b32cef8a3e82b6c4a480ce9","unresolved":false,"context_lines":[{"line_number":33,"context_line":"LOG \u003d logging.getLogger(\"nova.api.openstack.contrib.admin_actions\")"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"class Admin_actions(extensions.ExtensionDescriptor):"},{"line_number":37,"context_line":"    \"\"\"Adds a set of admin-only actions to servers\"\"\""},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    def __init__(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAACX%2F%2F7ZQ%3D","side":"PARENT","line":36,"updated":"2011-10-20 22:41:56.000000000","message":"Weird formatting for the class name. Is this some of the shenanigans around extension naming? Otherwise, I say call it AdminActions at the very least","commit_id":"75a3fbb21eebd4de8775b63c327d9d57859d090c"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"6268882f0042ae0709397004b1f23b14a7411fbd","unresolved":false,"context_lines":[{"line_number":33,"context_line":"LOG \u003d logging.getLogger(\"nova.api.openstack.contrib.admin_actions\")"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"class Admin_actions(extensions.ExtensionDescriptor):"},{"line_number":37,"context_line":"    \"\"\"Adds a set of admin-only actions to servers\"\"\""},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    def __init__(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAACX%2F%2F7ZA%3D","side":"PARENT","line":36,"in_reply_to":"AAAACX%2F%2F7ZQ%3D","updated":"2011-10-20 23:03:30.000000000","message":"Yes, it is shenanigans--shenanigans which predate my work.  I chose to leave them in place because it made it easier to load all standard extensions in one swell foop.\n\n(Basically, the extension class is expected to have a name matching the module name, with the first character uppercased.)","commit_id":"75a3fbb21eebd4de8775b63c327d9d57859d090c"},{"author":{"_account_id":706,"name":"Brian Lamar","email":"brian.lamar@rackspace.com","username":"blamar"},"change_message_id":"56a7cb234c19672bbd4c6f29e457eb7bb58db95f","unresolved":false,"context_lines":[{"line_number":36,"context_line":"class Admin_actions(extensions.ExtensionDescriptor):"},{"line_number":37,"context_line":"    \"\"\"Adds admin-only server actions: pause, unpause, suspend,"},{"line_number":38,"context_line":"    resume, migrate, resetNetwork, injectNetworkInfo, lock and unlock"},{"line_number":39,"context_line":"    \"\"\""},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    name \u003d \"AdminActions\""},{"line_number":42,"context_line":"    alias \u003d \"os-admin-actions\""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAACX%2F%2F7UU%3D","line":39,"updated":"2011-10-21 16:51:51.000000000","message":"Format according to HACKING, please.","commit_id":"3480cac1893c697aa290e6c3f56b2b7d97007adc"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"a95d5a370d33afb846796ea6522ec209d164dc43","unresolved":false,"context_lines":[{"line_number":36,"context_line":"class Admin_actions(extensions.ExtensionDescriptor):"},{"line_number":37,"context_line":"    \"\"\"Adds admin-only server actions: pause, unpause, suspend,"},{"line_number":38,"context_line":"    resume, migrate, resetNetwork, injectNetworkInfo, lock and unlock"},{"line_number":39,"context_line":"    \"\"\""},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    name \u003d \"AdminActions\""},{"line_number":42,"context_line":"    alias \u003d \"os-admin-actions\""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAACX%2F%2F7T0%3D","line":39,"in_reply_to":"AAAACX%2F%2F7UU%3D","updated":"2011-10-21 17:21:13.000000000","message":"With the description of extensions now coming from docstrings, I wanted to be especially cautious about changing the wording of existing descriptions on the off-chance that someone could depend on it being exactly the same.  This is admittedly unlikely, and I\u0027ll be happy to change it if required; just stating my rationale for having it this way.","commit_id":"3480cac1893c697aa290e6c3f56b2b7d97007adc"}],"nova/api/openstack/contrib/deferred_delete.py":[{"author":{"_account_id":642,"name":"Matt Dietz","email":"matthew.dietz@gmail.com","username":"cerberus"},"change_message_id":"c321227f6ca9c3ff9b32cef8a3e82b6c4a480ce9","unresolved":false,"context_lines":[{"line_number":30,"context_line":"LOG \u003d logging.getLogger(\"nova.api.contrib.deferred-delete\")"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"class Deferred_delete(extensions.ExtensionDescriptor):"},{"line_number":34,"context_line":"    def __init__(self):"},{"line_number":35,"context_line":"        super(Deferred_delete, self).__init__()"},{"line_number":36,"context_line":"        self.compute_api \u003d compute.API()"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAACX%2F%2F7ZM%3D","side":"PARENT","line":33,"updated":"2011-10-20 22:41:56.000000000","message":"Not sure I like the underscores in names thing. It\u0027s almost uglier than the lack of ability to camel case","commit_id":"75a3fbb21eebd4de8775b63c327d9d57859d090c"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"6268882f0042ae0709397004b1f23b14a7411fbd","unresolved":false,"context_lines":[{"line_number":30,"context_line":"LOG \u003d logging.getLogger(\"nova.api.contrib.deferred-delete\")"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"class Deferred_delete(extensions.ExtensionDescriptor):"},{"line_number":34,"context_line":"    def __init__(self):"},{"line_number":35,"context_line":"        super(Deferred_delete, self).__init__()"},{"line_number":36,"context_line":"        self.compute_api \u003d compute.API()"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAACX%2F%2F7Y8%3D","side":"PARENT","line":33,"in_reply_to":"AAAACX%2F%2F7ZM%3D","updated":"2011-10-20 23:03:30.000000000","message":"Yeah, I agree, but it\u0027s what was there before.","commit_id":"75a3fbb21eebd4de8775b63c327d9d57859d090c"}],"nova/api/openstack/extensions.py":[{"author":{"_account_id":706,"name":"Brian Lamar","email":"brian.lamar@rackspace.com","username":"blamar"},"change_message_id":"56a7cb234c19672bbd4c6f29e457eb7bb58db95f","unresolved":false,"context_lines":[{"line_number":409,"context_line":"        callable that will be imported and called with one"},{"line_number":410,"context_line":"        argument--the extension manager.  The factory callable is"},{"line_number":411,"context_line":"        expected to call the register() method at least once."},{"line_number":412,"context_line":"        \"\"\""},{"line_number":413,"context_line":""},{"line_number":414,"context_line":"        LOG.debug(_(\"Loading extension %s\"), ext_factory)"},{"line_number":415,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAACX%2F%2F7UM%3D","line":412,"updated":"2011-10-21 16:51:51.000000000","message":"Blank line needed at the end of a block docstring as per HACKING.","commit_id":"3480cac1893c697aa290e6c3f56b2b7d97007adc"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"a95d5a370d33afb846796ea6522ec209d164dc43","unresolved":false,"context_lines":[{"line_number":409,"context_line":"        callable that will be imported and called with one"},{"line_number":410,"context_line":"        argument--the extension manager.  The factory callable is"},{"line_number":411,"context_line":"        expected to call the register() method at least once."},{"line_number":412,"context_line":"        \"\"\""},{"line_number":413,"context_line":""},{"line_number":414,"context_line":"        LOG.debug(_(\"Loading extension %s\"), ext_factory)"},{"line_number":415,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAACX%2F%2F7Tk%3D","line":412,"in_reply_to":"AAAACX%2F%2F7UM%3D","updated":"2011-10-21 17:21:13.000000000","message":"I have no problem doing this, and have a new patch set ready to upload with the requisite change.  With that said, though, I wanted to point out that this convention never made sense to me, so I looked up PEP 257 to see where it had originated, and it appears that the BDFL had recommended it due to a limitation on Emacs\u0027 fill-paragraph command treating the closing quotes as part of the paragraph.  As an Emacs user, I can assert that this limitation no longer applies, at least in recent versions of Emacs.  I\u0027ll also point out that it was a recommendation in PEP 257.","commit_id":"3480cac1893c697aa290e6c3f56b2b7d97007adc"}]}
