)]}'
{"vitrage/evaluator/template_functions/function_resolver.py":[{"author":{"_account_id":19134,"name":"Eyal","email":"eyalb1@gmail.com","username":"eyalb"},"change_message_id":"d4d80f0a5d1275f9532f4eeed437a89778538c73","unresolved":false,"context_lines":[{"line_number":24,"context_line":"FuncInfo \u003d namedtuple(\u0027FuncInfo\u0027, [\u0027name\u0027, \u0027func\u0027, \u0027error_code\u0027])"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"class FunctionResolver(object):"},{"line_number":28,"context_line":"    @classmethod"},{"line_number":29,"context_line":"    def resolve_function(cls, func_info, template, **kwargs):"},{"line_number":30,"context_line":"        return cls._traverse_function(func_info, template, True, **kwargs)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9fdfeff1_0d9cc468","line":27,"range":{"start_line":27,"start_character":6,"end_line":27,"end_character":22},"updated":"2019-02-20 07:34:10.000000000","message":"I think this class is redundant you can use a function in the module","commit_id":"ce57fd791e5daab86b5ac793eb1e725d15cf24b7"},{"author":{"_account_id":19184,"name":"Idan Hefetz","email":"idan.hefetz@nokia.com","username":"idan-hefetz"},"change_message_id":"8508e79e3dea5bd42fa405cee71a56e1a9a95ce5","unresolved":false,"context_lines":[{"line_number":24,"context_line":"FuncInfo \u003d namedtuple(\u0027FuncInfo\u0027, [\u0027name\u0027, \u0027func\u0027, \u0027error_code\u0027])"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"class FunctionResolver(object):"},{"line_number":28,"context_line":"    @classmethod"},{"line_number":29,"context_line":"    def resolve_function(cls, func_info, template, **kwargs):"},{"line_number":30,"context_line":"        return cls._traverse_function(func_info, template, True, **kwargs)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9fdfeff1_edc060e3","line":27,"range":{"start_line":27,"start_character":6,"end_line":27,"end_character":22},"in_reply_to":"9fdfeff1_0d9cc468","updated":"2019-02-20 09:23:22.000000000","message":"Done","commit_id":"ce57fd791e5daab86b5ac793eb1e725d15cf24b7"},{"author":{"_account_id":19134,"name":"Eyal","email":"eyalb1@gmail.com","username":"eyalb"},"change_message_id":"1f80d63c95d80b28e628045af00f31d8a2ebbd73","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"def resolve_function(func_info, template, **kwargs):"},{"line_number":28,"context_line":"    return _traverse_function(func_info, template, True, **kwargs)"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"def validate_function(func_info, template, **kwargs):"},{"line_number":32,"context_line":"    return _traverse_function(func_info, template, False, **kwargs)"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"def _traverse_function(func_info, template, resolve, **kwargs):"}],"source_content_type":"text/x-python","patch_set":2,"id":"9fdfeff1_c3b8cde6","line":32,"range":{"start_line":28,"start_character":3,"end_line":32,"end_character":67},"updated":"2019-02-20 09:30:15.000000000","message":"I would change the parameter with resolve\u003dTrue or resolve\u003dFalse to make it more clear when using boolean","commit_id":"6ed4732dd02d5c0ef3f8f9eef65099fe0f093a32"},{"author":{"_account_id":19184,"name":"Idan Hefetz","email":"idan.hefetz@nokia.com","username":"idan-hefetz"},"change_message_id":"3d12d1a3afe947e974da17d3522f6b3ff6187a9f","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"def resolve_function(func_info, template, **kwargs):"},{"line_number":28,"context_line":"    return _traverse_function(func_info, template, True, **kwargs)"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"def validate_function(func_info, template, **kwargs):"},{"line_number":32,"context_line":"    return _traverse_function(func_info, template, False, **kwargs)"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"def _traverse_function(func_info, template, resolve, **kwargs):"}],"source_content_type":"text/x-python","patch_set":2,"id":"9fdfeff1_e3b5d1d1","line":32,"range":{"start_line":28,"start_character":3,"end_line":32,"end_character":67},"in_reply_to":"9fdfeff1_c3b8cde6","updated":"2019-02-20 09:55:42.000000000","message":"Done","commit_id":"6ed4732dd02d5c0ef3f8f9eef65099fe0f093a32"}],"vitrage/tests/base.py":[{"author":{"_account_id":19134,"name":"Eyal","email":"eyalb1@gmail.com","username":"eyalb"},"change_message_id":"d4d80f0a5d1275f9532f4eeed437a89778538c73","unresolved":false,"context_lines":[{"line_number":91,"context_line":"                                   dict(g2_edges.get(e_source_id)),"},{"line_number":92,"context_line":"                                   \"Edges of each graph are not equal\")"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    def assert_starts_with(self, expected_prefix, observed_str, msg\u003dNone):"},{"line_number":95,"context_line":"        self.assertIsNotNone(observed_str)"},{"line_number":96,"context_line":"        self.assertTrue(observed_str.startswith(expected_prefix), msg)"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"    @staticmethod"},{"line_number":99,"context_line":"    def path_get(project_file\u003dNone):"}],"source_content_type":"text/x-python","patch_set":1,"id":"9fdfeff1_6dca306f","line":96,"range":{"start_line":94,"start_character":4,"end_line":96,"end_character":70},"updated":"2019-02-20 07:34:10.000000000","message":"you have this\n\nself.assertThat(str, matchers.StartsWith(\u0027prefix\u0027))","commit_id":"ce57fd791e5daab86b5ac793eb1e725d15cf24b7"},{"author":{"_account_id":19184,"name":"Idan Hefetz","email":"idan.hefetz@nokia.com","username":"idan-hefetz"},"change_message_id":"8508e79e3dea5bd42fa405cee71a56e1a9a95ce5","unresolved":false,"context_lines":[{"line_number":91,"context_line":"                                   dict(g2_edges.get(e_source_id)),"},{"line_number":92,"context_line":"                                   \"Edges of each graph are not equal\")"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    def assert_starts_with(self, expected_prefix, observed_str, msg\u003dNone):"},{"line_number":95,"context_line":"        self.assertIsNotNone(observed_str)"},{"line_number":96,"context_line":"        self.assertTrue(observed_str.startswith(expected_prefix), msg)"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"    @staticmethod"},{"line_number":99,"context_line":"    def path_get(project_file\u003dNone):"}],"source_content_type":"text/x-python","patch_set":1,"id":"9fdfeff1_2d1c28c0","line":96,"range":{"start_line":94,"start_character":4,"end_line":96,"end_character":70},"in_reply_to":"9fdfeff1_6dca306f","updated":"2019-02-20 09:23:22.000000000","message":"Done","commit_id":"ce57fd791e5daab86b5ac793eb1e725d15cf24b7"}],"vitrage/tests/functional/api_handler/test_templates.py":[{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"cdb348817f0ca5f1a33492bde6c65b4f960f32a3","unresolved":false,"context_lines":[{"line_number":22,"context_line":"from vitrage.tests.unit.entity_graph.base import TestEntityGraphUnitBase"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"class TestTemplates(TestEntityGraphUnitBase, TestConfiguration):"},{"line_number":26,"context_line":"    TEMPLATE_WITH_PARAMS \u003d \u0027v2_with_params.yaml\u0027"},{"line_number":27,"context_line":"    TEMPLATE_WITH_PARAMS_V3 \u003d \u0027v3_with_params.yaml\u0027"},{"line_number":28,"context_line":"    TEMPLATE_WITH_EXTRA_PARAM_DEF \u003d \u0027v2_with_extra_param_def.yaml\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"9fdfeff1_e3cf11b1","line":25,"range":{"start_line":25,"start_character":6,"end_line":25,"end_character":19},"updated":"2019-02-20 09:20:59.000000000","message":"I would split it to two files, for v2 and v3","commit_id":"ce57fd791e5daab86b5ac793eb1e725d15cf24b7"},{"author":{"_account_id":19184,"name":"Idan Hefetz","email":"idan.hefetz@nokia.com","username":"idan-hefetz"},"change_message_id":"3d12d1a3afe947e974da17d3522f6b3ff6187a9f","unresolved":false,"context_lines":[{"line_number":22,"context_line":"from vitrage.tests.unit.entity_graph.base import TestEntityGraphUnitBase"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"class TestTemplates(TestEntityGraphUnitBase, TestConfiguration):"},{"line_number":26,"context_line":"    TEMPLATE_WITH_PARAMS \u003d \u0027v2_with_params.yaml\u0027"},{"line_number":27,"context_line":"    TEMPLATE_WITH_PARAMS_V3 \u003d \u0027v3_with_params.yaml\u0027"},{"line_number":28,"context_line":"    TEMPLATE_WITH_EXTRA_PARAM_DEF \u003d \u0027v2_with_extra_param_def.yaml\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"9fdfeff1_43029d0d","line":25,"range":{"start_line":25,"start_character":6,"end_line":25,"end_character":19},"in_reply_to":"9fdfeff1_e3cf11b1","updated":"2019-02-20 09:55:42.000000000","message":"Done","commit_id":"ce57fd791e5daab86b5ac793eb1e725d15cf24b7"},{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"cdb348817f0ca5f1a33492bde6c65b4f960f32a3","unresolved":false,"context_lines":[{"line_number":194,"context_line":"            \u0027template_with_params_2_V3\u0027)"},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"    def _validate_template_with_extra_param_def("},{"line_number":197,"context_line":"            self, template_filename, name\u003d\u0027template_with_params_2\u0027):"},{"line_number":198,"context_line":"        # Setup"},{"line_number":199,"context_line":"        apis \u003d TemplateApis(notifier\u003dself.MockNotifier(), db\u003dself._db)"},{"line_number":200,"context_line":"        files_content \u003d self._load_template_content(template_filename)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9fdfeff1_0387b563","line":197,"range":{"start_line":197,"start_character":37,"end_line":197,"end_character":66},"updated":"2019-02-20 09:20:59.000000000","message":"I think it\u0027s nicer to define it in the _v2 function call and not as a default parameter","commit_id":"ce57fd791e5daab86b5ac793eb1e725d15cf24b7"},{"author":{"_account_id":19184,"name":"Idan Hefetz","email":"idan.hefetz@nokia.com","username":"idan-hefetz"},"change_message_id":"3d12d1a3afe947e974da17d3522f6b3ff6187a9f","unresolved":false,"context_lines":[{"line_number":194,"context_line":"            \u0027template_with_params_2_V3\u0027)"},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"    def _validate_template_with_extra_param_def("},{"line_number":197,"context_line":"            self, template_filename, name\u003d\u0027template_with_params_2\u0027):"},{"line_number":198,"context_line":"        # Setup"},{"line_number":199,"context_line":"        apis \u003d TemplateApis(notifier\u003dself.MockNotifier(), db\u003dself._db)"},{"line_number":200,"context_line":"        files_content \u003d self._load_template_content(template_filename)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9fdfeff1_defc200e","line":197,"range":{"start_line":197,"start_character":37,"end_line":197,"end_character":66},"in_reply_to":"9fdfeff1_0387b563","updated":"2019-02-20 09:55:42.000000000","message":"Done","commit_id":"ce57fd791e5daab86b5ac793eb1e725d15cf24b7"},{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"cdb348817f0ca5f1a33492bde6c65b4f960f32a3","unresolved":false,"context_lines":[{"line_number":264,"context_line":"            self.TEMPLATE_WITH_PARAMS_V3, name\u003d\u0027template_with_params_4_v3\u0027)"},{"line_number":265,"context_line":""},{"line_number":266,"context_line":"    def _add_template_with_actual_params(self, template_filename,"},{"line_number":267,"context_line":"                                         name\u003d\u0027template_with_params_4\u0027):"},{"line_number":268,"context_line":"        # Setup"},{"line_number":269,"context_line":"        files_content \u003d self._load_template_content(template_filename)"},{"line_number":270,"context_line":"        params \u003d {\u0027template_name\u0027: name,"}],"source_content_type":"text/x-python","patch_set":1,"id":"9fdfeff1_c380cd49","line":267,"range":{"start_line":267,"start_character":41,"end_line":267,"end_character":70},"updated":"2019-02-20 09:20:59.000000000","message":"Same here","commit_id":"ce57fd791e5daab86b5ac793eb1e725d15cf24b7"},{"author":{"_account_id":19184,"name":"Idan Hefetz","email":"idan.hefetz@nokia.com","username":"idan-hefetz"},"change_message_id":"3d12d1a3afe947e974da17d3522f6b3ff6187a9f","unresolved":false,"context_lines":[{"line_number":264,"context_line":"            self.TEMPLATE_WITH_PARAMS_V3, name\u003d\u0027template_with_params_4_v3\u0027)"},{"line_number":265,"context_line":""},{"line_number":266,"context_line":"    def _add_template_with_actual_params(self, template_filename,"},{"line_number":267,"context_line":"                                         name\u003d\u0027template_with_params_4\u0027):"},{"line_number":268,"context_line":"        # Setup"},{"line_number":269,"context_line":"        files_content \u003d self._load_template_content(template_filename)"},{"line_number":270,"context_line":"        params \u003d {\u0027template_name\u0027: name,"}],"source_content_type":"text/x-python","patch_set":1,"id":"9fdfeff1_9e06981c","line":267,"range":{"start_line":267,"start_character":41,"end_line":267,"end_character":70},"in_reply_to":"9fdfeff1_c380cd49","updated":"2019-02-20 09:55:42.000000000","message":"Done","commit_id":"ce57fd791e5daab86b5ac793eb1e725d15cf24b7"},{"author":{"_account_id":19159,"name":"Ifat Afek","email":"ifat.afek@nokia.com","username":"ifat_afek"},"change_message_id":"cdb348817f0ca5f1a33492bde6c65b4f960f32a3","unresolved":false,"context_lines":[{"line_number":285,"context_line":"        self._add_template_with_missing_param_def("},{"line_number":286,"context_line":"            self.TEMPLATE_WITH_MISSING_PARAM_DEF)"},{"line_number":287,"context_line":""},{"line_number":288,"context_line":"    def test_add_template_with_missing_param_def_v4(self):"},{"line_number":289,"context_line":"        self._add_template_with_missing_param_def("},{"line_number":290,"context_line":"            self.TEMPLATE_WITH_MISSING_PARAM_DEF_V3)"},{"line_number":291,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9fdfeff1_8392c59e","line":288,"range":{"start_line":288,"start_character":49,"end_line":288,"end_character":51},"updated":"2019-02-20 09:20:59.000000000","message":"v4?...","commit_id":"ce57fd791e5daab86b5ac793eb1e725d15cf24b7"},{"author":{"_account_id":19184,"name":"Idan Hefetz","email":"idan.hefetz@nokia.com","username":"idan-hefetz"},"change_message_id":"3d12d1a3afe947e974da17d3522f6b3ff6187a9f","unresolved":false,"context_lines":[{"line_number":285,"context_line":"        self._add_template_with_missing_param_def("},{"line_number":286,"context_line":"            self.TEMPLATE_WITH_MISSING_PARAM_DEF)"},{"line_number":287,"context_line":""},{"line_number":288,"context_line":"    def test_add_template_with_missing_param_def_v4(self):"},{"line_number":289,"context_line":"        self._add_template_with_missing_param_def("},{"line_number":290,"context_line":"            self.TEMPLATE_WITH_MISSING_PARAM_DEF_V3)"},{"line_number":291,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9fdfeff1_be0b5c22","line":288,"range":{"start_line":288,"start_character":49,"end_line":288,"end_character":51},"in_reply_to":"9fdfeff1_8392c59e","updated":"2019-02-20 09:55:42.000000000","message":"Done","commit_id":"ce57fd791e5daab86b5ac793eb1e725d15cf24b7"}]}
