Skip to content

[v3-1-test] Fix test infrastructure for Python-version-excluded providers (#63793)#63834

Closed
github-actions[bot] wants to merge 85 commits into
v3-1-testfrom
backport-48ec002-v3-1-test
Closed

[v3-1-test] Fix test infrastructure for Python-version-excluded providers (#63793)#63834
github-actions[bot] wants to merge 85 commits into
v3-1-testfrom
backport-48ec002-v3-1-test

Conversation

@github-actions

Copy link
Copy Markdown
Contributor
  • Skip provider tests when all test directories are excluded

When running Providers[google] or Providers[amazon] on Python 3.14,
generate_args_for_pytest removes the test folders for excluded
providers, but the skip check in _run_test only triggered when the
--ignore filter itself removed something. Since the folders were
already removed upstream, the guard condition was never met, leaving
pytest with only flags and no test directories — causing it to crash
on unrecognized custom arguments.

Remove the overly strict guard so the skip fires whenever no test
directories remain in the args.

  • Fix PROD image docker tests for Python-version-excluded providers

The docker tests expected all providers from prod_image_installed_providers.txt
to be present, but providers like google and amazon declare
excluded-python-versions in their provider.yaml. On Python 3.14, these
providers are correctly excluded from the PROD image at build time, but
the tests didn't account for this.

Read provider.yaml exclusions and filter expected providers/imports based
on the Docker image's Python version.

  • Skip Python-incompatible provider wheels during PROD image build

get_distribution_specs.py now reads Requires-Python metadata from each
wheel and skips wheels that are incompatible with the running
interpreter. This prevents excluded providers (e.g. amazon on 3.14)
from being passed to pip/uv and installed despite their exclusion.

Also fix the requires-python specifier generation in packages.py:
!=3.14 per PEP 440 only excludes 3.14.0, not 3.14.2. Use !=3.14.*
wildcard to exclude the entire minor version.
(cherry picked from commit 48ec002)

Co-authored-by: Dev-iL 6509619+Dev-iL@users.noreply.github.com

Dev-iL and others added 30 commits March 10, 2026 17:09
…#59801) (#62979)

Cherry-picked from 3428dc9 with conflict resolution:
- context.py: Added `import inspect` (skip `import functools` as `from functools import cache` already exists)
- supervisor.py: Adopted early-return pattern and explicit `del` for GC, kept simpler env var handling (no `_AIRFLOW_PROCESS_CONTEXT` which doesn't exist in v3-1-test)
- test_supervisor.py: Replaced `@pytest.mark.xfail` workaround with proper `use_real_secrets_backends` fixture

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
…ctory with 3 updates (#62968)

Bumps the core-ui-package-updates group with 1 update in the /airflow-core/src/airflow/api_fastapi/auth/managers/simple/ui directory: [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin).


Updates `@typescript-eslint/eslint-plugin` from 8.50.0 to 8.56.1
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.56.1/packages/eslint-plugin)

Updates `@typescript-eslint/parser` from 8.50.0 to 8.56.1
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.56.1/packages/parser)

Updates `ts-morph` from 23.0.0 to 27.0.2
- [Release notes](https://github.com/dsherret/ts-morph/releases)
- [Commits](dsherret/ts-morph@23.0.0...27.0.2)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/eslint-plugin"
  dependency-version: 8.56.1
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: core-ui-package-updates
- dependency-name: "@typescript-eslint/parser"
  dependency-version: 8.56.1
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: core-ui-package-updates
- dependency-name: ts-morph
  dependency-version: 27.0.2
  dependency-type: direct:development
  update-type: version-update:semver-major
  dependency-group: core-ui-package-updates
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…torical retry attempts (#62475) (#63000)

* fix: gracefully handle 404 from worker log server for historical retry attempts
(cherry picked from commit 25e9284)

Co-authored-by: Pradeep Kalluri <128097794+kalluripradeep@users.noreply.github.com>
…PR template (#63006) (#63012)

The CI workflow added in #62975 validates that newsfragment filenames use
the PR number, so allowing issue numbers would cause false CI failures.
Align the PR template with the contributing docs and the new validation.
(cherry picked from commit 41969f4)

Co-authored-by: Xiaodong DENG <xddeng@apache.org>
* [v3-1-test] CI: Upgrade important CI environment (#62989)
(cherry picked from commit 60b52b7)

Co-authored-by: Jarek Potiuk <jarek@potiuk.com>

* Fix rebase

---------

Co-authored-by: Jarek Potiuk <jarek@potiuk.com>
…lStack config (#62980) (#62993)

(cherry picked from commit 6722c4b)

Co-authored-by: Jason(Zhe-You) Liu <68415893+jason810496@users.noreply.github.com>
… installation (#63051) (#63057)

When building PROD from docker-context-files - i.e. when we run main
build with providers built from sources, we should fall back to
no constraints build when there is a conflict with constraints.

This is a follow up after #62378
(cherry picked from commit fef2e62)

Co-authored-by: Jarek Potiuk <jarek@potiuk.com>
* Remove global from FastAPI app.py

* Remove global from FastAPI app.py

Co-authored-by: Jens Scheffler <95105677+jscheffl@users.noreply.github.com>
Bumps [actions/setup-java](https://github.com/actions/setup-java) from 4.7.1 to 5.2.0.
- [Release notes](https://github.com/actions/setup-java/releases)
- [Commits](actions/setup-java@c5195ef...be666c2)

---
updated-dependencies:
- dependency-name: actions/setup-java
  dependency-version: 5.2.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [actions/stale](https://github.com/actions/stale) from 9.1.0 to 10.2.0.
- [Release notes](https://github.com/actions/stale/releases)
- [Changelog](https://github.com/actions/stale/blob/main/CHANGELOG.md)
- [Commits](actions/stale@5bef64f...b5d41d4)

---
updated-dependencies:
- dependency-name: actions/stale
  dependency-version: 10.2.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [actions/checkout](https://github.com/actions/checkout) from 4.2.2 to 6.0.2.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](actions/checkout@11bd719...de0fac2)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: 6.0.2
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [actions/setup-python](https://github.com/actions/setup-python) from 5.6.0 to 6.2.0.
- [Release notes](https://github.com/actions/setup-python/releases)
- [Commits](actions/setup-python@a26af69...a309ff8)

---
updated-dependencies:
- dependency-name: actions/setup-python
  dependency-version: 6.2.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [actions/github-script](https://github.com/actions/github-script) from 7.0.1 to 8.0.0.
- [Release notes](https://github.com/actions/github-script/releases)
- [Commits](actions/github-script@60a0d83...ed59741)

---
updated-dependencies:
- dependency-name: actions/github-script
  dependency-version: 8.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…62889) (#63007)

* Ignore major npm dependabot upgrades

* Move major versions to different group
(cherry picked from commit a2e3613)

Co-authored-by: Brent Bovenzi <brent@astronomer.io>
…y with 2 updates (#63069)

Bumps the core-ui-package-updates group with 2 updates in the /airflow-core/src/airflow/api_fastapi/auth/managers/simple/ui directory: [@chakra-ui/react](https://github.com/chakra-ui/chakra-ui/tree/HEAD/packages/react) and [happy-dom](https://github.com/capricorn86/happy-dom).

Updates `@chakra-ui/react` from 3.33.0 to 3.34.0
- [Release notes](https://github.com/chakra-ui/chakra-ui/releases)
- [Changelog](https://github.com/chakra-ui/chakra-ui/blob/main/packages/react/CHANGELOG.md)
- [Commits](https://github.com/chakra-ui/chakra-ui/commits/@chakra-ui/react@3.34.0/packages/react)

Updates `happy-dom` from 20.7.0 to 20.8.3
- [Release notes](https://github.com/capricorn86/happy-dom/releases)
- [Commits](capricorn86/happy-dom@v20.7.0...v20.8.3)

---
updated-dependencies:
- dependency-name: "@chakra-ui/react"
  dependency-version: 3.34.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: core-ui-package-updates
- dependency-name: happy-dom
  dependency-version: 20.8.3
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: core-ui-package-updates
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4.6.2 to 7.0.0.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](actions/upload-artifact@ea165f8...bbbca2d)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-version: 7.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [actions/setup-go](https://github.com/actions/setup-go) from 5.5.0 to 6.3.0.
- [Release notes](https://github.com/actions/setup-go/releases)
- [Commits](actions/setup-go@d35c59a...4b73464)

---
updated-dependencies:
- dependency-name: actions/setup-go
  dependency-version: 6.3.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [aws-actions/configure-aws-credentials](https://github.com/aws-actions/configure-aws-credentials) from 4.0.1 to 6.0.0.
- [Release notes](https://github.com/aws-actions/configure-aws-credentials/releases)
- [Changelog](https://github.com/aws-actions/configure-aws-credentials/blob/main/CHANGELOG.md)
- [Commits](aws-actions/configure-aws-credentials@010d0da...8df5847)

---
updated-dependencies:
- dependency-name: aws-actions/configure-aws-credentials
  dependency-version: 6.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [actions/setup-node](https://github.com/actions/setup-node) from 4.4.0 to 6.3.0.
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](actions/setup-node@49933ea...53b8394)

---
updated-dependencies:
- dependency-name: actions/setup-node
  dependency-version: 6.3.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…63133) (#63138)

Bumps [actions/setup-go](https://github.com/actions/setup-go) from 5.5.0 to 6.3.0.
- [Release notes](https://github.com/actions/setup-go/releases)
- [Commits](actions/setup-go@d35c59a...4b73464)
(cherry picked from commit 274c2b0)



---
updated-dependencies:
- dependency-name: actions/setup-go
  dependency-version: 6.3.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
… 8.0.0 (#63065) (#63145)

Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 4.3.0 to 8.0.0.
- [Release notes](https://github.com/actions/download-artifact/releases)
- [Commits](actions/download-artifact@d3f86a1...70fc10c)
(cherry picked from commit 2f4646c)



---
updated-dependencies:
- dependency-name: actions/download-artifact
  dependency-version: 8.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…3157)

Bumps the github-actions-updates group with 2 updates: [pnpm/action-setup](https://github.com/pnpm/action-setup) and [slackapi/slack-github-action](https://github.com/slackapi/slack-github-action).


Updates `pnpm/action-setup` from 4.0.0 to 4.2.0
- [Release notes](https://github.com/pnpm/action-setup/releases)
- [Commits](pnpm/action-setup@fe02b34...41ff726)

Updates `slackapi/slack-github-action` from 2.0.0 to 2.1.1
- [Release notes](https://github.com/slackapi/slack-github-action/releases)
- [Commits](slackapi/slack-github-action@485a9d4...91efab1)

---
updated-dependencies:
- dependency-name: pnpm/action-setup
  dependency-version: 4.2.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: github-actions-updates
- dependency-name: slackapi/slack-github-action
  dependency-version: 2.1.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: github-actions-updates
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…duce data fetched per task instance (#62482) (#62996)

* perf: use load_only() in eager_load_dag_run_for_validation to reduce data fetched

The get_dag_runs API endpoint was slow on large deployments because
eager_load_dag_run_for_validation() used selectinload on task_instances and
task_instances_histories without restricting which columns were fetched.
This caused SQLAlchemy to load all heavyweight columns (executor_config with
pickled data, hostname, rendered fields, etc.) for every task instance across
every DAG run in the result page — even though only dag_version_id is needed
to traverse the association proxy to DagVersion.

Add load_only(TaskInstance.dag_version_id) and
load_only(TaskInstanceHistory.dag_version_id) to the selectinload chains so
the SELECT for task instances fetches only the identity columns and the FK
needed to resolve the dag_version relationship, significantly reducing the
volume of data transferred from the database on busy deployments.

Fixes #62025

* Fix static checks

---------
(cherry picked from commit 13af96b)

Co-authored-by: Lakshmi Sravya <38032391+LakshmiSravyaVedantham@users.noreply.github.com>
Co-authored-by: pierrejeambrun <pierrejbrun@gmail.com>
This PR addresses a significant performance issue in the /ui/dags endpoint
where page load times scaled poorly with the number of DAGs (12-16 seconds
for just 25 DAGs in our testing).

Two optimizations are implemented:

1. Cache URLSafeSerializer for file_token generation
   - Previously, a new URLSafeSerializer was instantiated and
     conf.get_mandatory_value() was called for every DAG
   - Now uses @lru_cache to create the serializer once and reuse it

2. Eliminate redundant Pydantic validation in response construction
   - The original pattern used model_validate -> model_dump -> model_validate
     which caused triple serialization overhead per DAG
   - Now validates once with DAGResponse.model_validate(), then uses
     model_construct() to build DAGWithLatestDagRunsResponse

Together, these changes reduced page load time from 12-16 seconds to
~130ms in our dev environment.


(cherry picked from commit a915216)

Co-authored-by: john-rodriguez-mgni <107643943+john-rodriguez-mgni@users.noreply.github.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
(cherry picked from commit 0a985ea)

Co-authored-by: Elad Kalif <45845474+eladkal@users.noreply.github.com>
…y with 2 updates (#63153)

Bumps the core-ui-package-updates group with 1 update in the /airflow-core/src/airflow/api_fastapi/auth/managers/simple/ui directory: [@chakra-ui/react](https://github.com/chakra-ui/chakra-ui/tree/HEAD/packages/react).


Updates `@chakra-ui/react` from 3.33.0 to 3.34.0
- [Release notes](https://github.com/chakra-ui/chakra-ui/releases)
- [Changelog](https://github.com/chakra-ui/chakra-ui/blob/main/packages/react/CHANGELOG.md)
- [Commits](https://github.com/chakra-ui/chakra-ui/commits/@chakra-ui/react@3.34.0/packages/react)

Updates `happy-dom` from 20.7.0 to 20.8.3
- [Release notes](https://github.com/capricorn86/happy-dom/releases)
- [Commits](capricorn86/happy-dom@v20.7.0...v20.8.3)

---
updated-dependencies:
- dependency-name: "@chakra-ui/react"
  dependency-version: 3.34.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: core-ui-package-updates
- dependency-name: happy-dom
  dependency-version: 20.8.3
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: core-ui-package-updates
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…redoc fixes it) (#63202) (#63203)

(cherry picked from commit b528e50)

Co-authored-by: Jarek Potiuk <jarek@potiuk.com>
FAB FastAPI routes call get_application_builder() on every request,
which creates a new Flask app and invokes init_app(). Concurrent calls
race on the singleton auth_manager's appbuilder and security_manager,
causing KeyError: 'AUTH_USER_REGISTRATION' and AttributeError.

Add _init_app_lock around the critical section in init_app() that
mutates the singleton auth_manager state and registers views, so
concurrent get_application_builder() calls are serialized.

Co-authored-by: Young-Ki Kim <kimyoungi99@naver.com>
github-actions Bot and others added 22 commits March 15, 2026 14:48
…ve() in templater (#63306) (#63633)

pathlib.Path objects have a resolve() method for filesystem resolution
(strict parameter), which conflicts with the Resolvable.resolve(context)
protocol used by the templater. When a pathlib.Path subclass is passed as
a templated field value, the templater incorrectly calls
path.resolve(context), where the context dict is interpreted as
strict=True, causing FileNotFoundError if the path doesn't exist.

This adds an isinstance(value, os.PathLike) guard before calling
resolve() to ensure pathlib.Path objects are returned as-is.
(cherry picked from commit 23dec8d)


Closes: #55412

Co-authored-by: Yoann <60654707+YoannAbriel@users.noreply.github.com>
…module (#63607) (#63642)

- Add `.claude/` to EXCLUDED_PREFIXES so pyproject.toml discovery
  skips `.claude/worktrees/` directories
- Add `.claude` to _CLEANUP_SKIP_DIRS so IML cleanup ignores it
- Add `scripts` to STATIC_MODULES for the scripts distribution
(cherry picked from commit 0e11c84)
(cherry picked from commit 30895ff)

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
#63632) (#63644)

* Add --confirm and --open-ide flags to setup_idea.py

- --confirm now auto-answers yes to all prompts (IDE close, process
  kill, file overwrite) instead of only the IDE close prompt
- --open-ide opens IntelliJ IDEA or PyCharm in the project directory
  after setup completes, supporting macOS (open -a) and Linux
  (Toolbox scripts and PATH lookup)

* Add AGENTS.md for IDE setup with --confirm and --open-ide usage

* Update setup_idea docs with --confirm and --open-ide descriptions
(cherry picked from commit e4dbc55)
…3645)

IntelliJ IDEA .iml files could end up in sdist/wheel packages when
building distributions that lack their own .gitignore. Adding *.iml
to every distribution's .gitignore ensures these IDE metadata files
are excluded from built packages.
(cherry picked from commit 444d45c)
…ies (#63630) (#63646)

* Warn instead of failing on missing 3rd-party doc inventories

Third-party Sphinx intersphinx inventories (e.g., Pandas) are sometimes
temporarily unavailable. Previously, any download failure terminated the
entire doc build. Now missing 3rd-party inventories produce warnings and
fall back to cached versions when available. A marker file is written for
CI to detect missing inventories and send Slack notifications on canary
builds. Publishing workflows fail by default but can opt out.

- Add --fail-on-missing-third-party-inventories flag (default: off)
- Add --clean-inventory-cache flag (--clean-build no longer deletes cache)
- Cache inventories via stash action in CI and publish workflows
- Send Slack warning on canary builds when inventories are missing

* Add documentation for inventory cache handling options

Document the new --clean-inventory-cache, --fail-on-missing-third-party-inventories,
and --ignore-missing-inventories flags in the contributing docs, Breeze developer
tasks, and release management docs.

* Skip missing third-party inventories in intersphinx mapping

When a third-party inventory file doesn't exist in the cache,
skip it from the Sphinx intersphinx_mapping instead of referencing
a non-existent file. This prevents Sphinx build errors when
third-party inventory downloads fail.
(cherry picked from commit afda438)
… files (#63647) (#63668)

Adds a pre-commit check that verifies every distribution directory
(containing pyproject.toml) has a .gitignore file with a *.iml entry,
preventing IntelliJ IDEA module files from being committed.
(cherry picked from commit 0355644)

Co-authored-by: Jarek Potiuk <jarek@potiuk.com>
…e job (#63666) (#63669)

(cherry picked from commit 7e04b97)

Co-authored-by: Jens Scheffler <95105677+jscheffl@users.noreply.github.com>
…start for new contributors (#63435) (#63441)

(cherry picked from commit 76ef7c4)


Made-with: Cursor

Co-authored-by: Pranay Kumar Karvi <pranaykarvi@gmail.com>
…e job, 2nd attempt (#63670) (#63678)

(cherry picked from commit 5640d54)
…63674)

The test expected SQL without ::UUID type cast for team_id, but
SQLAlchemy v2 generates %(team_id)s::UUID on Postgres. The uuid_suffix
variable was already defined for this purpose but not used.

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
… test expectations (#63680)

- Add missing .gitignore files with *.iml entries for distributions that
  were missed during cherry-pick or over-removed by #63648
- Replace broken :ref: cross-references to GCP provider docs with direct
  URLs since those labels aren't available in core-only docs builds
- Add ::UUID suffix to Postgres expected SQL in exception handler tests
  since v3-1-test uses team_id (UUID) instead of team_name (string)

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…ate tracking (#63676) (#63686)

Slack notifications for CI failures and missing doc inventories were
posted on every failing run regardless of whether the failure was
already reported. This adds per-branch state tracking via GitHub
Actions artifacts so notifications are only sent when the set of
failures changes or 24 hours pass (as a "still not fixed" reminder).
Recovery notifications are posted when a previously-failing run passes.
(cherry picked from commit 60e4393)
…63688)

(cherry picked from commit 8dd6a5b)

Co-authored-by: Justin Pakzad <114518232+justinpakzad@users.noreply.github.com>
…ls (#63684) (#63685)

Previously, a missing or corrupted cache tarball would hard-fail the
entire static checks job even when stash-hit reported true. Now the
extraction is wrapped in error handling: if the tarball is missing or
tar fails, it gracefully falls through to a clean prek install-hooks
instead of aborting.
(cherry picked from commit 20486bb)

Co-authored-by: Jarek Potiuk <jarek@potiuk.com>
(cherry picked from commit 0f43a55)

Co-authored-by: Kunal Bhattacharya <kunal.bhattacharya@pepsico.com>
…asename (#63141) (#63453)

* [v3-1-test] Fix regression in security iframe navigation logic with basename (#63141)

* Fix regression in security iframe navigation logic with basename

* style: apply formatting to Security.tsx

* fix(ui): remove hardcoded localhost fallback from Security iframe navigation

* Add newsfragment for security iframe basename fix

* Address review feedback: simplify security iframe navigation logic and handle basename
(cherry picked from commit 8653aa8)

Co-authored-by: Subham <subhamsangwan26@gmail.com>

* Delete airflow-core/newsfragments/63141.bugfix.rst

---------

Co-authored-by: Subham <subhamsangwan26@gmail.com>
Co-authored-by: Jens Scheffler <95105677+jscheffl@users.noreply.github.com>
Co-authored-by: Jarek Potiuk <jarek@potiuk.com>
Co-authored-by: Pierre Jeambrun <pierrejbrun@gmail.com>
…e objects (#62656) (#63721)

* Fix structlog JSON serialization crash on non-serializable objects

Wrap the enc_hook in json_dumps() with a safe_default() fallback that
catches TypeError and falls back to str(). This prevents the logging
pipeline from crashing when log event dicts contain objects that
msgspec cannot serialize.

Closes: #62472
Closes: #62201



* Address review: hoist safe_default into factory, add tests

- Move the inline safe_default closure out of json_dumps into a
  module-level _make_safe_enc_hook factory function to avoid
  recreating it on every JSON log line.
- Add test for the actual crash scenario: an object whose
  __structlog__() raises TypeError now falls back to str() instead
  of crashing the logger.
- Add regression test confirming normal custom objects still
  serialize via repr() through the standard enc_hook path.
- Add unit test for the default=None edge case in _make_safe_enc_hook.

* Handle UnicodeEncodeError in structlog JSON serialization

Broaden exception handling to catch ValueError (including
UnicodeEncodeError) in the enc_hook, and add a fallback around
msgspec.json.encode() to replace surrogate characters that can't
be encoded to UTF-8 JSON.

---------
(cherry picked from commit 0b43077)

Co-authored-by: deepinsight coder <32898216+Vamsi-klu@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
…ders (#63793)

* Skip provider tests when all test directories are excluded

When running Providers[google] or Providers[amazon] on Python 3.14,
generate_args_for_pytest removes the test folders for excluded
providers, but the skip check in _run_test only triggered when the
--ignore filter itself removed something. Since the folders were
already removed upstream, the guard condition was never met, leaving
pytest with only flags and no test directories — causing it to crash
on unrecognized custom arguments.

Remove the overly strict guard so the skip fires whenever no test
directories remain in the args.

* Fix PROD image docker tests for Python-version-excluded providers

The docker tests expected all providers from prod_image_installed_providers.txt
to be present, but providers like google and amazon declare
excluded-python-versions in their provider.yaml. On Python 3.14, these
providers are correctly excluded from the PROD image at build time, but
the tests didn't account for this.

Read provider.yaml exclusions and filter expected providers/imports based
on the Docker image's Python version.

* Skip Python-incompatible provider wheels during PROD image build

get_distribution_specs.py now reads Requires-Python metadata from each
wheel and skips wheels that are incompatible with the running
interpreter. This prevents excluded providers (e.g. amazon on 3.14)
from being passed to pip/uv and installed despite their exclusion.

Also fix the requires-python specifier generation in packages.py:
!=3.14 per PEP 440 only excludes 3.14.0, not 3.14.2. Use !=3.14.*
wildcard to exclude the entire minor version.
(cherry picked from commit 48ec002)

Co-authored-by: Dev-iL <6509619+Dev-iL@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.