)]}'
{"lower-constraints.txt":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"009617ac8ae3548ef8d31f2dfb2fc83849604c8c","unresolved":true,"context_lines":[{"line_number":31,"context_line":"requests\u003d\u003d2.14.2"},{"line_number":32,"context_line":"requestsexceptions\u003d\u003d1.2.0"},{"line_number":33,"context_line":"rfc3986\u003d\u003d0.3.1"},{"line_number":34,"context_line":"six\u003d\u003d1.10.0"},{"line_number":35,"context_line":"smmap\u003d\u003d0.9.0"},{"line_number":36,"context_line":"snowballstemmer\u003d\u003d1.2.1"},{"line_number":37,"context_line":"Sphinx\u003d\u003d2.0.0"}],"source_content_type":"text/plain","patch_set":5,"id":"0b3ab299_9b37153f","side":"PARENT","line":34,"updated":"2020-11-30 16:41:07.000000000","message":"Technically, six should be kept in lower-constraints since there are other dependencies that still pull it in.","commit_id":"3cf0406eae32620788e65b717d1d015f7dc44906"}],"oslo_i18n/tests/test_factory.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"3a98356f3ef0cfccde56e79f631c365b4cf13326","unresolved":true,"context_lines":[{"line_number":79,"context_line":"            tf._make_log_translation_func(\u0027mylevel\u0027)"},{"line_number":80,"context_line":"            mtf.assert_called_with(\u0027domain-log-mylevel\u0027)"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"    def test_contextual_form_py3(self):"},{"line_number":83,"context_line":"        _lazy.enable_lazy(False)"},{"line_number":84,"context_line":"        with mock.patch(\u0027gettext.translation\u0027) as translation:"},{"line_number":85,"context_line":"            trans \u003d mock.Mock()"},{"line_number":86,"context_line":"            translation.return_value \u003d trans"},{"line_number":87,"context_line":"            trans.ugettext.side_effect \u003d AssertionError("},{"line_number":88,"context_line":"                \u0027should have called gettext\u0027)"},{"line_number":89,"context_line":"            trans.gettext.return_value \u003d \"some text\""},{"line_number":90,"context_line":"            tf \u003d _factory.TranslatorFactory(\u0027domain\u0027)"},{"line_number":91,"context_line":"            tf.contextual_form(\u0027context\u0027, \u0027some text\u0027)"},{"line_number":92,"context_line":"            trans.gettext.assert_called_with("},{"line_number":93,"context_line":"                \"%s%s%s\" % (\u0027context\u0027, CONTEXT_SEPARATOR, \u0027some text\u0027))"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"    def test_plural_form_py3(self):"},{"line_number":96,"context_line":"        _lazy.enable_lazy(False)"},{"line_number":97,"context_line":"        with mock.patch(\u0027gettext.translation\u0027) as translation:"},{"line_number":98,"context_line":"            trans \u003d mock.Mock()"},{"line_number":99,"context_line":"            translation.return_value \u003d trans"},{"line_number":100,"context_line":"            trans.ungettext.side_effect \u003d AssertionError("},{"line_number":101,"context_line":"                \u0027should have called ngettext\u0027)"},{"line_number":102,"context_line":"            tf \u003d _factory.TranslatorFactory(\u0027domain\u0027)"},{"line_number":103,"context_line":"            tf.plural_form(\u0027single\u0027, \u0027plural\u0027, 1)"},{"line_number":104,"context_line":"            trans.ngettext.assert_called_with("},{"line_number":105,"context_line":"                \u0027single\u0027, \u0027plural\u0027, 1)"}],"source_content_type":"text/x-python","patch_set":4,"id":"a0bdc5d8_0fc44c0c","line":105,"range":{"start_line":82,"start_character":0,"end_line":105,"end_character":38},"updated":"2020-11-25 17:01:09.000000000","message":"Wouldn\u0027t it make more sense to just drop this now? This is the default path now. Same with above.","commit_id":"fc99cd6fdf941f25c8574e9a3a23c48d41810127"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"63fe819ec85262c9fd01d23bb1d171f5f2576605","unresolved":true,"context_lines":[{"line_number":79,"context_line":"            tf._make_log_translation_func(\u0027mylevel\u0027)"},{"line_number":80,"context_line":"            mtf.assert_called_with(\u0027domain-log-mylevel\u0027)"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"    def test_contextual_form_py3(self):"},{"line_number":83,"context_line":"        _lazy.enable_lazy(False)"},{"line_number":84,"context_line":"        with mock.patch(\u0027gettext.translation\u0027) as translation:"},{"line_number":85,"context_line":"            trans \u003d mock.Mock()"},{"line_number":86,"context_line":"            translation.return_value \u003d trans"},{"line_number":87,"context_line":"            trans.ugettext.side_effect \u003d AssertionError("},{"line_number":88,"context_line":"                \u0027should have called gettext\u0027)"},{"line_number":89,"context_line":"            trans.gettext.return_value \u003d \"some text\""},{"line_number":90,"context_line":"            tf \u003d _factory.TranslatorFactory(\u0027domain\u0027)"},{"line_number":91,"context_line":"            tf.contextual_form(\u0027context\u0027, \u0027some text\u0027)"},{"line_number":92,"context_line":"            trans.gettext.assert_called_with("},{"line_number":93,"context_line":"                \"%s%s%s\" % (\u0027context\u0027, CONTEXT_SEPARATOR, \u0027some text\u0027))"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"    def test_plural_form_py3(self):"},{"line_number":96,"context_line":"        _lazy.enable_lazy(False)"},{"line_number":97,"context_line":"        with mock.patch(\u0027gettext.translation\u0027) as translation:"},{"line_number":98,"context_line":"            trans \u003d mock.Mock()"},{"line_number":99,"context_line":"            translation.return_value \u003d trans"},{"line_number":100,"context_line":"            trans.ungettext.side_effect \u003d AssertionError("},{"line_number":101,"context_line":"                \u0027should have called ngettext\u0027)"},{"line_number":102,"context_line":"            tf \u003d _factory.TranslatorFactory(\u0027domain\u0027)"},{"line_number":103,"context_line":"            tf.plural_form(\u0027single\u0027, \u0027plural\u0027, 1)"},{"line_number":104,"context_line":"            trans.ngettext.assert_called_with("},{"line_number":105,"context_line":"                \u0027single\u0027, \u0027plural\u0027, 1)"}],"source_content_type":"text/x-python","patch_set":4,"id":"640675ff_72e9f7bc","line":105,"range":{"start_line":82,"start_character":0,"end_line":105,"end_character":38},"in_reply_to":"a0bdc5d8_0fc44c0c","updated":"2020-11-26 06:48:18.000000000","message":"ok, i will drop this, this will make more sense.","commit_id":"fc99cd6fdf941f25c8574e9a3a23c48d41810127"}],"oslo_i18n/tests/test_gettextutils.py":[{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"08b04895ed09508b94db1623e2199007948e1b9d","unresolved":false,"context_lines":[{"line_number":50,"context_line":"        _gettextutils.install(\u0027blaa\u0027)"},{"line_number":51,"context_line":"        _lazy.enable_lazy(False)"},{"line_number":52,"context_line":"        self.assertTrue(isinstance(self.t.primary(\u0027A String\u0027),"},{"line_number":53,"context_line":"                                   str))"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"        _gettextutils.install(\u0027blaa\u0027)"},{"line_number":56,"context_line":"        _lazy.enable_lazy(True)"}],"source_content_type":"text/x-python","patch_set":3,"id":"9f560f44_ccbf0ac8","line":53,"range":{"start_line":53,"start_character":34,"end_line":53,"end_character":40},"updated":"2020-10-09 07:05:50.000000000","message":"Could be on line 52","commit_id":"ecc898af50c7dbe25b148921c40aabf2f60ea232"},{"author":{"_account_id":30407,"name":"haixin","email":"haixin_haixin@qq.com","username":"haixin"},"change_message_id":"efc9aada5678c8bb518499ee28405f41b93a2098","unresolved":false,"context_lines":[{"line_number":50,"context_line":"        _gettextutils.install(\u0027blaa\u0027)"},{"line_number":51,"context_line":"        _lazy.enable_lazy(False)"},{"line_number":52,"context_line":"        self.assertTrue(isinstance(self.t.primary(\u0027A String\u0027),"},{"line_number":53,"context_line":"                                   str))"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"        _gettextutils.install(\u0027blaa\u0027)"},{"line_number":56,"context_line":"        _lazy.enable_lazy(True)"}],"source_content_type":"text/x-python","patch_set":3,"id":"9f560f44_e0f3ef6b","line":53,"range":{"start_line":53,"start_character":34,"end_line":53,"end_character":40},"in_reply_to":"9f560f44_ccbf0ac8","updated":"2020-10-09 11:18:22.000000000","message":"Done","commit_id":"ecc898af50c7dbe25b148921c40aabf2f60ea232"}],"oslo_i18n/tests/test_public_api.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"53fcbec66331d8bcd48c185609d8a32db6b29caa","unresolved":false,"context_lines":[{"line_number":12,"context_line":"\"\"\"A few tests that use the public API to ensure the imports work.\"\"\""},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"import unittest"},{"line_number":15,"context_line":"from unittest import mock"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"import oslo_i18n"},{"line_number":18,"context_line":"from oslo_i18n import _lazy"}],"source_content_type":"text/x-python","patch_set":2,"id":"9f560f44_f0e3e69e","line":15,"updated":"2020-10-07 10:22:24.000000000","message":"pep8: F401 \u0027unittest.mock\u0027 imported but unused","commit_id":"b097821425450d5ad347412a521db99719595b84"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"8d6b62ecefd6671f776baaf277dbd63803dfbd6d","unresolved":false,"context_lines":[{"line_number":24,"context_line":"        oslo_i18n.TranslatorFactory(\u0027domain\u0027)"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"    def test_install(self):"},{"line_number":27,"context_line":"        with mock.patch(\u0027six.moves.builtins\u0027):"},{"line_number":28,"context_line":"            oslo_i18n.install(\u0027domain\u0027)"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    def test_get_available_languages(self):"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f65232a_3c92999f","side":"PARENT","line":27,"range":{"start_line":27,"start_character":8,"end_line":27,"end_character":46},"updated":"2020-10-26 14:57:25.000000000","message":"I guess it\u0027s ok, I\u0027m not sure what we really want to do here....","commit_id":"3cf0406eae32620788e65b717d1d015f7dc44906"}]}
