)]}'
{"openstack/message/v1/_proxy.py":[{"author":{"_account_id":8257,"name":"Brian Curtin","email":"brian@python.org","username":"briancurtin"},"change_message_id":"83dd82d72eb470c388339ea94a50bbc433d7d19e","unresolved":false,"context_lines":[{"line_number":44,"context_line":"        \"\"\""},{"line_number":45,"context_line":"        return self._delete(queue.Queue, value, ignore_missing\u003dignore_missing)"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    def create_messages(self, client_id, value, messages):"},{"line_number":48,"context_line":"        \"\"\"Create new messages"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"        :param uuid client_id: A UUID for each client instance. The UUID must"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a016987_6262da3f","line":47,"updated":"2015-06-01 15:44:26.000000000","message":"I think I would still prefer client over client_id. In most other places we\u0027ve removed _id suffixes for a slightly different reason (since it can take a resource as well), but even though that might not or won\u0027t be the case here, you\u0027re sending a value pertaining to a client, and it happens to be its id.","commit_id":"70345e408e3ac94110aa9c87593e0f2e973c0cc0"},{"author":{"_account_id":1112,"name":"Everett Toews","email":"everett.toews@rackspace.com","username":"everett-toews"},"change_message_id":"07b446d4c6b1fea026dfb273b740b2de67587cc6","unresolved":false,"context_lines":[{"line_number":44,"context_line":"        \"\"\""},{"line_number":45,"context_line":"        return self._delete(queue.Queue, value, ignore_missing\u003dignore_missing)"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    def create_messages(self, client_id, value, messages):"},{"line_number":48,"context_line":"        \"\"\"Create new messages"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"        :param uuid client_id: A UUID for each client instance. The UUID must"}],"source_content_type":"text/x-python","patch_set":1,"id":"5afe65bd_a780b947","line":47,"in_reply_to":"7a016987_6262da3f","updated":"2015-06-01 21:23:17.000000000","message":"Done","commit_id":"70345e408e3ac94110aa9c87593e0f2e973c0cc0"},{"author":{"_account_id":1112,"name":"Everett Toews","email":"everett.toews@rackspace.com","username":"everett-toews"},"change_message_id":"6a3c3fe2560ec3e4bad5a588e7b91948453fb9cd","unresolved":false,"context_lines":[{"line_number":67,"context_line":"        :rtype: list ids: A list of ids that correspond to the messages"},{"line_number":68,"context_line":"                          created, in order."},{"line_number":69,"context_line":"        \"\"\""},{"line_number":70,"context_line":"        res \u003d message.Message.new()"},{"line_number":71,"context_line":"        queue_name \u003d message.Message.get_id(value)"},{"line_number":72,"context_line":"        return res.create(self.session, client_id, queue_name, messages)"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a016987_2de51108","line":70,"updated":"2015-05-30 21:46:32.000000000","message":"Creating a resource just to call create() on it feels all sorts of wrong. But between having to supply the client ID, the queue name, and a *list* of messages, I have to bypass the BaseProxy _create() method and go straight to a custom resource create() method.\n\nWhat other options do I have here?","commit_id":"70345e408e3ac94110aa9c87593e0f2e973c0cc0"},{"author":{"_account_id":8257,"name":"Brian Curtin","email":"brian@python.org","username":"briancurtin"},"change_message_id":"83dd82d72eb470c388339ea94a50bbc433d7d19e","unresolved":false,"context_lines":[{"line_number":67,"context_line":"        :rtype: list ids: A list of ids that correspond to the messages"},{"line_number":68,"context_line":"                          created, in order."},{"line_number":69,"context_line":"        \"\"\""},{"line_number":70,"context_line":"        res \u003d message.Message.new()"},{"line_number":71,"context_line":"        queue_name \u003d message.Message.get_id(value)"},{"line_number":72,"context_line":"        return res.create(self.session, client_id, queue_name, messages)"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a016987_62be5a66","line":70,"in_reply_to":"7a016987_2de51108","updated":"2015-06-01 15:44:26.000000000","message":"You could make your overridden create a classmethod and then skip this instance creation since this is really the only way it\u0027s intended to be used.","commit_id":"70345e408e3ac94110aa9c87593e0f2e973c0cc0"},{"author":{"_account_id":1112,"name":"Everett Toews","email":"everett.toews@rackspace.com","username":"everett-toews"},"change_message_id":"07b446d4c6b1fea026dfb273b740b2de67587cc6","unresolved":false,"context_lines":[{"line_number":67,"context_line":"        :rtype: list ids: A list of ids that correspond to the messages"},{"line_number":68,"context_line":"                          created, in order."},{"line_number":69,"context_line":"        \"\"\""},{"line_number":70,"context_line":"        res \u003d message.Message.new()"},{"line_number":71,"context_line":"        queue_name \u003d message.Message.get_id(value)"},{"line_number":72,"context_line":"        return res.create(self.session, client_id, queue_name, messages)"}],"source_content_type":"text/x-python","patch_set":1,"id":"5afe65bd_1dba3ee2","line":70,"in_reply_to":"7a016987_62be5a66","updated":"2015-06-01 21:23:17.000000000","message":"Done","commit_id":"70345e408e3ac94110aa9c87593e0f2e973c0cc0"}],"openstack/message/v1/message.py":[{"author":{"_account_id":8257,"name":"Brian Curtin","email":"brian@python.org","username":"briancurtin"},"change_message_id":"83dd82d72eb470c388339ea94a50bbc433d7d19e","unresolved":false,"context_lines":[{"line_number":41,"context_line":"    @staticmethod"},{"line_number":42,"context_line":"    def get_message_id(href):"},{"line_number":43,"context_line":"        \"\"\"Get the ID of a message, which is the last component in an href.\"\"\""},{"line_number":44,"context_line":"        return href[href.rfind(\u0027/\u0027)+1:]"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    def create(self, session, client_id\u003dNone, queue_name\u003dNone, messages\u003dNone):"},{"line_number":47,"context_line":"        \"\"\"Create a remote resource from this instance.\"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"7a016987_05a6900e","line":44,"updated":"2015-06-01 15:44:26.000000000","message":"Is this going to be useful by itself outside of its use in `create`?\n\nAlso, while this is correct, I\u0027m trying to think if there\u0027s anything inside of urllib that would be more clear on this. It\u0027s not like it\u0027s tricky or anything, but if you get a weird input to it, it\u0027ll fail in a less predictable way than something expecting to work with URL fragments.","commit_id":"70345e408e3ac94110aa9c87593e0f2e973c0cc0"},{"author":{"_account_id":1112,"name":"Everett Toews","email":"everett.toews@rackspace.com","username":"everett-toews"},"change_message_id":"07b446d4c6b1fea026dfb273b740b2de67587cc6","unresolved":false,"context_lines":[{"line_number":41,"context_line":"    @staticmethod"},{"line_number":42,"context_line":"    def get_message_id(href):"},{"line_number":43,"context_line":"        \"\"\"Get the ID of a message, which is the last component in an href.\"\"\""},{"line_number":44,"context_line":"        return href[href.rfind(\u0027/\u0027)+1:]"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    def create(self, session, client_id\u003dNone, queue_name\u003dNone, messages\u003dNone):"},{"line_number":47,"context_line":"        \"\"\"Create a remote resource from this instance.\"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"5afe65bd_7d1db20e","line":44,"in_reply_to":"7a016987_05a6900e","updated":"2015-06-01 21:23:17.000000000","message":"Other message service calls return responses with hrefs that will also make use of this.\n\nurllib.parse works well to proof it against more complicated herfs and I just had to use six to get a Python 2/3 version working.","commit_id":"70345e408e3ac94110aa9c87593e0f2e973c0cc0"},{"author":{"_account_id":8257,"name":"Brian Curtin","email":"brian@python.org","username":"briancurtin"},"change_message_id":"83dd82d72eb470c388339ea94a50bbc433d7d19e","unresolved":false,"context_lines":[{"line_number":43,"context_line":"        \"\"\"Get the ID of a message, which is the last component in an href.\"\"\""},{"line_number":44,"context_line":"        return href[href.rfind(\u0027/\u0027)+1:]"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    def create(self, session, client_id\u003dNone, queue_name\u003dNone, messages\u003dNone):"},{"line_number":47,"context_line":"        \"\"\"Create a remote resource from this instance.\"\"\""},{"line_number":48,"context_line":"        url \u003d Message._get_url({\u0027queue_name\u0027: queue_name})"},{"line_number":49,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"7a016987_4268fef4","line":46,"updated":"2015-06-01 15:44:26.000000000","message":"This should probably be something like create_from_messages, or something more descriptive that doesn\u0027t override the base create directly. You can also then make this a classmethod like the other create_ ones and use it more directly from the proxy.","commit_id":"70345e408e3ac94110aa9c87593e0f2e973c0cc0"},{"author":{"_account_id":1112,"name":"Everett Toews","email":"everett.toews@rackspace.com","username":"everett-toews"},"change_message_id":"07b446d4c6b1fea026dfb273b740b2de67587cc6","unresolved":false,"context_lines":[{"line_number":43,"context_line":"        \"\"\"Get the ID of a message, which is the last component in an href.\"\"\""},{"line_number":44,"context_line":"        return href[href.rfind(\u0027/\u0027)+1:]"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    def create(self, session, client_id\u003dNone, queue_name\u003dNone, messages\u003dNone):"},{"line_number":47,"context_line":"        \"\"\"Create a remote resource from this instance.\"\"\""},{"line_number":48,"context_line":"        url \u003d Message._get_url({\u0027queue_name\u0027: queue_name})"},{"line_number":49,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"5afe65bd_dddca648","line":46,"in_reply_to":"7a016987_4268fef4","updated":"2015-06-01 21:23:17.000000000","message":"Done","commit_id":"70345e408e3ac94110aa9c87593e0f2e973c0cc0"},{"author":{"_account_id":8736,"name":"Terry Howe","email":"terrylhowe@gmail.com","username":"terrylhowe"},"change_message_id":"4b1155194b2f30ecec20426e0ff86351faf09786","unresolved":false,"context_lines":[{"line_number":28,"context_line":"    allow_list \u003d False"},{"line_number":29,"context_line":"    allow_retrieve \u003d False"},{"line_number":30,"context_line":"    allow_delete \u003d False"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    #: An arbitrary JSON document that constitutes the body of the message"},{"line_number":33,"context_line":"    #: being sent."},{"line_number":34,"context_line":"    body \u003d resource.prop(\"body\")"}],"source_content_type":"text/x-python","patch_set":2,"id":"5afe65bd_57ee3323","line":31,"updated":"2015-06-02 17:08:22.000000000","message":"Normally, queue_name would be a property of this resource so it can stand alone. If you make queu a property with type\u003dqueue.Queue and maybe some adjustment on the base_path, default proxy method may work.\n\nIn this case, maybe client_id or client should be a property as well.","commit_id":"7bd1abbfc05a3791f86664c455710b553724be33"},{"author":{"_account_id":1112,"name":"Everett Toews","email":"everett.toews@rackspace.com","username":"everett-toews"},"change_message_id":"1da1d37392c7da9a291490678c98d77a08cfbd6e","unresolved":false,"context_lines":[{"line_number":28,"context_line":"    allow_list \u003d False"},{"line_number":29,"context_line":"    allow_retrieve \u003d False"},{"line_number":30,"context_line":"    allow_delete \u003d False"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    #: An arbitrary JSON document that constitutes the body of the message"},{"line_number":33,"context_line":"    #: being sent."},{"line_number":34,"context_line":"    body \u003d resource.prop(\"body\")"}],"source_content_type":"text/x-python","patch_set":2,"id":"5afe65bd_00a0699e","line":31,"in_reply_to":"5afe65bd_57ee3323","updated":"2015-06-02 18:37:08.000000000","message":"I actually had it this way the first time I wrote it. I took them out because it\u0027s quite misleading to have them there.\n\nIf you had client id as a prop on the Message, that indicates to a user that they could create many Messages with create_from_messages(), all with different client ids. That\u0027s not the case. Since client id is a header it applies to all of the Messages in a call to create_from_messages(). And it\u0027s impossible for the SDK to pick the client id for the header if any of the Messages had different client ids.\n\nLikewise with queue, except that it\u0027s in the path and applies to all Messages.\n\nThe only way it makes sense to put client id and queue on Message is to not expose the ability to create multiple Message at once. You would have to hide that ability behind the SDK API and only allow the user to create 1 Message at a time. We\u0027d be trading performance/functionality of the API for consistency in the SDK.\n\nIn this case I think we should keep the performance/functionality of the API and expose the feature in the SDK.","commit_id":"7bd1abbfc05a3791f86664c455710b553724be33"},{"author":{"_account_id":12807,"name":"Steve Lewis (stevelle)","email":"stevelle@gmail.com","username":"stevelle"},"change_message_id":"9caee05112f9d4049ef7f7490702cbd232c643b6","unresolved":false,"context_lines":[{"line_number":28,"context_line":"    allow_list \u003d False"},{"line_number":29,"context_line":"    allow_retrieve \u003d False"},{"line_number":30,"context_line":"    allow_delete \u003d False"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    #: An arbitrary JSON document that constitutes the body of the message"},{"line_number":33,"context_line":"    #: being sent."},{"line_number":34,"context_line":"    body \u003d resource.prop(\"body\")"}],"source_content_type":"text/x-python","patch_set":2,"id":"5afe65bd_6046fd24","line":31,"in_reply_to":"5afe65bd_57ee3323","updated":"2015-06-02 18:26:42.000000000","message":"This would be a good chance to maintain consistency.","commit_id":"7bd1abbfc05a3791f86664c455710b553724be33"},{"author":{"_account_id":8736,"name":"Terry Howe","email":"terrylhowe@gmail.com","username":"terrylhowe"},"change_message_id":"4b1155194b2f30ecec20426e0ff86351faf09786","unresolved":false,"context_lines":[{"line_number":47,"context_line":"        return path[path.rfind(\u0027/\u0027)+1:]"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    @classmethod"},{"line_number":50,"context_line":"    def create_from_messages(cls, session, client_id\u003dNone, queue_name\u003dNone,"},{"line_number":51,"context_line":"                             messages\u003dNone):"},{"line_number":52,"context_line":"        \"\"\"Create a remote resource from this instance.\"\"\""},{"line_number":53,"context_line":"        url \u003d cls._get_url({\u0027queue_name\u0027: queue_name})"}],"source_content_type":"text/x-python","patch_set":2,"id":"5afe65bd_6be26305","line":50,"updated":"2015-06-02 17:08:22.000000000","message":"Maybe this could override create_by_id","commit_id":"7bd1abbfc05a3791f86664c455710b553724be33"},{"author":{"_account_id":8736,"name":"Terry Howe","email":"terrylhowe@gmail.com","username":"terrylhowe"},"change_message_id":"5eb83e3532d6d1076bc4d92e8c2c60194ec96eaa","unresolved":false,"context_lines":[{"line_number":47,"context_line":"        return path[path.rfind(\u0027/\u0027)+1:]"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    @classmethod"},{"line_number":50,"context_line":"    def create_from_messages(cls, session, client_id\u003dNone, queue_name\u003dNone,"},{"line_number":51,"context_line":"                             messages\u003dNone):"},{"line_number":52,"context_line":"        \"\"\"Create a remote resource from this instance.\"\"\""},{"line_number":53,"context_line":"        url \u003d cls._get_url({\u0027queue_name\u0027: queue_name})"}],"source_content_type":"text/x-python","patch_set":2,"id":"5afe65bd_a0bf55cf","line":50,"in_reply_to":"5afe65bd_20700572","updated":"2015-06-02 18:29:30.000000000","message":"I wasn\u0027t be entirely clear I guess.  I meant instead of creating a new method, just override https://github.com/stackforge/python-openstacksdk/blob/master/openstack/resource.py#L509 create_by_id","commit_id":"7bd1abbfc05a3791f86664c455710b553724be33"},{"author":{"_account_id":12807,"name":"Steve Lewis (stevelle)","email":"stevelle@gmail.com","username":"stevelle"},"change_message_id":"9caee05112f9d4049ef7f7490702cbd232c643b6","unresolved":false,"context_lines":[{"line_number":47,"context_line":"        return path[path.rfind(\u0027/\u0027)+1:]"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    @classmethod"},{"line_number":50,"context_line":"    def create_from_messages(cls, session, client_id\u003dNone, queue_name\u003dNone,"},{"line_number":51,"context_line":"                             messages\u003dNone):"},{"line_number":52,"context_line":"        \"\"\"Create a remote resource from this instance.\"\"\""},{"line_number":53,"context_line":"        url \u003d cls._get_url({\u0027queue_name\u0027: queue_name})"}],"source_content_type":"text/x-python","patch_set":2,"id":"5afe65bd_20700572","line":50,"in_reply_to":"5afe65bd_6be26305","updated":"2015-06-02 18:26:42.000000000","message":"I am not sure I like the idea that client_id substitutes for a resource id there, or am I misinterpreting?","commit_id":"7bd1abbfc05a3791f86664c455710b553724be33"},{"author":{"_account_id":1112,"name":"Everett Toews","email":"everett.toews@rackspace.com","username":"everett-toews"},"change_message_id":"1da1d37392c7da9a291490678c98d77a08cfbd6e","unresolved":false,"context_lines":[{"line_number":47,"context_line":"        return path[path.rfind(\u0027/\u0027)+1:]"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    @classmethod"},{"line_number":50,"context_line":"    def create_from_messages(cls, session, client_id\u003dNone, queue_name\u003dNone,"},{"line_number":51,"context_line":"                             messages\u003dNone):"},{"line_number":52,"context_line":"        \"\"\"Create a remote resource from this instance.\"\"\""},{"line_number":53,"context_line":"        url \u003d cls._get_url({\u0027queue_name\u0027: queue_name})"}],"source_content_type":"text/x-python","patch_set":2,"id":"5afe65bd_c0ddb115","line":50,"in_reply_to":"5afe65bd_6be26305","updated":"2015-06-02 18:37:08.000000000","message":"create_by_id() is for creating a single resource. This method creates multiple resources so I think overriding create_by_id() would be a bit misleading.","commit_id":"7bd1abbfc05a3791f86664c455710b553724be33"},{"author":{"_account_id":8736,"name":"Terry Howe","email":"terrylhowe@gmail.com","username":"terrylhowe"},"change_message_id":"4b1155194b2f30ecec20426e0ff86351faf09786","unresolved":false,"context_lines":[{"line_number":50,"context_line":"    def create_from_messages(cls, session, client_id\u003dNone, queue_name\u003dNone,"},{"line_number":51,"context_line":"                             messages\u003dNone):"},{"line_number":52,"context_line":"        \"\"\"Create a remote resource from this instance.\"\"\""},{"line_number":53,"context_line":"        url \u003d cls._get_url({\u0027queue_name\u0027: queue_name})"},{"line_number":54,"context_line":"        headers \u003d {\u0027Client-ID\u0027: client_id}"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"        resp \u003d session.post(url, service\u003dcls.service, headers\u003dheaders,"}],"source_content_type":"text/x-python","patch_set":2,"id":"5afe65bd_77e92f1a","line":53,"updated":"2015-06-02 17:08:22.000000000","message":"_get_url(self) I think if queue_name is prop","commit_id":"7bd1abbfc05a3791f86664c455710b553724be33"},{"author":{"_account_id":1112,"name":"Everett Toews","email":"everett.toews@rackspace.com","username":"everett-toews"},"change_message_id":"1da1d37392c7da9a291490678c98d77a08cfbd6e","unresolved":false,"context_lines":[{"line_number":50,"context_line":"    def create_from_messages(cls, session, client_id\u003dNone, queue_name\u003dNone,"},{"line_number":51,"context_line":"                             messages\u003dNone):"},{"line_number":52,"context_line":"        \"\"\"Create a remote resource from this instance.\"\"\""},{"line_number":53,"context_line":"        url \u003d cls._get_url({\u0027queue_name\u0027: queue_name})"},{"line_number":54,"context_line":"        headers \u003d {\u0027Client-ID\u0027: client_id}"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"        resp \u003d session.post(url, service\u003dcls.service, headers\u003dheaders,"}],"source_content_type":"text/x-python","patch_set":2,"id":"5afe65bd_e0ef8dae","line":53,"in_reply_to":"5afe65bd_77e92f1a","updated":"2015-06-02 18:37:08.000000000","message":"I don\u0027t think queue_name can be a prop for reasons discussed above.","commit_id":"7bd1abbfc05a3791f86664c455710b553724be33"}]}
