)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"92e55a53c84dbb37c0121e13469fd40151ddf95a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"d96ceccc_b1eaddf5","updated":"2026-03-27 10:30:19.000000000","message":"Agree with gmaan\u0027s comments RE: moving imports up top. -1 is for that. I also have a question inline though.","commit_id":"4a5057150bc18fc10cdd4ed0b72061ca4811d2ff"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"658ce123b158ba82b96056bee759595d2a5da051","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"9a931762_1822c5ae","updated":"2026-03-27 01:25:47.000000000","message":"overall lgtm, this will be helpful to test neutron periodic worker are pickable or not. Because neutron periodic worker launch was one case there spawn was failing on conf object pickle.\n\nCan we add some releasenotes for this?","commit_id":"4a5057150bc18fc10cdd4ed0b72061ca4811d2ff"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"986dad4e0379445234bcddac77f603e52ad94f91","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":3,"id":"a4a94bdd_87d2a0c0","updated":"2026-03-31 17:44:32.000000000","message":"GR-OSS team group review that included Clif Houck.","commit_id":"31fe3abe4707a96f806e68a5876bac9c6c028a80"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"7df5cecd32408955374e50cafc8570089c803abf","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"f0cac8e1_290f53a5","updated":"2026-03-27 16:05:22.000000000","message":"thanks, lgtm","commit_id":"31fe3abe4707a96f806e68a5876bac9c6c028a80"}],"oslo_config/cfg.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"92e55a53c84dbb37c0121e13469fd40151ddf95a","unresolved":true,"context_lines":[{"line_number":2850,"context_line":""},{"line_number":2851,"context_line":"    def __reduce__(self) -\u003e str | tuple[Any, ...]:"},{"line_number":2852,"context_line":"        if self is CONF:"},{"line_number":2853,"context_line":"            return (_get_conf_singleton, ())"},{"line_number":2854,"context_line":"        return super().__reduce__()"},{"line_number":2855,"context_line":""},{"line_number":2856,"context_line":"    def reset(self) -\u003e None:"}],"source_content_type":"text/x-python","patch_set":2,"id":"d3ffa4ef_9c536b48","line":2853,"updated":"2026-03-27 10:30:19.000000000","message":"Why the layer of indirection? 😕 I assume there\u0027s a reason we can\u0027t do\n\n\n```suggestion\n            return (CONF, ())\n```\n\nIf there\u0027s a good reason, can we get a comment on `_get_conf_singleton` indicating why it exists","commit_id":"4a5057150bc18fc10cdd4ed0b72061ca4811d2ff"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"af6506981a7a155ae406d122600b5c9160f57da6","unresolved":false,"context_lines":[{"line_number":2850,"context_line":""},{"line_number":2851,"context_line":"    def __reduce__(self) -\u003e str | tuple[Any, ...]:"},{"line_number":2852,"context_line":"        if self is CONF:"},{"line_number":2853,"context_line":"            return (_get_conf_singleton, ())"},{"line_number":2854,"context_line":"        return super().__reduce__()"},{"line_number":2855,"context_line":""},{"line_number":2856,"context_line":"    def reset(self) -\u003e None:"}],"source_content_type":"text/x-python","patch_set":2,"id":"cf5d2ec7_a22310f5","line":2853,"in_reply_to":"cf8461ed_79db1438","updated":"2026-03-27 13:09:55.000000000","message":"Done","commit_id":"4a5057150bc18fc10cdd4ed0b72061ca4811d2ff"},{"author":{"_account_id":36770,"name":"cid","display_name":"cid","email":"cid@gr-oss.io","username":"cidelight","status":"@gr-oss upstream: Doing good IRONIC things..."},"change_message_id":"91427b9f5aeca9bebb0f2d04087a12f6de763162","unresolved":true,"context_lines":[{"line_number":2850,"context_line":""},{"line_number":2851,"context_line":"    def __reduce__(self) -\u003e str | tuple[Any, ...]:"},{"line_number":2852,"context_line":"        if self is CONF:"},{"line_number":2853,"context_line":"            return (_get_conf_singleton, ())"},{"line_number":2854,"context_line":"        return super().__reduce__()"},{"line_number":2855,"context_line":""},{"line_number":2856,"context_line":"    def reset(self) -\u003e None:"}],"source_content_type":"text/x-python","patch_set":2,"id":"cf8461ed_79db1438","line":2853,"in_reply_to":"d3ffa4ef_9c536b48","updated":"2026-03-27 12:43:05.000000000","message":"Yeah, so, this will unpickle to None.\nhttps://github.com/openstack/oslo.config/blob/master/oslo_config/cfg.py#L2453","commit_id":"4a5057150bc18fc10cdd4ed0b72061ca4811d2ff"}],"oslo_config/tests/test_cfg.py":[{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"658ce123b158ba82b96056bee759595d2a5da051","unresolved":true,"context_lines":[{"line_number":5793,"context_line":""},{"line_number":5794,"context_line":"    def test_pickle_conf_singleton(self):"},{"line_number":5795,"context_line":"        \"\"\"The module-level CONF singleton round-trips through pickle.\"\"\""},{"line_number":5796,"context_line":"        import pickle"},{"line_number":5797,"context_line":""},{"line_number":5798,"context_line":"        data \u003d pickle.dumps(cfg.CONF)"},{"line_number":5799,"context_line":"        restored \u003d pickle.loads(data)"}],"source_content_type":"text/x-python","patch_set":2,"id":"b9b818cc_055d37a3","line":5796,"range":{"start_line":5796,"start_character":0,"end_line":5796,"end_character":21},"updated":"2026-03-27 01:25:47.000000000","message":"can you import these at the start?","commit_id":"4a5057150bc18fc10cdd4ed0b72061ca4811d2ff"},{"author":{"_account_id":36770,"name":"cid","display_name":"cid","email":"cid@gr-oss.io","username":"cidelight","status":"@gr-oss upstream: Doing good IRONIC things..."},"change_message_id":"91427b9f5aeca9bebb0f2d04087a12f6de763162","unresolved":false,"context_lines":[{"line_number":5793,"context_line":""},{"line_number":5794,"context_line":"    def test_pickle_conf_singleton(self):"},{"line_number":5795,"context_line":"        \"\"\"The module-level CONF singleton round-trips through pickle.\"\"\""},{"line_number":5796,"context_line":"        import pickle"},{"line_number":5797,"context_line":""},{"line_number":5798,"context_line":"        data \u003d pickle.dumps(cfg.CONF)"},{"line_number":5799,"context_line":"        restored \u003d pickle.loads(data)"}],"source_content_type":"text/x-python","patch_set":2,"id":"f15e5b3e_cb257f91","line":5796,"range":{"start_line":5796,"start_character":0,"end_line":5796,"end_character":21},"in_reply_to":"b9b818cc_055d37a3","updated":"2026-03-27 12:43:05.000000000","message":"Acknowledged","commit_id":"4a5057150bc18fc10cdd4ed0b72061ca4811d2ff"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"658ce123b158ba82b96056bee759595d2a5da051","unresolved":true,"context_lines":[{"line_number":5801,"context_line":""},{"line_number":5802,"context_line":"    def test_copy_conf_singleton(self):"},{"line_number":5803,"context_line":"        \"\"\"copy.copy on CONF returns the singleton.\"\"\""},{"line_number":5804,"context_line":"        import copy"},{"line_number":5805,"context_line":""},{"line_number":5806,"context_line":"        copied \u003d copy.copy(cfg.CONF)"},{"line_number":5807,"context_line":"        self.assertIs(copied, cfg.CONF)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3c6e8d68_4368004b","line":5804,"range":{"start_line":5804,"start_character":0,"end_line":5804,"end_character":19},"updated":"2026-03-27 01:25:47.000000000","message":"ditto","commit_id":"4a5057150bc18fc10cdd4ed0b72061ca4811d2ff"},{"author":{"_account_id":36770,"name":"cid","display_name":"cid","email":"cid@gr-oss.io","username":"cidelight","status":"@gr-oss upstream: Doing good IRONIC things..."},"change_message_id":"91427b9f5aeca9bebb0f2d04087a12f6de763162","unresolved":false,"context_lines":[{"line_number":5801,"context_line":""},{"line_number":5802,"context_line":"    def test_copy_conf_singleton(self):"},{"line_number":5803,"context_line":"        \"\"\"copy.copy on CONF returns the singleton.\"\"\""},{"line_number":5804,"context_line":"        import copy"},{"line_number":5805,"context_line":""},{"line_number":5806,"context_line":"        copied \u003d copy.copy(cfg.CONF)"},{"line_number":5807,"context_line":"        self.assertIs(copied, cfg.CONF)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7d9571f2_6bfc2ccf","line":5804,"range":{"start_line":5804,"start_character":0,"end_line":5804,"end_character":19},"in_reply_to":"3c6e8d68_4368004b","updated":"2026-03-27 12:43:05.000000000","message":"Acknowledged","commit_id":"4a5057150bc18fc10cdd4ed0b72061ca4811d2ff"}]}
