Releases: openapi-generators/openapi-python-client
0.23.1 (2025-01-13)
0.23.0 (2024-12-24)
Breaking Changes
Delete fewer files with --overwrite
--overwrite
will no longer delete the entire output directory before regenerating. Instead, it will only delete
specific, known directories within that directory. Right now, that is only the generated models
and api
directories.
Other generated files, like README.md
, will be overwritten. Extra files and directories outside of those listed above
will be left untouched, so you can any extra modules or files around while still updating pyproject.toml
automatically.
Closes #1105.
Features
- Support httpx 0.28 (#1172)
Add generate_all_tags
config option
You can now, optionally, generate duplicate endpoint functions/modules using every tag for an endpoint,
not just the first one, by setting generate_all_tags: true
in your configuration file.
Fixes
- Support Typer 0.14 and 0.15 (#1173)
Fix minimum attrs
version
The minimum attrs
dependency version was incorrectly set to 21.3.0. This has been corrected to 22.2.0, the minimum
supported version since openapi-python-client
0.19.1.
Closes #1084, thanks @astralblue!
Fix compatibility with Pydantic 2.10+
Set defer_build
to models that we know will fail to build, and call model_rebuild
in the __init__.py
file.
0.22.0 (2024-11-23)
Breaking Changes
Drop support for Python 3.8
Python 3.8 is no longer supported. "New" 3.9 syntax, like generics on builtin collections, is used both in the generator
and the generated code.
type
is now a reserved field name
Because type
is used in type annotations now, it is no longer a valid field name. Fields which were previously named
type
will be renamed to type_
.
Features
- Support Ruff 0.8 (#1169)
0.21.7 (2024-10-28)
0.21.6 (2024-10-20)
Features
- update Ruff to >=0.2,<0.8 (#1137)
- Add UUID string format. Thanks @estyrke! (#1140)
- Support OpenAPI 3.1 prefixItems property for arrays. Thanks @estyrke! (#1141)
Add literal_enums
config setting
Instead of the default Enum
classes for enums, you can now generate Literal
sets wherever enum
appears in the OpenAPI spec by setting literal_enums: true
in your config file.
literal_enums: true
Thanks to @emosenkis for PR #1114 closes #587, #725, #1076, and probably many more.
Thanks also to @eli-bl, @expobrain, @theorm, @chrisguillory, and anyone else who helped getting to this design!
Fixes
- Typo in docstring (#1128)
Use literal value instead of HTTPStatus
enum when checking response statuses
Python 3.13 renamed some of the HTTPStatus
enum members, which means clients generated with Python 3.13 may not work
with older versions of Python. This change stops using the HTTPStatus
enum directly when checking response statuses.
Statuses will still be checked for validity at generation time, and transformed into HTTPStatus
after being checked
at runtime.
This may cause some linters to complain.
0.21.5 (2024-09-07)
Features
Improved property-merging behavior with allOf
When using allOf
to extend a base object type, openapi-python-client
is now able to handle some kinds of modifications to an existing property that would have previously caused an error:
- Overriding attributes that do not affect validation, such as
description
. - Combining properties that this generator ignores, like
maxLength
orpattern
. - Combining a generic numeric type with
int
(resulting inint
). - Adding a
format
to a string. - Combining
any
with a specific type (resulting in that specific type). - Adding or overriding a
default
Note
pattern
and max_length
are no longer fields on StringProperty
, which may impact custom templates.
This also fixes a bug where properties of inline objects (as opposed to references) were not using the
merge logic, but were simply overwriting previous definitions of the same property.
Fixes
- Allow default values for properties of
Any
type
Produce valid code for an object that has no properties at all
0.21.4 (2024-08-25)
Fixes
Correctly resolve references to a type that is itself just a single allOf reference
PR #1103 fixed issue #1091. Thanks @eli-bl!
Allow OpenAPI 3.1-style exclusiveMinimum
and exclusiveMaximum
Fixed by PR #1092. Thanks @mikkelam!
Add missing cast
import when using const
Fixed by PR #1072. Thanks @dorcohe!
Support const
booleans and floats
0.21.3 (2024-08-18)
Features
- update Ruff to >=0.2,<0.7 (#1097)
0.21.2 (2024-07-20)
Features
- Update to Ruff 0.5
0.21.1 (2024-06-15)
Features
Support request body refs
You can now define and reuse bodies via refs, with a document like this:
paths:
/something:
post:
requestBody:
"$ref": "#/components/requestBodies/SharedBody"
components:
requestBodies:
SharedBody:
content:
application/json:
schema:
type: string
Thanks to @kigawas and @supermihi for initial implementations and @RockyMM for the initial request.
Closes #633, closes #664, resolves #595.