Skip to content

[main] Upgrade important CI environment - #73822

Merged
Lee-W merged 5 commits into
mainfrom
ci-upgrade-main
Oct 20, 2026
Merged

Lee-W merged 5 commits into
mainfrom
ci-upgrade-main

Conversation

@github-actions

@github-actions github-actions Bot commented Sep 28, 2026 •

Copy link
Copy Markdown
Contributor

This PR upgrades important dependencies of the CI environment.

Dependency floors

Raised:

  • boto3, botocore: 1.42.79 → 1.42.93 (airflow-e2e-tests/pyproject.toml, providers/amazon/pyproject.toml, providers/hashicorp/pyproject.toml)
  • azure-keyvault-secrets: 4.10.0 → 4.11.0 (providers/microsoft/azure/pyproject.toml)
  • google-api-python-client: 2.193.0 → 2.194.0 (providers/google/pyproject.toml)
  • google-cloud-bigtable: 2.35.0 → 2.36.0 (providers/google/pyproject.toml)
  • google-cloud-dataflow-client: 0.12.0 → 0.13.0 (providers/google/pyproject.toml)
  • google-cloud-dlp: 3.35.0 → 3.36.0 (providers/google/pyproject.toml)
  • google-cloud-pubsub: 2.36.0 → 2.37.0 (providers/google/pyproject.toml)
  • google-cloud-spanner: 3.63.0 → 3.65.0 (providers/google/pyproject.toml)
  • google-cloud-texttospeech: 2.35.0 → 2.36.0 (providers/google/pyproject.toml)
  • google-cloud-translate: 3.25.0 → 3.26.0 (providers/google/pyproject.toml)

Skipped:

@potiuk

potiuk commented Sep 28, 2026

Copy link
Copy Markdown
Member

Rebased after merging #73802

@Lee-W
Lee-W marked this pull request as ready for review October 2, 2026 06:46
@github-actions

github-actions Bot commented Oct 2, 2026 •

Copy link
Copy Markdown
Contributor Author

uv.lock on main just moved via #74735 ("Allow durable agent execution with a CodeMode capability"), commit 5ab6989 and this PR currently conflicts.

Quickest fix:

git fetch upstream main && git rebase upstream/main
rm uv.lock && uv lock
git add uv.lock && git rebase --continue
git push --force-with-lease

Automated nudge — ignore if you're not ready to rebase. This comment is updated in place on future uv.lock bumps.

@github-actions
github-actions Bot marked this pull request as draft October 5, 2026 06:46
@potiuk
potiuk marked this pull request as ready for review October 5, 2026 07:33
@github-actions
github-actions Bot marked this pull request as draft October 16, 2026 06:30
@shahar1
shahar1 marked this pull request as ready for review October 16, 2026 09:33
@github-actions
github-actions Bot marked this pull request as draft October 19, 2026 06:46
@Lee-W
Lee-W marked this pull request as ready for review October 19, 2026 07:46
@potiuk
potiuk requested a review from XD-DENG as a code owner October 19, 2026 15:03
github-actions Bot and others added 4 commits October 19, 2026 17:08
- snowflake: snowflake-sqlalchemy (up to 1.11.1) cannot be imported on
  SQLAlchemy 2.1, which made ORMSelectCompileState private. Cap
  sqlalchemy<2.1 in the provider; the workspace lock resolves back to
  SQLAlchemy 2.0.54. Removing the cap is tracked in #75118.
- airflow-core: type the dag_display_name and duration hybrid expressions
  against the class (type[...] -> ColumnElement) and fix _get_dialect's
  return type, so mypy holds on SQLAlchemy 2.0 and 2.1.
- common.ai: declare the OpenAI Decisions and System One vendors added in
  pydantic-ai 2.53/2.55; reject sqlglot >= 30.22's exp.ListStage
  (Snowflake LIST/LS @stage) on the allow_writes path; adapt tests to
  pydantic-ai's streamed Anthropic requests and new request counting, and
  to sqlglot's MySQL "--+" tokenization.

Generated-by: Claude Opus 5
#75078 dropped the type: ignores in this expression, which only held
while mypy did not check the body; typing cls as type[Backfill] keeps it
clean on SQLAlchemy 2.0 and 2.1, as dag_display_name and
DagRun.duration already are. Also annotate the Anthropic stream fixture
so mypy can index its events.

Generated-by: Claude Opus 5
@Lee-W
Lee-W merged commit 0a4b5d8 into main Oct 20, 2026
279 checks passed
@Lee-W
Lee-W deleted the ci-upgrade-main branch October 20, 2026 07:26
potiuk added a commit that referenced this pull request Oct 20, 2026
…#75231)

* [v3-4-test] Make airflow-core typing hold for SQLAlchemy 2.0 and 2.1 (#74629)

SQLAlchemy 2.1 turns Select/Row/Result into TypeVarTuple generics, so
`Select[tuple[X]]` now means a one-column select of a tuple, and rows
unpack to the real (possibly nullable) column types instead of Any.

No parameterised `Select` spelling is valid on both versions, so helpers
that only refine a select they receive are generic over it, and helpers
that build their own select return an unparameterised `Select`. Nullable
columns are narrowed with `is None` checks rather than cast; the pool and
asset-event queries already exclude NULL there, while get_authorized_pools
now skips pools whose name is NULL. The 12-column task instance row, beyond
SQLAlchemy's typed select() overloads, is unpacked into locals declared
with their column types.

Type-checks with mypy on both SQLAlchemy 2.0.54 and 2.1.4.

(cherry picked from commit 675b02a)
Generated-by: Claude Opus 5

* [v3-4-test] Cap SQLAlchemy below 2.1 and type models for 2.0 and 2.1

The v3-4-test lock resolved SQLAlchemy 2.1.4, which snowflake-sqlalchemy cannot import and which broke mypy in the CI image. This ports the parts of #73822 that main uses for the same upgrade: the snowflake provider cap that keeps the workspace lock on SQLAlchemy 2.0.54, and the hybrid-expression typing in DagRun, DagModel and Backfill that holds on both versions.

Generated-by: Claude Opus 5

---------

Co-authored-by: Dev-iL <[email protected]>
vatsrahul1001 pushed a commit that referenced this pull request Oct 20, 2026
…#75231)

* [v3-4-test] Make airflow-core typing hold for SQLAlchemy 2.0 and 2.1 (#74629)

SQLAlchemy 2.1 turns Select/Row/Result into TypeVarTuple generics, so
`Select[tuple[X]]` now means a one-column select of a tuple, and rows
unpack to the real (possibly nullable) column types instead of Any.

No parameterised `Select` spelling is valid on both versions, so helpers
that only refine a select they receive are generic over it, and helpers
that build their own select return an unparameterised `Select`. Nullable
columns are narrowed with `is None` checks rather than cast; the pool and
asset-event queries already exclude NULL there, while get_authorized_pools
now skips pools whose name is NULL. The 12-column task instance row, beyond
SQLAlchemy's typed select() overloads, is unpacked into locals declared
with their column types.

Type-checks with mypy on both SQLAlchemy 2.0.54 and 2.1.4.

(cherry picked from commit 675b02a)
Generated-by: Claude Opus 5

* [v3-4-test] Cap SQLAlchemy below 2.1 and type models for 2.0 and 2.1

The v3-4-test lock resolved SQLAlchemy 2.1.4, which snowflake-sqlalchemy cannot import and which broke mypy in the CI image. This ports the parts of #73822 that main uses for the same upgrade: the snowflake provider cap that keeps the workspace lock on SQLAlchemy 2.0.54, and the hybrid-expression typing in DagRun, DagModel and Backfill that holds on both versions.

Generated-by: Claude Opus 5

---------

Co-authored-by: Dev-iL <[email protected]>
@shahar1 shahar1 mentioned this pull request Oct 20, 2026
6 of 7 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants