openapi-python-client 0.24.1__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.1 → openapi_python_client-0.24.3}/PKG-INFO +34 -1
  2. {openapi_python_client-0.24.1 → openapi_python_client-0.24.3}/README.md +33 -0
  3. {openapi_python_client-0.24.1 → openapi_python_client-0.24.3}/openapi_python_client/parser/openapi.py +5 -5
  4. {openapi_python_client-0.24.1 → openapi_python_client-0.24.3}/openapi_python_client/parser/properties/enum_property.py +11 -3
  5. {openapi_python_client-0.24.1 → openapi_python_client-0.24.3}/pyproject.toml +1 -1
  6. {openapi_python_client-0.24.1 → openapi_python_client-0.24.3}/.gitignore +0 -0
  7. {openapi_python_client-0.24.1 → openapi_python_client-0.24.3}/LICENSE +0 -0
  8. {openapi_python_client-0.24.1 → openapi_python_client-0.24.3}/openapi_python_client/__init__.py +0 -0
  9. {openapi_python_client-0.24.1 → openapi_python_client-0.24.3}/openapi_python_client/__main__.py +0 -0
  10. {openapi_python_client-0.24.1 → openapi_python_client-0.24.3}/openapi_python_client/cli.py +0 -0
  11. {openapi_python_client-0.24.1 → openapi_python_client-0.24.3}/openapi_python_client/config.py +0 -0
  12. {openapi_python_client-0.24.1 → openapi_python_client-0.24.3}/openapi_python_client/parser/__init__.py +0 -0
  13. {openapi_python_client-0.24.1 → openapi_python_client-0.24.3}/openapi_python_client/parser/bodies.py +0 -0
  14. {openapi_python_client-0.24.1 → openapi_python_client-0.24.3}/openapi_python_client/parser/errors.py +0 -0
  15. {openapi_python_client-0.24.1 → openapi_python_client-0.24.3}/openapi_python_client/parser/properties/__init__.py +0 -0
  16. {openapi_python_client-0.24.1 → openapi_python_client-0.24.3}/openapi_python_client/parser/properties/any.py +0 -0
  17. {openapi_python_client-0.24.1 → openapi_python_client-0.24.3}/openapi_python_client/parser/properties/boolean.py +0 -0
  18. {openapi_python_client-0.24.1 → openapi_python_client-0.24.3}/openapi_python_client/parser/properties/const.py +0 -0
  19. {openapi_python_client-0.24.1 → openapi_python_client-0.24.3}/openapi_python_client/parser/properties/date.py +0 -0
  20. {openapi_python_client-0.24.1 → openapi_python_client-0.24.3}/openapi_python_client/parser/properties/datetime.py +0 -0
  21. {openapi_python_client-0.24.1 → openapi_python_client-0.24.3}/openapi_python_client/parser/properties/file.py +0 -0
  22. {openapi_python_client-0.24.1 → openapi_python_client-0.24.3}/openapi_python_client/parser/properties/float.py +0 -0
  23. {openapi_python_client-0.24.1 → openapi_python_client-0.24.3}/openapi_python_client/parser/properties/int.py +0 -0
  24. {openapi_python_client-0.24.1 → openapi_python_client-0.24.3}/openapi_python_client/parser/properties/list_property.py +0 -0
  25. {openapi_python_client-0.24.1 → openapi_python_client-0.24.3}/openapi_python_client/parser/properties/literal_enum_property.py +0 -0
  26. {openapi_python_client-0.24.1 → openapi_python_client-0.24.3}/openapi_python_client/parser/properties/merge_properties.py +0 -0
  27. {openapi_python_client-0.24.1 → openapi_python_client-0.24.3}/openapi_python_client/parser/properties/model_property.py +0 -0
  28. {openapi_python_client-0.24.1 → openapi_python_client-0.24.3}/openapi_python_client/parser/properties/none.py +0 -0
  29. {openapi_python_client-0.24.1 → openapi_python_client-0.24.3}/openapi_python_client/parser/properties/property.py +0 -0
  30. {openapi_python_client-0.24.1 → openapi_python_client-0.24.3}/openapi_python_client/parser/properties/protocol.py +0 -0
  31. {openapi_python_client-0.24.1 → openapi_python_client-0.24.3}/openapi_python_client/parser/properties/schemas.py +0 -0
  32. {openapi_python_client-0.24.1 → openapi_python_client-0.24.3}/openapi_python_client/parser/properties/string.py +0 -0
  33. {openapi_python_client-0.24.1 → openapi_python_client-0.24.3}/openapi_python_client/parser/properties/union.py +0 -0
  34. {openapi_python_client-0.24.1 → openapi_python_client-0.24.3}/openapi_python_client/parser/properties/uuid.py +0 -0
  35. {openapi_python_client-0.24.1 → openapi_python_client-0.24.3}/openapi_python_client/parser/responses.py +0 -0
  36. {openapi_python_client-0.24.1 → openapi_python_client-0.24.3}/openapi_python_client/py.typed +0 -0
  37. {openapi_python_client-0.24.1 → openapi_python_client-0.24.3}/openapi_python_client/schema/3.0.3.md +0 -0
  38. {openapi_python_client-0.24.1 → openapi_python_client-0.24.3}/openapi_python_client/schema/3.1.0.md +0 -0
  39. {openapi_python_client-0.24.1 → openapi_python_client-0.24.3}/openapi_python_client/schema/__init__.py +0 -0
  40. {openapi_python_client-0.24.1 → openapi_python_client-0.24.3}/openapi_python_client/schema/data_type.py +0 -0
  41. {openapi_python_client-0.24.1 → openapi_python_client-0.24.3}/openapi_python_client/schema/openapi_schema_pydantic/LICENSE +0 -0
  42. {openapi_python_client-0.24.1 → openapi_python_client-0.24.3}/openapi_python_client/schema/openapi_schema_pydantic/README.md +0 -0
  43. {openapi_python_client-0.24.1 → openapi_python_client-0.24.3}/openapi_python_client/schema/openapi_schema_pydantic/__init__.py +0 -0
  44. {openapi_python_client-0.24.1 → openapi_python_client-0.24.3}/openapi_python_client/schema/openapi_schema_pydantic/callback.py +0 -0
  45. {openapi_python_client-0.24.1 → openapi_python_client-0.24.3}/openapi_python_client/schema/openapi_schema_pydantic/components.py +0 -0
  46. {openapi_python_client-0.24.1 → openapi_python_client-0.24.3}/openapi_python_client/schema/openapi_schema_pydantic/contact.py +0 -0
  47. {openapi_python_client-0.24.1 → openapi_python_client-0.24.3}/openapi_python_client/schema/openapi_schema_pydantic/discriminator.py +0 -0
  48. {openapi_python_client-0.24.1 → openapi_python_client-0.24.3}/openapi_python_client/schema/openapi_schema_pydantic/encoding.py +0 -0
  49. {openapi_python_client-0.24.1 → openapi_python_client-0.24.3}/openapi_python_client/schema/openapi_schema_pydantic/example.py +0 -0
  50. {openapi_python_client-0.24.1 → openapi_python_client-0.24.3}/openapi_python_client/schema/openapi_schema_pydantic/external_documentation.py +0 -0
  51. {openapi_python_client-0.24.1 → openapi_python_client-0.24.3}/openapi_python_client/schema/openapi_schema_pydantic/header.py +0 -0
  52. {openapi_python_client-0.24.1 → openapi_python_client-0.24.3}/openapi_python_client/schema/openapi_schema_pydantic/info.py +0 -0
  53. {openapi_python_client-0.24.1 → openapi_python_client-0.24.3}/openapi_python_client/schema/openapi_schema_pydantic/license.py +0 -0
  54. {openapi_python_client-0.24.1 → openapi_python_client-0.24.3}/openapi_python_client/schema/openapi_schema_pydantic/link.py +0 -0
  55. {openapi_python_client-0.24.1 → openapi_python_client-0.24.3}/openapi_python_client/schema/openapi_schema_pydantic/media_type.py +0 -0
  56. {openapi_python_client-0.24.1 → openapi_python_client-0.24.3}/openapi_python_client/schema/openapi_schema_pydantic/oauth_flow.py +0 -0
  57. {openapi_python_client-0.24.1 → openapi_python_client-0.24.3}/openapi_python_client/schema/openapi_schema_pydantic/oauth_flows.py +0 -0
  58. {openapi_python_client-0.24.1 → openapi_python_client-0.24.3}/openapi_python_client/schema/openapi_schema_pydantic/open_api.py +0 -0
  59. {openapi_python_client-0.24.1 → openapi_python_client-0.24.3}/openapi_python_client/schema/openapi_schema_pydantic/operation.py +0 -0
  60. {openapi_python_client-0.24.1 → openapi_python_client-0.24.3}/openapi_python_client/schema/openapi_schema_pydantic/parameter.py +0 -0
  61. {openapi_python_client-0.24.1 → openapi_python_client-0.24.3}/openapi_python_client/schema/openapi_schema_pydantic/path_item.py +0 -0
  62. {openapi_python_client-0.24.1 → openapi_python_client-0.24.3}/openapi_python_client/schema/openapi_schema_pydantic/paths.py +0 -0
  63. {openapi_python_client-0.24.1 → openapi_python_client-0.24.3}/openapi_python_client/schema/openapi_schema_pydantic/reference.py +0 -0
  64. {openapi_python_client-0.24.1 → openapi_python_client-0.24.3}/openapi_python_client/schema/openapi_schema_pydantic/request_body.py +0 -0
  65. {openapi_python_client-0.24.1 → openapi_python_client-0.24.3}/openapi_python_client/schema/openapi_schema_pydantic/response.py +0 -0
  66. {openapi_python_client-0.24.1 → openapi_python_client-0.24.3}/openapi_python_client/schema/openapi_schema_pydantic/responses.py +0 -0
  67. {openapi_python_client-0.24.1 → openapi_python_client-0.24.3}/openapi_python_client/schema/openapi_schema_pydantic/schema.py +0 -0
  68. {openapi_python_client-0.24.1 → openapi_python_client-0.24.3}/openapi_python_client/schema/openapi_schema_pydantic/security_requirement.py +0 -0
  69. {openapi_python_client-0.24.1 → openapi_python_client-0.24.3}/openapi_python_client/schema/openapi_schema_pydantic/security_scheme.py +0 -0
  70. {openapi_python_client-0.24.1 → openapi_python_client-0.24.3}/openapi_python_client/schema/openapi_schema_pydantic/server.py +0 -0
  71. {openapi_python_client-0.24.1 → openapi_python_client-0.24.3}/openapi_python_client/schema/openapi_schema_pydantic/server_variable.py +0 -0
  72. {openapi_python_client-0.24.1 → openapi_python_client-0.24.3}/openapi_python_client/schema/openapi_schema_pydantic/tag.py +0 -0
  73. {openapi_python_client-0.24.1 → openapi_python_client-0.24.3}/openapi_python_client/schema/openapi_schema_pydantic/xml.py +0 -0
  74. {openapi_python_client-0.24.1 → openapi_python_client-0.24.3}/openapi_python_client/schema/parameter_location.py +0 -0
  75. {openapi_python_client-0.24.1 → openapi_python_client-0.24.3}/openapi_python_client/templates/.gitignore.jinja +0 -0
  76. {openapi_python_client-0.24.1 → openapi_python_client-0.24.3}/openapi_python_client/templates/README.md.jinja +0 -0
  77. {openapi_python_client-0.24.1 → openapi_python_client-0.24.3}/openapi_python_client/templates/api_init.py.jinja +0 -0
  78. {openapi_python_client-0.24.1 → openapi_python_client-0.24.3}/openapi_python_client/templates/client.py.jinja +0 -0
  79. {openapi_python_client-0.24.1 → openapi_python_client-0.24.3}/openapi_python_client/templates/endpoint_init.py.jinja +0 -0
  80. {openapi_python_client-0.24.1 → openapi_python_client-0.24.3}/openapi_python_client/templates/endpoint_macros.py.jinja +0 -0
  81. {openapi_python_client-0.24.1 → openapi_python_client-0.24.3}/openapi_python_client/templates/endpoint_module.py.jinja +0 -0
  82. {openapi_python_client-0.24.1 → openapi_python_client-0.24.3}/openapi_python_client/templates/errors.py.jinja +0 -0
  83. {openapi_python_client-0.24.1 → openapi_python_client-0.24.3}/openapi_python_client/templates/helpers.jinja +0 -0
  84. {openapi_python_client-0.24.1 → openapi_python_client-0.24.3}/openapi_python_client/templates/int_enum.py.jinja +0 -0
  85. {openapi_python_client-0.24.1 → openapi_python_client-0.24.3}/openapi_python_client/templates/literal_enum.py.jinja +0 -0
  86. {openapi_python_client-0.24.1 → openapi_python_client-0.24.3}/openapi_python_client/templates/model.py.jinja +0 -0
  87. {openapi_python_client-0.24.1 → openapi_python_client-0.24.3}/openapi_python_client/templates/models_init.py.jinja +0 -0
  88. {openapi_python_client-0.24.1 → openapi_python_client-0.24.3}/openapi_python_client/templates/package_init.py.jinja +0 -0
  89. {openapi_python_client-0.24.1 → openapi_python_client-0.24.3}/openapi_python_client/templates/property_templates/any_property.py.jinja +0 -0
  90. {openapi_python_client-0.24.1 → openapi_python_client-0.24.3}/openapi_python_client/templates/property_templates/boolean_property.py.jinja +0 -0
  91. {openapi_python_client-0.24.1 → openapi_python_client-0.24.3}/openapi_python_client/templates/property_templates/const_property.py.jinja +0 -0
  92. {openapi_python_client-0.24.1 → openapi_python_client-0.24.3}/openapi_python_client/templates/property_templates/date_property.py.jinja +0 -0
  93. {openapi_python_client-0.24.1 → openapi_python_client-0.24.3}/openapi_python_client/templates/property_templates/datetime_property.py.jinja +0 -0
  94. {openapi_python_client-0.24.1 → openapi_python_client-0.24.3}/openapi_python_client/templates/property_templates/enum_property.py.jinja +0 -0
  95. {openapi_python_client-0.24.1 → openapi_python_client-0.24.3}/openapi_python_client/templates/property_templates/file_property.py.jinja +0 -0
  96. {openapi_python_client-0.24.1 → openapi_python_client-0.24.3}/openapi_python_client/templates/property_templates/float_property.py.jinja +0 -0
  97. {openapi_python_client-0.24.1 → openapi_python_client-0.24.3}/openapi_python_client/templates/property_templates/helpers.jinja +0 -0
  98. {openapi_python_client-0.24.1 → openapi_python_client-0.24.3}/openapi_python_client/templates/property_templates/int_property.py.jinja +0 -0
  99. {openapi_python_client-0.24.1 → openapi_python_client-0.24.3}/openapi_python_client/templates/property_templates/list_property.py.jinja +0 -0
  100. {openapi_python_client-0.24.1 → 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.1 → openapi_python_client-0.24.3}/openapi_python_client/templates/property_templates/model_property.py.jinja +0 -0
  102. {openapi_python_client-0.24.1 → openapi_python_client-0.24.3}/openapi_python_client/templates/property_templates/property_macros.py.jinja +0 -0
  103. {openapi_python_client-0.24.1 → openapi_python_client-0.24.3}/openapi_python_client/templates/property_templates/union_property.py.jinja +0 -0
  104. {openapi_python_client-0.24.1 → openapi_python_client-0.24.3}/openapi_python_client/templates/property_templates/uuid_property.py.jinja +0 -0
  105. {openapi_python_client-0.24.1 → openapi_python_client-0.24.3}/openapi_python_client/templates/pyproject.toml.jinja +0 -0
  106. {openapi_python_client-0.24.1 → openapi_python_client-0.24.3}/openapi_python_client/templates/pyproject_ruff.toml.jinja +0 -0
  107. {openapi_python_client-0.24.1 → openapi_python_client-0.24.3}/openapi_python_client/templates/setup.py.jinja +0 -0
  108. {openapi_python_client-0.24.1 → openapi_python_client-0.24.3}/openapi_python_client/templates/str_enum.py.jinja +0 -0
  109. {openapi_python_client-0.24.1 → openapi_python_client-0.24.3}/openapi_python_client/templates/types.py.jinja +0 -0
  110. {openapi_python_client-0.24.1 → 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.1
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/
@@ -508,10 +508,10 @@ class GeneratorData:
508
508
  title: str
509
509
  description: Optional[str]
510
510
  version: str
511
- models: Iterator[ModelProperty]
511
+ models: list[ModelProperty]
512
512
  errors: list[ParseError]
513
513
  endpoint_collections_by_tag: dict[utils.PythonIdentifier, EndpointCollection]
514
- enums: Iterator[Union[EnumProperty, LiteralEnumProperty]]
514
+ enums: list[Union[EnumProperty, LiteralEnumProperty]]
515
515
 
516
516
  @staticmethod
517
517
  def from_dict(data: dict[str, Any], *, config: Config) -> Union["GeneratorData", GeneratorError]:
@@ -546,10 +546,10 @@ class GeneratorData:
546
546
  config=config,
547
547
  )
548
548
 
549
- enums = (
549
+ enums = [
550
550
  prop for prop in schemas.classes_by_name.values() if isinstance(prop, (EnumProperty, LiteralEnumProperty))
551
- )
552
- models = (prop for prop in schemas.classes_by_name.values() if isinstance(prop, ModelProperty))
551
+ ]
552
+ models = [prop for prop in schemas.classes_by_name.values() if isinstance(prop, ModelProperty)]
553
553
 
554
554
  return GeneratorData(
555
555
  title=openapi.info.title,
@@ -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.1"
21
+ version = "0.24.3"
22
22
  description = "Generate modern Python clients from OpenAPI"
23
23
  keywords = [
24
24
  "OpenAPI",