File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -337,7 +337,8 @@ def undo_operations():
337337def api (context , api_version , specs , name ):
338338 """Return an API instance."""
339339 assert name in {tag ["name" ].replace (" " , "" ) for tag in specs [api_version ]["tags" ]}
340- context ["api_instance" ] = {"name" : name }
340+ sanitized_name = name .replace ("-" , "_" )
341+ context ["api_instance" ] = {"name" : sanitized_name }
341342
342343
343344@given (parsers .parse ('operation "{name}" enabled' ))
Original file line number Diff line number Diff line change @@ -36,6 +36,7 @@ def cli(specs, output):
3636 env .filters ["parameters" ] = openapi .parameters
3737 env .filters ["return_type" ] = openapi .return_type
3838 env .filters ["safe_snake_case" ] = formatter .safe_snake_case
39+ env .filters ["class_name" ] = formatter .class_name
3940 env .filters ["docstring" ] = formatter .docstring
4041
4142 env .globals ["enumerate" ] = enumerate
Original file line number Diff line number Diff line change @@ -91,6 +91,26 @@ def snake_case(value):
9191 return PATTERN_DOUBLE_UNDERSCORE .sub ("_" , s1 )
9292
9393
94+ def class_name (value ):
95+ """
96+ Convert a string into a valid Python API class name by:
97+ 1. Removing all non-alphanumeric characters
98+ 2. Appending 'Api' suffix
99+
100+ Args:
101+ value (str): The input string to convert
102+
103+ Returns:
104+ str: A valid Python class name ending in 'Api'
105+
106+ Example:
107+ >>> class_name("On-Call")
108+ 'OnCallApi'
109+ """
110+ value = re .sub (r'[^a-zA-Z0-9]' , '' , value )
111+ return value + "Api"
112+
113+
94114def safe_snake_case (value ):
95115 for token , replacement in EDGE_CASES .items ():
96116 value = value .replace (token , replacement )
Original file line number Diff line number Diff line change @@ -22,7 +22,7 @@ from {{ package }}.model_utils import (
2222from {{ package }}.{{ version }}.model.{{ model|safe_snake_case }} import {{ model }}
2323{% - endfor %}
2424
25- {% set classname = name . replace ( " " , "" ) + "Api" %}
25+ {% set classname = name | class_name %}
2626class {{ classname }}:
2727 """
2828 {{ description|docstring|indent(4) }}
Original file line number Diff line number Diff line change 11{% - for api in apis %}
2- {% - set classname = api . replace ( " " , "" ) + "Api" %}
2+ {% - set classname = api | class_name %}
33from {{ package }}.{{ version }}.api.{{ classname|safe_snake_case }} import {{ classname }}
44{% - endfor %}
55
66
77__all__ = [
88{% - for api in apis %}
9- {% - set classname = api . replace ( " " , "" ) + "Api" %}
9+ {% - set classname = api | class_name %}
1010 "{{ classname }}",
1111{% - endfor %}
1212]
You can’t perform that action at this time.
0 commit comments