Two small things (aka possible teething issues):

* *uv self update* <- once you do it, in the future you will get a clear
error when you should update your uv if you have not done so
* *uv sync --reinstall* <- forces reinstallation of airflow package. Uv
does it periodically with some heuristics, but this one will force it after
restructuring

J.

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

> 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