From c572eb83d112e8ec11772a5bf4b1dd45810bcf17 Mon Sep 17 00:00:00 2001 From: hkr <104939283+harishkesavarao@users.noreply.github.com> Date: Wed, 22 Jul 2026 00:48:04 +0530 Subject: [PATCH] [airflow-ctl/v0-1-test] Bump datamodel-code-generator pin from 0.33.0 to 0.41.0 (#69854) The pin was stuck at 0.33.0 because later releases change how use-default interacts with nullable/optional fields. Versions 0.42.2 through at least 0.67.0 widen JsonValue-backed fields to JsonValue | None, and 0.57.0+ additionally drops the = None default from nullable-optional fields, turning ~200 fields in the Task SDK Execution API client and the airflow-ctl API client from optional into required -- a breaking Pydantic v2 model-contract change. 0.41.0 is the newest release that still regenerates both clients with a diff limited to the generator version-comment line (plus one benign RootModel[list] -> RootModel[list[Any]] typing improvement in airflow-ctl's generated.py), so it unblocks the dependency without carrying either regression forward. Closes the datamodel-code-generator item from #69616. (cherry picked from commit 15a4478a99dba2c07d83c9ca3285c0b0b9bf855c) Co-authored-by: hkr <104939283+harishkesavarao@users.noreply.github.com> --- airflow-ctl/pyproject.toml | 2 +- .../src/airflowctl/api/datamodels/auth_generated.py | 2 +- airflow-ctl/src/airflowctl/api/datamodels/generated.py | 10 +++++----- task-sdk/pyproject.toml | 2 +- task-sdk/src/airflow/sdk/api/datamodels/_generated.py | 2 +- uv.lock | 10 +++++----- 6 files changed, 14 insertions(+), 14 deletions(-) diff --git a/airflow-ctl/pyproject.toml b/airflow-ctl/pyproject.toml index acca75209720c..344eb42c9c969 100644 --- a/airflow-ctl/pyproject.toml +++ b/airflow-ctl/pyproject.toml @@ -149,7 +149,7 @@ dev = [ "apache-airflow-devel-common", ] codegen = [ - "datamodel-code-generator[http]==0.33.0", + "datamodel-code-generator[http]==0.41.0", "apache-airflow-devel-common" ] diff --git a/airflow-ctl/src/airflowctl/api/datamodels/auth_generated.py b/airflow-ctl/src/airflowctl/api/datamodels/auth_generated.py index ec8d9c16b22a1..e8f12b9baefb7 100644 --- a/airflow-ctl/src/airflowctl/api/datamodels/auth_generated.py +++ b/airflow-ctl/src/airflowctl/api/datamodels/auth_generated.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: v2-simple-auth-manager-generated.yaml -# version: 0.33.0 +# version: 0.41.0 from __future__ import annotations diff --git a/airflow-ctl/src/airflowctl/api/datamodels/generated.py b/airflow-ctl/src/airflowctl/api/datamodels/generated.py index f05fa65cf56f8..2d89d0c513ba4 100644 --- a/airflow-ctl/src/airflowctl/api/datamodels/generated.py +++ b/airflow-ctl/src/airflowctl/api/datamodels/generated.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: v2-rest-api-generated.yaml -# version: 0.33.0 +# version: 0.41.0 from __future__ import annotations @@ -202,8 +202,8 @@ class BulkUpdateActionBulkDAGRunBody(BaseModel): action_on_non_existence: BulkActionNotOnExistence | None = "fail" -class TaskIds(RootModel[list]): - root: Annotated[list, Field(max_length=2, min_length=2)] +class TaskIds(RootModel[list[Any]]): + root: Annotated[list[Any], Field(max_length=2, min_length=2)] class ClearTaskInstancesBody(BaseModel): @@ -243,8 +243,8 @@ class ClearTaskInstancesBody(BaseModel): note: Annotated[Note | None, Field(title="Note")] = None -class Value(RootModel[list]): - root: Annotated[list, Field(max_length=2, min_length=2, title="Value")] +class Value(RootModel[list[Any]]): + root: Annotated[list[Any], Field(max_length=2, min_length=2, title="Value")] class ConfigOption(BaseModel): diff --git a/task-sdk/pyproject.toml b/task-sdk/pyproject.toml index 90dba8508d969..728e1b0c5c533 100644 --- a/task-sdk/pyproject.toml +++ b/task-sdk/pyproject.toml @@ -210,7 +210,7 @@ exclude_also = [ [dependency-groups] codegen = [ - "datamodel-code-generator[http]==0.33.0", + "datamodel-code-generator[http]==0.41.0", "openapi-spec-validator>=0.7.1", "svcs>=25.1.0", "rich>=13.6.0", diff --git a/task-sdk/src/airflow/sdk/api/datamodels/_generated.py b/task-sdk/src/airflow/sdk/api/datamodels/_generated.py index e08f00562d322..8c1a45fb1473d 100644 --- a/task-sdk/src/airflow/sdk/api/datamodels/_generated.py +++ b/task-sdk/src/airflow/sdk/api/datamodels/_generated.py @@ -1,6 +1,6 @@ # generated by datamodel-codegen: # filename: http://0.0.0.0:8080/execution/openapi.json -# version: 0.33.0 +# version: 0.41.0 # Licensed to the Apache Software Foundation (ASF) under one # or more contributor license agreements. See the NOTICE file diff --git a/uv.lock b/uv.lock index a7a98c70d06e1..8e1ebdf83656d 100644 --- a/uv.lock +++ b/uv.lock @@ -2010,7 +2010,7 @@ provides-extras = ["dev"] [package.metadata.requires-dev] codegen = [ { name = "apache-airflow-devel-common", editable = "devel-common" }, - { name = "datamodel-code-generator", extras = ["http"], specifier = "==0.33.0" }, + { name = "datamodel-code-generator", extras = ["http"], specifier = "==0.41.0" }, ] dev = [ { name = "apache-airflow-ctl", extras = ["dev"], editable = "airflow-ctl" }, @@ -8210,7 +8210,7 @@ provides-extras = ["all", "datadog", "otel", "sentry", "statsd"] [package.metadata.requires-dev] codegen = [ - { name = "datamodel-code-generator", extras = ["http"], specifier = "==0.33.0" }, + { name = "datamodel-code-generator", extras = ["http"], specifier = "==0.41.0" }, { name = "openapi-spec-validator", specifier = ">=0.7.1" }, { name = "rich", specifier = ">=13.6.0" }, { name = "svcs", specifier = ">=25.1.0" }, @@ -10300,7 +10300,7 @@ wheels = [ [[package]] name = "datamodel-code-generator" -version = "0.33.0" +version = "0.41.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "argcomplete" }, @@ -10314,9 +10314,9 @@ dependencies = [ { name = "pyyaml" }, { name = "tomli", marker = "python_full_version < '3.12'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/7d/a0/3f81c5c0c31d6f25f459e370e04553810f096e5dbd3cf7eda2a67709cd78/datamodel_code_generator-0.33.0.tar.gz", hash = "sha256:7635ef788201d69bd3e98ba88ce6afe479400dc2737fe9d5e21f87408f352c08", size = 458695, upload-time = "2025-08-14T13:50:36.965Z" } +sdist = { url = "https://files.pythonhosted.org/packages/21/a0/f3a08b0e2068eae40a170c8485d0a68bfe54210df4b8a67ee4fe27bae681/datamodel_code_generator-0.41.0.tar.gz", hash = "sha256:f5ded2baab48488c09ce91c564e486dee9145029c53016f1befb732313d66411", size = 473910, upload-time = "2025-12-05T16:50:19.049Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/3b/d0/acd7a19dad4dc4118d2b6ba06df9a4a3725729e91fa3f2c63a765d4e7d44/datamodel_code_generator-0.33.0-py3-none-any.whl", hash = "sha256:e229264aa612b2d5bb4901bcd6c520a799ae0d5c19262577a0f876eb48afaaa3", size = 121148, upload-time = "2025-08-14T13:50:35.306Z" }, + { url = "https://files.pythonhosted.org/packages/e3/11/9cec012b7764443a7b03bf3725ea56481a3f6d45c363a15406d57d048cf9/datamodel_code_generator-0.41.0-py3-none-any.whl", hash = "sha256:02caf2372d298844d6080fe805770161cac9aa720f143f349cee6ca76b50e5bf", size = 158701, upload-time = "2025-12-05T16:50:17.796Z" }, ] [package.optional-dependencies]