If maintainability and clarity are priorities, Option 2 (two .py files with a shared module) is generally the best practice, as it keeps each DAG isolated while avoiding code duplication. This method also allows you to schedule backfilling and ongoing runs independently and view them clearly in the Airflow UI.