* feat(python): enhance retry configuration in REST client
Updated the retry parameter in the Configuration class to support different types based on the library used (urllib3 or asyncio). Adjusted the RESTClientObject to handle the new retry configuration, allowing for more flexible retry options. This change improves the handling of retries in API requests, ensuring compatibility with various retry strategies.
* add samples
* use async context for retry doc string
openapi-generator still uses methods that have been removed from urllib3
v2.6.0. The solution is as described in urllib3's changelog:
> Removed the HTTPResponse.getheaders() method in favor of
> HTTPResponse.headers. Removed the HTTPResponse.getheader(name,
> default) method in favor of HTTPResponse.headers.get(name, default).
> (#3622)
See https://urllib3.readthedocs.io/en/latest/changelog.htmlClose#22514
* fix: do not add dependency on urllib3 if not required
* update samples
* remove import
---------
Co-authored-by: Sascha Kreutz <saschakreutz@hotmail.de>
* Expose mtls config params in python template
* Expose certFile and keyFile configuration items to support mtls in php generated client
* Regenerate of examples
* Support normalizing anyof/oneof enum constraints to a single enum
* Add SIMPLIFY_ONEOF_ANYOF_ENUM to the documentation
* Process referenced schemas with oneof/enum as well
* Implement referenced enum merging from oneof/anyof
* Implement retaining the enum description as x-enum-desriptions for oneof enum
* Update samples and docs with oneOf enum normalization
* update samples to fix python tests
* fix test file name
* fix incorrect filename
---------
Co-authored-by: Pieter Bos <pieter.bos@nedap.com>
* Convert pyproject.toml template to the format expected by Poetry >=2.0
(https://python-poetry.org/blog/announcing-poetry-2.0.0)
* Update samples
* Add option to fallback to Poetry 1.x style pyproject.toml
* Generate new docs and samples
* Place project.urls section a bit further down, so that it doesn't clash with other sections
* Update samples
* correct sanitize_for_serialization in python generator, fixes#18106
The method did not consider the objects created for oneOf schemata. If one of the cases was a list, to_dict would return it instead of something that has an items() method.
* generate new samples
* fix: #20878 Provide " as member" where needed
- Generate new samples
- Add tests for all effected python versions
- Ran tests with success
Commands used to verify:
./bin/generate-samples.sh ./bin/configs/python*
mvn verify -Psamples
mvn integration-test -f modules/openapi-generator/pom.xml -Dtest=org.openapitools.codegen.python.PythonPydanticV1ClientCodegenTest -e
mvn integration-test -f modules/openapi-generator/pom.xml -Dtest=org.openapitools.codegen.python.PythonClientCodegenTest -e
* remove 3.8 tests
* use localhost
* update tests
* update test
---------
Co-authored-by: Robert Plummer <rplummer@sequel.ae>
* fix/ x-enum-varnames in python
* make x-enum-varnames examples more clear
* make x enum varname usage more explicit
* fix tests
* trigger tests
* trigger tests once again...
* fix more tests
* Drop support for python 3.8 and add support for 3.13 in python generator templates
* Update docs
* Test samples without python 3.8 and with 3.13
* Generate samples
* Add `ca_cert_data` parameter to Python client.
This lets a client validate a server's CA certificate chain using a
variable/constant containing PEM (`str`) or DER (`bytes`) data, rather than
needing to reference a file on disk.
* python: Fix `ca_cert_data` on Python 3.8
aiohttp's `ClientSession` & `TCPConnector` used to obtain an event loop in
__init__ (via `asyncio.get_event_loop`). However, as of https://github.com/aio-libs/aiohttp/pull/8512 both
classes now obtain the running event loop and won't potentially create one. This
makes it impossible to create `ClientSession` and `TCPConnector` objects outside
of coroutines, as `get_running_loop` must be called from a coroutine.
Thus we defer the creation of a `ClientSession` into the actual request and
cache it for later usage. Thereby we pay only a very small price on the first
request, but subsequent requests will not be any more expensive.