diff --git a/airflow-core/pyproject.toml b/airflow-core/pyproject.toml index cd6d2ae9d387a..caf8a766a7b55 100644 --- a/airflow-core/pyproject.toml +++ b/airflow-core/pyproject.toml @@ -25,7 +25,7 @@ requires = [ "pluggy==1.6.0", "smmap==5.0.3", "tomli==2.4.1; python_version < '3.11'", - "trove-classifiers==2026.4.28.13", + "trove-classifiers==2026.5.7.17", ] build-backend = "hatchling.build" @@ -74,7 +74,7 @@ dependencies = [ # is not compatible with it and leaves thread hanging This is already fixed in main of sqlalchemy # But not released yet - and we will likely have to add >=2.0.46+ for sqlalchemy when released to # protect against it https://github.com/sqlalchemy/sqlalchemy/issues/13039 - "aiosqlite>=0.20.0,<0.22.0", + "aiosqlite>=0.20.0,<0.23.0", # Alembic is important to handle our migrations in predictable and performant way. It is developed # together with SQLAlchemy. Our experience with Alembic is that it very stable in minor version # The 1.13.0 of alembic marked some migration code as SQLAlchemy 2+ only so we limit it to 1.13.1 diff --git a/airflow-ctl/pyproject.toml b/airflow-ctl/pyproject.toml index 6e5c391e9c03b..e8d1c2a62dc2b 100644 --- a/airflow-ctl/pyproject.toml +++ b/airflow-ctl/pyproject.toml @@ -79,7 +79,7 @@ requires = [ "pathspec==1.1.1", "pluggy==1.6.0", "tomli==2.4.1; python_version < '3.11'", - "trove-classifiers==2026.4.28.13", + "trove-classifiers==2026.5.7.17", ] build-backend = "hatchling.build" @@ -148,7 +148,7 @@ dev = [ "apache-airflow-devel-common", ] codegen = [ - "datamodel-code-generator[http]==0.33.0", + "datamodel-code-generator[http]==0.57.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..7107242b9b673 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.57.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 b492406604c31..53ab0044e6230 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.57.0 from __future__ import annotations @@ -64,7 +64,7 @@ class BaseInfoResponse(BaseModel): Base info serializer for responses. """ - status: Annotated[str | None, Field(title="Status")] = None + status: Annotated[str | None, Field(title="Status")] class BulkActionNotOnExistence(str, Enum): @@ -135,8 +135,8 @@ class Note(RootModel[str]): root: Annotated[str, Field(max_length=1000, title="Note")] -class TaskIds(RootModel[list]): - root: Annotated[list, Field(max_length=2, min_length=2)] +class TaskIds(RootModel[tuple[str, int]]): + root: Annotated[tuple[str, int], Field(max_length=2, min_length=2)] class ClearTaskInstancesBody(BaseModel): @@ -175,8 +175,8 @@ class ClearTaskInstancesBody(BaseModel): prevent_running_task: Annotated[bool | None, Field(title="Prevent Running Task")] = False -class Value(RootModel[list]): - root: Annotated[list, Field(max_length=2, min_length=2, title="Value")] +class Value(RootModel[tuple[str, str]]): + root: Annotated[tuple[str, str], Field(max_length=2, min_length=2, title="Value")] class ConfigOption(BaseModel): @@ -234,14 +234,14 @@ class ConnectionResponse(BaseModel): connection_id: Annotated[str, Field(title="Connection Id")] conn_type: Annotated[str, Field(title="Conn Type")] - description: Annotated[str | None, Field(title="Description")] = None - host: Annotated[str | None, Field(title="Host")] = None - login: Annotated[str | None, Field(title="Login")] = None - schema_: Annotated[str | None, Field(alias="schema", title="Schema")] = None - port: Annotated[int | None, Field(title="Port")] = None - password: Annotated[str | None, Field(title="Password")] = None - extra: Annotated[str | None, Field(title="Extra")] = None - team_name: Annotated[str | None, Field(title="Team Name")] = None + description: Annotated[str | None, Field(title="Description")] + host: Annotated[str | None, Field(title="Host")] + login: Annotated[str | None, Field(title="Login")] + schema_: Annotated[str | None, Field(alias="schema", title="Schema")] + port: Annotated[int | None, Field(title="Port")] + password: Annotated[str | None, Field(title="Password")] + extra: Annotated[str | None, Field(title="Extra")] + team_name: Annotated[str | None, Field(title="Team Name")] class ConnectionTestResponse(BaseModel): @@ -311,9 +311,9 @@ class DAGSourceResponse(BaseModel): Dag Source serializer for responses. """ - content: Annotated[str | None, Field(title="Content")] = None + content: Annotated[str | None, Field(title="Content")] dag_id: Annotated[str, Field(title="Dag Id")] - version_number: Annotated[int | None, Field(title="Version Number")] = None + version_number: Annotated[int | None, Field(title="Version Number")] dag_display_name: Annotated[str, Field(title="Dag Display Name")] @@ -331,10 +331,8 @@ class DagProcessorInfoResponse(BaseModel): DagProcessor info serializer for responses. """ - status: Annotated[str | None, Field(title="Status")] = None - latest_dag_processor_heartbeat: Annotated[str | None, Field(title="Latest Dag Processor Heartbeat")] = ( - None - ) + status: Annotated[str | None, Field(title="Status")] + latest_dag_processor_heartbeat: Annotated[str | None, Field(title="Latest Dag Processor Heartbeat")] class DagRunAssetReference(BaseModel): @@ -347,13 +345,13 @@ class DagRunAssetReference(BaseModel): ) run_id: Annotated[str, Field(title="Run Id")] dag_id: Annotated[str, Field(title="Dag Id")] - logical_date: Annotated[datetime | None, Field(title="Logical Date")] = None + logical_date: Annotated[datetime | None, Field(title="Logical Date")] start_date: Annotated[datetime, Field(title="Start Date")] - end_date: Annotated[datetime | None, Field(title="End Date")] = None + end_date: Annotated[datetime | None, Field(title="End Date")] state: Annotated[str, Field(title="State")] - data_interval_start: Annotated[datetime | None, Field(title="Data Interval Start")] = None - data_interval_end: Annotated[datetime | None, Field(title="Data Interval End")] = None - partition_key: Annotated[str | None, Field(title="Partition Key")] = None + data_interval_start: Annotated[datetime | None, Field(title="Data Interval Start")] + data_interval_end: Annotated[datetime | None, Field(title="Data Interval End")] + partition_key: Annotated[str | None, Field(title="Partition Key")] class DagRunState(str, Enum): @@ -438,11 +436,11 @@ class DagVersionResponse(BaseModel): id: Annotated[UUID, Field(title="Id")] version_number: Annotated[int, Field(title="Version Number")] dag_id: Annotated[str, Field(title="Dag Id")] - bundle_name: Annotated[str | None, Field(title="Bundle Name")] = None - bundle_version: Annotated[str | None, Field(title="Bundle Version")] = None + bundle_name: Annotated[str | None, Field(title="Bundle Name")] + bundle_version: Annotated[str | None, Field(title="Bundle Version")] created_at: Annotated[datetime, Field(title="Created At")] dag_display_name: Annotated[str, Field(title="Dag Display Name")] - bundle_url: Annotated[str | None, Field(title="Bundle Url")] = None + bundle_url: Annotated[str | None, Field(title="Bundle Url")] class DagWarningType(str, Enum): @@ -463,9 +461,9 @@ class DryRunBackfillResponse(BaseModel): Backfill serializer for responses in dry-run mode. """ - logical_date: Annotated[datetime | None, Field(title="Logical Date")] = None - partition_key: Annotated[str | None, Field(title="Partition Key")] = None - partition_date: Annotated[datetime | None, Field(title="Partition Date")] = None + logical_date: Annotated[datetime | None, Field(title="Logical Date")] + partition_key: Annotated[str | None, Field(title="Partition Key")] + partition_date: Annotated[datetime | None, Field(title="Partition Date")] class EventLogResponse(BaseModel): @@ -475,15 +473,15 @@ class EventLogResponse(BaseModel): event_log_id: Annotated[int, Field(title="Event Log Id")] when: Annotated[datetime, Field(title="When")] - dag_id: Annotated[str | None, Field(title="Dag Id")] = None - task_id: Annotated[str | None, Field(title="Task Id")] = None - run_id: Annotated[str | None, Field(title="Run Id")] = None - map_index: Annotated[int | None, Field(title="Map Index")] = None - try_number: Annotated[int | None, Field(title="Try Number")] = None + dag_id: Annotated[str | None, Field(title="Dag Id")] + task_id: Annotated[str | None, Field(title="Task Id")] + run_id: Annotated[str | None, Field(title="Run Id")] + map_index: Annotated[int | None, Field(title="Map Index")] + try_number: Annotated[int | None, Field(title="Try Number")] event: Annotated[str, Field(title="Event")] - logical_date: Annotated[datetime | None, Field(title="Logical Date")] = None - owner: Annotated[str | None, Field(title="Owner")] = None - extra: Annotated[str | None, Field(title="Extra")] = None + logical_date: Annotated[datetime | None, Field(title="Logical Date")] + owner: Annotated[str | None, Field(title="Owner")] + extra: Annotated[str | None, Field(title="Extra")] dag_display_name: Annotated[str | None, Field(title="Dag Display Name")] = None task_display_name: Annotated[str | None, Field(title="Task Display Name")] = None @@ -581,7 +579,7 @@ class ImportErrorResponse(BaseModel): import_error_id: Annotated[int, Field(title="Import Error Id")] timestamp: Annotated[datetime, Field(title="Timestamp")] filename: Annotated[str, Field(title="Filename")] - bundle_name: Annotated[str | None, Field(title="Bundle Name")] = None + bundle_name: Annotated[str | None, Field(title="Bundle Name")] stack_trace: Annotated[str, Field(title="Stack Trace")] @@ -591,15 +589,15 @@ class JobResponse(BaseModel): """ id: Annotated[int, Field(title="Id")] - dag_id: Annotated[str | None, Field(title="Dag Id")] = None - state: Annotated[str | None, Field(title="State")] = None - job_type: Annotated[str | None, Field(title="Job Type")] = None - start_date: Annotated[datetime | None, Field(title="Start Date")] = None - end_date: Annotated[datetime | None, Field(title="End Date")] = None - latest_heartbeat: Annotated[datetime | None, Field(title="Latest Heartbeat")] = None - executor_class: Annotated[str | None, Field(title="Executor Class")] = None - hostname: Annotated[str | None, Field(title="Hostname")] = None - unixname: Annotated[str | None, Field(title="Unixname")] = None + dag_id: Annotated[str | None, Field(title="Dag Id")] + state: Annotated[str | None, Field(title="State")] + job_type: Annotated[str | None, Field(title="Job Type")] + start_date: Annotated[datetime | None, Field(title="Start Date")] + end_date: Annotated[datetime | None, Field(title="End Date")] + latest_heartbeat: Annotated[datetime | None, Field(title="Latest Heartbeat")] + executor_class: Annotated[str | None, Field(title="Executor Class")] + hostname: Annotated[str | None, Field(title="Hostname")] + unixname: Annotated[str | None, Field(title="Unixname")] dag_display_name: Annotated[str | None, Field(title="Dag Display Name")] = None @@ -696,7 +694,7 @@ class PoolResponse(BaseModel): scheduled_slots: Annotated[int, Field(title="Scheduled Slots")] open_slots: Annotated[int, Field(title="Open Slots")] deferred_slots: Annotated[int, Field(title="Deferred Slots")] - team_name: Annotated[str | None, Field(title="Team Name")] = None + team_name: Annotated[str | None, Field(title="Team Name")] class ProviderResponse(BaseModel): @@ -707,7 +705,7 @@ class ProviderResponse(BaseModel): package_name: Annotated[str, Field(title="Package Name")] description: Annotated[str, Field(title="Description")] version: Annotated[str, Field(title="Version")] - documentation_url: Annotated[str | None, Field(title="Documentation Url")] = None + documentation_url: Annotated[str | None, Field(title="Documentation Url")] class QueuedEventResponse(BaseModel): @@ -765,8 +763,8 @@ class SchedulerInfoResponse(BaseModel): Scheduler info serializer for responses. """ - status: Annotated[str | None, Field(title="Status")] = None - latest_scheduler_heartbeat: Annotated[str | None, Field(title="Latest Scheduler Heartbeat")] = None + status: Annotated[str | None, Field(title="Status")] + latest_scheduler_heartbeat: Annotated[str | None, Field(title="Latest Scheduler Heartbeat")] class StructuredLogMessage(BaseModel): @@ -871,7 +869,7 @@ class TaskInstancesLogResponse(BaseModel): """ content: Annotated[list[StructuredLogMessage] | list[str], Field(title="Content")] - continuation_token: Annotated[str | None, Field(title="Continuation Token")] = None + continuation_token: Annotated[str | None, Field(title="Continuation Token")] class TaskOutletAssetReference(BaseModel): @@ -910,7 +908,7 @@ class TriggerDAGRunPostBody(BaseModel): dag_run_id: Annotated[str | None, Field(title="Dag Run Id")] = None data_interval_start: Annotated[datetime | None, Field(title="Data Interval Start")] = None data_interval_end: Annotated[datetime | None, Field(title="Data Interval End")] = None - logical_date: Annotated[datetime | None, Field(title="Logical Date")] = None + logical_date: Annotated[datetime | None, Field(title="Logical Date")] run_after: Annotated[datetime | None, Field(title="Run After")] = None conf: Annotated[dict[str, Any] | None, Field(title="Conf")] = None note: Annotated[str | None, Field(title="Note")] = None @@ -926,8 +924,8 @@ class TriggerResponse(BaseModel): classpath: Annotated[str, Field(title="Classpath")] kwargs: Annotated[str, Field(title="Kwargs")] created_date: Annotated[datetime, Field(title="Created Date")] - queue: Annotated[str | None, Field(title="Queue")] = None - triggerer_id: Annotated[int | None, Field(title="Triggerer Id")] = None + queue: Annotated[str | None, Field(title="Queue")] + triggerer_id: Annotated[int | None, Field(title="Triggerer Id")] class TriggererInfoResponse(BaseModel): @@ -935,8 +933,8 @@ class TriggererInfoResponse(BaseModel): Triggerer info serializer for responses. """ - status: Annotated[str | None, Field(title="Status")] = None - latest_triggerer_heartbeat: Annotated[str | None, Field(title="Latest Triggerer Heartbeat")] = None + status: Annotated[str | None, Field(title="Status")] + latest_triggerer_heartbeat: Annotated[str | None, Field(title="Latest Triggerer Heartbeat")] class UpdateHITLDetailPayload(BaseModel): @@ -977,9 +975,9 @@ class VariableResponse(BaseModel): key: Annotated[str, Field(title="Key")] value: Annotated[str, Field(title="Value")] - description: Annotated[str | None, Field(title="Description")] = None + description: Annotated[str | None, Field(title="Description")] is_encrypted: Annotated[bool, Field(title="Is Encrypted")] - team_name: Annotated[str | None, Field(title="Team Name")] = None + team_name: Annotated[str | None, Field(title="Team Name")] class VersionInfo(BaseModel): @@ -988,7 +986,7 @@ class VersionInfo(BaseModel): """ version: Annotated[str, Field(title="Version")] - git_version: Annotated[str | None, Field(title="Git Version")] = None + git_version: Annotated[str | None, Field(title="Git Version")] class XComCreateBody(BaseModel): @@ -1011,7 +1009,7 @@ class XComResponse(BaseModel): key: Annotated[str, Field(title="Key")] timestamp: Annotated[datetime, Field(title="Timestamp")] - logical_date: Annotated[datetime | None, Field(title="Logical Date")] = None + logical_date: Annotated[datetime | None, Field(title="Logical Date")] map_index: Annotated[int, Field(title="Map Index")] task_id: Annotated[str, Field(title="Task Id")] dag_id: Annotated[str, Field(title="Dag Id")] @@ -1028,7 +1026,7 @@ class XComResponseNative(BaseModel): key: Annotated[str, Field(title="Key")] timestamp: Annotated[datetime, Field(title="Timestamp")] - logical_date: Annotated[datetime | None, Field(title="Logical Date")] = None + logical_date: Annotated[datetime | None, Field(title="Logical Date")] map_index: Annotated[int, Field(title="Map Index")] task_id: Annotated[str, Field(title="Task Id")] dag_id: Annotated[str, Field(title="Dag Id")] @@ -1046,7 +1044,7 @@ class XComResponseString(BaseModel): key: Annotated[str, Field(title="Key")] timestamp: Annotated[datetime, Field(title="Timestamp")] - logical_date: Annotated[datetime | None, Field(title="Logical Date")] = None + logical_date: Annotated[datetime | None, Field(title="Logical Date")] map_index: Annotated[int, Field(title="Map Index")] task_id: Annotated[str, Field(title="Task Id")] dag_id: Annotated[str, Field(title="Dag Id")] @@ -1054,7 +1052,7 @@ class XComResponseString(BaseModel): dag_display_name: Annotated[str, Field(title="Dag Display Name")] task_display_name: Annotated[str, Field(title="Task Display Name")] run_after: Annotated[datetime, Field(title="Run After")] - value: Annotated[str | None, Field(title="Value")] = None + value: Annotated[str | None, Field(title="Value")] class XComUpdateBody(BaseModel): @@ -1145,12 +1143,12 @@ class BackfillResponse(BaseModel): dag_id: Annotated[str, Field(title="Dag Id")] from_date: Annotated[datetime, Field(title="From Date")] to_date: Annotated[datetime, Field(title="To Date")] - dag_run_conf: Annotated[dict[str, Any] | None, Field(title="Dag Run Conf")] = None + dag_run_conf: Annotated[dict[str, Any] | None, Field(title="Dag Run Conf")] is_paused: Annotated[bool, Field(title="Is Paused")] reprocess_behavior: ReprocessBehavior max_active_runs: Annotated[int, Field(title="Max Active Runs")] created_at: Annotated[datetime, Field(title="Created At")] - completed_at: Annotated[datetime | None, Field(title="Completed At")] = None + completed_at: Annotated[datetime | None, Field(title="Completed At")] updated_at: Annotated[datetime, Field(title="Updated At")] dag_display_name: Annotated[str, Field(title="Dag Display Name")] @@ -1365,46 +1363,44 @@ class DAGDetailsResponse(BaseModel): dag_display_name: Annotated[str, Field(title="Dag Display Name")] is_paused: Annotated[bool, Field(title="Is Paused")] is_stale: Annotated[bool, Field(title="Is Stale")] - last_parsed_time: Annotated[datetime | None, Field(title="Last Parsed Time")] = None - last_parse_duration: Annotated[float | None, Field(title="Last Parse Duration")] = None - last_expired: Annotated[datetime | None, Field(title="Last Expired")] = None - bundle_name: Annotated[str | None, Field(title="Bundle Name")] = None - bundle_version: Annotated[str | None, Field(title="Bundle Version")] = None - relative_fileloc: Annotated[str | None, Field(title="Relative Fileloc")] = None + last_parsed_time: Annotated[datetime | None, Field(title="Last Parsed Time")] + last_parse_duration: Annotated[float | None, Field(title="Last Parse Duration")] + last_expired: Annotated[datetime | None, Field(title="Last Expired")] + bundle_name: Annotated[str | None, Field(title="Bundle Name")] + bundle_version: Annotated[str | None, Field(title="Bundle Version")] + relative_fileloc: Annotated[str | None, Field(title="Relative Fileloc")] fileloc: Annotated[str, Field(title="Fileloc")] - description: Annotated[str | None, Field(title="Description")] = None - timetable_summary: Annotated[str | None, Field(title="Timetable Summary")] = None - timetable_description: Annotated[str | None, Field(title="Timetable Description")] = None + description: Annotated[str | None, Field(title="Description")] + timetable_summary: Annotated[str | None, Field(title="Timetable Summary")] + timetable_description: Annotated[str | None, Field(title="Timetable Description")] timetable_partitioned: Annotated[bool, Field(title="Timetable Partitioned")] tags: Annotated[list[DagTagResponse], Field(title="Tags")] max_active_tasks: Annotated[int, Field(title="Max Active Tasks")] - max_active_runs: Annotated[int | None, Field(title="Max Active Runs")] = None + max_active_runs: Annotated[int | None, Field(title="Max Active Runs")] max_consecutive_failed_dag_runs: Annotated[int, Field(title="Max Consecutive Failed Dag Runs")] has_task_concurrency_limits: Annotated[bool, Field(title="Has Task Concurrency Limits")] has_import_errors: Annotated[bool, Field(title="Has Import Errors")] - next_dagrun_logical_date: Annotated[datetime | None, Field(title="Next Dagrun Logical Date")] = None + next_dagrun_logical_date: Annotated[datetime | None, Field(title="Next Dagrun Logical Date")] next_dagrun_data_interval_start: Annotated[ datetime | None, Field(title="Next Dagrun Data Interval Start") - ] = None - next_dagrun_data_interval_end: Annotated[ - datetime | None, Field(title="Next Dagrun Data Interval End") - ] = None - next_dagrun_run_after: Annotated[datetime | None, Field(title="Next Dagrun Run After")] = None - allowed_run_types: Annotated[list[DagRunType] | None, Field(title="Allowed Run Types")] = None + ] + next_dagrun_data_interval_end: Annotated[datetime | None, Field(title="Next Dagrun Data Interval End")] + next_dagrun_run_after: Annotated[datetime | None, Field(title="Next Dagrun Run After")] + allowed_run_types: Annotated[list[DagRunType] | None, Field(title="Allowed Run Types")] owners: Annotated[list[str], Field(title="Owners")] catchup: Annotated[bool, Field(title="Catchup")] - dag_run_timeout: Annotated[timedelta | None, Field(title="Dag Run Timeout")] = None - asset_expression: Annotated[dict[str, Any] | None, Field(title="Asset Expression")] = None - doc_md: Annotated[str | None, Field(title="Doc Md")] = None - start_date: Annotated[datetime | None, Field(title="Start Date")] = None - end_date: Annotated[datetime | None, Field(title="End Date")] = None - is_paused_upon_creation: Annotated[bool | None, Field(title="Is Paused Upon Creation")] = None - params: Annotated[dict[str, Any] | None, Field(title="Params")] = None + dag_run_timeout: Annotated[timedelta | None, Field(title="Dag Run Timeout")] + asset_expression: Annotated[dict[str, Any] | None, Field(title="Asset Expression")] + doc_md: Annotated[str | None, Field(title="Doc Md")] + start_date: Annotated[datetime | None, Field(title="Start Date")] + end_date: Annotated[datetime | None, Field(title="End Date")] + is_paused_upon_creation: Annotated[bool | None, Field(title="Is Paused Upon Creation")] + params: Annotated[dict[str, Any] | None, Field(title="Params")] render_template_as_native_obj: Annotated[bool, Field(title="Render Template As Native Obj")] - template_search_path: Annotated[list[str] | None, Field(title="Template Search Path")] = None - timezone: Annotated[str | None, Field(title="Timezone")] = None - last_parsed: Annotated[datetime | None, Field(title="Last Parsed")] = None - default_args: Annotated[dict[str, Any] | None, Field(title="Default Args")] = None + template_search_path: Annotated[list[str] | None, Field(title="Template Search Path")] + timezone: Annotated[str | None, Field(title="Timezone")] + last_parsed: Annotated[datetime | None, Field(title="Last Parsed")] + default_args: Annotated[dict[str, Any] | None, Field(title="Default Args")] owner_links: Annotated[dict[str, str] | None, Field(title="Owner Links")] = None is_favorite: Annotated[bool | None, Field(title="Is Favorite")] = False active_runs_count: Annotated[int | None, Field(title="Active Runs Count")] = 0 @@ -1412,13 +1408,14 @@ class DAGDetailsResponse(BaseModel): concurrency: Annotated[ int, Field( + deprecated=True, description="Return max_active_tasks as concurrency.\n\nDeprecated: Use max_active_tasks instead.", title="Concurrency", ), ] latest_dag_version: Annotated[ DagVersionResponse | None, Field(description="Return the latest DagVersion.") - ] = None + ] class DAGResponse(BaseModel): @@ -1430,32 +1427,30 @@ class DAGResponse(BaseModel): dag_display_name: Annotated[str, Field(title="Dag Display Name")] is_paused: Annotated[bool, Field(title="Is Paused")] is_stale: Annotated[bool, Field(title="Is Stale")] - last_parsed_time: Annotated[datetime | None, Field(title="Last Parsed Time")] = None - last_parse_duration: Annotated[float | None, Field(title="Last Parse Duration")] = None - last_expired: Annotated[datetime | None, Field(title="Last Expired")] = None - bundle_name: Annotated[str | None, Field(title="Bundle Name")] = None - bundle_version: Annotated[str | None, Field(title="Bundle Version")] = None - relative_fileloc: Annotated[str | None, Field(title="Relative Fileloc")] = None + last_parsed_time: Annotated[datetime | None, Field(title="Last Parsed Time")] + last_parse_duration: Annotated[float | None, Field(title="Last Parse Duration")] + last_expired: Annotated[datetime | None, Field(title="Last Expired")] + bundle_name: Annotated[str | None, Field(title="Bundle Name")] + bundle_version: Annotated[str | None, Field(title="Bundle Version")] + relative_fileloc: Annotated[str | None, Field(title="Relative Fileloc")] fileloc: Annotated[str, Field(title="Fileloc")] - description: Annotated[str | None, Field(title="Description")] = None - timetable_summary: Annotated[str | None, Field(title="Timetable Summary")] = None - timetable_description: Annotated[str | None, Field(title="Timetable Description")] = None + description: Annotated[str | None, Field(title="Description")] + timetable_summary: Annotated[str | None, Field(title="Timetable Summary")] + timetable_description: Annotated[str | None, Field(title="Timetable Description")] timetable_partitioned: Annotated[bool, Field(title="Timetable Partitioned")] tags: Annotated[list[DagTagResponse], Field(title="Tags")] max_active_tasks: Annotated[int, Field(title="Max Active Tasks")] - max_active_runs: Annotated[int | None, Field(title="Max Active Runs")] = None + max_active_runs: Annotated[int | None, Field(title="Max Active Runs")] max_consecutive_failed_dag_runs: Annotated[int, Field(title="Max Consecutive Failed Dag Runs")] has_task_concurrency_limits: Annotated[bool, Field(title="Has Task Concurrency Limits")] has_import_errors: Annotated[bool, Field(title="Has Import Errors")] - next_dagrun_logical_date: Annotated[datetime | None, Field(title="Next Dagrun Logical Date")] = None + next_dagrun_logical_date: Annotated[datetime | None, Field(title="Next Dagrun Logical Date")] next_dagrun_data_interval_start: Annotated[ datetime | None, Field(title="Next Dagrun Data Interval Start") - ] = None - next_dagrun_data_interval_end: Annotated[ - datetime | None, Field(title="Next Dagrun Data Interval End") - ] = None - next_dagrun_run_after: Annotated[datetime | None, Field(title="Next Dagrun Run After")] = None - allowed_run_types: Annotated[list[DagRunType] | None, Field(title="Allowed Run Types")] = None + ] + next_dagrun_data_interval_end: Annotated[datetime | None, Field(title="Next Dagrun Data Interval End")] + next_dagrun_run_after: Annotated[datetime | None, Field(title="Next Dagrun Run After")] + allowed_run_types: Annotated[list[DagRunType] | None, Field(title="Allowed Run Types")] owners: Annotated[list[str], Field(title="Owners")] file_token: Annotated[str, Field(description="Return file token.", title="File Token")] @@ -1479,25 +1474,25 @@ class DAGRunResponse(BaseModel): dag_run_id: Annotated[str, Field(title="Dag Run Id")] dag_id: Annotated[str, Field(title="Dag Id")] - logical_date: Annotated[datetime | None, Field(title="Logical Date")] = None - queued_at: Annotated[datetime | None, Field(title="Queued At")] = None - start_date: Annotated[datetime | None, Field(title="Start Date")] = None - end_date: Annotated[datetime | None, Field(title="End Date")] = None - duration: Annotated[float | None, Field(title="Duration")] = None - data_interval_start: Annotated[datetime | None, Field(title="Data Interval Start")] = None - data_interval_end: Annotated[datetime | None, Field(title="Data Interval End")] = None + logical_date: Annotated[datetime | None, Field(title="Logical Date")] + queued_at: Annotated[datetime | None, Field(title="Queued At")] + start_date: Annotated[datetime | None, Field(title="Start Date")] + end_date: Annotated[datetime | None, Field(title="End Date")] + duration: Annotated[float | None, Field(title="Duration")] + data_interval_start: Annotated[datetime | None, Field(title="Data Interval Start")] + data_interval_end: Annotated[datetime | None, Field(title="Data Interval End")] run_after: Annotated[datetime, Field(title="Run After")] - last_scheduling_decision: Annotated[datetime | None, Field(title="Last Scheduling Decision")] = None + last_scheduling_decision: Annotated[datetime | None, Field(title="Last Scheduling Decision")] run_type: DagRunType state: DagRunState - triggered_by: DagRunTriggeredByType | None = None - triggering_user_name: Annotated[str | None, Field(title="Triggering User Name")] = None - conf: Annotated[dict[str, Any] | None, Field(title="Conf")] = None - note: Annotated[str | None, Field(title="Note")] = None + triggered_by: DagRunTriggeredByType | None + triggering_user_name: Annotated[str | None, Field(title="Triggering User Name")] + conf: Annotated[dict[str, Any] | None, Field(title="Conf")] + note: Annotated[str | None, Field(title="Note")] dag_versions: Annotated[list[DagVersionResponse], Field(title="Dag Versions")] - bundle_version: Annotated[str | None, Field(title="Bundle Version")] = None + bundle_version: Annotated[str | None, Field(title="Bundle Version")] dag_display_name: Annotated[str, Field(title="Dag Display Name")] - partition_key: Annotated[str | None, Field(title="Partition Key")] = None + partition_key: Annotated[str | None, Field(title="Partition Key")] class DAGRunsBatchBody(BaseModel): @@ -1675,7 +1670,9 @@ class PluginResponse(BaseModel): ] react_apps: Annotated[list[ReactAppResponse], Field(title="React Apps")] appbuilder_views: Annotated[list[AppBuilderViewResponse], Field(title="Appbuilder Views")] - appbuilder_menu_items: Annotated[list[AppBuilderMenuItemResponse], Field(title="Appbuilder Menu Items")] + appbuilder_menu_items: Annotated[ + list[AppBuilderMenuItemResponse], Field(deprecated=True, title="Appbuilder Menu Items") + ] global_operator_extra_links: Annotated[list[str], Field(title="Global Operator Extra Links")] operator_extra_links: Annotated[list[str], Field(title="Operator Extra Links")] source: Annotated[str, Field(title="Source")] @@ -1727,28 +1724,28 @@ class TaskInstanceHistoryResponse(BaseModel): dag_id: Annotated[str, Field(title="Dag Id")] dag_run_id: Annotated[str, Field(title="Dag Run Id")] map_index: Annotated[int, Field(title="Map Index")] - start_date: Annotated[datetime | None, Field(title="Start Date")] = None - end_date: Annotated[datetime | None, Field(title="End Date")] = None - duration: Annotated[float | None, Field(title="Duration")] = None - state: TaskInstanceState | None = None + start_date: Annotated[datetime | None, Field(title="Start Date")] + end_date: Annotated[datetime | None, Field(title="End Date")] + duration: Annotated[float | None, Field(title="Duration")] + state: TaskInstanceState | None try_number: Annotated[int, Field(title="Try Number")] max_tries: Annotated[int, Field(title="Max Tries")] task_display_name: Annotated[str, Field(title="Task Display Name")] dag_display_name: Annotated[str, Field(title="Dag Display Name")] - hostname: Annotated[str | None, Field(title="Hostname")] = None - unixname: Annotated[str | None, Field(title="Unixname")] = None + hostname: Annotated[str | None, Field(title="Hostname")] + unixname: Annotated[str | None, Field(title="Unixname")] pool: Annotated[str, Field(title="Pool")] pool_slots: Annotated[int, Field(title="Pool Slots")] - queue: Annotated[str | None, Field(title="Queue")] = None - priority_weight: Annotated[int | None, Field(title="Priority Weight")] = None - operator: Annotated[str | None, Field(title="Operator")] = None - operator_name: Annotated[str | None, Field(title="Operator Name")] = None - queued_when: Annotated[datetime | None, Field(title="Queued When")] = None - scheduled_when: Annotated[datetime | None, Field(title="Scheduled When")] = None - pid: Annotated[int | None, Field(title="Pid")] = None - executor: Annotated[str | None, Field(title="Executor")] = None + queue: Annotated[str | None, Field(title="Queue")] + priority_weight: Annotated[int | None, Field(title="Priority Weight")] + operator: Annotated[str | None, Field(title="Operator")] + operator_name: Annotated[str | None, Field(title="Operator Name")] + queued_when: Annotated[datetime | None, Field(title="Queued When")] + scheduled_when: Annotated[datetime | None, Field(title="Scheduled When")] + pid: Annotated[int | None, Field(title="Pid")] + executor: Annotated[str | None, Field(title="Executor")] executor_config: Annotated[str, Field(title="Executor Config")] - dag_version: DagVersionResponse | None = None + dag_version: DagVersionResponse | None class TaskInstanceResponse(BaseModel): @@ -1761,35 +1758,35 @@ class TaskInstanceResponse(BaseModel): dag_id: Annotated[str, Field(title="Dag Id")] dag_run_id: Annotated[str, Field(title="Dag Run Id")] map_index: Annotated[int, Field(title="Map Index")] - logical_date: Annotated[datetime | None, Field(title="Logical Date")] = None + logical_date: Annotated[datetime | None, Field(title="Logical Date")] run_after: Annotated[datetime, Field(title="Run After")] - start_date: Annotated[datetime | None, Field(title="Start Date")] = None - end_date: Annotated[datetime | None, Field(title="End Date")] = None - duration: Annotated[float | None, Field(title="Duration")] = None - state: TaskInstanceState | None = None + start_date: Annotated[datetime | None, Field(title="Start Date")] + end_date: Annotated[datetime | None, Field(title="End Date")] + duration: Annotated[float | None, Field(title="Duration")] + state: TaskInstanceState | None try_number: Annotated[int, Field(title="Try Number")] max_tries: Annotated[int, Field(title="Max Tries")] task_display_name: Annotated[str, Field(title="Task Display Name")] dag_display_name: Annotated[str, Field(title="Dag Display Name")] - hostname: Annotated[str | None, Field(title="Hostname")] = None - unixname: Annotated[str | None, Field(title="Unixname")] = None + hostname: Annotated[str | None, Field(title="Hostname")] + unixname: Annotated[str | None, Field(title="Unixname")] pool: Annotated[str, Field(title="Pool")] pool_slots: Annotated[int, Field(title="Pool Slots")] - queue: Annotated[str | None, Field(title="Queue")] = None - priority_weight: Annotated[int | None, Field(title="Priority Weight")] = None - operator: Annotated[str | None, Field(title="Operator")] = None - operator_name: Annotated[str | None, Field(title="Operator Name")] = None - queued_when: Annotated[datetime | None, Field(title="Queued When")] = None - scheduled_when: Annotated[datetime | None, Field(title="Scheduled When")] = None - pid: Annotated[int | None, Field(title="Pid")] = None - executor: Annotated[str | None, Field(title="Executor")] = None + queue: Annotated[str | None, Field(title="Queue")] + priority_weight: Annotated[int | None, Field(title="Priority Weight")] + operator: Annotated[str | None, Field(title="Operator")] + operator_name: Annotated[str | None, Field(title="Operator Name")] + queued_when: Annotated[datetime | None, Field(title="Queued When")] + scheduled_when: Annotated[datetime | None, Field(title="Scheduled When")] + pid: Annotated[int | None, Field(title="Pid")] + executor: Annotated[str | None, Field(title="Executor")] executor_config: Annotated[str, Field(title="Executor Config")] - note: Annotated[str | None, Field(title="Note")] = None - rendered_map_index: Annotated[str | None, Field(title="Rendered Map Index")] = None + note: Annotated[str | None, Field(title="Note")] + rendered_map_index: Annotated[str | None, Field(title="Rendered Map Index")] rendered_fields: Annotated[dict[str, Any] | None, Field(title="Rendered Fields")] = None - trigger: TriggerResponse | None = None - triggerer_job: JobResponse | None = None - dag_version: DagVersionResponse | None = None + trigger: TriggerResponse | None + triggerer_job: JobResponse | None + dag_version: DagVersionResponse | None class TaskResponse(BaseModel): @@ -1797,32 +1794,32 @@ class TaskResponse(BaseModel): Task serializer for responses. """ - task_id: Annotated[str | None, Field(title="Task Id")] = None - task_display_name: Annotated[str | None, Field(title="Task Display Name")] = None - owner: Annotated[str | None, Field(title="Owner")] = None - start_date: Annotated[datetime | None, Field(title="Start Date")] = None - end_date: Annotated[datetime | None, Field(title="End Date")] = None - trigger_rule: Annotated[str | None, Field(title="Trigger Rule")] = None + task_id: Annotated[str | None, Field(title="Task Id")] + task_display_name: Annotated[str | None, Field(title="Task Display Name")] + owner: Annotated[str | None, Field(title="Owner")] + start_date: Annotated[datetime | None, Field(title="Start Date")] + end_date: Annotated[datetime | None, Field(title="End Date")] + trigger_rule: Annotated[str | None, Field(title="Trigger Rule")] depends_on_past: Annotated[bool, Field(title="Depends On Past")] wait_for_downstream: Annotated[bool, Field(title="Wait For Downstream")] - retries: Annotated[float | None, Field(title="Retries")] = None - queue: Annotated[str | None, Field(title="Queue")] = None - pool: Annotated[str | None, Field(title="Pool")] = None - pool_slots: Annotated[float | None, Field(title="Pool Slots")] = None - execution_timeout: TimeDelta | None = None - retry_delay: TimeDelta | None = None + retries: Annotated[float | None, Field(title="Retries")] + queue: Annotated[str | None, Field(title="Queue")] + pool: Annotated[str | None, Field(title="Pool")] + pool_slots: Annotated[float | None, Field(title="Pool Slots")] + execution_timeout: TimeDelta | None + retry_delay: TimeDelta | None retry_exponential_backoff: Annotated[float, Field(title="Retry Exponential Backoff")] - priority_weight: Annotated[float | None, Field(title="Priority Weight")] = None - weight_rule: Annotated[str | None, Field(title="Weight Rule")] = None - ui_color: Annotated[str | None, Field(title="Ui Color")] = None - ui_fgcolor: Annotated[str | None, Field(title="Ui Fgcolor")] = None - template_fields: Annotated[list[str] | None, Field(title="Template Fields")] = None - downstream_task_ids: Annotated[list[str] | None, Field(title="Downstream Task Ids")] = None - doc_md: Annotated[str | None, Field(title="Doc Md")] = None - operator_name: Annotated[str | None, Field(title="Operator Name")] = None - params: Annotated[dict[str, Any] | None, Field(title="Params")] = None - class_ref: Annotated[dict[str, Any] | None, Field(title="Class Ref")] = None - is_mapped: Annotated[bool | None, Field(title="Is Mapped")] = None + priority_weight: Annotated[float | None, Field(title="Priority Weight")] + weight_rule: Annotated[str | None, Field(title="Weight Rule")] + ui_color: Annotated[str | None, Field(title="Ui Color")] + ui_fgcolor: Annotated[str | None, Field(title="Ui Fgcolor")] + template_fields: Annotated[list[str] | None, Field(title="Template Fields")] + downstream_task_ids: Annotated[list[str] | None, Field(title="Downstream Task Ids")] + doc_md: Annotated[str | None, Field(title="Doc Md")] + operator_name: Annotated[str | None, Field(title="Operator Name")] + params: Annotated[dict[str, Any] | None, Field(title="Params")] + class_ref: Annotated[dict[str, Any] | None, Field(title="Class Ref")] + is_mapped: Annotated[bool | None, Field(title="Is Mapped")] extra_links: Annotated[ list[str], Field(description="Extract and return extra_links.", title="Extra Links") ] diff --git a/task-sdk/pyproject.toml b/task-sdk/pyproject.toml index 8423628af9801..b75dcfd9f67c2 100644 --- a/task-sdk/pyproject.toml +++ b/task-sdk/pyproject.toml @@ -124,7 +124,7 @@ requires = [ "pathspec==1.1.1", "pluggy==1.6.0", "tomli==2.4.1; python_version < '3.11'", - "trove-classifiers==2026.4.28.13", + "trove-classifiers==2026.5.7.17", ] build-backend = "hatchling.build" @@ -210,7 +210,7 @@ exclude_also = [ [dependency-groups] codegen = [ - "datamodel-code-generator[http]==0.33.0", + "datamodel-code-generator[http]==0.57.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 e61c228cd2033..4bf12eda311b7 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.57.0 # Licensed to the Apache Software Foundation (ASF) under one # or more contributor license agreements. See the NOTICE file @@ -70,12 +70,12 @@ class ConnectionResponse(BaseModel): conn_id: Annotated[str, Field(title="Conn Id")] conn_type: Annotated[str, Field(title="Conn Type")] - host: Annotated[str | None, Field(title="Host")] = None - schema_: Annotated[str | None, Field(alias="schema", title="Schema")] = None - login: Annotated[str | None, Field(title="Login")] = None - password: Annotated[str | None, Field(title="Password")] = None - port: Annotated[int | None, Field(title="Port")] = None - extra: Annotated[str | None, Field(title="Extra")] = None + host: Annotated[str | None, Field(title="Host")] + schema_: Annotated[str | None, Field(alias="schema", title="Schema")] + login: Annotated[str | None, Field(title="Login")] + password: Annotated[str | None, Field(title="Password")] + port: Annotated[int | None, Field(title="Port")] + extra: Annotated[str | None, Field(title="Extra")] class DagResponse(BaseModel): @@ -85,12 +85,12 @@ class DagResponse(BaseModel): dag_id: Annotated[str, Field(title="Dag Id")] is_paused: Annotated[bool, Field(title="Is Paused")] - bundle_name: Annotated[str | None, Field(title="Bundle Name")] = None - bundle_version: Annotated[str | None, Field(title="Bundle Version")] = None - relative_fileloc: Annotated[str | None, Field(title="Relative Fileloc")] = None - owners: Annotated[str | None, Field(title="Owners")] = None + bundle_name: Annotated[str | None, Field(title="Bundle Name")] + bundle_version: Annotated[str | None, Field(title="Bundle Version")] + relative_fileloc: Annotated[str | None, Field(title="Relative Fileloc")] + owners: Annotated[str | None, Field(title="Owners")] tags: Annotated[list[str], Field(title="Tags")] - next_dagrun: Annotated[AwareDatetime | None, Field(title="Next Dagrun")] = None + next_dagrun: Annotated[AwareDatetime | None, Field(title="Next Dagrun")] class DagRunAssetReference(BaseModel): @@ -103,13 +103,13 @@ class DagRunAssetReference(BaseModel): ) run_id: Annotated[str, Field(title="Run Id")] dag_id: Annotated[str, Field(title="Dag Id")] - logical_date: Annotated[AwareDatetime | None, Field(title="Logical Date")] = None + logical_date: Annotated[AwareDatetime | None, Field(title="Logical Date")] start_date: Annotated[AwareDatetime, Field(title="Start Date")] - end_date: Annotated[AwareDatetime | None, Field(title="End Date")] = None + end_date: Annotated[AwareDatetime | None, Field(title="End Date")] state: Annotated[str, Field(title="State")] - data_interval_start: Annotated[AwareDatetime | None, Field(title="Data Interval Start")] = None - data_interval_end: Annotated[AwareDatetime | None, Field(title="Data Interval End")] = None - partition_key: Annotated[str | None, Field(title="Partition Key")] = None + data_interval_start: Annotated[AwareDatetime | None, Field(title="Data Interval Start")] + data_interval_end: Annotated[AwareDatetime | None, Field(title="Data Interval End")] + partition_key: Annotated[str | None, Field(title="Partition Key")] class DagRunState(str, Enum): @@ -213,13 +213,13 @@ class TIDeferredStatePayload(BaseModel): model_config = ConfigDict( extra="forbid", ) - state: Annotated[Literal["deferred"] | None, Field(title="State")] = "deferred" + state: Annotated[Literal["deferred"], Field(title="State")] = "deferred" classpath: Annotated[str, Field(title="Classpath")] - trigger_kwargs: Annotated[dict[str, JsonValue] | str | None, Field(title="Trigger Kwargs")] = None + trigger_kwargs: Annotated[dict[str, JsonValue | None] | str | None, Field(title="Trigger Kwargs")] = None trigger_timeout: Annotated[timedelta | None, Field(title="Trigger Timeout")] = None queue: Annotated[str | None, Field(title="Queue")] = None next_method: Annotated[str, Field(title="Next Method")] - next_kwargs: Annotated[dict[str, JsonValue] | None, Field(title="Next Kwargs")] = None + next_kwargs: Annotated[dict[str, JsonValue | None] | None, Field(title="Next Kwargs")] = None rendered_map_index: Annotated[str | None, Field(title="Rendered Map Index")] = None @@ -231,7 +231,7 @@ class TIEnterRunningPayload(BaseModel): model_config = ConfigDict( extra="forbid", ) - state: Annotated[Literal["running"] | None, Field(title="State")] = "running" + state: Annotated[Literal["running"], Field(title="State")] = "running" hostname: Annotated[str, Field(title="Hostname")] unixname: Annotated[str, Field(title="Unixname")] pid: Annotated[int, Field(title="Pid")] @@ -258,7 +258,7 @@ class TIRescheduleStatePayload(BaseModel): model_config = ConfigDict( extra="forbid", ) - state: Annotated[Literal["up_for_reschedule"] | None, Field(title="State")] = "up_for_reschedule" + state: Annotated[Literal["up_for_reschedule"], Field(title="State")] = "up_for_reschedule" reschedule_date: Annotated[AwareDatetime, Field(title="Reschedule Date")] end_date: Annotated[AwareDatetime, Field(title="End Date")] @@ -271,7 +271,7 @@ class TIRetryStatePayload(BaseModel): model_config = ConfigDict( extra="forbid", ) - state: Annotated[Literal["up_for_retry"] | None, Field(title="State")] = "up_for_retry" + state: Annotated[Literal["up_for_retry"], Field(title="State")] = "up_for_retry" end_date: Annotated[AwareDatetime, Field(title="End Date")] rendered_map_index: Annotated[str | None, Field(title="Rendered Map Index")] = None @@ -295,7 +295,7 @@ class TISuccessStatePayload(BaseModel): model_config = ConfigDict( extra="forbid", ) - state: Annotated[Literal["success"] | None, Field(title="State")] = "success" + state: Annotated[Literal["success"], Field(title="State")] = "success" end_date: Annotated[AwareDatetime, Field(title="End Date")] task_outlets: Annotated[list[AssetProfile] | None, Field(title="Task Outlets")] = None outlet_events: Annotated[list[dict[str, Any]] | None, Field(title="Outlet Events")] = None @@ -402,7 +402,7 @@ class VariablePostBody(BaseModel): model_config = ConfigDict( extra="forbid", ) - val: Annotated[str | None, Field(title="Val")] = None + val: Annotated[str | None, Field(title="Val")] description: Annotated[str | None, Field(title="Description")] = None @@ -415,7 +415,7 @@ class VariableResponse(BaseModel): extra="forbid", ) key: Annotated[str, Field(title="Key")] - value: Annotated[str | None, Field(title="Value")] = None + value: Annotated[str | None, Field(title="Value")] class XComResponse(BaseModel): @@ -424,12 +424,12 @@ class XComResponse(BaseModel): """ key: Annotated[str, Field(title="Key")] - value: JsonValue + value: JsonValue | None -class XComSequenceIndexResponse(RootModel[JsonValue]): +class XComSequenceIndexResponse(RootModel[JsonValue | None]): root: Annotated[ - JsonValue, + JsonValue | None, Field( description="XCom schema with minimal structure for index-based access.", title="XComSequenceIndexResponse", @@ -437,13 +437,13 @@ class XComSequenceIndexResponse(RootModel[JsonValue]): ] -class XComSequenceSliceResponse(RootModel[list[JsonValue]]): +class XComSequenceSliceResponse(RootModel[list[JsonValue | None]]): """ XCom schema with minimal structure for slice-based access. """ root: Annotated[ - list[JsonValue], + list[JsonValue | None], Field( description="XCom schema with minimal structure for slice-based access.", title="XComSequenceSliceResponse", @@ -521,7 +521,7 @@ class AssetReferenceAssetEventDagRun(BaseModel): ) name: Annotated[str, Field(title="Name")] uri: Annotated[str, Field(title="Uri")] - extra: Annotated[dict[str, JsonValue], Field(title="Extra")] + extra: Annotated[dict[str, JsonValue | None], Field(title="Extra")] class AssetResponse(BaseModel): @@ -532,7 +532,7 @@ class AssetResponse(BaseModel): name: Annotated[str, Field(title="Name")] uri: Annotated[str, Field(title="Uri")] group: Annotated[str, Field(title="Group")] - extra: Annotated[dict[str, JsonValue] | None, Field(title="Extra")] = None + extra: Annotated[dict[str, JsonValue | None] | None, Field(title="Extra")] = None class HITLDetailRequest(BaseModel): @@ -557,8 +557,8 @@ class HITLDetailResponse(BaseModel): response_received: Annotated[bool, Field(title="Response Received")] responded_by_user: HITLUser | None = None - responded_at: Annotated[AwareDatetime | None, Field(title="Responded At")] = None - chosen_options: Annotated[list[str] | None, Field(title="Chosen Options")] = None + responded_at: Annotated[AwareDatetime | None, Field(title="Responded At")] + chosen_options: Annotated[list[str] | None, Field(title="Chosen Options")] params_input: Annotated[dict[str, Any] | None, Field(title="Params Input")] = None @@ -588,11 +588,11 @@ class AssetEventDagRunReference(BaseModel): extra="forbid", ) asset: AssetReferenceAssetEventDagRun - extra: Annotated[dict[str, JsonValue], Field(title="Extra")] - source_task_id: Annotated[str | None, Field(title="Source Task Id")] = None - source_dag_id: Annotated[str | None, Field(title="Source Dag Id")] = None - source_run_id: Annotated[str | None, Field(title="Source Run Id")] = None - source_map_index: Annotated[int | None, Field(title="Source Map Index")] = None + extra: Annotated[dict[str, JsonValue | None], Field(title="Extra")] + source_task_id: Annotated[str | None, Field(title="Source Task Id")] + source_dag_id: Annotated[str | None, Field(title="Source Dag Id")] + source_run_id: Annotated[str | None, Field(title="Source Run Id")] + source_map_index: Annotated[int | None, Field(title="Source Map Index")] source_aliases: Annotated[list[AssetAliasReferenceAssetEventDagRun], Field(title="Source Aliases")] timestamp: Annotated[AwareDatetime, Field(title="Timestamp")] @@ -604,7 +604,7 @@ class AssetEventResponse(BaseModel): id: Annotated[int, Field(title="Id")] timestamp: Annotated[AwareDatetime, Field(title="Timestamp")] - extra: Annotated[dict[str, JsonValue] | None, Field(title="Extra")] = None + extra: Annotated[dict[str, JsonValue | None] | None, Field(title="Extra")] = None asset: AssetResponse created_dagruns: Annotated[list[DagRunAssetReference], Field(title="Created Dagruns")] source_task_id: Annotated[str | None, Field(title="Source Task Id")] = None @@ -632,19 +632,19 @@ class DagRun(BaseModel): ) dag_id: Annotated[str, Field(title="Dag Id")] run_id: Annotated[str, Field(title="Run Id")] - logical_date: Annotated[AwareDatetime | None, Field(title="Logical Date")] = None - data_interval_start: Annotated[AwareDatetime | None, Field(title="Data Interval Start")] = None - data_interval_end: Annotated[AwareDatetime | None, Field(title="Data Interval End")] = None + logical_date: Annotated[AwareDatetime | None, Field(title="Logical Date")] + data_interval_start: Annotated[AwareDatetime | None, Field(title="Data Interval Start")] + data_interval_end: Annotated[AwareDatetime | None, Field(title="Data Interval End")] run_after: Annotated[AwareDatetime, Field(title="Run After")] - start_date: Annotated[AwareDatetime | None, Field(title="Start Date")] = None - end_date: Annotated[AwareDatetime | None, Field(title="End Date")] = None + start_date: Annotated[AwareDatetime | None, Field(title="Start Date")] + end_date: Annotated[AwareDatetime | None, Field(title="End Date")] clear_number: Annotated[int | None, Field(title="Clear Number")] = 0 run_type: DagRunType state: DagRunState conf: Annotated[dict[str, Any] | None, Field(title="Conf")] = None triggering_user_name: Annotated[str | None, Field(title="Triggering User Name")] = None consumed_asset_events: Annotated[list[AssetEventDagRunReference], Field(title="Consumed Asset Events")] - partition_key: Annotated[str | None, Field(title="Partition Key")] = None + partition_key: Annotated[str | None, Field(title="Partition Key")] note: Annotated[str | None, Field(title="Note")] = None diff --git a/uv.lock b/uv.lock index ddddce765c0ec..f09e01695a914 100644 --- a/uv.lock +++ b/uv.lock @@ -1880,7 +1880,7 @@ mypy = [ [package.metadata] requires-dist = [ { name = "a2wsgi", specifier = ">=1.10.8" }, - { name = "aiosqlite", specifier = ">=0.20.0,<0.22.0" }, + { name = "aiosqlite", specifier = ">=0.20.0,<0.23.0" }, { name = "alembic", specifier = ">=1.13.1,<2.0" }, { name = "apache-airflow-core", extras = ["graphviz", "gunicorn", "kerberos", "otel", "statsd"], marker = "extra == 'all'", editable = "airflow-core" }, { name = "apache-airflow-providers-common-compat", editable = "providers/common/compat" }, @@ -2038,7 +2038,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.57.0" }, ] dev = [ { name = "apache-airflow-ctl", extras = ["dev"], editable = "airflow-ctl" }, @@ -8378,7 +8378,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.57.0" }, { name = "openapi-spec-validator", specifier = ">=0.7.1" }, { name = "rich", specifier = ">=13.6.0" }, { name = "svcs", specifier = ">=25.1.0" }, @@ -10451,7 +10451,7 @@ wheels = [ [[package]] name = "datamodel-code-generator" -version = "0.33.0" +version = "0.57.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "argcomplete" }, @@ -10460,14 +10460,13 @@ dependencies = [ { name = "inflect" }, { name = "isort" }, { name = "jinja2" }, - { name = "packaging" }, { name = "pydantic" }, { name = "pyyaml" }, - { name = "tomli", marker = "python_full_version < '3.12'" }, + { name = "tomli", marker = "python_full_version < '3.11'" }, ] -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/5d/44/87d5980f813a1e323c5d726b3ac5fec8c915ce8a77fcdceaf9c00457dbae/datamodel_code_generator-0.57.0.tar.gz", hash = "sha256:0eda778ea06eaa476e542a5f1fe1d14cc3bbf686edb33a0ad6151c7d19089906", size = 932941, upload-time = "2026-05-07T16:21:55.819Z" } 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/c5/c1/4fb9a44bb4a305b860c5a5b1866dcccfac3b76f5f170a9e68fc7733e16d2/datamodel_code_generator-0.57.0-py3-none-any.whl", hash = "sha256:d26bf5defe5154493d0aa5a822b7725332b9e9dd2abccc2f8856052286aa83b5", size = 259343, upload-time = "2026-05-07T16:21:53.823Z" }, ] [package.optional-dependencies]