Skip to content

fix(openapi): skip non-numeric response keys in generate_return_doc#6175

Open
garyzava wants to merge 1 commit into
google:mainfrom
garyzava:fix/openapi-return-doc-non-numeric-keys
Open

fix(openapi): skip non-numeric response keys in generate_return_doc#6175
garyzava wants to merge 1 commit into
google:mainfrom
garyzava:fix/openapi-return-doc-non-numeric-keys

Conversation

@garyzava

Copy link
Copy Markdown

Summary

PydocHelper.generate_return_doc sorts the OpenAPI responses with
int(item[0]), which crashes with ValueError: invalid literal for int() with base 10 on valid non-numeric response keys like default or range patterns
(2XX, 4XX). This skips non-numeric keys in the sort so a tool can be
generated from such specs.

Fixes #6174

What changed

  • src/google/adk/tools/openapi_tool/common/common.py - exclude non-numeric
    keys from the sort in generate_return_doc.
  • tests/unittests/tools/openapi_tool/common/test_common.py - add regression
    tests for a default key, a range key, and a responses dict with only
    non-numeric keys.

Why

The line after the sort already keeps only responses whose key starts with 2
and that have content, so non-numeric keys (default, 1XX-5XX) are never
used anyway. Dropping them from the sort removes the crash without changing any
valid behavior. This matches operation_parser, which filters startswith('2')
before using the keys.

How I tested

$ pytest tests/unittests/tools/openapi_tool/common/test_common.py -k generate_return_doc -q
9 passed

The three new tests fail before the fix with
ValueError: invalid literal for int() with base 10: 'default' (and '4XX')
and pass after. pyink and isort report no changes on both files.

Backward compatibility

No API change. Specs with only numeric response keys behave exactly as before;
specs with default/range keys now work instead of crashing.

PydocHelper.generate_return_doc sorted the responses with
int(item[0]), which raises ValueError: invalid literal for int() with
base 10 on valid OpenAPI response keys that are not numeric status
codes, such as 'default' and range patterns like '2XX'/'4XX'.

Skip non-numeric keys in the sort. The next statement already keeps
only keys starting with '2' that have content, so dropping non-numeric
keys changes no valid behavior and just avoids the crash. This mirrors
operation_parser, which filters startswith('2') before using the keys.

Adds regression tests for a 'default' key, a range key, and a
responses dict with only non-numeric keys (returns '').
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

OpenAPI tool: generate_return_doc crashes on non-numeric response keys (default, NXX)

1 participant