Openapi-python-client

Latest version: v0.21.6

Safety actively analyzes 675368 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 10 of 13

0.7.2

Fixes

- A bug in handling optional properties that are themselves models (introduced in 0.7.1) (262). Thanks packyg!

0.7.1

Additions

- Support for additionalProperties attribute in OpenAPI schemas and "free-form" objects by adding an `additional_properties` attribute to generated models. **COMPATIBILITY NOTE**: this will prevent any model property with a name that would be coerced to "additional_properties" in the generated client from generating properly (218 & 252). Thanks packyg!

Fixes

- Enums will once again work with query parameters (259). Thanks packyg!
- Generated Poetry metadata in pyproject.toml will properly indicate Python 3.6 compatibility (258). Thanks bowenwr!

0.7.0

Breaking Changes

- Any request/response field that is not `required` and wasn't specified is now set to `UNSET` instead of `None`.

- Values that are `UNSET` will not be sent along in API calls

- Schemas defined with `type=object` will now be converted into classes, just like if they were created as ref components. The previous behavior was a combination of skipping and using generic Dicts for these schemas.

- Response schema handling was unified with input schema handling, meaning that responses will behave differently than before. Specifically, instead of the content-type deciding what the generated Python type is, the schema itself will.

- As a result of this, endpoints that used to return `bytes` when content-type was application/octet-stream will now return a `File` object if the type of the data is "binary", just like if you were submitting that type instead of receiving it.

- Instead of skipping input properties with no type, enum, anyOf, or oneOf declared, the property will be declared as `None`.

- Class (models and Enums) names will now contain the name of their parent element (if any). For example, a property declared in an endpoint will be named like {endpoint*name}*{previous*class*name}. Classes will no longer be deduplicated by appending a number to the end of the generated name, so if two names conflict with this new naming scheme, there will be an error instead.

Additions

- Added a `--custom-template-path` option for providing custom jinja2 templates (231 - Thanks erichulburd!).
- Better compatibility for "required" (whether or not the field must be included) and "nullable" (whether or not the field can be null) (205 & 208). Thanks bowenwr & emannguitar!
- Support for all the same schemas in responses as are supported in parameters.
- In template macros: added `declare_type` param to `transform` and `initial_value` param to `construct` to improve flexibility (241 - Thanks packyg!).

Fixes

- Fixed spacing and generation of properties of type `Union` in generated models (241 - Thanks packyg!).
- Fixed usage instructions in generated README.md (247 - Thanks theFong!).

0.6.2

Fixes

- Prefix generated identifiers to allow leading digits in field names (206 - kalzoo).
- Prevent autoflake from removing `__init__.py` imports during generation. (223 - Thanks fyhertz!)
- Update minimum Pydantic version to support Python 3.9

Additions

- Allow specifying the generated client's version using `package_version_override` in a config file. (225 - Thanks fyhertz!)

0.6.1

Changes

- Use httpx ^0.15.0 in generated clients

Fixes

- Properly remove spaces from generated Enum keys (198). Thanks bowenwr!

Additions

- Endpoints without operationIds will have a name generated from their method and path (92). Thanks Kerybas & dtkav!
- autoflake will be run on generated clients to clean up unused imports / variables (138). Thanks pawamoy!
- Note to README about supported OpenAPI versions (176). Thanks filippog!

0.6.0

Breaking Changes

- Reorganized api calls in generated clients. `async_api` will no longer be generated. Each path operation will now have it's own module under its tag. For example, if there was a generated function `api.my_tag.my_function()` it is replaced with `api.my_tag.my_function.sync()`. The async version can be called with `asyncio()` instead of `sync()`. (167)
- Removed support for mutable default values (e.g. dicts, lists). They may be added back in a future version given enough demand, but the existing implementation was not up to this project's standards. (170)
- Removed generated `errors` module (and the `ApiResponseError` therein). Instead of raising an exception on failure, the `sync()` and `asyncio()` functions for a path operation will return `None`. This means all return types are now `Optional`, so mypy will require you to handle potential errors (or explicitly ignore them).
- Moved `models.types` generated module up a level, so just `types`.
- All generated classes that were `dataclass` now use the `attrs` package instead

Additions

- Every generated API module will have a `sync_detailed()` and `asyncio_detailed()` function which work like their non-detailed counterparts, but return a `types.Response[T]` instead of an `Optional[T]` (where T is the parsed body type). `types.Response` contains `status_code`, `content` (bytes of returned content), `headers`, and `parsed` (the parsed return type you would get from the non-detailed function). (115)
- It's now possible to include custom headers and cookies in requests, as well as set a custom timeout. This can be done either by directly setting those parameters on a `Client` (e.g. `my_client.headers = {"Header": "Value"}`) or using a fluid api (e.g. `my_endpoint.sync(my_client.with_cookies({"MyCookie": "cookie"}).with_timeout(10.0))`).
- Unsupported content types or no responses at all will no longer result in an endpoint being completely skipped. Instead, only the `detailed` versions of the endpoint will be generated, where the resulting `Response.parsed` is always `None`. (141)
- Support for Python 3.6 (137 & 154)
- Support for enums with integer values

Changes

- The format of any errors/warnings has been spaced out a bit.

Page 10 of 13

© 2024 Safety CLI Cybersecurity Inc. All Rights Reserved.