Yes. As of last week you can do `--use-airflow-version <PR_NUMBER>` in case
anyone missed it :). Thank Lue Zhe You for this QOL improvement again :).

│ --use-airflow-version                                           Use
(reinstall at entry) Airflow version from PyPI. It can also be version (to
install from PyPI), `none`, `wheel`, or `sdist` to install from `dist`
folder, `owner/repo:branch` to install from GitHub repo, or a
  │
│
  PR number (e.g., `57219`) to install from a pull request. Uses
--mount-sources `remove` if not specified, but `providers-and-tests` or
`tests` can be specified for `--mount-sources` when `--use-airflow-version`
  │
│
  is used.

On Wed, Nov 5, 2025 at 11:15 AM Jarek Potiuk <[email protected]> wrote:

> As a small pointer - the logic is implemented here:
> https://github.com/apache/airflow/blob/main/scripts/in_container/install_airflow_and_providers.py
> :
>
> It also handles installing airflow from git url and pr # (added recently
> by Liu Zhe You) and compiles assets in case we install from those. It has
> now a good 1000+ lines of code to handle all cases :D :D.
>
> Good luck :)
>
> J.
>
>
> On Wed, Nov 5, 2025 at 11:08 AM Jarek Potiuk <[email protected]> wrote:
>
>> BTW. We probably (and feel free :) could make it work when I think of it.
>> currently --use-installation-from-dist works in two steps:.
>>
>> a) installs specified airflow (or airflow from dist if found in dist) in
>> a single operation without constraints
>>
>> b) installs all other distributions without constraints
>>
>>
>> We could probably make it three step and handle this edge case by
>> installing airflow separately (with constraints) then providers and all
>> other things
>>
>> I will leave it as exercise for the readers though - the logic there is
>> already very complex and handles quite a few other cases and this one might
>> break some of them. :)
>>
>> śr., 5 lis 2025, 10:57 użytkownik Jarek Potiuk <[email protected]>
>> napisał:
>>
>>> The problem is `--use-distributions-from-dist`. The
>>> `--use-airflow-version` and --use-distributions-from-dist does not use the
>>> `--use-airflow-version` constraints because it will then limit whatever is
>>> instlalled from dist (constraints from 3.1.1 have older version of edge
>>> provider and if you try to install new edge provider from "dist" and
>>> constraints pointing to the 3.1.1 provider they will conflict.
>>>
>>> This is our classic installation pattern where you install airflow +
>>> whatever was released with constraints and **then** in a separate step you
>>> install any updates. Using both constraints and something that deviates
>>> from them in the same command is not going to work.
>>>
>>> So the right way of installing the provider for old versions is:
>>>
>>> * breeze start-airflow --use-airflow-version 3.1.1 -> uses constraints
>>> * install new provider in terminal inside
>>> * restart the components in other tmux terminals
>>>
>>> The --use-distributions-from-dist also works but by the fact that we
>>> want to install all the distributions together (including one that deviates
>>> from original constraints) - we cannot use constraints for it.
>>>
>>> J.
>>>
>>>
>>>
>>> On Tue, Nov 4, 2025 at 11:09 PM Jens Scheffler <[email protected]>
>>> wrote:
>>>
>>>> Hi Jarek,
>>>>
>>>> what I actually did to be preceise:
>>>>
>>>> 1) Checked out to tag "providers-edge3/1.4.1rc2"
>>>>
>>>> 2) Build edge3 and docker on that tag (I need docker as well for an
>>>> extended test...) via
>>>> breeze release-management prepare-provider-distributions edge3 docker
>>>> --skip-tag-check
>>>>
>>>> 3) Checkout (latest) main to ensure we use feshest breeze
>>>>
>>>> 4) Start system via breeze using:
>>>> breeze start-airflow --python 3.12 --load-example-dags --backend
>>>> postgres --executor EdgeExecutor --answer y --use-airflow-version 3.
>>>> 1.1 --use-distributions-from-dist
>>>>
>>>> Re tested tonight again, results:
>>>>
>>>>   * 3.0.6 - OK
>>>>   * 3.1.0 - not compatible with edge3 1.4.1 :-D
>>>>   * 3.1.1 - fails in structlog
>>>>   * 3.1.2rc1 - OK
>>>>   * 3.1.2rc2 - OK
>>>>
>>>> Made no manual install. But as 3.1.2 is OK I am okay anyway.
>>>>
>>>> On 11/4/25 15:36, Jarek Potiuk wrote:
>>>> >> Don't know why I catched the "wrong" constraints" via installing with
>>>> > breeze - might be constraints are not considered when installed a
>>>> specific
>>>> > airflow version and then providers are upgraded?
>>>> >
>>>> > It could be that later when you upgraded some providers, this also get
>>>> > bumped or maybe some uv sync in the image happened. When I used
>>>> > `--use-airflow-version 3.1.1` and **then** installed just
>>>> > `apache-airflow-providers-edge3==1.4.1rc2` in breeze - everything
>>>> worked
>>>> > fine. It also can be you have some customisation scripts in breeze
>>>> that do
>>>> > some upgrades afterwards and you have not noticed.
>>>> >
>>>> > On Tue, Nov 4, 2025 at 3:34 PM Jarek Potiuk<[email protected]> wrote:
>>>> >
>>>> >> It's actually already fixed in main and cherry-picked to 3.1.2 - >
>>>> so in
>>>> >> 3.1.2 it's OK to have structlog 25.5.0. See
>>>> >> https://github.com/apache/airflow/pull/57335 and it's been
>>>> cherry-picked
>>>> >> and merged as part ofhttps://github.com/apache/airflow/pull/57640
>>>> >>
>>>> >> J,
>>>> >>
>>>> >>
>>>> >> On Tue, Nov 4, 2025 at 3:04 PM Scheffler Jens (XC-AS/EAE-ADA-T) via
>>>> dev <
>>>> >> [email protected]> wrote:
>>>> >>
>>>> >>> Hi Amough,
>>>> >>>
>>>> >>> you are right but constraints in Airflow 3.1.2rc[1|2] both pin
>>>> >>> structlog==25.5.0
>>>> >>> see
>>>> >>>
>>>> https://raw.githubusercontent.com/apache/airflow/constraints-3.1.2rc2/constraints-3.10.txt
>>>> >>>
>>>> >>> So wanted to raise this if not detected that we need to fix
>>>> constraints
>>>> >>> before releasing 3.1.2 as well.
>>>> >>> Don't know why I catched the "wrong" constraints" via installing
>>>> with
>>>> >>> breeze - might be constraints are not considered when installed a
>>>> specific
>>>> >>> airflow version and then providers are upgraded?
>>>> >>>
>>>> >>> Jens
>>>> >>>
>>>> >>> -----Original Message-----
>>>> >>> From: Amogh Desai<[email protected]>
>>>> >>> Sent: Dienstag, 4. November 2025 10:07
>>>> >>> To:[email protected]
>>>> >>> Subject: Re: [VOTE] Airflow Providers prepared on November 03, 2025
>>>> >>>
>>>> >>> Jens, we have constrained structlog to disallow 25.5.0:
>>>> >>>
>>>> >>>
>>>> https://raw.githubusercontent.com/apache/airflow/constraints-3.1.0/constraints-3.10.txt
>>>> >>>
>>>> >>> So, that should not be a problem for you :), maybe it was installed
>>>> in
>>>> >>> your environment.
>>>> >>>
>>>> >>> Thanks & Regards,
>>>> >>> Amogh Desai
>>>> >>>
>>>> >>>
>>>> >>> On Tue, Nov 4, 2025 at 3:59 AM Jens Scheffler<[email protected]>
>>>> >>> wrote:
>>>> >>>
>>>> >>>> +1 (binding) - Checked SVN, Check in Docker, Reproducible package
>>>> >>>> +build,
>>>> >>>> Licenses, Signatures
>>>> >>>>
>>>> >>>> Installed the edge provider with current common-compat in Airflow
>>>> >>>> 2.11.0, 3.0.6, 3.1.2rc1 and main and tested with EdgeExecutor and
>>>> >>>> Integration Test Dag, all loking good.
>>>> >>>>
>>>> >>>> Will test detailled issue resolution (subpath etc) tomorrow but
>>>> until
>>>> >>>> now all good to release. Best release we had for Edge3 ever :-D
>>>> >>>>
>>>> >>>> Note: Was not able to install providers with Airflow 3.1.1 as
>>>> >>>> structlog==25.5.0 installed by breeze has some incompatability and
>>>> >>>> breze start failed with - assume this is not blocking providers
>>>> >>>> release - assume this is because constraints are installed from
>>>> main
>>>> >>>> and not 3.1.1 in breeze:
>>>> >>>>
>>>> >>>> Traceback (most recent call last):
>>>> >>>>     File "/usr/python/bin/airflow", line 4, in <module>
>>>> >>>>       from airflow.__main__ import main
>>>> >>>>     File
>>>> >>>> "/usr/python/lib/python3.12/site-packages/airflow/__init__.py",
>>>> >>>> line 79, in <module>
>>>> >>>>       settings.initialize()
>>>> >>>>     File
>>>> >>>> "/usr/python/lib/python3.12/site-packages/airflow/settings.py",
>>>> >>>> line 698, in initialize
>>>> >>>>       LOGGING_CLASS_PATH = configure_logging()
>>>> >>>>                            ^^^^^^^^^^^^^^^^^^^
>>>> >>>>     File
>>>> >>>>
>>>> "/usr/python/lib/python3.12/site-packages/airflow/logging_config.py",
>>>> >>>> line 88, in configure_logging
>>>> >>>>       from airflow._shared.logging import configure_logging,
>>>> >>>> init_log_folder, translate_config_values
>>>> >>>>     File
>>>> >>>>
>>>> "/usr/python/lib/python3.12/site-packages/airflow/_shared/logging/__in
>>>> >>>> it__.py",
>>>> >>>>
>>>> >>>> line 27, in <module>
>>>> >>>>       from .structlog import configure_logging, init_log_file,
>>>> >>>> init_log_folder
>>>> >>>>     File
>>>> >>>>
>>>> "/usr/python/lib/python3.12/site-packages/airflow/_shared/logging/stru
>>>> >>>> ctlog.py",
>>>> >>>>
>>>> >>>> line 38, in <module>
>>>> >>>>       from .percent_formatter import PercentFormatRender
>>>> >>>>     File
>>>> >>>>
>>>> "/usr/python/lib/python3.12/site-packages/airflow/_shared/logging/perc
>>>> >>>> ent_formatter.py",
>>>> >>>>
>>>> >>>> line 29, in <module>
>>>> >>>>       from structlog.dev import ConsoleRenderer, Styles
>>>> >>>> ImportError: cannot import name 'Styles' from 'structlog.dev'
>>>> >>>> (/usr/python/lib/python3.12/site-packages/structlog/dev.py)
>>>> >>>>
>>>> >>>> Error: check_environment returned 1. Exiting.
>>>> >>>>
>>>> >>>> Call that I used for testing: breeze start-airflow --python 3.12
>>>> >>>> --load-example-dags --backend postgres --executor EdgeExecutor
>>>> >>>> --answer y --use-airflow-version 3.1.1
>>>> --use-distributions-from-dist
>>>> >>>>
>>>> >>>> Tested also with Airflow 3.1.0 and saw as intended that edge3
>>>> provider
>>>> >>>> 1.4.1rc2 can not installed with Airflow 3.1.0 as UI plugin
>>>> incompatible.
>>>> >>>>
>>>> >>>> Using Python 3.12.12 environment at: /usr/python
>>>> >>>>     × No solution found when resolving dependencies:
>>>> >>>>     ╰─▶ Because only apache-airflow-providers-edge3==1.4.1 is
>>>> available
>>>> >>>> and apache-airflow-providers-edge3==1.4.1 depends on one of:
>>>> >>>>             apache-airflow>=2.10.0,<3.1.0
>>>> >>>>             apache-airflow>3.1.0
>>>> >>>>         we can conclude that all versions of
>>>> >>>> apache-airflow-providers-edge3 depend on one of:
>>>> >>>>             apache-airflow>=2.10.0,<3.1.0
>>>> >>>>             apache-airflow>3.1.0
>>>> >>>>
>>>> >>>>         And because you require apache-airflow==3.1.0 and
>>>> >>>> apache-airflow-providers-edge3, we can conclude that your
>>>> requirements
>>>> >>>> are unsatisfiable.
>>>> >>>>
>>>> >>>> On 11/3/25 13:06, Elad Kalif wrote:
>>>> >>>>> Hey all,
>>>> >>>>>
>>>> >>>>> I have just cut the ad-hoc wave Airflow Providers packages. This
>>>> >>>>> email is calling a vote on the release, which will last for 72
>>>> hours
>>>> >>>>> - which means that it will end on November 06, 2025 12:05 PM UTC
>>>> and
>>>> >>>>> until 3 binding +1 votes have been received.
>>>> >>>>>
>>>> >>>>> Consider this my (binding) +1.
>>>> >>>>>
>>>> >>>>> Airflow Providers are available at:
>>>> >>>>> https://di/
>>>> >>>>> st.apache.org
>>>> %2Frepos%2Fdist%2Fdev%2Fairflow%2Fproviders%2F&data=05%
>>>> >>>>> 7C02%7CJens.Scheffler%40de.bosch.com
>>>> %7Cf6343926cc624857a11208de1b819
>>>> >>>>>
>>>> e4d%7C0ae51e1907c84e4bbb6d648ee58410f4%7C0%7C0%7C638978440681481189%
>>>> >>>>>
>>>> 7CUnknown%7CTWFpbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIs
>>>> >>>>>
>>>> IlAiOiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C0%7C%7C%7C&sdata=
>>>> >>>>> u%2BGuEPt6aFORkaSjATUG2TVoDJiUJmNDiTM9Txe4cQc%3D&reserved=0
>>>> >>>>>
>>>> >>>>> *apache-airflow-providers-<PROVIDER>-*.tar.gz* are the binary
>>>> >>>>>    Python "sdist" release - they are also official "sources" for
>>>> the
>>>> >>>> Provider
>>>> >>>>> distributions.
>>>> >>>>>
>>>> >>>>> *apache_airflow_providers_<PROVIDER>-*.whl are the binary
>>>> >>>>>    Python "wheel" release.
>>>> >>>>>
>>>> >>>>> The test procedure for PMC members is described in
>>>> >>>>>
>>>> >>>> https://gith/
>>>> >>>> ub.com
>>>> %2Fapache%2Fairflow%2Fblob%2Fmain%2Fdev%2FREADME_RELEASE_PROVIDE
>>>> >>>>
>>>> RS.md%23verify-the-release-candidate-by-pmc-members&data=05%7C02%7CJen
>>>> >>>> s.Scheffler%40de.bosch.com
>>>> %7Cf6343926cc624857a11208de1b819e4d%7C0ae51e
>>>> >>>>
>>>> 1907c84e4bbb6d648ee58410f4%7C0%7C0%7C638978440681516854%7CUnknown%7CTW
>>>> >>>>
>>>> FpbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiIs
>>>> >>>>
>>>> IkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C0%7C%7C%7C&sdata=6sgJ88Z0t%2F1Qnhxr
>>>> >>>> wPTnej7SfgLNf6hI7qYxnJBl6RU%3D&reserved=0
>>>> >>>>> The test procedure for and Contributors who would like to test
>>>> this
>>>> >>>>> RC is described in:
>>>> >>>>>
>>>> >>>> https://gith/
>>>> >>>> ub.com
>>>> %2Fapache%2Fairflow%2Fblob%2Fmain%2Fdev%2FREADME_RELEASE_PROVIDE
>>>> >>>>
>>>> RS.md%23verify-the-release-candidate-by-contributors&data=05%7C02%7CJe
>>>> >>>> ns.Scheffler%40de.bosch.com
>>>> %7Cf6343926cc624857a11208de1b819e4d%7C0ae51
>>>> >>>>
>>>> e1907c84e4bbb6d648ee58410f4%7C0%7C0%7C638978440681546634%7CUnknown%7CT
>>>> >>>>
>>>> WFpbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiI
>>>> >>>>
>>>> sIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C0%7C%7C%7C&sdata=j%2B4anx9P7T5uTdc
>>>> >>>> omIOr%2BOr2%2FoDHQnntn1Pvhn33BHs%3D&reserved=0
>>>> >>>>>
>>>> >>>>> Public keys are available at:
>>>> >>>>> https://di/
>>>> >>>>> st.apache.org
>>>> %2Frepos%2Fdist%2Frelease%2Fairflow%2FKEYS&data=05%7C02
>>>> >>>>> %7CJens.Scheffler%40de.bosch.com
>>>> %7Cf6343926cc624857a11208de1b819e4d%
>>>> >>>>>
>>>> 7C0ae51e1907c84e4bbb6d648ee58410f4%7C0%7C0%7C638978440681574562%7CUn
>>>> >>>>>
>>>> known%7CTWFpbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAi
>>>> >>>>>
>>>> OiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C0%7C%7C%7C&sdata=enB4
>>>> >>>>> BNSldvybyXLUzIJIz5jE2tCnZ904nXCrgzoZp%2Bg%3D&reserved=0
>>>> >>>>>
>>>> >>>>> Please vote accordingly:
>>>> >>>>>
>>>> >>>>> [ ] +1 approve
>>>> >>>>> [ ] +0 no opinion
>>>> >>>>> [ ] -1 disapprove with the reason
>>>> >>>>>
>>>> >>>>> Only votes from PMC members are binding, but members of the
>>>> >>>>> community are encouraged to test the release and vote with
>>>> >>> "(non-binding)".
>>>> >>>>> Please note that the version number excludes the 'rcX' string.
>>>> >>>>> This will allow us to rename the artifact without modifying the
>>>> >>>>> artifact checksums when we actually release.
>>>> >>>>>
>>>> >>>>> The status of testing the providers by the community is kept here:
>>>> >>>>> https://gi/
>>>> >>>>> thub.com
>>>> %2Fapache%2Fairflow%2Fissues%2F57739&data=05%7C02%7CJens.Sch
>>>> >>>>> effler%40de.bosch.com
>>>> %7Cf6343926cc624857a11208de1b819e4d%7C0ae51e190
>>>> >>>>>
>>>> 7c84e4bbb6d648ee58410f4%7C0%7C0%7C638978440681602068%7CUnknown%7CTWF
>>>> >>>>>
>>>> pbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiI
>>>> >>>>>
>>>> sIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C0%7C%7C%7C&sdata=PPDrnZgPIfBJWRp
>>>> >>>>> 5VyEq1Ij2NGJXs9qK3b9mJA7Cwjk%3D&reserved=0
>>>> >>>>>
>>>> >>>>> The issue is also the easiest way to see important PRs included in
>>>> >>>>> the RC candidates.
>>>> >>>>> Detailed changelog for the providers will be published in the
>>>> >>>> documentation
>>>> >>>>> after the
>>>> >>>>> RC candidates are released.
>>>> >>>>>
>>>> >>>>> You can find the RC packages in PyPI following these links:
>>>> >>>>>
>>>> >>>>> https://py/
>>>> >>>>> pi.org
>>>> %2Fproject%2Fapache-airflow-providers-edge3%2F1.4.1rc2%2F&data
>>>> >>>>> =05%7C02%7CJens.Scheffler%40de.bosch.com
>>>> %7Cf6343926cc624857a11208de1
>>>> >>>>>
>>>> b819e4d%7C0ae51e1907c84e4bbb6d648ee58410f4%7C0%7C0%7C638978440681628
>>>> >>>>>
>>>> 771%7CUnknown%7CTWFpbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAw
>>>> >>>>>
>>>> MCIsIlAiOiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C0%7C%7C%7C&sd
>>>> >>>>> ata=HWxblv2u1%2B6Pr3QrB5N1s9k7wnOcgLZNi7qsgW3t9i0%3D&reserved=0
>>>> >>>>>
>>>> >>>>> Cheers,
>>>> >>>>> Elad Kalif
>>>> >>>>>
>>>> >>>>
>>>> ---------------------------------------------------------------------
>>>> >>>> To unsubscribe, e-mail:[email protected]
>>>> >>>> For additional commands, e-mail:[email protected]
>>>> >>>>
>>>> >>>>
>>>> >>>
>>>> ---------------------------------------------------------------------
>>>> >>> To unsubscribe, e-mail:[email protected]
>>>> >>> For additional commands, e-mail:[email protected]
>>>> >>>
>>>
>>>

Reply via email to