Skip to content

@dag imported from airflow.sdk fails with AttributeError: 'DAG' object has no attribute 'get_run_data_interval' #48034

@TJaniF

Description

@TJaniF

Apache Airflow version

from main. 3.0.0b4

What happened?

(This bug does not exist in beta3, only got it in the nightly from last night, can't get current main to run so could not test there)

Tried to add this dag:

from airflow.decorators import task
from pendulum import datetime
from airflow.sdk import dag


@dag(
    start_date=datetime(2025, 1, 1),
    schedule="@daily",
    catchup=False,
)
def test_dag():

    @task
    def test_task():
        pass

    test_task()


test_dag()

Getting the import error:

[2025-03-20T19:44:44.482+0000] {dag.py:1866} INFO - Sync 1 DAGs
Traceback (most recent call last):
  File "/usr/local/bin/airflow", line 10, in <module>
    sys.exit(main())
             ^^^^^^
  File "/usr/local/lib/python3.12/site-packages/airflow/__main__.py", line 58, in main
    args.func(args)
  File "/usr/local/lib/python3.12/site-packages/airflow/cli/cli_config.py", line 49, in command
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/airflow/utils/cli.py", line 111, in wrapper
    return f(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/airflow/utils/providers_configuration_loader.py", line 55, in wrapped_function
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/airflow/utils/session.py", line 101, in wrapper
    return func(*args, session=session, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/airflow/cli/commands/remote_commands/dag_command.py", line 711, in dag_reserialize
    dag_bag.sync_to_db(bundle.name, bundle_version=bundle.get_current_version(), session=session)
  File "/usr/local/lib/python3.12/site-packages/airflow/utils/session.py", line 98, in wrapper
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/airflow/models/dagbag.py", line 649, in sync_to_db
    update_dag_parsing_results_in_db(
  File "/usr/local/lib/python3.12/site-packages/airflow/dag_processing/collection.py", line 326, in update_dag_parsing_results_in_db
    for attempt in run_with_db_retries(logger=log):
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/tenacity/__init__.py", line 443, in __iter__
    do = self.iter(retry_state=retry_state)
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/tenacity/__init__.py", line 376, in iter
    result = action(retry_state)
             ^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/tenacity/__init__.py", line 398, in <lambda>
    self._add_action_func(lambda rs: rs.outcome.result())
                                     ^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/concurrent/futures/_base.py", line 449, in result
    return self.__get_result()
           ^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/concurrent/futures/_base.py", line 401, in __get_result
    raise self._exception
  File "/usr/local/lib/python3.12/site-packages/airflow/dag_processing/collection.py", line 336, in update_dag_parsing_results_in_db
    DAG.bulk_write_to_db(bundle_name, bundle_version, dags, session=session)
  File "/usr/local/lib/python3.12/site-packages/airflow/utils/session.py", line 98, in wrapper
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/airflow/models/dag.py", line 1872, in bulk_write_to_db
    dag_op.update_dags(orm_dags, session=session)
  File "/usr/local/lib/python3.12/site-packages/airflow/dag_processing/collection.py", line 471, in update_dags
    last_automated_data_interval = dag.get_run_data_interval(last_automated_run)
                                   ^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'DAG' object has no attribute 'get_run_data_interval'

What you think should happen instead?

The same dag works when using from airflow.decorators import dag.

How to reproduce

  1. Add the dag above
  2. run airflow dags reserialize
  3. see the error

Operating System

Mac M1 Pro 15.3.1 (24D70)

Versions of Apache Airflow Providers

None

Deployment

Other

Deployment details

Astro CLI

Anything else?

No response

Are you willing to submit PR?

  • Yes I am willing to submit a PR!

Code of Conduct

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:corekind:bugThis is a clearly a bugneeds-triagelabel for new issues that we didn't triage yet

    Type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions