-
-
Notifications
You must be signed in to change notification settings - Fork 228
Endpoints with hyphens in parameter names trigger Incorrect path templating
warning, are not generated
#976
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
This was referenced Mar 3, 2024
github-merge-queue bot
pushed a commit
that referenced
this issue
Mar 6, 2024
Fixes #976 and #578, and replaces #978. @dbanty please choose your preferred approach between this and PR #987. The original issue is that `openapi-python-client` throws `incorrect path templating` warnings when the path has a parameter with a hyphen and consequently fails to generate the endpoints. --- The first commit ensures that hyphens are recognised as allowed delimiters in parameter path names. This allows the endpoints to be generated. However, this generates lines like these: ```python def _get_kwargs( user_id: int, ) -> Dict[str, Any]: _kwargs: Dict[str, Any] = { "method": "post", "url": "/activitypub/user-id/{user-id}/inbox".format(user-id=user_id,), } return _kwargs ``` Since Python variable names cannot contain hyphens, the `user-id` parameter name here will trigger errors (starting with `ruff`). --- The second commit replaces parameter names with their `python_name` in `__init__.py` and passes the modified path to `templates/endpoint_module.py.jinja`. This fixes the issue and allows endpoints to be generated correctly. --- #987 is a different option for the second commit which instead creates a custom Jinja filter in `utils.py` and so that the parameter names in `endpoint.path` can be converted to their python names directly in `templates/endpoint_module.py.jinja`. Both approaches are equivalent and have been tested with different parameter names (snake case, camel case, kebab case, mixed). --------- Co-authored-by: harabat <[email protected]> Co-authored-by: Dylan Anthony <[email protected]> Co-authored-by: Dylan Anthony <[email protected]>
dbanty
added a commit
that referenced
this issue
Mar 6, 2024
This PR was created by Knope. Merging it will create a new release ### Breaking Changes #### Update PDM metadata syntax Metadata generated for PDM will now use the new `distribution = true` syntax instead of `package-type = "library"`. New packages generated with `--meta pdm` will require PDM `2.12.0` or later to build. ### Features #### Add response content to `UnexpectedStatus` exception The error message for `UnexpectedStatus` exceptions will now include the UTF-8 decoded (ignoring errors) body of the response. PR #989 implements #840. Thanks @harabat! ### Fixes #### Allow hyphens in path parameters Before now, path parameters which were invalid Python identifiers were not allowed, and would fail generation with an "Incorrect path templating" error. In particular, this meant that path parameters with hyphens were not allowed. This has now been fixed! PR #986 fixed issue #976. Thanks @harabat! > [!WARNING] > This change may break custom templates, see [this diff](https://github.com/openapi-generators/openapi-python-client/pull/986/files#diff-0de8437b26075d8fe8454cf47d8d95d4835c7f827fa87328e03f690412be803e) > if you have trouble upgrading. Co-authored-by: GitHub <[email protected]>
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Describe the bug
openapi-python-client
fails to generate endpoints and throwsincorrect path templating
warnings when the path has a parameter with a hyphen.Renaming the parameters fixes the issue. Hyphens in parameter names don't seem to go against Swagger/OpenAPI naming conventions, which would indicate that the issue is with
openapi-python-client
, though I haven't found any existing issues around this.OpenAPI Spec File
This is from an OpenAPI spec generated from a Swagger spec with swagger-converter.
Desktop (please complete the following information):
Additional context
Warnings:
To diagnose, I added the following print statements to
parser/openapi.py
:For comparison, replacing one of the
user-id
occurrences withuserid
and generating a client yields this:The text was updated successfully, but these errors were encountered: