| State | Draft |
| Discussion Thread | Email: tbd. Slack: #sig-examples |
| Vote Thread | tbd. |
| Vote Result Thread | tbd. |
| Progress Tracking (PR/GitHub Project/Issue Label) | |
| Date Created |
|
| Version Released | tbd. |
| Authors |
Airflow Examples have been grown in number and focus over the past years. They purpose multiple things:
Some example DAGs are in a good quality, some are not following best practices. Current examples do not follow a structure.
There are example DAGs contained in the Airflow core (currently pushed to standard provider/example_dags) as well as there are more examples in other providers. But examples from other providers are lot loaded automatically.
So in the Airflow 3 Dev Calls there was a demand named to clean-up and optimize example DAGs.
| tbd. - creative ideas welcome. |
Current ideas collection:
Work in progress |
--load-example-dags must load examples from standard provider at least in Airflow 3.1 (same like in breeze hack today)test_dags" folder/bundle that should contain dags used for testing only. We can automatically add such dags to be used in unit test via auto-fixture in the shared conftest.py or similar - this way it will work in both breeze and local venv. I think we should aim to have breeze == local envexample_kubernetes_executor.py → cncf.kubernetes)provider.yaml and move the example dags from "tests" to separate "examples" folder that will be also embedded in the .whl file (so that you can also conditionally enable examples from a given provider). This means that "system" tests will not be a separate "system" folder, but something separate.We should figure out a way how to show examples from a provider - possibly "load_core_examples=true/false" and "load_provider_examples=[list of providers]" would be a nice way how to do it
Draft / Brainstorming quality. |
Example"Tutorial"Testing"See https://github.com/apache/airflow/tree/main/airflow-core/src/airflow/example_dags
| Name | Gaps | Proposed Change |
|---|---|---|
Core - airflow-core/src/airflow/example_dags | ||
example_asset_alias.py | ||
example_asset_alias_with_no_taskflow.py | ||
example_asset_decorator.py | ||
example_assets.py | ||
example_asset_with_watchers.py | ||
example_bash_decorator.py | ||
example_bash_operator.py | ||
example_branch_datetime_operator.py | ||
example_branch_day_of_week_operator.py | ||
example_branch_labels.py | ||
example_branch_operator_decorator.py | ||
example_branch_operator.py | ||
example_branch_python_dop_operator_3.py | ||
example_complex.py | ||
example_custom_weight.py | ||
example_dag_decorator.py | ||
example_display_name.py | ||
example_dynamic_task_mapping.py | ||
example_dynamic_task_mapping_with_no_taskflow_operators.py | ||
example_external_task_marker_dag.py | ||
example_inlet_event_extra.py | ||
example_kubernetes_executor.py | ||
example_latest_only.py | ||
example_latest_only_with_trigger.py | ||
example_local_kubernetes_executor.py | ||
example_nested_branch_dag.py | ||
example_outlet_event_extra.py | ||
example_params_trigger_ui.py | ||
example_params_ui_tutorial.py | ||
example_passing_params_via_test_command.py | ||
example_python_decorator.py | ||
example_python_operator.py | ||
example_sensor_decorator.py | ||
example_sensors.py | ||
example_setup_teardown.py | ||
example_setup_teardown_taskflow.py | ||
example_short_circuit_decorator.py | ||
example_short_circuit_operator.py | ||
example_simplest_dag.py | ||
example_skip_dag.py | ||
example_task_group_decorator.py | ||
example_task_group.py | ||
example_time_delta_sensor_async.py | ||
example_trigger_controller_dag.py | ||
example_trigger_target_dag.py | ||
example_workday_timetable.py | ||
example_xcomargs.py | ||
example_xcom.py | ||
ArangoDB - providers/arangodb/src/airflow/providers/arangodb/example_dags | ||
example_arangodb.py | ||
Oracle - providers/oracle/src/airflow/providers/oracle/example_dags | ||
example_oracle.py | ||
Edge - providers/edge3/src/airflow/providers/edge3/example_dags | ||
integration_test.py | ||
win_notepad.py | ||
win_test.py | ||