The PR is now merged,,, we have 'devel-common` now.

The important bit now for everyone... It's easier than ever to have dev-env
running for airflow...

1) uv sync -> and your .venv env allows you to run all tests for
airflow/task-sdk
2) uv sync --all-packages -> and your .venv allows you to also run tests
for all providers
3)
cd providers/PROVIDER
uv sync

gives env ready to run all tests for the provider of your choice

uv run pytest

does it.

There are likely a few missing per-provider deps but we will find and
squash them soon !

Have fun!

J.



On Wed, Mar 5, 2025 at 12:48 PM Jarek Potiuk <ja...@potiuk.com> wrote:

> Seems like the PR is getting to "green" zone - so one last push - and I am
> changing it to "devel-common" unless I hear strong NOOOOOOO!
>
> On Tue, Mar 4, 2025 at 10:36 PM Vincent Beck <vincb...@apache.org> wrote:
>
>> devel-common makes sense to me
>>
>> On 2025/03/04 21:13:47 "Oliveira, Niko" wrote:
>> > +1 to devel-common from me
>> >
>> > ________________________________
>> > From: Ferruzzi, Dennis <ferru...@amazon.com.INVALID>
>> > Sent: Tuesday, March 4, 2025 11:21:20 AM
>> > To: dev@airflow.apache.org
>> > Subject: RE: [EXT] [DISCUSS] Turn "tests_common" into separate
>> distribution for development
>> >
>> > CAUTION: This email originated from outside of the organization. Do not
>> click links or open attachments unless you can confirm the sender and know
>> the content is safe.
>> >
>> >
>> >
>> > AVERTISSEMENT: Ce courrier électronique provient d’un expéditeur
>> externe. Ne cliquez sur aucun lien et n’ouvrez aucune pièce jointe si vous
>> ne pouvez pas confirmer l’identité de l’expéditeur et si vous n’êtes pas
>> certain que le contenu ne présente aucun risque.
>> >
>> >
>> >
>> > devel-common sounds reasonable
>> >
>> >
>> >  - ferruzzi
>> >
>> >
>> > ________________________________
>> > From: Jarek Potiuk <ja...@potiuk.com>
>> > Sent: Tuesday, March 4, 2025 10:53 AM
>> > To: dev@airflow.apache.org
>> > Subject: RE: [EXT] [DISCUSS] Turn "tests_common" into separate
>> distribution for development
>> >
>> >
>> > CAUTION: This email originated from outside of the organization. Do not
>> click links or open attachments unless you can confirm the sender and know
>> the content is safe.
>> >
>> >
>> >
>> > AVERTISSEMENT: Ce courrier électronique provient d’un expéditeur
>> externe. Ne cliquez sur aucun lien et n’ouvrez aucune pièce jointe si vous
>> ne pouvez pas confirmer l’identité de l’expéditeur et si vous n’êtes pas
>> certain que le contenu ne présente aucun risque.
>> >
>> >
>> > I am doing a bit more cleanup, and I have found that the easier way to
>> fix some of the remaining issues will be to clean-up (and remove) the
>> remaining editable devel dependencies and incorporate them all in the
>> "tests-common" package.
>> >
>> > You can take a look at the PR:
>> https://github.com/apache/airflow/pull/47281 - but basically what it
>> means is:
>> >
>> > * all "devel" dependencies are added as required dependencies of
>> "tests-common" (except "doc" - I will treat doc separately).
>> > * I removed all "legacy" extras from the "airflow" package including
>> "bundle" extras: "devel-ci", "devel-db" and a few others - except
>> installing "all" dependencies as they were pretty useless. Except
>> "editable" all only - see below - we will have no more devel and bundle
>> extras  (Ash - I guess this is what you were looking forward to :) )
>> > * Instead we have one "all" extra that is available only in editable
>> mode - it's not documented in user documentation and it is really only
>> useful to install everything with `pip` (with uv you get the same with `uv
>> sync --all-extras`)  - this is still used internally in the CI image to run
>> `uv pip install .[all] --constraints` until we switch to use "uv.lock" in
>> the future
>> > * hatch_build.py is significantly simpler and easier to understand now
>> - with all the bundle removal and moving all dependencies to ./tests-common
>> > * we still need dynamic dependencies and ./hatch_build.py - but less
>> and less, with PEP735 (https://peps.python.org/pep-0735/) implemented in
>> pip in April we will likely be able to turn our optional dependencies into
>> static pyproject.toml deps, and with https://peps.python.org/pep-0771/
>> (needs approval and implementation) we will likely be able to have static
>> pyproject.toml required dependencies as well.
>> > * I updated install and contributing docs to be "uv first" - presenting
>> as recommended and the first option to go with `uv`  - as it is becoming
>> deceptively simple now to work with both - airflow and providers (and it
>> will be even simpler after few next PRs)
>> >
>> > Now. THE BIG QUESTION - naming again.  With all those changes.....
>> `tests-common` is becoming more of a `devel-common` package - because what
>> it will do - it will contribute to all other sub-projects all the
>> development tooling that is needed for those other projects to be developed.
>> >
>> > Shall we name it "devel-common" instead of `tests-common`?
>> >
>> > Part of why I think it makes sense is this specification in
>> `tests-common/pyproject.toml` (see attachment) - also
>> https://ibb.co/1cwZQRm if you do not see attachment. Note that these are
>> generally "common" devel dependencies - and each of the packages can
>> contribute their own (including task-sdk, airflow-core (future), every
>> provider etc.)
>> >
>> > [Screenshot from 2025-03-04 19-50-32.png]
>> >
>> >
>> > J.
>> >
>> >
>> >
>> > On Mon, Mar 3, 2025 at 4:14 AM Jarek Potiuk <ja...@potiuk.com<mailto:
>> ja...@potiuk.com>> wrote:
>> > Hello everyone.
>> >
>> > I created the PR for that https://github.com/apache/airflow/pull/47281.
>> >
>> > It's even nicer than I anticipated. I love the new super-simple
>> workflows this restructuring finally enabled.
>> >
>> > With `uv` and workspace, and the new structure of tests, developing and
>> running  tests for providers, task-sdk or any of the other future
>> sub-projects becomes very, very straightforward, we avoid duplication of
>> pytest options and switching between airflow, task-sdk, providers tests
>> will be simple and straightforward.
>> >
>> > 1) First of all with this change, we remove `devel-tests` extra. It was
>> always needed in local venv to install all test dependencies, But this is
>> completely gone right now. Test dependencies are automatically installed
>> now when you run `uv sync`  - and you do not need to specify `--extra
>> devel-tests`. If you are still using `pip` (I strongly recommend switching
>> to uv) - you just install `pip install -e ./tests-common`.
>> >
>> > 2) the previous way of syncing and running tests in "everything
>> installed" mode works as it worked before:
>> >
>> > uv sync --all-extras
>> >
>> > This installs all possible extras of airflow, allows you to run tests
>> for all providers, activate the venv in `.venv` and run `pytests
>> tests/always` or `pytest providers/mongo/tests`  or `pytest task_sdk/tests
>> and it should all work fine as it did before
>> >
>> > 3) you can also install dependencies of a selected provider (or a few
>> of those) in your .venv
>> >
>> > uv sync --extra mongo
>> >
>> > 3) All the `breeze testing provider-tests --test-type
>> "Providers[mongo]"" and generally all the ways to replicate what we run in
>> CI inside breeze containers with selective checks will also continue to
>> work - no changes here.
>> >
>> > But then, a little bit of standardization, a bit of pre-commits that
>> automatically update `pyproject.toml` files of ours with cross-provider
>> dependencies and  a little of `uv` workspace magic sprinkled over the repo
>> of ours and now we can do something much more straightforward:
>> >
>> > You can change directory to task_sdk, or provider folder of your choice
>> and simply run:
>> >
>> > cd providers/mongo
>> > uv run pytest
>> >
>> > or
>> >
>> > cd task_sdk
>> > uv run pytest
>> >
>> > And it will do what you would expect to do - even if this is the first
>> thing you do after checking out Airflow's repo without any earlier syncing
>> or preparation. Yes. It's that simple.
>> >
>> > The `uv run pytest` command will now automatically: install python,
>> create a venv, sync your venv to ONLY have dependencies needed for your
>> provider or any of the providers imported by your provider, and all test
>> dependencies needed, it will find only non-system, non-integration tests
>> and run them. That's it. If you want to only develop one provider - you
>> will not have to worry any more about breeze image or setting up all other
>> dependencies.
>> >
>> > Go ahead and try it. It's unbelievably simple.
>> >
>> > J.
>> >
>> >
>> >
>> > On Tue, Feb 25, 2025 at 5:45 PM Ash Berlin-Taylor <a...@apache.org
>> <mailto:a...@apache.org>> wrote:
>> > I like this approach, lets do it!
>> >
>> > > On 25 Feb 2025, at 16:02, Jarek Potiuk <ja...@potiuk.com<mailto:
>> ja...@potiuk.com>> wrote:
>> > >
>> > > airflow-core
>> > > task-sdk
>> > > tests-common
>> >
>> >
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: dev-unsubscr...@airflow.apache.org
>> For additional commands, e-mail: dev-h...@airflow.apache.org
>>
>>

Reply via email to