openapi-python-client 0.24.2__tar.gz → 0.24.3__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (110) hide show
  1. {openapi_python_client-0.24.2 → openapi_python_client-0.24.3}/PKG-INFO +34 -1
  2. {openapi_python_client-0.24.2 → openapi_python_client-0.24.3}/README.md +33 -0
  3. {openapi_python_client-0.24.2 → openapi_python_client-0.24.3}/openapi_python_client/parser/properties/enum_property.py +11 -3
  4. {openapi_python_client-0.24.2 → openapi_python_client-0.24.3}/pyproject.toml +1 -1
  5. {openapi_python_client-0.24.2 → openapi_python_client-0.24.3}/.gitignore +0 -0
  6. {openapi_python_client-0.24.2 → openapi_python_client-0.24.3}/LICENSE +0 -0
  7. {openapi_python_client-0.24.2 → openapi_python_client-0.24.3}/openapi_python_client/__init__.py +0 -0
  8. {openapi_python_client-0.24.2 → openapi_python_client-0.24.3}/openapi_python_client/__main__.py +0 -0
  9. {openapi_python_client-0.24.2 → openapi_python_client-0.24.3}/openapi_python_client/cli.py +0 -0
  10. {openapi_python_client-0.24.2 → openapi_python_client-0.24.3}/openapi_python_client/config.py +0 -0
  11. {openapi_python_client-0.24.2 → openapi_python_client-0.24.3}/openapi_python_client/parser/__init__.py +0 -0
  12. {openapi_python_client-0.24.2 → openapi_python_client-0.24.3}/openapi_python_client/parser/bodies.py +0 -0
  13. {openapi_python_client-0.24.2 → openapi_python_client-0.24.3}/openapi_python_client/parser/errors.py +0 -0
  14. {openapi_python_client-0.24.2 → openapi_python_client-0.24.3}/openapi_python_client/parser/openapi.py +0 -0
  15. {openapi_python_client-0.24.2 → openapi_python_client-0.24.3}/openapi_python_client/parser/properties/__init__.py +0 -0
  16. {openapi_python_client-0.24.2 → openapi_python_client-0.24.3}/openapi_python_client/parser/properties/any.py +0 -0
  17. {openapi_python_client-0.24.2 → openapi_python_client-0.24.3}/openapi_python_client/parser/properties/boolean.py +0 -0
  18. {openapi_python_client-0.24.2 → openapi_python_client-0.24.3}/openapi_python_client/parser/properties/const.py +0 -0
  19. {openapi_python_client-0.24.2 → openapi_python_client-0.24.3}/openapi_python_client/parser/properties/date.py +0 -0
  20. {openapi_python_client-0.24.2 → openapi_python_client-0.24.3}/openapi_python_client/parser/properties/datetime.py +0 -0
  21. {openapi_python_client-0.24.2 → openapi_python_client-0.24.3}/openapi_python_client/parser/properties/file.py +0 -0
  22. {openapi_python_client-0.24.2 → openapi_python_client-0.24.3}/openapi_python_client/parser/properties/float.py +0 -0
  23. {openapi_python_client-0.24.2 → openapi_python_client-0.24.3}/openapi_python_client/parser/properties/int.py +0 -0
  24. {openapi_python_client-0.24.2 → openapi_python_client-0.24.3}/openapi_python_client/parser/properties/list_property.py +0 -0
  25. {openapi_python_client-0.24.2 → openapi_python_client-0.24.3}/openapi_python_client/parser/properties/literal_enum_property.py +0 -0
  26. {openapi_python_client-0.24.2 → openapi_python_client-0.24.3}/openapi_python_client/parser/properties/merge_properties.py +0 -0
  27. {openapi_python_client-0.24.2 → openapi_python_client-0.24.3}/openapi_python_client/parser/properties/model_property.py +0 -0
  28. {openapi_python_client-0.24.2 → openapi_python_client-0.24.3}/openapi_python_client/parser/properties/none.py +0 -0
  29. {openapi_python_client-0.24.2 → openapi_python_client-0.24.3}/openapi_python_client/parser/properties/property.py +0 -0
  30. {openapi_python_client-0.24.2 → openapi_python_client-0.24.3}/openapi_python_client/parser/properties/protocol.py +0 -0
  31. {openapi_python_client-0.24.2 → openapi_python_client-0.24.3}/openapi_python_client/parser/properties/schemas.py +0 -0
  32. {openapi_python_client-0.24.2 → openapi_python_client-0.24.3}/openapi_python_client/parser/properties/string.py +0 -0
  33. {openapi_python_client-0.24.2 → openapi_python_client-0.24.3}/openapi_python_client/parser/properties/union.py +0 -0
  34. {openapi_python_client-0.24.2 → openapi_python_client-0.24.3}/openapi_python_client/parser/properties/uuid.py +0 -0
  35. {openapi_python_client-0.24.2 → openapi_python_client-0.24.3}/openapi_python_client/parser/responses.py +0 -0
  36. {openapi_python_client-0.24.2 → openapi_python_client-0.24.3}/openapi_python_client/py.typed +0 -0
  37. {openapi_python_client-0.24.2 → openapi_python_client-0.24.3}/openapi_python_client/schema/3.0.3.md +0 -0
  38. {openapi_python_client-0.24.2 → openapi_python_client-0.24.3}/openapi_python_client/schema/3.1.0.md +0 -0
  39. {openapi_python_client-0.24.2 → openapi_python_client-0.24.3}/openapi_python_client/schema/__init__.py +0 -0
  40. {openapi_python_client-0.24.2 → openapi_python_client-0.24.3}/openapi_python_client/schema/data_type.py +0 -0
  41. {openapi_python_client-0.24.2 → openapi_python_client-0.24.3}/openapi_python_client/schema/openapi_schema_pydantic/LICENSE +0 -0
  42. {openapi_python_client-0.24.2 → openapi_python_client-0.24.3}/openapi_python_client/schema/openapi_schema_pydantic/README.md +0 -0
  43. {openapi_python_client-0.24.2 → openapi_python_client-0.24.3}/openapi_python_client/schema/openapi_schema_pydantic/__init__.py +0 -0
  44. {openapi_python_client-0.24.2 → openapi_python_client-0.24.3}/openapi_python_client/schema/openapi_schema_pydantic/callback.py +0 -0
  45. {openapi_python_client-0.24.2 → openapi_python_client-0.24.3}/openapi_python_client/schema/openapi_schema_pydantic/components.py +0 -0
  46. {openapi_python_client-0.24.2 → openapi_python_client-0.24.3}/openapi_python_client/schema/openapi_schema_pydantic/contact.py +0 -0
  47. {openapi_python_client-0.24.2 → openapi_python_client-0.24.3}/openapi_python_client/schema/openapi_schema_pydantic/discriminator.py +0 -0
  48. {openapi_python_client-0.24.2 → openapi_python_client-0.24.3}/openapi_python_client/schema/openapi_schema_pydantic/encoding.py +0 -0
  49. {openapi_python_client-0.24.2 → openapi_python_client-0.24.3}/openapi_python_client/schema/openapi_schema_pydantic/example.py +0 -0
  50. {openapi_python_client-0.24.2 → openapi_python_client-0.24.3}/openapi_python_client/schema/openapi_schema_pydantic/external_documentation.py +0 -0
  51. {openapi_python_client-0.24.2 → openapi_python_client-0.24.3}/openapi_python_client/schema/openapi_schema_pydantic/header.py +0 -0
  52. {openapi_python_client-0.24.2 → openapi_python_client-0.24.3}/openapi_python_client/schema/openapi_schema_pydantic/info.py +0 -0
  53. {openapi_python_client-0.24.2 → openapi_python_client-0.24.3}/openapi_python_client/schema/openapi_schema_pydantic/license.py +0 -0
  54. {openapi_python_client-0.24.2 → openapi_python_client-0.24.3}/openapi_python_client/schema/openapi_schema_pydantic/link.py +0 -0
  55. {openapi_python_client-0.24.2 → openapi_python_client-0.24.3}/openapi_python_client/schema/openapi_schema_pydantic/media_type.py +0 -0
  56. {openapi_python_client-0.24.2 → openapi_python_client-0.24.3}/openapi_python_client/schema/openapi_schema_pydantic/oauth_flow.py +0 -0
  57. {openapi_python_client-0.24.2 → openapi_python_client-0.24.3}/openapi_python_client/schema/openapi_schema_pydantic/oauth_flows.py +0 -0
  58. {openapi_python_client-0.24.2 → openapi_python_client-0.24.3}/openapi_python_client/schema/openapi_schema_pydantic/open_api.py +0 -0
  59. {openapi_python_client-0.24.2 → openapi_python_client-0.24.3}/openapi_python_client/schema/openapi_schema_pydantic/operation.py +0 -0
  60. {openapi_python_client-0.24.2 → openapi_python_client-0.24.3}/openapi_python_client/schema/openapi_schema_pydantic/parameter.py +0 -0
  61. {openapi_python_client-0.24.2 → openapi_python_client-0.24.3}/openapi_python_client/schema/openapi_schema_pydantic/path_item.py +0 -0
  62. {openapi_python_client-0.24.2 → openapi_python_client-0.24.3}/openapi_python_client/schema/openapi_schema_pydantic/paths.py +0 -0
  63. {openapi_python_client-0.24.2 → openapi_python_client-0.24.3}/openapi_python_client/schema/openapi_schema_pydantic/reference.py +0 -0
  64. {openapi_python_client-0.24.2 → openapi_python_client-0.24.3}/openapi_python_client/schema/openapi_schema_pydantic/request_body.py +0 -0
  65. {openapi_python_client-0.24.2 → openapi_python_client-0.24.3}/openapi_python_client/schema/openapi_schema_pydantic/response.py +0 -0
  66. {openapi_python_client-0.24.2 → openapi_python_client-0.24.3}/openapi_python_client/schema/openapi_schema_pydantic/responses.py +0 -0
  67. {openapi_python_client-0.24.2 → openapi_python_client-0.24.3}/openapi_python_client/schema/openapi_schema_pydantic/schema.py +0 -0
  68. {openapi_python_client-0.24.2 → openapi_python_client-0.24.3}/openapi_python_client/schema/openapi_schema_pydantic/security_requirement.py +0 -0
  69. {openapi_python_client-0.24.2 → openapi_python_client-0.24.3}/openapi_python_client/schema/openapi_schema_pydantic/security_scheme.py +0 -0
  70. {openapi_python_client-0.24.2 → openapi_python_client-0.24.3}/openapi_python_client/schema/openapi_schema_pydantic/server.py +0 -0
  71. {openapi_python_client-0.24.2 → openapi_python_client-0.24.3}/openapi_python_client/schema/openapi_schema_pydantic/server_variable.py +0 -0
  72. {openapi_python_client-0.24.2 → openapi_python_client-0.24.3}/openapi_python_client/schema/openapi_schema_pydantic/tag.py +0 -0
  73. {openapi_python_client-0.24.2 → openapi_python_client-0.24.3}/openapi_python_client/schema/openapi_schema_pydantic/xml.py +0 -0
  74. {openapi_python_client-0.24.2 → openapi_python_client-0.24.3}/openapi_python_client/schema/parameter_location.py +0 -0
  75. {openapi_python_client-0.24.2 → openapi_python_client-0.24.3}/openapi_python_client/templates/.gitignore.jinja +0 -0
  76. {openapi_python_client-0.24.2 → openapi_python_client-0.24.3}/openapi_python_client/templates/README.md.jinja +0 -0
  77. {openapi_python_client-0.24.2 → openapi_python_client-0.24.3}/openapi_python_client/templates/api_init.py.jinja +0 -0
  78. {openapi_python_client-0.24.2 → openapi_python_client-0.24.3}/openapi_python_client/templates/client.py.jinja +0 -0
  79. {openapi_python_client-0.24.2 → openapi_python_client-0.24.3}/openapi_python_client/templates/endpoint_init.py.jinja +0 -0
  80. {openapi_python_client-0.24.2 → openapi_python_client-0.24.3}/openapi_python_client/templates/endpoint_macros.py.jinja +0 -0
  81. {openapi_python_client-0.24.2 → openapi_python_client-0.24.3}/openapi_python_client/templates/endpoint_module.py.jinja +0 -0
  82. {openapi_python_client-0.24.2 → openapi_python_client-0.24.3}/openapi_python_client/templates/errors.py.jinja +0 -0
  83. {openapi_python_client-0.24.2 → openapi_python_client-0.24.3}/openapi_python_client/templates/helpers.jinja +0 -0
  84. {openapi_python_client-0.24.2 → openapi_python_client-0.24.3}/openapi_python_client/templates/int_enum.py.jinja +0 -0
  85. {openapi_python_client-0.24.2 → openapi_python_client-0.24.3}/openapi_python_client/templates/literal_enum.py.jinja +0 -0
  86. {openapi_python_client-0.24.2 → openapi_python_client-0.24.3}/openapi_python_client/templates/model.py.jinja +0 -0
  87. {openapi_python_client-0.24.2 → openapi_python_client-0.24.3}/openapi_python_client/templates/models_init.py.jinja +0 -0
  88. {openapi_python_client-0.24.2 → openapi_python_client-0.24.3}/openapi_python_client/templates/package_init.py.jinja +0 -0
  89. {openapi_python_client-0.24.2 → openapi_python_client-0.24.3}/openapi_python_client/templates/property_templates/any_property.py.jinja +0 -0
  90. {openapi_python_client-0.24.2 → openapi_python_client-0.24.3}/openapi_python_client/templates/property_templates/boolean_property.py.jinja +0 -0
  91. {openapi_python_client-0.24.2 → openapi_python_client-0.24.3}/openapi_python_client/templates/property_templates/const_property.py.jinja +0 -0
  92. {openapi_python_client-0.24.2 → openapi_python_client-0.24.3}/openapi_python_client/templates/property_templates/date_property.py.jinja +0 -0
  93. {openapi_python_client-0.24.2 → openapi_python_client-0.24.3}/openapi_python_client/templates/property_templates/datetime_property.py.jinja +0 -0
  94. {openapi_python_client-0.24.2 → openapi_python_client-0.24.3}/openapi_python_client/templates/property_templates/enum_property.py.jinja +0 -0
  95. {openapi_python_client-0.24.2 → openapi_python_client-0.24.3}/openapi_python_client/templates/property_templates/file_property.py.jinja +0 -0
  96. {openapi_python_client-0.24.2 → openapi_python_client-0.24.3}/openapi_python_client/templates/property_templates/float_property.py.jinja +0 -0
  97. {openapi_python_client-0.24.2 → openapi_python_client-0.24.3}/openapi_python_client/templates/property_templates/helpers.jinja +0 -0
  98. {openapi_python_client-0.24.2 → openapi_python_client-0.24.3}/openapi_python_client/templates/property_templates/int_property.py.jinja +0 -0
  99. {openapi_python_client-0.24.2 → openapi_python_client-0.24.3}/openapi_python_client/templates/property_templates/list_property.py.jinja +0 -0
  100. {openapi_python_client-0.24.2 → openapi_python_client-0.24.3}/openapi_python_client/templates/property_templates/literal_enum_property.py.jinja +0 -0
  101. {openapi_python_client-0.24.2 → openapi_python_client-0.24.3}/openapi_python_client/templates/property_templates/model_property.py.jinja +0 -0
  102. {openapi_python_client-0.24.2 → openapi_python_client-0.24.3}/openapi_python_client/templates/property_templates/property_macros.py.jinja +0 -0
  103. {openapi_python_client-0.24.2 → openapi_python_client-0.24.3}/openapi_python_client/templates/property_templates/union_property.py.jinja +0 -0
  104. {openapi_python_client-0.24.2 → openapi_python_client-0.24.3}/openapi_python_client/templates/property_templates/uuid_property.py.jinja +0 -0
  105. {openapi_python_client-0.24.2 → openapi_python_client-0.24.3}/openapi_python_client/templates/pyproject.toml.jinja +0 -0
  106. {openapi_python_client-0.24.2 → openapi_python_client-0.24.3}/openapi_python_client/templates/pyproject_ruff.toml.jinja +0 -0
  107. {openapi_python_client-0.24.2 → openapi_python_client-0.24.3}/openapi_python_client/templates/setup.py.jinja +0 -0
  108. {openapi_python_client-0.24.2 → openapi_python_client-0.24.3}/openapi_python_client/templates/str_enum.py.jinja +0 -0
  109. {openapi_python_client-0.24.2 → openapi_python_client-0.24.3}/openapi_python_client/templates/types.py.jinja +0 -0
  110. {openapi_python_client-0.24.2 → openapi_python_client-0.24.3}/openapi_python_client/utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: openapi-python-client
3
- Version: 0.24.2
3
+ Version: 0.24.3
4
4
  Summary: Generate modern Python clients from OpenAPI
5
5
  Project-URL: repository, https://github.com/openapi-generators/openapi-python-client
6
6
  Author-email: Dylan Anthony <contact@dylananthony.com>
@@ -226,6 +226,39 @@ content_type_overrides:
226
226
  application/zip: application/octet-stream
227
227
  ```
228
228
 
229
+ ## Supported Extensions
230
+
231
+ ### x-enum-varnames
232
+
233
+ This extension has been adopted by similar projects such as [OpenAPI Tools](https://github.com/OpenAPITools/openapi-generator/pull/917).
234
+ It is intended to provide user-friendly names for integer Enum members that get generated.
235
+ It is critical that the length of the array matches that of the enum values.
236
+
237
+ ```
238
+ "Colors": {
239
+ "type": "integer",
240
+ "format": "int32",
241
+ "enum": [
242
+ 0,
243
+ 1,
244
+ 2
245
+ ],
246
+ "x-enum-varnames": [
247
+ "Red",
248
+ "Green",
249
+ "Blue"
250
+ ]
251
+ }
252
+ ```
253
+
254
+ Results in:
255
+ ```
256
+ class Color(IntEnum):
257
+ RED = 0
258
+ GREEN = 1
259
+ BLUE = 2
260
+ ```
261
+
229
262
  [changelog.md]: CHANGELOG.md
230
263
  [poetry]: https://python-poetry.org/
231
264
  [PDM]: https://pdm-project.org/latest/
@@ -192,6 +192,39 @@ content_type_overrides:
192
192
  application/zip: application/octet-stream
193
193
  ```
194
194
 
195
+ ## Supported Extensions
196
+
197
+ ### x-enum-varnames
198
+
199
+ This extension has been adopted by similar projects such as [OpenAPI Tools](https://github.com/OpenAPITools/openapi-generator/pull/917).
200
+ It is intended to provide user-friendly names for integer Enum members that get generated.
201
+ It is critical that the length of the array matches that of the enum values.
202
+
203
+ ```
204
+ "Colors": {
205
+ "type": "integer",
206
+ "format": "int32",
207
+ "enum": [
208
+ 0,
209
+ 1,
210
+ 2
211
+ ],
212
+ "x-enum-varnames": [
213
+ "Red",
214
+ "Green",
215
+ "Blue"
216
+ ]
217
+ }
218
+ ```
219
+
220
+ Results in:
221
+ ```
222
+ class Color(IntEnum):
223
+ RED = 0
224
+ GREEN = 1
225
+ BLUE = 2
226
+ ```
227
+
195
228
  [changelog.md]: CHANGELOG.md
196
229
  [poetry]: https://python-poetry.org/
197
230
  [PDM]: https://pdm-project.org/latest/
@@ -121,7 +121,8 @@ class EnumProperty(PropertyProtocol):
121
121
  if parent_name:
122
122
  class_name = f"{utils.pascal_case(parent_name)}{utils.pascal_case(class_name)}"
123
123
  class_info = Class.from_string(string=class_name, config=config)
124
- values = EnumProperty.values_from_list(value_list, class_info)
124
+ var_names = data.model_extra.get("x-enum-varnames", []) if data.model_extra else []
125
+ values = EnumProperty.values_from_list(value_list, class_info, var_names)
125
126
 
126
127
  if class_info.name in schemas.classes_by_name:
127
128
  existing = schemas.classes_by_name[class_info.name]
@@ -183,14 +184,21 @@ class EnumProperty(PropertyProtocol):
183
184
  return imports
184
185
 
185
186
  @staticmethod
186
- def values_from_list(values: list[str] | list[int], class_info: Class) -> dict[str, ValueType]:
187
+ def values_from_list(
188
+ values: list[str] | list[int], class_info: Class, var_names: list[str]
189
+ ) -> dict[str, ValueType]:
187
190
  """Convert a list of values into dict of {name: value}, where value can sometimes be None"""
188
191
  output: dict[str, ValueType] = {}
192
+ use_var_names = len(var_names) == len(values)
189
193
 
190
194
  for i, value in enumerate(values):
191
195
  value = cast(Union[str, int], value)
192
196
  if isinstance(value, int):
193
- if value < 0:
197
+ if use_var_names:
198
+ key = var_names[i]
199
+ sanitized_key = utils.snake_case(key).upper()
200
+ output[sanitized_key] = value
201
+ elif value < 0:
194
202
  output[f"VALUE_NEGATIVE_{-value}"] = value
195
203
  else:
196
204
  output[f"VALUE_{value}"] = value
@@ -18,7 +18,7 @@ dependencies = [
18
18
  "typing-extensions>=4.8.0,<5.0.0",
19
19
  ]
20
20
  name = "openapi-python-client"
21
- version = "0.24.2"
21
+ version = "0.24.3"
22
22
  description = "Generate modern Python clients from OpenAPI"
23
23
  keywords = [
24
24
  "OpenAPI",