)]}'
{"mistral/api/controllers/v2/action.py":[{"author":{"_account_id":18238,"name":"Hardik Parekh","email":"hardik.parekh047@gmail.com","username":"hparekh"},"change_message_id":"56ffd4c6bf32fff73e514f31220410e0f23cc178","unresolved":false,"context_lines":[{"line_number":187,"context_line":"                         types.uniquelist, wtypes.text, wtypes.text,"},{"line_number":188,"context_line":"                         wtypes.text)"},{"line_number":189,"context_line":"    def get_all(self, marker\u003dNone, limit\u003dNone, sort_keys\u003d\u0027name\u0027,"},{"line_number":190,"context_line":"                sort_dirs\u003d\u0027asc\u0027, fields\u003d\u0027\u0027, created_at\u003dNone, id\u003dNone,"},{"line_number":191,"context_line":"                name\u003dNone, scope\u003dNone, tag\u003dNone, tags\u003dNone, updated_at\u003dNone,"},{"line_number":192,"context_line":"                description\u003dNone, definition\u003dNone):"},{"line_number":193,"context_line":"        \"\"\"Return all actions."}],"source_content_type":"text/x-python","patch_set":1,"id":"3aaa91ec_bee89a7d","line":190,"range":{"start_line":190,"start_character":61,"end_line":190,"end_character":63},"updated":"2016-06-29 05:38:09.000000000","message":"Do we need Id for filter ? ID is unique.","commit_id":"a9eb0c5f82bca4b1398edd3c439ef7c3cee65c97"},{"author":{"_account_id":22003,"name":"Xavier Hardy","email":"hardyxavier@gmail.com","username":"xavierhardy"},"change_message_id":"ec03be01b90ef63b78781de823a7fd40b6a7b8b1","unresolved":false,"context_lines":[{"line_number":187,"context_line":"                         types.uniquelist, wtypes.text, wtypes.text,"},{"line_number":188,"context_line":"                         wtypes.text)"},{"line_number":189,"context_line":"    def get_all(self, marker\u003dNone, limit\u003dNone, sort_keys\u003d\u0027name\u0027,"},{"line_number":190,"context_line":"                sort_dirs\u003d\u0027asc\u0027, fields\u003d\u0027\u0027, created_at\u003dNone, id\u003dNone,"},{"line_number":191,"context_line":"                name\u003dNone, scope\u003dNone, tag\u003dNone, tags\u003dNone, updated_at\u003dNone,"},{"line_number":192,"context_line":"                description\u003dNone, definition\u003dNone):"},{"line_number":193,"context_line":"        \"\"\"Return all actions."}],"source_content_type":"text/x-python","patch_set":1,"id":"3aaa91ec_b9127460","line":190,"range":{"start_line":190,"start_character":61,"end_line":190,"end_character":63},"in_reply_to":"3aaa91ec_bee89a7d","updated":"2016-06-29 06:20:04.000000000","message":"It\u0027s for completeness and consistency. But yes, ID is unique.","commit_id":"a9eb0c5f82bca4b1398edd3c439ef7c3cee65c97"},{"author":{"_account_id":9712,"name":"Dougal Matthews","email":"dougal.matthews@canonical.com","username":"dougal"},"change_message_id":"bd822ae074d0bb2c11e1b99ee193caedf42a1531","unresolved":false,"context_lines":[{"line_number":200,"context_line":"                       be returned. \u0027id\u0027 will be included automatically in"},{"line_number":201,"context_line":"                       fields if it\u0027s provided, since it will be used when"},{"line_number":202,"context_line":"                       constructing \u0027next\u0027 link."},{"line_number":203,"context_line":"        :param filters: Optional. A list of filters to apply to the result."},{"line_number":204,"context_line":""},{"line_number":205,"context_line":"        Where project_id is the same as the requester or"},{"line_number":206,"context_line":"        project_id is different but the scope is public."}],"source_content_type":"text/x-python","patch_set":6,"id":"1aa78d24_295758cf","side":"PARENT","line":203,"updated":"2016-07-05 15:25:28.000000000","message":"as per my comment, this is an example that isn\u0027t accurate now.","commit_id":"b28f6c0f3439bc8232abdb9fc5bfac7d27a57022"}],"mistral/api/controllers/v2/workbook.py":[{"author":{"_account_id":18238,"name":"Hardik Parekh","email":"hardik.parekh047@gmail.com","username":"hparekh"},"change_message_id":"56ffd4c6bf32fff73e514f31220410e0f23cc178","unresolved":false,"context_lines":[{"line_number":159,"context_line":"        \"\"\""},{"line_number":160,"context_line":"        acl.enforce(\u0027workbooks:list\u0027, context.ctx())"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"        if tag is not None:"},{"line_number":163,"context_line":"            tags \u003d [tag]"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"        filters \u003d rest_utils.filters_to_dict("},{"line_number":166,"context_line":"            created_at\u003dcreated_at,"}],"source_content_type":"text/x-python","patch_set":1,"id":"3aaa91ec_3991649a","line":163,"range":{"start_line":162,"start_character":6,"end_line":163,"end_character":24},"updated":"2016-06-29 05:38:09.000000000","message":"Here what if user mentioned tag and tags both.? tags will be replaced by tag. \nHow about append tag in tags ?","commit_id":"a9eb0c5f82bca4b1398edd3c439ef7c3cee65c97"}],"mistral/api/controllers/v2/workflow.py":[{"author":{"_account_id":6732,"name":"Lingxian Kong","email":"anlin.kong@gmail.com","username":"kong"},"change_message_id":"a01a9a21cca7c53fb4b8bab9d50a4e5eb5164292","unresolved":false,"context_lines":[{"line_number":241,"context_line":"                         types.uniquelist, SCOPE_TYPES, types.uuid,"},{"line_number":242,"context_line":"                         wtypes.text, wtypes.text)"},{"line_number":243,"context_line":"    def get_all(self, marker\u003dNone, limit\u003dNone, sort_keys\u003d\u0027created_at\u0027,"},{"line_number":244,"context_line":"                sort_dirs\u003d\u0027asc\u0027, fields\u003d\u0027\u0027, id\u003dNone, name\u003dNone, input\u003dNone,"},{"line_number":245,"context_line":"                definition\u003dNone, tag\u003dNone, tags\u003dNone, scope\u003dNone,"},{"line_number":246,"context_line":"                project_id\u003dNone, created_at\u003dNone, updated_at\u003dNone):"},{"line_number":247,"context_line":"        \"\"\"Return a list of workflows."},{"line_number":248,"context_line":""},{"line_number":249,"context_line":"        :param marker: Optional. Pagination marker for large data sets."}],"source_content_type":"text/x-python","patch_set":1,"id":"3aaa91ec_57139f0d","line":246,"range":{"start_line":244,"start_character":44,"end_line":246,"end_character":65},"updated":"2016-06-28 01:20:05.000000000","message":"Do we really want to make those params so exhaustive and explicitly? Does **filters(except tags) work?","commit_id":"a9eb0c5f82bca4b1398edd3c439ef7c3cee65c97"}],"mistral/db/v2/sqlalchemy/api.py":[{"author":{"_account_id":19206,"name":"Dawid Deja","email":"dawdej@gmail.com","username":"ddeja"},"change_message_id":"a9a3b09635e4ce6481d0725a2a3b7096e6ebd0c2","unresolved":false,"context_lines":[{"line_number":164,"context_line":"        tags \u003d kwargs.pop(\u0027tags\u0027, None)"},{"line_number":165,"context_line":"        query \u003d _secure_query(model, *columns).filter_by(**kwargs)"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"        # to match the tag list, at least all of the tags listed must be"},{"line_number":168,"context_line":"        # present"},{"line_number":169,"context_line":"        if tags:"},{"line_number":170,"context_line":"            tag_attr \u003d getattr(model, \u0027tags\u0027)"},{"line_number":171,"context_line":"            if len(tags) \u003d\u003d 1:"}],"source_content_type":"text/x-python","patch_set":6,"id":"1aa78d24_fe7cfb73","line":168,"range":{"start_line":167,"start_character":8,"end_line":168,"end_character":17},"updated":"2016-07-05 08:15:49.000000000","message":"Soft: Comments should be complaint with English language (sentence should start with capital letter, end with dot).","commit_id":"18094962677d5d405ea84f314f821eb1c345e85b"},{"author":{"_account_id":22003,"name":"Xavier Hardy","email":"hardyxavier@gmail.com","username":"xavierhardy"},"change_message_id":"93776faa55e57017a6470757949910eab5edf10d","unresolved":false,"context_lines":[{"line_number":164,"context_line":"        tags \u003d kwargs.pop(\u0027tags\u0027, None)"},{"line_number":165,"context_line":"        query \u003d _secure_query(model, *columns).filter_by(**kwargs)"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"        # to match the tag list, at least all of the tags listed must be"},{"line_number":168,"context_line":"        # present"},{"line_number":169,"context_line":"        if tags:"},{"line_number":170,"context_line":"            tag_attr \u003d getattr(model, \u0027tags\u0027)"},{"line_number":171,"context_line":"            if len(tags) \u003d\u003d 1:"}],"source_content_type":"text/x-python","patch_set":6,"id":"1aa78d24_e7ac6637","line":168,"range":{"start_line":167,"start_character":8,"end_line":168,"end_character":17},"in_reply_to":"1aa78d24_fe419b0c","updated":"2016-07-06 06:03:07.000000000","message":"You mentioned I should not patch just for that, so I won\u0027t.","commit_id":"18094962677d5d405ea84f314f821eb1c345e85b"},{"author":{"_account_id":22003,"name":"Xavier Hardy","email":"hardyxavier@gmail.com","username":"xavierhardy"},"change_message_id":"15f40c88d6f123197e3e8c48731ebca63f85e3de","unresolved":false,"context_lines":[{"line_number":164,"context_line":"        tags \u003d kwargs.pop(\u0027tags\u0027, None)"},{"line_number":165,"context_line":"        query \u003d _secure_query(model, *columns).filter_by(**kwargs)"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"        # to match the tag list, at least all of the tags listed must be"},{"line_number":168,"context_line":"        # present"},{"line_number":169,"context_line":"        if tags:"},{"line_number":170,"context_line":"            tag_attr \u003d getattr(model, \u0027tags\u0027)"},{"line_number":171,"context_line":"            if len(tags) \u003d\u003d 1:"}],"source_content_type":"text/x-python","patch_set":6,"id":"1aa78d24_fe419b0c","line":168,"range":{"start_line":167,"start_character":8,"end_line":168,"end_character":17},"in_reply_to":"1aa78d24_fe7cfb73","updated":"2016-07-05 08:17:40.000000000","message":"OK, will fix ASAP","commit_id":"18094962677d5d405ea84f314f821eb1c345e85b"}],"mistral/utils/rest_utils.py":[{"author":{"_account_id":19206,"name":"Dawid Deja","email":"dawdej@gmail.com","username":"ddeja"},"change_message_id":"918814141df295d51ce0129f3d227492634521bd","unresolved":false,"context_lines":[{"line_number":116,"context_line":"    :return: Actual filters"},{"line_number":117,"context_line":"    :rtype: dict"},{"line_number":118,"context_line":"    \"\"\""},{"line_number":119,"context_line":"    filters \u003d {}"},{"line_number":120,"context_line":"    for key, value in kwargs.items():"},{"line_number":121,"context_line":"        if value is not None:"},{"line_number":122,"context_line":"            filters[key] \u003d value"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"    return filters"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"def get_all(list_cls, cls, get_all_function, get_function,"}],"source_content_type":"text/x-python","patch_set":1,"id":"3aaa91ec_53f8a17c","line":124,"range":{"start_line":119,"start_character":0,"end_line":124,"end_character":18},"updated":"2016-06-28 19:01:27.000000000","message":"Since kwargs is already a dict, you can use dict comprehension and make this function would look like this:\n\n def filters_to_dict(**kwargs):\n     return {k: v for k, v in kwargs.items() if v}\n\nIt is slightly faster:\n\nimport timeit\n\nkwargs \u003d {}\n\ndef foo():\n    return {k: v for k, v in kwargs.items() if v}\n\ndef bar():\n    filters \u003d {}\n    for key, value in kwargs.items():\n        if value is not None:\n            filters[key] \u003d value\n\n    return filters\n\nif __name__ \u003d\u003d \u0027__main__\u0027:\n    kwargs \u003d {i: i for i in range(0,100)}\n    print(timeit.timeit(foo))\n    kwargs \u003d {i: i for i in range(0,100)}\n    print(timeit.timeit(bar))\n\nresults in:\n9.27567911148\n10.1730620861","commit_id":"a9eb0c5f82bca4b1398edd3c439ef7c3cee65c97"},{"author":{"_account_id":18238,"name":"Hardik Parekh","email":"hardik.parekh047@gmail.com","username":"hparekh"},"change_message_id":"56ffd4c6bf32fff73e514f31220410e0f23cc178","unresolved":false,"context_lines":[{"line_number":116,"context_line":"    :return: Actual filters"},{"line_number":117,"context_line":"    :rtype: dict"},{"line_number":118,"context_line":"    \"\"\""},{"line_number":119,"context_line":"    filters \u003d {}"},{"line_number":120,"context_line":"    for key, value in kwargs.items():"},{"line_number":121,"context_line":"        if value is not None:"},{"line_number":122,"context_line":"            filters[key] \u003d value"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"    return filters"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"def get_all(list_cls, cls, get_all_function, get_function,"}],"source_content_type":"text/x-python","patch_set":1,"id":"3aaa91ec_f9135c5a","line":124,"range":{"start_line":119,"start_character":0,"end_line":124,"end_character":18},"in_reply_to":"3aaa91ec_53f8a17c","updated":"2016-06-29 05:38:09.000000000","message":"Yes agree.","commit_id":"a9eb0c5f82bca4b1398edd3c439ef7c3cee65c97"}],"update_commit":[{"author":{"_account_id":8731,"name":"Renat Akhmerov","email":"renat.akhmerov@gmail.com","username":"rakhmerov"},"change_message_id":"3d556b43bf214c841073ab3962e1d9b555069a0a","unresolved":false,"context_lines":[{"line_number":1,"context_line":"#!/bin/bash"},{"line_number":2,"context_line":"set -x"},{"line_number":3,"context_line":"BRANCH\u003d$(git branch | grep \"*\" | grep -Po \u0027[a-zA-Z_-]+\u0027)"},{"line_number":4,"context_line":"echo \"Current branch:\""}],"source_content_type":"application/x-shellscript","patch_set":5,"id":"1aa78d24_25867d13","line":1,"range":{"start_line":1,"start_character":7,"end_line":1,"end_character":11},"updated":"2016-07-05 04:37:51.000000000","message":"I would remove this script from this patch because it\u0027s not related to the main topic at all.\n\nSend it separately, if it\u0027s really needed. But provide better docs of what\u0027s it for.","commit_id":"260ec44514b91dd85514251f3fbcd4bfb53f0801"},{"author":{"_account_id":8731,"name":"Renat Akhmerov","email":"renat.akhmerov@gmail.com","username":"rakhmerov"},"change_message_id":"3d556b43bf214c841073ab3962e1d9b555069a0a","unresolved":false,"context_lines":[{"line_number":15,"context_line":"git apply /tmp/patch"},{"line_number":16,"context_line":"git add --all"},{"line_number":17,"context_line":"git commit -a"},{"line_number":18,"context_line":"git push github $BRANCH --force"},{"line_number":19,"context_line":"git push gerrit HEAD:refs/changes/$REF"}],"source_content_type":"application/x-shellscript","patch_set":5,"id":"1aa78d24_a5726d47","line":18,"range":{"start_line":18,"start_character":9,"end_line":18,"end_character":15},"updated":"2016-07-05 04:37:51.000000000","message":"github? Why?","commit_id":"260ec44514b91dd85514251f3fbcd4bfb53f0801"},{"author":{"_account_id":8731,"name":"Renat Akhmerov","email":"renat.akhmerov@gmail.com","username":"rakhmerov"},"change_message_id":"3d556b43bf214c841073ab3962e1d9b555069a0a","unresolved":false,"context_lines":[{"line_number":16,"context_line":"git add --all"},{"line_number":17,"context_line":"git commit -a"},{"line_number":18,"context_line":"git push github $BRANCH --force"},{"line_number":19,"context_line":"git push gerrit HEAD:refs/changes/$REF"}],"source_content_type":"application/x-shellscript","patch_set":5,"id":"1aa78d24_659fe550","line":19,"range":{"start_line":19,"start_character":4,"end_line":19,"end_character":8},"updated":"2016-07-05 04:37:51.000000000","message":"I\u0027m not exactly sure what you\u0027re doing here. We are supposed to use \"git review\" to update commits in remote repos.","commit_id":"260ec44514b91dd85514251f3fbcd4bfb53f0801"}]}
