)]}'
{"glance/api/v3/artifacts.py":[{"author":{"_account_id":14676,"name":"Kairat Kushaev","email":"kkushaev@mirantis.com","username":"kairat_kushaev"},"change_message_id":"4195db174705c23b9921999ccf6c12ae29d14787","unresolved":false,"context_lines":[{"line_number":117,"context_line":"                        req, filters[\u0027name\u0027][0][\u0027value\u0027], type_name,"},{"line_number":118,"context_line":"                        type_version)"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"                if re.search(r\u0027^(\\d+(.\\d+)?(.\\d+)?(-\\d)?)$\u0027,"},{"line_number":121,"context_line":"                             filter[\u0027value\u0027]) is None:"},{"line_number":122,"context_line":"                    msg \u003d (_(\"Version %s is not validate\") % filter[\u0027value\u0027])"},{"line_number":123,"context_line":"                    raise webob.exc.HTTPBadRequest(explanation\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba15a1d1_66429040","line":120,"updated":"2015-09-15 13:21:52.000000000","message":"you have re.match function for the this purpose. I would recommend to use this function.","commit_id":"07ab76db412583d152a65510e531dfd747770fcf"},{"author":{"_account_id":14676,"name":"Kairat Kushaev","email":"kkushaev@mirantis.com","username":"kairat_kushaev"},"change_message_id":"4195db174705c23b9921999ccf6c12ae29d14787","unresolved":false,"context_lines":[{"line_number":119,"context_line":""},{"line_number":120,"context_line":"                if re.search(r\u0027^(\\d+(.\\d+)?(.\\d+)?(-\\d)?)$\u0027,"},{"line_number":121,"context_line":"                             filter[\u0027value\u0027]) is None:"},{"line_number":122,"context_line":"                    msg \u003d (_(\"Version %s is not validate\") % filter[\u0027value\u0027])"},{"line_number":123,"context_line":"                    raise webob.exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"ba15a1d1_bb120161","line":122,"updated":"2015-09-15 13:21:52.000000000","message":"I guess you should use something like \"The format of the version %s is not valid. Use semver notation.\".","commit_id":"07ab76db412583d152a65510e531dfd747770fcf"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"c8d7d55821f6ec53089672b17f1beb9b4e148ffa","unresolved":false,"context_lines":[{"line_number":119,"context_line":""},{"line_number":120,"context_line":"                if re.search(r\u0027^(\\d+(.\\d+)?(.\\d+)?(-\\d)?)$\u0027,"},{"line_number":121,"context_line":"                             filter[\u0027value\u0027]) is None:"},{"line_number":122,"context_line":"                    msg \u003d (_(\"Version %s is not validate\") % filter[\u0027value\u0027])"},{"line_number":123,"context_line":"                    raise webob.exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"ba15a1d1_86ab24d6","line":122,"updated":"2015-09-15 13:20:29.000000000","message":"s/validate/valid","commit_id":"07ab76db412583d152a65510e531dfd747770fcf"},{"author":{"_account_id":9303,"name":"Abhishek Kekane","email":"akekane@redhat.com","username":"abhishekkekane"},"change_message_id":"c8d7d55821f6ec53089672b17f1beb9b4e148ffa","unresolved":false,"context_lines":[{"line_number":122,"context_line":"                    msg \u003d (_(\"Version %s is not validate\") % filter[\u0027value\u0027])"},{"line_number":123,"context_line":"                    raise webob.exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"        return artifact_repo.list(filters\u003dfilters,"},{"line_number":127,"context_line":"                                  show_level\u003dShowlevel.BASIC,"},{"line_number":128,"context_line":"                                  **kwargs)"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba15a1d1_a6f3c809","line":125,"updated":"2015-09-15 13:20:29.000000000","message":"remove extra blank line","commit_id":"07ab76db412583d152a65510e531dfd747770fcf"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"4e7ff6ffd5b682058d6542e9d67ebea10ee14593","unresolved":false,"context_lines":[{"line_number":119,"context_line":""},{"line_number":120,"context_line":"                if re.match(r\u0027(\\d+(.\\d+)?(.\\d+)?(-\\d)?)$\u0027,"},{"line_number":121,"context_line":"                            filter[\u0027value\u0027]) is None:"},{"line_number":122,"context_line":"                    msg \u003d (_(\u0027The format of the version %s is not valid.\u0027"},{"line_number":123,"context_line":"                             \u0027Use semver notation\u0027) % filter[\u0027value\u0027])"},{"line_number":124,"context_line":"                    raise webob.exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":125,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"ba15a1d1_7decfaf2","line":122,"updated":"2015-09-17 15:26:02.000000000","message":"You forgot a space in the end of the string \u0027valid. \u0027","commit_id":"ab671c06100b75ec92800d578ec7098e297336bf"},{"author":{"_account_id":8127,"name":"Alexander Tivelkov","email":"locher@yandex.ru","username":"ativelkov"},"change_message_id":"578dd029bf7d400b4d0271c90f6d1e9d02dec4d8","unresolved":false,"context_lines":[{"line_number":117,"context_line":"                        req, filters[\u0027name\u0027][0][\u0027value\u0027], type_name,"},{"line_number":118,"context_line":"                        type_version)"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"                if re.match(r\u0027(\\d+(.\\d+)?(.\\d+)?(-\\d)?)$\u0027,"},{"line_number":121,"context_line":"                            filter[\u0027value\u0027]) is None:"},{"line_number":122,"context_line":"                    msg \u003d (_(\u0027The format of the version %s is not valid.\u0027"},{"line_number":123,"context_line":"                             \u0027Use semver notation\u0027) % filter[\u0027value\u0027])"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba15a1d1_9587e8d6","line":120,"updated":"2015-09-21 16:40:18.000000000","message":"First of all, this regexp is wrong: its \"pre-release\" part is definitely incorrect, it misses the \"build metadata\" part, it ignores \"no-leading-zero\" rules etc.\n\nMoreover, you should not check regexps explicitly: even if you write it properly, its validation will leak the implementation details out of semver library.\nInstead, import the semantic_version module and use the semantic_version.validate function to validate the expression.","commit_id":"62d2f2ffbc13e8bb0093303d1c6bf43bbbab245f"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"a5235dd9f5efb76d1a144e2e62ef84a156b2709f","unresolved":false,"context_lines":[{"line_number":117,"context_line":"                        req, filters[\u0027name\u0027][0][\u0027value\u0027], type_name,"},{"line_number":118,"context_line":"                        type_version)"},{"line_number":119,"context_line":"                try:"},{"line_number":120,"context_line":"                    semantic_version.Version(filter[\u0027value\u0027], partial\u003dTrue)"},{"line_number":121,"context_line":"                except ValueError:"},{"line_number":122,"context_line":"                    msg \u003d (_(\u0027The format of the version %s is not valid.\u0027"},{"line_number":123,"context_line":"                             \u0027Use semver notation\u0027) % filter[\u0027value\u0027])"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba15a1d1_f79cc56b","line":120,"updated":"2015-09-23 14:07:59.000000000","message":"if your filter[\u0027value\u0027] is \u0027latest\u0027, which is good for arifacts, but bad for semantic version, here will be a ValueError.","commit_id":"febb8560e543668ac56f7896ba975bce6ce4fc53"},{"author":{"_account_id":16658,"name":"Darja Shakhray","email":"damalyavkina@gmail.com","username":"dshakhray"},"change_message_id":"cbae3e01ebd442ec2c457ba97780d074ef334ef2","unresolved":false,"context_lines":[{"line_number":117,"context_line":"                        req, filters[\u0027name\u0027][0][\u0027value\u0027], type_name,"},{"line_number":118,"context_line":"                        type_version)"},{"line_number":119,"context_line":"                try:"},{"line_number":120,"context_line":"                    semantic_version.Version(filter[\u0027value\u0027], partial\u003dTrue)"},{"line_number":121,"context_line":"                except ValueError:"},{"line_number":122,"context_line":"                    msg \u003d (_(\u0027The format of the version %s is not valid.\u0027"},{"line_number":123,"context_line":"                             \u0027Use semver notation\u0027) % filter[\u0027value\u0027])"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba15a1d1_eb3140ee","line":120,"in_reply_to":"ba15a1d1_f79cc56b","updated":"2015-09-23 15:12:25.000000000","message":"Done","commit_id":"febb8560e543668ac56f7896ba975bce6ce4fc53"},{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"a5235dd9f5efb76d1a144e2e62ef84a156b2709f","unresolved":false,"context_lines":[{"line_number":119,"context_line":"                try:"},{"line_number":120,"context_line":"                    semantic_version.Version(filter[\u0027value\u0027], partial\u003dTrue)"},{"line_number":121,"context_line":"                except ValueError:"},{"line_number":122,"context_line":"                    msg \u003d (_(\u0027The format of the version %s is not valid.\u0027"},{"line_number":123,"context_line":"                             \u0027Use semver notation\u0027) % filter[\u0027value\u0027])"},{"line_number":124,"context_line":"                    raise webob.exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":125,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"ba15a1d1_f773654c","line":122,"updated":"2015-09-23 14:07:59.000000000","message":"String is not correct. You missed a space in the end.","commit_id":"febb8560e543668ac56f7896ba975bce6ce4fc53"},{"author":{"_account_id":16658,"name":"Darja Shakhray","email":"damalyavkina@gmail.com","username":"dshakhray"},"change_message_id":"cbae3e01ebd442ec2c457ba97780d074ef334ef2","unresolved":false,"context_lines":[{"line_number":119,"context_line":"                try:"},{"line_number":120,"context_line":"                    semantic_version.Version(filter[\u0027value\u0027], partial\u003dTrue)"},{"line_number":121,"context_line":"                except ValueError:"},{"line_number":122,"context_line":"                    msg \u003d (_(\u0027The format of the version %s is not valid.\u0027"},{"line_number":123,"context_line":"                             \u0027Use semver notation\u0027) % filter[\u0027value\u0027])"},{"line_number":124,"context_line":"                    raise webob.exc.HTTPBadRequest(explanation\u003dmsg)"},{"line_number":125,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"ba15a1d1_0b2fd488","line":122,"in_reply_to":"ba15a1d1_f773654c","updated":"2015-09-23 15:12:25.000000000","message":"Done","commit_id":"febb8560e543668ac56f7896ba975bce6ce4fc53"}],"glance/tests/functional/artifacts/test_artifacts.py":[{"author":{"_account_id":11391,"name":"Mikhail Fedosin","email":"mfedosin@redhat.com","username":"fedosinme"},"change_message_id":"4e7ff6ffd5b682058d6542e9d67ebea10ee14593","unresolved":false,"context_lines":[{"line_number":1718,"context_line":""},{"line_number":1719,"context_line":"        self.assertEqual(1, len(result))"},{"line_number":1720,"context_line":""},{"line_number":1721,"context_line":"    def test_filter_by_bad_version(self):"},{"line_number":1722,"context_line":"        url \u003d \u0027/withprops/v1.0/drafts?version\u003dgt:kkk\u0027"},{"line_number":1723,"context_line":"        result \u003d self._check_artifact_get(url\u003durl, status\u003d400)"},{"line_number":1724,"context_line":"        self.assertIn(\u0027The format of the version kkk is not valid.\u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba15a1d1_eb57e757","line":1721,"updated":"2015-09-17 15:26:02.000000000","message":"I can suggest a cool optimization for this test:\n\nCheck it out:\n\ndef test_filter_by_bad_version(self):\n\n        bad_versions \u003d [\u0027kkk\u0027, \u00271.k\u0027, \u0027h.0\u0027, \u00271.3.hf\u0027, \u00271.9.2-k\u0027]\n\n        response_string \u003d (\u0027The format of the version %s is not valid. \u0027\n                           \u0027Use semver notation\u0027)\n\n        for bad_version in bad_versions:\n\n            url \u003d \u0027/withprops/v1.0/drafts?version\u003dgt:%s\u0027 % bad_version\n\n            result \u003d self._check_artifact_get(url\u003durl, status\u003d400)\n\n            self.assertIn(response_string % bad_version, result)","commit_id":"ab671c06100b75ec92800d578ec7098e297336bf"}]}
