Closed
Description
We just noticed this in Airflow CI on upgrading to 25.2.0.
The error is
ERROR airflow.models.dagbag.DagBag:dagbag.py:394 Failed to import: /opt/airflow/airflow/example_dags/example_dynamic_task_mapping.py
Traceback (most recent call last):
File "/opt/airflow/airflow/models/dagbag.py", line 384, in parse
loader.exec_module(new_module)
File "<frozen importlib._bootstrap_external>", line 999, in exec_module
File "<frozen importlib._bootstrap>", line 488, in _call_with_frames_removed
File "/opt/airflow/airflow/example_dags/example_dynamic_task_mapping.py", line 27, in <module>
with DAG(dag_id="example_dynamic_task_mapping", schedule=None, start_date=datetime(2022, 3, 4)) as dag:
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: DAG.__init__() got an unexpected keyword argument 'dag_id'
(Yes, I know your view on subclassing. I don't disagree either)
Minimal repro case:
import attrs
def _all_after_dag_id_to_kw_only(cls, fields: list[attrs.Attribute]):
i = iter(fields)
f = next(i)
if f.name != "dag_id":
raise RuntimeError("dag_id was not the first field")
yield f
for f in i:
yield f.evolve(kw_only=True)
@attrs.define(field_transformer=_all_after_dag_id_to_kw_only)
class Base:
dag_id: str
has_default: str = "default"
@attrs.define()
class Subclass(Base):
other: bool
x = Subclass(dag_id="foo", other=False)
print(repr(x))
print(attrs.__version__)
Metadata
Metadata
Assignees
Labels
No labels