)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"d2ec85abec9caba554e505e560c17b04343e452a","unresolved":true,"context_lines":[{"line_number":22,"context_line":"KeyError at evaluation time, so this only affects the error path. The"},{"line_number":23,"context_line":"parser now behaves identically with pyparsing 3.0.9, 3.1.2 and 3.3.3."},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"The same fix was applied to Manila:"},{"line_number":26,"context_line":"https://review.opendev.org/c/openstack/manila/+/1009926"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"See also:"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"26c07fd7_2b6db1e2","line":25,"range":{"start_line":25,"start_character":17,"end_line":25,"end_character":24},"updated":"2026-10-13 13:58:30.000000000","message":"proposed","commit_id":"c1cd318e39c449bd2839c7dd966726beb2dfe6c9"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"d2ec85abec9caba554e505e560c17b04343e452a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"fe381f36_ca17bf14","updated":"2026-10-13 13:58:30.000000000","message":"Confirmed that w/ pyparsing 3.3.3, unit tests fail without this change, and it fixes those errors. Test coverage looks sufficient.","commit_id":"c1cd318e39c449bd2839c7dd966726beb2dfe6c9"},{"author":{"_account_id":6476,"name":"Thomas Goirand","email":"thomas@goirand.fr","username":"thomas-goirand"},"change_message_id":"a94c24d95fa27fb1622562b35d636893e1b0e666","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"a7626c6a_d09cfa8d","updated":"2026-10-12 06:38:55.000000000","message":"recheck","commit_id":"c1cd318e39c449bd2839c7dd966726beb2dfe6c9"}],"cinder/scheduler/evaluator/evaluator.py":[{"author":{"_account_id":39509,"name":"Lucas HENRY","display_name":"Lucas HENRY","email":"lucas.henry@ovhcloud.com","username":"polyedre"},"change_message_id":"55f143f99c4d38db4697f3f48db4d3bd71384443","unresolved":false,"context_lines":[{"line_number":245,"context_line":"    real \u003d Combine(Word(nums) + \u0027.\u0027 + Word(nums))"},{"line_number":246,"context_line":"    variable \u003d Word(alphas + \u0027_\u0027 + \u0027.\u0027)"},{"line_number":247,"context_line":"    number \u003d real | integer"},{"line_number":248,"context_line":"    fn \u003d one_of(\u0027 \u0027.join(EvalFunction.functions.keys()))"},{"line_number":249,"context_line":"    operand \u003d number | variable | fn | quoted_string"},{"line_number":250,"context_line":""},{"line_number":251,"context_line":"    signop \u003d one_of(\u0027+ -\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"b98ea883_b4bf3ab2","line":248,"updated":"2026-10-15 08:25:45.000000000","message":"one_of() without as_keyword\u003dTrue matches prefixes: a bare identifier like \"maximum\" or \"min_x\" can now parse as fn \"max\"/\"min\" applied to \"imum\"/\"_x\" instead of a single variable token, a behaviour change the old Word-based fn didn\u0027t have. Use one_of(..., as_keyword\u003dTrue) (or Keyword) so only whole-word abs/max/min are treated as function calls, and add a unit test with such an identifier.","commit_id":"c1cd318e39c449bd2839c7dd966726beb2dfe6c9"}]}
