)]}'
{"freezer/job.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"19edbdbe4a60e303cb95f6a21dc3237900240e93","unresolved":false,"context_lines":[{"line_number":746,"context_line":"                    if rotation \u003c\u003d 0:"},{"line_number":747,"context_line":"                        raise ValueError()"},{"line_number":748,"context_line":"                except (TypeError, ValueError):"},{"line_number":749,"context_line":"                    raise ValueError(\"--fullbackup-rotation must be a positive integer\")"},{"line_number":750,"context_line":"        else:"},{"line_number":751,"context_line":"            if not given:"},{"line_number":752,"context_line":"                raise ValueError(\"Specify removal date via \""}],"source_content_type":"text/x-python","patch_set":2,"id":"4c89a7af_4b818ee8","line":749,"updated":"2026-08-21 11:03:20.000000000","message":"pep8: E501 line too long (88 \u003e 79 characters)","commit_id":"d708c4de541538e09f2a5a3c839d1d904f416db0"},{"author":{"_account_id":39044,"name":"Alicja Filipek","display_name":"alaf01","email":"alicja.filipek@cleura.com","username":"alaf01"},"change_message_id":"664ca36866df4297b279858f4062d554f0be9fbb","unresolved":true,"context_lines":[{"line_number":725,"context_line":"    def _validate(self):"},{"line_number":726,"context_line":"        removal_options \u003d {\u0027--remove-before-date\u0027:"},{"line_number":727,"context_line":"                           self.conf.remove_before_date,"},{"line_number":728,"context_line":"                           \u0027--remove-from-date\u0027:"},{"line_number":729,"context_line":"                           self.conf.remove_from_date,"},{"line_number":730,"context_line":"                           \u0027--remove-older-than\u0027:"},{"line_number":731,"context_line":"                           self.conf.remove_older_than}"}],"source_content_type":"text/x-python","patch_set":5,"id":"55c2b84d_59628bbb","line":728,"updated":"2026-08-28 07:02:02.000000000","message":"do we even support his \u0027remove-from-date\u0027? It is handled like \u0027--remove-before-date\u0027 now, right? If we have \u0027--remove-from-date\u0027 set does it mean we want to delete neawest backups?","commit_id":"fd16a66d5a2b7c1b13712af8ae37182358cb8d1e"},{"author":{"_account_id":39044,"name":"Alicja Filipek","display_name":"alaf01","email":"alicja.filipek@cleura.com","username":"alaf01"},"change_message_id":"2959bb93bfd6e831036362e00eeaad801e2adec2","unresolved":true,"context_lines":[{"line_number":725,"context_line":"    def _validate(self):"},{"line_number":726,"context_line":"        removal_options \u003d {\u0027--remove-before-date\u0027:"},{"line_number":727,"context_line":"                           self.conf.remove_before_date,"},{"line_number":728,"context_line":"                           \u0027--remove-from-date\u0027:"},{"line_number":729,"context_line":"                           self.conf.remove_from_date,"},{"line_number":730,"context_line":"                           \u0027--remove-older-than\u0027:"},{"line_number":731,"context_line":"                           self.conf.remove_older_than}"}],"source_content_type":"text/x-python","patch_set":5,"id":"63221291_0538387f","line":728,"in_reply_to":"1e74a175_7b500c34","updated":"2026-08-28 10:36:42.000000000","message":"in that case, maybe we should remove \u0027remove from date\u0027 to avoid confusion","commit_id":"fd16a66d5a2b7c1b13712af8ae37182358cb8d1e"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"39789b44113c9ab15caeea2358aa2901fb145027","unresolved":true,"context_lines":[{"line_number":725,"context_line":"    def _validate(self):"},{"line_number":726,"context_line":"        removal_options \u003d {\u0027--remove-before-date\u0027:"},{"line_number":727,"context_line":"                           self.conf.remove_before_date,"},{"line_number":728,"context_line":"                           \u0027--remove-from-date\u0027:"},{"line_number":729,"context_line":"                           self.conf.remove_from_date,"},{"line_number":730,"context_line":"                           \u0027--remove-older-than\u0027:"},{"line_number":731,"context_line":"                           self.conf.remove_older_than}"}],"source_content_type":"text/x-python","patch_set":5,"id":"1e74a175_7b500c34","line":728,"in_reply_to":"55c2b84d_59628bbb","updated":"2026-08-28 09:14:03.000000000","message":"So the confusing part here is that `remove-from-date` and `remove-before-date` are doing the same thing, but `remove-from-date` has a very misleading name.\n\nIf I am not mistaken, `remove-from-date` will be written to `remove-before-date` when defined.","commit_id":"fd16a66d5a2b7c1b13712af8ae37182358cb8d1e"},{"author":{"_account_id":39044,"name":"Alicja Filipek","display_name":"alaf01","email":"alicja.filipek@cleura.com","username":"alaf01"},"change_message_id":"a6c4c623ee43ec252ddcdbe2d94f436ab3315ccb","unresolved":false,"context_lines":[{"line_number":725,"context_line":"    def _validate(self):"},{"line_number":726,"context_line":"        removal_options \u003d {\u0027--remove-before-date\u0027:"},{"line_number":727,"context_line":"                           self.conf.remove_before_date,"},{"line_number":728,"context_line":"                           \u0027--remove-from-date\u0027:"},{"line_number":729,"context_line":"                           self.conf.remove_from_date,"},{"line_number":730,"context_line":"                           \u0027--remove-older-than\u0027:"},{"line_number":731,"context_line":"                           self.conf.remove_older_than}"}],"source_content_type":"text/x-python","patch_set":5,"id":"b0e16d13_9c6f1f92","line":728,"in_reply_to":"5e3f9054_89d2089a","updated":"2026-08-28 13:40:41.000000000","message":"So maybe some comments or todo to remove it in the future. Otherwise it might be misleading.","commit_id":"fd16a66d5a2b7c1b13712af8ae37182358cb8d1e"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"08e33a87f5649002b80375c4a250b8a21ae5a182","unresolved":true,"context_lines":[{"line_number":725,"context_line":"    def _validate(self):"},{"line_number":726,"context_line":"        removal_options \u003d {\u0027--remove-before-date\u0027:"},{"line_number":727,"context_line":"                           self.conf.remove_before_date,"},{"line_number":728,"context_line":"                           \u0027--remove-from-date\u0027:"},{"line_number":729,"context_line":"                           self.conf.remove_from_date,"},{"line_number":730,"context_line":"                           \u0027--remove-older-than\u0027:"},{"line_number":731,"context_line":"                           self.conf.remove_older_than}"}],"source_content_type":"text/x-python","patch_set":5,"id":"5e3f9054_89d2089a","line":728,"in_reply_to":"63221291_0538387f","updated":"2026-08-28 12:56:27.000000000","message":"- https://review.opendev.org/c/openstack/freezer/+/1000670/16/releasenotes/notes/add-remove-before-date-77343b3fdbb9a435.yaml\n- https://review.opendev.org/c/openstack/freezer/+/1000670/16/freezer/common/config.py\n\nWe must follow deprecation period, we can\u0027t just drop argument. So we will be able to remove it in 2027.2 cycle.","commit_id":"fd16a66d5a2b7c1b13712af8ae37182358cb8d1e"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"ba64231d960c2589d0e38daa1354694d9c1263e1","unresolved":false,"context_lines":[{"line_number":725,"context_line":"    def _validate(self):"},{"line_number":726,"context_line":"        removal_options \u003d {\u0027--remove-before-date\u0027:"},{"line_number":727,"context_line":"                           self.conf.remove_before_date,"},{"line_number":728,"context_line":"                           \u0027--remove-from-date\u0027:"},{"line_number":729,"context_line":"                           self.conf.remove_from_date,"},{"line_number":730,"context_line":"                           \u0027--remove-older-than\u0027:"},{"line_number":731,"context_line":"                           self.conf.remove_older_than}"}],"source_content_type":"text/x-python","patch_set":5,"id":"efd160d9_2878ac1d","line":728,"in_reply_to":"b0e16d13_9c6f1f92","updated":"2026-08-28 14:04:41.000000000","message":"Ideally we should be monitoring `deprecated_for_removal\u003dTrue` in configs, which is a TODO pointer of a sort.","commit_id":"fd16a66d5a2b7c1b13712af8ae37182358cb8d1e"},{"author":{"_account_id":39044,"name":"Alicja Filipek","display_name":"alaf01","email":"alicja.filipek@cleura.com","username":"alaf01"},"change_message_id":"664ca36866df4297b279858f4062d554f0be9fbb","unresolved":true,"context_lines":[{"line_number":732,"context_line":"        given \u003d [name for name, value in removal_options.items()"},{"line_number":733,"context_line":"                 if value is not None]"},{"line_number":734,"context_line":"        if len(given) \u003e 1:"},{"line_number":735,"context_line":"            raise ValueError(\"Specify only one of %s\""},{"line_number":736,"context_line":"                             % \", \".join(given))"},{"line_number":737,"context_line":"        if self.conf.backup_media \u003d\u003d \u0027cindernative\u0027:"},{"line_number":738,"context_line":"            if not getattr(self.conf, \u0027cindernative_vol_id\u0027, None):"}],"source_content_type":"text/x-python","patch_set":5,"id":"dec1eb47_28b5018d","line":735,"updated":"2026-08-28 07:02:02.000000000","message":"we could think about allowing the combination --remove-before-date and --remove-from-date to allow removal of the given period","commit_id":"fd16a66d5a2b7c1b13712af8ae37182358cb8d1e"},{"author":{"_account_id":39044,"name":"Alicja Filipek","display_name":"alaf01","email":"alicja.filipek@cleura.com","username":"alaf01"},"change_message_id":"2959bb93bfd6e831036362e00eeaad801e2adec2","unresolved":true,"context_lines":[{"line_number":732,"context_line":"        given \u003d [name for name, value in removal_options.items()"},{"line_number":733,"context_line":"                 if value is not None]"},{"line_number":734,"context_line":"        if len(given) \u003e 1:"},{"line_number":735,"context_line":"            raise ValueError(\"Specify only one of %s\""},{"line_number":736,"context_line":"                             % \", \".join(given))"},{"line_number":737,"context_line":"        if self.conf.backup_media \u003d\u003d \u0027cindernative\u0027:"},{"line_number":738,"context_line":"            if not getattr(self.conf, \u0027cindernative_vol_id\u0027, None):"}],"source_content_type":"text/x-python","patch_set":5,"id":"3c755653_452b5ac7","line":735,"in_reply_to":"b540b790_9ab738a3","updated":"2026-08-28 10:36:42.000000000","message":"so maybe for now we can give up \u0027remove from date\u0027","commit_id":"fd16a66d5a2b7c1b13712af8ae37182358cb8d1e"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"39789b44113c9ab15caeea2358aa2901fb145027","unresolved":true,"context_lines":[{"line_number":732,"context_line":"        given \u003d [name for name, value in removal_options.items()"},{"line_number":733,"context_line":"                 if value is not None]"},{"line_number":734,"context_line":"        if len(given) \u003e 1:"},{"line_number":735,"context_line":"            raise ValueError(\"Specify only one of %s\""},{"line_number":736,"context_line":"                             % \", \".join(given))"},{"line_number":737,"context_line":"        if self.conf.backup_media \u003d\u003d \u0027cindernative\u0027:"},{"line_number":738,"context_line":"            if not getattr(self.conf, \u0027cindernative_vol_id\u0027, None):"}],"source_content_type":"text/x-python","patch_set":5,"id":"b540b790_9ab738a3","line":735,"in_reply_to":"dec1eb47_28b5018d","updated":"2026-08-28 09:14:03.000000000","message":"I don\u0027t think there\u0027s any reason to have both `remove-before-date` and `remove-from-date` at the same time now, as they mean exact same thing.\nI believe we should re-implement `remove-from-date` in the future, but pick a better naming...","commit_id":"fd16a66d5a2b7c1b13712af8ae37182358cb8d1e"},{"author":{"_account_id":39044,"name":"Alicja Filipek","display_name":"alaf01","email":"alicja.filipek@cleura.com","username":"alaf01"},"change_message_id":"664ca36866df4297b279858f4062d554f0be9fbb","unresolved":true,"context_lines":[{"line_number":744,"context_line":"                try:"},{"line_number":745,"context_line":"                    rotation \u003d int(self.conf.fullbackup_rotation)"},{"line_number":746,"context_line":"                    if rotation \u003c\u003d 0:"},{"line_number":747,"context_line":"                        raise ValueError()"},{"line_number":748,"context_line":"                except (TypeError, ValueError):"},{"line_number":749,"context_line":"                    raise ValueError("},{"line_number":750,"context_line":"                        \"--fullbackup-rotation must be a positive integer\""}],"source_content_type":"text/x-python","patch_set":5,"id":"3d55e41c_c507d79e","line":747,"updated":"2026-08-28 07:02:02.000000000","message":"we could add a message here, it will be visible in traceback and even if we have it just below it will be still easier to see that the rotation is not positive","commit_id":"fd16a66d5a2b7c1b13712af8ae37182358cb8d1e"},{"author":{"_account_id":39044,"name":"Alicja Filipek","display_name":"alaf01","email":"alicja.filipek@cleura.com","username":"alaf01"},"change_message_id":"2959bb93bfd6e831036362e00eeaad801e2adec2","unresolved":true,"context_lines":[{"line_number":744,"context_line":"                try:"},{"line_number":745,"context_line":"                    rotation \u003d int(self.conf.fullbackup_rotation)"},{"line_number":746,"context_line":"                    if rotation \u003c\u003d 0:"},{"line_number":747,"context_line":"                        raise ValueError()"},{"line_number":748,"context_line":"                except (TypeError, ValueError):"},{"line_number":749,"context_line":"                    raise ValueError("},{"line_number":750,"context_line":"                        \"--fullbackup-rotation must be a positive integer\""}],"source_content_type":"text/x-python","patch_set":5,"id":"d3d86d40_96f68aaf","line":747,"in_reply_to":"3c3ef864_58f8ead0","updated":"2026-08-28 10:36:42.000000000","message":"yes, it will, but then nobody can tell wether there was a TypeError or ValueError. If we add a message and the ValueError happen it will be clear were it comes from","commit_id":"fd16a66d5a2b7c1b13712af8ae37182358cb8d1e"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"a846752932dd05b880c19cc488a75d7f168ec0cd","unresolved":true,"context_lines":[{"line_number":744,"context_line":"                try:"},{"line_number":745,"context_line":"                    rotation \u003d int(self.conf.fullbackup_rotation)"},{"line_number":746,"context_line":"                    if rotation \u003c\u003d 0:"},{"line_number":747,"context_line":"                        raise ValueError()"},{"line_number":748,"context_line":"                except (TypeError, ValueError):"},{"line_number":749,"context_line":"                    raise ValueError("},{"line_number":750,"context_line":"                        \"--fullbackup-rotation must be a positive integer\""}],"source_content_type":"text/x-python","patch_set":5,"id":"3c3ef864_58f8ead0","line":747,"in_reply_to":"3d55e41c_c507d79e","updated":"2026-08-28 09:57:20.000000000","message":"wait, but it will be intercepted with an except right below, where the message will be shown/written?\nOr am I missing smth?","commit_id":"fd16a66d5a2b7c1b13712af8ae37182358cb8d1e"}],"freezer/openstack/admin.py":[{"author":{"_account_id":39044,"name":"Alicja Filipek","display_name":"alaf01","email":"alicja.filipek@cleura.com","username":"alaf01"},"change_message_id":"664ca36866df4297b279858f4062d554f0be9fbb","unresolved":true,"context_lines":[{"line_number":216,"context_line":"            try:"},{"line_number":217,"context_line":"                latest_timestamp \u003d timeutils.parse_isotime("},{"line_number":218,"context_line":"                    created_at).timestamp()"},{"line_number":219,"context_line":"            except Exception:"},{"line_number":220,"context_line":"                continue"},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"            if latest_timestamp \u003c\u003d remove_older_timestamp:"}],"source_content_type":"text/x-python","patch_set":5,"id":"415f5aa5_86979d62","line":219,"updated":"2026-08-28 07:02:02.000000000","message":"some detailed expected Exception would be good","commit_id":"fd16a66d5a2b7c1b13712af8ae37182358cb8d1e"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"a846752932dd05b880c19cc488a75d7f168ec0cd","unresolved":false,"context_lines":[{"line_number":216,"context_line":"            try:"},{"line_number":217,"context_line":"                latest_timestamp \u003d timeutils.parse_isotime("},{"line_number":218,"context_line":"                    created_at).timestamp()"},{"line_number":219,"context_line":"            except Exception:"},{"line_number":220,"context_line":"                continue"},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"            if latest_timestamp \u003c\u003d remove_older_timestamp:"}],"source_content_type":"text/x-python","patch_set":5,"id":"16cfc612_281e4902","line":219,"in_reply_to":"415f5aa5_86979d62","updated":"2026-08-28 09:57:20.000000000","message":"Done","commit_id":"fd16a66d5a2b7c1b13712af8ae37182358cb8d1e"},{"author":{"_account_id":39044,"name":"Alicja Filipek","display_name":"alaf01","email":"alicja.filipek@cleura.com","username":"alaf01"},"change_message_id":"664ca36866df4297b279858f4062d554f0be9fbb","unresolved":true,"context_lines":[{"line_number":222,"context_line":"            if latest_timestamp \u003c\u003d remove_older_timestamp:"},{"line_number":223,"context_line":"                for inc in reversed(increments):"},{"line_number":224,"context_line":"                    if freezer_only and not self.is_freezer_backup(inc):"},{"line_number":225,"context_line":"                        continue"},{"line_number":226,"context_line":"                    fid \u003d self._delete_single_backup(inc.id)"},{"line_number":227,"context_line":"                    if fid:"},{"line_number":228,"context_line":"                        deleted_ids.append(fid)"}],"source_content_type":"text/x-python","patch_set":5,"id":"05c0020e_7670ca2d","line":225,"updated":"2026-08-28 07:02:02.000000000","message":"we have log already here, for all this continue cases adding \u0027LOG.debug\u0027 might be helpful","commit_id":"fd16a66d5a2b7c1b13712af8ae37182358cb8d1e"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"a846752932dd05b880c19cc488a75d7f168ec0cd","unresolved":false,"context_lines":[{"line_number":222,"context_line":"            if latest_timestamp \u003c\u003d remove_older_timestamp:"},{"line_number":223,"context_line":"                for inc in reversed(increments):"},{"line_number":224,"context_line":"                    if freezer_only and not self.is_freezer_backup(inc):"},{"line_number":225,"context_line":"                        continue"},{"line_number":226,"context_line":"                    fid \u003d self._delete_single_backup(inc.id)"},{"line_number":227,"context_line":"                    if fid:"},{"line_number":228,"context_line":"                        deleted_ids.append(fid)"}],"source_content_type":"text/x-python","patch_set":5,"id":"31ba89b7_bf8d6d6f","line":225,"in_reply_to":"05c0020e_7670ca2d","updated":"2026-08-28 09:57:20.000000000","message":"Done","commit_id":"fd16a66d5a2b7c1b13712af8ae37182358cb8d1e"}],"freezer/tests/unit/openstack/test_admin.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"19edbdbe4a60e303cb95f6a21dc3237900240e93","unresolved":false,"context_lines":[{"line_number":165,"context_line":""},{"line_number":166,"context_line":"    def test_remove_cinderbackup_older_than_expired_chain(self):"},{"line_number":167,"context_line":"        full_b \u003d commons.FakeIdObject(101)"},{"line_number":168,"context_line":"        full_b.metadata \u003d {\u0027created_by\u0027: \u0027freezer\u0027, \u0027freezer_backup_id\u0027: \u0027f101\u0027}"},{"line_number":169,"context_line":"        full_b.is_incremental \u003d False"},{"line_number":170,"context_line":"        full_b.created_at \u003d \u00272020-01-01T00:00:00.000000\u0027"},{"line_number":171,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"b62a02d4_f403bfc9","line":168,"updated":"2026-08-21 11:03:20.000000000","message":"pep8: E501 line too long (80 \u003e 79 characters)","commit_id":"d708c4de541538e09f2a5a3c839d1d904f416db0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"19edbdbe4a60e303cb95f6a21dc3237900240e93","unresolved":false,"context_lines":[{"line_number":195,"context_line":""},{"line_number":196,"context_line":"    def test_remove_cinderbackup_older_than_active_chain_preserved(self):"},{"line_number":197,"context_line":"        full_b \u003d commons.FakeIdObject(101)"},{"line_number":198,"context_line":"        full_b.metadata \u003d {\u0027created_by\u0027: \u0027freezer\u0027, \u0027freezer_backup_id\u0027: \u0027f101\u0027}"},{"line_number":199,"context_line":"        full_b.is_incremental \u003d False"},{"line_number":200,"context_line":"        full_b.created_at \u003d \u00272020-01-01T00:00:00.000000\u0027"},{"line_number":201,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"60d30362_8d372032","line":198,"updated":"2026-08-21 11:03:20.000000000","message":"pep8: E501 line too long (80 \u003e 79 characters)","commit_id":"d708c4de541538e09f2a5a3c839d1d904f416db0"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"19edbdbe4a60e303cb95f6a21dc3237900240e93","unresolved":false,"context_lines":[{"line_number":209,"context_line":"            commons.mock.Mock(return_value\u003dbackups))"},{"line_number":210,"context_line":"        self.admin_os._delete_single_backup \u003d commons.mock.Mock()"},{"line_number":211,"context_line":""},{"line_number":212,"context_line":"        # Cutoff is 2020-01-05 (timestamp 1578182400.0) -\u003e full is old, but inc is newer!"},{"line_number":213,"context_line":"        res \u003d self.admin_os.remove_cinderbackup_older_than("},{"line_number":214,"context_line":"            \u0027vol1\u0027, 1578182400.0, freezer_only\u003dTrue)"},{"line_number":215,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"9bd25d4f_69e8803e","line":212,"updated":"2026-08-21 11:03:20.000000000","message":"pep8: E501 line too long (89 \u003e 79 characters)","commit_id":"d708c4de541538e09f2a5a3c839d1d904f416db0"}],"freezer/tests/unit/test_job.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"19edbdbe4a60e303cb95f6a21dc3237900240e93","unresolved":false,"context_lines":[{"line_number":364,"context_line":"        backup_opt.remove_from_date \u003d None"},{"line_number":365,"context_line":"        backup_opt.remove_older_than \u003d True"},{"line_number":366,"context_line":"        with mock.patch(\u0027freezer.common.client_manager.\u0027"},{"line_number":367,"context_line":"                        \u0027get_client_manager\u0027) as cm:"},{"line_number":368,"context_line":"            self.assertRaises(ValueError, jobs.AdminJob, backup_opt,"},{"line_number":369,"context_line":"                              backup_opt.storage)"},{"line_number":370,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"f4ae61b6_d77c6f64","line":367,"updated":"2026-08-21 11:03:20.000000000","message":"pep8: F841 local variable \u0027cm\u0027 is assigned to but never used","commit_id":"d708c4de541538e09f2a5a3c839d1d904f416db0"}]}
