You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airflow.apache.org by po...@apache.org on 2026/08/05 02:22:58 UTC

(airflow) branch v3-3-test updated: [v3-3-test] Allow opentelemetry-exporter-prometheus pre-release in candidate constraints resolution (#71110) (#71132)

This is an automated email from the ASF dual-hosted git repository.

potiuk pushed a commit to branch v3-3-test
in repository https://gitbox.apache.org/repos/asf/airflow.git


The following commit(s) were added to refs/heads/v3-3-test by this push:
     new 2ebec52f632 [v3-3-test] Allow opentelemetry-exporter-prometheus pre-release in candidate constraints resolution (#71110) (#71132)
2ebec52f632 is described below

commit 2ebec52f6329017b471f3aa8261a1ae2642fe388
Author: github-actions[bot] <41...@users.noreply.github.com>
AuthorDate: Wed Aug 5 04:22:51 2026 +0200

    [v3-3-test] Allow opentelemetry-exporter-prometheus pre-release in candidate constraints resolution (#71110) (#71132)
    
    Follow-up to #71040. airflow-core requires `opentelemetry-exporter-prometheus>=0.47b0`,
    a package that only ever ships betas (released constraints already pin e.g. `==0.65b0`).
    The candidate constraints resolution runs `uv pip install ... --prerelease explicit`, which
    permits a pre-release only for a package some requirement marks as such and drops the
    if-necessary fallback, so with no explicit mark it fails with 'No solution found'.
    
    Add it to `additional_constraints_for_highest_resolution` (the build-side list the failure
    message points at) rather than the provider-only pre-release list, so it is an always-allowed
    pre-release across every resolution, matching how it already ships.
    (cherry picked from commit b23fa6b7a950b7e0982d4649f3a7ecbdd0c87ebb)
    
    Co-authored-by: Rahul Vats <43...@users.noreply.github.com>
---
 scripts/in_container/run_generate_constraints.py | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/scripts/in_container/run_generate_constraints.py b/scripts/in_container/run_generate_constraints.py
index 1089739c4be..ba23a0042b0 100755
--- a/scripts/in_container/run_generate_constraints.py
+++ b/scripts/in_container/run_generate_constraints.py
@@ -530,9 +530,17 @@ def generate_constraints_pypi_providers(config_params: ConfigParams) -> None:
     #   resolver might choose to downgrade gremlinpython to an older version,
     #   which in turn might downgrade tinkerpop provider. Having gremlinpython>=3.8.0 ensures
     #   that the resolver will not downgrade the provider.
+    # * opentelemetry-exporter-prometheus>=0.47b0 — this package only ever publishes beta versions
+    #   (airflow-core requires ``>=0.47b0`` and released constraints already pin a beta, e.g.
+    #   ``==0.65b0``). For a release candidate the resolution runs with ``--prerelease explicit``,
+    #   which permits a pre-release only for a package some requirement marks as such and drops the
+    #   if-necessary fallback; without this entry the package cannot resolve and generation fails
+    #   with "No solution found". Keeping it here (rather than the provider pre-release list) marks
+    #   it as an always-allowed pre-release across every resolution, matching how it already ships.
     additional_constraints_for_highest_resolution: list[str] = [
         "pyarrow>=22.0.0; python_version >= '3.14'",
         "gremlinpython>=3.8.0",
+        "opentelemetry-exporter-prometheus>=0.47b0",
     ]
 
     # Constraints cut for a release candidate have to pin the candidates themselves - the providers