openapi-python-client 0.26.0__tar.gz → 0.26.2__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 (113) hide show
  1. {openapi_python_client-0.26.0 → openapi_python_client-0.26.2}/PKG-INFO +3 -3
  2. {openapi_python_client-0.26.0 → openapi_python_client-0.26.2}/openapi_python_client/parser/properties/__init__.py +19 -5
  3. {openapi_python_client-0.26.0 → openapi_python_client-0.26.2}/openapi_python_client/templates/pyproject_uv.toml.jinja +1 -1
  4. {openapi_python_client-0.26.0 → openapi_python_client-0.26.2}/pyproject.toml +3 -3
  5. {openapi_python_client-0.26.0 → openapi_python_client-0.26.2}/.gitignore +0 -0
  6. {openapi_python_client-0.26.0 → openapi_python_client-0.26.2}/LICENSE +0 -0
  7. {openapi_python_client-0.26.0 → openapi_python_client-0.26.2}/README.md +0 -0
  8. {openapi_python_client-0.26.0 → openapi_python_client-0.26.2}/openapi_python_client/__init__.py +0 -0
  9. {openapi_python_client-0.26.0 → openapi_python_client-0.26.2}/openapi_python_client/__main__.py +0 -0
  10. {openapi_python_client-0.26.0 → openapi_python_client-0.26.2}/openapi_python_client/cli.py +0 -0
  11. {openapi_python_client-0.26.0 → openapi_python_client-0.26.2}/openapi_python_client/config.py +0 -0
  12. {openapi_python_client-0.26.0 → openapi_python_client-0.26.2}/openapi_python_client/parser/__init__.py +0 -0
  13. {openapi_python_client-0.26.0 → openapi_python_client-0.26.2}/openapi_python_client/parser/bodies.py +0 -0
  14. {openapi_python_client-0.26.0 → openapi_python_client-0.26.2}/openapi_python_client/parser/errors.py +0 -0
  15. {openapi_python_client-0.26.0 → openapi_python_client-0.26.2}/openapi_python_client/parser/openapi.py +0 -0
  16. {openapi_python_client-0.26.0 → openapi_python_client-0.26.2}/openapi_python_client/parser/properties/any.py +0 -0
  17. {openapi_python_client-0.26.0 → openapi_python_client-0.26.2}/openapi_python_client/parser/properties/boolean.py +0 -0
  18. {openapi_python_client-0.26.0 → openapi_python_client-0.26.2}/openapi_python_client/parser/properties/const.py +0 -0
  19. {openapi_python_client-0.26.0 → openapi_python_client-0.26.2}/openapi_python_client/parser/properties/date.py +0 -0
  20. {openapi_python_client-0.26.0 → openapi_python_client-0.26.2}/openapi_python_client/parser/properties/datetime.py +0 -0
  21. {openapi_python_client-0.26.0 → openapi_python_client-0.26.2}/openapi_python_client/parser/properties/enum_property.py +0 -0
  22. {openapi_python_client-0.26.0 → openapi_python_client-0.26.2}/openapi_python_client/parser/properties/file.py +0 -0
  23. {openapi_python_client-0.26.0 → openapi_python_client-0.26.2}/openapi_python_client/parser/properties/float.py +0 -0
  24. {openapi_python_client-0.26.0 → openapi_python_client-0.26.2}/openapi_python_client/parser/properties/int.py +0 -0
  25. {openapi_python_client-0.26.0 → openapi_python_client-0.26.2}/openapi_python_client/parser/properties/list_property.py +0 -0
  26. {openapi_python_client-0.26.0 → openapi_python_client-0.26.2}/openapi_python_client/parser/properties/literal_enum_property.py +0 -0
  27. {openapi_python_client-0.26.0 → openapi_python_client-0.26.2}/openapi_python_client/parser/properties/merge_properties.py +0 -0
  28. {openapi_python_client-0.26.0 → openapi_python_client-0.26.2}/openapi_python_client/parser/properties/model_property.py +0 -0
  29. {openapi_python_client-0.26.0 → openapi_python_client-0.26.2}/openapi_python_client/parser/properties/none.py +0 -0
  30. {openapi_python_client-0.26.0 → openapi_python_client-0.26.2}/openapi_python_client/parser/properties/property.py +0 -0
  31. {openapi_python_client-0.26.0 → openapi_python_client-0.26.2}/openapi_python_client/parser/properties/protocol.py +0 -0
  32. {openapi_python_client-0.26.0 → openapi_python_client-0.26.2}/openapi_python_client/parser/properties/schemas.py +0 -0
  33. {openapi_python_client-0.26.0 → openapi_python_client-0.26.2}/openapi_python_client/parser/properties/string.py +0 -0
  34. {openapi_python_client-0.26.0 → openapi_python_client-0.26.2}/openapi_python_client/parser/properties/union.py +0 -0
  35. {openapi_python_client-0.26.0 → openapi_python_client-0.26.2}/openapi_python_client/parser/properties/uuid.py +0 -0
  36. {openapi_python_client-0.26.0 → openapi_python_client-0.26.2}/openapi_python_client/parser/responses.py +0 -0
  37. {openapi_python_client-0.26.0 → openapi_python_client-0.26.2}/openapi_python_client/py.typed +0 -0
  38. {openapi_python_client-0.26.0 → openapi_python_client-0.26.2}/openapi_python_client/schema/3.0.3.md +0 -0
  39. {openapi_python_client-0.26.0 → openapi_python_client-0.26.2}/openapi_python_client/schema/3.1.0.md +0 -0
  40. {openapi_python_client-0.26.0 → openapi_python_client-0.26.2}/openapi_python_client/schema/__init__.py +0 -0
  41. {openapi_python_client-0.26.0 → openapi_python_client-0.26.2}/openapi_python_client/schema/data_type.py +0 -0
  42. {openapi_python_client-0.26.0 → openapi_python_client-0.26.2}/openapi_python_client/schema/openapi_schema_pydantic/LICENSE +0 -0
  43. {openapi_python_client-0.26.0 → openapi_python_client-0.26.2}/openapi_python_client/schema/openapi_schema_pydantic/README.md +0 -0
  44. {openapi_python_client-0.26.0 → openapi_python_client-0.26.2}/openapi_python_client/schema/openapi_schema_pydantic/__init__.py +0 -0
  45. {openapi_python_client-0.26.0 → openapi_python_client-0.26.2}/openapi_python_client/schema/openapi_schema_pydantic/callback.py +0 -0
  46. {openapi_python_client-0.26.0 → openapi_python_client-0.26.2}/openapi_python_client/schema/openapi_schema_pydantic/components.py +0 -0
  47. {openapi_python_client-0.26.0 → openapi_python_client-0.26.2}/openapi_python_client/schema/openapi_schema_pydantic/contact.py +0 -0
  48. {openapi_python_client-0.26.0 → openapi_python_client-0.26.2}/openapi_python_client/schema/openapi_schema_pydantic/discriminator.py +0 -0
  49. {openapi_python_client-0.26.0 → openapi_python_client-0.26.2}/openapi_python_client/schema/openapi_schema_pydantic/encoding.py +0 -0
  50. {openapi_python_client-0.26.0 → openapi_python_client-0.26.2}/openapi_python_client/schema/openapi_schema_pydantic/example.py +0 -0
  51. {openapi_python_client-0.26.0 → openapi_python_client-0.26.2}/openapi_python_client/schema/openapi_schema_pydantic/external_documentation.py +0 -0
  52. {openapi_python_client-0.26.0 → openapi_python_client-0.26.2}/openapi_python_client/schema/openapi_schema_pydantic/header.py +0 -0
  53. {openapi_python_client-0.26.0 → openapi_python_client-0.26.2}/openapi_python_client/schema/openapi_schema_pydantic/info.py +0 -0
  54. {openapi_python_client-0.26.0 → openapi_python_client-0.26.2}/openapi_python_client/schema/openapi_schema_pydantic/license.py +0 -0
  55. {openapi_python_client-0.26.0 → openapi_python_client-0.26.2}/openapi_python_client/schema/openapi_schema_pydantic/link.py +0 -0
  56. {openapi_python_client-0.26.0 → openapi_python_client-0.26.2}/openapi_python_client/schema/openapi_schema_pydantic/media_type.py +0 -0
  57. {openapi_python_client-0.26.0 → openapi_python_client-0.26.2}/openapi_python_client/schema/openapi_schema_pydantic/oauth_flow.py +0 -0
  58. {openapi_python_client-0.26.0 → openapi_python_client-0.26.2}/openapi_python_client/schema/openapi_schema_pydantic/oauth_flows.py +0 -0
  59. {openapi_python_client-0.26.0 → openapi_python_client-0.26.2}/openapi_python_client/schema/openapi_schema_pydantic/open_api.py +0 -0
  60. {openapi_python_client-0.26.0 → openapi_python_client-0.26.2}/openapi_python_client/schema/openapi_schema_pydantic/operation.py +0 -0
  61. {openapi_python_client-0.26.0 → openapi_python_client-0.26.2}/openapi_python_client/schema/openapi_schema_pydantic/parameter.py +0 -0
  62. {openapi_python_client-0.26.0 → openapi_python_client-0.26.2}/openapi_python_client/schema/openapi_schema_pydantic/path_item.py +0 -0
  63. {openapi_python_client-0.26.0 → openapi_python_client-0.26.2}/openapi_python_client/schema/openapi_schema_pydantic/paths.py +0 -0
  64. {openapi_python_client-0.26.0 → openapi_python_client-0.26.2}/openapi_python_client/schema/openapi_schema_pydantic/reference.py +0 -0
  65. {openapi_python_client-0.26.0 → openapi_python_client-0.26.2}/openapi_python_client/schema/openapi_schema_pydantic/request_body.py +0 -0
  66. {openapi_python_client-0.26.0 → openapi_python_client-0.26.2}/openapi_python_client/schema/openapi_schema_pydantic/response.py +0 -0
  67. {openapi_python_client-0.26.0 → openapi_python_client-0.26.2}/openapi_python_client/schema/openapi_schema_pydantic/responses.py +0 -0
  68. {openapi_python_client-0.26.0 → openapi_python_client-0.26.2}/openapi_python_client/schema/openapi_schema_pydantic/schema.py +0 -0
  69. {openapi_python_client-0.26.0 → openapi_python_client-0.26.2}/openapi_python_client/schema/openapi_schema_pydantic/security_requirement.py +0 -0
  70. {openapi_python_client-0.26.0 → openapi_python_client-0.26.2}/openapi_python_client/schema/openapi_schema_pydantic/security_scheme.py +0 -0
  71. {openapi_python_client-0.26.0 → openapi_python_client-0.26.2}/openapi_python_client/schema/openapi_schema_pydantic/server.py +0 -0
  72. {openapi_python_client-0.26.0 → openapi_python_client-0.26.2}/openapi_python_client/schema/openapi_schema_pydantic/server_variable.py +0 -0
  73. {openapi_python_client-0.26.0 → openapi_python_client-0.26.2}/openapi_python_client/schema/openapi_schema_pydantic/tag.py +0 -0
  74. {openapi_python_client-0.26.0 → openapi_python_client-0.26.2}/openapi_python_client/schema/openapi_schema_pydantic/xml.py +0 -0
  75. {openapi_python_client-0.26.0 → openapi_python_client-0.26.2}/openapi_python_client/schema/parameter_location.py +0 -0
  76. {openapi_python_client-0.26.0 → openapi_python_client-0.26.2}/openapi_python_client/templates/.gitignore.jinja +0 -0
  77. {openapi_python_client-0.26.0 → openapi_python_client-0.26.2}/openapi_python_client/templates/README.md.jinja +0 -0
  78. {openapi_python_client-0.26.0 → openapi_python_client-0.26.2}/openapi_python_client/templates/api_init.py.jinja +0 -0
  79. {openapi_python_client-0.26.0 → openapi_python_client-0.26.2}/openapi_python_client/templates/client.py.jinja +0 -0
  80. {openapi_python_client-0.26.0 → openapi_python_client-0.26.2}/openapi_python_client/templates/endpoint_init.py.jinja +0 -0
  81. {openapi_python_client-0.26.0 → openapi_python_client-0.26.2}/openapi_python_client/templates/endpoint_macros.py.jinja +0 -0
  82. {openapi_python_client-0.26.0 → openapi_python_client-0.26.2}/openapi_python_client/templates/endpoint_module.py.jinja +0 -0
  83. {openapi_python_client-0.26.0 → openapi_python_client-0.26.2}/openapi_python_client/templates/errors.py.jinja +0 -0
  84. {openapi_python_client-0.26.0 → openapi_python_client-0.26.2}/openapi_python_client/templates/helpers.jinja +0 -0
  85. {openapi_python_client-0.26.0 → openapi_python_client-0.26.2}/openapi_python_client/templates/int_enum.py.jinja +0 -0
  86. {openapi_python_client-0.26.0 → openapi_python_client-0.26.2}/openapi_python_client/templates/literal_enum.py.jinja +0 -0
  87. {openapi_python_client-0.26.0 → openapi_python_client-0.26.2}/openapi_python_client/templates/model.py.jinja +0 -0
  88. {openapi_python_client-0.26.0 → openapi_python_client-0.26.2}/openapi_python_client/templates/models_init.py.jinja +0 -0
  89. {openapi_python_client-0.26.0 → openapi_python_client-0.26.2}/openapi_python_client/templates/package_init.py.jinja +0 -0
  90. {openapi_python_client-0.26.0 → openapi_python_client-0.26.2}/openapi_python_client/templates/property_templates/any_property.py.jinja +0 -0
  91. {openapi_python_client-0.26.0 → openapi_python_client-0.26.2}/openapi_python_client/templates/property_templates/boolean_property.py.jinja +0 -0
  92. {openapi_python_client-0.26.0 → openapi_python_client-0.26.2}/openapi_python_client/templates/property_templates/const_property.py.jinja +0 -0
  93. {openapi_python_client-0.26.0 → openapi_python_client-0.26.2}/openapi_python_client/templates/property_templates/date_property.py.jinja +0 -0
  94. {openapi_python_client-0.26.0 → openapi_python_client-0.26.2}/openapi_python_client/templates/property_templates/datetime_property.py.jinja +0 -0
  95. {openapi_python_client-0.26.0 → openapi_python_client-0.26.2}/openapi_python_client/templates/property_templates/enum_property.py.jinja +0 -0
  96. {openapi_python_client-0.26.0 → openapi_python_client-0.26.2}/openapi_python_client/templates/property_templates/file_property.py.jinja +0 -0
  97. {openapi_python_client-0.26.0 → openapi_python_client-0.26.2}/openapi_python_client/templates/property_templates/float_property.py.jinja +0 -0
  98. {openapi_python_client-0.26.0 → openapi_python_client-0.26.2}/openapi_python_client/templates/property_templates/helpers.jinja +0 -0
  99. {openapi_python_client-0.26.0 → openapi_python_client-0.26.2}/openapi_python_client/templates/property_templates/int_property.py.jinja +0 -0
  100. {openapi_python_client-0.26.0 → openapi_python_client-0.26.2}/openapi_python_client/templates/property_templates/list_property.py.jinja +0 -0
  101. {openapi_python_client-0.26.0 → openapi_python_client-0.26.2}/openapi_python_client/templates/property_templates/literal_enum_property.py.jinja +0 -0
  102. {openapi_python_client-0.26.0 → openapi_python_client-0.26.2}/openapi_python_client/templates/property_templates/model_property.py.jinja +0 -0
  103. {openapi_python_client-0.26.0 → openapi_python_client-0.26.2}/openapi_python_client/templates/property_templates/property_macros.py.jinja +0 -0
  104. {openapi_python_client-0.26.0 → openapi_python_client-0.26.2}/openapi_python_client/templates/property_templates/union_property.py.jinja +0 -0
  105. {openapi_python_client-0.26.0 → openapi_python_client-0.26.2}/openapi_python_client/templates/property_templates/uuid_property.py.jinja +0 -0
  106. {openapi_python_client-0.26.0 → openapi_python_client-0.26.2}/openapi_python_client/templates/pyproject.toml.jinja +0 -0
  107. {openapi_python_client-0.26.0 → openapi_python_client-0.26.2}/openapi_python_client/templates/pyproject_pdm.toml.jinja +0 -0
  108. {openapi_python_client-0.26.0 → openapi_python_client-0.26.2}/openapi_python_client/templates/pyproject_poetry.toml.jinja +0 -0
  109. {openapi_python_client-0.26.0 → openapi_python_client-0.26.2}/openapi_python_client/templates/pyproject_ruff.toml.jinja +0 -0
  110. {openapi_python_client-0.26.0 → openapi_python_client-0.26.2}/openapi_python_client/templates/setup.py.jinja +0 -0
  111. {openapi_python_client-0.26.0 → openapi_python_client-0.26.2}/openapi_python_client/templates/str_enum.py.jinja +0 -0
  112. {openapi_python_client-0.26.0 → openapi_python_client-0.26.2}/openapi_python_client/templates/types.py.jinja +0 -0
  113. {openapi_python_client-0.26.0 → openapi_python_client-0.26.2}/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.26.0
3
+ Version: 0.26.2
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>
@@ -26,9 +26,9 @@ Requires-Dist: jinja2<4.0.0,>=3.0.0
26
26
  Requires-Dist: pydantic<3.0.0,>=2.10
27
27
  Requires-Dist: python-dateutil<3.0.0,>=2.8.1
28
28
  Requires-Dist: ruamel-yaml<0.19.0,>=0.18.6
29
- Requires-Dist: ruff<0.13,>=0.2
29
+ Requires-Dist: ruff<0.14,>=0.2
30
30
  Requires-Dist: shellingham<2.0.0,>=1.3.2
31
- Requires-Dist: typer<0.17,>0.6
31
+ Requires-Dist: typer<0.20,>0.6
32
32
  Requires-Dist: typing-extensions<5.0.0,>=4.8.0
33
33
  Description-Content-Type: text/markdown
34
34
 
@@ -40,6 +40,7 @@ from .schemas import (
40
40
  Parameters,
41
41
  ReferencePath,
42
42
  Schemas,
43
+ get_reference_simple_name,
43
44
  parse_reference_path,
44
45
  update_parameters_with_data,
45
46
  update_schemas_with_data,
@@ -324,17 +325,30 @@ def _create_schemas(
324
325
  while still_making_progress:
325
326
  still_making_progress = False
326
327
  errors = []
327
- next_round = []
328
+ next_round: list[tuple[str, oai.Reference | oai.Schema]] = []
328
329
  # Only accumulate errors from the last round, since we might fix some along the way
329
330
  for name, data in to_process:
330
- if isinstance(data, oai.Reference):
331
- schemas.errors.append(PropertyError(data=data, detail="Reference schemas are not supported."))
332
- continue
331
+ schema_data: oai.Reference | oai.Schema | None = data
333
332
  ref_path = parse_reference_path(f"#/components/schemas/{name}")
334
333
  if isinstance(ref_path, ParseError):
335
334
  schemas.errors.append(PropertyError(detail=ref_path.detail, data=data))
336
335
  continue
337
- schemas_or_err = update_schemas_with_data(ref_path=ref_path, data=data, schemas=schemas, config=config)
336
+ if isinstance(data, oai.Reference):
337
+ # Fully dereference reference schemas
338
+ seen = [name]
339
+ while isinstance(schema_data, oai.Reference):
340
+ data_ref_schema = get_reference_simple_name(schema_data.ref)
341
+ if data_ref_schema in seen:
342
+ schemas.errors.append(PropertyError(detail="Circular schema references found", data=data))
343
+ break
344
+ # use derefenced schema definition for this schema
345
+ schema_data = components.get(data_ref_schema)
346
+ if isinstance(schema_data, oai.Schema):
347
+ schemas_or_err = update_schemas_with_data(
348
+ ref_path=ref_path, data=schema_data, schemas=schemas, config=config
349
+ )
350
+ else:
351
+ schemas.errors.append(PropertyError(detail="Referent schema not found", data=data))
338
352
  if isinstance(schemas_or_err, PropertyError):
339
353
  next_round.append((name, data))
340
354
  errors.append(schemas_or_err)
@@ -3,7 +3,7 @@ name = "{{ project_name }}"
3
3
  version = "{{ package_version }}"
4
4
  description = "{{ package_description }}"
5
5
  authors = []
6
- requires-python = "~=3.9"
6
+ requires-python = ">=3.9,<4.0"
7
7
  readme = "README.md"
8
8
  dependencies = [
9
9
  "httpx>=0.23.0,<0.29.0",
@@ -6,7 +6,7 @@ license = { text = "MIT" }
6
6
  requires-python = ">=3.9,<4.0"
7
7
  dependencies = [
8
8
  "jinja2>=3.0.0,<4.0.0",
9
- "typer>0.6,<0.17",
9
+ "typer>0.6,<0.20",
10
10
  "colorama>=0.4.3; sys_platform == \"win32\"",
11
11
  "shellingham>=1.3.2,<2.0.0",
12
12
  "pydantic>=2.10,<3.0.0",
@@ -14,11 +14,11 @@ dependencies = [
14
14
  "python-dateutil>=2.8.1,<3.0.0",
15
15
  "httpx>=0.23.0,<0.29.0",
16
16
  "ruamel.yaml>=0.18.6,<0.19.0",
17
- "ruff>=0.2,<0.13",
17
+ "ruff>=0.2,<0.14",
18
18
  "typing-extensions>=4.8.0,<5.0.0",
19
19
  ]
20
20
  name = "openapi-python-client"
21
- version = "0.26.0"
21
+ version = "0.26.2"
22
22
  description = "Generate modern Python clients from OpenAPI"
23
23
  keywords = [
24
24
  "OpenAPI",