|
| 1 | +# Breaking Change from upgrading OpenAPI Generator to v7.24.0 |
| 2 | + |
| 3 | +Both clients now use the modern Python generator instead of |
| 4 | +`python-legacy`. The asynchronous client uses the generator's `asyncio` |
| 5 | +library and `aiohttp` transport. Existing endpoint names, model names, |
| 6 | +and wire aliases are preserved, but applications may need the following |
| 7 | +updates: |
| 8 | + |
| 9 | +- Synchronous runtime dependencies now require `urllib3>=2.6.3,<3`, |
| 10 | + `pydantic>=2.11`, `lazy-imports>=1,<2`, |
| 11 | + `typing-extensions>=4.7.1`, and `python-dateutil>=2.8.2`. |
| 12 | +- Asynchronous runtime dependencies now require |
| 13 | + `aiohttp>=3.13.5,<4.0.0`, `aiohttp-retry>=2.8.3`, `pydantic>=2.11`, |
| 14 | + `lazy-imports>=1,<2`, `typing-extensions>=4.7.1`, and |
| 15 | + `python-dateutil>=2.8.2`. `certifi` and `six` are no longer direct |
| 16 | + asynchronous dependencies. Python 3.10 remains the minimum supported |
| 17 | + version for both clients. |
| 18 | +- Models and API-call arguments now use Pydantic validation. Invalid, |
| 19 | + unknown, or previously coerced values can raise |
| 20 | + `pydantic.ValidationError` before a request is sent; models are |
| 21 | + keyword-only, reject unknown fields during construction, and validate |
| 22 | + assignments. The model `local_vars_configuration` argument and |
| 23 | + Configuration's `discard_unknown_keys` and |
| 24 | + `disabled_client_side_validations` arguments are removed. |
| 25 | + `client_side_validation=False` no longer disables generated |
| 26 | + validation. |
| 27 | +- Low-level synchronous transport interfaces changed. Direct callers of |
| 28 | + `ApiClient.request`, `ApiClient.call_api`, `ApiClient.deserialize`, or |
| 29 | + the `RESTClientObject` HTTP-verb helpers must migrate to the modern |
| 30 | + request/response interface. `ApiException.body` is now decoded text |
| 31 | + instead of bytes. |
| 32 | +- Low-level asynchronous transport interfaces also changed. Direct |
| 33 | + callers of `ApiClient.call_api`, `ApiClient.param_serialize`, |
| 34 | + `ApiClient.response_deserialize`, or `RESTClientObject.request` must |
| 35 | + migrate to the modern `aiohttp` request/response interface. HTTP |
| 36 | + sessions are created lazily; close an owned client with |
| 37 | + `await client.close()` or an async context manager. Interactive |
| 38 | + websocket streams use the generated `_without_preload_content` |
| 39 | + operations. |
| 40 | +- `CoreV1Api.delete_namespace` now returns a decoded dictionary rather |
| 41 | + than `V1Status`, since a successful deletion can return either a |
| 42 | + terminating Namespace or a Status. |
| 43 | + |
| 44 | +See [kubernetes-client/python#2631][python-pr] and |
| 45 | +[kubernetes-client/gen#305][gen-pr]. |
| 46 | + |
| 47 | +[python-pr]: https://github.com/kubernetes-client/python/pull/2631 |
| 48 | +[gen-pr]: https://github.com/kubernetes-client/gen/pull/305 |
| 49 | + |
| 50 | +# v36.0.3 |
| 51 | + |
| 52 | +Kubernetes API Version: v1.36.2 |
| 53 | + |
| 54 | +### Bug or Regression |
| 55 | +- Fix Watch.stream selecting watch instead of follow when streaming pod logs. |
| 56 | +- Start the leader election worker thread as a daemon so it does not block process shutdown. |
| 57 | +- Fix readline_channel, readline_stdout and readline_stderr crashing with OverflowError when using the default timeout, and returning None when a timeout expires. |
| 58 | +- Fix format_quantity returning imprecise, non-canonical values for the milli, micro and nano suffixes, and ignoring quantize=Decimal(0). |
| 59 | + |
| 60 | +# v36.0.2 |
| 61 | + |
| 62 | +Kubernetes API Version: v1.36.1 |
| 63 | + |
| 64 | +### Uncategorized |
| 65 | +- Restored backward compatibility for `Configuration.auth_settings()`: |
| 66 | + the legacy `api_key['authorization']` lookup is honored as a fallback |
| 67 | + when `api_key['BearerToken']` is not set, fixing 401 Unauthorized |
| 68 | + regressions seen after upgrading to v36.0.0 (#2595). (#2604, @GK-07) |
| 69 | + |
| 70 | +# v36.0.1 |
| 71 | + |
| 72 | +Kubernetes API Version: v1.36.1 |
| 73 | + |
| 74 | +### Bug or Regression |
| 75 | +- Fix `load_incluster_config()` and `load_kube_config()` (sync and async, with a static token) so requests carry an `Authorization` header on `kubernetes-client/python` v36+. Without this fix, in-cluster pods upgrading to v36 silently send unauthenticated requests and the apiserver rejects them as `system:anonymous`. (#2585, @Jmacek) |
| 76 | + |
| 77 | +### Deprecation |
| 78 | +- Support new exec v5 websocket subprotocol (#2486, @aojea) |
| 79 | + |
1 | 80 | # v36.0.0 |
2 | 81 |
|
3 | 82 | Kubernetes API Version: v1.36.1 |
@@ -250,6 +329,9 @@ Kubernetes API Version: v1.36.0 |
250 | 329 |
|
251 | 330 | - Configuration auth uses 'BearerToken' instead of 'authorization' in api_key. |
252 | 331 |
|
| 332 | +- V1ServiceSpec's external_i_ps has been renamed to external_ips, and |
| 333 | + cluster_i_ps to cluster_ips. |
| 334 | + |
253 | 335 | # v35.0.0 |
254 | 336 |
|
255 | 337 | Kubernetes API Version: v1.35.0 |
|
0 commit comments