-
Notifications
You must be signed in to change notification settings - Fork 14.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Separate providers into sub-projects #44511
Labels
Comments
This was referenced Nov 30, 2024
sounds like a good idea |
Sounds good to me to. At this point I wonder if we should also move core Airflow into a subdirectory. |
Absolutely. |
2 tasks
potiuk
added a commit
to potiuk/airflow
that referenced
this issue
Dec 21, 2024
When providers system tests were modified in provider tests were modified, selective checks had two bugs that compounded led to provider tests being skipped. 1) Modification of system tests lead to "all providers affected" condition (wrongly) - because "TESTS" were checked as root path before "SYSTEM TESTS" - and since system tests were subfolder of tests, the code that checked if system tests path belongs to provider never found it. 2) "All Providers affected" in such case (when it was not caused by another condition lead to "skip-provider-tests" set to true due to missing "else" in one of the conditions. This PR fixes both cases and simplifies the conditions so that they are easier to understand and modify. Those conditions will be further simplified when we separate providers to separate projects apache#44511 because there we will not have to check separately several sub-folders of airflow, but for now it's good enough. Some of those conditions are simplified as well because we are in Python 3.9+ and "is_relative_to" is now available in Path.
This was referenced Dec 21, 2024
potiuk
added a commit
to potiuk/airflow
that referenced
this issue
Dec 21, 2024
When providers system tests were modified in provider tests were modified, selective checks had two bugs that compounded led to provider tests being skipped. 1) Modification of system tests lead to "all providers affected" condition (wrongly) - because "TESTS" were checked as root path before "SYSTEM TESTS" - and since system tests were subfolder of tests, the code that checked if system tests path belongs to provider never found it. 2) "All Providers affected" in such case (when it was not caused by another condition lead to "skip-provider-tests" set to true due to missing "else" in one of the conditions. This PR fixes both cases and simplifies the conditions so that they are easier to understand and modify. Those conditions will be further simplified when we separate providers to separate projects apache#44511 because there we will not have to check separately several sub-folders of airflow, but for now it's good enough. Some of those conditions are simplified as well because we are in Python 3.9+ and "is_relative_to" is now available in Path.
potiuk
added a commit
to potiuk/airflow
that referenced
this issue
Dec 21, 2024
When providers system tests were modified in provider tests were modified, selective checks had two bugs that compounded led to provider tests being skipped. 1) Modification of system tests lead to "all providers affected" condition (wrongly) - because "TESTS" were checked as root path before "SYSTEM TESTS" - and since system tests were subfolder of tests, the code that checked if system tests path belongs to provider never found it. 2) "All Providers affected" in such case (when it was not caused by another condition lead to "skip-provider-tests" set to true due to missing "else" in one of the conditions. This PR fixes both cases and simplifies the conditions so that they are easier to understand and modify. Those conditions will be further simplified when we separate providers to separate projects apache#44511 because there we will not have to check separately several sub-folders of airflow, but for now it's good enough. Some of those conditions are simplified as well because we are in Python 3.9+ and "is_relative_to" is now available in Path.
potiuk
added a commit
that referenced
this issue
Dec 21, 2024
When providers system tests were modified in provider tests were modified, selective checks had two bugs that compounded led to provider tests being skipped. 1) Modification of system tests lead to "all providers affected" condition (wrongly) - because "TESTS" were checked as root path before "SYSTEM TESTS" - and since system tests were subfolder of tests, the code that checked if system tests path belongs to provider never found it. 2) "All Providers affected" in such case (when it was not caused by another condition lead to "skip-provider-tests" set to true due to missing "else" in one of the conditions. This PR fixes both cases and simplifies the conditions so that they are easier to understand and modify. Those conditions will be further simplified when we separate providers to separate projects #44511 because there we will not have to check separately several sub-folders of airflow, but for now it's good enough. Some of those conditions are simplified as well because we are in Python 3.9+ and "is_relative_to" is now available in Path.
This was referenced Dec 26, 2024
Merged
Closed
LefterisXefteris
pushed a commit
to LefterisXefteris/airflow
that referenced
this issue
Jan 5, 2025
When providers system tests were modified in provider tests were modified, selective checks had two bugs that compounded led to provider tests being skipped. 1) Modification of system tests lead to "all providers affected" condition (wrongly) - because "TESTS" were checked as root path before "SYSTEM TESTS" - and since system tests were subfolder of tests, the code that checked if system tests path belongs to provider never found it. 2) "All Providers affected" in such case (when it was not caused by another condition lead to "skip-provider-tests" set to true due to missing "else" in one of the conditions. This PR fixes both cases and simplifies the conditions so that they are easier to understand and modify. Those conditions will be further simplified when we separate providers to separate projects apache#44511 because there we will not have to check separately several sub-folders of airflow, but for now it's good enough. Some of those conditions are simplified as well because we are in Python 3.9+ and "is_relative_to" is now available in Path.
agupta01
pushed a commit
to agupta01/airflow
that referenced
this issue
Jan 6, 2025
When providers system tests were modified in provider tests were modified, selective checks had two bugs that compounded led to provider tests being skipped. 1) Modification of system tests lead to "all providers affected" condition (wrongly) - because "TESTS" were checked as root path before "SYSTEM TESTS" - and since system tests were subfolder of tests, the code that checked if system tests path belongs to provider never found it. 2) "All Providers affected" in such case (when it was not caused by another condition lead to "skip-provider-tests" set to true due to missing "else" in one of the conditions. This PR fixes both cases and simplifies the conditions so that they are easier to understand and modify. Those conditions will be further simplified when we separate providers to separate projects apache#44511 because there we will not have to check separately several sub-folders of airflow, but for now it's good enough. Some of those conditions are simplified as well because we are in Python 3.9+ and "is_relative_to" is now available in Path.
86 tasks
got686-yandex
pushed a commit
to got686-yandex/airflow
that referenced
this issue
Jan 30, 2025
When providers system tests were modified in provider tests were modified, selective checks had two bugs that compounded led to provider tests being skipped. 1) Modification of system tests lead to "all providers affected" condition (wrongly) - because "TESTS" were checked as root path before "SYSTEM TESTS" - and since system tests were subfolder of tests, the code that checked if system tests path belongs to provider never found it. 2) "All Providers affected" in such case (when it was not caused by another condition lead to "skip-provider-tests" set to true due to missing "else" in one of the conditions. This PR fixes both cases and simplifies the conditions so that they are easier to understand and modify. Those conditions will be further simplified when we separate providers to separate projects apache#44511 because there we will not have to check separately several sub-folders of airflow, but for now it's good enough. Some of those conditions are simplified as well because we are in Python 3.9+ and "is_relative_to" is now available in Path.
This is officially done. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Each provider should have it's own independed sub-project in our mono-repo.
They should be fully "standalone" so that you can not only develop them completely independently from airflow core, but also that all the dependencies of thoseshould be stored in their own pyproject.toml. And
uv workspace
feature should be used to bind together all the provider sub-projects so that you can continue the development where you have airflow, task-sdk, providers and all the other sub-projects of Airlflow monorepo together in a single editable environment.This move has been attempted earlier in #28292 and #28291 - but we did not have a good "workspace" solution and Airflow 2 namespace approach prevented us from making it good environment for provider development. With Airflow 3 and
uv workspace
feature that has been added - largely with our input so that Airlfow's provider structure could benefit from theuv workspace
functionality, it's now entirely possible to do.This means that dependencies should be moved from
providrer.yaml
files topyproject.toml
The ideal setup there is to have this kind of structure (details to be worked out):
Some important properties of the solution:
--editable
mode treating it as separate project from the workspacebreeze
as we do currently. Some of the currentdoc
code will need to be moved to breeze as well for that likelydocker container
environment - while currently we useflit
as build backend and this comes from generatedpyproject.toml
that is placed inside breeze, if we keep pyproject.toml files in the repository, incoming PRs from forks might change build backends and thus inject any code in our build processThe most likely way to implement it is to:
uv workspace
feature is usable at scale of 100+ projects bound together (and work withuv
team to fix it if not)The text was updated successfully, but these errors were encountered: