# Version: 2025-08-20-02
# This file contains custom hooks for the Airflow environment.
from airflow import settings

def task_instance_mutation_hook(ti):
    if ti.dag_id == 'ytdlp_ops_worker_per_url':
        # Safely access dag_run and conf. The ti.dag_run attribute may not be populated
        # when the hook is called during TaskInstance creation.
        dag_run = getattr(ti, 'dag_run', None)
        conf = getattr(dag_run, 'conf', {}) if dag_run else {}
        worker_queue = conf.get('worker_queue')

        if worker_queue:
            print(f"Mutating queue for task {ti.task_id} to {worker_queue} based on dag_run.conf")
            ti.queue = worker_queue
        else:
            print(f"No worker_queue in conf for {ti.dag_id}. Falling back to 'queue-dl'")
            ti.queue = 'queue-dl'

# Register the hook only in appropriate contexts
# This hook can cause issues with the Triggerer, which does not have a `dag_run` context
# when it runs its own maintenance tasks.
if not settings.CONFIG.get('core', 'executor').lower().startswith('debug'):
    settings.task_instance_mutation_hook = task_instance_mutation_hook
