Airflow replacing single quotes by None on PythonOperator

Viewed 32

While developing some code on airflow, I saw that all my PythonOperator task parameters that were '' (single quotes) are being replaced with None, when passed to the python_callable.

For reproducing, take the following function (that will be the python_callable)

def print_something(something):
    print('Something: ', something)

And then, the following DAG and Task:

with DAG(
    dag_id='print_test',
    tags=['Test'],
    start_date=days_ago(1),
    schedule_interval=None,
    default_args={'owner': 'rand'},
    catchup=False,
    render_template_as_native_obj=True,
) as dag:

    print_task = PythonOperator(
        task_id=f'task_print_test',
        dag=dag,
        python_callable=print_something,
        op_kwargs={'something': {'test':''}}
    )

print_task

When I go to the task execution logs:

[2022-07-13, 12:04:14 -03] {logging_mixin.py:115} INFO - Something:  {'test': None}

So airflow is actually replacing single quotes for None values.

Is there any way to prevent this?

1 Answers

Yes, there is. Remove this dag configuration:

render_template_as_native_obj=True

It's causing your dag to replace somethings (arguments and others) by python objects.

Related