potiuk opened a new issue, #69616:
URL: https://github.com/apache/airflow/issues/69616

   Dependabot PR #68816 grouped three dependency bumps that each collide with 
an **intentional** version cap in our `pyproject.toml` files. That PR was 
closed because none can be merged as a blind cap bump. This issue tracks the 
deliberate work needed to actually move each one — they are independent and 
should be done in separate PRs.
   
   ### 1. `aiosqlite` — capped `<0.22.0` (`airflow-core/pyproject.toml`)
   
   - **Why capped:** aiosqlite 0.22.x leaves a helper thread hanging under 
SQLAlchemy 2 (see the comment at the pin + 
[aiosqlite#369](https://github.com/omnilib/aiosqlite/issues/369)). Our own 
test-session issue is fixed in 0.22.1, but the SQLAlchemy-side fix is only in 
`sqlalchemy` main, not yet released.
   - **To unblock:** wait for the SQLAlchemy release carrying the fix (tracked 
at [sqlalchemy#13039](https://github.com/sqlalchemy/sqlalchemy/issues/13039)), 
likely bump the `sqlalchemy` floor to that version, then relax the aiosqlite 
cap to allow `0.22.1+`.
   
   ### 2. `fastapi` — capped `<0.137.0` (`airflow-core/pyproject.toml`)
   
   - **Why capped:** FastAPI 0.137 switched to lazy router inclusion, which 
triggers cadwyn `RouterGenerationError` and fails api-server / dag-processor 
startup. The cap was added deliberately in #68578 (which closed #68562).
   - **To unblock:** confirm whether cadwyn now supports FastAPI 0.137+. Our 
lock is already on cadwyn 7.0.0, so it may already work — if so this is a 
matter of testing api-server / dag-processor startup under fastapi 0.137–0.139 
and relaxing the cap. If cadwyn still fails, an upstream cadwyn fix is required 
first.
   
   ### 3. `datamodel-code-generator` — pinned `==0.33.0` (`task-sdk` + 
`airflow-ctl` `codegen` groups)
   
   - **Why not bumped to 0.67.0:** regenerating with 0.67.0 drops the `= None` 
default from nullable-optional fields, turning ~200 fields across the Task SDK 
Execution API client (`task-sdk/src/airflow/sdk/api/datamodels/_generated.py`) 
and the airflow-ctl API client 
(`airflow-ctl/src/airflowctl/api/datamodels/generated.py`) from *optional* into 
*required* — a breaking Pydantic v2 model-contract change. It also shifts e.g. 
`dict[str, JsonValue]` → `dict[str, JsonValue | None]`. The config already sets 
`use-default=true`; 0.67.0 reinterprets that.
   - **To unblock:** investigate whether a generator flag restores the previous 
`= None` behaviour for nullable fields, or step the pin up incrementally to the 
last version that preserves defaults. Only bump when the regenerated 
`_generated.py` / `generated.py` diff is semantically equivalent.
   
   Closes the loop on #68816.
   
   ---
   Drafted-by: Claude Code (Opus 4.8); reviewed by @potiuk before posting
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to