)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":31245,"name":"Daniel Bengtsson","email":"dbengt@redhat.com","username":"damani42"},"change_message_id":"af54b81eac0e7783c205d3abe980aa0c41c03437","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"dcce0146_eda2a100","updated":"2026-06-29 10:06:19.000000000","message":"recheck","commit_id":"ace9e6b8822c9e0ac9456cb1859b34881fa79d4d"},{"author":{"_account_id":31245,"name":"Daniel Bengtsson","email":"dbengt@redhat.com","username":"damani42"},"change_message_id":"25102cef7702512e9b7f3b6bddf376173be224f9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"fd0ce122_cbd31932","updated":"2026-06-30 12:40:31.000000000","message":"recheck","commit_id":"ace9e6b8822c9e0ac9456cb1859b34881fa79d4d"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"2110dd995a6aaf25ea03a18f0f5912b2c75abedf","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"9c4ef3e1_d7e324a1","updated":"2026-07-07 08:52:35.000000000","message":"LGTM","commit_id":"263c5f7342fe7b035d85c537f12c582aef9eb728"},{"author":{"_account_id":11816,"name":"mike bayer","display_name":"Mike Bayer","email":"mike_mp@zzzcomputing.com","username":"zzzeek","status":"Red Hat"},"change_message_id":"12ac6d6c473f7bc1f8726a2beeda39443071e82f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"2bcedfe9_1c793a34","updated":"2026-07-10 04:06:28.000000000","message":"hi -\n\nUsing a code review tool, I located a case where an unpicklable argparse object could be present in the serialize state; when there\u0027s a non-DEFAULT group that contains both a deprecated option as well as a CLI option.   So I added serialization for deprecated opts that replaces out the OptGroup object for just its name, and then on deserialize pulls it back in from self._groups.   This also prevents a duplicate OptGroup from being serialized out.   This adds a test both for that exact case as well as an assertion case where a state has a group_name for the deprecated option but due to the state being illegally crafted, is missing that group in self._groups, which normally would never happen.","commit_id":"aa3137f3f6241074289f4732ef4c97ffd0876a08"},{"author":{"_account_id":31245,"name":"Daniel Bengtsson","email":"dbengt@redhat.com","username":"damani42"},"change_message_id":"8a23f27567bb11b3045a66969e65e19d661ad156","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"62a3f424_bef7ecee","in_reply_to":"2bcedfe9_1c793a34","updated":"2026-07-10 10:00:10.000000000","message":"Thanks a lot, Mike!\n\nI pushed a new patch set to fix a PEP 8 issue and added you as a co-author. Thanks again for the thorough review and the improvements!","commit_id":"aa3137f3f6241074289f4732ef4c97ffd0876a08"},{"author":{"_account_id":31245,"name":"Daniel Bengtsson","email":"dbengt@redhat.com","username":"damani42"},"change_message_id":"37db3cf2f8bdfc61e2e8427436238562ff6025e7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"a8f7f19e_444bd459","updated":"2026-07-13 18:43:21.000000000","message":"Thanks a lot, @kajinamit@oss.nttdata.com and @gmaan.os14@gmail.com, for the code review!\n\nTo keep this patch focused and avoid delaying the merge with additional back-and-forth, I created two follow-up changes:\n\n* One to replace the hard-coded version with a named constant: https://review.opendev.org/c/openstack/oslo.config/+/997106\n* One to add the documentation and clarify the configuration source behavior: https://review.opendev.org/c/openstack/oslo.config/+/997107\n\nThanks again for the helpful suggestions!","commit_id":"4c772048dd0f6ffb43bade6004827ba5648043cd"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"0eaf194748eb0b0ebf8c1c87d51ed273ae2d35cc","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":6,"id":"c08e5524_4c80fc4f","updated":"2026-07-13 17:52:27.000000000","message":"overall lgtm but I think it is worth to document its usage, maybe somewhere in https://docs.openstack.org/oslo.config/latest/reference/index.html\n\nHolding until @dbengt@redhat.com ack it, but I am ok to proceed on this and do documentation in a follow-up.","commit_id":"4c772048dd0f6ffb43bade6004827ba5648043cd"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"5c83f3693a3470bdd8c482c2633f9216e3ac2e12","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"19e94ca5_4a2dae4d","updated":"2026-07-13 18:53:57.000000000","message":"thanks, let\u0027s merge it and review the other follow up","commit_id":"4c772048dd0f6ffb43bade6004827ba5648043cd"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"5c83f3693a3470bdd8c482c2633f9216e3ac2e12","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"b3cea1fb_c9abce3e","in_reply_to":"c08e5524_4c80fc4f","updated":"2026-07-13 18:53:57.000000000","message":"Done","commit_id":"4c772048dd0f6ffb43bade6004827ba5648043cd"}],"oslo_config/cfg.py":[{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"01251e5d84009f99016c59eadda68dfed90a75da","unresolved":true,"context_lines":[{"line_number":2510,"context_line":"            )"},{"line_number":2511,"context_line":""},{"line_number":2512,"context_line":"        state: dict[str, Any] \u003d {"},{"line_number":2513,"context_line":"            \u0027version\u0027: 1,"},{"line_number":2514,"context_line":"            \u0027opts\u0027: {"},{"line_number":2515,"context_line":"                opt_name: _copy_opt_info(info)"},{"line_number":2516,"context_line":"                for opt_name, info in self._opts.items()"}],"source_content_type":"text/x-python","patch_set":6,"id":"3bc8ef70_9bb66b08","line":2513,"range":{"start_line":2513,"start_character":23,"end_line":2513,"end_character":24},"updated":"2026-07-13 14:17:40.000000000","message":"Maybe we can define a constant rather than hard-coding 1 but that\u0027s trivial and can be left now.","commit_id":"4c772048dd0f6ffb43bade6004827ba5648043cd"},{"author":{"_account_id":31245,"name":"Daniel Bengtsson","email":"dbengt@redhat.com","username":"damani42"},"change_message_id":"37db3cf2f8bdfc61e2e8427436238562ff6025e7","unresolved":true,"context_lines":[{"line_number":2510,"context_line":"            )"},{"line_number":2511,"context_line":""},{"line_number":2512,"context_line":"        state: dict[str, Any] \u003d {"},{"line_number":2513,"context_line":"            \u0027version\u0027: 1,"},{"line_number":2514,"context_line":"            \u0027opts\u0027: {"},{"line_number":2515,"context_line":"                opt_name: _copy_opt_info(info)"},{"line_number":2516,"context_line":"                for opt_name, info in self._opts.items()"}],"source_content_type":"text/x-python","patch_set":6,"id":"c73ddab8_94bb4dc1","line":2513,"range":{"start_line":2513,"start_character":23,"end_line":2513,"end_character":24},"in_reply_to":"3bc8ef70_9bb66b08","updated":"2026-07-13 18:43:21.000000000","message":"Thanks a lot for the code review!\n\nYou\u0027re absolutely right a named constant is clearer. I created a small follow-up change to address it:\n\nhttps://review.opendev.org/c/openstack/oslo.config/+/997106","commit_id":"4c772048dd0f6ffb43bade6004827ba5648043cd"},{"author":{"_account_id":31245,"name":"Daniel Bengtsson","email":"dbengt@redhat.com","username":"damani42"},"change_message_id":"8a77260e7f761f6afaacf7d9e70627f946b9fd14","unresolved":false,"context_lines":[{"line_number":2510,"context_line":"            )"},{"line_number":2511,"context_line":""},{"line_number":2512,"context_line":"        state: dict[str, Any] \u003d {"},{"line_number":2513,"context_line":"            \u0027version\u0027: 1,"},{"line_number":2514,"context_line":"            \u0027opts\u0027: {"},{"line_number":2515,"context_line":"                opt_name: _copy_opt_info(info)"},{"line_number":2516,"context_line":"                for opt_name, info in self._opts.items()"}],"source_content_type":"text/x-python","patch_set":6,"id":"fe72df0c_485da3fa","line":2513,"range":{"start_line":2513,"start_character":23,"end_line":2513,"end_character":24},"in_reply_to":"c73ddab8_94bb4dc1","updated":"2026-07-13 18:44:20.000000000","message":"Done","commit_id":"4c772048dd0f6ffb43bade6004827ba5648043cd"}],"releasenotes/notes/configopts-serialization-spawn-9f6d3a1c2b4e5f70.yaml":[{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"3db5dbeea3c5fe5e08082c31abb8360dd8ae3486","unresolved":true,"context_lines":[{"line_number":7,"context_line":"    The serialized state preserves registered options and groups, parsed"},{"line_number":8,"context_line":"    command-line and config-file values, defaults, overrides, and setup"},{"line_number":9,"context_line":"    metadata."},{"line_number":10,"context_line":"  - |"},{"line_number":11,"context_line":"    Process-local helpers such as argparse parsers, caches, extension managers,"},{"line_number":12,"context_line":"    mutation hooks, and environment drivers are intentionally excluded from the"},{"line_number":13,"context_line":"    serialized state. Loaded configuration source objects are rejected with"}],"source_content_type":"text/x-yaml","patch_set":2,"id":"04d27560_1c5534de","line":10,"range":{"start_line":10,"start_character":0,"end_line":10,"end_character":5},"updated":"2026-07-02 11:44:44.000000000","message":"I wonder if the sentence below should be part of a new section.","commit_id":"6db7daf5abf94e4a6d0ef7c0faaf4fd0f5cce5f3"},{"author":{"_account_id":31245,"name":"Daniel Bengtsson","email":"dbengt@redhat.com","username":"damani42"},"change_message_id":"e556bb1f995c3224c22e4609688ffe974c792de4","unresolved":false,"context_lines":[{"line_number":7,"context_line":"    The serialized state preserves registered options and groups, parsed"},{"line_number":8,"context_line":"    command-line and config-file values, defaults, overrides, and setup"},{"line_number":9,"context_line":"    metadata."},{"line_number":10,"context_line":"  - |"},{"line_number":11,"context_line":"    Process-local helpers such as argparse parsers, caches, extension managers,"},{"line_number":12,"context_line":"    mutation hooks, and environment drivers are intentionally excluded from the"},{"line_number":13,"context_line":"    serialized state. Loaded configuration source objects are rejected with"}],"source_content_type":"text/x-yaml","patch_set":2,"id":"277132a9_f35ffef1","line":10,"range":{"start_line":10,"start_character":0,"end_line":10,"end_character":5},"in_reply_to":"04d27560_1c5534de","updated":"2026-07-06 13:45:34.000000000","message":"Done","commit_id":"6db7daf5abf94e4a6d0ef7c0faaf4fd0f5cce5f3"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"90bdc2444d501133c4ca941d918e5da52a31ba8c","unresolved":true,"context_lines":[{"line_number":10,"context_line":""},{"line_number":11,"context_line":"    Process-local helpers such as argparse parsers, caches, extension managers,"},{"line_number":12,"context_line":"    mutation hooks, and environment drivers are intentionally excluded from the"},{"line_number":13,"context_line":"    serialized state. Loaded configuration source objects are rejected with"},{"line_number":14,"context_line":"    ``ConfigOptsSerializationError`` instead of being silently dropped."}],"source_content_type":"text/x-yaml","patch_set":6,"id":"a87bd0d6_f523f900","line":14,"range":{"start_line":13,"start_character":22,"end_line":14,"end_character":71},"updated":"2026-07-13 14:19:22.000000000","message":"Maybe we should document when this is used (IIUC it\u0027s added when config_source option or --config_source argument is used)","commit_id":"4c772048dd0f6ffb43bade6004827ba5648043cd"},{"author":{"_account_id":31245,"name":"Daniel Bengtsson","email":"dbengt@redhat.com","username":"damani42"},"change_message_id":"8a77260e7f761f6afaacf7d9e70627f946b9fd14","unresolved":false,"context_lines":[{"line_number":10,"context_line":""},{"line_number":11,"context_line":"    Process-local helpers such as argparse parsers, caches, extension managers,"},{"line_number":12,"context_line":"    mutation hooks, and environment drivers are intentionally excluded from the"},{"line_number":13,"context_line":"    serialized state. Loaded configuration source objects are rejected with"},{"line_number":14,"context_line":"    ``ConfigOptsSerializationError`` instead of being silently dropped."}],"source_content_type":"text/x-yaml","patch_set":6,"id":"3ed3fda9_a32a16ef","line":14,"range":{"start_line":13,"start_character":22,"end_line":14,"end_character":71},"in_reply_to":"6b8e0141_bdca7ffc","updated":"2026-07-13 18:44:20.000000000","message":"Done","commit_id":"4c772048dd0f6ffb43bade6004827ba5648043cd"},{"author":{"_account_id":31245,"name":"Daniel Bengtsson","email":"dbengt@redhat.com","username":"damani42"},"change_message_id":"37db3cf2f8bdfc61e2e8427436238562ff6025e7","unresolved":true,"context_lines":[{"line_number":10,"context_line":""},{"line_number":11,"context_line":"    Process-local helpers such as argparse parsers, caches, extension managers,"},{"line_number":12,"context_line":"    mutation hooks, and environment drivers are intentionally excluded from the"},{"line_number":13,"context_line":"    serialized state. Loaded configuration source objects are rejected with"},{"line_number":14,"context_line":"    ``ConfigOptsSerializationError`` instead of being silently dropped."}],"source_content_type":"text/x-yaml","patch_set":6,"id":"6b8e0141_bdca7ffc","line":14,"range":{"start_line":13,"start_character":22,"end_line":14,"end_character":71},"in_reply_to":"a87bd0d6_f523f900","updated":"2026-07-13 18:43:21.000000000","message":"Good point, thanks!\n\nI created a follow-up patch to document this and clarify when configuration sources are used:\n\nhttps://review.opendev.org/c/openstack/oslo.config/+/997107","commit_id":"4c772048dd0f6ffb43bade6004827ba5648043cd"}]}
