Skip to content

Commit

Permalink
fix: incorrect generation of dashed parameters
Browse files Browse the repository at this point in the history
  • Loading branch information
VladX09 authored and bhalothia committed Sep 1, 2023
1 parent 5fe9ba7 commit 175e5f4
Show file tree
Hide file tree
Showing 4 changed files with 25 additions and 6 deletions.
13 changes: 10 additions & 3 deletions python_client_generator/generate_apis.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

import chevron

from .utils import resolve_type, sanitize_name, serialize_to_python_code
from .utils import resolve_type, sanitize_name, serialize_to_python_code, to_python_name


dir_path = Path(os.path.dirname(os.path.realpath(__file__)))
Expand Down Expand Up @@ -83,7 +83,7 @@ def get_function_args(method: Dict[str, Any]) -> List[Dict[str, Any]]:
# Convert params to args format required for templating
return [
{
"name": p["name"],
"name": to_python_name(p["name"]),
"type": resolve_property_type(p),
"default": resolve_property_default(p),
"has_default": resolve_property_default(p) is not None,
Expand All @@ -97,7 +97,14 @@ def get_params_by_type(method: Dict[str, Any], type_: str) -> List[Dict[str, str
:param str type_: `query` or `header`
"""
params = method.get("parameters", [])
return [{"name": p["name"]} for p in params if p["in"] == type_]
return [
{
"name": p["name"],
"python_name": to_python_name(p["name"]),
}
for p in params
if p["in"] == type_
]


def has_json_body(method: Dict[str, Any]) -> bool:
Expand Down
6 changes: 3 additions & 3 deletions python_client_generator/templates/apis.py.mustache
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ class {{class_name}}(BaseClient):
_query_params = {
{{/has_query_params}}
{{#query_params}}
"{{name}}": {{name}},
"{{name}}": {{python_name}},
{{/query_params}}
{{#has_query_params}}
}
Expand All @@ -40,7 +40,7 @@ class {{class_name}}(BaseClient):
_headers = {
{{/has_header_params}}
{{#header_params}}
"{{name}}": {{name}},
"{{name}}": {{python_name}},
{{/header_params}}
{{#has_header_params}}
}
Expand Down Expand Up @@ -73,7 +73,7 @@ class {{class_name}}(BaseClient):
_query_params=_query_params,
{{/has_query_params}}
{{#has_header_params}}
_headers=_headers,
_headers=_headers,
{{/has_header_params}}
{{#has_multipart_data}}
_multipart_data=_multipart_data,
Expand Down
6 changes: 6 additions & 0 deletions python_client_generator/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,12 @@ def sanitize_name(name: str) -> str:
return "".join(re.findall(r"[A-Za-z0-9]+[A-Za-z0-9_]*", name))


def to_python_name(name: str) -> str:
name = name.replace("-", "_") # Un-dash
name = re.sub(r"^\d*", "", name) # Remove digits fom beginning
return name


def resolve_type(schema: Dict[str, Any], depth: int = 0, use_literals: bool = False) -> str:
"""
Resolve Python type for a given schema
Expand Down
6 changes: 6 additions & 0 deletions tests/expected/apis.py
Original file line number Diff line number Diff line change
Expand Up @@ -109,16 +109,22 @@ async def list_foos_api_foo_get(
async def create_foo_api_foo_post(
self,
body: Foo,
x_custom_header: Optional[str] = "default_value",
body_serializer_args: Dict[str, Any] = {},
**kwargs: Any
) -> Foo:
"""
""" # noqa

_headers = {
"x-custom-header": x_custom_header,
}

response = await self._request(
"POST",
"/api/foo",
_headers=_headers,
_body=body,
body_serializer_args=body_serializer_args,
**kwargs
Expand Down

0 comments on commit 175e5f4

Please sign in to comment.