)]}'
{"oslo_log/tests/unit/test_versionutils.py":[{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"a70b655ad62ad91682534abdb9f643e7d1a16c99","unresolved":false,"context_lines":[{"line_number":358,"context_line":""},{"line_number":359,"context_line":"    @mock.patch(\u0027oslo_log.versionutils.report_deprecated_feature\u0027)"},{"line_number":360,"context_line":"    def test_deprecated_message(self, mock_reporter):"},{"line_number":361,"context_line":""},{"line_number":362,"context_line":"        versionutils.deprecation_warning(\u0027outdated_stuff\u0027,"},{"line_number":363,"context_line":"                                         as_of\u003dversionutils.deprecated.KILO,"},{"line_number":364,"context_line":"                                         in_favor_of\u003d\u0027different_stuff\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"7aa08908_5058378a","line":361,"updated":"2016-06-08 10:31:31.000000000","message":"nit blank line","commit_id":"c27cbd8dd8d0bb57428a3f6bc5253a3e167c870a"}],"oslo_log/versionutils.py":[{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"a70b655ad62ad91682534abdb9f643e7d1a16c99","unresolved":false,"context_lines":[{"line_number":219,"context_line":"    #    when we get to the X release because once we get to the Y"},{"line_number":220,"context_line":"    #    release, what is Y+2?"},{"line_number":221,"context_line":"    if remove_in is None:"},{"line_number":222,"context_line":"        remove_in \u003d 0"},{"line_number":223,"context_line":"    new_release \u003d chr(ord(release) + remove_in)"},{"line_number":224,"context_line":"    if new_release in _RELEASES:"},{"line_number":225,"context_line":"        return _RELEASES[new_release]"}],"source_content_type":"text/x-python","patch_set":3,"id":"7aa08908_b0d6bbee","line":222,"range":{"start_line":222,"start_character":20,"end_line":222,"end_character":21},"updated":"2016-06-08 10:31:31.000000000","message":"this should probably agree with the default in L231","commit_id":"c27cbd8dd8d0bb57428a3f6bc5253a3e167c870a"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"322dfda4c9eb0d33da7e58bb4771f1973b9a797c","unresolved":false,"context_lines":[{"line_number":219,"context_line":"    #    when we get to the X release because once we get to the Y"},{"line_number":220,"context_line":"    #    release, what is Y+2?"},{"line_number":221,"context_line":"    if remove_in is None:"},{"line_number":222,"context_line":"        remove_in \u003d 0"},{"line_number":223,"context_line":"    new_release \u003d chr(ord(release) + remove_in)"},{"line_number":224,"context_line":"    if new_release in _RELEASES:"},{"line_number":225,"context_line":"        return _RELEASES[new_release]"}],"source_content_type":"text/x-python","patch_set":3,"id":"7aa08908_8e4a3054","line":222,"range":{"start_line":222,"start_character":20,"end_line":222,"end_character":21},"in_reply_to":"7aa08908_8b6b4285","updated":"2016-06-09 13:03:21.000000000","message":"OK - I don\u0027t know why we\u0027d deprecate something without removing it but I won\u0027t fight that battle on this review","commit_id":"c27cbd8dd8d0bb57428a3f6bc5253a3e167c870a"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"8fbf5ef74da53c75984e2a032bbafd79ad18956c","unresolved":false,"context_lines":[{"line_number":219,"context_line":"    #    when we get to the X release because once we get to the Y"},{"line_number":220,"context_line":"    #    release, what is Y+2?"},{"line_number":221,"context_line":"    if remove_in is None:"},{"line_number":222,"context_line":"        remove_in \u003d 0"},{"line_number":223,"context_line":"    new_release \u003d chr(ord(release) + remove_in)"},{"line_number":224,"context_line":"    if new_release in _RELEASES:"},{"line_number":225,"context_line":"        return _RELEASES[new_release]"}],"source_content_type":"text/x-python","patch_set":3,"id":"7aa08908_7e0e72e6","line":222,"range":{"start_line":222,"start_character":20,"end_line":222,"end_character":21},"in_reply_to":"7aa08908_8e4a3054","updated":"2016-06-09 23:37:57.000000000","message":"As a private function we probably don\u0027t need to default to anything here and just expect to be called correctly. Given that the remove_in default is 2 on 231 and in __init__ above you would have to specifically call None here which is odd. \n\nBut yea, this is existing behaviour that i\u0027m not wanting to mess with in this review.","commit_id":"c27cbd8dd8d0bb57428a3f6bc5253a3e167c870a"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"5f4ce3be1415767b5d9c74210e788c35af6e6885","unresolved":false,"context_lines":[{"line_number":219,"context_line":"    #    when we get to the X release because once we get to the Y"},{"line_number":220,"context_line":"    #    release, what is Y+2?"},{"line_number":221,"context_line":"    if remove_in is None:"},{"line_number":222,"context_line":"        remove_in \u003d 0"},{"line_number":223,"context_line":"    new_release \u003d chr(ord(release) + remove_in)"},{"line_number":224,"context_line":"    if new_release in _RELEASES:"},{"line_number":225,"context_line":"        return _RELEASES[new_release]"}],"source_content_type":"text/x-python","patch_set":3,"id":"7aa08908_8b6b4285","line":222,"range":{"start_line":222,"start_character":20,"end_line":222,"end_character":21},"in_reply_to":"7aa08908_b0d6bbee","updated":"2016-06-09 12:54:47.000000000","message":"0 is correct here. This is trying to lookup the release where this functionality will be removed. If someone says \u0027deprecated(remove_in\u003dNone)\u0027 they will not actually remove the functionality.","commit_id":"c27cbd8dd8d0bb57428a3f6bc5253a3e167c870a"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"a70b655ad62ad91682534abdb9f643e7d1a16c99","unresolved":false,"context_lines":[{"line_number":221,"context_line":"    if remove_in is None:"},{"line_number":222,"context_line":"        remove_in \u003d 0"},{"line_number":223,"context_line":"    new_release \u003d chr(ord(release) + remove_in)"},{"line_number":224,"context_line":"    if new_release in _RELEASES:"},{"line_number":225,"context_line":"        return _RELEASES[new_release]"},{"line_number":226,"context_line":"    else:"},{"line_number":227,"context_line":"        return new_release"},{"line_number":228,"context_line":""},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"def deprecation_warning(what, as_of, in_favor_of\u003dNone,"}],"source_content_type":"text/x-python","patch_set":3,"id":"7aa08908_7040d334","line":227,"range":{"start_line":224,"start_character":0,"end_line":227,"end_character":26},"updated":"2016-06-08 10:31:31.000000000","message":"nit: return _RELEASES.get(new_release, new_release)","commit_id":"c27cbd8dd8d0bb57428a3f6bc5253a3e167c870a"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"a70b655ad62ad91682534abdb9f643e7d1a16c99","unresolved":false,"context_lines":[{"line_number":235,"context_line":"    :param as_of: the release deprecating the callable."},{"line_number":236,"context_line":"    :param in_favor_of: the replacement for the callable (optional)"},{"line_number":237,"context_line":"    :param remove_in: an integer specifying how many releases to wait"},{"line_number":238,"context_line":"        before removing (default: 2)"},{"line_number":239,"context_line":"    :param logger: the logging object to use for reporting (optional)."},{"line_number":240,"context_line":"    \"\"\""},{"line_number":241,"context_line":"    details \u003d dict(what\u003dwhat,"}],"source_content_type":"text/x-python","patch_set":3,"id":"7aa08908_cd049019","line":238,"range":{"start_line":238,"start_character":25,"end_line":238,"end_character":35},"updated":"2016-06-08 10:31:31.000000000","message":"I thought 1 was more common? IE introduce in M, deprecate in N, remove in O. This is standard for Nova + Oslo afaik.","commit_id":"c27cbd8dd8d0bb57428a3f6bc5253a3e167c870a"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"cd9d36b0f222005f58fa808bb308189ae19e03cc","unresolved":false,"context_lines":[{"line_number":235,"context_line":"    :param as_of: the release deprecating the callable."},{"line_number":236,"context_line":"    :param in_favor_of: the replacement for the callable (optional)"},{"line_number":237,"context_line":"    :param remove_in: an integer specifying how many releases to wait"},{"line_number":238,"context_line":"        before removing (default: 2)"},{"line_number":239,"context_line":"    :param logger: the logging object to use for reporting (optional)."},{"line_number":240,"context_line":"    \"\"\""},{"line_number":241,"context_line":"    details \u003d dict(what\u003dwhat,"}],"source_content_type":"text/x-python","patch_set":3,"id":"7aa08908_38bf9f61","line":238,"range":{"start_line":238,"start_character":25,"end_line":238,"end_character":35},"in_reply_to":"7aa08908_8b2ea2a3","updated":"2016-06-11 06:25:11.000000000","message":"i think it depends on the project... \"For significant features, it is recommended that the deprecated feature appears at least in the next two stable release branches from: \"https://governance.openstack.org/reference/tags/assert_follows-standard-deprecation.html","commit_id":"c27cbd8dd8d0bb57428a3f6bc5253a3e167c870a"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"322dfda4c9eb0d33da7e58bb4771f1973b9a797c","unresolved":false,"context_lines":[{"line_number":235,"context_line":"    :param as_of: the release deprecating the callable."},{"line_number":236,"context_line":"    :param in_favor_of: the replacement for the callable (optional)"},{"line_number":237,"context_line":"    :param remove_in: an integer specifying how many releases to wait"},{"line_number":238,"context_line":"        before removing (default: 2)"},{"line_number":239,"context_line":"    :param logger: the logging object to use for reporting (optional)."},{"line_number":240,"context_line":"    \"\"\""},{"line_number":241,"context_line":"    details \u003d dict(what\u003dwhat,"}],"source_content_type":"text/x-python","patch_set":3,"id":"7aa08908_8b2ea2a3","line":238,"range":{"start_line":238,"start_character":25,"end_line":238,"end_character":35},"in_reply_to":"7aa08908_cb86ea15","updated":"2016-06-09 13:03:21.000000000","message":"OK, didn\u0027t see that, thanks","commit_id":"c27cbd8dd8d0bb57428a3f6bc5253a3e167c870a"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"60269714de4d543a02351ad13acff2d0b32aba56","unresolved":false,"context_lines":[{"line_number":235,"context_line":"    :param as_of: the release deprecating the callable."},{"line_number":236,"context_line":"    :param in_favor_of: the replacement for the callable (optional)"},{"line_number":237,"context_line":"    :param remove_in: an integer specifying how many releases to wait"},{"line_number":238,"context_line":"        before removing (default: 2)"},{"line_number":239,"context_line":"    :param logger: the logging object to use for reporting (optional)."},{"line_number":240,"context_line":"    \"\"\""},{"line_number":241,"context_line":"    details \u003d dict(what\u003dwhat,"}],"source_content_type":"text/x-python","patch_set":3,"id":"7aa08908_e30afb1e","line":238,"range":{"start_line":238,"start_character":25,"end_line":238,"end_character":35},"in_reply_to":"7aa08908_cd049019","updated":"2016-06-09 08:36:45.000000000","message":"This default is new and I don\u0027t want to merge a wrong value","commit_id":"c27cbd8dd8d0bb57428a3f6bc5253a3e167c870a"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"5f4ce3be1415767b5d9c74210e788c35af6e6885","unresolved":false,"context_lines":[{"line_number":235,"context_line":"    :param as_of: the release deprecating the callable."},{"line_number":236,"context_line":"    :param in_favor_of: the replacement for the callable (optional)"},{"line_number":237,"context_line":"    :param remove_in: an integer specifying how many releases to wait"},{"line_number":238,"context_line":"        before removing (default: 2)"},{"line_number":239,"context_line":"    :param logger: the logging object to use for reporting (optional)."},{"line_number":240,"context_line":"    \"\"\""},{"line_number":241,"context_line":"    details \u003d dict(what\u003dwhat,"}],"source_content_type":"text/x-python","patch_set":3,"id":"7aa08908_cb86ea15","line":238,"range":{"start_line":238,"start_character":25,"end_line":238,"end_character":35},"in_reply_to":"7aa08908_e30afb1e","updated":"2016-06-09 12:54:47.000000000","message":"This is the same default that we already use in line 144. Not sure what other projects do, but I made the default 2 in the original code because that\u0027s what keystone does.","commit_id":"c27cbd8dd8d0bb57428a3f6bc5253a3e167c870a"}]}
