# Auto-generated by bolt_pipeliner.generators.airflow — do not edit by hand.
# Generic Airflow DAG template. Replace operators / connection ids to match
# your environment (EMR, Databricks, Kubernetes, local Spark, etc.).
from __future__ import annotations

import datetime as dt
from datetime import timedelta

from airflow import DAG
from airflow.operators.empty import EmptyOperator
from airflow.operators.trigger_dagrun import TriggerDagRunOperator
from airflow.utils.task_group import TaskGroup

default_args = {{
    "owner": "bolt_pipeliner",
    "start_date": dt.datetime.today().replace(
        day=1, hour=0, minute=0, second=0, microsecond=0
    ),
    "email_on_failure": False,
    "retries": 0,
}}

with DAG(
    dag_id="{dag_name}",
    default_args=default_args,
    dagrun_timeout=timedelta(hours=8),
    {schedule}
    catchup=False,
    tags=["bolt_pipeliner"],
) as dag:
    Start_DAG = EmptyOperator(task_id="Start_DAG")
{dependency_sensor_code}
    with TaskGroup(
        "TG__{dag_name}",
        tooltip="TaskGroup for the DAG contents",
    ) as TG_{dag_name}:
        Start_Event = EmptyOperator(task_id="Start_Event")

{emr_configuration_code}
        End_Event = EmptyOperator(task_id="End_Event")

    End_DAG = EmptyOperator(task_id="End_DAG")

    (
        Start_Event{tasks_order}
        >> End_Event
    )

    if {run_previous_layer}:
        (
            Start_DAG
            >> wait_for_{previous_layer}
            >> TG_{dag_name}
            >> End_DAG
        )
    else:
        (
            Start_DAG
            >> TG_{dag_name}
            >> End_DAG
        )
