)]}'
{"oslo_policy/_checks.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"4bfe5c79304abc606c4f64395456e3147c094007","unresolved":false,"context_lines":[{"line_number":19,"context_line":"import ast"},{"line_number":20,"context_line":"import inspect"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"import stevedore"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"if hasattr(inspect, \u0027getfullargspec\u0027):"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f560f44_791a83c6","line":22,"updated":"2020-09-30 09:33:54.000000000","message":"drop this line","commit_id":"e2ae6bebac99ff747f5afaca52961c715e46c91f"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"c249c412416c4a7849ab7e8d95fbf03d5ee6a060","unresolved":false,"context_lines":[{"line_number":19,"context_line":"import ast"},{"line_number":20,"context_line":"import inspect"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"import stevedore"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"if hasattr(inspect, \u0027getfullargspec\u0027):"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f560f44_6edeee3c","line":22,"in_reply_to":"9f560f44_791a83c6","updated":"2020-10-06 07:58:57.000000000","message":"Done","commit_id":"e2ae6bebac99ff747f5afaca52961c715e46c91f"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"4bfe5c79304abc606c4f64395456e3147c094007","unresolved":false,"context_lines":[{"line_number":86,"context_line":"    return rule(*rule_args)"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"class BaseCheck(object, metaclass\u003dabc.ABCMeta):"},{"line_number":90,"context_line":"    \"\"\"Abstract base class for Check classes.\"\"\""},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"    @abc.abstractmethod"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f560f44_39200bf9","line":89,"range":{"start_line":89,"start_character":16,"end_line":89,"end_character":24},"updated":"2020-09-30 09:33:54.000000000","message":"you don\u0027t need this","commit_id":"e2ae6bebac99ff747f5afaca52961c715e46c91f"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"c249c412416c4a7849ab7e8d95fbf03d5ee6a060","unresolved":false,"context_lines":[{"line_number":86,"context_line":"    return rule(*rule_args)"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"class BaseCheck(object, metaclass\u003dabc.ABCMeta):"},{"line_number":90,"context_line":"    \"\"\"Abstract base class for Check classes.\"\"\""},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"    @abc.abstractmethod"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f560f44_aec12651","line":89,"range":{"start_line":89,"start_character":16,"end_line":89,"end_character":24},"in_reply_to":"9f560f44_39200bf9","updated":"2020-10-06 07:58:57.000000000","message":"Done","commit_id":"e2ae6bebac99ff747f5afaca52961c715e46c91f"}],"oslo_policy/_parser.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"f2d880379c76ebea456262b54564ce94e18cb849","unresolved":false,"context_lines":[{"line_number":20,"context_line":""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"from oslo_policy import _checks"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"LOG \u003d logging.getLogger(__name__)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f560f44_d9b3cfeb","line":23,"updated":"2020-09-30 08:39:42.000000000","message":"pep8: E303 too many blank lines (3)","commit_id":"e2ae6bebac99ff747f5afaca52961c715e46c91f"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"c249c412416c4a7849ab7e8d95fbf03d5ee6a060","unresolved":false,"context_lines":[{"line_number":20,"context_line":""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"from oslo_policy import _checks"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"LOG \u003d logging.getLogger(__name__)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f560f44_4ea84a8b","line":23,"in_reply_to":"9f560f44_b979bbfc","updated":"2020-10-06 07:58:57.000000000","message":"Done","commit_id":"e2ae6bebac99ff747f5afaca52961c715e46c91f"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"4bfe5c79304abc606c4f64395456e3147c094007","unresolved":false,"context_lines":[{"line_number":20,"context_line":""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"from oslo_policy import _checks"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"LOG \u003d logging.getLogger(__name__)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f560f44_b979bbfc","line":23,"in_reply_to":"9f560f44_d9b3cfeb","updated":"2020-09-30 09:33:54.000000000","message":"you can drop two lines here","commit_id":"e2ae6bebac99ff747f5afaca52961c715e46c91f"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"4bfe5c79304abc606c4f64395456e3147c094007","unresolved":false,"context_lines":[{"line_number":72,"context_line":"        return super(ParseStateMeta, mcs).__new__(mcs, name, bases, cls_dict)"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"class ParseState(object, metaclass\u003dParseStateMeta):"},{"line_number":76,"context_line":"    \"\"\"Implement the core of parsing the policy language."},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"    Uses a greedy reduction algorithm to reduce a sequence of tokens into"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f560f44_f98333ca","line":75,"range":{"start_line":75,"start_character":17,"end_line":75,"end_character":25},"updated":"2020-09-30 09:33:54.000000000","message":"unnecessary","commit_id":"e2ae6bebac99ff747f5afaca52961c715e46c91f"}],"oslo_policy/tests/test_parser.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"4bfe5c79304abc606c4f64395456e3147c094007","unresolved":false,"context_lines":[{"line_number":16,"context_line":"from unittest import mock"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from oslotest import base as test_base"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from oslo_policy import _checks"},{"line_number":22,"context_line":"from oslo_policy import _parser"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f560f44_d95d8f7d","line":19,"updated":"2020-09-30 09:33:54.000000000","message":"drop this","commit_id":"e2ae6bebac99ff747f5afaca52961c715e46c91f"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"c249c412416c4a7849ab7e8d95fbf03d5ee6a060","unresolved":false,"context_lines":[{"line_number":16,"context_line":"from unittest import mock"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from oslotest import base as test_base"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from oslo_policy import _checks"},{"line_number":22,"context_line":"from oslo_policy import _parser"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f560f44_8e7a6222","line":19,"in_reply_to":"9f560f44_d95d8f7d","updated":"2020-10-06 07:58:57.000000000","message":"Done","commit_id":"e2ae6bebac99ff747f5afaca52961c715e46c91f"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"4bfe5c79304abc606c4f64395456e3147c094007","unresolved":false,"context_lines":[{"line_number":173,"context_line":"        self.assertEqual([[\u0027d\u0027, \u0027e\u0027, \u0027f\u0027], [\u0027a\u0027, \u0027b\u0027, \u0027c\u0027]], spam.reducers)"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"    def test_parse_state_meta(self):"},{"line_number":176,"context_line":"        class FakeState(object, metaclass\u003d_parser.ParseStateMeta):"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"            @_parser.reducer(\u0027a\u0027, \u0027b\u0027, \u0027c\u0027)"},{"line_number":179,"context_line":"            @_parser.reducer(\u0027d\u0027, \u0027e\u0027, \u0027f\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f560f44_796f2328","line":176,"range":{"start_line":176,"start_character":24,"end_line":176,"end_character":32},"updated":"2020-09-30 09:33:54.000000000","message":"drop","commit_id":"e2ae6bebac99ff747f5afaca52961c715e46c91f"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"c249c412416c4a7849ab7e8d95fbf03d5ee6a060","unresolved":false,"context_lines":[{"line_number":173,"context_line":"        self.assertEqual([[\u0027d\u0027, \u0027e\u0027, \u0027f\u0027], [\u0027a\u0027, \u0027b\u0027, \u0027c\u0027]], spam.reducers)"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"    def test_parse_state_meta(self):"},{"line_number":176,"context_line":"        class FakeState(object, metaclass\u003d_parser.ParseStateMeta):"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"            @_parser.reducer(\u0027a\u0027, \u0027b\u0027, \u0027c\u0027)"},{"line_number":179,"context_line":"            @_parser.reducer(\u0027d\u0027, \u0027e\u0027, \u0027f\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f560f44_ce745a39","line":176,"range":{"start_line":176,"start_character":24,"end_line":176,"end_character":32},"in_reply_to":"9f560f44_796f2328","updated":"2020-10-06 07:58:57.000000000","message":"Done","commit_id":"e2ae6bebac99ff747f5afaca52961c715e46c91f"}],"oslo_policy/tests/test_policy.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"4bfe5c79304abc606c4f64395456e3147c094007","unresolved":false,"context_lines":[{"line_number":23,"context_line":"from oslo_context import context"},{"line_number":24,"context_line":"from oslo_serialization import jsonutils"},{"line_number":25,"context_line":"from oslotest import base as test_base"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"from oslo_policy import _cache_handler"},{"line_number":29,"context_line":"from oslo_policy import _checks"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f560f44_b9625b3c","line":26,"updated":"2020-09-30 09:33:54.000000000","message":"drop this","commit_id":"e2ae6bebac99ff747f5afaca52961c715e46c91f"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"c249c412416c4a7849ab7e8d95fbf03d5ee6a060","unresolved":false,"context_lines":[{"line_number":23,"context_line":"from oslo_context import context"},{"line_number":24,"context_line":"from oslo_serialization import jsonutils"},{"line_number":25,"context_line":"from oslotest import base as test_base"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"from oslo_policy import _cache_handler"},{"line_number":29,"context_line":"from oslo_policy import _checks"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f560f44_ae6f665e","line":26,"in_reply_to":"9f560f44_b9625b3c","updated":"2020-10-06 07:58:57.000000000","message":"Done","commit_id":"e2ae6bebac99ff747f5afaca52961c715e46c91f"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"4bfe5c79304abc606c4f64395456e3147c094007","unresolved":false,"context_lines":[{"line_number":349,"context_line":"        self.enforcer.load_rules(False)"},{"line_number":350,"context_line":"        self.assertIsNotNone(self.enforcer.rules)"},{"line_number":351,"context_line":""},{"line_number":352,"context_line":"        old \u003d next(self.enforcer._policy_dir_mtimes.values())"},{"line_number":353,"context_line":"        self.assertEqual(1, len(self.enforcer._policy_dir_mtimes))"},{"line_number":354,"context_line":""},{"line_number":355,"context_line":"        # Touch the file"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f560f44_fcdde141","line":352,"range":{"start_line":352,"start_character":19,"end_line":352,"end_character":60},"updated":"2020-09-30 09:33:54.000000000","message":"You need to wrap this in \u0027iter()\u0027. You also don\u0027t need the \u0027.values()\u0027:\n\n  next(iter(self.enforcer._policy_dir_mtimes))","commit_id":"e2ae6bebac99ff747f5afaca52961c715e46c91f"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"c249c412416c4a7849ab7e8d95fbf03d5ee6a060","unresolved":false,"context_lines":[{"line_number":349,"context_line":"        self.enforcer.load_rules(False)"},{"line_number":350,"context_line":"        self.assertIsNotNone(self.enforcer.rules)"},{"line_number":351,"context_line":""},{"line_number":352,"context_line":"        old \u003d next(self.enforcer._policy_dir_mtimes.values())"},{"line_number":353,"context_line":"        self.assertEqual(1, len(self.enforcer._policy_dir_mtimes))"},{"line_number":354,"context_line":""},{"line_number":355,"context_line":"        # Touch the file"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f560f44_6e9a6e60","line":352,"range":{"start_line":352,"start_character":19,"end_line":352,"end_character":60},"in_reply_to":"9f560f44_fcdde141","updated":"2020-10-06 07:58:57.000000000","message":"Done","commit_id":"e2ae6bebac99ff747f5afaca52961c715e46c91f"}]}
