This is an automated email from the ASF dual-hosted git repository.
jedcunningham pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/airflow.git
The following commit(s) were added to refs/heads/main by this push:
new d6e618f26b9 Add DagFolderDagBundle to expose the DAG folder as a
bundle (#44699)
d6e618f26b9 is described below
commit d6e618f26b95a12ad1413d14b4755a5ff87df5db
Author: Jed Cunningham <[email protected]>
AuthorDate: Thu Dec 5 14:16:06 2024 -0700
Add DagFolderDagBundle to expose the DAG folder as a bundle (#44699)
Why not simply use LocalDagBundle? This keeps the config for the
traditional `[core] dags_folder` in the Airflow config system.
---
airflow/dag_processing/bundles/dagfolder.py | 28 ++++++++++++++++++++++++++++
tests/dag_processing/test_dag_bundles.py | 8 ++++++++
2 files changed, 36 insertions(+)
diff --git a/airflow/dag_processing/bundles/dagfolder.py
b/airflow/dag_processing/bundles/dagfolder.py
new file mode 100644
index 00000000000..40ba6496445
--- /dev/null
+++ b/airflow/dag_processing/bundles/dagfolder.py
@@ -0,0 +1,28 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+from __future__ import annotations
+
+from airflow import settings
+from airflow.dag_processing.bundles.local import LocalDagBundle
+
+
+class DagsFolderDagBundle(LocalDagBundle):
+ """A bundle for the DAGs folder."""
+
+ def __init__(self, **kwargs):
+ super().__init__(local_folder=settings.DAGS_FOLDER, **kwargs)
diff --git a/tests/dag_processing/test_dag_bundles.py
b/tests/dag_processing/test_dag_bundles.py
index 8ad72d1df69..65be620fe5e 100644
--- a/tests/dag_processing/test_dag_bundles.py
+++ b/tests/dag_processing/test_dag_bundles.py
@@ -24,6 +24,7 @@ import pytest
from git import Repo
from airflow.dag_processing.bundles.base import BaseDagBundle
+from airflow.dag_processing.bundles.dagfolder import DagsFolderDagBundle
from airflow.dag_processing.bundles.git import GitDagBundle
from airflow.dag_processing.bundles.local import LocalDagBundle
from airflow.exceptions import AirflowException
@@ -72,6 +73,13 @@ class TestLocalDagBundle:
assert bundle.get_current_version() is None
+class TestDagsFolderDagBundle:
+ @conf_vars({("core", "dags_folder"): "/tmp/somewhere/dags"})
+ def test_path(self):
+ bundle = DagsFolderDagBundle(name="test")
+ assert bundle.path == Path("/tmp/somewhere/dags")
+
+
GIT_DEFAULT_BRANCH = "main"