This is an automated email from the ASF dual-hosted git repository.
uranusjr pushed a change to branch mapped-task-drawer
in repository https://gitbox.apache.org/repos/asf/airflow.git.
from e45d183 Anticipate when the 'Accept' header is not present
add 82d2fa7 Make date picker label visible in trigger dag view (#22379)
add 14e6b65 Add timeout and retry to the BigQueryInsertJobOperator
(#22395)
add 7b851ed Add `LocalFilesystemToGoogleDriveOperator` (#22219)
add 5178665 Update airflow_helmchart_bug_report.yml (#22400)
add 0229a28 Check if there are instances before adding a count (#22399)
add 2314694 Fix grid+calendar page titles (#22401)
add aa7d102 add issue template update to helm chart release doc (#22402)
add dd0cbaa Update doc and sample dag for S3ToSFTPOperator and
SFTPToS3Operator (#22313)
add 31096cc Correct `multiple_outputs` param descriptions mentioning
lists/tuples (#22371)
add cef004d Remove pandas upper limit now that SQLA is 1.4+ (#22162)
add cd35972 Update base sensor operator to support XCOM return value
(#20656)
add 3c24036 [FEATURE] add 1.22 1.23 K8S support (#21902)
add 179c5b6 adding `on_execute_callback` to callbacks docs (#22362)
add 62740c2 Switched cgroupspy to vendored version (#22209)
add e972b6a Add docs and example dag for AWS Glue (#22295)
add 4c28c2a Add Python 3.10 support (#22050)
add c4a59be Add default connection for redshift (#22263)
add dc4d0cc Limit Docutils to make our documentation pretty again (#22420)
add 7667d94 Fix incorrect datetime details (DagRun views) (#21357)
add f3bd2a3 Add `extraVolumeMounts` to flower (#22414)
add fa655fe Allow to except_skip None on BranchPythonOperator (#20411)
add 4de9d66 ImapAttachmentToS3Operator: fix it, update sample dag and
update doc (#22351)
add cd68540 Fix Tasks getting stuck in scheduled state (#19747)
add af76f64 Increase docker compose test wait time (#22476)
add 0f977da Fix "run_id" k8s and elasticsearch compatibility with Airflow
2.1 (#22385)
add 24a0d6a Update version added for `deactivate_stale_dags_interval`
config (#22478)
add d7dbfb7 Add documentation for bugfix release of Providers (#22383)
add d78e086 Allow migration jobs and init containers to be optional
(#22195)
add 0a99be7 Optionally not follow logs in KPO pod_manager (#22412)
add f51a674 Only recursively check XComArg if arg is operator (#22359)
add 0f0a1a7 Fix to `CloudBuildRunBuildTriggerOperator` fails to find
build id. (#22419)
add 38fde2e Fix `download_media` url in
`GoogleDisplayVideo360SDFtoGCSOperator` (#22479)
add af6a2ef Dev: Update K8s-KIND version to 0.12.0 (#22424)
add c615526 Add DOCKER_CONTEXT_FILES arg to PROD image build (#22494)
add 82a26c0 Fix the docstrings (#22497)
add ac400eb Add tool to bulk-create issues. (#22462)
add 4e24b22 Add `JenkinsBuildSensor` (#22421)
add e164932 update smart sensor docs and minor fix on
is_smart_sensor_compatible() (#22386)
add 51d61df Fix spelling (#22486)
add d231e9b Remove coerce_datetime usage from
GCSTimeSpanFileTransformOperator (#22501)
add 5760d81 Bring back python 3.6 possibility for Airlfow 2.2.5 builds
(#22511)
add 7ccde55 Add allowed 3.6 version for 2.2.5 release (#22513)
add f06b395 Add map_index and run_id to TaskFail (#22260)
add 7ab45d4 Update secrets backends to use get_conn_value instead of
get_conn_uri (#22348)
add 202a3a1 Fix failing Breeze2 tests after adding 3.6 version in main
(#22514)
add b060416 Make sure finalizers are not skipped during exception
handling (#22475)
add 05b4409 Pass X-Presto-Client-Info in presto hook (#22416)
add e3a68e2 Remove back 3.6 to unblock PRs (#22516)
add 8e7cb1f Add ignore_first_depends_on_past for scheduled jobs (#22491)
add ee1d143 Disable connection pool for celery worker (#22493)
add 388f4e8 Fix mocking the right method in secret backend test (#22524)
add acb1a10 Use logger to print message during task execution. (#22488)
add 3c7cd47 New design of system tests (#22311)
add 18da121 Replace timedelta.max with year long timdelta in test_manager
(#22527)
add 96e880d Check and disallow a relative path for sqlite (#22530)
add c063fc6 Update black precommit (#22521)
add 3c22565 Add check for coerce_datetime to Airflow 2-1 compatibility
check (#22499)
add f482ae5 Added support to override auth_type in auth_file in pgbouncer
helm configuration (#21999)
add bf0a11c Optimize direct push workflows in GitHub Actions (#22542)
add 0c30564 Pass X-Trino-Client-Info in trino hook (#22535)
add 3887239 PostgresToGoogleCloudStorageOperator - BigQuery schema type
for time zone naive fields (#22536)
add 05128a0 Add Notifications of build failures (#22552)
add 8ade99f Add doc and sample dag for S3ToFTPOperator and
FTPToS3Operator (#22534)
add d91b833 SalesforceToS3Operator: update sample dag and doc (#22489)
add ca4b8d1 Create Endpoint and Model Service, Batch Prediction and
Hyperparameter Tuning Jobs operators for Vertex AI service (#22088)
add 719135a Remove references to deprecated operators/params in PubSub
operators (#22519)
add 9cbab95 Converts Dockerfiles to be standalone (#22492)
add f612a2f Optimize Multiplatform cache builds (#22258)
add 85871eb Fix entire DAG stops when one task has end_date (#20920)
add bfc36fa Fix bugs about timezone change (#22525)
add df473d7 GoogleApiToS3Operator: update sample dag and doc (#22507)
add 02526b3 Add doc and example dag for AWS CloudFormation Operators
(#22533)
add 02976be Refactor: BigQuery to GCS Operator (#22506)
add 352d7f7 More operators for Databricks Repos (#22422)
add c0736de Add max line length setting to .editorconfig (#22540)
add 95169d1 Add a link to Databricks Job Run (#22541)
add 2af13f2 Issue 20453 google common cloud fixes part 1 (#22213)
add be0a4e4 PowerShell Remoting fail on non-zero exitcode (#22503)
add 047fdcc Merge branch 'main' into mapped-task-drawer
No new revisions were added by this update.
Summary of changes:
.asf.yaml | 2 +
.dockerignore | 1 +
.editorconfig | 2 +
.../airflow_helmchart_bug_report.yml | 3 +-
.github/boring-cyborg.yml | 1 -
.github/workflows/build-images.yml | 16 +-
.github/workflows/ci.yml | 231 +++-
.pre-commit-config.yaml | 28 +-
BREEZE.rst | 30 +-
CI.rst | 14 +-
CI_DIAGRAMS.md | 376 +++---
Dockerfile | 1081 +++++++++++++++-
Dockerfile.ci | 1368 +++++++++++++++++++-
IMAGES.rst | 7 +-
LOCAL_VIRTUALENV.rst | 12 +-
PULL_REQUEST_WORKFLOW.rst | 2 +-
README.md | 31 +-
STATIC_CODE_CHECKS.rst | 8 +-
airflow/__main__.py | 10 -
airflow/cli/commands/celery_command.py | 2 +
airflow/cli/commands/task_command.py | 4 +-
airflow/config_templates/config.yml | 13 +-
airflow/config_templates/default_airflow.cfg | 7 +
airflow/decorators/__init__.pyi | 18 +-
airflow/jobs/scheduler_job.py | 348 +++--
.../0105_48925b2719cb_add_map_index_to_taskfail.py | 158 +++
airflow/models/baseoperator.py | 4 +
airflow/models/dag.py | 11 +-
airflow/models/dagrun.py | 4 +-
airflow/models/skipmixin.py | 4 +-
airflow/models/taskfail.py | 37 +-
airflow/models/taskinstance.py | 11 +-
airflow/models/xcom.py | 15 +-
airflow/models/xcom_arg.py | 3 +-
airflow/operators/python.py | 4 +-
airflow/providers/airbyte/CHANGELOG.rst | 8 +
airflow/providers/airbyte/provider.yaml | 1 +
airflow/providers/alibaba/CHANGELOG.rst | 8 +
airflow/providers/alibaba/provider.yaml | 1 +
airflow/providers/amazon/CHANGELOG.rst | 20 +
.../aws/example_dags/example_cloudformation.py | 83 ++
...{example_s3_to_sftp.py => example_ftp_to_s3.py} | 21 +-
.../amazon/aws/example_dags/example_glue.py | 123 ++
...basic.py => example_google_api_sheets_to_s3.py} | 20 +-
...nced.py => example_google_api_youtube_to_s3.py} | 73 +-
.../example_dags/example_imap_attachment_to_s3.py | 14 +-
...{example_s3_to_sftp.py => example_s3_to_ftp.py} | 20 +-
.../amazon/aws/example_dags/example_s3_to_sftp.py | 11 +-
.../aws/example_dags/example_salesforce_to_s3.py | 53 +-
.../amazon/aws/example_dags/example_sftp_to_s3.py | 10 +-
.../amazon/aws/operators/cloud_formation.py | 14 +-
airflow/providers/amazon/aws/operators/glue.py | 4 +
.../providers/amazon/aws/operators/glue_crawler.py | 12 +-
.../amazon/aws/secrets/secrets_manager.py | 31 +-
.../amazon/aws/secrets/systems_manager.py | 29 +-
.../amazon/aws/sensors/cloud_formation.py | 10 +
airflow/providers/amazon/aws/sensors/glue.py | 4 +
.../providers/amazon/aws/sensors/glue_crawler.py | 4 +
.../providers/amazon/aws/transfers/ftp_to_s3.py | 4 +
.../amazon/aws/transfers/imap_attachment_to_s3.py | 30 +-
.../providers/amazon/aws/transfers/s3_to_ftp.py | 4 +
.../providers/amazon/aws/transfers/s3_to_sftp.py | 22 +-
airflow/providers/amazon/provider.yaml | 13 +-
airflow/providers/apache/beam/CHANGELOG.rst | 13 +
airflow/providers/apache/beam/provider.yaml | 1 +
airflow/providers/apache/cassandra/CHANGELOG.rst | 8 +
airflow/providers/apache/cassandra/provider.yaml | 1 +
airflow/providers/apache/drill/CHANGELOG.rst | 8 +
airflow/providers/apache/drill/provider.yaml | 1 +
airflow/providers/apache/druid/CHANGELOG.rst | 8 +
airflow/providers/apache/druid/provider.yaml | 1 +
airflow/providers/apache/hdfs/CHANGELOG.rst | 8 +
airflow/providers/apache/hdfs/provider.yaml | 1 +
airflow/providers/apache/hive/CHANGELOG.rst | 8 +
airflow/providers/apache/hive/provider.yaml | 1 +
airflow/providers/apache/kylin/CHANGELOG.rst | 8 +
airflow/providers/apache/kylin/provider.yaml | 1 +
airflow/providers/apache/livy/CHANGELOG.rst | 8 +
airflow/providers/apache/livy/provider.yaml | 1 +
airflow/providers/apache/pig/CHANGELOG.rst | 8 +
airflow/providers/apache/pig/provider.yaml | 1 +
airflow/providers/apache/pinot/CHANGELOG.rst | 8 +
airflow/providers/apache/pinot/provider.yaml | 1 +
airflow/providers/apache/spark/CHANGELOG.rst | 8 +
airflow/providers/apache/spark/provider.yaml | 1 +
airflow/providers/apache/sqoop/CHANGELOG.rst | 8 +
airflow/providers/apache/sqoop/provider.yaml | 1 +
airflow/providers/asana/CHANGELOG.rst | 8 +
airflow/providers/asana/provider.yaml | 1 +
airflow/providers/celery/CHANGELOG.rst | 8 +
airflow/providers/celery/provider.yaml | 1 +
airflow/providers/cloudant/CHANGELOG.rst | 8 +
airflow/providers/cloudant/provider.yaml | 1 +
airflow/providers/cncf/kubernetes/CHANGELOG.rst | 14 +
.../cncf/kubernetes/operators/kubernetes_pod.py | 5 +-
airflow/providers/cncf/kubernetes/provider.yaml | 1 +
.../providers/cncf/kubernetes/utils/pod_manager.py | 43 +-
airflow/providers/databricks/CHANGELOG.rst | 13 +
.../example_dags/example_databricks_repos.py | 26 +-
airflow/providers/databricks/hooks/databricks.py | 27 +-
.../providers/databricks/hooks/databricks_base.py | 25 +-
.../providers/databricks/operators/databricks.py | 24 +-
.../databricks/operators/databricks_repos.py | 205 ++-
airflow/providers/databricks/provider.yaml | 6 +
airflow/providers/datadog/CHANGELOG.rst | 8 +
airflow/providers/datadog/provider.yaml | 1 +
airflow/providers/dbt/cloud/CHANGELOG.rst | 10 +-
airflow/providers/dbt/cloud/provider.yaml | 1 +
airflow/providers/dingding/CHANGELOG.rst | 8 +
airflow/providers/dingding/provider.yaml | 1 +
airflow/providers/discord/CHANGELOG.rst | 8 +
airflow/providers/discord/provider.yaml | 1 +
airflow/providers/docker/CHANGELOG.rst | 13 +
airflow/providers/docker/decorators/docker.py | 6 +-
airflow/providers/docker/provider.yaml | 1 +
airflow/providers/elasticsearch/CHANGELOG.rst | 9 +
.../providers/elasticsearch/log/es_task_handler.py | 4 +-
airflow/providers/elasticsearch/provider.yaml | 1 +
airflow/providers/exasol/CHANGELOG.rst | 8 +
airflow/providers/exasol/provider.yaml | 1 +
airflow/providers/facebook/CHANGELOG.rst | 8 +
airflow/providers/facebook/provider.yaml | 1 +
airflow/providers/ftp/CHANGELOG.rst | 8 +
airflow/providers/ftp/provider.yaml | 1 +
airflow/providers/github/CHANGELOG.rst | 8 +
airflow/providers/github/provider.yaml | 1 +
airflow/providers/google/CHANGELOG.rst | 17 +
.../google/cloud/example_dags/example_vertex_ai.py | 292 +++++
airflow/providers/google/cloud/hooks/bigquery.py | 13 +-
.../providers/google/cloud/hooks/cloud_build.py | 6 +-
airflow/providers/google/cloud/hooks/mlengine.py | 4 +-
airflow/providers/google/cloud/hooks/pubsub.py | 4 +-
.../cloud/hooks/vertex_ai/batch_prediction_job.py | 347 +++++
.../cloud/hooks/vertex_ai/endpoint_service.py | 372 ++++++
.../hooks/vertex_ai/hyperparameter_tuning_job.py | 415 ++++++
.../google/cloud/hooks/vertex_ai/model_service.py | 225 ++++
airflow/providers/google/cloud/links/vertex_ai.py | 206 ++-
.../providers/google/cloud/operators/bigquery.py | 12 +-
airflow/providers/google/cloud/operators/gcs.py | 16 +-
airflow/providers/google/cloud/operators/pubsub.py | 122 +-
.../operators/vertex_ai/batch_prediction_job.py | 510 ++++++++
.../cloud/operators/vertex_ai/endpoint_service.py | 647 +++++++++
.../vertex_ai/hyperparameter_tuning_job.py | 504 ++++++++
.../cloud/operators/vertex_ai/model_service.py | 373 ++++++
.../google/cloud/secrets/secret_manager.py | 30 +-
.../google/cloud/transfers/bigquery_to_gcs.py | 36 +-
.../google/cloud/transfers/postgres_to_gcs.py | 28 +-
.../marketing_platform/hooks/display_video.py | 2 +-
.../marketing_platform/operators/display_video.py | 2 +-
airflow/providers/google/provider.yaml | 21 +
.../suite/example_dags/example_local_to_drive.py | 56 +
.../google/suite/transfers/local_to_drive.py | 130 ++
airflow/providers/grpc/CHANGELOG.rst | 8 +
airflow/providers/grpc/provider.yaml | 1 +
airflow/providers/hashicorp/CHANGELOG.rst | 8 +
airflow/providers/hashicorp/provider.yaml | 1 +
airflow/providers/hashicorp/secrets/vault.py | 13 +-
airflow/providers/http/CHANGELOG.rst | 8 +
airflow/providers/http/provider.yaml | 1 +
airflow/providers/imap/CHANGELOG.rst | 8 +
airflow/providers/imap/provider.yaml | 1 +
airflow/providers/influxdb/CHANGELOG.rst | 8 +
airflow/providers/influxdb/provider.yaml | 1 +
airflow/providers/jdbc/CHANGELOG.rst | 8 +
airflow/providers/jdbc/provider.yaml | 1 +
airflow/providers/jenkins/CHANGELOG.rst | 8 +
airflow/providers/jenkins/hooks/jenkins.py | 20 +
airflow/providers/jenkins/provider.yaml | 6 +
.../providers/jenkins/sensors}/__init__.py | 0
airflow/providers/jenkins/sensors/jenkins.py | 61 +
airflow/providers/jira/CHANGELOG.rst | 8 +
airflow/providers/jira/provider.yaml | 1 +
airflow/providers/microsoft/azure/CHANGELOG.rst | 8 +
airflow/providers/microsoft/azure/provider.yaml | 1 +
.../providers/microsoft/azure/secrets/key_vault.py | 31 +-
airflow/providers/microsoft/mssql/CHANGELOG.rst | 8 +
airflow/providers/microsoft/mssql/provider.yaml | 1 +
airflow/providers/microsoft/psrp/CHANGELOG.rst | 8 +
airflow/providers/microsoft/psrp/hooks/psrp.py | 8 +-
airflow/providers/microsoft/psrp/operators/psrp.py | 4 +
airflow/providers/microsoft/psrp/provider.yaml | 1 +
airflow/providers/microsoft/winrm/CHANGELOG.rst | 8 +
airflow/providers/microsoft/winrm/provider.yaml | 1 +
airflow/providers/mongo/CHANGELOG.rst | 8 +
airflow/providers/mongo/provider.yaml | 1 +
airflow/providers/mysql/CHANGELOG.rst | 8 +
airflow/providers/mysql/provider.yaml | 1 +
airflow/providers/neo4j/CHANGELOG.rst | 8 +
airflow/providers/neo4j/provider.yaml | 1 +
airflow/providers/odbc/CHANGELOG.rst | 8 +
airflow/providers/odbc/provider.yaml | 1 +
airflow/providers/openfaas/CHANGELOG.rst | 8 +
airflow/providers/openfaas/provider.yaml | 1 +
airflow/providers/opsgenie/CHANGELOG.rst | 8 +
airflow/providers/opsgenie/provider.yaml | 1 +
airflow/providers/oracle/CHANGELOG.rst | 8 +
airflow/providers/oracle/provider.yaml | 1 +
airflow/providers/pagerduty/CHANGELOG.rst | 8 +
airflow/providers/pagerduty/provider.yaml | 1 +
airflow/providers/papermill/CHANGELOG.rst | 8 +
airflow/providers/papermill/provider.yaml | 1 +
airflow/providers/plexus/CHANGELOG.rst | 8 +
airflow/providers/plexus/provider.yaml | 1 +
airflow/providers/postgres/CHANGELOG.rst | 30 +-
airflow/providers/postgres/provider.yaml | 1 +
airflow/providers/presto/CHANGELOG.rst | 8 +
airflow/providers/presto/hooks/presto.py | 31 +
airflow/providers/presto/provider.yaml | 1 +
airflow/providers/qubole/CHANGELOG.rst | 8 +
airflow/providers/qubole/provider.yaml | 1 +
airflow/providers/redis/CHANGELOG.rst | 8 +
airflow/providers/redis/provider.yaml | 1 +
airflow/providers/salesforce/CHANGELOG.rst | 8 +
airflow/providers/salesforce/provider.yaml | 1 +
airflow/providers/samba/CHANGELOG.rst | 8 +
airflow/providers/samba/provider.yaml | 1 +
airflow/providers/segment/CHANGELOG.rst | 8 +
airflow/providers/segment/provider.yaml | 1 +
airflow/providers/sendgrid/CHANGELOG.rst | 9 +
airflow/providers/sendgrid/provider.yaml | 1 +
airflow/providers/sftp/CHANGELOG.rst | 8 +
airflow/providers/sftp/provider.yaml | 1 +
airflow/providers/singularity/CHANGELOG.rst | 8 +
airflow/providers/singularity/provider.yaml | 1 +
airflow/providers/slack/CHANGELOG.rst | 9 +
airflow/providers/slack/provider.yaml | 1 +
airflow/providers/snowflake/CHANGELOG.rst | 13 +
airflow/providers/snowflake/provider.yaml | 1 +
airflow/providers/sqlite/CHANGELOG.rst | 8 +
airflow/providers/sqlite/provider.yaml | 1 +
airflow/providers/ssh/CHANGELOG.rst | 8 +
airflow/providers/ssh/provider.yaml | 1 +
airflow/providers/tableau/CHANGELOG.rst | 8 +
airflow/providers/tableau/provider.yaml | 1 +
airflow/providers/telegram/CHANGELOG.rst | 8 +
airflow/providers/telegram/provider.yaml | 1 +
airflow/providers/trino/CHANGELOG.rst | 20 +-
airflow/providers/trino/hooks/trino.py | 32 +
airflow/providers/trino/provider.yaml | 1 +
airflow/providers/vertica/CHANGELOG.rst | 8 +
airflow/providers/vertica/provider.yaml | 1 +
airflow/providers/yandex/CHANGELOG.rst | 8 +
airflow/providers/yandex/provider.yaml | 1 +
airflow/providers/zendesk/CHANGELOG.rst | 8 +
airflow/providers/zendesk/provider.yaml | 1 +
airflow/sensors/base.py | 36 +-
airflow/serialization/schema.json | 1 +
airflow/task/task_runner/cgroup_task_runner.py | 2 +-
airflow/task/task_runner/standard_task_runner.py | 33 +-
airflow/ti_deps/deps/prev_dagrun_dep.py | 20 +
airflow/utils/db.py | 97 +-
airflow/www/app.py | 10 +
airflow/www/static/js/graph.js | 14 +-
airflow/www/static/js/main.js | 2 +-
airflow/www/templates/airflow/calendar.html | 2 +-
airflow/www/templates/airflow/tree.html | 2 +-
airflow/www/templates/airflow/trigger.html | 2 +-
airflow/www/utils.py | 5 +-
airflow/www/views.py | 10 +-
breeze | 4 +-
breeze-complete | 8 +-
chart/templates/_helpers.yaml | 4 +-
chart/templates/flower/flower-deployment.yaml | 3 +
chart/templates/jobs/migrate-database-job.yaml | 2 +
.../templates/scheduler/scheduler-deployment.yaml | 2 +
.../templates/triggerer/triggerer-deployment.yaml | 2 +
.../templates/webserver/webserver-deployment.yaml | 2 +
chart/values.schema.json | 59 +
chart/values.yaml | 16 +
dev/README_RELEASE_HELM_CHART.md | 5 +
dev/REFRESHING_CI_CACHE.md | 6 +-
dev/TRACKING_BACKTRACKING_ISSUES.md | 2 +-
dev/breeze/src/airflow_breeze/global_constants.py | 8 +-
dev/breeze/src/airflow_breeze/pre_commit_ids.py | 4 +-
dev/breeze/src/airflow_breeze/shell/enter_shell.py | 2 -
dev/breeze/src/airflow_breeze/utils/run_utils.py | 16 -
dev/prepare_bulk_issues.py | 262 ++++
dev/prepare_prod_docker_images.sh | 2 +-
dev/provider_packages/prepare_provider_packages.py | 5 +
dev/retag_docker_images.py | 2 +-
dev/templates/example_dags_template.txt.jinja2 | 10 +
dev/templates/system_test_template.txt.jinja2 | 14 +
docker_tests/test_docker_compose_quick_start.py | 4 +-
docs/apache-airflow-providers-airbyte/commits.rst | 11 +
docs/apache-airflow-providers-airbyte/index.rst | 6 +-
docs/apache-airflow-providers-alibaba/commits.rst | 3 +-
docs/apache-airflow-providers-alibaba/index.rst | 2 +-
docs/apache-airflow-providers-amazon/commits.rst | 16 +
.../connections/redshift.rst | 127 +-
docs/apache-airflow-providers-amazon/index.rst | 8 +-
.../operators/cloudformation.rst | 98 ++
.../operators/glue.rst | 101 ++
.../operators/google_api_to_s3_transfer.rst | 137 --
.../operators/imap_attachment_to_s3.rst | 66 -
.../transfer/{redshift_to_s3.rst => ftp_to_s3.rst} | 31 +-
.../operators/transfer/google_api_to_s3.rst | 82 ++
.../{s3_to_sftp.rst => imap_attachment_to_s3.rst} | 36 +-
.../operators/transfer/redshift_to_s3.rst | 5 +-
.../transfer/{redshift_to_s3.rst => s3_to_ftp.rst} | 32 +-
.../operators/transfer/s3_to_redshift.rst | 5 +-
.../operators/transfer/s3_to_sftp.rst | 27 +-
.../operators/{ => transfer}/salesforce_to_s3.rst | 38 +-
.../operators/transfer/sftp_to_s3.rst | 28 +-
docs/apache-airflow-providers-amazon/redirects.txt | 3 +
.../commits.rst | 22 +
.../apache-airflow-providers-apache-beam/index.rst | 6 +-
.../commits.rst | 11 +
.../index.rst | 2 +-
.../commits.rst | 11 +
.../index.rst | 2 +-
.../commits.rst | 11 +
.../index.rst | 6 +-
.../commits.rst | 11 +
.../apache-airflow-providers-apache-hdfs/index.rst | 2 +-
.../commits.rst | 11 +
.../apache-airflow-providers-apache-hive/index.rst | 8 +-
.../commits.rst | 11 +
.../index.rst | 2 +-
.../commits.rst | 11 +
.../apache-airflow-providers-apache-livy/index.rst | 6 +-
.../commits.rst | 11 +
docs/apache-airflow-providers-apache-pig/index.rst | 2 +-
.../commits.rst | 11 +
.../index.rst | 2 +-
.../commits.rst | 11 +
.../index.rst | 2 +-
.../commits.rst | 11 +
.../index.rst | 2 +-
docs/apache-airflow-providers-asana/commits.rst | 11 +
docs/apache-airflow-providers-asana/index.rst | 2 +-
docs/apache-airflow-providers-celery/commits.rst | 11 +
docs/apache-airflow-providers-celery/index.rst | 2 +-
docs/apache-airflow-providers-cloudant/commits.rst | 11 +
docs/apache-airflow-providers-cloudant/index.rst | 2 +-
.../commits.rst | 23 +
.../index.rst | 4 +-
.../commits.rst | 12 +
.../connections/databricks.rst | 4 +-
docs/apache-airflow-providers-databricks/index.rst | 2 +-
.../operators/repos_create.rst | 69 +
.../operators/repos_delete.rst | 61 +
docs/apache-airflow-providers-datadog/commits.rst | 11 +
docs/apache-airflow-providers-datadog/index.rst | 2 +-
.../apache-airflow-providers-dbt-cloud/commits.rst | 1 +
docs/apache-airflow-providers-dbt-cloud/index.rst | 6 +-
docs/apache-airflow-providers-dingding/commits.rst | 11 +
docs/apache-airflow-providers-dingding/index.rst | 6 +-
docs/apache-airflow-providers-discord/commits.rst | 11 +
docs/apache-airflow-providers-discord/index.rst | 6 +-
docs/apache-airflow-providers-docker/commits.rst | 14 +-
docs/apache-airflow-providers-docker/index.rst | 2 +-
.../commits.rst | 22 +
.../index.rst | 2 +-
docs/apache-airflow-providers-exasol/commits.rst | 11 +
docs/apache-airflow-providers-exasol/index.rst | 4 +-
docs/apache-airflow-providers-facebook/commits.rst | 11 +
docs/apache-airflow-providers-facebook/index.rst | 2 +-
docs/apache-airflow-providers-ftp/commits.rst | 11 +
docs/apache-airflow-providers-ftp/index.rst | 2 +-
docs/apache-airflow-providers-github/commits.rst | 11 +
docs/apache-airflow-providers-github/index.rst | 2 +-
docs/apache-airflow-providers-google/commits.rst | 16 +
docs/apache-airflow-providers-google/index.rst | 8 +-
.../operators/cloud/bigquery.rst | 61 +-
.../operators/cloud/data_loss_prevention.rst | 2 +-
.../operators/cloud/vertex_ai.rst | 160 +++
.../operators/transfer/local_to_drive.rst | 35 +-
docs/apache-airflow-providers-grpc/commits.rst | 11 +
docs/apache-airflow-providers-grpc/index.rst | 2 +-
.../apache-airflow-providers-hashicorp/commits.rst | 11 +
docs/apache-airflow-providers-hashicorp/index.rst | 6 +-
docs/apache-airflow-providers-http/commits.rst | 11 +
docs/apache-airflow-providers-http/index.rst | 2 +-
docs/apache-airflow-providers-imap/commits.rst | 11 +
docs/apache-airflow-providers-imap/index.rst | 2 +-
docs/apache-airflow-providers-influxdb/commits.rst | 11 +
docs/apache-airflow-providers-influxdb/index.rst | 4 +-
docs/apache-airflow-providers-jdbc/commits.rst | 11 +
docs/apache-airflow-providers-jdbc/index.rst | 2 +-
docs/apache-airflow-providers-jenkins/commits.rst | 11 +
docs/apache-airflow-providers-jenkins/index.rst | 2 +-
docs/apache-airflow-providers-jira/commits.rst | 11 +
docs/apache-airflow-providers-jira/index.rst | 2 +-
.../commits.rst | 7 +-
.../index.rst | 6 +-
.../commits.rst | 11 +
.../index.rst | 2 +-
.../commits.rst | 11 +
.../index.rst | 2 +-
.../commits.rst | 11 +
.../index.rst | 2 +-
docs/apache-airflow-providers-mongo/commits.rst | 11 +
docs/apache-airflow-providers-mongo/index.rst | 2 +-
docs/apache-airflow-providers-mysql/commits.rst | 11 +
docs/apache-airflow-providers-mysql/index.rst | 6 +-
docs/apache-airflow-providers-neo4j/commits.rst | 11 +
docs/apache-airflow-providers-neo4j/index.rst | 2 +-
docs/apache-airflow-providers-odbc/commits.rst | 11 +
docs/apache-airflow-providers-odbc/index.rst | 2 +-
docs/apache-airflow-providers-openfaas/commits.rst | 11 +
docs/apache-airflow-providers-openfaas/index.rst | 2 +-
docs/apache-airflow-providers-opsgenie/commits.rst | 11 +
docs/apache-airflow-providers-opsgenie/index.rst | 2 +-
docs/apache-airflow-providers-oracle/commits.rst | 11 +
docs/apache-airflow-providers-oracle/index.rst | 2 +-
.../apache-airflow-providers-pagerduty/commits.rst | 11 +
docs/apache-airflow-providers-pagerduty/index.rst | 2 +-
.../apache-airflow-providers-papermill/commits.rst | 11 +
docs/apache-airflow-providers-papermill/index.rst | 2 +-
docs/apache-airflow-providers-plexus/commits.rst | 11 +
docs/apache-airflow-providers-plexus/index.rst | 2 +-
docs/apache-airflow-providers-postgres/commits.rst | 22 +
docs/apache-airflow-providers-postgres/index.rst | 6 +-
docs/apache-airflow-providers-presto/commits.rst | 11 +
docs/apache-airflow-providers-presto/index.rst | 8 +-
docs/apache-airflow-providers-qubole/commits.rst | 7 +-
docs/apache-airflow-providers-qubole/index.rst | 2 +-
docs/apache-airflow-providers-redis/commits.rst | 11 +
docs/apache-airflow-providers-redis/index.rst | 2 +-
.../commits.rst | 11 +
docs/apache-airflow-providers-salesforce/index.rst | 8 +-
docs/apache-airflow-providers-samba/commits.rst | 11 +
docs/apache-airflow-providers-samba/index.rst | 2 +-
docs/apache-airflow-providers-segment/commits.rst | 11 +
docs/apache-airflow-providers-segment/index.rst | 2 +-
docs/apache-airflow-providers-sendgrid/commits.rst | 11 +
docs/apache-airflow-providers-sendgrid/index.rst | 2 +-
docs/apache-airflow-providers-sftp/commits.rst | 11 +
docs/apache-airflow-providers-sftp/index.rst | 6 +-
.../commits.rst | 11 +
.../apache-airflow-providers-singularity/index.rst | 2 +-
docs/apache-airflow-providers-slack/commits.rst | 11 +
docs/apache-airflow-providers-slack/index.rst | 6 +-
.../apache-airflow-providers-snowflake/commits.rst | 20 +-
docs/apache-airflow-providers-snowflake/index.rst | 6 +-
docs/apache-airflow-providers-sqlite/commits.rst | 11 +
docs/apache-airflow-providers-sqlite/index.rst | 2 +-
docs/apache-airflow-providers-ssh/commits.rst | 11 +
docs/apache-airflow-providers-ssh/index.rst | 2 +-
docs/apache-airflow-providers-tableau/commits.rst | 11 +
docs/apache-airflow-providers-tableau/index.rst | 2 +-
docs/apache-airflow-providers-telegram/commits.rst | 11 +
docs/apache-airflow-providers-telegram/index.rst | 2 +-
docs/apache-airflow-providers-trino/commits.rst | 11 +
docs/apache-airflow-providers-trino/index.rst | 8 +-
docs/apache-airflow-providers-vertica/commits.rst | 11 +
docs/apache-airflow-providers-vertica/index.rst | 2 +-
docs/apache-airflow-providers-yandex/commits.rst | 11 +
docs/apache-airflow-providers-yandex/index.rst | 2 +-
docs/apache-airflow-providers-zendesk/commits.rst | 11 +
docs/apache-airflow-providers-zendesk/index.rst | 2 +-
.../howto/create-update-providers.rst | 40 +
docs/apache-airflow/best-practices.rst | 29 +-
docs/apache-airflow/concepts/dags.rst | 12 +-
docs/apache-airflow/concepts/smart-sensors.rst | 2 +
docs/apache-airflow/installation/prerequisites.rst | 4 +-
.../logging-monitoring/callbacks.rst | 3 +-
docs/apache-airflow/migrations-ref.rst | 4 +-
.../security/secrets/secrets-backend/index.rst | 15 +-
docs/conf.py | 1 +
docs/docker-stack/build-arg-ref.rst | 18 +-
docs/docker-stack/build.rst | 123 +-
docs/docker-stack/changelog.rst | 178 +++
.../customizing/add-build-essential-custom.sh | 11 +-
...add-build-essential-custom.sh => custom-pip.sh} | 28 +-
.../docker-examples/customizing/custom-sources.sh | 14 +-
.../customizing/github-different-repository.sh | 9 +-
.../docker-examples/customizing/github-main.sh | 9 +-
.../customizing/github-v2-2-test.sh | 11 +-
...ild-essential-custom.sh => own-requirements.sh} | 27 +-
.../customizing/pypi-dev-runtime-deps.sh | 12 +-
.../customizing/pypi-extras-and-deps.sh | 9 +-
.../customizing/pypi-selected-version.sh | 12 +-
.../docker-examples/customizing/stable-airflow.sh | 10 +-
.../restricted/restricted_environments.sh | 21 +-
docs/docker-stack/index.rst | 1 +
docs/exts/docs_build/lint_checks.py | 14 +-
docs/spelling_wordlist.txt | 1 +
pyproject.toml | 2 +-
pytest.ini | 1 +
scripts/ci/docker-compose/local.yml | 2 +-
.../ci_start_arm_instance_and_connect_to_docker.sh | 71 +
.../images/ci_stop_arm_instance.sh} | 17 +-
.../ci/images/self_terminate.sh | 6 +-
scripts/ci/libraries/_all_libs.sh | 2 -
scripts/ci/libraries/_build_images.sh | 12 +-
scripts/ci/libraries/_initialization.sh | 14 +-
scripts/ci/libraries/_local_mounts.sh | 2 +-
scripts/ci/libraries/_parallel.sh | 2 +-
scripts/ci/libraries/_permissions.sh | 53 -
...ue.py => pre_commit_check_2_1_compatibility.py} | 26 +-
.../pre_commit_check_pre_commit_hook_names.py | 4 +-
.../ci/pre_commit/pre_commit_check_system_tests.py | 91 ++
.../pre_commit_inline_scripts_in_docker.py | 59 +
.../ci/pre_commit/pre_commit_lint_dockerfile.sh | 17 +-
scripts/ci/selective_ci_checks.sh | 2 +-
.../airflow-scheduler-autorestart.sh} | 0
.../{in_container/prod => docker}/clean-logs.sh | 0
scripts/{in_container => docker}/entrypoint_ci.sh | 0
.../{in_container => docker}/entrypoint_exec.sh | 0
.../prod => docker}/entrypoint_prod.sh | 0
.../docker/install_from_docker_context_files.sh | 7 +
scripts/docker/pip | 17 +-
scripts/in_container/run_generate_constraints.sh | 2 +-
scripts/in_container/run_resource_check.py | 2 +-
setup.py | 27 +-
tests/always/test_example_dags.py | 68 +-
tests/always/test_project_structure.py | 113 +-
tests/api/common/test_delete_dag.py | 10 +-
tests/charts/test_flower.py | 8 +-
tests/charts/test_migrate_database_job.py | 17 +
tests/charts/test_pgbouncer.py | 22 +
tests/charts/test_scheduler.py | 12 +
tests/charts/test_triggerer.py | 12 +
tests/charts/test_webserver.py | 12 +
tests/core/test_core.py | 25 +-
tests/dag_processing/test_manager.py | 38 +-
tests/jobs/test_scheduler_job.py | 94 +-
tests/models/test_dag.py | 28 +-
tests/models/test_dagrun.py | 9 +-
tests/models/test_skipmixin.py | 19 +-
tests/models/test_taskinstance.py | 6 +-
tests/operators/test_python.py | 6 +-
.../amazon/aws/secrets/test_secrets_manager.py | 6 +-
.../amazon/aws/secrets/test_systems_manager.py | 6 +-
.../aws/transfers/test_google_api_to_s3_system.py | 23 +-
.../aws/transfers/test_imap_attachment_to_s3.py | 2 +
.../transfers/test_imap_attachment_to_s3_system.py | 7 +-
.../amazon/aws/transfers/test_s3_to_sftp.py | 2 -
.../kubernetes/operators/test_kubernetes_pod.py | 13 +-
.../cncf/kubernetes/utils/test_pod_manager.py | 47 +-
.../providers/databricks/hooks/test_databricks.py | 2 +-
.../databricks/operators/test_databricks.py | 2 +-
.../databricks/operators/test_databricks_repos.py | 154 ++-
.../providers/google/cloud/hooks/test_bigquery.py | 53 +-
.../google/cloud/hooks/test_cloud_build.py | 18 +-
.../providers/google/cloud/hooks/test_dataflow.py | 4 +-
.../providers/google/cloud/hooks/test_dataproc.py | 4 +-
tests/providers/google/cloud/hooks/test_pubsub.py | 4 +-
tests/providers/google/cloud/hooks/test_vision.py | 30 +-
.../hooks/vertex_ai/test_batch_prediction_job.py | 184 +++
.../cloud/hooks/vertex_ai/test_endpoint_service.py | 377 ++++++
.../vertex_ai/test_hyperparameter_tuning_job.py | 185 +++
.../cloud/hooks/vertex_ai/test_model_service.py | 214 +++
.../google/cloud/operators/test_bigquery.py | 10 +-
.../google/cloud/operators/test_bigquery_system.py | 63 -
.../google/cloud/operators/test_vertex_ai.py | 616 ++++++++-
.../cloud/operators/test_vertex_ai_system.py | 16 +
.../google/cloud/secrets/test_secret_manager.py | 6 +-
.../google/cloud/transfers/test_bigquery_to_gcs.py | 32 +-
.../google/cloud/transfers/test_postgres_to_gcs.py | 26 +-
.../google/cloud/transfers/test_sheets_to_gcs.py | 6 +-
.../google/common/hooks/test_base_google.py | 18 +-
.../operators/test_display_video.py | 5 +-
.../google/suite/transfers/test_local_to_drive.py | 53 +
tests/providers/jenkins/hooks/test_jenkins.py | 15 +
.../jenkins/sensors}/__init__.py | 0
tests/providers/jenkins/sensors/test_jenkins.py | 71 +
.../azure/secrets/test_azure_key_vault.py | 6 +-
tests/providers/microsoft/psrp/hooks/test_psrp.py | 7 +-
.../microsoft/psrp/operators/test_psrp.py | 24 +-
tests/providers/presto/hooks/test_presto.py | 73 +-
tests/providers/trino/hooks/test_trino.py | 38 +-
tests/secrets/test_secrets.py | 8 +-
tests/sensors/test_base.py | 53 +-
tests/serialization/test_dag_serialization.py | 1 +
tests/system/README.md | 104 ++
tests/system/conftest.py | 58 +
tests/system/providers/google/README.md | 99 ++
.../google/bigquery/example_bigquery_dataset.py | 96 ++
.../google/bigquery/example_bigquery_operations.py | 108 ++
.../example_bigquery_operations_location.py | 88 ++
.../google/bigquery}/example_bigquery_queries.py | 89 +-
.../google/bigquery}/example_bigquery_sensors.py | 43 +-
.../google/bigquery/example_bigquery_tables.py | 237 ++--
.../bigquery/example_bigquery_to_bigquery.py | 104 ++
.../google/bigquery/example_bigquery_to_gcs.py | 105 ++
.../bigquery/resources}/example_bigquery_query.sql | 0
.../bigquery/resources/update_table_schema.json | 12 +
.../google/bigquery/resources/us-states.csv | 51 +
.../system/providers/google/conftest.py | 9 +-
.../system/utils/__init__.py | 9 +-
.../system/utils/watcher.py | 18 +-
tests/ti_deps/deps/test_prev_dagrun_dep.py | 55 +-
tests/utils/test_db_cleanup.py | 3 +-
585 files changed, 16211 insertions(+), 2257 deletions(-)
create mode 100644
airflow/migrations/versions/0105_48925b2719cb_add_map_index_to_taskfail.py
create mode 100644
airflow/providers/amazon/aws/example_dags/example_cloudformation.py
copy airflow/providers/amazon/aws/example_dags/{example_s3_to_sftp.py =>
example_ftp_to_s3.py} (70%)
create mode 100644 airflow/providers/amazon/aws/example_dags/example_glue.py
rename
airflow/providers/amazon/aws/example_dags/{example_google_api_to_s3_transfer_basic.py
=> example_google_api_sheets_to_s3.py} (73%)
rename
airflow/providers/amazon/aws/example_dags/{example_google_api_to_s3_transfer_advanced.py
=> example_google_api_youtube_to_s3.py} (59%)
copy airflow/providers/amazon/aws/example_dags/{example_s3_to_sftp.py =>
example_s3_to_ftp.py} (70%)
create mode 100644
airflow/providers/google/cloud/hooks/vertex_ai/batch_prediction_job.py
create mode 100644
airflow/providers/google/cloud/hooks/vertex_ai/endpoint_service.py
create mode 100644
airflow/providers/google/cloud/hooks/vertex_ai/hyperparameter_tuning_job.py
create mode 100644
airflow/providers/google/cloud/hooks/vertex_ai/model_service.py
create mode 100644
airflow/providers/google/cloud/operators/vertex_ai/batch_prediction_job.py
create mode 100644
airflow/providers/google/cloud/operators/vertex_ai/endpoint_service.py
create mode 100644
airflow/providers/google/cloud/operators/vertex_ai/hyperparameter_tuning_job.py
create mode 100644
airflow/providers/google/cloud/operators/vertex_ai/model_service.py
create mode 100644
airflow/providers/google/suite/example_dags/example_local_to_drive.py
create mode 100644 airflow/providers/google/suite/transfers/local_to_drive.py
copy {tests/www/api/experimental =>
airflow/providers/jenkins/sensors}/__init__.py (100%)
create mode 100644 airflow/providers/jenkins/sensors/jenkins.py
create mode 100755 dev/prepare_bulk_issues.py
create mode 100644 dev/templates/example_dags_template.txt.jinja2
create mode 100644 dev/templates/system_test_template.txt.jinja2
create mode 100644
docs/apache-airflow-providers-amazon/operators/cloudformation.rst
create mode 100644 docs/apache-airflow-providers-amazon/operators/glue.rst
delete mode 100644
docs/apache-airflow-providers-amazon/operators/google_api_to_s3_transfer.rst
delete mode 100644
docs/apache-airflow-providers-amazon/operators/imap_attachment_to_s3.rst
copy
docs/apache-airflow-providers-amazon/operators/transfer/{redshift_to_s3.rst =>
ftp_to_s3.rst} (54%)
create mode 100644
docs/apache-airflow-providers-amazon/operators/transfer/google_api_to_s3.rst
copy docs/apache-airflow-providers-amazon/operators/transfer/{s3_to_sftp.rst
=> imap_attachment_to_s3.rst} (52%)
copy
docs/apache-airflow-providers-amazon/operators/transfer/{redshift_to_s3.rst =>
s3_to_ftp.rst} (54%)
rename docs/apache-airflow-providers-amazon/operators/{ =>
transfer}/salesforce_to_s3.rst (54%)
create mode 100644
docs/apache-airflow-providers-databricks/operators/repos_create.rst
create mode 100644
docs/apache-airflow-providers-databricks/operators/repos_delete.rst
copy airflow/providers/github/CHANGELOG.rst =>
docs/apache-airflow-providers-google/operators/transfer/local_to_drive.rst (52%)
create mode 100644 docs/docker-stack/changelog.rst
copy
docs/docker-stack/docker-examples/customizing/{add-build-essential-custom.sh =>
custom-pip.sh} (63%)
copy
docs/docker-stack/docker-examples/customizing/{add-build-essential-custom.sh =>
own-requirements.sh} (63%)
create mode 100755
scripts/ci/images/ci_start_arm_instance_and_connect_to_docker.sh
copy scripts/{in_container/entrypoint_exec.sh =>
ci/images/ci_stop_arm_instance.sh} (62%)
copy docs/apache-airflow-providers-amazon/redirects.txt =>
scripts/ci/images/self_terminate.sh (78%)
delete mode 100644 scripts/ci/libraries/_permissions.sh
rename scripts/ci/pre_commit/{pre_commit_check_xcom_get_value.py =>
pre_commit_check_2_1_compatibility.py} (65%)
create mode 100755 scripts/ci/pre_commit/pre_commit_check_system_tests.py
create mode 100755 scripts/ci/pre_commit/pre_commit_inline_scripts_in_docker.py
rename scripts/{in_container/prod/airflow_scheduler_autorestart.sh =>
docker/airflow-scheduler-autorestart.sh} (100%)
rename scripts/{in_container/prod => docker}/clean-logs.sh (100%)
rename scripts/{in_container => docker}/entrypoint_ci.sh (100%)
rename scripts/{in_container => docker}/entrypoint_exec.sh (100%)
rename scripts/{in_container/prod => docker}/entrypoint_prod.sh (100%)
create mode 100644
tests/providers/google/cloud/hooks/vertex_ai/test_batch_prediction_job.py
create mode 100644
tests/providers/google/cloud/hooks/vertex_ai/test_endpoint_service.py
create mode 100644
tests/providers/google/cloud/hooks/vertex_ai/test_hyperparameter_tuning_job.py
create mode 100644
tests/providers/google/cloud/hooks/vertex_ai/test_model_service.py
delete mode 100644
tests/providers/google/cloud/operators/test_bigquery_system.py
create mode 100644
tests/providers/google/suite/transfers/test_local_to_drive.py
copy tests/{www/api/experimental => providers/jenkins/sensors}/__init__.py
(100%)
create mode 100644 tests/providers/jenkins/sensors/test_jenkins.py
create mode 100644 tests/system/README.md
create mode 100644 tests/system/conftest.py
create mode 100644 tests/system/providers/google/README.md
create mode 100644
tests/system/providers/google/bigquery/example_bigquery_dataset.py
create mode 100644
tests/system/providers/google/bigquery/example_bigquery_operations.py
create mode 100644
tests/system/providers/google/bigquery/example_bigquery_operations_location.py
rename {airflow/providers/google/cloud/example_dags =>
tests/system/providers/google/bigquery}/example_bigquery_queries.py (79%)
rename {airflow/providers/google/cloud/example_dags =>
tests/system/providers/google/bigquery}/example_bigquery_sensors.py (74%)
rename
airflow/providers/google/cloud/example_dags/example_bigquery_operations.py =>
tests/system/providers/google/bigquery/example_bigquery_tables.py (58%)
create mode 100644
tests/system/providers/google/bigquery/example_bigquery_to_bigquery.py
create mode 100644
tests/system/providers/google/bigquery/example_bigquery_to_gcs.py
rename {airflow/providers/google/cloud/example_dags =>
tests/system/providers/google/bigquery/resources}/example_bigquery_query.sql
(100%)
create mode 100644
tests/system/providers/google/bigquery/resources/update_table_schema.json
create mode 100644
tests/system/providers/google/bigquery/resources/us-states.csv
copy docs/apache-airflow-providers-amazon/redirects.txt =>
tests/system/providers/google/conftest.py (84%)
copy docs/apache-airflow-providers-amazon/redirects.txt =>
tests/system/utils/__init__.py (82%)
copy docs/docker-stack/docker-examples/customizing/stable-airflow.sh =>
tests/system/utils/watcher.py (64%)
mode change 100755 => 100644