)]}'
{"id":"openstack%2Fcliff~995202","triplet_id":"openstack%2Fcliff~master~I93972d756340b81633002813c7aa312673402ac0","project":"openstack/cliff","branch":"master","attention_set":{},"removed_from_attention_set":{"15334":{"account":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"last_update":"2026-07-31 18:33:48.000000000","reason":"Change was abandoned"},"39263":{"account":{"_account_id":39263,"name":"Udayendu Kar","display_name":"Udayendu Kar","email":"udayendu.kar@gmail.com","username":"udayendu.kar"},"last_update":"2026-07-31 17:19:02.000000000","reason":"\u003cGERRIT_ACCOUNT_39263\u003e replied on the change","reason_account":{"_account_id":39263,"name":"Udayendu Kar","display_name":"Udayendu Kar","email":"udayendu.kar@gmail.com","username":"udayendu.kar"}}},"hashtags":[],"change_id":"I93972d756340b81633002813c7aa312673402ac0","subject":"cliff: make column sorting safe for complex data types","status":"ABANDONED","created":"2026-06-28 16:02:49.000000000","updated":"2026-07-31 18:33:48.000000000","total_comment_count":14,"unresolved_comment_count":0,"has_review_started":true,"meta_rev_id":"00cc79ac1236b9ef0b31fe14df8539895656b336","_number":995202,"virtual_id_number":995202,"owner":{"_account_id":39263,"name":"Udayendu Kar","display_name":"Udayendu Kar","email":"udayendu.kar@gmail.com","username":"udayendu.kar"},"actions":{},"labels":{"Verified":{"recommended":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"all":[{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},{"tag":"autogenerated:zuul:check","value":1,"date":"2026-06-29 15:03:50.000000000","permitted_voting_range":{"min":-2,"max":2},"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"values":{"-2":"Fails","-1":"Doesn\u0027t seem to work"," 0":"No score","+1":"Works for me","+2":"Verified"},"description":"","value":1,"default_value":0,"optional":true},"Code-Review":{"disliked":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"all":[{"value":-1,"date":"2026-07-31 11:20:03.000000000","permitted_voting_range":{"min":-2,"max":2},"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},{"value":0,"permitted_voting_range":{"min":-1,"max":1},"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"values":{"-2":"Do not merge","-1":"This patch needs further work before it can be merged"," 0":"No score","+1":"Looks good to me, but someone else must approve","+2":"Looks good to me (core reviewer)"},"description":"","value":-1,"default_value":0,"optional":true},"Workflow":{"all":[{"value":0,"permitted_voting_range":{"min":-1,"max":1},"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"values":{"-1":"Work in progress"," 0":"Ready for reviews","+1":"Approved"},"description":"","default_value":0,"optional":true}},"removable_reviewers":[],"reviewers":{"REVIEWER":[{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2026-06-28 16:27:19.000000000","updated_by":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"reviewer":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"state":"REVIEWER"},{"updated":"2026-06-29 09:42:24.000000000","updated_by":{"_account_id":39263,"name":"Udayendu Kar","display_name":"Udayendu Kar","email":"udayendu.kar@gmail.com","username":"udayendu.kar"},"reviewer":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"state":"REVIEWER"}],"messages":[{"id":"3bb93b9fd03af2b3c216590a282421e58df5c7af","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":39263,"name":"Udayendu Kar","display_name":"Udayendu Kar","email":"udayendu.kar@gmail.com","username":"udayendu.kar"},"date":"2026-06-28 16:02:49.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"cca0cf214e4159be55886b7b820ecda60adba6b7","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-06-28 16:27:19.000000000","message":"Patch Set 1: Verified-1\n\nBuild failed (check pipeline).  For information on how to proceed, see\nhttps://docs.opendev.org/opendev/infra-manual/latest/developers.html#automated-testing\nand https://docs.openstack.org/project-team-guide/testing.html#how-to-handle-test-failures\n\nhttps://zuul.opendev.org/t/openstack/buildset/54897c8240744f02b8e69764382a609a\n\n- tempest-full-py3 https://zuul.opendev.org/t/openstack/build/8a586abe0bf1454caee2d0752ad9a4f2 : FAILURE in 18m 45s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/d364d3efbce34448893248eb302e79a5 : FAILURE in 2m 57s\n- openstack-tox-py311 https://zuul.opendev.org/t/openstack/build/44d9e428ec404ab58c9386ff50484481 : FAILURE in 2m 47s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/2fc09bcd67cb49b4b430600aed4fcdc3 : FAILURE in 3m 50s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/c154fb21445443fe91d3367f61a399fe : FAILURE in 7m 02s\n- openstack-tox-py315 https://zuul.opendev.org/t/openstack/build/cbb544886f0f485d86f7c9b2c28b0cd3 : FAILURE in 5m 12s (non-voting)\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/4b25f80f98da42ffadfe996cf0f55123 : FAILURE in 5m 18s\n- cliff-tox-py313-neutronclient-tip https://zuul.opendev.org/t/openstack/build/48d26c7889c5460e880dd2b236a9fd47 : FAILURE in 2m 51s\n- osc-tox-py313-tips https://zuul.opendev.org/t/openstack/build/45b314830e9e449b81a9d49d072041ae : FAILURE in 2m 44s","accounts_in_message":[],"_revision_number":1},{"id":"958bd0ea4080cbaf15f293776fdd2c238019359c","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":39263,"name":"Udayendu Kar","display_name":"Udayendu Kar","email":"udayendu.kar@gmail.com","username":"udayendu.kar"},"date":"2026-06-29 01:59:23.000000000","message":"Uploaded patch set 2: New patch set was added with same tree, parent tree, and commit message as Patch Set 1.\n\nOutdated Votes:\n* Verified-1 (copy condition: \"NEVER\")\n","accounts_in_message":[],"_revision_number":2},{"id":"e38c94e21371831e8104b04564fce2f7c6ea2e19","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":39263,"name":"Udayendu Kar","display_name":"Udayendu Kar","email":"udayendu.kar@gmail.com","username":"udayendu.kar"},"date":"2026-06-29 02:03:15.000000000","message":"Uploaded patch set 3.","accounts_in_message":[],"_revision_number":3},{"id":"9409cd6c18bf38c81a5650b917b603ae83696382","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-06-29 04:50:36.000000000","message":"Patch Set 3: Verified-1\n\n(1 comment)\n\nBuild failed (check pipeline).  For information on how to proceed, see\nhttps://docs.opendev.org/opendev/infra-manual/latest/developers.html#automated-testing\nand https://docs.openstack.org/project-team-guide/testing.html#how-to-handle-test-failures\n\nhttps://zuul.opendev.org/t/openstack/buildset/d2bf2711db6a4f18b3ca01b9d40f4636\n\n- tempest-full-py3 https://zuul.opendev.org/t/openstack/build/552c0660de064b0eab4f92a8ff378909 : SUCCESS in 1h 57m 56s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/ea782d8f81ca46dca88b26b706f3722c : FAILURE in 5m 29s\n- openstack-tox-py311 https://zuul.opendev.org/t/openstack/build/8f96abfd82f3412ba4a9729bffe433a3 : SUCCESS in 5m 04s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/ef399f4b38ed4624a0095c3457dd8c3b : SUCCESS in 3m 45s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/645f20d87797476e9a7297add0ce7401 : SUCCESS in 6m 14s\n- openstack-tox-py315 https://zuul.opendev.org/t/openstack/build/666a5f11e1534de0b94d96c80072f798 : FAILURE in 5m 48s (non-voting)\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/653edd0ba33049d1a47f8fc4a4e77ffb : SUCCESS in 3m 45s\n- cliff-tox-py313-neutronclient-tip https://zuul.opendev.org/t/openstack/build/121930ba47a94637adc88ac2376c9f39 : SUCCESS in 4m 03s\n- osc-tox-py313-tips https://zuul.opendev.org/t/openstack/build/35087df593e34ff7b11f3a2f0f323bf7 : SUCCESS in 6m 08s","accounts_in_message":[],"_revision_number":3},{"id":"5b32102a8cd939cd47095d43d2eecc6fc8063940","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":39263,"name":"Udayendu Kar","display_name":"Udayendu Kar","email":"udayendu.kar@gmail.com","username":"udayendu.kar"},"date":"2026-06-29 07:26:06.000000000","message":"Uploaded patch set 4.\n\nOutdated Votes:\n* Verified-1 (copy condition: \"NEVER\")\n","accounts_in_message":[],"_revision_number":4},{"id":"fe225fca10cba38cb77c8d8d09f3ba10e0ea18f9","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-06-29 09:15:32.000000000","message":"Patch Set 4: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/0df4a4352664407a9d96a1b32db310ce\n\n- tempest-full-py3 https://zuul.opendev.org/t/openstack/build/0814d157b61b47c4a23e08b9e673bafa : SUCCESS in 1h 47m 34s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/e1b6cee65b2e4587bfe8bd31dea81d3f : SUCCESS in 4m 16s\n- openstack-tox-py311 https://zuul.opendev.org/t/openstack/build/1629b06c1c954b39892a91ccae0cd592 : SUCCESS in 2m 40s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/3cb16872a87d4dd6ba428a1550ba1a0f : SUCCESS in 3m 09s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/c627ec76454846c4830286b8a88f3598 : SUCCESS in 3m 10s\n- openstack-tox-py315 https://zuul.opendev.org/t/openstack/build/51fcb0f1d9674deaa4744a3f4e74eebd : FAILURE in 4m 42s (non-voting)\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/32dc179cb82043af9b4169b3dede0c2a : SUCCESS in 3m 13s\n- cliff-tox-py313-neutronclient-tip https://zuul.opendev.org/t/openstack/build/5c2ebcfc662249e386c2cae0b38fe78d : SUCCESS in 3m 25s\n- osc-tox-py313-tips https://zuul.opendev.org/t/openstack/build/c2380372b6e349b388b3691e00f6c9f2 : SUCCESS in 4m 32s","accounts_in_message":[],"_revision_number":4},{"id":"fd62b462ab8bb2b5d90d1daec12ada46a0263e04","author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"date":"2026-06-29 11:43:23.000000000","message":"Patch Set 4:\n\n(2 comments)","accounts_in_message":[],"_revision_number":4},{"id":"aabe7c34acbbc3c5e08425d4529b63b83e7cbfb4","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":39263,"name":"Udayendu Kar","display_name":"Udayendu Kar","email":"udayendu.kar@gmail.com","username":"udayendu.kar"},"date":"2026-06-29 14:01:25.000000000","message":"Uploaded patch set 5.\n\nOutdated Votes:\n* Verified+1 (copy condition: \"NEVER\")\n","accounts_in_message":[],"_revision_number":5},{"id":"77fb3d12f9f2cf0d4c9e89dc7ed37e2d37e3370d","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-06-29 15:03:50.000000000","message":"Patch Set 5: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/513ef6f33d6148799a30e5f16c871dab\n\n- tempest-full-py3 https://zuul.opendev.org/t/openstack/build/eca2c69be00644f885bc9456d29fcc7b : SUCCESS in 1h 00m 52s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/f2a3e98379234cb4a6a526903e81081f : SUCCESS in 3m 34s\n- openstack-tox-py311 https://zuul.opendev.org/t/openstack/build/ca32013406fe452da6ef5b2158ffa95f : SUCCESS in 2m 59s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/807ceccf36a94e40b30aa2367cad8987 : SUCCESS in 3m 40s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/6c2ab002675e43f1bed669683e294634 : SUCCESS in 5m 44s\n- openstack-tox-py315 https://zuul.opendev.org/t/openstack/build/ad454ef2c8cb4f16a3bb5cde8ca99337 : FAILURE in 4m 36s (non-voting)\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/b7366a0a55c8451cbc6116a5eb628890 : SUCCESS in 3m 56s\n- cliff-tox-py313-neutronclient-tip https://zuul.opendev.org/t/openstack/build/1ffb8919f63a430bac8dc19d4d5ae1c4 : SUCCESS in 2m 08s\n- osc-tox-py313-tips https://zuul.opendev.org/t/openstack/build/20238879817140ab987d7eacda5b6dd0 : SUCCESS in 5m 10s","accounts_in_message":[],"_revision_number":5},{"id":"c85abfe11819272a7c459d97d377d975294b6b4d","author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"date":"2026-06-29 22:13:03.000000000","message":"Patch Set 5:\n\n(1 comment)","accounts_in_message":[],"_revision_number":5},{"id":"3adf85fb2aee084a86490f939ace9763cd5954eb","author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"date":"2026-07-31 11:20:03.000000000","message":"Patch Set 5: Code-Review-1\n\n(4 comments)","accounts_in_message":[],"_revision_number":5},{"id":"69ac607454e1cf653c8cb1691c00706621e29df2","author":{"_account_id":39263,"name":"Udayendu Kar","display_name":"Udayendu Kar","email":"udayendu.kar@gmail.com","username":"udayendu.kar"},"date":"2026-07-31 17:19:02.000000000","message":"Patch Set 5:\n\n(6 comments)","accounts_in_message":[],"_revision_number":5},{"id":"00cc79ac1236b9ef0b31fe14df8539895656b336","tag":"autogenerated:gerrit:abandon","author":{"_account_id":39263,"name":"Udayendu Kar","display_name":"Udayendu Kar","email":"udayendu.kar@gmail.com","username":"udayendu.kar"},"date":"2026-07-31 18:33:48.000000000","message":"Abandoned\n\nIts better to fix it in python-openstackclient which is the origin of the Networks column data.","accounts_in_message":[],"_revision_number":5}],"current_revision_number":5,"current_revision":"d5b1e4397247afe0e4de29d06455bebe2629bb5a","revisions":{"a776d00e1b61890a8d985a22d96d195b92b8cfdd":{"kind":"REWORK","_number":1,"created":"2026-06-28 16:02:49.000000000","uploader":{"_account_id":39263,"name":"Udayendu Kar","display_name":"Udayendu Kar","email":"udayendu.kar@gmail.com","username":"udayendu.kar"},"ref":"refs/changes/02/995202/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/cliff","ref":"refs/changes/02/995202/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/cliff refs/changes/02/995202/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/cliff refs/changes/02/995202/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/cliff refs/changes/02/995202/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/cliff refs/changes/02/995202/1"}}},"commit":{"parents":[{"commit":"ba631ae4d95d7b5eb3d55544b855df00c9622b9f","subject":"Merge \"test: Use context manager-style assertRaises\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cliff/commit/ba631ae4d95d7b5eb3d55544b855df00c9622b9f"}]}],"author":{"name":"Udayendu Kar","email":"udayendu.kar@gmail.com","date":"2026-06-28 16:01:52.000000000","tz":330},"committer":{"name":"Udayendu Kar","email":"udayendu.kar@gmail.com","date":"2026-06-28 16:01:52.000000000","tz":330},"subject":"cliff: make column sorting safe for complex data types","message":"cliff: make column sorting safe for complex data types\n\nThe current Lister column sorting logic fails when attempting to sort\ncolumns that contain complex or heterogeneous data types, such as dicts,\nlists, tuples, or mixed structures.\n\nThis is particularly visible in OpenStack CLI commands such as:\n\n  openstack server list --sort-column Networks\n\nwhere the Networks column is derived from server network data and may\ncontain dictionary or list structures depending on the backend.\n\nIn such cases, Python raises TypeError during sorting due to\nincomparable types, causing sorting to fail and a warning to be emitted:\n\n  Could not sort on field \u0027Networks\u0027; unsortable types\n\nThis change introduces a safe normalization function used for sorting\nvalues across all supported column types.\n\nKey changes:\n\n* Add safe_sort_value() to normalize values into deterministic strings\n  using JSON serialization for complex types (dict, list, tuple)\n* Ensure all values passed to sorting are comparable and stable\n* Prevent TypeError during sorting of heterogeneous CLI column data\n\nThis ensures that sorting is best-effort but never breaks CLI output.\n\nBehavior changes:\n\n* Sorting no longer fails for complex columns (e.g., Networks)\n* Mixed-type columns are safely handled\n* Output ordering is stable and deterministic\n\nChange-Id: I93972d756340b81633002813c7aa312673402ac0\nSigned-off-by: Udayendu Kar \u003cudayendu.kar@gmail.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cliff/commit/a776d00e1b61890a8d985a22d96d195b92b8cfdd"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cliff/commit/a776d00e1b61890a8d985a22d96d195b92b8cfdd"}]},"branch":"refs/heads/master"},"a4277b73c9be994325dc1ffbd7bc18a4bf7762f2":{"kind":"NO_CHANGE","_number":2,"created":"2026-06-29 01:59:23.000000000","uploader":{"_account_id":39263,"name":"Udayendu Kar","display_name":"Udayendu Kar","email":"udayendu.kar@gmail.com","username":"udayendu.kar"},"ref":"refs/changes/02/995202/2","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/cliff","ref":"refs/changes/02/995202/2","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/cliff refs/changes/02/995202/2 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/cliff refs/changes/02/995202/2 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/cliff refs/changes/02/995202/2 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/cliff refs/changes/02/995202/2"}}},"commit":{"parents":[{"commit":"ba631ae4d95d7b5eb3d55544b855df00c9622b9f","subject":"Merge \"test: Use context manager-style assertRaises\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cliff/commit/ba631ae4d95d7b5eb3d55544b855df00c9622b9f"}]}],"author":{"name":"Udayendu Kar","email":"udayendu.kar@gmail.com","date":"2026-06-28 16:01:52.000000000","tz":330},"committer":{"name":"Udayendu Kar","email":"udayendu.kar@gmail.com","date":"2026-06-29 01:58:48.000000000","tz":330},"subject":"cliff: make column sorting safe for complex data types","message":"cliff: make column sorting safe for complex data types\n\nThe current Lister column sorting logic fails when attempting to sort\ncolumns that contain complex or heterogeneous data types, such as dicts,\nlists, tuples, or mixed structures.\n\nThis is particularly visible in OpenStack CLI commands such as:\n\n  openstack server list --sort-column Networks\n\nwhere the Networks column is derived from server network data and may\ncontain dictionary or list structures depending on the backend.\n\nIn such cases, Python raises TypeError during sorting due to\nincomparable types, causing sorting to fail and a warning to be emitted:\n\n  Could not sort on field \u0027Networks\u0027; unsortable types\n\nThis change introduces a safe normalization function used for sorting\nvalues across all supported column types.\n\nKey changes:\n\n* Add safe_sort_value() to normalize values into deterministic strings\n  using JSON serialization for complex types (dict, list, tuple)\n* Ensure all values passed to sorting are comparable and stable\n* Prevent TypeError during sorting of heterogeneous CLI column data\n\nThis ensures that sorting is best-effort but never breaks CLI output.\n\nBehavior changes:\n\n* Sorting no longer fails for complex columns (e.g., Networks)\n* Mixed-type columns are safely handled\n* Output ordering is stable and deterministic\n\nChange-Id: I93972d756340b81633002813c7aa312673402ac0\nSigned-off-by: Udayendu Kar \u003cudayendu.kar@gmail.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cliff/commit/a4277b73c9be994325dc1ffbd7bc18a4bf7762f2"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cliff/commit/a4277b73c9be994325dc1ffbd7bc18a4bf7762f2"}]},"branch":"refs/heads/master"},"15c177f85c026a80b3991cb8abf5d31deb5264c4":{"kind":"REWORK","_number":3,"created":"2026-06-29 02:03:15.000000000","uploader":{"_account_id":39263,"name":"Udayendu Kar","display_name":"Udayendu Kar","email":"udayendu.kar@gmail.com","username":"udayendu.kar"},"ref":"refs/changes/02/995202/3","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/cliff","ref":"refs/changes/02/995202/3","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/cliff refs/changes/02/995202/3 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/cliff refs/changes/02/995202/3 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/cliff refs/changes/02/995202/3 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/cliff refs/changes/02/995202/3"}}},"commit":{"parents":[{"commit":"ba631ae4d95d7b5eb3d55544b855df00c9622b9f","subject":"Merge \"test: Use context manager-style assertRaises\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cliff/commit/ba631ae4d95d7b5eb3d55544b855df00c9622b9f"}]}],"author":{"name":"Udayendu Kar","email":"udayendu.kar@gmail.com","date":"2026-06-28 16:01:52.000000000","tz":330},"committer":{"name":"Udayendu Kar","email":"udayendu.kar@gmail.com","date":"2026-06-29 02:02:27.000000000","tz":330},"subject":"cliff: make column sorting safe for complex data types","message":"cliff: make column sorting safe for complex data types\n\nThe current Lister column sorting logic fails when attempting to sort\ncolumns that contain complex or heterogeneous data types, such as dicts,\nlists, tuples, or mixed structures.\n\nThis is particularly visible in OpenStack CLI commands such as:\n\n  openstack server list --sort-column Networks\n\nwhere the Networks column is derived from server network data and may\ncontain dictionary or list structures depending on the backend.\n\nIn such cases, Python raises TypeError during sorting due to\nincomparable types, causing sorting to fail and a warning to be emitted:\n\n  Could not sort on field \u0027Networks\u0027; unsortable types\n\nThis change introduces a safe normalization function used for sorting\nvalues across all supported column types.\n\nKey changes:\n\n* Add safe_sort_value() to normalize values into deterministic strings\n  using JSON serialization for complex types (dict, list, tuple)\n* Ensure all values passed to sorting are comparable and stable\n* Prevent TypeError during sorting of heterogeneous CLI column data\n\nThis ensures that sorting is best-effort but never breaks CLI output.\n\nBehavior changes:\n\n* Sorting no longer fails for complex columns (e.g., Networks)\n* Mixed-type columns are safely handled\n* Output ordering is stable and deterministic\n\nChange-Id: I93972d756340b81633002813c7aa312673402ac0\nSigned-off-by: Udayendu Kar \u003cudayendu.kar@gmail.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cliff/commit/15c177f85c026a80b3991cb8abf5d31deb5264c4"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cliff/commit/15c177f85c026a80b3991cb8abf5d31deb5264c4"}]},"branch":"refs/heads/master"},"3d46a095e740f01c846267062eca3f749a483d46":{"kind":"REWORK","_number":4,"created":"2026-06-29 07:26:06.000000000","uploader":{"_account_id":39263,"name":"Udayendu Kar","display_name":"Udayendu Kar","email":"udayendu.kar@gmail.com","username":"udayendu.kar"},"ref":"refs/changes/02/995202/4","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/cliff","ref":"refs/changes/02/995202/4","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/cliff refs/changes/02/995202/4 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/cliff refs/changes/02/995202/4 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/cliff refs/changes/02/995202/4 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/cliff refs/changes/02/995202/4"}}},"commit":{"parents":[{"commit":"ba631ae4d95d7b5eb3d55544b855df00c9622b9f","subject":"Merge \"test: Use context manager-style assertRaises\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cliff/commit/ba631ae4d95d7b5eb3d55544b855df00c9622b9f"}]}],"author":{"name":"Udayendu Kar","email":"udayendu.kar@gmail.com","date":"2026-06-28 16:01:52.000000000","tz":330},"committer":{"name":"Udayendu Kar","email":"udayendu.kar@gmail.com","date":"2026-06-29 07:25:55.000000000","tz":330},"subject":"cliff: make column sorting safe for complex data types","message":"cliff: make column sorting safe for complex data types\n\nThe current Lister column sorting logic fails when attempting to sort\ncolumns that contain complex or heterogeneous data types, such as dicts,\nlists, tuples, or mixed structures.\n\nThis is particularly visible in OpenStack CLI commands such as:\n\n  openstack server list --sort-column Networks\n\nwhere the Networks column is derived from server network data and may\ncontain dictionary or list structures depending on the backend.\n\nIn such cases, Python raises TypeError during sorting due to\nincomparable types, causing sorting to fail and a warning to be emitted:\n\n  Could not sort on field \u0027Networks\u0027; unsortable types\n\nThis change introduces a safe normalization function used for sorting\nvalues across all supported column types.\n\nKey changes:\n\n* Add safe_sort_value() to normalize values into deterministic strings\n  using JSON serialization for complex types (dict, list, tuple)\n* Ensure all values passed to sorting are comparable and stable\n* Prevent TypeError during sorting of heterogeneous CLI column data\n\nThis ensures that sorting is best-effort but never breaks CLI output.\n\nBehavior changes:\n\n* Sorting no longer fails for complex columns (e.g., Networks)\n* Mixed-type columns are safely handled\n* Output ordering is stable and deterministic\n\nChange-Id: I93972d756340b81633002813c7aa312673402ac0\nSigned-off-by: Udayendu Kar \u003cudayendu.kar@gmail.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cliff/commit/3d46a095e740f01c846267062eca3f749a483d46"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cliff/commit/3d46a095e740f01c846267062eca3f749a483d46"}]},"branch":"refs/heads/master"},"d5b1e4397247afe0e4de29d06455bebe2629bb5a":{"kind":"REWORK","_number":5,"created":"2026-06-29 14:01:25.000000000","uploader":{"_account_id":39263,"name":"Udayendu Kar","display_name":"Udayendu Kar","email":"udayendu.kar@gmail.com","username":"udayendu.kar"},"ref":"refs/changes/02/995202/5","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/cliff","ref":"refs/changes/02/995202/5","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/cliff refs/changes/02/995202/5 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/cliff refs/changes/02/995202/5 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/cliff refs/changes/02/995202/5 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/cliff refs/changes/02/995202/5"}}},"commit":{"parents":[{"commit":"ba631ae4d95d7b5eb3d55544b855df00c9622b9f","subject":"Merge \"test: Use context manager-style assertRaises\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cliff/commit/ba631ae4d95d7b5eb3d55544b855df00c9622b9f"}]}],"author":{"name":"Udayendu Kar","email":"udayendu.kar@gmail.com","date":"2026-06-28 16:01:52.000000000","tz":330},"committer":{"name":"Udayendu Kar","email":"udayendu.kar@gmail.com","date":"2026-06-29 14:01:16.000000000","tz":330},"subject":"cliff: make column sorting safe for complex data types","message":"cliff: make column sorting safe for complex data types\n\nThe current Lister column sorting logic fails when attempting to sort\ncolumns that contain complex or heterogeneous data types, such as dicts,\nlists, tuples, or mixed structures.\n\nThis is particularly visible in OpenStack CLI commands such as:\n\n  openstack server list --sort-column Networks\n\nwhere the Networks column is derived from server network data and may\ncontain dictionary or list structures depending on the backend.\n\nIn such cases, Python raises TypeError during sorting due to\nincomparable types, causing sorting to fail and a warning to be emitted:\n\n  Could not sort on field \u0027Networks\u0027; unsortable types\n\nThis change introduces a safe normalization function used for sorting\nvalues across all supported column types.\n\nKey changes:\n\n* Add safe_sort_value() to normalize values into deterministic strings\n  using JSON serialization for complex types (dict, list, tuple)\n* Ensure all values passed to sorting are comparable and stable\n* Prevent TypeError during sorting of heterogeneous CLI column data\n\nThis ensures that sorting is best-effort but never breaks CLI output.\n\nBehavior changes:\n\n* Sorting no longer fails for complex columns (e.g., Networks)\n* Mixed-type columns are safely handled\n* Output ordering is stable and deterministic\n\nChange-Id: I93972d756340b81633002813c7aa312673402ac0\nSigned-off-by: Udayendu Kar \u003cudayendu.kar@gmail.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cliff/commit/d5b1e4397247afe0e4de29d06455bebe2629bb5a"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/cliff/commit/d5b1e4397247afe0e4de29d06455bebe2629bb5a"}]},"branch":"refs/heads/master"}},"requirements":[],"submit_records":[],"submit_requirements":[{"name":"Verified","description":"Verified in gate by CI","status":"UNSATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Verified\u003dMAX AND -label:Verified\u003dMIN","fulfilled":false,"status":"FAIL","passing_atoms":[],"failing_atoms":["label:Verified\u003dMAX","label:Verified\u003dMIN"],"atom_explanations":{"label:Verified\u003dMAX":"","label:Verified\u003dMIN":""}}},{"name":"Code-Review","description":"Code reviewed by core reviewer","status":"UNSATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Code-Review\u003dMAX AND -label:Code-Review\u003dMIN","fulfilled":false,"status":"FAIL","passing_atoms":[],"failing_atoms":["label:Code-Review\u003dMAX","label:Code-Review\u003dMIN"],"atom_explanations":{"label:Code-Review\u003dMAX":"","label:Code-Review\u003dMIN":""}}},{"name":"Workflow","description":"Approved for gate by core reviewer","status":"UNSATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Workflow\u003dMAX AND -label:Workflow\u003dMIN","fulfilled":false,"status":"FAIL","passing_atoms":[],"failing_atoms":["label:Workflow\u003dMAX","label:Workflow\u003dMIN"],"atom_explanations":{"label:Workflow\u003dMAX":"","label:Workflow\u003dMIN":""}}}]}
