apache-airflow-providers-standard 1.4.0rc1__tar.gz → 1.4.1rc2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of apache-airflow-providers-standard might be problematic. Click here for more details.
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/PKG-INFO +4 -4
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/README.rst +1 -1
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/docs/changelog.rst +8 -0
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/docs/index.rst +1 -1
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/provider.yaml +1 -0
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/pyproject.toml +3 -3
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/__init__.py +1 -1
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/utils/skipmixin.py +2 -2
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/tests/unit/standard/operators/test_python.py +48 -0
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/tests/unit/standard/utils/test_skipmixin.py +81 -0
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/docs/commits.rst +0 -0
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/docs/conf.py +0 -0
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/docs/configurations-ref.rst +0 -0
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/docs/installing-providers-from-sources.rst +0 -0
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/docs/operators/bash.rst +0 -0
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/docs/operators/datetime.rst +0 -0
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/docs/operators/index.rst +0 -0
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/docs/operators/latest_only.rst +0 -0
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/docs/operators/python.rst +0 -0
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/docs/operators/trigger_dag_run.rst +0 -0
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/docs/security.rst +0 -0
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/docs/sensors/bash.rst +0 -0
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/docs/sensors/datetime.rst +0 -0
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/docs/sensors/external_task_sensor.rst +0 -0
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/docs/sensors/file.rst +0 -0
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/docs/sensors/index.rst +0 -0
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/docs/sensors/python.rst +0 -0
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/__init__.py +0 -0
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/__init__.py +0 -0
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/LICENSE +0 -0
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/decorators/__init__.py +0 -0
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/decorators/bash.py +0 -0
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/decorators/branch_external_python.py +0 -0
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/decorators/branch_python.py +0 -0
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/decorators/branch_virtualenv.py +0 -0
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/decorators/external_python.py +0 -0
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/decorators/python.py +0 -0
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/decorators/python_virtualenv.py +0 -0
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/decorators/sensor.py +0 -0
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/decorators/short_circuit.py +0 -0
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/example_dags/__init__.py +0 -0
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/example_dags/example_bash_decorator.py +0 -0
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/example_dags/example_bash_operator.py +0 -0
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/example_dags/example_branch_datetime_operator.py +0 -0
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/example_dags/example_branch_day_of_week_operator.py +0 -0
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/example_dags/example_branch_operator.py +0 -0
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/example_dags/example_branch_operator_decorator.py +0 -0
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/example_dags/example_external_task_child_deferrable.py +0 -0
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/example_dags/example_external_task_marker_dag.py +0 -0
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/example_dags/example_external_task_parent_deferrable.py +0 -0
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/example_dags/example_latest_only.py +0 -0
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/example_dags/example_python_decorator.py +0 -0
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/example_dags/example_python_operator.py +0 -0
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/example_dags/example_sensor_decorator.py +0 -0
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/example_dags/example_sensors.py +0 -0
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/example_dags/example_short_circuit_decorator.py +0 -0
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/example_dags/example_short_circuit_operator.py +0 -0
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/example_dags/example_trigger_controller_dag.py +0 -0
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/example_dags/sql/__init__.py +0 -0
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/example_dags/sql/sample.sql +0 -0
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/exceptions.py +0 -0
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/get_provider_info.py +0 -0
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/hooks/__init__.py +0 -0
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/hooks/filesystem.py +0 -0
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/hooks/package_index.py +0 -0
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/hooks/subprocess.py +0 -0
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/operators/__init__.py +0 -0
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/operators/bash.py +0 -0
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/operators/branch.py +0 -0
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/operators/datetime.py +0 -0
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/operators/empty.py +0 -0
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/operators/latest_only.py +0 -0
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/operators/python.py +0 -0
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/operators/smooth.py +0 -0
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/operators/trigger_dagrun.py +0 -0
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/operators/weekday.py +0 -0
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/sensors/__init__.py +0 -0
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/sensors/bash.py +0 -0
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/sensors/date_time.py +0 -0
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/sensors/external_task.py +0 -0
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/sensors/filesystem.py +0 -0
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/sensors/python.py +0 -0
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/sensors/time.py +0 -0
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/sensors/time_delta.py +0 -0
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/sensors/weekday.py +0 -0
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/triggers/__init__.py +0 -0
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/triggers/external_task.py +0 -0
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/triggers/file.py +0 -0
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/triggers/temporal.py +0 -0
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/utils/__init__.py +0 -0
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/utils/python_virtualenv.py +0 -0
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/utils/python_virtualenv_script.jinja2 +0 -0
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/utils/sensor_helper.py +0 -0
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/utils/weekday.py +0 -0
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/src/airflow/providers/standard/version_compat.py +0 -0
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/tests/conftest.py +0 -0
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/tests/unit/__init__.py +0 -0
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/tests/unit/standard/__init__.py +0 -0
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/tests/unit/standard/decorators/__init__.py +0 -0
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/tests/unit/standard/decorators/test_bash.py +0 -0
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/tests/unit/standard/decorators/test_branch_external_python.py +0 -0
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/tests/unit/standard/decorators/test_branch_python.py +0 -0
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/tests/unit/standard/decorators/test_branch_virtualenv.py +0 -0
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/tests/unit/standard/decorators/test_external_python.py +0 -0
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/tests/unit/standard/decorators/test_python.py +0 -0
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/tests/unit/standard/decorators/test_python_virtualenv.py +0 -0
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/tests/unit/standard/decorators/test_sensor.py +0 -0
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/tests/unit/standard/decorators/test_short_circuit.py +0 -0
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/tests/unit/standard/hooks/__init__.py +0 -0
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/tests/unit/standard/hooks/test_filesystem.py +0 -0
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/tests/unit/standard/hooks/test_package_index.py +0 -0
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/tests/unit/standard/hooks/test_subprocess.py +0 -0
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/tests/unit/standard/operators/__init__.py +0 -0
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/tests/unit/standard/operators/test_bash.py +0 -0
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/tests/unit/standard/operators/test_branch_operator.py +0 -0
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/tests/unit/standard/operators/test_datetime.py +0 -0
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/tests/unit/standard/operators/test_latest_only_operator.py +0 -0
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/tests/unit/standard/operators/test_smooth.py +0 -0
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/tests/unit/standard/operators/test_trigger_dagrun.py +0 -0
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/tests/unit/standard/operators/test_weekday.py +0 -0
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/tests/unit/standard/sensors/__init__.py +0 -0
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/tests/unit/standard/sensors/test_bash.py +0 -0
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/tests/unit/standard/sensors/test_date_time.py +0 -0
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/tests/unit/standard/sensors/test_external_task_sensor.py +0 -0
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/tests/unit/standard/sensors/test_python.py +0 -0
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/tests/unit/standard/sensors/test_time.py +0 -0
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/tests/unit/standard/sensors/test_time_delta.py +0 -0
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/tests/unit/standard/sensors/test_weekday.py +0 -0
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/tests/unit/standard/test_exceptions.py +0 -0
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/tests/unit/standard/triggers/__init__.py +0 -0
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/tests/unit/standard/triggers/test_external_task.py +0 -0
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/tests/unit/standard/triggers/test_file.py +0 -0
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/tests/unit/standard/triggers/test_temporal.py +0 -0
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/tests/unit/standard/utils/__init__.py +0 -0
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/tests/unit/standard/utils/test_python_virtualenv.py +0 -0
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/tests/unit/standard/utils/test_sensor_helper.py +0 -0
- {apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/tests/unit/standard/utils/test_weekday.py +0 -0
{apache_airflow_providers_standard-1.4.0rc1 → apache_airflow_providers_standard-1.4.1rc2}/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: apache-airflow-providers-standard
|
|
3
|
-
Version: 1.4.
|
|
3
|
+
Version: 1.4.1rc2
|
|
4
4
|
Summary: Provider package apache-airflow-providers-standard for Apache Airflow
|
|
5
5
|
Keywords: airflow-provider,standard,airflow,integration
|
|
6
6
|
Author-email: Apache Software Foundation <dev@airflow.apache.org>
|
|
@@ -21,8 +21,8 @@ Classifier: Programming Language :: Python :: 3.12
|
|
|
21
21
|
Classifier: Topic :: System :: Monitoring
|
|
22
22
|
Requires-Dist: apache-airflow>=2.10.0rc1
|
|
23
23
|
Project-URL: Bug Tracker, https://github.com/apache/airflow/issues
|
|
24
|
-
Project-URL: Changelog, https://airflow.staged.apache.org/docs/apache-airflow-providers-standard/1.4.
|
|
25
|
-
Project-URL: Documentation, https://airflow.staged.apache.org/docs/apache-airflow-providers-standard/1.4.
|
|
24
|
+
Project-URL: Changelog, https://airflow.staged.apache.org/docs/apache-airflow-providers-standard/1.4.1/changelog.html
|
|
25
|
+
Project-URL: Documentation, https://airflow.staged.apache.org/docs/apache-airflow-providers-standard/1.4.1
|
|
26
26
|
Project-URL: Mastodon, https://fosstodon.org/@airflow
|
|
27
27
|
Project-URL: Slack Chat, https://s.apache.org/airflow-slack
|
|
28
28
|
Project-URL: Source Code, https://github.com/apache/airflow
|
|
@@ -53,7 +53,7 @@ Project-URL: YouTube, https://www.youtube.com/channel/UCSXwxpWZQ7XZ1WL3wqevChA/
|
|
|
53
53
|
|
|
54
54
|
Package ``apache-airflow-providers-standard``
|
|
55
55
|
|
|
56
|
-
Release: ``1.4.
|
|
56
|
+
Release: ``1.4.1``
|
|
57
57
|
|
|
58
58
|
|
|
59
59
|
Airflow Standard Provider
|
|
@@ -25,7 +25,7 @@ build-backend = "flit_core.buildapi"
|
|
|
25
25
|
|
|
26
26
|
[project]
|
|
27
27
|
name = "apache-airflow-providers-standard"
|
|
28
|
-
version = "1.4.
|
|
28
|
+
version = "1.4.1rc2"
|
|
29
29
|
description = "Provider package apache-airflow-providers-standard for Apache Airflow"
|
|
30
30
|
readme = "README.rst"
|
|
31
31
|
authors = [
|
|
@@ -94,8 +94,8 @@ apache-airflow-providers-common-sql = {workspace = true}
|
|
|
94
94
|
apache-airflow-providers-standard = {workspace = true}
|
|
95
95
|
|
|
96
96
|
[project.urls]
|
|
97
|
-
"Documentation" = "https://airflow.staged.apache.org/docs/apache-airflow-providers-standard/1.4.
|
|
98
|
-
"Changelog" = "https://airflow.staged.apache.org/docs/apache-airflow-providers-standard/1.4.
|
|
97
|
+
"Documentation" = "https://airflow.staged.apache.org/docs/apache-airflow-providers-standard/1.4.1"
|
|
98
|
+
"Changelog" = "https://airflow.staged.apache.org/docs/apache-airflow-providers-standard/1.4.1/changelog.html"
|
|
99
99
|
"Bug Tracker" = "https://github.com/apache/airflow/issues"
|
|
100
100
|
"Source Code" = "https://github.com/apache/airflow"
|
|
101
101
|
"Slack Chat" = "https://s.apache.org/airflow-slack"
|
|
@@ -29,7 +29,7 @@ from airflow import __version__ as airflow_version
|
|
|
29
29
|
|
|
30
30
|
__all__ = ["__version__"]
|
|
31
31
|
|
|
32
|
-
__version__ = "1.4.
|
|
32
|
+
__version__ = "1.4.1"
|
|
33
33
|
|
|
34
34
|
if packaging.version.parse(packaging.version.parse(airflow_version).base_version) < packaging.version.parse(
|
|
35
35
|
"2.10.0"
|
|
@@ -22,7 +22,7 @@ from types import GeneratorType
|
|
|
22
22
|
from typing import TYPE_CHECKING
|
|
23
23
|
|
|
24
24
|
from airflow.exceptions import AirflowException
|
|
25
|
-
from airflow.providers.standard.version_compat import
|
|
25
|
+
from airflow.providers.standard.version_compat import AIRFLOW_V_3_0_PLUS
|
|
26
26
|
from airflow.utils.log.logging_mixin import LoggingMixin
|
|
27
27
|
|
|
28
28
|
if TYPE_CHECKING:
|
|
@@ -45,7 +45,7 @@ XCOM_SKIPMIXIN_FOLLOWED = "followed"
|
|
|
45
45
|
|
|
46
46
|
|
|
47
47
|
def _ensure_tasks(nodes: Iterable[DAGNode]) -> Sequence[Operator]:
|
|
48
|
-
if
|
|
48
|
+
if AIRFLOW_V_3_0_PLUS:
|
|
49
49
|
from airflow.sdk import BaseOperator
|
|
50
50
|
from airflow.sdk.definitions.mappedoperator import MappedOperator
|
|
51
51
|
else:
|
|
@@ -842,6 +842,54 @@ class TestShortCircuitOperator(BasePythonTest):
|
|
|
842
842
|
"skipped": ["empty_task"]
|
|
843
843
|
}
|
|
844
844
|
|
|
845
|
+
@pytest.mark.skipif(not AIRFLOW_V_3_0_PLUS, reason="Airflow 2 implementation is different")
|
|
846
|
+
def test_short_circuit_operator_skips_sensors(self):
|
|
847
|
+
"""Test that ShortCircuitOperator properly skips sensors in Airflow 3.x."""
|
|
848
|
+
from airflow.sdk.bases.sensor import BaseSensorOperator
|
|
849
|
+
|
|
850
|
+
# Create a sensor similar to S3FileSensor to reproduce the issue
|
|
851
|
+
class CustomS3Sensor(BaseSensorOperator):
|
|
852
|
+
def __init__(self, bucket_name: str, object_key: str, **kwargs):
|
|
853
|
+
super().__init__(**kwargs)
|
|
854
|
+
self.bucket_name = bucket_name
|
|
855
|
+
self.object_key = object_key
|
|
856
|
+
self.timeout = 0
|
|
857
|
+
self.poke_interval = 0
|
|
858
|
+
|
|
859
|
+
def poke(self, context):
|
|
860
|
+
# Simulate sensor logic
|
|
861
|
+
return True
|
|
862
|
+
|
|
863
|
+
with self.dag_maker(self.dag_id):
|
|
864
|
+
# ShortCircuit that evaluates to False (should skip all downstream)
|
|
865
|
+
short_circuit = ShortCircuitOperator(
|
|
866
|
+
task_id="check_dis_is_mon_to_fri_not_holiday",
|
|
867
|
+
python_callable=lambda: False, # This causes skipping
|
|
868
|
+
)
|
|
869
|
+
|
|
870
|
+
sensor_task = CustomS3Sensor(
|
|
871
|
+
task_id="wait_for_ticker_to_secid_lookup_s3_file",
|
|
872
|
+
bucket_name="test-bucket",
|
|
873
|
+
object_key="ticker_to_secid_lookup.csv",
|
|
874
|
+
)
|
|
875
|
+
|
|
876
|
+
short_circuit >> sensor_task
|
|
877
|
+
|
|
878
|
+
dr = self.dag_maker.create_dagrun()
|
|
879
|
+
|
|
880
|
+
self.dag_maker.run_ti("check_dis_is_mon_to_fri_not_holiday", dr)
|
|
881
|
+
|
|
882
|
+
# Verify the sensor is included in the skip list by checking XCom
|
|
883
|
+
# (this was the bug - sensors were not being included in skip list)
|
|
884
|
+
tis = dr.get_task_instances()
|
|
885
|
+
xcom_data = tis[0].xcom_pull(task_ids="check_dis_is_mon_to_fri_not_holiday", key="skipmixin_key")
|
|
886
|
+
|
|
887
|
+
assert xcom_data is not None, "XCom data should exist"
|
|
888
|
+
skipped_task_ids = set(xcom_data.get("skipped", []))
|
|
889
|
+
assert "wait_for_ticker_to_secid_lookup_s3_file" in skipped_task_ids, (
|
|
890
|
+
"Sensor should be skipped by ShortCircuitOperator"
|
|
891
|
+
)
|
|
892
|
+
|
|
845
893
|
|
|
846
894
|
virtualenv_string_args: list[str] = []
|
|
847
895
|
|
|
@@ -298,3 +298,84 @@ class TestSkipMixin:
|
|
|
298
298
|
error_message = r"'branch_task_ids' must contain only valid task_ids. Invalid tasks found: .*"
|
|
299
299
|
with pytest.raises(AirflowException, match=error_message):
|
|
300
300
|
SkipMixin().skip_all_except(ti=ti1, branch_task_ids=branch_task_ids)
|
|
301
|
+
|
|
302
|
+
@pytest.mark.skipif(not AIRFLOW_V_3_0_PLUS, reason="Issue only exists in Airflow 3.x")
|
|
303
|
+
def test_ensure_tasks_includes_sensors_airflow_3x(self, dag_maker):
|
|
304
|
+
"""Test that sensors (inheriting from airflow.sdk.BaseOperator) are properly handled by _ensure_tasks."""
|
|
305
|
+
from airflow.providers.standard.utils.skipmixin import _ensure_tasks
|
|
306
|
+
from airflow.sdk import BaseOperator as SDKBaseOperator
|
|
307
|
+
from airflow.sdk.bases.sensor import BaseSensorOperator
|
|
308
|
+
|
|
309
|
+
class DummySensor(BaseSensorOperator):
|
|
310
|
+
def __init__(self, **kwargs):
|
|
311
|
+
super().__init__(**kwargs)
|
|
312
|
+
self.timeout = 0
|
|
313
|
+
self.poke_interval = 0
|
|
314
|
+
|
|
315
|
+
def poke(self, context):
|
|
316
|
+
return True
|
|
317
|
+
|
|
318
|
+
with dag_maker("dag_test_sensor_skipping") as dag:
|
|
319
|
+
regular_task = EmptyOperator(task_id="regular_task")
|
|
320
|
+
sensor_task = DummySensor(task_id="sensor_task")
|
|
321
|
+
downstream_task = EmptyOperator(task_id="downstream_task")
|
|
322
|
+
|
|
323
|
+
regular_task >> [sensor_task, downstream_task]
|
|
324
|
+
|
|
325
|
+
dag_maker.create_dagrun(run_id=DEFAULT_DAG_RUN_ID)
|
|
326
|
+
|
|
327
|
+
downstream_nodes = dag.get_task("regular_task").downstream_list
|
|
328
|
+
task_list = _ensure_tasks(downstream_nodes)
|
|
329
|
+
|
|
330
|
+
# Verify both the regular operator and sensor are included
|
|
331
|
+
task_ids = [t.task_id for t in task_list]
|
|
332
|
+
assert "sensor_task" in task_ids, "Sensor should be included in task list"
|
|
333
|
+
assert "downstream_task" in task_ids, "Regular task should be included in task list"
|
|
334
|
+
assert len(task_list) == 2, "Both tasks should be included"
|
|
335
|
+
|
|
336
|
+
# Also verify that the sensor is actually an instance of the correct BaseOperator
|
|
337
|
+
sensor_in_list = next((t for t in task_list if t.task_id == "sensor_task"), None)
|
|
338
|
+
assert sensor_in_list is not None, "Sensor task should be found in list"
|
|
339
|
+
assert isinstance(sensor_in_list, SDKBaseOperator), "Sensor should be instance of SDK BaseOperator"
|
|
340
|
+
|
|
341
|
+
@pytest.mark.skipif(not AIRFLOW_V_3_0_PLUS, reason="Integration test for Airflow 3.x sensor skipping")
|
|
342
|
+
def test_skip_sensor_in_branching_scenario(self, dag_maker):
|
|
343
|
+
"""Integration test: verify sensors are properly skipped by branching operators in Airflow 3.x."""
|
|
344
|
+
from airflow.sdk.bases.sensor import BaseSensorOperator
|
|
345
|
+
|
|
346
|
+
# Create a dummy sensor for testing
|
|
347
|
+
class DummySensor(BaseSensorOperator):
|
|
348
|
+
def __init__(self, **kwargs):
|
|
349
|
+
super().__init__(**kwargs)
|
|
350
|
+
self.timeout = 0
|
|
351
|
+
self.poke_interval = 0
|
|
352
|
+
|
|
353
|
+
def poke(self, context):
|
|
354
|
+
return True
|
|
355
|
+
|
|
356
|
+
with dag_maker("dag_test_branch_sensor_skipping"):
|
|
357
|
+
branch_task = EmptyOperator(task_id="branch_task")
|
|
358
|
+
regular_task = EmptyOperator(task_id="regular_task")
|
|
359
|
+
sensor_task = DummySensor(task_id="sensor_task")
|
|
360
|
+
branch_task >> [regular_task, sensor_task]
|
|
361
|
+
|
|
362
|
+
dag_maker.create_dagrun(run_id=DEFAULT_DAG_RUN_ID)
|
|
363
|
+
|
|
364
|
+
dag_version = DagVersion.get_latest_version(branch_task.dag_id)
|
|
365
|
+
ti_branch = TI(branch_task, run_id=DEFAULT_DAG_RUN_ID, dag_version_id=dag_version.id)
|
|
366
|
+
|
|
367
|
+
# Test skipping the sensor (follow regular_task branch)
|
|
368
|
+
with pytest.raises(DownstreamTasksSkipped) as exc_info:
|
|
369
|
+
SkipMixin().skip_all_except(ti=ti_branch, branch_task_ids="regular_task")
|
|
370
|
+
|
|
371
|
+
# Verify that the sensor task is properly marked for skipping
|
|
372
|
+
skipped_tasks = set(exc_info.value.tasks)
|
|
373
|
+
assert ("sensor_task", -1) in skipped_tasks, "Sensor task should be marked for skipping"
|
|
374
|
+
|
|
375
|
+
# Test skipping the regular task (follow sensor_task branch)
|
|
376
|
+
with pytest.raises(DownstreamTasksSkipped) as exc_info:
|
|
377
|
+
SkipMixin().skip_all_except(ti=ti_branch, branch_task_ids="sensor_task")
|
|
378
|
+
|
|
379
|
+
# Verify that the regular task is properly marked for skipping
|
|
380
|
+
skipped_tasks = set(exc_info.value.tasks)
|
|
381
|
+
assert ("regular_task", -1) in skipped_tasks, "Regular task should be marked for skipping"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|