Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
113 changes: 60 additions & 53 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,67 @@
# v37.0.1

Kubernetes API Version: v1.37.1

- Fixed type checkers such as pyright reporting documented functions and classes in `kubernetes.config`, `kubernetes.stream`, `kubernetes.utils`, `kubernetes.watch` and their `kubernetes.aio` counterparts, for example `config.load_kube_config` and `utils.create_from_yaml`, as not exported since v37.0.0. Wildcard imports such as `from kubernetes.config import *` no longer import unrelated names like `exists` and `expanduser`.

- Fixed importing API submodules such as `core_v1_api` from the deprecated `kubernetes.client.apis` package, which raised `ImportError` since v37.0.0.

# v37.0.0

Kubernetes API Version: v1.37.1

# Breaking Change from upgrading OpenAPI Generator to v7.24.0

Both clients now use the modern Python generator instead of
`python-legacy`. The asynchronous client uses the generator's `asyncio`
library and `aiohttp` transport. Existing endpoint names, model names,
and wire aliases are preserved, but applications may need the following
updates:

- Synchronous runtime dependencies now require `urllib3>=2.6.3,<3`,
`pydantic>=2.11`, `lazy-imports>=1,<2`,
`typing-extensions>=4.7.1`, and `python-dateutil>=2.8.2`.
- Asynchronous runtime dependencies now require
`aiohttp>=3.13.5,<4.0.0`, `aiohttp-retry>=2.8.3`, `pydantic>=2.11`,
`lazy-imports>=1,<2`, `typing-extensions>=4.7.1`, and
`python-dateutil>=2.8.2`. `certifi` and `six` are no longer direct
asynchronous dependencies. Python 3.10 remains the minimum supported
version for both clients.
- Models and API-call arguments now use Pydantic validation. Invalid,
unknown, or previously coerced values can raise
`pydantic.ValidationError` before a request is sent; models are
keyword-only, reject unknown fields during construction, and validate
assignments. The model `local_vars_configuration` argument and
Configuration's `discard_unknown_keys` and
`disabled_client_side_validations` arguments are removed.
`client_side_validation=False` no longer disables generated
validation.
- Low-level synchronous transport interfaces changed. Direct callers of
`ApiClient.request`, `ApiClient.call_api`, `ApiClient.deserialize`, or
the `RESTClientObject` HTTP-verb helpers must migrate to the modern
request/response interface. `ApiException.body` is now decoded text
instead of bytes.
- Low-level asynchronous transport interfaces also changed. Direct
callers of `ApiClient.call_api`, `ApiClient.param_serialize`,
`ApiClient.response_deserialize`, or `RESTClientObject.request` must
migrate to the modern `aiohttp` request/response interface. HTTP
sessions are created lazily; close an owned client with
`await client.close()` or an async context manager. Interactive
websocket streams use the generated `_without_preload_content`
operations.
- Individual resource-deletion methods that previously returned
`V1Status`, including `CoreV1Api.delete_namespace` and
`BatchV1Api.delete_namespaced_job`, now return decoded dictionaries in
both clients. A successful deletion can return either the deleted
resource or a Status; access response fields with dictionary keys
instead of model attributes.

See [kubernetes-client/python#2631][python-pr] and
[kubernetes-client/gen#305][gen-pr].

[python-pr]: https://github.com/kubernetes-client/python/pull/2631
[gen-pr]: https://github.com/kubernetes-client/gen/pull/305


# v37.0.0b1

Expand Down Expand Up @@ -185,59 +245,6 @@ Kubernetes API Version: v1.37.0
- Removed the unused `PodStatusResult` type from the Kubernetes API. This type had no REST endpoint and has been unused since 2015. ([kubernetes/kubernetes#136271](https://github.com/kubernetes/kubernetes/pull/136271), [@adityasharmawork](https://github.com/adityasharmawork)) [SIG API Machinery, Apps, Node and Testing]
- The change is for developers building against cri-api. Enum keys of Signal are now prefixed with `SIGNAL_` in api.proto definition to avoid conflicts with C++ macroses. The wire format is unchanged. ([kubernetes/kubernetes#139251](https://github.com/kubernetes/kubernetes/pull/139251), [@SergeyKanzhelev](https://github.com/SergeyKanzhelev)) [SIG Apps, Node and Testing]


# Breaking Change from upgrading OpenAPI Generator to v7.24.0

Both clients now use the modern Python generator instead of
`python-legacy`. The asynchronous client uses the generator's `asyncio`
library and `aiohttp` transport. Existing endpoint names, model names,
and wire aliases are preserved, but applications may need the following
updates:

- Synchronous runtime dependencies now require `urllib3>=2.6.3,<3`,
`pydantic>=2.11`, `lazy-imports>=1,<2`,
`typing-extensions>=4.7.1`, and `python-dateutil>=2.8.2`.
- Asynchronous runtime dependencies now require
`aiohttp>=3.13.5,<4.0.0`, `aiohttp-retry>=2.8.3`, `pydantic>=2.11`,
`lazy-imports>=1,<2`, `typing-extensions>=4.7.1`, and
`python-dateutil>=2.8.2`. `certifi` and `six` are no longer direct
asynchronous dependencies. Python 3.10 remains the minimum supported
version for both clients.
- Models and API-call arguments now use Pydantic validation. Invalid,
unknown, or previously coerced values can raise
`pydantic.ValidationError` before a request is sent; models are
keyword-only, reject unknown fields during construction, and validate
assignments. The model `local_vars_configuration` argument and
Configuration's `discard_unknown_keys` and
`disabled_client_side_validations` arguments are removed.
`client_side_validation=False` no longer disables generated
validation.
- Low-level synchronous transport interfaces changed. Direct callers of
`ApiClient.request`, `ApiClient.call_api`, `ApiClient.deserialize`, or
the `RESTClientObject` HTTP-verb helpers must migrate to the modern
request/response interface. `ApiException.body` is now decoded text
instead of bytes.
- Low-level asynchronous transport interfaces also changed. Direct
callers of `ApiClient.call_api`, `ApiClient.param_serialize`,
`ApiClient.response_deserialize`, or `RESTClientObject.request` must
migrate to the modern `aiohttp` request/response interface. HTTP
sessions are created lazily; close an owned client with
`await client.close()` or an async context manager. Interactive
websocket streams use the generated `_without_preload_content`
operations.
- Individual resource-deletion methods that previously returned
`V1Status`, including `CoreV1Api.delete_namespace` and
`BatchV1Api.delete_namespaced_job`, now return decoded dictionaries in
both clients. A successful deletion can return either the deleted
resource or a Status; access response fields with dictionary keys
instead of model attributes.

See [kubernetes-client/python#2631][python-pr] and
[kubernetes-client/gen#305][gen-pr].

[python-pr]: https://github.com/kubernetes-client/python/pull/2631
[gen-pr]: https://github.com/kubernetes-client/gen/pull/305

# v36.0.3

Kubernetes API Version: v1.36.2
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -135,7 +135,7 @@ supported versions of Kubernetes clusters.
- [client 34.y.z](https://pypi.org/project/kubernetes/34.1.0/): Kubernetes 1.33 or below (+-), Kubernetes 1.34 (✓), Kubernetes 1.35 or above (+-)
- [client 35.y.z](https://pypi.org/project/kubernetes/35.0.0/): Kubernetes 1.34 or below (+-), Kubernetes 1.35 (✓), Kubernetes 1.36 or above (+-)
- [client 36.y.z](https://pypi.org/project/kubernetes/36.0.3/): Kubernetes 1.35 or below (+-), Kubernetes 1.36 (✓), Kubernetes 1.37 or above (+-)
- [client 37.y.z](https://pypi.org/project/kubernetes/37.0.0/): Kubernetes 1.36 or below (+-), Kubernetes 1.37 (✓), Kubernetes 1.38 or above (+-)
- [client 37.y.z](https://pypi.org/project/kubernetes/37.0.1/): Kubernetes 1.36 or below (+-), Kubernetes 1.37 (✓), Kubernetes 1.38 or above (+-)


> See [here](#homogenizing-the-kubernetes-python-client-versions) for an explanation of why there is no v13-v16 release.
Expand Down
Loading