This is an automated email from the ASF dual-hosted git repository.
ephraimanierobi pushed a change to branch v2-7-stable
in repository https://gitbox.apache.org/repos/asf/airflow.git
from c08c82e9dd fixup! Update RELEASE_NOTES.rst
add 126b507e82 Remove openlineage exclusion (#33491)
add dc44806dc3 Fix OpenLineage link in New Features notes (#33513)
add a335ca5a58 Update the release date for 2.7.0
add 100f37d9a4 Remove Pydantic limitation for version < 2 (#33507)
add 698ad804d1 Add MySQL 8.1 to supported versions. (#33576)
add 3fad890393 Fix dependencies for celery and opentelemetry for Python
3.8 (#33579)
add 6005da9ba5 Improve detection of when breeze CI image needs rebuilding
(#33603)
add fdd1bc374c Upgrade botocore/aiobotocore minimum requirements (#33649)
add 45d228239a Limit hive provider check for Python 3.11 temporarily
(#33774)
add 20bfcafa31 Limit Redis dependencies to match celery limits (#33773)
add d39abde825 Remove "eager upgrade" from PROD image completely (#33784)
add 529346b6ad Bump airflow version to 2.7.1
add b3bb92a461 Use PyPI constraints for PROD image in non-main branch
(#33789)
add 22d09d30df Fix rendering the mapped parameters when using
`expand_kwargs` method (#32272)
add 56ec8d7805 Bring back hive support for Python 3.11 (#32607)
add fc77886fd5 [Models] [Postgres] Check if the dynamically-added index is
in the table schema before adding (#32731)
add 34aef4be89 Fix getting correct commit from multiple referenced PR
(#33411)
add 04e94bf2b4 More complete fix for dev release scripts to filter commit
for PR (#33418)
add aab0f4b4af Fix handling of default value and serialization of Param
class (#33141)
add ee20c88aa3 Refactor: Simplify code in configuration.py (#33160)
add 11845bb042 respect soft_fail argument when ExternalTaskSensor runs in
deferrable mode (#33196)
add bc9ea43753 Fix pydantic warning about `orm_mode` rename (#33220)
add 84369c6291 Refactor: Simplify dict manipulation in metrics (#33264)
add d31f20b3c0 Refactor: Simplify code in serialization (#33266)
add 3439f91325 Refactor: Simplify code in settings (#33267)
add cff420b3c3 Refactor: Simplify code in utils (#33268)
add 496f917f1a Refactor: Simplify code in www (#33270)
add 4e4911b590 Refactor: Simplify code in scripts (#33295)
add d329d70632 Refactor str.startswith with tuples (#33292)
add c597ca1e8b Fix test_example_dags (#32714)
add 75bf02ebd3 Refactor: Simplify code in tests (#33293)
add 40743706d1 D205 Support - Root files (#33297)
add a33cbf0355 D205 Support - WWW (#33298)
add 601d0e41cc D401 Support - Secrets to Triggers (Inclusive) (#33338)
add 4af3afd567 D205 Support - Stragglers (#33301)
add bb6ea0f298 Remove the replace to <br> tag in Provider's view (#33326)
add 548e3f55b3 D401 Support - Airflow/api thru Airflow/auth (#33333)
add f7e39af87d Fix some missing type hints (#33334)
add 448cf69700 D401 Support - airflow/callbacks thru airflow/decorators
(#33335)
add 85d75a2f78 D401 Support - airflow/example_dags thru airflow/listeners
(#33336)
add 4c0158440f D401 Support - Macros to Operators (Inclusive) (#33337)
add 5988ea6b0c D401 Support - Utils (#33339)
add 14c91db04a D401 Support - Root Files (#33352)
add f44a3246d1 Fix DagFileProcessor interfering with dags outside its
``processor_subdir`` (#33357)
add c3580fc4dd Fix config description for base_log_folder (#33388)
add 08d4e0168c Simplify 'X for X in Y' to 'Y' where applicable (#33453)
add 6996d308a6 Create a new method used to resume the task in order to
implement specific logic for operators (#33424)
add dfe129f77c Respect "soft_fail" argument when "poke" is called (#33401)
add a597d5eb8b Allow timetable to slightly miss catchup cutoff (#33404)
add 0fbb01b5b9 Import utc from datetime and normalize its import (#33450)
add 24b11c9950 make `conf.set` case insensitive (#33452)
add 5930e18908 Fix Cluster Activity Health margin (#33456)
add f5ea787b3e Revert "respect soft_fail argument when ExternalTaskSensor
runs in deferrable mode (#33196)" (#33458)
add 00fe5465a1 Static check fixes (#33462)
add ab1fd50ef0 Fix secrets backend docs (#33471)
add 29ffb32057 Use absolute path in README.md for broken links on pypi
listing (#33473)
add 502909253e Simplify code around enumerate (#33476)
add 20ebd990a7 Consolidate import and usage of pandas (#33480)
add ea432df49a Fix a bug in formatDuration method (#33486)
add 5c8e799d92 Do not return ongoin dagrun when a end_date is less than
utcnow (#33488)
add e2578691ba Fix broken link in Modules Management page (#33499)
add 7eeba7c3a6 Use `dialect.name` in custom SA types (#33503)
add 3f8c35246f Update version_added field for configs in config file
(#33509)
add dc73e786fe Fix typo in `db upgrade` warning message (#33510)
add a3fa682e8c Set strict to True when parsing dates in webserver views
(#33512)
add f4c2b58ec8 Move license templates out of repo root (#33515)
add df352f37e7 Stop adding values to rendered templates UI when there is
no dagrun (#33516)
add 42cfb9143f Fix typo in release notes (#33521)
add 5101840c3e Sort data before groupby in TIS duration calculation
(#33535)
add d508a9a54b Add a fallback in case no first name and last name are set
(#33617)
add e77f83dbd9 Bind engine before attempting to drop archive tables
(#33622)
add e6f6dea2b1 Treat dag-defined access_control as authoritative if
defined (#33632)
add b0f9afb2b5 Set context inside templates (#33645)
add 4befd33b37 Fix 2.7.0 db migration job errors (#33652)
add 37ac1e8728 Add back `get_url_for_login` in security manager (#33660)
add 2ebfe475a1 SECURITY_MANAGER_CLASS should be a referrence to class, not
a string (#33690)
add 12db5ed16e Fix cleaning zombie RESTARTING tasks (#33706)
add e32036e8d2 Add documentation explaining template_ext (and how to
override it) (#33735)
add d83c0c511b Use f-string instead of in Airflow core (#33753)
add 69fc667ede Fix UI DAG counts including deleted DAGs (#33778)
add e793cf2eb5 Refactor: Simplofy code in dev (#33294)
add b214417c63 Refactor: Simplify code in providers/amazon (#33222)
add 5b213b81fb Refactor: Simplify code in smaller providers (#33234)
add 2c14bb45f7 Simplify conditions on len() in other providers (#33569)
add 2aa33449ed Refactor: Simplify code in providers/cncf (#33230)
add fe85781ceb Consolidate import and usage of itertools (#33479)
add dffc1d6488 Validate SqoopHook connection string and disable extra
options from public hook methods (#33039)
add 352c96e039 Replace OrderedDict with plain dict (#33508)
add 5727eb6e39 openlineage: do not try to redact Proxy objects from
deprecated config (#33393)
add 6587b75bda Replace repr() with proper formatting (#33520)
add f4557e53ea Simplify conditions on `len()` in utils (#33567)
add 64b9ebb089 Simplify conditions on len() in jobs (#33568)
add eb96b86e87 Automatically update the REVISIONS_HEADS_MAP in db.py
(#33616)
add 9314b4d77f Fix version heads map pre_commit rule (#33749)
add 8043bab9b2 Add limit 1 if required first value from query result
(#33672)
add 70bfb11904 Update version to 2.7.1
add 22df7b1112 Fix MappedTaskGroup tasks not respecting upstream
dependency (#33732)
add d254b5b367 Replace AIP-42 label with area:dynamic-task-mapping label
(#33870)
add 2d16c702d0 Raise 404 from Variable PATCH API if variable is not found
(#33885)
add 99a4f9f5df Add minimum requirement for sqlalchemy to 1.4.24 (#33892)
add a14177141f Clarify that DAG authors can also run code in DAG File
Processor (#33920)
add 71e842e274 Bumping FAB to 4.3.4 in order to fix issues with filters
(#33931)
add ebbebf14bb Differentiate 0 and unset as a default param values (#33965)
add 01e2b1696f Reinstall CI depdendencies from scratch (#33978)
add 8754b509bd Respect "soft_fail" for core async sensors (#33403)
add d0886260d7 fix(sensors): move trigger initialization from __init___ to
execute (#33926)
add f9d653bbc2 Suspend qubole provider (#33889)
add 4dd75306e3 Reorganize devel_only extra in airflow's setup.py (#33907)
add ae03ad5312 Upgrade to Pydantic 2 (#33956)
add b83fa2eba9 Explain the users how they can check if python code is
top-level (#34006)
add c874f0ff8b Use a trimmed version of README.md for PyPI (#33637)
add de95f98272 Upgrade Elasticsearch to 8 (#33135)
add 7cd0748c60 Remove print introduced in PR #32261 (#34008)
add d404d3f84a Limit celery by excluding 5.3.2 and 5.3.3 (#34031)
add 590412ba58 Fix typos (double words and it's/its) (#33623)
add b5dbf97317 Ensure that tasks wait for running indirect setup (#33903)
add 891fae5025 Update RELEASE_NOTES.rst
No new revisions were added by this update.
Summary of changes:
.github/actions/build-ci-images/action.yml | 14 +-
.github/actions/build-prod-images/action.yml | 21 +-
.github/workflows/build-images.yml | 2 +-
.pre-commit-config.yaml | 31 +-
CONTRIBUTING.rst | 6 +-
CONTRIBUTORS_QUICK_START.rst | 4 +-
Dockerfile | 56 +-
Dockerfile.ci | 6 +-
INSTALL | 6 +-
README.md | 68 ++-
RELEASE_NOTES.rst | 115 ++++-
STATIC_CODE_CHECKS.rst | 2 +
airflow/__init__.py | 2 +-
airflow/__main__.py | 1 -
airflow/api_connexion/endpoints/config_endpoint.py | 1 -
.../endpoints/role_and_permission_endpoint.py | 2 +-
.../api_connexion/endpoints/variable_endpoint.py | 4 +-
airflow/api_connexion/exceptions.py | 2 +-
airflow/api_connexion/openapi/v1.yaml | 2 +-
airflow/api_connexion/parameters.py | 4 +-
airflow/api_connexion/schemas/dag_schema.py | 6 +-
airflow/api_connexion/schemas/pool_schema.py | 12 +-
.../api_connexion/schemas/task_instance_schema.py | 4 +-
airflow/api_connexion/security.py | 4 +-
airflow/api_internal/endpoints/rpc_api_endpoint.py | 2 +-
airflow/api_internal/internal_api_call.py | 6 +-
airflow/auth/managers/fab/models/__init__.py | 8 +-
airflow/callbacks/base_callback_sink.py | 2 +-
airflow/callbacks/database_callback_sink.py | 2 +-
airflow/callbacks/pipe_callback_sink.py | 2 +-
airflow/cli/cli_config.py | 6 +-
airflow/cli/cli_parser.py | 2 +-
airflow/cli/commands/celery_command.py | 8 +-
airflow/cli/commands/connection_command.py | 12 +-
airflow/cli/commands/dag_command.py | 26 +-
airflow/cli/commands/dag_processor_command.py | 4 +-
airflow/cli/commands/db_command.py | 57 +-
airflow/cli/commands/info_command.py | 6 +-
airflow/cli/commands/internal_api_command.py | 2 +-
airflow/cli/commands/jobs_command.py | 2 +-
airflow/cli/commands/kubernetes_command.py | 8 +-
airflow/cli/commands/legacy_commands.py | 2 +-
airflow/cli/commands/pool_command.py | 16 +-
airflow/cli/commands/provider_command.py | 20 +-
airflow/cli/commands/role_command.py | 12 +-
airflow/cli/commands/scheduler_command.py | 6 +-
airflow/cli/commands/standalone_command.py | 17 +-
airflow/cli/commands/sync_perm_command.py | 2 +-
airflow/cli/commands/task_command.py | 18 +-
airflow/cli/commands/triggerer_command.py | 4 +-
airflow/cli/commands/user_command.py | 12 +-
airflow/cli/commands/variable_command.py | 14 +-
airflow/cli/commands/version_command.py | 2 +-
airflow/cli/commands/webserver_command.py | 10 +-
airflow/cli/simple_table.py | 10 +-
airflow/config_templates/config.yml | 116 +----
airflow/configuration.py | 121 +++--
airflow/dag_processing/manager.py | 38 +-
airflow/dag_processing/processor.py | 4 +-
airflow/decorators/base.py | 6 +-
airflow/decorators/branch_python.py | 2 +-
airflow/decorators/external_python.py | 3 +-
airflow/decorators/python.py | 3 +-
airflow/decorators/python_virtualenv.py | 3 +-
airflow/decorators/sensor.py | 2 +-
airflow/decorators/short_circuit.py | 3 +-
airflow/example_dags/example_sensors.py | 19 +-
.../example_setup_teardown_taskflow.py | 2 +-
airflow/exceptions.py | 5 +-
airflow/executors/base_executor.py | 22 +-
airflow/executors/executor_loader.py | 13 +-
airflow/executors/local_executor.py | 22 +-
airflow/hooks/base.py | 6 +-
airflow/hooks/filesystem.py | 2 +-
airflow/hooks/subprocess.py | 2 +-
airflow/jobs/backfill_job_runner.py | 14 +-
airflow/jobs/base_job_runner.py | 12 +-
airflow/jobs/job.py | 12 +-
airflow/jobs/local_task_job_runner.py | 6 +-
airflow/jobs/scheduler_job_runner.py | 43 +-
airflow/jobs/triggerer_job_runner.py | 31 +-
.../pre_7_4_0_compatibility/kube_client.py | 4 +-
.../pre_7_4_0_compatibility/pod_generator.py | 13 +-
.../pod_generator_deprecated.py | 6 +-
.../kubernetes/pre_7_4_0_compatibility/secret.py | 6 +-
airflow/lineage/__init__.py | 7 +-
airflow/lineage/backend.py | 2 +-
airflow/listeners/spec/dagrun.py | 6 +-
airflow/listeners/spec/lifecycle.py | 4 +-
airflow/listeners/spec/taskinstance.py | 6 +-
airflow/metrics/otel_logger.py | 27 +-
airflow/metrics/statsd_logger.py | 2 +-
airflow/metrics/validators.py | 2 +-
airflow/migrations/utils.py | 2 +-
airflow/models/abstractoperator.py | 17 +-
airflow/models/baseoperator.py | 54 +-
airflow/models/connection.py | 16 +-
airflow/models/dag.py | 85 +--
airflow/models/dagbag.py | 8 +-
airflow/models/dagcode.py | 26 +-
airflow/models/dagrun.py | 42 +-
airflow/models/expandinput.py | 5 +-
airflow/models/mappedoperator.py | 6 +-
airflow/models/param.py | 15 +-
airflow/models/serialized_dag.py | 13 +-
airflow/models/skipmixin.py | 6 +-
airflow/models/taskinstance.py | 70 ++-
airflow/models/taskinstancekey.py | 2 +-
airflow/models/taskmixin.py | 12 +-
airflow/models/taskreschedule.py | 4 +-
airflow/models/trigger.py | 8 +-
airflow/models/variable.py | 8 +-
airflow/models/xcom.py | 10 +-
airflow/models/xcom_arg.py | 12 +-
airflow/notifications/basenotifier.py | 2 +-
airflow/operators/bash.py | 2 +-
airflow/operators/datetime.py | 2 +-
airflow/operators/python.py | 9 +-
airflow/plugins_manager.py | 1 +
airflow/policies.py | 10 +-
.../SUSPENDING_AND_RESUMING_PROVIDERS.rst | 2 +-
airflow/providers/amazon/aws/hooks/base_aws.py | 7 +-
airflow/providers/amazon/aws/hooks/batch_client.py | 91 ++--
airflow/providers/amazon/aws/hooks/datasync.py | 28 +-
airflow/providers/amazon/aws/hooks/quicksight.py | 2 +-
.../providers/amazon/aws/hooks/redshift_data.py | 6 +-
airflow/providers/amazon/aws/hooks/s3.py | 7 +-
airflow/providers/amazon/aws/hooks/sagemaker.py | 31 +-
.../providers/amazon/aws/log/s3_task_handler.py | 7 +-
airflow/providers/amazon/aws/operators/eks.py | 2 +-
.../amazon/aws/operators/redshift_cluster.py | 18 +-
.../amazon/aws/secrets/secrets_manager.py | 5 +-
.../amazon/aws/transfers/redshift_to_s3.py | 2 +-
.../amazon/aws/transfers/s3_to_redshift.py | 2 +-
.../providers/amazon/aws/transfers/sql_to_s3.py | 14 +-
airflow/providers/amazon/aws/triggers/README.md | 2 +-
airflow/providers/amazon/aws/triggers/batch.py | 8 +-
airflow/providers/amazon/aws/triggers/ecs.py | 4 +-
airflow/providers/amazon/aws/triggers/emr.py | 4 +-
airflow/providers/amazon/aws/triggers/sagemaker.py | 4 +-
.../amazon/aws/utils/waiter_with_logging.py | 30 +-
airflow/providers/amazon/provider.yaml | 22 +-
airflow/providers/apache/hdfs/CHANGELOG.rst | 2 +-
airflow/providers/apache/hive/CHANGELOG.rst | 1 +
airflow/providers/apache/hive/hooks/hive.py | 23 +-
.../providers/apache/hive/operators/hive_stats.py | 2 -
airflow/providers/apache/hive/provider.yaml | 11 +-
.../apache/hive/transfers/mssql_to_hive.py | 3 +-
.../apache/hive/transfers/mysql_to_hive.py | 3 +-
.../apache/hive/transfers/vertica_to_hive.py | 3 +-
.../apache/kafka/triggers/await_message.py | 2 +-
airflow/providers/apache/sqoop/CHANGELOG.rst | 11 +
airflow/providers/apache/sqoop/hooks/sqoop.py | 37 +-
airflow/providers/apache/sqoop/operators/sqoop.py | 30 +-
airflow/providers/apache/sqoop/provider.yaml | 1 +
airflow/providers/celery/provider.yaml | 3 +-
.../kubernetes/executors/kubernetes_executor.py | 4 +-
.../providers/cncf/kubernetes/hooks/kubernetes.py | 4 +-
airflow/providers/cncf/kubernetes/operators/pod.py | 2 +-
airflow/providers/cncf/kubernetes/pod_generator.py | 2 +-
airflow/providers/cncf/kubernetes/triggers/pod.py | 11 +-
.../providers/cncf/kubernetes/utils/pod_manager.py | 20 +-
airflow/providers/common/sql/hooks/sql.pyi | 2 +-
airflow/providers/common/sql/operators/sql.py | 2 +-
airflow/providers/common/sql/operators/sql.pyi | 2 +-
airflow/providers/common/sql/sensors/sql.pyi | 2 +-
.../daskexecutor/executors/dask_executor.py | 2 +-
.../providers/databricks/hooks/databricks_sql.py | 2 +-
.../databricks/operators/databricks_sql.py | 2 +-
.../databricks/sensors/databricks_partition.py | 4 +-
airflow/providers/databricks/utils/databricks.py | 10 +-
airflow/providers/datadog/sensors/datadog.py | 2 +-
airflow/providers/dbt/cloud/hooks/dbt.py | 2 +-
airflow/providers/docker/operators/docker.py | 4 +-
airflow/providers/docker/operators/docker_swarm.py | 2 +-
airflow/providers/elasticsearch/CHANGELOG.rst | 6 +
.../providers/elasticsearch/log/es_task_handler.py | 19 +-
airflow/providers/elasticsearch/provider.yaml | 96 +++-
airflow/providers/google/cloud/hooks/bigquery.py | 4 +-
.../google/cloud/operators/kubernetes_engine.py | 2 +-
airflow/providers/google/cloud/operators/pubsub.py | 2 +-
.../providers/google/cloud/operators/workflows.py | 11 +-
airflow/providers/google/cloud/sensors/pubsub.py | 2 +-
.../google/cloud/triggers/bigquery_dts.py | 2 +-
.../google/cloud/triggers/kubernetes_engine.py | 2 +-
airflow/providers/google/cloud/triggers/pubsub.py | 2 +-
airflow/providers/grpc/operators/grpc.py | 2 +-
airflow/providers/hashicorp/hooks/vault.py | 2 +-
airflow/providers/http/hooks/http.py | 24 +-
airflow/providers/imap/hooks/imap.py | 2 +-
airflow/providers/microsoft/azure/CHANGELOG.rst | 4 +-
.../providers/microsoft/azure/hooks/data_lake.py | 2 +-
.../providers/microsoft/azure/operators/batch.py | 2 +-
.../microsoft/azure/operators/data_factory.py | 2 +-
airflow/providers/openlineage/utils/sql.py | 2 +-
airflow/providers/openlineage/utils/utils.py | 69 +--
.../providers/oracle/transfers/oracle_to_oracle.py | 6 +-
airflow/providers/papermill/operators/papermill.py | 6 +-
airflow/providers/plexus/operators/job.py | 2 +-
airflow/providers/presto/hooks/presto.py | 6 +-
airflow/providers/qubole/provider.yaml | 6 +-
airflow/providers/redis/provider.yaml | 6 +-
airflow/providers/sendgrid/utils/emailer.py | 4 +-
airflow/providers/slack/transfers/sql_to_slack.py | 4 +-
airflow/providers/smtp/hooks/smtp.py | 2 +-
airflow/providers/ssh/hooks/ssh.py | 2 +-
airflow/providers/trino/hooks/trino.py | 6 +-
airflow/providers_manager.py | 14 +-
airflow/secrets/cache.py | 18 +-
airflow/secrets/local_filesystem.py | 6 +-
airflow/security/permissions.py | 2 +-
airflow/security/utils.py | 6 +-
airflow/sensors/base.py | 20 +-
airflow/sensors/date_time.py | 10 +-
airflow/sensors/external_task.py | 9 +-
airflow/sensors/time_delta.py | 12 +-
airflow/sensors/time_sensor.py | 5 +-
airflow/sentry.py | 6 +-
airflow/serialization/enums.py | 1 +
airflow/serialization/helpers.py | 3 +-
airflow/serialization/pydantic/dag_run.py | 3 +-
airflow/serialization/pydantic/dataset.py | 12 +-
airflow/serialization/pydantic/job.py | 3 +-
airflow/serialization/pydantic/taskinstance.py | 3 +-
airflow/serialization/serde.py | 13 +-
airflow/serialization/serialized_objects.py | 44 +-
airflow/serialization/serializers/pandas.py | 8 +-
airflow/settings.py | 55 +-
airflow/task/task_runner/base_task_runner.py | 2 +-
airflow/template/templater.py | 11 +-
airflow/ti_deps/dep_context.py | 2 +-
airflow/ti_deps/deps/base_ti_dep.py | 6 +-
airflow/ti_deps/deps/dagrun_backfill_dep.py | 2 +-
airflow/ti_deps/deps/mapped_task_expanded.py | 2 +-
airflow/ti_deps/deps/not_previously_skipped_dep.py | 2 +-
airflow/ti_deps/deps/pool_slots_available_dep.py | 2 +-
airflow/ti_deps/deps/ready_to_reschedule.py | 2 +-
airflow/ti_deps/deps/trigger_rule_dep.py | 572 +++++++++++++--------
airflow/timetables/interval.py | 3 +-
airflow/timetables/trigger.py | 2 +-
airflow/triggers/base.py | 4 +-
airflow/triggers/external_task.py | 18 +-
airflow/triggers/file.py | 2 +-
airflow/utils/cli.py | 26 +-
airflow/utils/cli_action_loggers.py | 11 +-
airflow/utils/cli_app_builder.py | 2 +-
airflow/utils/code_utils.py | 4 +-
airflow/utils/configuration.py | 2 +-
airflow/utils/dag_cycle_tester.py | 2 +-
airflow/utils/dates.py | 4 +-
airflow/utils/db.py | 29 +-
airflow/utils/db_cleanup.py | 1 +
airflow/utils/decorators.py | 4 +-
airflow/utils/dot_renderer.py | 6 +-
airflow/utils/edgemodifier.py | 6 +-
airflow/utils/email.py | 6 +-
airflow/utils/empty_set.py | 2 +-
airflow/utils/event_scheduler.py | 2 +-
airflow/utils/file.py | 11 +-
airflow/utils/hashlib_wrapper.py | 3 +-
airflow/utils/helpers.py | 28 +-
airflow/utils/json.py | 2 +-
airflow/utils/log/file_task_handler.py | 15 +-
airflow/utils/log/log_reader.py | 6 +-
airflow/utils/log/logging_mixin.py | 12 +-
airflow/utils/log/secrets_masker.py | 18 +-
airflow/utils/operator_helpers.py | 2 +-
airflow/utils/platform.py | 2 +-
airflow/utils/process_utils.py | 6 +-
airflow/utils/providers_configuration_loader.py | 3 +-
airflow/utils/python_virtualenv.py | 5 +-
airflow/utils/retries.py | 3 +-
airflow/utils/serve_logs.py | 2 +-
airflow/utils/session.py | 2 +-
airflow/utils/setup_teardown.py | 17 +-
airflow/utils/sqlalchemy.py | 47 +-
airflow/utils/state.py | 10 +-
airflow/utils/task_group.py | 29 +-
airflow/utils/timeout.py | 4 +-
airflow/utils/timezone.py | 11 +-
airflow/utils/trigger_rule.py | 4 +-
airflow/utils/types.py | 2 +-
airflow/utils/weekday.py | 2 +-
airflow/utils/weight_rule.py | 2 +-
airflow/www/api/experimental/endpoints.py | 13 +-
airflow/www/decorators.py | 9 +-
airflow/www/extensions/init_appbuilder.py | 16 +-
airflow/www/extensions/init_dagbag.py | 5 +-
airflow/www/extensions/init_robots.py | 6 +-
airflow/www/extensions/init_security.py | 5 +-
airflow/www/fab_security/manager.py | 26 +-
airflow/www/fab_security/sqla/manager.py | 11 +-
airflow/www/forms.py | 5 +-
airflow/www/security.py | 48 +-
.../js/cluster-activity/live-metrics/Health.tsx | 1 +
.../static/js/cluster-activity/nav/FilterBar.tsx | 2 +-
.../www/static/js/cluster-activity/useFilters.tsx | 5 +-
airflow/www/static/js/datetime_utils.js | 3 +-
airflow/www/templates/airflow/trigger.html | 2 +-
airflow/www/templates/appbuilder/navbar_right.html | 9 +-
airflow/www/utils.py | 27 +-
airflow/www/views.py | 119 +++--
...UALLY_GENERATING_IMAGE_CACHE_AND_CONSTRAINTS.md | 2 +-
dev/README_RELEASE_AIRFLOW.md | 2 -
dev/README_RELEASE_PROVIDER_PACKAGES.md | 2 +-
dev/airflow-github | 23 +-
dev/airflow-license | 2 +-
dev/breeze/SELECTIVE_CHECKS.md | 6 +-
.../adr/0003-bootstrapping-virtual-environment.md | 6 +-
.../airflow_breeze/commands/ci_image_commands.py | 8 +-
.../commands/ci_image_commands_config.py | 1 +
.../airflow_breeze/commands/developer_commands.py | 3 +
.../commands/production_image_commands.py | 73 ++-
.../commands/production_image_commands_config.py | 4 +-
.../src/airflow_breeze/commands/setup_commands.py | 2 +-
dev/breeze/src/airflow_breeze/global_constants.py | 4 +-
.../src/airflow_breeze/params/build_ci_params.py | 6 +-
.../src/airflow_breeze/params/build_prod_params.py | 7 +-
.../airflow_breeze/params/common_build_params.py | 14 +-
.../src/airflow_breeze/params/shell_params.py | 1 +
dev/breeze/src/airflow_breeze/pre_commit_ids.py | 1 +
dev/breeze/src/airflow_breeze/utils/cdxgen.py | 2 +-
.../src/airflow_breeze/utils/common_options.py | 9 +
.../src/airflow_breeze/utils/md5_build_check.py | 74 ++-
dev/breeze/src/airflow_breeze/utils/path_utils.py | 2 +-
.../src/airflow_breeze/utils/selective_checks.py | 9 +-
dev/breeze/tests/test_selective_checks.py | 24 +-
dev/chart/build_changelog_annotations.py | 2 +-
dev/check_files.py | 4 +-
dev/perf/dags/elastic_dag.py | 2 +-
dev/prepare_release_issue.py | 2 +-
dev/send_email.py | 2 +-
dev/stats/get_important_pr_candidates.py | 11 +-
docker_tests/test_prod_image.py | 1 -
.../connections/aws.rst | 4 +-
.../connections/spark.rst | 2 +-
.../configurations-ref.rst | 0
.../index.rst | 3 +-
.../operators/cloud/bigquery_dts.rst | 2 +-
.../operators/cloud/kubernetes_engine.rst | 2 +-
.../operators/asb.rst | 2 +-
.../operators/qubole.rst | 4 +-
.../howto/create-custom-providers.rst | 2 +-
.../logging-monitoring/metrics.rst | 2 +-
.../modules_management.rst | 2 +-
docs/apache-airflow/best-practices.rst | 92 +++-
docs/apache-airflow/configurations-ref.rst | 1 +
docs/apache-airflow/core-concepts/operators.rst | 33 ++
docs/apache-airflow/extra-packages-ref.rst | 2 -
docs/apache-airflow/howto/docker-compose/index.rst | 2 +-
docs/apache-airflow/howto/email-config.rst | 2 +-
docs/apache-airflow/howto/operator/datetime.rst | 2 +-
docs/apache-airflow/howto/setup-and-teardown.rst | 8 +
docs/apache-airflow/img/airflow_erd.sha256 | 2 +-
docs/apache-airflow/img/airflow_erd.svg | 8 +-
docs/apache-airflow/installation/prerequisites.rst | 2 +-
.../installation/supported-versions.rst | 2 +-
docs/apache-airflow/public-airflow-interface.rst | 6 +-
docs/apache-airflow/security/access-control.rst | 44 ++
.../security/secrets/secrets-backend/index.rst | 4 +-
docs/apache-airflow/security/security_model.rst | 10 +-
docs/apache-airflow/security/webserver.rst | 12 +-
docs/apache-airflow/tutorial/fundamentals.rst | 2 +-
docs/build_docs.py | 6 +-
docs/docker-stack/README.md | 10 +-
docs/docker-stack/build-arg-ref.rst | 1 +
docs/docker-stack/changelog.rst | 2 +-
.../customizing/own-requirements.sh | 2 +-
.../extending/add-airflow-configuration/Dockerfile | 2 +-
.../extending/add-apt-packages/Dockerfile | 2 +-
.../add-build-essential-extend/Dockerfile | 2 +-
.../extending/add-providers/Dockerfile | 2 +-
.../extending/add-pypi-packages/Dockerfile | 2 +-
.../extending/add-requirement-packages/Dockerfile | 2 +-
.../extending/custom-providers/Dockerfile | 2 +-
.../extending/embedding-dags/Dockerfile | 2 +-
.../extending/writable-directory/Dockerfile | 2 +-
docs/docker-stack/entrypoint.rst | 22 +-
docs/exts/docs_build/fetch_inventories.py | 4 +-
docs/exts/docs_build/lint_checks.py | 6 +-
generated/PYPI_README.md | 172 +++++++
generated/README.md | 6 +
generated/provider_dependencies.json | 31 +-
helm_tests/other/test_keda.py | 2 +-
images/breeze/output-commands-hash.txt | 28 +-
images/breeze/output_build-docs.svg | 46 +-
images/breeze/output_ci-image.svg | 24 +-
images/breeze/output_ci-image_build.svg | 174 ++++---
images/breeze/output_k8s.svg | 58 +--
images/breeze/output_k8s_deploy-airflow.svg | 68 +--
images/breeze/output_k8s_run-complete-tests.svg | 88 ++--
images/breeze/output_prod-image_build.svg | 186 +++----
images/breeze/output_release-management.svg | 6 +-
...tput_release-management_add-back-references.svg | 8 +-
...management_generate-issue-content-providers.svg | 42 +-
...elease-management_install-provider-packages.svg | 74 +--
...e-management_prepare-provider-documentation.svg | 46 +-
...elease-management_prepare-provider-packages.svg | 38 +-
.../output_release-management_publish-docs.svg | 110 ++--
...utput_release-management_update-constraints.svg | 40 +-
.../output_sbom_generate-provider-requirements.svg | 6 +-
images/breeze/output_setup_config.svg | 40 +-
images/breeze/output_static-checks.svg | 94 ++--
kubernetes_tests/test_kubernetes_pod_operator.py | 2 +-
scripts/ci/installed_providers.txt | 1 +
.../ci/license-templates/LICENSE.md | 2 +
.../ci/license-templates}/LICENSE.rst | 0
.../ci/license-templates}/LICENSE.txt | 0
scripts/ci/pre_commit/common_precommit_utils.py | 3 +-
.../pre_commit_check_deferrable_default.py | 2 +-
.../pre_commit_check_pre_commit_hooks.py | 5 +-
...it_check_providers_subpackages_all_have_init.py | 2 +-
.../pre_commit_checkout_no_credentials.py | 2 +-
.../pre_commit/pre_commit_generate_pypi_readme.py | 71 +++
scripts/ci/pre_commit/pre_commit_json_schema.py | 2 +-
.../pre_commit_sort_installed_providers.py | 3 +-
.../pre_commit_sort_spelling_wordlist.py | 3 +-
.../ci/pre_commit/pre_commit_supported_versions.py | 2 +-
.../pre_commit_update_common_sql_api_stubs.py | 24 +-
.../pre_commit_update_example_dags_paths.py | 5 +-
.../pre_commit_update_providers_dependencies.py | 38 +-
.../ci/pre_commit/pre_commit_version_heads_map.py | 74 ++-
.../docker/install_from_docker_context_files.sh | 45 +-
scripts/in_container/_in_container_utils.sh | 21 +-
scripts/in_container/run_generate_constraints.sh | 2 +-
scripts/in_container/run_migration_reference.py | 4 +-
.../in_container/run_provider_yaml_files_check.py | 21 +-
.../in_container/update_quarantined_test_status.py | 5 +-
scripts/in_container/verify_providers.py | 9 +-
setup.cfg | 24 +-
setup.py | 176 ++++---
tests/always/test_connection.py | 6 +-
tests/always/test_example_dags.py | 13 +-
tests/always/test_project_structure.py | 14 +-
.../endpoints/test_provider_endpoint.py | 53 +-
.../endpoints/test_variable_endpoint.py | 15 +
tests/auth/managers/fab/test_models.py | 62 +++
tests/cli/commands/test_config_command.py | 4 +-
tests/cli/commands/test_db_command.py | 2 +-
tests/conftest.py | 2 +-
tests/core/test_configuration.py | 22 +-
tests/core/test_policies.py | 4 +-
tests/dag_processing/test_job_runner.py | 35 +-
tests/decorators/test_python.py | 2 +-
tests/decorators/test_task_group.py | 46 ++
tests/jobs/test_scheduler_job.py | 28 +-
tests/jobs/test_triggerer_job_logging.py | 2 +-
tests/models/test_dag.py | 23 +-
tests/models/test_dagrun.py | 2 +-
tests/models/test_mappedoperator.py | 91 +++-
tests/models/test_param.py | 31 ++
tests/models/test_skipmixin.py | 2 +-
tests/models/test_taskinstance.py | 88 +++-
tests/models/test_taskmixin.py | 10 +-
tests/operators/test_python.py | 8 +-
.../amazon/aws/hooks/test_batch_waiters.py | 8 +-
tests/providers/amazon/aws/sensors/test_eks.py | 10 +-
.../amazon/aws/transfers/test_salesforce_to_s3.py | 21 +-
tests/providers/amazon/aws/utils/test_utils.py | 6 +-
tests/providers/apache/hive/hooks/test_hive.py | 29 +-
.../apache/hive/operators/test_hive_stats.py | 4 -
.../apache/hive/transfers/test_mssql_to_hive.py | 5 +-
.../apache/hive/transfers/test_mysql_to_hive.py | 16 +-
.../apache/hive/transfers/test_s3_to_hive.py | 11 +-
.../providers/apache/spark/hooks/test_spark_sql.py | 4 +-
tests/providers/apache/sqoop/hooks/test_sqoop.py | 51 +-
.../providers/apache/sqoop/operators/test_sqoop.py | 16 +-
.../providers/cncf/kubernetes/triggers/test_pod.py | 5 +-
tests/providers/common/sql/hooks/test_sql.py | 2 +-
.../databricks/hooks/test_databricks_sql.py | 2 +-
.../elasticsearch/log/elasticmock/__init__.py | 44 +-
.../log/elasticmock/fake_elasticsearch.py | 26 +-
.../log/elasticmock/utilities/__init__.py | 180 +++++++
.../elasticsearch/log/test_es_task_handler.py | 10 +-
tests/providers/exasol/hooks/test_sql.py | 2 +-
.../cloud/log/test_stackdriver_task_handler.py | 2 +-
.../test_cloud_storage_transfer_service.py | 9 +-
.../google/cloud/operators/test_workflows.py | 9 +-
.../google/cloud/transfers/test_postgres_to_gcs.py | 3 +-
.../cloud/transfers/test_salesforce_to_gcs.py | 18 +-
.../google/cloud/transfers/test_sql_to_gcs.py | 4 +-
.../test_cloud_storage_transfer_service.py | 2 +-
.../cloud/triggers/test_kubernetes_engine.py | 5 +-
tests/providers/grpc/operators/test_grpc.py | 4 +-
tests/providers/http/hooks/test_http.py | 9 +-
tests/providers/openlineage/plugins/test_utils.py | 6 +
tests/providers/snowflake/hooks/test_sql.py | 2 +-
tests/sensors/test_base.py | 64 ++-
tests/sensors/test_external_task_sensor.py | 8 +-
.../serialization/serializers/test_serializers.py | 4 +-
tests/serialization/test_dag_serialization.py | 9 +-
tests/serialization/test_pydantic_models.py | 14 +-
tests/system/conftest.py | 4 +-
tests/system/providers/amazon/CONTRIBUTING.md | 2 +-
tests/system/providers/amazon/aws/example_ec2.py | 3 +-
.../providers/amazon/aws/example_s3_to_sql.py | 2 +-
tests/system/providers/amazon/aws/utils/ec2.py | 2 +-
.../google/cloud/datapipelines}/__init__.py | 0
.../cloud/datapipelines/resources}/__init__.py | 0
.../cloud/sql_to_sheets/example_sql_to_sheets.py | 2 +-
.../providers/redis/example_redis_publish.py | 14 +-
tests/test_utils/mock_executor.py | 2 +-
tests/test_utils/providers.py | 2 +-
tests/test_utils/system_tests_class.py | 2 +-
tests/ti_deps/deps/test_trigger_rule_dep.py | 164 ++++++
tests/timetables/test_trigger_timetable.py | 18 +-
tests/utils/test_db_cleanup.py | 31 +-
tests/utils/test_helpers.py | 6 +-
tests/utils/test_sqlalchemy.py | 2 +-
tests/www/test_security.py | 134 +++++
tests/www/test_utils.py | 6 +-
tests/www/views/test_views_acl.py | 2 +-
tests/www/views/test_views_cluster_activity.py | 25 +-
tests/www/views/test_views_extra_links.py | 22 +-
tests/www/views/test_views_home.py | 6 +-
tests/www/views/test_views_log.py | 3 +-
tests/www/views/test_views_tasks.py | 3 +-
517 files changed, 5171 insertions(+), 3142 deletions(-)
copy docs/{apache-airflow-providers-apache-hive =>
apache-airflow-providers-elasticsearch}/configurations-ref.rst (100%)
create mode 100644 generated/PYPI_README.md
copy license-templates/LICENSE.txt => scripts/ci/license-templates/LICENSE.md
(98%)
rename {license-templates => scripts/ci/license-templates}/LICENSE.rst (100%)
rename {license-templates => scripts/ci/license-templates}/LICENSE.txt (100%)
create mode 100755 scripts/ci/pre_commit/pre_commit_generate_pypi_readme.py
create mode 100644 tests/auth/managers/fab/test_models.py
copy {airflow/api_connexion =>
tests/system/providers/google/cloud/datapipelines}/__init__.py (100%)
copy {airflow/api_connexion =>
tests/system/providers/google/cloud/datapipelines/resources}/__init__.py (100%)