)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":11885,"name":"Ying Zuo","email":"yingzuo4@gmail.com","username":"yingzuo"},"change_message_id":"80b5f6a82f68574b0e4393b8352554e47e0000e4","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Some functions in api/neutron use @memoized decorator,"},{"line_number":10,"context_line":"but @memoized decorator cannot handle request.GET (an instance of"},{"line_number":11,"context_line":"QueryDict) because a weakwef to WSGIRequest is not hashable."},{"line_number":12,"context_line":"(Note that @memoized decorator can handle a dict itself)"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"What we actually need is the content of request.GET."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"bf3e73b7_bcdcbf18","line":11,"updated":"2017-08-07 05:05:08.000000000","message":"weakref","commit_id":"5e2d12aa6ec3be10bbd3b7c6cadb8e71c625e77c"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"e51d8b544cd4f44b07f69e1045d388bf30933b8c","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Some functions in api/neutron use @memoized decorator,"},{"line_number":10,"context_line":"but @memoized decorator cannot handle request.GET (an instance of"},{"line_number":11,"context_line":"QueryDict) because a weakwef to WSGIRequest is not hashable."},{"line_number":12,"context_line":"(Note that @memoized decorator can handle a dict itself)"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"What we actually need is the content of request.GET."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"9f436f4f_36aeace7","line":11,"in_reply_to":"bf3e73b7_bcdcbf18","updated":"2017-08-08 16:59:07.000000000","message":"Done","commit_id":"5e2d12aa6ec3be10bbd3b7c6cadb8e71c625e77c"}],"openstack_dashboard/api/rest/neutron.py":[{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"db1a94b6b6c057be7176650640e1541478308089","unresolved":false,"context_lines":[{"line_number":85,"context_line":"        a subnet."},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"        \"\"\""},{"line_number":88,"context_line":"        result \u003d api.neutron.subnet_list(request, **request.GET.dict())"},{"line_number":89,"context_line":"        return{\u0027items\u0027: [n.to_dict() for n in result]}"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"    @rest_utils.ajax(data_required\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":3,"id":"ff346bd7_9dceef57","line":88,"updated":"2017-07-27 22:03:27.000000000","message":"I can\u0027t test this patch at the moment, but dict is also unhashable type. How does this fix an issue?","commit_id":"d0ed4aa7b3970e32fba9c1be9f9d4a2425351a11"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"c9b5a5f9fed6f25257373b8c93b2d8d7a9f4c187","unresolved":false,"context_lines":[{"line_number":85,"context_line":"        a subnet."},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"        \"\"\""},{"line_number":88,"context_line":"        result \u003d api.neutron.subnet_list(request, **request.GET.dict())"},{"line_number":89,"context_line":"        return{\u0027items\u0027: [n.to_dict() for n in result]}"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"    @rest_utils.ajax(data_required\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":3,"id":"df3967d1_9403140e","line":88,"in_reply_to":"df3967d1_f9e379a3","updated":"2017-07-30 10:29:10.000000000","message":"Some correction: It is about QueryDict but a weakref for WSGI request. memoized decorator cannot handle QueryDict.","commit_id":"d0ed4aa7b3970e32fba9c1be9f9d4a2425351a11"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"60e82bf0c80ab531e54e60950b70d45026492e25","unresolved":false,"context_lines":[{"line_number":85,"context_line":"        a subnet."},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"        \"\"\""},{"line_number":88,"context_line":"        result \u003d api.neutron.subnet_list(request, **request.GET.dict())"},{"line_number":89,"context_line":"        return{\u0027items\u0027: [n.to_dict() for n in result]}"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"    @rest_utils.ajax(data_required\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":3,"id":"df3967d1_f9e379a3","line":88,"in_reply_to":"ff346bd7_9dceef57","updated":"2017-07-30 09:38:26.000000000","message":"@memoized already has a logic to handle a logic for a pure dict [1].\n\nThe unhashable warning is raised because a weakref for WSGI request cannot be handled. It is not caused by a dict.\n\nThus passing a dict rather than a QueryDict addresses the problem.\n\n[1] https://github.com/openstack/horizon/blob/master/horizon/utils/memoized.py#L35-L44","commit_id":"d0ed4aa7b3970e32fba9c1be9f9d4a2425351a11"}]}
