You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airflow.apache.org by as...@apache.org on 2025/03/25 23:19:16 UTC
(airflow) branch structlog-in-logging-mixin updated (0b37eff7175 -> 7931865f907)
This is an automated email from the ASF dual-hosted git repository.
ash pushed a change to branch structlog-in-logging-mixin
in repository https://gitbox.apache.org/repos/asf/airflow.git
discard 0b37eff7175 WIP: switch all airflow logging to structlog
add c4409597235 Disable ORM access from Tasks, DAG processing and Triggers (#47320)
add 251bacf5b1f AIP-38 Show bundle version and bundle URL in code tab (#47442)
add 9f344f27309 Remove extra string interpolation from fstrings (#47436)
add e6b1b2019d7 Create asset event modal (#47421)
add 50ff8b5434f AIP-84 - Add Auth for Assets (#47136)
add 387126a1524 implement get hook in task sdk connections (#47401)
add 8ebdc878f1b Update Dag and Asset panel defaults (#47463)
add 5cda5bddd6c Add some typing and require kwargs for auth manager (#47455)
add e165be7cad4 Fix beam pipeline options False value parsing (#47419)
add 3bd28e19141 Remove deprecated `[database] load_default_connections` config option (#47414)
add aabb50255f3 Move OpenAPI generation and ui compilation pre-commits to CI section (#47461)
add 9d64a0a11ea Remove ResourceWarnings from TaskSDK (#47462)
add b275e79654f SnowflakeSqlApiOperator(without deferable flag) marks Task as Success Before Snowflake Job Completes (#46648): implementation & tests (#46672)
add 91abe012234 chore: Add logging message when core.task_success_overtime is exceeded (#47449)
add f10c4314aab Fix and simplify `get_permitted_dag_ids` in auth manager (#47458)
add f47ba94ca85 Move uuid6 to be devel dependency of openlineage (#47464)
add b5038ef360b Bump hatchling from 1.25.0 to 1.27.0 (#47454)
add 6c6a4a6a29d Add a backup implementation in AWS MwaaHook for calling the MWAA API (#47035)
add 3bcc7255288 Fix test_python_client.py (#47460)
add 97d1645204f Update task log styling (#47466)
add fbe3fc927ea Move task_sdk to a standalone task-sdk distribution (#47451)
add 0b79a477680 Remove `is_in_fab` in FAB auth manager (#47465)
add 02a4bbf0872 Make local venv and uv recommended choice for quick-start (#47474)
add 5484b7b6244 Bugfix typing after google-ads release 26.0.0 release (#47471)
add 073353b57b3 Add optional configuration for startupProbe initialDelaySeconds (#47094)
add 58c6a495651 Remove the old `task run` commands and LocalTaskJob (#47453)
add aa071608923 AIP-72: Moving BaseOperatorLink to task sdk (#47008)
add afcfb86106b chore: Update description of `execution_timeout` in OpenLineage provider.yaml (#47448)
add ab3a1869c57 AIP-84 | Add Auth for Config (#47208)
add dc7005ce145 Docs: Fix typo in unit_tests docs (#47476)
add eb7735583ae AIP-84 | Add Auth for Extra Link (#47251)
add c847bfb3f8d Change style for task logger and allow filtering by source (#47469)
add cd78078e4e4 Move asset evaluation logic out of SDK (#47484)
add 85c3fbac2df Remove regexp from dag.partial_subset method and update callers (#47360)
add 092cc57f025 Get rid of google-re2 as dependency (#47493)
add 2a63b4702fd Make command for replacing newlines with literals `\n` in `SSHOperator`connection MacOs/Linux compatible (#47491)
add 58f4ce07b12 AIP-38 Add modelName to Providers and Plugins table (#47506)
add 506ab621f9c Update pgbouncer to 1.23.1 and pgbouncer_exporter to 0.18.0 in helm chart (#47416)
add 1d70f952939 Add custom AWS Region support for STS endpoint to `hashicorp` provider (#47495)
add 122b20bb0fe fix: don't use blocking property access for async purposes (#47326)
add a4388ac4b3c Remove remaining pieces of k8s exec specific UI pages (#47422)
add 7bd8ea68215 Cleanup leftovers from api connexion (#47490)
add b563e35a7a7 Add skipimport check for aiobotocore module in aws trigger tests (#47512)
add 0ec4aebbde7 Bump axios from 1.7.7 to 1.8.2 in /airflow/ui (#47513)
add 97bd5c70cb2 Remove unused code in Fab provider (#47510)
add f0de8a9c97e Print scheduler call stack when SIGUSR2 received (#47311)
add 06be13bc517 Clean up simple auth and fab provider package json files (#47516)
add b8f2964d0fb Fix aws trigger tests, use get_async_conn for mock object (#47515)
add 5b36dd9dcde Re-add UI dist files to published docker (#47520)
add 8cc9f1fca93 Relocate airflow.auth to airflow.api_fastapi.auth (#47492)
add 2a39959f6f4 Rework Params UI Tutorial DAG (#47265)
add b3bccab3a7b Feat: Add username, password to Pinot Connection (#46826)
add 2ea7aed7550 Fix xcom_pull for task_ids=None (#47407)
add 687b86741ec Add other executor tests to K8s tests (#47472)
add efe4bed2469 Bump axios in /airflow/api_fastapi/auth/managers/simple/ui (#47524)
add bd47fd088dd Bump esbuild, vite and vitest (#47525)
add 599b3ab85de Use localhost instead of 127.0.0.1 in breeze visuals (#47534)
add dc02968418d Only grab DAGs from bundles being parsed in stale DAG cleanup (#47519)
add 6b69eb7b9aa Relocate SmoothOperator to standard provider and add tests (#47530)
add d5bba0ba48f Añadir Idrica a INTHEWILD.md (#47536)
add cffbb58bb4c Fix Breeze K8s: Patch ConfigMap [api/base_url] with Port-Forwarded Host Port (#47544)
add 686ada11081 Fix providers redirects.txt github reference link (#47540)
add d5bfbc090ab Adding .vite inside airflow/ui to gitignore (#47547)
add b5e9013d11c Avoid Title underline too short (#47546)
add 492ecfe5c03 Prepare docs for Mar 1st wave of providers (#47545)
add 4bc7ffb86df feat: allow to set task/dag labels for `DataprocCreateBatchOperator` (#46781)
add 58142bd45f6 Remove cncf.kubernetes and common.compat from chicken/egg providers list (#47517)
add e35cf2febb3 Scheduler shouldn't crash when 'executor_config' is passed for executors using task SDK (#47548)
add 2dcb15f3d1f Add Dataflow Apache Beam Java streaming system test (#47209)
add 7d29a786407 Re-introduce (and correctly call) the ExecutorSafeguard in TaskSDK (#47523)
add 1e2660b3fca AIP 84 - Add auth for asset alias (#47241)
add b2c646af408 feat: Adjust DBT OpenLineage to Airflow 3 and improve logging (#47500)
add 7f7c7a7b459 Fix comment typo in PythonOperator (#47558)
add e3fe06382df Removed accidentally added 'echo' in precommit (#47560)
add a81c1440b10 Fix the `compile-ui-assets-dev` manual pre-commit stage (#47570)
add cf0349247b6 Skip populating ti if task is deleted (#47526)
add a26ea38027d feat(AIP-84): Add Auth for ui assets (#47485)
add febd23392c0 Update documentation priority weight (#47529)
add cc70fce5bed AIP-38 Move token handling to axios interceptor (#47562)
add 8870d764176 Fix static checks (#47578)
add df8df68466e Implement `simple_auth_manager_all_admins` in simple auth manager with new auth flow (#47514)
add cc471f96c14 Move `airflow/api_fastapi/auth/managers/utils/fab` to FAB provider (#47571)
add dc81593c408 Add `logout` method in auth manager interface (#47573)
add f55db378ffe Update docs to reflect auth manager move to `api_fastapi` (#47575)
add eb18f87f091 Stop trying to reconfigure the ORM in the OpenLineage workers (#47580)
add 74d7625de13 feat(AIP-84): Add auth for ui config (#47487)
add 7661659cfc5 Fix issue with bad log debug merge of context vars (#47589)
add 802cb87fae4 Replace TaskInstanceNote composite primary key with TI.id (#47376)
add 637525cf9a2 AIP-84 Add Auth to plugins (#47504)
add 2b1c2758f41 Add name and dag_id to asset decorators (#47596)
add 45d040e01c9 AIP-84 Add Auth to providers (#47505)
add 3a9cce97fdb AIP-84 Adding logging actions (#47556)
add a96ec64083c FAB login. Fix asset URLs and missing alert (#47586)
add 9c4ec2097cd Update to latest uv version (#47605)
add cee31a8a0ca Fix static check (#47302)
add 41a8a9a4c69 AIP-84 | Add Auth for Dags (#47433)
add 5c77768bc14 AIP-84 | Add Auth for Job (#47271)
add 9d714c83cab Remove default_view property from DAG class and model (#47616)
add bfd1881fa0c AIP-84 Add safe url helper method (#47577)
add 47963530deb Add asset event create button to asset list. (#47611)
add 04552094f51 Delete paused query parameter when filter value is all. (#47607)
add 245d26dac17 Use a single http tag to report the server's location to front end, not two (#47572)
add 5dae3b5a435 Prioritize secrets backend over DB for retrieving connections (#47593)
add eebdf4e9fbb Default to unpause dag on trigger,materialize,backfill (#47627)
add 7b9617a98fd Remove unused code (#47635)
add 18324dcf5fa Add deferrable support for MwaaDagRunSensor (#47527)
add bdfea8005bb Stop calling close_all_sessions in forks (#47638)
add 0675231060c Add `get_additional_menu_items` in auth manager interface to extend the menu (#47468)
add 1b643a4f653 Retry k8s API requests in `KubernetesPodTrigger` (#47187)
add 85487a80028 Enable disabling of dag bundle versioning (#47473)
add 8ed2fa2c1a6 Fix typo in Newsfragment (#47641)
add d1a44f0d582 Heartbeat timeout docs (#46257)
add 8686c893b18 Add wait/defer support - MwaaTriggerDagRunOperator (#47528)
add b9ab6342114 Hide task duration if we don't have a start_date (#47633)
add 01cee78f7ac Move `chain`, `chain_linear` & `cross_downstream` to Task SDK (#47639)
add b364cf84f61 Pin OpenAI Python client to <1.66.0 (#47643)
add 1f7ffee8207 Add more validation of bundle config list (#47618)
add 3e77e0af16a feat(AIP-84): add auth to /ui/dependencies (#47625)
add 38fb5d50a27 feat(AIP-84): add auth to /ui/recent_dag_runs (#47623)
add 23c3e7a0272 Add pagination to Asset events list, add asset events to dag run and … (#47647)
add aeec6efccad Close the logger's file descriptor once the DagFileProcessorProcess is complete. (#47574)
add 9bbe3881639 Fix auth manager warning messages for api-server (#47655)
add 62969b6b652 Add asset expression schedule popover (#47645)
add b85f14c4cf2 Adding xmlsec pin in amazon provider (#47656)
add 7727db55b7e Mark Google Oauth2 backend as Airflow 2 only (#47622)
add 64f8bd7c2bb Correctly assign asset type in AssetProfile (#47659)
add 4acf93a4a6b test(aws): Fix aws trigger tests, use get_async_conn for mock object (#47667)
add ff48721e837 Adding 'exc_notes' to our task-sdk tests coming from structlog (#47663)
add 950107feb11 Add pre tag to preserve whitespace. Use p tag for separate lines. (#47672)
add 43deb993a0a Temporary fix to allow remote logging upload for task sdk (#47668)
add 535feabe468 Affixing a new lower bound for structlog (25.2.0) (#47676)
add 37b03c1d541 Move XComOperatorLink to serialized_objects as only API server uses it (#47674)
add a75517b1051 Add upper bound for attrs - 25.2.0 broke main (#47683)
add 720f4a35664 Fix asset imports for Type Checkers (#47686)
add 1e704526742 Fix `sync-perm` CLI command (#47626)
add 8da459e6a37 Add Dag Details tab and add Dag Version to all details tabs (#47649)
add e1f9151b1d3 Make LocalExecutor work under heavy load (#47678)
add ec39ba48106 Remove auth backends from core Airflow (#47399)
add 0495aa82d8c Lower integration and system test timeouts (#47694)
add 2ff19a5438b Implement backfill banner (#47411)
add 839e6fb1b1b Lower bind xmlsec dependency version (#47696)
add 6994f1f76b6 Switch to non-interactive mode where stdin is disabled (#47568)
add 353919045aa Add service endpoint to provide hook meta data for UI (#47588)
add 45d35e2d2a5 Include SimpleAuthManager compiled assets in packages (#47591)
add dba0ebc2a11 Make BaseAuthManager an abstract base class (#47692)
add 01dfa32c2d0 feat(AIP-84): add auth to /ui/structure/structure_data (#47631)
add 4e377872946 Update dag actions UI (#47697)
add 7d4a012b6ac feat(AIP-84): add auth to /ui/historical_metrics_data (#47650)
add 32403c9d062 feat(AIP-84): add auth to /ui/grid (#47651)
add a3435f11bbf Remove the option import create_session from db.py util (#47599)
add 46759a355d6 AIP-84 Add Auth for backfill (#47482)
add 2c2a311a900 Add back discussions for the new .asf.yml (#47710)
add df0b6c3a142 AIP 84 - Add Auth to xcom, ti, dag_warning, dag_stats, dag_source, dag_run, dag_parsing (#47532)
add c8b9187106c Remove unused DAG reparse classmethods in asset manager (#47707)
add 5fc18124341 Add required_signatures to all branch protection specs (#47711)
add 1e2eca4422a add auth to tasks endpoint (#47684)
add d095b6b82e9 Siwtch to prevgen .asf.yaml parser (#47713)
add 1b795f6e2d6 Revert "Siwtch to prevgen .asf.yaml parser (#47713)" (#47714)
add deccf93a9b1 rEapply "Siwtch to prevgen .asf.yaml parser (#47713)" (#47714) (#47715)
add 2fa9230d2a5 Rewrite asset event registration (#47677)
add 1c9c5c62ef0 Fix `get_menu_items` in FAB auth manager (#47688)
add 2862775eb0b Introduce operation helper class and refactor (#45354)
add 3875ffe1ddf Fixing static check in assets manager (#47723)
add 747b71cfd89 Fix static check failure in main (#47724)
add 746904b1d6b Add Created Asset Events to dag overview page (#47680)
add 68616610887 AIP-84 | Add UI Auth Links Endpoint (#47662)
add a915e5f7e6d add auth dagtags (#47690)
add 11c305acad2 Add back `get_url_logout` in auth managers but make it optional (#47729)
add a10e041ac2e Load dag run in grid if outside of initial fetch (#47695)
add 437264705a9 Respect logging/logging_level log level in task SDK logs (#47732)
add d91665688fc Add DagRunSelect to Graph view + other UI improvements (#47734)
add 4d279e7718e Ensure that we generate a jwt_secret before launching api servers processes (#47739)
add 328c9d45dca Fix `relative_fileloc` when DAGs are parsed with `dags reserialize` (#47737)
add 835bbcbe2a0 Show task logs in KubeExecutor on stdout (#47731)
add 47f4fe6f99c Bump trove-classifiers from 2025.3.3.18 to 2025.3.13.13 (#47741)
add b32257bc827 Introduce `filter_authorized_menu_items` to filter menu items based on permissions (#47681)
add ea347cb5263 Fix get_hook() got an unexpected keyword argument 'hook_params' in SQLExecuteQueryTrigger (#47728)
add c28334395e4 Remove DAG `orientation` field. (#47628)
add 545801ce260 Relax uperbound on `attrs` now fix has been released. (#47744)
add 0934cd6014b Add Security menu button with iframes (#47740)
add 07f0e33119f [task sdk] Remove non-standard log_meta_dict param from upload_to_remote (#47748)
add 353e17ad0cf Add delete connection button on list connections page (#47751)
add 0c0c298299d AIP-84 Add logout endpoint (#47725)
add 0dc5ed7307b Update providers metadata 2025-03-13 (#47746)
add 5f004b112f4 feat(AIP-84): add auth to /ui/backfills (#47657)
add d5ea56ae4be AIP-84 Add Auth for DAG Versioning (#47553)
add cd1340bba5d Use structlog for GitDagBundle (#47685)
add 725da8d03aa AIP-84 Adding logging actions to pending endpoints (#47704)
add f701b8bbacd Fix newsfragment PR number (#47763)
add 5222534aff4 Harden secret key usage in some other areas (#47756)
add a7443b9e9db add asset alias depends (#47727)
add c1af1f53812 Fix k8s flaky test - JWT secret might be different (#47765)
add a24e3caa277 add dag_id filters (#47730)
add 882eed3c266 Adding a log to explain which executor is used in breeze (#47764)
add db0586dc113 fix url typo (#47766)
add 4b85cb6ad08 Improve multie cron timetable non-catchup (#47716)
add 74f4860bb12 Re-work JWT Validation and Generation to use public/private key and official claims (#46981)
add 114b86b9622 Do not use FAB auth manager methods in views (#47747)
add 6c88f4e50e5 Update conf `deprecated_values` for Airflow 3 (#47761)
add 4ffb0a6fd38 Set JWT token to localStorage from cookies (#47432)
add af2461bc19a Rename `get_permitted_dag_ids` and `filter_permitted_dag_ids` to `get_authorized_dag_ids` and `filter_authorized_dag_ids` (#47640)
add ceb7f1a1670 AIP-38 Logout button (#47783)
add 1cb2c2df337 Remove `subarg` argument from `dag` commands and add support for `bundle-name` argument (#46849)
add 8c5e1b2ae18 Add plugin menu items to navbar (#47749)
add bef09272f28 Marking fab and common messaging as not ready (#47581)
add 40b40929535 Hide backfills button and tab if the dag has no schedule (#47750)
add 8d0203ba24d misc: update API version of Google ADS (#47772)
add 3c2c76a860d Update backfill banner styles (#47752)
add ddbf4dcbcf5 AIP-38 Redirect to login page on invalid JWT token (#47791)
add ffe2d3bae23 Update AWS auth manager system test to handle new way of passing JWT token (#47794)
add a75f87dd4fc Fix missing pkgutil namespace package in common provider (#47796)
add 5c6d163e68f Revert "AIP-38 Redirect to login page on invalid JWT token (#47791)" (#47797)
add 48f00a7093e FIX: BigQuery traceability labels missing in TaskGroup (#47583)
add b6a41a42938 Update Dockerfile in aws execs docs (#47799)
add d75c631c722 Remove some top-level imports to airflow.sdk from Core airflow. (#47785)
add 0d17af309d0 Fix using Edge Worker in Breeze due to rolling random secret (#47754)
add 0d64cde170c Test `MwaaHook`'s IAM fallback in system test (#47759)
add 3b47047fb88 fixed copy button (#47802)
add a6f6733b358 AIP-72: Implement short circuit and branch operators (#46584)
add 945083250d2 Set `catchup_by_default` config to False by default (#47354)
add 935d2831fe8 Remove links to x/twitter.com (#47801)
add 3bfeb5437e9 Standardize copy in details page (#47804)
add aef44d05138 Make open ai provider compatible with openai>=1.66.0 (#47726)
add 2632f050649 Fix backfill reprocess behavior selector (#47812)
add bce28affe35 docs(example_dags): we no longer show Unresolved AssetAlias (#47776)
add 64ec9e1d62d Scroll to a line number in log by link (#47795)
add 87715bcbcc0 Fix backcompat old `airflow.operators` (#47815)
add 56e0eed45b1 Fix regexp to not have too wide range (#47819)
add db4689f3c72 Fix k8s flaky test - Improve Backoff Retry (#47811)
add c52ad7e57e4 Use different approach for Shortcircuit tests (#47822)
add 9201b36af3a Remove fixed comments (#47823)
add 966ea181129 cncf.kubernetes: make the base container status check polling interval configurable (#47774)
add 007be76f734 Remove extra method for async hook getting (#47313)
add 60f6a9f1a1a Fix DayOfWeekSensor use_task_logical_date condition (#47825)
add cd7b62b804c clean token and redirect to login (#47824)
add e3b3a4856e3 Allow using dag decorator without arguments (#47831)
add 5e1f39c4881 Use TaskInstance ID as FK in TaskReschedule instead of the multiple fields (#47459)
add 3963e3452b3 Allow additional args in asset-decorated function (#47847)
add d0bcc028af5 Fix deprecation warning for `BranchMixIn` (#47856)
add d71c30cef11 Update INTHEWILD.md (#47848)
add 4b2ea14b13e Fix support for a path in `[api] base_url` (#47840)
add 779b76b8914 Handle null logical date in TimeDeltaSensorAsync (#47652)
add e2f0e26d37a Add common-messaging provider to boring-cyborg.yml (#47853)
add 62cc9aef19e AIP-84 - add auth to dag report (#47842)
add 2bc6f09ea38 AIP-84 | Add Auth for Import Error (#47270)
add 79e3700e702 convert non-absolute file path to prevent namespace explosion (#47818)
add 91b0f610ab1 AIP-72: Handle Custom XCom Backend on Task SDK (#47339)
add 0d2efe66d2b Handle var/conn not-found cases better when defined at top-level (#47863)
add bf25c37f28d AIP-38 Fix safari login loop in dev mode (#47859)
add 7605a097b36 Fix AWS auth manager system test (#47876)
add 083c3c8bccc fix PosixPath not working with file create_asset (#47880)
add 807bdca29c6 fix: Adjust OpenLineage DefaultExtractor for RuntimeTaskInstance in Airflow 3 (#47673)
add 0924676ce5d Set `wait_for_completion` to True in example_mwaa system test (#47877)
add 59555b4f535 Fix: JWT token auth in Airflow 3 beta as JWT mechanism changed (#47835)
add 144f20fd113 Fix adding auth manager to fastapi state regardless of fastapi app presence (#47883)
add 1b6330b130c Update query to use 2.0 sqlalchemy style (#47884)
add df584d3c8f3 Handle 404 from assets/by-XXX in runtime (#47852)
add 0010596c56f Fix serialization inconsistency in classic Operators (#47870)
add 53ec90c150a Remove pre-execute asset activeness check (#47893)
add 566bea2db3e Relocate utils/weekday.py to standard provider (#47892)
add 3d8269f52a6 Honor the ti while deleting XComs via execution API (#47895)
add ff0ef7581bf Update latest committers (#47875)
add f01f8eaec74 Add commit activity to readme stats (#47838)
add a993db24f79 feat: Add helper for OpenLineage version check (#47897)
add fefe92d13e1 Fix bug with XCom delete operation in Task SDK (#47904)
add 7b20f331a86 feat: Add dagrun's end_date and duration to OL facet (#47901)
add fce966e4401 Update migration rule for create_session (#47894)
add 0ff18e32768 Adds validation on backfill dryrun (#47790)
add d7c9f5899a7 Fix login redirect loop if user has multiple cookies (#47913)
add 2da75af3dc2 Fix clearing dag run endpoint (#47917)
add 04e42d3d78c Use selected try_number in dropdown if present instead of final try number during initial page load. (#47828)
add c1cffb4aadc Added a default detailed view option in user settings (#47879)
add 1fa39e3eb64 Fix asset task_id, use function name as task_id (#47834)
add 346a6adad91 Add blocking deps to task instance details pane (#47925)
add 5c6e01e09a8 Set correct day to cookie expire (#47930)
add f7aa6b7b9fb Minimize pre-installed providers for Airflow 3 (#47927)
add 7090b55d4f1 Fix typo in `ASSET_NOT_FOUND` error response (#47933)
add c4e96d4ae3e Validate JWT tokens in the ExecutionAPI for strong task identity (#47885)
add 3f34ce6157f Bump openlineage-airflow from 1.29.0 to 1.30.0 (#47871)
add 3378dbdaf3a feat(asset): add asset id to asset_expression (#47866)
add 377d786e0bb Do not include inactive dags in dependencies (#47906)
add 6ff147ab9e4 Pass more arguments to underlying DAG (#47898)
add 4a80d3e2556 Fix the upgrade checks failure in CI (#47940)
add 3220d376d9d Rewrite db usage in asset decorator operator (#47896)
add 4b83391b75f AIP-72: Get `TriggerDagRunOperator` working with Task SDK (#47882)
add 7ceb9c8d0b0 Add ability to pull XCom when passing multiple map_indexes (#46728)
add ac477b83f3c Fix typos in task sdk (#47945)
add d82584bba6a Fix k8s test: Ensure api-server healthy before any API calls (#47938)
add c7a0681a61c Correctly select multiple columns with execute() (#47928)
add b99146ba9a3 Fix broken task mapping due to XCom refactor (#47944)
add f51b173ddb0 Fix mypy boto3 appflow version (#47912)
add 78dc1a8e132 Add asset event extra to events list in asset details page (#47935)
add 47d6b065b17 Add next run to asset expression (#47932)
add 1f7747aa593 docs: enhance airflowLocalSettings value description (#47855)
add d11bc23fa03 Next run date should not be updated by backfills (#47922)
add b3080badd11 Delete asset relations when dag becomes inactive (#47903)
add e7e16379b6d Fix code blocks in extra packages reference docs (#47960)
add 59137f980fd Fix bug in XComModel deserialization for value serialized in Task SDK (#47961)
add 30e50bbe82a Fix typo in unit test docs (#47964)
add d41bbbe47fc Set dag version on expanded tis (#47953)
add b1144ec4063 Only return active assets in API by default (#47962)
add 0a0b33aca72 Fix typo in ``InProcessExecutionAPI`` (#47966)
add 2500dcf20d2 Move FAB session table creation to FAB provider (#47969)
add 4d6b0df1501 Update example_s3 system test (#47974)
add 81893ed19a5 AIP-81 - API Communication Mechanism (#45300)
add 6af0786c20b Default to the FabAuthManager in the chart (#47976)
add cae2232d914 AIP-84 Move public api under /api/v2 (#47760)
add 9b9a109f385 docs: fix numbered list (#47978)
add 857d14b34d3 Add Create Connection button and form on connection page (#47868)
add 5eef85e2cea Update task lifecycle diagram for missing states (#46056)
add f4af596beee Xcoms object storage doc clean (#47924)
add 490bb579767 Implement on_execute_callback in task sdk (#47989)
add 8e4cd194ebb Add lower-binding for microsoft azure/winrm providers (#47990)
add c2a67df7fb6 Introduce API versioning into the Execution API (#47951)
add 4174bc7d39f feat: Add helper for any provider version check (#47909)
add 9ee12577f36 fix(asset): allow extra in Metadata to be optional (#47997)
add c02da7b3871 docs(newsfragments): migration rules format fix (#47991)
add afb7fb3786b Move Secrets Backend for Variables & Connections support to Task SDK (#47946)
add 8242ba5dc09 Set simple auth manager as default (#47691)
add 79733e91cf9 Fix apache#47555: PostgreSQL URI driver issue (#47709)
add 6cc5fe15e1f Replace DAGs with dags in docs (#47959)
add 84c5579fc9e fix: compat test test_provider_not_installed failing on main (#48012)
add a68742d9948 AIP-38 Improve handling of mapped task group (#48010)
add cf745181315 Bump OL provider for Airflow 3.0.0b4 release (#48011)
add afc284ce856 Call `init` from auth managers only once (#47869)
add cc7d0345b3c Improve the error message when a DAG tries to access the DB. (#48015)
add 2483edf772c AIP-81 Move remote CLI code to airflowctl (#47981)
add dc0152c252c Fix check for asset expression in Schedule component (#48020)
add 1a5eb7a29c7 Bump various providers in preparation for Airflow 3.0.0b4 (#48013)
add 33f0f1d639b Improve handling around stopping/killing individual dag file processors (#48019)
add 99fd0b22c6b Rename Breeze variables.env file to environment_variables.env (#47998)
add 0d986b2d695 Don't expect default connections to be present (#47968)
add b2216e6114f Reflect new base_container_status_polling_interval in the TaskDecoratorCollection type (#47833)
add aad7b83c6e0 Export `chain`, `chain_linear` & `cross_downstream` (#48033)
add 06bd11aa388 fix inconsistence between the get_conn and run in `WinRMHook` (#47229)
add a25a6bc8726 Resolve conflict with uv sync and update httpx, change name of the CLI name to airflowctl, remove print (#48041)
add f624a73fa38 Remove not needed mypy check, it is already excluded now (#48039)
add e0bbf51870f Move "create db from orm" to be a public method in db manager interface (#48000)
add 118b4cdddfa Refactor container image to persist msodbcsql18 eula acceptance (#47982)
add 14f56c75d73 AIP-38 Fix SimpleAuthManager prefix (#48025)
add 62333967457 feat(api_fastapi): include asset id in asset nodes when calling "/ui/dependencies" and "/ui/structure/structure_data" (#47381)
add 02874777787 add kalyan in CODEOWNERS (#48045)
add 3a96e1e2857 Adding codeowners to task sdk (#48048)
add 2b082e670a9 fix: Re-add configuring orm for OpenLineage's listener on scheduler (#48049)
add d14f0c24d5f Adding newsfragment for workers secrets backend (#48047)
add 243fe86d4b3 Move airflow sources to airflow-core package (#47798)
add 545bf451d47 Setting Airflow context Environment variables for operators (#47644)
add 1428890c2b3 Use SimpleAuthManager for standalone (#48036)
add 8d88340fc33 Fix api server command (#48062)
add 1ec334a2ed6 Fix execution api server url in docker-compose (#48061)
add 5854fdaec8e Add download button to export flowchart (#47890)
add 5177c65d647 Adding codeowners to task execution API (#48053)
add e80b61c28bb update code owners (#48068)
add 2dec92c657c Move newsfragment about secret backends on workers to AIP-72 one (#48069)
add 5eca6c6aa78 Calculate retry eligibility before task runs (#47996)
add 1fd74fb47ca Config improvments to using JWKS with the JWT code (#48054)
add db10b891891 Updating EC2 Operators and Sensors with AWS Base classes (#47931)
add a9155ffb521 Fixes dag version interpolation in UI (#48072)
add fff9011bac9 Handle none logical date and show dependency check for the relevant state (#48067)
add 11ec899d977 Fixing upgrade checks on main (#48073)
add 8f1a53801a4 Support `@task.bash` with Task SDK (#48060)
add 2fb23c9cd4e initdb has been gone for a while. Log the correct command (#48038)
add 57cca8a731e Add asset id to link between nodes in asset graph (#48022)
add 0692b7c135f Adding .vite from auth/managers to gitignore (#48078)
add 23260e41217 Fix python operators errors when initialising plugins in virtualenv jinja script (#48035)
add bdebd53f2fe Add `vincbeck` as owner of fab provider, common messaging provider and auth manager (#48080)
add 2110ca51ab5 Add ti.running metric export (#47773)
add 6da9b0c88a3 Unquote executor airflow.cfg variable to fix #48042 (#48064)
add 5ce3a9130c0 Fixing new update installer check errors in CI (#48081)
add 7b315cbc2ed Auth Manager should raise an invalid token error when the payload cann… (#48056)
add 3ad66157755 Swap contributing links to absolute links (#48085)
add 14e15722683 Changing triggerer config option `default_capacity` to `capacity` (#48032)
add d2e6ab01e9e Bump cadwyn min version to 5.1.3 (#48091)
add 31c38c46f76 Bump trove-classifiers from 2025.3.13.13 to 2025.3.19.19 (#48023)
add 4068eea28b4 Fix test directory structure for airflow-ctl distributio (#48093)
add 88054b2193f Add dark/light mode to simple auth manager (#48065)
add 363ae9be1cf Correcting AIRFLOW_ROOT_PATH to fix CI (#48077)
add b85dd463bd5 Make wtforms optional for Providers Manager (#48094)
add 48ab15dc4e0 Fixing permission for aws-credentials in pushing docs (#48095)
add 260977b92c9 Remove unused webserver configs (#48066)
add a0220e0fd56 Remove accidentally committed file (#48096)
add e6c0793b273 Do not allow semicolon in partition_clause (#48098)
add 4837db18a6c make docker swarm service name customizable (#47957)
add ac7a4e4d97c Remove breeze's top-level init file (#48101)
add 977cf8c19ce Fix progress retrieval when parallel airflow-core tests are run (#48100)
add b96547dedc4 serialize http transports contained in composite transport (#47444)
add 84aa6539e6b Add DNS endpoint support for GKE Hooks and Operators (#48075)
add 15e76d5a1fe Update pre-commit setup docs to suggest uv (#48074)
add 1b255e54ac0 Add clarification for sql injection in Airflow security model (#48016)
add 12e143b5d5e Smaller distribution files (#48089)
add 9a835cdf80f Remove password extra - nothing uses those deps (#48027)
add 9375e490935 Add `check=False` to `fix_group_permissions` commands (#48079)
add 58e262fcb57 Change default executor to LocalExecutor (#48092)
add 4cda4386e6a docs: fix inconsistent list formatting in breeze installation guide (#48082)
add 204020a329d KubernetesPodOperator: add base_container_name to the templated fields (#47864)
add 43a0ecee0ce Add backwards compatibility for `DatasetOrTimeSchedule` (#48097)
add 92e2af404a9 Properly set JWT token in breeze (#48106)
add 2cfff4cdd15 fix: close BaseK8STest.session in only if set (#48103)
add 550b2a7d534 Fix task in taskflow docs (#48108)
add 643392f4ae0 Rebuild FAB assets (#48116)
add 7dab711509a Fix building and testing sdist packages for Airflow (#48111)
add 4372a62d5bf Improve RAT licence check (#48119)
add 8ce860d5231 add gopidesupavan to dev tools in codeowners file (#48112)
add f43873bbe5d Recreate and auto-prune caches used in CI (#48115)
add ad4a9e3c550 Move flask-based tests of providers manager to FAB provider tests (#48113)
add 974a424d6ac Run Dependabot also for NPM as well as v2 branch (#48124)
add 9b421936318 Add Edit connection button on list connection page (#48102)
add 6c046abde1f Bugfix/update NPM dependencies (#48123)
add 64c9f033ce2 Bump eslint in /providers/fab/src/airflow/providers/fab/www (#48143)
add bff3a2f96dd Bump eslint (#48127)
add 40ae3fbd3eb Bump axios (#48126)
add 23312888a08 Update dependaboat config with providers individual groups (#48144)
add 993f1848bfe Update werkzeug requirement from <3,>=2.0 to >=2.0,<4 in /airflow-core (#48136)
add 34bc0186cd1 Update sqlalchemy requirement in /airflow-core (#48138)
add a32d69e1574 Update flask-session requirement in /airflow-core (#48141)
add 682cbaaf25f Bump happy-dom from 15.11.7 to 17.4.4 in /airflow-core/src/airflow/ui (#48172)
add baeb6d8839d Remove google provider dependencies from apache-kafka provider (#47563)
add eb121a0c3c7 Remove extra if condition check in publish docs job (#48118)
add 149a023d3dd Limit flask_session to less than 0.8 (#48182)
add 6a703dd1f79 Revert "Update sqlalchemy requirement in /airflow-core (#48138)" (#48188)
add f479eac651e Bump react-router-dom (#48171)
add c03e94905e5 Improve XCom table (#48189)
add 35ef47d86fd Bump happy-dom (#48170)
add 59b54e7c336 Bump react and react-dom (#48130)
add 2c6a6dd470d Backfill "get existing run" query did not filter by dag_id (#48029)
add d1b80e4bd9f (Re)move old dependencies from the old FAB UI (#48007)
add b994a1d5421 Ensure that the `enerate-tasksdk-datamodels` is not susceptible to local config (#48198)
new 7931865f907 WIP: switch all airflow logging to structlog
This update added new revisions after undoing existing revisions.
That is to say, some revisions that were in the old version of the
branch are not in the new version. This situation occurs
when a user --force pushes a change and generates a repository
containing something like this:
* -- * -- B -- O -- O -- O (0b37eff7175)
\
N -- N -- N refs/heads/structlog-in-logging-mixin (7931865f907)
You should already have received notification emails for all of the O
revisions, and so the following emails describe only the N revisions
from the common base, B.
Any revisions marked "omit" are not gone; other references still
refer to them. Any revisions marked "discard" are gone forever.
The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
Summary of changes:
.asf.yaml | 22 +-
.dockerignore | 17 +-
.github/CODEOWNERS | 80 +-
.github/ISSUE_TEMPLATE/airflow_bug_report.yml | 2 +-
.../ISSUE_TEMPLATE/airflow_doc_issue_report.yml | 2 +-
.../airflow_helmchart_bug_report.yml | 2 +-
.../airflow_providers_bug_report.yml | 2 +-
.github/ISSUE_TEMPLATE/feature_request.yml | 2 +-
.github/SECURITY.md | 2 +-
.github/actions/breeze/action.yml | 4 +-
.github/actions/install-pre-commit/action.yml | 4 +-
.../actions/prepare_breeze_and_image/action.yml | 2 +-
.github/actions/prepare_single_ci_image/action.yml | 2 +-
.github/boring-cyborg.yml | 116 +-
.github/dependabot.yml | 974 +-
.github/workflows/additional-ci-image-checks.yml | 2 +-
.github/workflows/additional-prod-image-tests.yml | 6 +-
.github/workflows/basic-tests.yml | 25 +-
.github/workflows/ci-image-build.yml | 14 +-
.github/workflows/ci-image-checks.yml | 5 +-
.github/workflows/ci.yml | 7 +-
.github/workflows/generate-constraints.yml | 8 +-
.github/workflows/integration-system-tests.yml | 8 +-
.github/workflows/prod-image-build.yml | 38 +-
.github/workflows/prod-image-extra-checks.yml | 8 +-
.github/workflows/push-image-cache.yml | 4 +-
.github/workflows/release_dockerhub_image.yml | 8 +-
.github/workflows/task-sdk-tests.yml | 2 +-
.github/workflows/test-provider-packages.yml | 252 -
.github/workflows/test-providers.yml | 250 +
.gitignore | 14 +-
.pre-commit-config.yaml | 319 +-
.rat-excludes | 7 +-
COMMITTERS.rst | 2 +-
Dockerfile | 125 +-
Dockerfile.ci | 51 +-
INSTALL | 29 +-
INTHEWILD.md | 2 +
LICENSE | 52 -
PROVIDERS.rst | 2 +-
README.md | 20 +-
RELEASE_NOTES.rst | 6 +
.../3rd-party-licenses}/LICENSE-bootstrap.txt | 0
.../LICENSE-bootstrap3-typeahead.txt | 0
.../3rd-party-licenses}/LICENSE-d3-shape.txt | 0
.../3rd-party-licenses}/LICENSE-d3-tip.txt | 0
.../3rd-party-licenses}/LICENSE-d3js.txt | 0
.../3rd-party-licenses}/LICENSE-dagre-d3.txt | 0
.../3rd-party-licenses}/LICENSE-datatables.txt | 0
.../3rd-party-licenses}/LICENSE-elasticmock.txt | 0
.../LICENSE-eonasdan-bootstrap-datetimepicker.txt | 0
.../3rd-party-licenses}/LICENSE-flask-kerberos.txt | 0
.../3rd-party-licenses}/LICENSE-hue.txt | 0
.../3rd-party-licenses}/LICENSE-jqclock.txt | 0
.../3rd-party-licenses}/LICENSE-jquery.txt | 0
.../3rd-party-licenses}/LICENSE-moment.txt | 0
.../3rd-party-licenses}/LICENSE-normalize.txt | 0
.../LICENSE-pytest-capture-warnings.txt | 0
.../3rd-party-licenses}/LICENSE-reproducible.txt | 0
airflow-core/LICENSE | 252 +
NOTICE => airflow-core/NOTICE | 0
airflow-core/README.md | 21 +
.../docs}/.gitignore | 0
.../cluster-policies.rst | 185 +
.../dag-serialization.rst | 121 +
.../dagfile-processing.rst | 198 +
.../docs/administration-and-deployment/index.rst | 39 +
.../administration-and-deployment/kubernetes.rst | 0
.../administration-and-deployment/lineage.rst | 0
.../administration-and-deployment/listeners.rst | 193 +
.../advanced-logging-configuration.rst | 0
.../logging-monitoring/callbacks.rst | 100 +
.../logging-monitoring/check-health.rst | 0
.../logging-monitoring/errors.rst | 0
.../logging-monitoring/index.rst | 39 +
.../logging-monitoring/logging-architecture.rst | 0
.../logging-monitoring/logging-tasks.rst | 0
.../logging-monitoring/metrics.rst | 297 +
.../logging-monitoring/traces.rst | 0
.../modules_management.rst | 398 +
.../docs/administration-and-deployment/plugins.rst | 329 +
.../docs}/administration-and-deployment/pools.rst | 0
.../priority-weight.rst | 101 +
.../production-deployment.rst | 296 +
.../administration-and-deployment/scheduler.rst | 297 +
.../administration-and-deployment/web-stack.rst | 0
.../docs}/authoring-and-scheduling/connections.rst | 0
.../docs/authoring-and-scheduling/cron.rst | 70 +
.../docs/authoring-and-scheduling/datasets.rst | 545 +
.../docs/authoring-and-scheduling/deferring.rst | 433 +
.../dynamic-task-mapping.rst | 678 +
.../authoring-and-scheduling/event-scheduling.rst | 109 +
.../docs/authoring-and-scheduling/index.rst | 44 +
.../docs}/authoring-and-scheduling/serializers.rst | 0
.../docs/authoring-and-scheduling/timetable.rst | 426 +
.../docs/authoring-and-scheduling/timezone.rst | 193 +
airflow-core/docs/best-practices.rst | 1172 ++
airflow-core/docs/cli-and-env-variables-ref.rst | 114 +
airflow-core/docs/configurations-ref.rst | 52 +
.../docs/core-concepts/auth-manager/index.rst | 212 +
.../docs/core-concepts/auth-manager/simple.rst | 88 +
.../docs}/core-concepts/backfill.rst | 0
airflow-core/docs/core-concepts/dag-run.rst | 275 +
airflow-core/docs/core-concepts/dags.rst | 831 +
airflow-core/docs/core-concepts/debug.rst | 129 +
airflow-core/docs/core-concepts/executor/index.rst | 346 +
.../docs}/core-concepts/executor/local.rst | 0
.../docs}/core-concepts/executor/sequential.rst | 0
.../docs}/core-concepts/index.rst | 0
airflow-core/docs/core-concepts/objectstorage.rst | 329 +
airflow-core/docs/core-concepts/operators.rst | 306 +
airflow-core/docs/core-concepts/overview.rst | 248 +
airflow-core/docs/core-concepts/params.rst | 412 +
.../docs}/core-concepts/sensors.rst | 0
airflow-core/docs/core-concepts/taskflow.rst | 210 +
airflow-core/docs/core-concepts/tasks.rst | 237 +
.../docs}/core-concepts/variables.rst | 0
airflow-core/docs/core-concepts/xcoms.rst | 111 +
.../docs}/database-erd-ref.rst | 0
.../docs}/empty_plugin/README.md | 0
airflow-core/docs/empty_plugin/empty_plugin.py | 57 +
.../empty_plugin/templates/empty_plugin/index.html | 0
airflow-core/docs/extra-packages-ref.rst | 365 +
airflow-core/docs/faq.rst | 511 +
airflow-core/docs/howto/add-dag-tags.rst | 44 +
airflow-core/docs/howto/add-owner-links.rst | 50 +
airflow-core/docs/howto/connection.rst | 519 +
.../docs/howto/create-custom-decorator.rst | 124 +
.../docs}/howto/custom-operator.rst | 0
.../docs}/howto/custom-view-plugin.rst | 0
.../docs}/howto/customize-ui.rst | 0
airflow-core/docs/howto/define-extra-link.rst | 187 +
.../docs}/howto/docker-compose/airflow.sh | 0
.../docs/howto/docker-compose/docker-compose.yaml | 306 +
airflow-core/docs/howto/docker-compose/index.rst | 479 +
airflow-core/docs/howto/dynamic-dag-generation.rst | 220 +
.../docs}/howto/email-config.rst | 0
.../docs}/howto/export-more-env-vars.rst | 0
.../docs}/howto/index.rst | 0
airflow-core/docs/howto/listener-plugin.rst | 95 +
.../docs}/howto/notifications.rst | 0
.../docs}/howto/operator/index.rst | 0
airflow-core/docs/howto/run-behind-proxy.rst | 65 +
.../docs}/howto/run-with-systemd.rst | 0
.../docs}/howto/set-config.rst | 0
airflow-core/docs/howto/set-up-database.rst | 472 +
.../docs}/howto/setup-and-teardown.rst | 0
airflow-core/docs/howto/timetable.rst | 355 +
.../docs/howto/upgrading-from-1-10/index.rst | 1182 ++
.../howto/upgrading-from-1-10/upgrade-check.rst | 221 +
airflow-core/docs/howto/usage-cli.rst | 413 +
airflow-core/docs/howto/variable.rst | 76 +
.../docs}/img/add-dag-tags.png | Bin
.../docs}/img/add_container_python_interpreter.png | Bin
airflow-core/docs/img/airflow_erd.sha256 | 1 +
airflow-core/docs/img/airflow_erd.svg | 2466 +++
.../docs}/img/apache.jpg | Bin
.../docs}/img/arch-diag-logging.png | Bin
.../docs}/img/asset-scheduled-dags.png | Bin
.../docs}/img/assets.png | Bin
.../docs}/img/audit_log.png | Bin
.../docs}/img/aws-web-identity-federation-gcp.png | Bin
.../docs}/img/basic-dag.png | Bin
.../docs}/img/branch_note.png | Bin
.../docs}/img/branch_with_trigger.png | Bin
.../docs}/img/branch_without_trigger.png | Bin
.../docs}/img/calendar.png | Bin
.../default_instance_name_configuration.png | Bin
.../example_instance_name_configuration.png | Bin
.../docs}/img/change-ui-colors/dags-page-new.png | Bin
.../docs}/img/change-ui-colors/dags-page-old.png | Bin
.../docs}/img/change-ui-colors/graph-view-new.png | Bin
.../docs}/img/change-ui-colors/graph-view-old.png | Bin
.../docs}/img/change-ui-colors/tree-view-new.png | Bin
.../docs}/img/change-ui-colors/tree-view-old.png | Bin
.../docs}/img/cli_completion.gif | Bin
.../docs}/img/cluster_activity.png | Bin
.../docs}/img/code.png | Bin
.../docs}/img/connection_create.png | Bin
.../docs}/img/connection_edit.png | Bin
.../docs}/img/dag_doc.png | Bin
.../docs}/img/dag_file_processing_diagram.png | Bin
.../docs}/img/dag_serialization.png | Bin
.../docs}/img/dags.png | Bin
.../docs}/img/demo_graph_view.png | Bin
.../docs}/img/demo_grid_view.png | Bin
...iagram_auth_manager_airflow_architecture.md5sum | 0
.../diagram_auth_manager_airflow_architecture.png | Bin
.../diagram_auth_manager_airflow_architecture.py | 0
.../img/diagram_basic_airflow_architecture.md5sum | 0
.../img/diagram_basic_airflow_architecture.png | Bin
.../img/diagram_basic_airflow_architecture.py | 0
...agram_dag_processor_airflow_architecture.md5sum | 0
.../diagram_dag_processor_airflow_architecture.png | Bin
.../diagram_dag_processor_airflow_architecture.py | 0
...diagram_distributed_airflow_architecture.md5sum | 0
.../diagram_distributed_airflow_architecture.png | Bin
.../diagram_distributed_airflow_architecture.py | 0
...agram_fab_auth_manager_airflow_architecture.png | Bin
.../diagram_multi_team_airflow_architecture.md5sum | 0
.../diagram_multi_team_airflow_architecture.png | Bin
.../img/diagram_multi_team_airflow_architecture.py | 0
.../img/diagram_multitenant_architecture.md5sum | 0
.../docs/img/diagram_task_lifecycle.md5sum | 1 +
airflow-core/docs/img/diagram_task_lifecycle.png | Bin 0 -> 529144 bytes
airflow-core/docs/img/diagram_task_lifecycle.py | 213 +
.../docs}/img/docker-compose-pycharm.png | Bin
.../docs}/img/duration.png | Bin
.../docs}/img/edge_label_example.png | Bin
.../docs}/img/email_connection.png | Bin
.../docs}/img/gantt.png | Bin
.../docs}/img/graph.png | Bin
.../docs}/img/grid.png | Bin
.../docs}/img/grid_instance_details.png | Bin
.../docs}/img/grid_mapped_task.png | Bin
.../docs}/img/grid_run_details.png | Bin
.../docs}/img/grid_task_details.png | Bin
.../docs}/img/grid_task_group.png | Bin
.../docs}/img/howto-owner-links.gif | Bin
.../docs}/img/landing_times.png | Bin
.../docs}/img/latest_only_with_trigger.png | Bin
.../img/logos/airflow_64x64_emoji_transparent.png | Bin
.../docs}/img/logos/airflow_dark_bg.png | Bin
.../docs}/img/logos/airflow_transparent.png | Bin
.../docs}/img/logos/airflow_white_bg.png | Bin
.../img/logos/github_repository_social_image.png | Bin
.../docs}/img/logos/wordmark_1.png | Bin
.../docs}/img/logos/wordmark_1.svg | 0
.../docs}/img/logos/wordmark_2.png | Bin
.../docs}/img/logos/wordmark_2.svg | 0
.../docs}/img/mapping-simple-graph.png | Bin
.../docs}/img/mapping-simple-grid.png | Bin
.../docs}/img/operator_extra_link.png | Bin
.../docs}/img/run_task_on_celery_executor.puml | 0
.../docs}/img/run_types.png | Bin
.../docs}/img/setup-teardown-complex.png | Bin
.../docs}/img/setup-teardown-group.png | Bin
.../docs}/img/setup-teardown-nesting.png | Bin
.../docs}/img/setup-teardown-parallel.png | Bin
.../docs}/img/setup-teardown-scope.png | Bin
.../docs}/img/setup-teardown-setup-group.png | Bin
.../docs}/img/setup-teardown-simple.png | Bin
.../docs}/img/task_doc.png | Bin
.../docs}/img/task_group.gif | Bin
.../docs}/img/task_instance_history.png | Bin
.../docs}/img/task_instance_history_log.png | Bin
.../docs}/img/task_lifecycle_diagram.png | Bin
.../docs}/img/template_field_renderer_path.png | Bin
.../docs/img/trigger-dag-tutorial-form-1.png | Bin 0 -> 49667 bytes
.../docs/img/trigger-dag-tutorial-form-2.png | Bin 0 -> 99562 bytes
.../docs/img/trigger-dag-tutorial-form-3.png | Bin 0 -> 68207 bytes
.../docs/img/trigger-dag-tutorial-form-4.png | Bin 0 -> 73829 bytes
.../docs}/img/tutorial-pipeline-1.png | Bin
.../docs}/img/tutorial-pipeline-2.png | Bin
.../docs}/img/ui-alert-message.png | Bin
.../docs}/img/ui-timezone-chooser.png | Bin
.../docs}/img/usage_cli_export.png | Bin
.../docs}/img/usage_cli_imgcat.png | Bin
.../docs}/img/variable_hidden.png | Bin
.../docs}/img/watcher.png | Bin
airflow-core/docs/index.rst | 188 +
airflow-core/docs/installation/dependencies.rst | 88 +
.../docs}/installation/index.rst | 0
.../docs/installation/installing-from-pypi.rst | 372 +
.../docs/installation/installing-from-sources.rst | 163 +
.../docs}/installation/prerequisites.rst | 0
.../docs}/installation/setting-up-the-database.rst | 0
.../docs}/installation/supported-versions.rst | 0
.../docs}/installation/upgrading.rst | 0
airflow-core/docs/integration.rst | 37 +
.../docs}/license.rst | 0
airflow-core/docs/migrations-ref.rst | 180 +
.../docs}/operators-and-hooks-ref.rst | 0
.../docs}/privacy_notice.rst | 0
airflow-core/docs/project.rst | 129 +
airflow-core/docs/public-airflow-interface.rst | 419 +
.../docs}/redirects.txt | 0
airflow-core/docs/release-process.rst | 97 +
.../docs}/release_notes.rst | 0
.../docs}/security/api.rst | 0
airflow-core/docs/security/audit_logs.rst | 67 +
.../docs}/security/flower.rst | 0
.../docs}/security/index.rst | 0
airflow-core/docs/security/kerberos.rst | 188 +
.../docs}/security/releasing_security_patches.rst | 0
.../docs}/security/sbom.rst | 0
.../docs}/security/secrets/fernet.rst | 0
.../docs}/security/secrets/index.rst | 0
.../security/secrets/mask-sensitive-values.rst | 0
.../security/secrets/secrets-backend/index.rst | 0
.../local-filesystem-secrets-backend.rst | 0
airflow-core/docs/security/security_model.rst | 292 +
airflow-core/docs/security/sql.rst | 26 +
.../docs}/security/webserver.rst | 0
.../docs}/security/workload.rst | 0
.../docs}/stable-rest-api-ref.rst | 0
.../apache-airflow => airflow-core/docs}/start.rst | 0
.../docs}/static/exampleinclude.css | 0
.../docs}/static/gh-jira-links.js | 0
airflow-core/docs/static/redirects.js | 29 +
airflow-core/docs/templates-ref.rst | 194 +
.../docs}/templates/footer.html | 0
airflow-core/docs/troubleshooting.rst | 48 +
airflow-core/docs/tutorial/fundamentals.rst | 372 +
.../docs}/tutorial/index.rst | 0
airflow-core/docs/tutorial/objectstorage.rst | 134 +
airflow-core/docs/tutorial/pipeline.rst | 336 +
airflow-core/docs/tutorial/pipeline_example.csv | 96 +
airflow-core/docs/tutorial/taskflow.rst | 751 +
airflow-core/docs/ui.rst | 237 +
airflow-core/hatch_build_airflow_core.py | 120 +
airflow-core/pyproject.toml | 288 +
{airflow => airflow-core/src/airflow}/METRICS.md | 0
{airflow => airflow-core/src/airflow}/__init__.py | 0
{airflow => airflow-core/src/airflow}/__main__.py | 0
.../src/airflow/_logging}/__init__.py | 0
airflow-core/src/airflow/_logging/structlog.py | 469 +
.../src/airflow}/_vendor/README.md | 0
.../src/airflow/_vendor}/__init__.py | 0
.../src/airflow}/_vendor/vendor.md | 0
{airflow => airflow-core/src/airflow}/alembic.ini | 0
.../src/airflow/api}/__init__.py | 0
airflow-core/src/airflow/api/client/__init__.py | 26 +
.../src/airflow}/api/client/local_client.py | 0
.../src/airflow/api/common}/__init__.py | 0
.../src/airflow}/api/common/airflow_health.py | 0
.../src/airflow}/api/common/delete_dag.py | 0
.../src/airflow}/api/common/mark_tasks.py | 0
.../src/airflow}/api/common/trigger_dag.py | 0
.../src/airflow}/api_fastapi/__init__.py | 0
airflow-core/src/airflow/api_fastapi/app.py | 163 +
.../src/airflow/api_fastapi/auth}/__init__.py | 0
.../airflow/api_fastapi/auth/managers}/__init__.py | 0
.../api_fastapi/auth/managers/base_auth_manager.py | 498 +
.../api_fastapi/auth/managers/models}/__init__.py | 0
.../api_fastapi}/auth/managers/models/base_user.py | 0
.../api_fastapi/auth/managers/models/batch_apis.py | 59 +
.../auth/managers/models/resource_details.py | 107 +
.../api_fastapi/auth/managers/simple}/__init__.py | 0
.../auth/managers/simple/datamodels}/__init__.py | 0
.../auth/managers/simple/datamodels/login.py | 0
.../auth/managers/simple/openapi}/__init__.py | 0
.../auth/managers/simple/openapi/v1-generated.yaml | 172 +
.../auth/managers/simple/routes}/__init__.py | 0
.../auth/managers/simple/routes/login.py | 85 +
.../auth/managers/simple/services}/__init__.py | 0
.../auth/managers/simple/services/login.py | 73 +
.../auth/managers/simple/simple_auth_manager.py | 381 +
.../auth/managers/simple/ui/dev/index.html | 24 +
.../api_fastapi/auth/managers/simple/ui/index.html | 14 +
.../simple/ui/openapi-gen/queries/common.ts | 0
.../simple/ui/openapi-gen/queries/index.ts | 0
.../ui/openapi-gen/queries/infiniteQueries.ts | 0
.../simple/ui/openapi-gen/queries/prefetch.ts | 0
.../simple/ui/openapi-gen/queries/queries.ts | 0
.../simple/ui/openapi-gen/queries/suspense.ts | 0
.../ui/openapi-gen/requests/core/ApiError.ts | 0
.../openapi-gen/requests/core/ApiRequestOptions.ts | 0
.../ui/openapi-gen/requests/core/ApiResult.ts | 0
.../openapi-gen/requests/core/CancelablePromise.ts | 0
.../simple/ui/openapi-gen/requests/core/OpenAPI.ts | 0
.../simple/ui/openapi-gen/requests/core/request.ts | 0
.../simple/ui/openapi-gen/requests/index.ts | 0
.../simple/ui/openapi-gen/requests/schemas.gen.ts | 0
.../simple/ui/openapi-gen/requests/services.gen.ts | 0
.../simple/ui/openapi-gen/requests/types.gen.ts | 0
.../auth/managers/simple/ui/package-lock.json | 6031 ++++++
.../auth/managers/simple/ui/package.json | 36 +
.../auth/managers/simple/ui/pnpm-lock.yaml | 4189 ++++
.../managers/simple/ui/src/login/Login.test.tsx | 0
.../auth/managers/simple/ui/src/login/Login.tsx | 85 +
.../managers/simple/ui/src/login/LoginForm.tsx | 0
.../auth/managers/simple/ui/src/main.tsx | 35 +
.../simple/ui/src/queries/useCreateToken.ts | 0
.../auth/managers/simple/ui/src/queryClient.ts | 35 +
.../auth/managers/simple/ui/src/router.tsx | 37 +
.../auth/managers/simple/ui/src/test-utils.tsx | 0
.../auth/managers/simple/ui/tests-setup.ts | 0
.../auth/managers/simple/ui/vite.config.ts | 51 +
.../api_fastapi/auth/managers/simple/user.py | 41 +
.../src/airflow/api_fastapi/auth/tokens.py | 580 +
.../src/airflow/api_fastapi/common}/__init__.py | 0
.../src/airflow/api_fastapi/common/db}/__init__.py | 0
.../src/airflow/api_fastapi/common/db/common.py | 181 +
.../src/airflow}/api_fastapi/common/db/dag_runs.py | 0
.../src/airflow}/api_fastapi/common/db/dags.py | 0
.../src/airflow}/api_fastapi/common/exceptions.py | 0
.../src/airflow}/api_fastapi/common/headers.py | 0
.../src/airflow/api_fastapi/common/parameters.py | 710 +
.../src/airflow}/api_fastapi/common/router.py | 0
.../src/airflow/api_fastapi/common/types.py | 98 +
.../src/airflow/api_fastapi/core_api}/__init__.py | 0
.../src/airflow/api_fastapi/core_api/app.py | 178 +
.../src/airflow/api_fastapi/core_api/base.py | 64 +
.../api_fastapi/core_api/datamodels}/__init__.py | 0
.../api_fastapi/core_api/datamodels/assets.py | 0
.../api_fastapi/core_api/datamodels/backfills.py | 0
.../api_fastapi/core_api/datamodels/common.py | 0
.../api_fastapi/core_api/datamodels/config.py | 0
.../api_fastapi/core_api/datamodels/connections.py | 138 +
.../api_fastapi/core_api/datamodels/dag_report.py | 0
.../api_fastapi/core_api/datamodels/dag_run.py | 0
.../api_fastapi/core_api/datamodels/dag_sources.py | 0
.../api_fastapi/core_api/datamodels/dag_stats.py | 0
.../api_fastapi/core_api/datamodels/dag_tags.py | 0
.../core_api/datamodels/dag_versions.py | 0
.../api_fastapi/core_api/datamodels/dag_warning.py | 0
.../api_fastapi/core_api/datamodels/dags.py | 182 +
.../api_fastapi/core_api/datamodels/event_logs.py | 0
.../api_fastapi/core_api/datamodels/extra_links.py | 0
.../core_api/datamodels/import_error.py | 0
.../airflow/api_fastapi/core_api/datamodels/job.py | 43 +
.../api_fastapi/core_api/datamodels/log.py | 0
.../api_fastapi/core_api/datamodels/monitor.py | 0
.../api_fastapi/core_api/datamodels/plugins.py | 0
.../api_fastapi/core_api/datamodels/pools.py | 0
.../api_fastapi/core_api/datamodels/providers.py | 0
.../core_api/datamodels/task_instances.py | 0
.../api_fastapi/core_api/datamodels/tasks.py | 0
.../api_fastapi/core_api/datamodels/trigger.py | 0
.../core_api/datamodels/ui}/__init__.py | 0
.../api_fastapi/core_api/datamodels/ui/auth.py | 34 +
.../api_fastapi/core_api/datamodels/ui/common.py | 0
.../api_fastapi/core_api/datamodels/ui/config.py | 43 +
.../api_fastapi/core_api/datamodels/ui/dags.py | 36 +
.../core_api/datamodels/ui/dashboard.py | 0
.../api_fastapi/core_api/datamodels/ui/grid.py | 0
.../core_api/datamodels/ui/structure.py | 48 +
.../api_fastapi/core_api/datamodels/variables.py | 0
.../api_fastapi/core_api/datamodels/version.py | 0
.../api_fastapi/core_api/datamodels/xcom.py | 0
.../airflow}/api_fastapi/core_api/init_dagbag.py | 0
.../airflow}/api_fastapi/core_api/middleware.py | 0
.../api_fastapi/core_api/openapi}/__init__.py | 0
.../api_fastapi/core_api/openapi/exceptions.py | 0
.../api_fastapi/core_api/openapi/v1-generated.yaml | 11764 +++++++++++
.../api_fastapi/core_api/routes}/__init__.py | 0
.../api_fastapi/core_api/routes/public/__init__.py | 93 +
.../api_fastapi/core_api/routes/public/assets.py | 558 +
.../api_fastapi/core_api/routes/public/auth.py | 56 +
.../core_api/routes/public/backfills.py | 298 +
.../api_fastapi/core_api/routes/public/config.py | 179 +
.../core_api/routes/public/connections.py | 0
.../core_api/routes/public/dag_parsing.py | 68 +
.../core_api/routes/public/dag_report.py | 75 +
.../api_fastapi/core_api/routes/public/dag_run.py | 482 +
.../core_api/routes/public/dag_sources.py | 74 +
.../core_api/routes/public/dag_stats.py | 96 +
.../api_fastapi/core_api/routes/public/dag_tags.py | 71 +
.../core_api/routes/public/dag_versions.py | 128 +
.../core_api/routes/public/dag_warning.py | 80 +
.../api_fastapi/core_api/routes/public/dags.py | 341 +
.../core_api/routes/public/event_logs.py | 0
.../core_api/routes/public/extra_links.py | 86 +
.../core_api/routes/public/import_error.py | 196 +
.../api_fastapi/core_api/routes/public/job.py | 130 +
.../api_fastapi/core_api/routes/public/log.py | 155 +
.../api_fastapi/core_api/routes/public/monitor.py | 0
.../api_fastapi/core_api/routes/public/plugins.py | 46 +
.../api_fastapi/core_api/routes/public/pools.py | 207 +
.../core_api/routes/public/providers.py | 62 +
.../core_api/routes/public/task_instances.py | 895 +
.../api_fastapi/core_api/routes/public/tasks.py | 84 +
.../core_api/routes/public/variables.py | 202 +
.../api_fastapi/core_api/routes/public/version.py | 0
.../api_fastapi/core_api/routes/public/xcom.py | 303 +
.../api_fastapi/core_api/routes/ui/__init__.py | 42 +
.../api_fastapi/core_api/routes/ui/assets.py | 87 +
.../airflow/api_fastapi/core_api/routes/ui/auth.py | 39 +
.../api_fastapi/core_api/routes/ui/backfills.py | 78 +
.../api_fastapi/core_api/routes/ui/config.py | 71 +
.../api_fastapi/core_api/routes/ui/connections.py | 40 +
.../airflow/api_fastapi/core_api/routes/ui/dags.py | 165 +
.../api_fastapi/core_api/routes/ui/dashboard.py | 99 +
.../api_fastapi/core_api/routes/ui/dependencies.py | 89 +
.../airflow/api_fastapi/core_api/routes/ui/grid.py | 230 +
.../api_fastapi/core_api/routes/ui/structure.py | 142 +
.../src/airflow/api_fastapi/core_api/security.py | 339 +
.../api_fastapi/core_api/services}/__init__.py | 0
.../core_api/services/public}/__init__.py | 0
.../api_fastapi/core_api/services/public/common.py | 0
.../core_api/services/public/connections.py | 0
.../api_fastapi/core_api/services/public/pools.py | 0
.../core_api/services/public/variables.py | 0
.../api_fastapi/core_api/services/ui}/__init__.py | 0
.../core_api/services/ui/connections.py | 210 +
.../core_api/services/ui/dependencies.py | 0
.../api_fastapi/core_api/services/ui/grid.py | 0
.../api_fastapi/core_api/services/ui/structure.py | 114 +
.../airflow/api_fastapi/execution_api}/__init__.py | 0
.../src/airflow/api_fastapi/execution_api/app.py | 223 +
.../execution_api/datamodels}/__init__.py | 0
.../api_fastapi/execution_api/datamodels/asset.py | 55 +
.../execution_api/datamodels/asset_event.py | 0
.../execution_api/datamodels/connection.py | 0
.../api_fastapi/execution_api/datamodels/dagrun.py | 38 +
.../execution_api/datamodels/taskinstance.py | 315 +
.../api_fastapi/execution_api/datamodels/token.py | 32 +
.../execution_api/datamodels/variable.py | 36 +
.../api_fastapi/execution_api/datamodels/xcom.py | 38 +
.../src/airflow/api_fastapi/execution_api/deps.py | 94 +
.../api_fastapi/execution_api/routes/__init__.py | 48 +
.../execution_api/routes/asset_events.py | 0
.../api_fastapi/execution_api/routes/assets.py | 0
.../execution_api/routes/connections.py | 72 +
.../api_fastapi/execution_api/routes/dag_runs.py | 152 +
.../api_fastapi/execution_api/routes/health.py | 47 +
.../execution_api/routes/task_instances.py | 586 +
.../api_fastapi/execution_api/routes/variables.py | 88 +
.../api_fastapi/execution_api/routes/xcoms.py | 297 +
.../src/airflow}/api_fastapi/gunicorn_config.py | 0
.../src/airflow/api_fastapi/logging}/__init__.py | 0
.../src/airflow/api_fastapi/logging/decorators.py | 159 +
.../src/airflow}/api_fastapi/main.py | 0
.../src/airflow/assets}/__init__.py | 0
airflow-core/src/airflow/assets/evaluation.py | 78 +
airflow-core/src/airflow/assets/manager.py | 277 +
.../src/airflow}/callbacks/__init__.py | 0
.../src/airflow}/callbacks/base_callback_sink.py | 0
.../src/airflow/callbacks/callback_requests.py | 91 +
.../airflow}/callbacks/database_callback_sink.py | 0
.../src/airflow}/callbacks/pipe_callback_sink.py | 0
.../src/airflow/cli}/__init__.py | 0
.../src/airflow/cli/api}/__init__.py | 0
.../src/airflow/cli/api/datamodels}/__init__.py | 0
airflow-core/src/airflow/cli/cli_config.py | 1880 ++
airflow-core/src/airflow/cli/cli_parser.py | 195 +
.../src/airflow/cli/commands}/__init__.py | 0
.../src/airflow}/cli/commands/legacy_commands.py | 0
.../cli/commands/local_commands}/__init__.py | 0
.../commands/local_commands/api_server_command.py | 137 +
.../commands/local_commands/cheat_sheet_command.py | 0
.../cli/commands/local_commands/daemon_utils.py | 0
.../local_commands/dag_processor_command.py | 0
.../cli/commands/local_commands/db_command.py | 0
.../cli/commands/local_commands/info_command.py | 0
.../commands/local_commands/kerberos_command.py | 0
.../cli/commands/local_commands/plugins_command.py | 0
.../local_commands/rotate_fernet_key_command.py | 0
.../commands/local_commands/scheduler_command.py | 0
.../commands/local_commands/standalone_command.py | 313 +
.../commands/local_commands/triggerer_command.py | 0
.../cli/commands/remote_commands}/__init__.py | 0
.../cli/commands/remote_commands/asset_command.py | 0
.../commands/remote_commands/backfill_command.py | 0
.../cli/commands/remote_commands/config_command.py | 706 +
.../commands/remote_commands/connection_command.py | 0
.../cli/commands/remote_commands/dag_command.py | 711 +
.../cli/commands/remote_commands/jobs_command.py | 0
.../cli/commands/remote_commands/pool_command.py | 0
.../commands/remote_commands/provider_command.py | 259 +
.../cli/commands/remote_commands/task_command.py | 521 +
.../commands/remote_commands/variable_command.py | 0
.../commands/remote_commands/version_command.py | 0
.../src/airflow}/cli/simple_table.py | 0
{airflow => airflow-core/src/airflow}/cli/utils.py | 0
.../src/airflow/config_templates}/__init__.py | 0
.../config_templates/airflow_local_settings.py | 0
.../src/airflow/config_templates/config.yml | 2615 +++
.../config_templates/config.yml.schema.json | 0
.../airflow}/config_templates/default_airflow.cfg | 0
.../config_templates/default_webserver_config.py | 0
.../provider_config_fallback_defaults.cfg | 0
.../src/airflow/config_templates/unit_tests.cfg | 141 +
airflow-core/src/airflow/configuration.py | 2157 ++
.../customized_form_field_behaviours.schema.json | 0
.../src/airflow/dag_processing}/__init__.py | 0
.../airflow/dag_processing/bundles}/__init__.py | 0
.../src/airflow}/dag_processing/bundles/base.py | 0
.../src/airflow/dag_processing/bundles/git.py | 319 +
.../src/airflow}/dag_processing/bundles/local.py | 0
.../src/airflow/dag_processing/bundles/manager.py | 163 +
.../airflow}/dag_processing/bundles/provider.yaml | 0
.../src/airflow/dag_processing/collection.py | 885 +
airflow-core/src/airflow/dag_processing/manager.py | 1117 +
.../src/airflow/dag_processing/processor.py | 311 +
.../src/airflow}/datasets/__init__.py | 0
.../src/airflow}/datasets/metadata.py | 0
.../src/airflow}/decorators/__init__.py | 0
airflow-core/src/airflow/decorators/__init__.pyi | 796 +
airflow-core/src/airflow/decorators/base.py | 688 +
airflow-core/src/airflow/decorators/bash.py | 111 +
.../airflow}/decorators/branch_external_python.py | 0
.../src/airflow}/decorators/branch_python.py | 0
.../src/airflow}/decorators/branch_virtualenv.py | 0
.../src/airflow}/decorators/condition.py | 0
.../src/airflow}/decorators/external_python.py | 0
.../src/airflow}/decorators/python.py | 0
.../src/airflow}/decorators/python_virtualenv.py | 0
.../src/airflow}/decorators/sensor.py | 0
.../src/airflow}/decorators/setup_teardown.py | 0
.../src/airflow}/decorators/short_circuit.py | 0
.../src/airflow}/decorators/task_group.py | 0
.../src/airflow/example_dags}/__init__.py | 0
.../airflow/example_dags/example_asset_alias.py | 98 +
.../example_asset_alias_with_no_taskflow.py | 0
.../example_dags/example_asset_decorator.py | 0
.../example_dags/example_asset_with_watchers.py | 44 +
.../src/airflow}/example_dags/example_assets.py | 0
.../airflow/example_dags/example_bash_decorator.py | 116 +
.../airflow}/example_dags/example_bash_operator.py | 0
.../example_branch_datetime_operator.py | 0
.../example_branch_day_of_week_operator.py | 61 +
.../airflow}/example_dags/example_branch_labels.py | 0
.../example_dags/example_branch_operator.py | 167 +
.../example_branch_operator_decorator.py | 144 +
.../example_branch_python_dop_operator_3.py | 0
.../src/airflow/example_dags/example_complex.py | 221 +
.../airflow/example_dags/example_custom_weight.py | 58 +
.../airflow}/example_dags/example_dag_decorator.py | 0
.../airflow}/example_dags/example_display_name.py | 0
.../example_dags/example_dynamic_task_mapping.py | 0
...amic_task_mapping_with_no_taskflow_operators.py | 0
.../example_external_task_marker_dag.py | 0
.../example_dags/example_inlet_event_extra.py | 0
.../example_dags/example_kubernetes_executor.py | 0
.../airflow}/example_dags/example_latest_only.py | 0
.../example_latest_only_with_trigger.py | 0
.../example_local_kubernetes_executor.py | 0
.../example_dags/example_nested_branch_dag.py | 0
.../example_dags/example_outlet_event_extra.py | 0
.../example_dags/example_params_trigger_ui.py | 0
.../example_dags/example_params_ui_tutorial.py | 254 +
.../example_passing_params_via_test_command.py | 0
.../example_dags/example_python_decorator.py | 0
.../example_dags/example_python_operator.py | 0
.../example_dags/example_sensor_decorator.py | 0
.../src/airflow/example_dags/example_sensors.py | 132 +
.../example_dags/example_setup_teardown.py | 0
.../example_setup_teardown_taskflow.py | 0
.../example_short_circuit_decorator.py | 61 +
.../example_dags/example_short_circuit_operator.py | 67 +
.../airflow/example_dags/example_simplest_dag.py | 33 +
.../src/airflow}/example_dags/example_skip_dag.py | 0
.../airflow}/example_dags/example_task_group.py | 0
.../example_dags/example_task_group_decorator.py | 0
.../example_time_delta_sensor_async.py | 0
.../example_dags/example_trigger_controller_dag.py | 0
.../example_dags/example_trigger_target_dag.py | 0
.../example_dags/example_workday_timetable.py | 0
.../src/airflow}/example_dags/example_xcom.py | 0
.../src/airflow}/example_dags/example_xcomargs.py | 0
.../src/airflow/example_dags/libs}/__init__.py | 0
.../src/airflow}/example_dags/libs/helper.py | 0
.../src/airflow/example_dags/plugins}/__init__.py | 0
.../plugins/decreasing_priority_weight_strategy.py | 0
.../example_dags/plugins/event_listener.py | 0
.../example_dags/plugins/listener_plugin.py | 0
.../src/airflow}/example_dags/plugins/workday.py | 0
.../src/airflow}/example_dags/sql/sample.sql | 0
.../sql/tutorial_taskflow_template.sql | 0
.../src/airflow}/example_dags/tutorial.py | 0
.../src/airflow}/example_dags/tutorial_dag.py | 0
.../example_dags/tutorial_objectstorage.py | 0
.../airflow}/example_dags/tutorial_taskflow_api.py | 0
.../tutorial_taskflow_api_virtualenv.py | 0
.../example_dags/tutorial_taskflow_templates.py | 0
airflow-core/src/airflow/exceptions.py | 563 +
.../src/airflow/executors}/__init__.py | 0
.../src/airflow/executors/base_executor.py | 728 +
.../src/airflow}/executors/debug_executor.py | 0
.../src/airflow}/executors/executor_constants.py | 0
.../src/airflow}/executors/executor_loader.py | 0
.../src/airflow}/executors/executor_utils.py | 0
.../src/airflow/executors/local_executor.py | 248 +
.../src/airflow}/executors/sequential_executor.py | 0
airflow-core/src/airflow/executors/workloads.py | 155 +
airflow-core/src/airflow/hooks/README.md | 24 +
.../src/airflow}/hooks/__init__.py | 0
airflow-core/src/airflow/hooks/base.py | 171 +
.../src/airflow}/io/__init__.py | 0
{airflow => airflow-core/src/airflow}/io/path.py | 0
.../src/airflow}/io/store/__init__.py | 0
.../src/airflow}/io/typedef.py | 0
.../src/airflow/io/utils}/__init__.py | 0
.../src/airflow}/io/utils/stat.py | 0
.../src/airflow}/jobs/JOB_LIFECYCLE.md | 0
.../src/airflow/jobs}/__init__.py | 0
.../src/airflow}/jobs/base_job_runner.py | 0
.../src/airflow}/jobs/dag_processor_job_runner.py | 0
{airflow => airflow-core/src/airflow}/jobs/job.py | 0
.../src/airflow/jobs/scheduler_job_runner.py | 2242 ++
.../src/airflow/jobs/triggerer_job_runner.py | 893 +
.../src/airflow}/lineage/__init__.py | 0
.../src/airflow}/lineage/backend.py | 0
.../src/airflow}/lineage/hook.py | 0
.../src/airflow}/listeners/__init__.py | 0
.../src/airflow}/listeners/listener.py | 0
.../src/airflow/listeners/spec}/__init__.py | 0
.../src/airflow}/listeners/spec/asset.py | 0
.../src/airflow}/listeners/spec/dagrun.py | 0
.../src/airflow}/listeners/spec/importerrors.py | 0
.../src/airflow}/listeners/spec/lifecycle.py | 0
.../src/airflow}/listeners/spec/taskinstance.py | 0
airflow-core/src/airflow/logging_config.py | 107 +
.../src/airflow}/macros/__init__.py | 0
.../src/airflow/metrics}/__init__.py | 0
.../src/airflow}/metrics/base_stats_logger.py | 0
.../src/airflow}/metrics/datadog_logger.py | 0
.../src/airflow}/metrics/otel_logger.py | 0
.../src/airflow}/metrics/protocols.py | 0
.../src/airflow}/metrics/statsd_logger.py | 0
airflow-core/src/airflow/metrics/validators.py | 273 +
.../src/airflow/migrations}/__init__.py | 0
.../src/airflow}/migrations/db_types.py | 0
.../src/airflow}/migrations/db_types.pyi | 0
.../src/airflow}/migrations/env.py | 0
.../src/airflow}/migrations/script.py.mako | 0
.../src/airflow}/migrations/utils.py | 0
.../0001_2_7_0_add_index_to_task_instance_table.py | 0
.../0002_2_7_0_add_custom_operator_name_column.py | 0
...03_2_7_0_add_include_deferred_column_to_pool.py | 0
.../0004_2_8_0_add_clear_number_to_dag_run.py | 0
..._0_add_owner_display_name_to_audit_log_table.py | 0
...06_2_8_0_make_connection_login_password_text.py | 0
...0007_2_8_0_add_processor_subdir_import_error.py | 0
.../0008_2_8_1_refactor_dag_run_indexes.py | 0
...2_9_0_add_rendered_map_index_to_taskinstance.py | 0
...audit_log_table_and_change_event_name_length.py | 0
...011_2_9_0_add_dataset_expression_in_dagmodel.py | 0
...2_9_0_adding_adding_max_failure_runs_column_.py | 0
..._2_9_0_make_xcom_value_to_longblob_for_mysql.py | 0
...014_2_9_0_add_display_name_for_dag_and_task_.py | 0
.../0015_2_9_0_update_trigger_kwargs_type.py | 0
...6_2_9_2_remove_idx_last_scheduling_decision_.py | 0
...nconsistency_between_ORM_and_migration_files.py | 0
...dexes_on_dag_id_column_in_referencing_tables.py | 0
.../0019_2_10_0_add_new_executor_field_to_db.py | 0
...2_10_0_added_dagpriorityparsingrequest_table.py | 0
.../0021_2_10_0_add_task_instance_history.py | 0
.../versions/0022_2_10_0_add_dataset_alias.py | 0
.../0023_2_10_0_dataset_alias_dataset_event.py | 0
.../0024_2_10_0_add_try_number_to_audit_log.py | 0
.../versions/0025_2_10_0_dataset_alias_dataset.py | 0
..._2_10_0_dag_schedule_dataset_alias_reference.py | 0
..._dag_schedule_dataset_alias_reference_naming.py | 0
.../0028_3_0_0_drop_ab_user_id_foreign_key.py | 0
.../versions/0029_3_0_0_remove_is_subdag.py | 0
...3_0_0_rename_schedule_interval_to_timetable_.py | 0
.../0031_3_0_0_add_triggered_by_field_to_dagrun.py | 0
..._execution_date_to_logical_date_and_nullable.py | 0
.../versions/0033_3_0_0_add_tables_for_backfill.py | 0
.../versions/0034_3_0_0_remove_redundant_index.py | 0
.../versions/0035_3_0_0_update_user_id_type.py | 0
.../0036_3_0_0_add_name_field_to_dataset_model.py | 0
.../0037_3_0_0_add_backfill_to_dag_run_model.py | 0
.../versions/0038_3_0_0_add_asset_active.py | 0
...9_3_0_0_tweak_assetaliasmodel_to_match_asset.py | 0
...3_0_0_add_exception_reason_and_logical_date_.py | 0
.../versions/0041_3_0_0_rename_dataset_as_asset.py | 0
...3_0_0_add_uuid_primary_key_to_task_instance_.py | 0
.../0043_3_0_0_remove_scheduler_lock_column.py | 0
.../versions/0044_3_0_0__drop_task_fail_table.py | 0
...5_3_0_0_add_last_heartbeat_at_directly_to_ti.py | 0
.../versions/0046_3_0_0_drop_dag_pickling.py | 0
.../versions/0047_3_0_0_add_dag_versioning.py | 0
.../0048_3_0_0_add_trigger_asset_reference.py | 0
...49_3_0_0_remove_pickled_data_from_xcom_table.py | 0
.../versions/0050_3_0_0_add_dagbundlemodel.py | 0
...task_instance_trigger_timeout_to_utcdatetime.py | 0
.../0052_3_0_0_add_deadline_alerts_table.py | 0
.../versions/0053_3_0_0_remove_processor_subdir.py | 0
.../0054_3_0_0_add_asset_reference_models.py | 0
..._3_0_0_remove_pickled_data_from_dagrun_table.py | 0
.../0056_3_0_0_add_relative_fileloc_column.py | 0
...3_0_0_add_new_task_instance_field_scheduled_.py | 0
.../versions/0058_3_0_0_add_dagrun_run_after.py | 0
.../0059_3_0_0_remove_external_trigger_field.py | 0
.../0060_3_0_0_add_try_id_to_ti_and_tih.py | 0
...061_3_0_0_use_ti_id_as_primary_key_to_TINote.py | 151 +
.../versions/0062_3_0_0_remove_dag_default_view.py | 48 +
...0063_3_0_0_use_ti_id_as_fk_to_taskreschedule.py | 169 +
.../src/airflow/migrations/versions}/__init__.py | 0
airflow-core/src/airflow/models/__init__.py | 140 +
.../src/airflow/models/abstractoperator.py | 146 +
airflow-core/src/airflow/models/asset.py | 766 +
airflow-core/src/airflow/models/backfill.py | 507 +
.../src/airflow}/models/base.py | 0
airflow-core/src/airflow/models/baseoperator.py | 810 +
airflow-core/src/airflow/models/connection.py | 547 +
.../src/airflow}/models/crypto.py | 0
airflow-core/src/airflow/models/dag.py | 2525 +++
.../src/airflow}/models/dag_version.py | 0
.../src/airflow}/models/dagbag.py | 0
airflow-core/src/airflow/models/dagbundle.py | 45 +
.../src/airflow}/models/dagcode.py | 0
airflow-core/src/airflow/models/dagrun.py | 1831 ++
.../src/airflow}/models/dagwarning.py | 0
.../src/airflow}/models/db_callback_request.py | 0
.../src/airflow}/models/deadline.py | 0
.../src/airflow}/models/errors.py | 0
.../src/airflow}/models/expandinput.py | 0
.../src/airflow}/models/log.py | 0
.../src/airflow}/models/mappedoperator.py | 0
.../src/airflow}/models/operator.py | 0
.../src/airflow}/models/param.py | 0
.../src/airflow}/models/pool.py | 0
.../src/airflow}/models/renderedtifields.py | 0
airflow-core/src/airflow/models/serialized_dag.py | 695 +
airflow-core/src/airflow/models/skipmixin.py | 22 +
airflow-core/src/airflow/models/taskinstance.py | 3835 ++++
.../src/airflow}/models/taskinstancehistory.py | 0
.../src/airflow}/models/taskinstancekey.py | 0
.../src/airflow}/models/tasklog.py | 0
airflow-core/src/airflow/models/taskmap.py | 266 +
.../src/airflow}/models/taskmixin.py | 0
airflow-core/src/airflow/models/taskreschedule.py | 106 +
.../src/airflow}/models/trigger.py | 0
.../src/airflow}/models/variable.py | 0
airflow-core/src/airflow/models/xcom.py | 399 +
airflow-core/src/airflow/models/xcom_arg.py | 192 +
.../src/airflow/notifications}/__init__.py | 0
.../src/airflow}/notifications/basenotifier.py | 0
airflow-core/src/airflow/operators/__init__.py | 69 +
.../src/airflow}/plugins_manager.py | 0
{airflow => airflow-core/src/airflow}/policies.py | 0
.../src/airflow}/provider.yaml.schema.json | 0
.../src/airflow}/provider_info.schema.json | 0
airflow-core/src/airflow/providers_manager.py | 1281 ++
{airflow => airflow-core/src/airflow}/py.typed | 0
airflow-core/src/airflow/secrets/__init__.py | 41 +
.../src/airflow}/secrets/base_secrets.py | 0
.../src/airflow}/secrets/cache.py | 0
.../src/airflow}/secrets/environment_variables.py | 0
.../src/airflow}/secrets/local_filesystem.py | 0
.../src/airflow}/secrets/metastore.py | 0
.../src/airflow/security}/__init__.py | 0
.../src/airflow}/security/kerberos.py | 0
airflow-core/src/airflow/security/permissions.py | 126 +
airflow-core/src/airflow/security/utils.py | 84 +
.../src/airflow}/sensors/README.md | 0
.../src/airflow}/sensors/__init__.py | 0
airflow-core/src/airflow/sensors/base.py | 441 +
{airflow => airflow-core/src/airflow}/sentry.py | 0
.../src/airflow}/serialization/__init__.py | 0
.../src/airflow/serialization/dag_dependency.py | 45 +
.../src/airflow}/serialization/enums.py | 0
.../src/airflow}/serialization/helpers.py | 0
.../src/airflow}/serialization/json_schema.py | 0
airflow-core/src/airflow/serialization/schema.json | 393 +
airflow-core/src/airflow/serialization/serde.py | 391 +
.../airflow/serialization/serialized_objects.py | 2038 ++
.../airflow/serialization/serializers}/__init__.py | 0
.../airflow}/serialization/serializers/bignum.py | 0
.../airflow}/serialization/serializers/builtin.py | 0
.../airflow}/serialization/serializers/datetime.py | 0
.../serialization/serializers/deltalake.py | 0
.../airflow}/serialization/serializers/iceberg.py | 0
.../serialization/serializers/kubernetes.py | 0
.../airflow}/serialization/serializers/numpy.py | 0
.../airflow}/serialization/serializers/pandas.py | 0
.../airflow}/serialization/serializers/timezone.py | 0
airflow-core/src/airflow/settings.py | 704 +
{airflow => airflow-core/src/airflow}/stats.py | 0
.../src/airflow/task}/__init__.py | 0
.../src/airflow}/task/priority_strategy.py | 0
.../src/airflow/ti_deps}/__init__.py | 0
.../src/airflow}/ti_deps/dep_context.py | 0
.../src/airflow}/ti_deps/dependencies_deps.py | 0
.../src/airflow}/ti_deps/dependencies_states.py | 0
.../src/airflow}/ti_deps/deps/__init__.py | 0
.../src/airflow}/ti_deps/deps/base_ti_dep.py | 0
.../ti_deps/deps/dag_ti_slots_available_dep.py | 0
.../src/airflow}/ti_deps/deps/dag_unpaused_dep.py | 0
.../src/airflow}/ti_deps/deps/dagrun_exists_dep.py | 0
.../ti_deps/deps/exec_date_after_start_date_dep.py | 51 +
.../airflow}/ti_deps/deps/mapped_task_expanded.py | 0
.../ti_deps/deps/mapped_task_upstream_dep.py | 0
.../ti_deps/deps/not_in_retry_period_dep.py | 0
.../ti_deps/deps/not_previously_skipped_dep.py | 100 +
.../ti_deps/deps/pool_slots_available_dep.py | 0
.../src/airflow}/ti_deps/deps/prev_dagrun_dep.py | 0
.../airflow}/ti_deps/deps/ready_to_reschedule.py | 0
.../ti_deps/deps/runnable_exec_date_dep.py | 0
.../airflow}/ti_deps/deps/task_concurrency_dep.py | 0
.../airflow}/ti_deps/deps/task_not_running_dep.py | 0
.../src/airflow}/ti_deps/deps/trigger_rule_dep.py | 0
.../src/airflow}/ti_deps/deps/valid_state_dep.py | 0
airflow-core/src/airflow/timetables/__init__.py | 30 +
.../src/airflow}/timetables/_cron.py | 0
.../src/airflow}/timetables/_delta.py | 0
.../src/airflow}/timetables/assets.py | 0
.../src/airflow}/timetables/base.py | 0
.../src/airflow}/timetables/events.py | 0
.../src/airflow}/timetables/interval.py | 0
.../src/airflow}/timetables/simple.py | 0
airflow-core/src/airflow/timetables/trigger.py | 370 +
.../src/airflow}/traces/__init__.py | 0
.../src/airflow}/traces/otel_tracer.py | 0
.../src/airflow}/traces/tracer.py | 0
.../src/airflow}/traces/utils.py | 0
.../src/airflow}/triggers/__init__.py | 0
.../src/airflow}/triggers/base.py | 0
.../src/airflow}/triggers/testing.py | 0
.../src/airflow}/typing_compat.py | 0
.../src/airflow}/ui/.env.example | 0
.../src/airflow}/ui/.prettierignore | 0
.../src/airflow}/ui/.prettierrc | 0
airflow-core/src/airflow/ui/CONTRIBUTING.md | 35 +
{airflow => airflow-core/src/airflow}/ui/README.md | 0
airflow-core/src/airflow/ui/dev/index.html | 24 +
.../src/airflow}/ui/eslint.config.js | 0
airflow-core/src/airflow/ui/index.html | 14 +
.../src/airflow/ui/openapi-gen/queries/common.ts | 1899 ++
.../ui/openapi-gen/queries/ensureQueryData.ts | 2513 +++
.../src/airflow/ui/openapi-gen/queries/index.ts | 4 +
.../ui/openapi-gen/queries/infiniteQueries.ts | 1 +
.../src/airflow/ui/openapi-gen/queries/prefetch.ts | 2513 +++
.../src/airflow/ui/openapi-gen/queries/queries.ts | 4724 +++++
.../src/airflow/ui/openapi-gen/queries/suspense.ts | 2969 +++
.../ui/openapi-gen/requests/core/ApiError.ts | 0
.../openapi-gen/requests/core/ApiRequestOptions.ts | 0
.../ui/openapi-gen/requests/core/ApiResult.ts | 0
.../openapi-gen/requests/core/CancelablePromise.ts | 0
.../ui/openapi-gen/requests/core/OpenAPI.ts | 0
.../ui/openapi-gen/requests/core/request.ts | 0
.../src/airflow}/ui/openapi-gen/requests/index.ts | 0
.../airflow/ui/openapi-gen/requests/schemas.gen.ts | 6739 ++++++
.../ui/openapi-gen/requests/services.gen.ts | 3585 ++++
.../airflow/ui/openapi-gen/requests/types.gen.ts | 5426 +++++
airflow-core/src/airflow/ui/package.json | 92 +
airflow-core/src/airflow/ui/pnpm-lock.yaml | 9150 ++++++++
.../src/airflow}/ui/public/pin_32.png | Bin
.../src/airflow}/ui/rules/core.js | 0
.../src/airflow}/ui/rules/levels.js | 0
.../src/airflow}/ui/rules/off.js | 0
.../src/airflow}/ui/rules/perfectionist.js | 0
.../src/airflow}/ui/rules/plugin-patch.d.ts | 0
.../src/airflow}/ui/rules/prettier.js | 0
.../src/airflow}/ui/rules/react.js | 0
.../src/airflow}/ui/rules/stylistic.js | 0
.../src/airflow}/ui/rules/typescript.js | 0
.../src/airflow}/ui/rules/unicorn.js | 0
.../src/airflow}/ui/src/assets/AirflowPin.tsx | 0
.../src/airflow}/ui/src/assets/DagIcon.tsx | 0
.../src/airflow}/ui/src/assets/TaskIcon.tsx | 0
.../components/ActionAccordion/ActionAccordion.tsx | 0
.../ui/src/components/ActionAccordion/columns.tsx | 0
.../ui/src/components/ActionAccordion/index.tsx | 0
.../src/components/AssetExpression/AndGateNode.tsx | 53 +
.../components/AssetExpression/AssetExpression.tsx | 83 +
.../src/components/AssetExpression/AssetNode.tsx | 61 +
.../src/components/AssetExpression/OrGateNode.tsx | 28 +
.../ui/src/components/AssetExpression/index.ts | 21 +
.../ui/src/components/AssetExpression/types.ts | 43 +
.../ui/src/components/Assets/AssetEvent.tsx | 96 +
.../ui/src/components/Assets/AssetEvents.tsx | 116 +
.../ui/src/components/Banner/BackfillBanner.tsx | 120 +
.../src/airflow/ui/src/components/Banner/index.tsx | 20 +
.../airflow}/ui/src/components/BreadcrumbStats.tsx | 0
.../ui/src/components/Clear/Run/ClearRunButton.tsx | 50 +
.../ui/src/components/Clear/Run/ClearRunDialog.tsx | 129 +
.../airflow}/ui/src/components/Clear/Run/index.tsx | 0
.../Clear/TaskInstance/ClearTaskInstanceButton.tsx | 52 +
.../Clear/TaskInstance/ClearTaskInstanceDialog.tsx | 156 +
.../ui/src/components/Clear/TaskInstance/index.tsx | 0
.../airflow}/ui/src/components/Clear/columns.tsx | 0
.../src/airflow}/ui/src/components/Clear/index.tsx | 0
.../ui/src/components/ConfirmationModal.tsx | 59 +
.../ui/src/components/DagActions/ParseDag.tsx | 45 +
.../components/DagActions/RunBackfillButton.tsx | 45 +
.../src/components/DagActions/RunBackfillForm.tsx | 243 +
.../src/components/DagActions/RunBackfillModal.tsx | 47 +
.../src/airflow}/ui/src/components/DagRunInfo.tsx | 0
.../ui/src/components/DagVersionDetails.tsx | 63 +
.../airflow/ui/src/components/DagVersionSelect.tsx | 98 +
.../ui/src/components/DataTable/CardList.tsx | 0
.../ui/src/components/DataTable/DataTable.test.tsx | 0
.../ui/src/components/DataTable/DataTable.tsx | 152 +
.../ui/src/components/DataTable/TableList.tsx | 0
.../components/DataTable/ToggleTableDisplay.tsx | 0
.../airflow}/ui/src/components/DataTable/index.ts | 0
.../src/components/DataTable/searchParams.test.ts | 0
.../ui/src/components/DataTable/searchParams.ts | 0
.../ui/src/components/DataTable/skeleton.tsx | 0
.../airflow}/ui/src/components/DataTable/types.ts | 0
.../ui/src/components/DataTable/useRowSelection.ts | 0
.../src/components/DataTable/useTableUrlState.ts | 0
.../ui/src/components/DisplayMarkdownButton.tsx | 0
.../airflow}/ui/src/components/DurationChart.tsx | 0
.../ui/src/components/EditableMarkdownButton.tsx | 0
.../src/airflow}/ui/src/components/ErrorAlert.tsx | 0
.../components/FlexibleForm/FieldAdvancedArray.tsx | 87 +
.../ui/src/components/FlexibleForm/FieldBool.tsx | 44 +
.../src/components/FlexibleForm/FieldDateTime.tsx | 55 +
.../src/components/FlexibleForm/FieldDropdown.tsx | 82 +
.../components/FlexibleForm/FieldMultiSelect.tsx | 87 +
.../components/FlexibleForm/FieldMultilineText.tsx | 49 +
.../ui/src/components/FlexibleForm/FieldNumber.tsx | 60 +
.../ui/src/components/FlexibleForm/FieldObject.tsx | 59 +
.../ui/src/components/FlexibleForm/FieldRow.tsx | 61 +
.../src/components/FlexibleForm/FieldSelector.tsx | 121 +
.../ui/src/components/FlexibleForm/FieldString.tsx | 65 +
.../components/FlexibleForm/FieldStringArray.tsx | 67 +
.../src/components/FlexibleForm/FlexibleForm.tsx | 89 +
.../ui/src/components/FlexibleForm/HiddenInput.tsx | 41 +
.../airflow/ui/src/components/FlexibleForm/Row.tsx | 34 +
.../ui/src/components/FlexibleForm/index.tsx | 27 +
.../airflow}/ui/src/components/Graph/AliasNode.tsx | 0
.../ui/src/components/Graph/AssetConditionNode.tsx | 0
.../airflow/ui/src/components/Graph/AssetNode.tsx | 91 +
.../airflow/ui/src/components/Graph/DagNode.tsx | 58 +
.../ui/src/components/Graph/DownloadButton.tsx | 72 +
.../src/airflow}/ui/src/components/Graph/Edge.tsx | 0
.../airflow}/ui/src/components/Graph/JoinNode.tsx | 0
.../ui/src/components/Graph/NodeWrapper.tsx | 0
.../airflow}/ui/src/components/Graph/TaskLink.tsx | 0
.../airflow/ui/src/components/Graph/TaskNode.tsx | 148 +
.../ui/src/components/Graph/reactflowUtils.ts | 146 +
.../ui/src/components/Graph/useGraphLayout.ts | 262 +
.../src/airflow}/ui/src/components/HeaderCard.tsx | 0
.../src/airflow/ui/src/components/JsonEditor.tsx | 51 +
.../ui/src/components/LimitedItemsList.tsx | 0
.../src/components/MarkAs/Run/MarkRunAsButton.tsx | 0
.../src/components/MarkAs/Run/MarkRunAsDialog.tsx | 78 +
.../ui/src/components/MarkAs/Run/index.tsx | 0
.../TaskInstance/MarkTaskInstanceAsButton.tsx | 0
.../TaskInstance/MarkTaskInstanceAsDialog.tsx | 141 +
.../src/components/MarkAs/TaskInstance/index.tsx | 0
.../airflow}/ui/src/components/MarkAs/index.tsx | 0
.../src/airflow}/ui/src/components/MarkAs/utils.ts | 0
.../ui/src/components/QuickFilterButton.tsx | 0
.../airflow}/ui/src/components/ReactMarkdown.tsx | 0
.../ui/src/components/RenderedJsonField.tsx | 56 +
.../src/airflow}/ui/src/components/RunTypeIcon.tsx | 0
.../airflow}/ui/src/components/SearchBar.test.tsx | 0
.../src/airflow}/ui/src/components/SearchBar.tsx | 0
.../ui/src/components/SearchDags/SearchDags.tsx | 0
.../src/components/SearchDags/SearchDagsButton.tsx | 0
.../SearchDags/SearchDagsDropdownIndicator.tsx | 0
.../airflow}/ui/src/components/SearchDags/index.ts | 0
.../src/airflow}/ui/src/components/Stat.tsx | 0
.../src/airflow/ui/src/components/StateBadge.tsx | 44 +
.../src/airflow/ui/src/components/StateIcon.tsx | 61 +
.../ui/src/components/TaskInstanceTooltip.tsx | 0
.../src/airflow/ui/src/components/TaskName.tsx | 69 +
.../airflow/ui/src/components/TaskTrySelect.tsx | 150 +
.../src/airflow}/ui/src/components/Time.test.tsx | 0
.../src/airflow}/ui/src/components/Time.tsx | 0
.../ui/src/components/TimeRangeSelector.tsx | 0
.../src/airflow/ui/src/components/TogglePause.tsx | 75 +
.../ui/src/components/TrendCountButton.tsx | 0
.../airflow}/ui/src/components/TrendCountChart.tsx | 0
.../src/components/TriggerDag/EditableMarkdown.tsx | 0
.../src/components/TriggerDag/TriggerDAGButton.tsx | 0
.../src/components/TriggerDag/TriggerDAGForm.tsx | 228 +
.../src/components/TriggerDag/TriggerDAGModal.tsx | 58 +
.../airflow/ui/src/components/TruncatedText.tsx | 39 +
.../ui/src/components/ui/Accordion/ItemContent.tsx | 0
.../ui/src/components/ui/Accordion/ItemTrigger.tsx | 47 +
.../ui/src/components/ui/Accordion/index.tsx | 0
.../ui/src/components/ui/ActionBar/BarContent.tsx | 39 +
.../src/components/ui/ActionBar/CloseTrigger.tsx | 0
.../ui/src/components/ui/ActionBar/index.ts | 0
.../airflow}/ui/src/components/ui/ActionButton.tsx | 0
.../src/airflow/ui/src/components/ui/Alert.tsx | 60 +
.../ui/src/components/ui/Breadcrumb/Root.tsx | 49 +
.../ui/src/components/ui/Breadcrumb/index.ts | 0
.../src/airflow/ui/src/components/ui/Button.tsx | 52 +
.../src/airflow/ui/src/components/ui/Checkbox.tsx | 38 +
.../airflow}/ui/src/components/ui/Clipboard.tsx | 0
.../airflow}/ui/src/components/ui/CloseButton.tsx | 0
.../ui/src/components/ui/Dialog/CloseTrigger.tsx | 36 +
.../ui/src/components/ui/Dialog/Content.tsx | 41 +
.../airflow}/ui/src/components/ui/Dialog/index.ts | 0
.../ui/src/components/ui/FileUpload/Dropzone.tsx | 43 +
.../ui/src/components/ui/FileUpload/FileInput.tsx | 52 +
.../ui/src/components/ui/FileUpload/Item.tsx | 61 +
.../ui/src/components/ui/FileUpload/List.tsx | 51 +
.../ui/src/components/ui/FileUpload/Root.tsx | 35 +
.../ui/src/components/ui/FileUpload/index.ts | 0
.../airflow/ui/src/components/ui/InputGroup.tsx | 57 +
.../src/airflow/ui/src/components/ui/Menu.tsx | 42 +
.../airflow}/ui/src/components/ui/NumberInput.tsx | 0
.../ui/src/components/ui/Pagination/Ellipsis.tsx | 0
.../ui/src/components/ui/Pagination/Item.tsx | 0
.../ui/src/components/ui/Pagination/Items.tsx | 0
.../src/components/ui/Pagination/NextTrigger.tsx | 0
.../ui/src/components/ui/Pagination/PageText.tsx | 46 +
.../src/components/ui/Pagination/PrevTrigger.tsx | 0
.../ui/src/components/ui/Pagination/Root.tsx | 54 +
.../ui/src/components/ui/Pagination/context.ts | 0
.../ui/src/components/ui/Pagination/index.ts | 0
.../ui/src/components/ui/Popover/Arrow.tsx | 0
.../ui/src/components/ui/Popover/CloseTrigger.tsx | 0
.../ui/src/components/ui/Popover/Content.tsx | 37 +
.../ui/src/components/ui/Popover/index.tsx | 0
.../airflow}/ui/src/components/ui/ProgressBar.tsx | 0
.../src/airflow/ui/src/components/ui/RadioCard.tsx | 82 +
.../ui/src/components/ui/SegmentedControl.tsx | 0
.../ui/src/components/ui/Select/Content.tsx | 37 +
.../airflow}/ui/src/components/ui/Select/Item.tsx | 0
.../ui/src/components/ui/Select/ItemGroup.tsx | 35 +
.../airflow}/ui/src/components/ui/Select/Root.tsx | 0
.../ui/src/components/ui/Select/Trigger.tsx | 51 +
.../ui/src/components/ui/Select/ValueText.tsx | 51 +
.../airflow}/ui/src/components/ui/Select/index.ts | 0
.../src/airflow/ui/src/components/ui/Switch.tsx | 50 +
.../src/airflow/ui/src/components/ui/Tag.tsx | 44 +
.../src/airflow}/ui/src/components/ui/Toaster.tsx | 0
.../src/airflow/ui/src/components/ui/Tooltip.tsx | 64 +
.../src/airflow}/ui/src/components/ui/index.ts | 0
.../ui/src/constants/reprocessBehaviourParams.ts | 23 +
.../src/airflow/ui/src/constants/searchParams.ts | 37 +
.../src/airflow}/ui/src/constants/sortParams.ts | 0
.../src/airflow}/ui/src/constants/stateOptions.ts | 0
.../ui/src/context/colorMode/ColorModeProvider.tsx | 0
.../src/airflow}/ui/src/context/colorMode/index.ts | 0
.../ui/src/context/colorMode/useColorMode.tsx | 0
.../src/context/openGroups/OpenGroupsProvider.tsx | 0
.../airflow}/ui/src/context/openGroups/index.ts | 0
.../ui/src/context/openGroups/useOpenGroups.ts | 0
.../ui/src/context/timezone/TimezoneProvider.tsx | 0
.../src/airflow}/ui/src/context/timezone/index.ts | 0
.../ui/src/context/timezone/useTimezone.ts | 0
.../src/airflow/ui/src/hooks/useSelectedVersion.ts | 92 +
.../src/airflow/ui/src/layouts/BaseLayout.tsx | 42 +
.../src/airflow}/ui/src/layouts/DagsLayout.tsx | 0
.../ui/src/layouts/Details/DagBreadcrumb.tsx | 0
.../ui/src/layouts/Details/DagRunSelect.tsx | 86 +
.../ui/src/layouts/Details/DetailsLayout.tsx | 104 +
.../ui/src/layouts/Details/Gantt/Gantt.tsx | 0
.../airflow}/ui/src/layouts/Details/Gantt/index.ts | 0
.../airflow/ui/src/layouts/Details/Graph/Graph.tsx | 219 +
.../airflow}/ui/src/layouts/Details/Graph/index.ts | 0
.../airflow}/ui/src/layouts/Details/Grid/Bar.tsx | 0
.../ui/src/layouts/Details/Grid/DurationAxis.tsx | 0
.../ui/src/layouts/Details/Grid/DurationTick.tsx | 0
.../airflow/ui/src/layouts/Details/Grid/Grid.tsx | 117 +
.../ui/src/layouts/Details/Grid/GridButton.tsx | 0
.../ui/src/layouts/Details/Grid/GridTI.tsx | 0
.../layouts/Details/Grid/TaskInstancesColumn.tsx | 0
.../ui/src/layouts/Details/Grid/TaskNames.tsx | 101 +
.../airflow}/ui/src/layouts/Details/Grid/index.ts | 0
.../airflow}/ui/src/layouts/Details/Grid/utils.ts | 0
.../airflow}/ui/src/layouts/Details/NavTabs.tsx | 0
.../ui/src/layouts/Details/PanelButtons.tsx | 130 +
.../ui/src/layouts/Details/ToggleGroups.tsx | 0
.../airflow}/ui/src/layouts/Nav/AdminButton.tsx | 0
.../airflow}/ui/src/layouts/Nav/BrowseButton.tsx | 0
.../src/airflow}/ui/src/layouts/Nav/DocsButton.tsx | 0
.../src/airflow/ui/src/layouts/Nav/LogoutModal.tsx | 44 +
.../src/airflow/ui/src/layouts/Nav/Nav.tsx | 77 +
.../src/airflow}/ui/src/layouts/Nav/NavButton.tsx | 0
.../src/airflow/ui/src/layouts/Nav/PluginMenus.tsx | 92 +
.../airflow/ui/src/layouts/Nav/SecurityButton.tsx | 50 +
.../airflow/ui/src/layouts/Nav/TimezoneModal.tsx | 42 +
.../ui/src/layouts/Nav/TimezoneSelector.tsx | 0
.../ui/src/layouts/Nav/UserSettingsButton.tsx | 93 +
.../src/airflow}/ui/src/layouts/Nav/index.ts | 0
airflow-core/src/airflow/ui/src/main.tsx | 71 +
.../src/airflow/ui/src/mocks/handlers/config.ts | 58 +
.../src/airflow/ui/src/mocks/handlers/dag.ts | 65 +
.../src/airflow/ui/src/mocks/handlers/dags.ts | 189 +
.../src/airflow}/ui/src/mocks/handlers/index.ts | 0
.../src/airflow/ui/src/mocks/handlers/log.ts | 194 +
.../src/airflow/ui/src/pages/Asset/Asset.tsx | 121 +
.../src/airflow/ui/src/pages/Asset/AssetGraph.tsx | 99 +
.../ui/src/pages/Asset/CreateAssetEvent.tsx | 54 +
.../ui/src/pages/Asset/CreateAssetEventModal.tsx | 218 +
.../src/airflow}/ui/src/pages/Asset/Header.tsx | 0
.../src/airflow}/ui/src/pages/Asset/index.ts | 0
.../airflow/ui/src/pages/AssetsList/AssetsList.tsx | 140 +
.../ui/src/pages/AssetsList/DependencyPopover.tsx | 64 +
.../src/airflow}/ui/src/pages/AssetsList/index.ts | 0
.../src/pages/Connections/AddConnectionButton.tsx | 80 +
.../ui/src/pages/Connections/ConnectionForm.tsx | 242 +
.../pages/Connections/ConnectionStandardFields.tsx | 98 +
.../ui/src/pages/Connections/Connections.tsx | 150 +
.../pages/Connections/DeleteConnectionButton.tsx | 87 +
.../src/pages/Connections/EditConnectionButton.tsx | 92 +
.../src/airflow}/ui/src/pages/Connections/index.ts | 0
.../ui/src/pages/Dag/Backfills/Backfills.tsx | 0
.../airflow}/ui/src/pages/Dag/Backfills/index.ts | 0
.../src/airflow/ui/src/pages/Dag/Code/Code.tsx | 182 +
.../src/airflow}/ui/src/pages/Dag/Code/index.ts | 0
airflow-core/src/airflow/ui/src/pages/Dag/Dag.tsx | 91 +
.../airflow}/ui/src/pages/Dag/DagHeader.test.tsx | 0
.../src/airflow/ui/src/pages/Dag/Details.tsx | 138 +
.../src/airflow/ui/src/pages/Dag/Header.tsx | 120 +
.../ui/src/pages/Dag/Overview/FailedLogs.tsx | 0
.../airflow/ui/src/pages/Dag/Overview/Overview.tsx | 150 +
.../ui/src/pages/Dag/Overview/TaskLogPreview.tsx | 0
.../airflow}/ui/src/pages/Dag/Overview/index.ts | 0
.../airflow}/ui/src/pages/Dag/Tasks/TaskCard.tsx | 0
.../ui/src/pages/Dag/Tasks/TaskRecentRuns.tsx | 0
.../src/airflow}/ui/src/pages/Dag/Tasks/Tasks.tsx | 0
.../src/airflow}/ui/src/pages/Dag/Tasks/index.ts | 0
.../src/airflow}/ui/src/pages/Dag/index.ts | 0
.../src/airflow}/ui/src/pages/DagRuns.tsx | 0
.../ui/src/pages/DagsList/AssetSchedule.tsx | 72 +
.../airflow/ui/src/pages/DagsList/DagCard.test.tsx | 84 +
.../src/airflow}/ui/src/pages/DagsList/DagCard.tsx | 0
.../src/airflow}/ui/src/pages/DagsList/DagTags.tsx | 0
.../airflow/ui/src/pages/DagsList/DagsFilters.tsx | 244 +
.../ui/src/pages/DagsList/DagsList.test.tsx | 0
.../airflow}/ui/src/pages/DagsList/DagsList.tsx | 0
.../airflow}/ui/src/pages/DagsList/RecentRuns.tsx | 0
.../src/airflow/ui/src/pages/DagsList/Schedule.tsx | 42 +
.../airflow}/ui/src/pages/DagsList/SortSelect.tsx | 0
.../src/airflow}/ui/src/pages/DagsList/index.ts | 0
.../airflow}/ui/src/pages/Dashboard/Dashboard.tsx | 0
.../ui/src/pages/Dashboard/Health/Health.tsx | 0
.../ui/src/pages/Dashboard/Health/HealthBadge.tsx | 0
.../src/pages/Dashboard/Health/HealthSection.tsx | 0
.../ui/src/pages/Dashboard/Health/index.ts | 0
.../Dashboard/HistoricalMetrics/DagRunMetrics.tsx | 0
.../HistoricalMetrics/HistoricalMetrics.tsx | 109 +
.../Dashboard/HistoricalMetrics/MetricSection.tsx | 0
.../HistoricalMetrics/MetricSectionSkeleton.tsx | 0
.../HistoricalMetrics/TaskInstanceMetrics.tsx | 0
.../src/pages/Dashboard/HistoricalMetrics/index.ts | 0
.../src/pages/Dashboard/Stats/DAGImportErrors.tsx | 0
.../pages/Dashboard/Stats/DAGImportErrorsModal.tsx | 0
.../src/pages/Dashboard/Stats/DagFilterButton.tsx | 0
.../ui/src/pages/Dashboard/Stats/Stats.tsx | 0
.../airflow}/ui/src/pages/Dashboard/Stats/index.ts | 0
.../src/airflow}/ui/src/pages/Dashboard/index.ts | 0
.../src/airflow}/ui/src/pages/Error.tsx | 0
.../src/airflow}/ui/src/pages/Events/Events.tsx | 0
.../src/airflow}/ui/src/pages/Events/index.tsx | 0
.../ui/src/pages/MappedTaskInstance/Header.tsx | 66 +
.../MappedTaskInstance/MappedTaskInstance.tsx | 89 +
.../ui/src/pages/MappedTaskInstance/index.ts | 0
airflow-core/src/airflow/ui/src/pages/Plugins.tsx | 55 +
.../airflow}/ui/src/pages/Pools/AddPoolButton.tsx | 0
.../ui/src/pages/Pools/DeletePoolButton.tsx | 0
.../airflow}/ui/src/pages/Pools/EditPoolButton.tsx | 0
.../src/airflow}/ui/src/pages/Pools/PoolBar.tsx | 0
.../src/airflow}/ui/src/pages/Pools/PoolForm.tsx | 0
.../src/airflow}/ui/src/pages/Pools/Pools.tsx | 0
.../src/airflow}/ui/src/pages/Pools/index.tsx | 0
.../src/airflow/ui/src/pages/Providers.tsx | 87 +
.../src/airflow/ui/src/pages/Run/Details.tsx | 156 +
.../src/airflow}/ui/src/pages/Run/Header.tsx | 0
.../src/airflow}/ui/src/pages/Run/Run.tsx | 0
.../src/airflow}/ui/src/pages/Run/index.ts | 0
airflow-core/src/airflow/ui/src/pages/Security.tsx | 56 +
.../src/airflow}/ui/src/pages/Task/Header.tsx | 0
.../ui/src/pages/Task/Overview/Overview.tsx | 0
.../airflow}/ui/src/pages/Task/Overview/index.ts | 0
.../src/airflow}/ui/src/pages/Task/Task.tsx | 0
.../src/airflow}/ui/src/pages/Task/index.ts | 0
.../ui/src/pages/TaskInstance/BlockingDeps.tsx | 57 +
.../airflow/ui/src/pages/TaskInstance/Details.tsx | 243 +
.../ui/src/pages/TaskInstance/ExtraLinks.tsx | 0
.../airflow/ui/src/pages/TaskInstance/Header.tsx | 116 +
.../ui/src/pages/TaskInstance/Logs/Logs.test.tsx | 0
.../ui/src/pages/TaskInstance/Logs/Logs.tsx | 134 +
.../src/pages/TaskInstance/Logs/TaskLogContent.tsx | 76 +
.../src/pages/TaskInstance/Logs/TaskLogHeader.tsx | 186 +
.../ui/src/pages/TaskInstance/Logs/index.ts | 0
.../src/pages/TaskInstance/RenderedTemplates.tsx | 65 +
.../ui/src/pages/TaskInstance/TaskInstance.tsx | 0
.../ui/src/pages/TaskInstance/TriggererInfo.tsx | 0
.../airflow}/ui/src/pages/TaskInstance/index.ts | 0
.../ui/src/pages/TaskInstances/TaskInstances.tsx | 225 +
.../pages/TaskInstances/TaskInstancesFilter.tsx | 0
.../airflow}/ui/src/pages/TaskInstances/index.ts | 0
.../src/pages/Variables/DeleteVariablesButton.tsx | 0
.../src/pages/Variables/ImportVariablesButton.tsx | 0
.../ui/src/pages/Variables/ImportVariablesForm.tsx | 0
.../Variables/ManageVariable/AddVariableButton.tsx | 0
.../ManageVariable/DeleteVariableButton.tsx | 0
.../ManageVariable/EditVariableButton.tsx | 0
.../Variables/ManageVariable/VariableForm.tsx | 0
.../airflow}/ui/src/pages/Variables/Variables.tsx | 0
.../src/airflow}/ui/src/pages/Variables/index.tsx | 0
.../src/airflow/ui/src/pages/XCom/XCom.tsx | 133 +
.../src/airflow}/ui/src/pages/XCom/XComEntry.tsx | 0
.../src/airflow}/ui/src/pages/XCom/index.ts | 0
.../src/airflow/ui/src/queries/useAddConnection.ts | 77 +
.../src/airflow}/ui/src/queries/useAddPool.ts | 0
.../src/airflow}/ui/src/queries/useAddVariable.ts | 0
.../ui/src/queries/useBulkDeleteVariables.ts | 0
.../airflow/ui/src/queries/useClearDagRunDryRun.ts | 51 +
.../src/airflow}/ui/src/queries/useClearRun.ts | 0
.../ui/src/queries/useClearTaskInstances.ts | 0
.../ui/src/queries/useClearTaskInstancesDryRun.ts | 0
.../src/airflow}/ui/src/queries/useConfig.tsx | 0
.../ui/src/queries/useConnectionTypeMeta.ts | 117 +
.../airflow/ui/src/queries/useCreateBackfill.ts | 90 +
.../ui/src/queries/useCreateBackfillDryRun.ts | 60 +
.../src/airflow/ui/src/queries/useDagParams.ts | 73 +
.../src/airflow}/ui/src/queries/useDagParsing.ts | 0
.../src/airflow/ui/src/queries/useDags.tsx | 87 +
.../airflow/ui/src/queries/useDeleteConnection.ts | 53 +
.../src/airflow}/ui/src/queries/useDeletePool.ts | 0
.../airflow}/ui/src/queries/useDeleteVariable.ts | 0
.../airflow/ui/src/queries/useDependencyGraph.ts | 47 +
.../airflow/ui/src/queries/useEditConnection.tsx | 101 +
.../src/airflow}/ui/src/queries/useEditPool.ts | 0
.../src/airflow}/ui/src/queries/useEditVariable.ts | 0
airflow-core/src/airflow/ui/src/queries/useGrid.ts | 74 +
.../airflow}/ui/src/queries/useImportVariables.ts | 0
.../src/airflow/ui/src/queries/useLogs.tsx | 269 +
.../src/airflow/ui/src/queries/useParamStore.ts | 102 +
.../src/airflow}/ui/src/queries/usePatchDagRun.ts | 0
.../ui/src/queries/usePatchTaskInstance.ts | 0
.../ui/src/queries/usePatchTaskInstanceDryRun.ts | 0
.../src/airflow/ui/src/queries/useTogglePause.ts | 50 +
.../src/airflow}/ui/src/queries/useTrigger.ts | 0
airflow-core/src/airflow/ui/src/queryClient.ts | 44 +
airflow-core/src/airflow/ui/src/router.tsx | 207 +
.../src/airflow}/ui/src/theme.ts | 0
.../src/airflow}/ui/src/utils/AppWrapper.tsx | 0
.../airflow}/ui/src/utils/ChakraWrapper.test.tsx | 0
.../src/airflow}/ui/src/utils/ChakraWrapper.tsx | 0
.../airflow}/ui/src/utils/RouterWrapper.test.tsx | 0
.../src/airflow}/ui/src/utils/RouterWrapper.tsx | 0
.../src/airflow}/ui/src/utils/TrimText.tsx | 0
.../src/airflow}/ui/src/utils/Wrapper.tsx | 0
.../airflow}/ui/src/utils/advancedSelectStyles.ts | 0
.../src/airflow}/ui/src/utils/capitalize.ts | 0
.../src/airflow}/ui/src/utils/datetime_utils.ts | 0
.../src/airflow}/ui/src/utils/downloadJson.ts | 0
.../src/airflow}/ui/src/utils/getMetaKey.ts | 0
.../src/airflow}/ui/src/utils/index.ts | 0
airflow-core/src/airflow/ui/src/utils/links.ts | 34 +
.../src/airflow}/ui/src/utils/logs.ts | 0
.../src/airflow}/ui/src/utils/option.ts | 0
.../src/airflow}/ui/src/utils/pluralize.test.ts | 0
.../src/airflow}/ui/src/utils/pluralize.ts | 0
.../src/airflow}/ui/src/utils/query.ts | 0
.../src/airflow/ui/src/utils/tokenHandler.test.ts | 54 +
.../src/airflow/ui/src/utils/tokenHandler.ts | 51 +
.../src/airflow}/ui/src/utils/trimTextFn.ts | 0
.../src/airflow}/ui/src/utils/useContainerWidth.ts | 0
.../src/airflow}/ui/src/vite-env.d.ts | 0
.../src/airflow}/ui/testsSetup.ts | 0
.../src/airflow}/ui/tsconfig.app.json | 0
.../src/airflow}/ui/tsconfig.dev.json | 0
.../src/airflow}/ui/tsconfig.json | 0
.../src/airflow}/ui/tsconfig.node.json | 0
.../src/airflow}/ui/vite.config.ts | 0
.../src/airflow/utils}/__init__.py | 0
.../src/airflow}/utils/api_migration.py | 0
airflow-core/src/airflow/utils/cli.py | 412 +
.../src/airflow}/utils/cli_action_loggers.py | 0
.../src/airflow}/utils/code_utils.py | 0
airflow-core/src/airflow/utils/configuration.py | 50 +
airflow-core/src/airflow/utils/context.py | 185 +
.../src/airflow}/utils/dag_cycle_tester.py | 0
.../src/airflow}/utils/dag_edges.py | 0
.../src/airflow}/utils/dag_parsing_context.py | 0
.../src/airflow}/utils/dates.py | 0
airflow-core/src/airflow/utils/db.py | 1613 ++
airflow-core/src/airflow/utils/db_cleanup.py | 520 +
airflow-core/src/airflow/utils/db_manager.py | 218 +
.../src/airflow}/utils/decorators.py | 0
.../src/airflow}/utils/deprecation_tools.py | 0
.../src/airflow}/utils/docs.py | 0
airflow-core/src/airflow/utils/dot_renderer.py | 227 +
airflow-core/src/airflow/utils/edgemodifier.py | 20 +
airflow-core/src/airflow/utils/email.py | 333 +
.../src/airflow}/utils/entry_points.py | 0
.../src/airflow}/utils/event_scheduler.py | 0
airflow-core/src/airflow/utils/file.py | 355 +
.../src/airflow}/utils/hashlib_wrapper.py | 0
airflow-core/src/airflow/utils/helpers.py | 395 +
airflow-core/src/airflow/utils/json.py | 62 +
.../src/airflow}/utils/log/__init__.py | 0
.../src/airflow}/utils/log/action_logger.py | 0
airflow-core/src/airflow/utils/log/colored_log.py | 110 +
.../airflow/utils/log/file_processor_handler.py | 153 +
.../src/airflow/utils/log/file_task_handler.py | 603 +
.../src/airflow}/utils/log/json_formatter.py | 0
.../src/airflow}/utils/log/log_reader.py | 0
.../src/airflow/utils/log/logging_mixin.py | 308 +
.../airflow}/utils/log/non_caching_file_handler.py | 0
.../log/task_handler_with_custom_formatter.py | 0
.../src/airflow}/utils/log/timezone_aware.py | 0
.../src/airflow}/utils/mixins.py | 0
.../src/airflow}/utils/module_loading.py | 0
{airflow => airflow-core/src/airflow}/utils/net.py | 0
airflow-core/src/airflow/utils/operator_helpers.py | 183 +
.../src/airflow}/utils/operator_resources.py | 0
.../src/airflow}/utils/orm_event_handlers.py | 0
.../src/airflow}/utils/platform.py | 0
.../src/airflow}/utils/process_utils.py | 0
.../utils/providers_configuration_loader.py | 0
airflow-core/src/airflow/utils/retries.py | 113 +
.../src/airflow}/utils/scheduler_health.py | 0
airflow-core/src/airflow/utils/serve_logs.py | 188 +
.../src/airflow}/utils/session.py | 0
.../src/airflow}/utils/setup_teardown.py | 0
.../src/airflow}/utils/singleton.py | 0
.../src/airflow}/utils/sqlalchemy.py | 0
airflow-core/src/airflow/utils/state.py | 228 +
.../src/airflow}/utils/strings.py | 0
airflow-core/src/airflow/utils/task_group.py | 164 +
.../src/airflow}/utils/task_instance_session.py | 0
.../src/airflow}/utils/timeout.py | 0
.../src/airflow}/utils/timezone.py | 0
.../src/airflow}/utils/trigger_rule.py | 0
.../src/airflow}/utils/types.py | 0
.../src/airflow}/utils/warnings.py | 0
.../src/airflow}/utils/weight_rule.py | 0
.../src/airflow}/utils/xcom.py | 0
airflow-core/src/airflow/utils/yaml.py | 73 +
{airflow => airflow-core/src/airflow}/version.py | 0
airflow-core/tests/conftest.py | 183 +
.../tests}/deprecations_ignore.yml | 0
.../tests/integration}/__init__.py | 0
.../tests/integration/cli}/__init__.py | 0
.../tests/integration/cli/commands}/__init__.py | 0
.../cli/commands/test_celery_command.py | 0
.../tests/integration/executors}/__init__.py | 0
.../integration/executors/test_celery_executor.py | 0
.../tests/integration/security}/__init__.py | 0
.../tests}/integration/security/test_kerberos.py | 0
.../tests/system}/__init__.py | 0
{tests => airflow-core/tests}/system/conftest.py | 0
.../tests/system/core}/__init__.py | 0
.../core/example_external_task_child_deferrable.py | 0
.../example_external_task_parent_deferrable.py | 0
airflow-core/tests/system/example_empty.py | 48 +
.../tests/unit}/__init__.py | 0
.../tests/unit/always}/__init__.py | 0
airflow-core/tests/unit/always/test_connection.py | 836 +
.../tests/unit/always/test_example_dags.py | 222 +
.../tests/unit}/always/test_pandas.py | 0
.../tests/unit/always/test_project_structure.py | 667 +
.../tests/unit/always/test_providers_manager.py | 421 +
.../tests/unit}/always/test_secrets.py | 0
.../tests/unit}/always/test_secrets_backends.py | 0
.../unit}/always/test_secrets_local_filesystem.py | 0
.../tests/unit/api}/__init__.py | 0
.../tests/unit/api/common}/__init__.py | 0
.../tests/unit}/api/common/test_airflow_health.py | 0
.../tests/unit}/api/common/test_mark_tasks.py | 0
.../tests/unit/api_fastapi}/__init__.py | 0
.../tests/unit/api_fastapi/auth}/__init__.py | 0
.../unit/api_fastapi/auth/managers}/__init__.py | 0
.../api_fastapi/auth/managers/simple}/__init__.py | 0
.../api_fastapi/auth/managers/simple/conftest.py | 61 +
.../auth/managers/simple/routes}/__init__.py | 0
.../auth/managers/simple/routes/test_login.py | 95 +
.../auth/managers/simple/services}/__init__.py | 0
.../auth/managers/simple/services/test_login.py | 82 +
.../managers/simple/test_simple_auth_manager.py | 270 +
.../api_fastapi}/auth/managers/simple/test_user.py | 0
.../auth/managers/test_base_auth_manager.py | 365 +
.../tests/unit/api_fastapi/auth/test_tokens.py | 238 +
.../tests/unit/api_fastapi/common}/__init__.py | 0
.../unit}/api_fastapi/common/test_exceptions.py | 0
airflow-core/tests/unit/api_fastapi/conftest.py | 156 +
.../tests/unit/api_fastapi/core_api}/__init__.py | 0
.../unit/api_fastapi/core_api/routes}/__init__.py | 0
.../core_api/routes/public}/__init__.py | 0
.../core_api/routes/public/test_assets.py | 1283 ++
.../core_api/routes/public/test_auth.py | 92 +
.../core_api/routes/public/test_backfills.py | 834 +
.../core_api/routes/public/test_config.py | 496 +
.../core_api/routes/public/test_connections.py | 1016 +
.../core_api/routes/public/test_dag_parsing.py | 84 +
.../core_api/routes/public/test_dag_report.py | 135 +
.../core_api/routes/public/test_dag_run.py | 1553 ++
.../core_api/routes/public/test_dag_sources.py | 169 +
.../core_api/routes/public/test_dag_stats.py | 420 +
.../core_api/routes/public/test_dag_tags.py | 259 +
.../core_api/routes/public/test_dag_versions.py | 320 +
.../core_api/routes/public/test_dag_warning.py | 93 +
.../core_api/routes/public/test_dags.py | 594 +
.../core_api/routes/public/test_event_logs.py | 326 +
.../core_api/routes/public/test_extra_links.py | 282 +
.../core_api/routes/public/test_import_error.py | 365 +
.../api_fastapi/core_api/routes/public/test_job.py | 173 +
.../api_fastapi/core_api/routes/public/test_log.py | 391 +
.../core_api/routes/public/test_monitor.py | 157 +
.../core_api/routes/public/test_plugins.py | 72 +
.../core_api/routes/public/test_pools.py | 767 +
.../core_api/routes/public/test_providers.py | 81 +
.../core_api/routes/public/test_task_instances.py | 3923 ++++
.../core_api/routes/public/test_tasks.py | 558 +
.../core_api/routes/public/test_variables.py | 1002 +
.../core_api/routes/public/test_version.py | 51 +
.../core_api/routes/public/test_xcom.py | 673 +
.../api_fastapi/core_api/routes/test_routes.py | 52 +
.../api_fastapi/core_api/routes/ui}/__init__.py | 0
.../api_fastapi/core_api/routes/ui/test_assets.py | 74 +
.../api_fastapi/core_api/routes/ui/test_auth.py | 54 +
.../core_api/routes/ui/test_backfills.py | 160 +
.../api_fastapi/core_api/routes/ui/test_config.py | 124 +
.../core_api/routes/ui/test_connections.py | 41 +
.../api_fastapi/core_api/routes/ui/test_dags.py | 116 +
.../core_api/routes/ui/test_dashboard.py | 190 +
.../core_api/routes/ui/test_dependencies.py | 270 +
.../api_fastapi/core_api/routes/ui/test_grid.py | 1112 +
.../core_api/routes/ui/test_structure.py | 547 +
.../unit/api_fastapi/core_api/test_security.py | 138 +
.../unit/api_fastapi/execution_api}/__init__.py | 0
.../unit/api_fastapi/execution_api/conftest.py | 42 +
.../api_fastapi/execution_api/routes}/__init__.py | 0
.../execution_api/routes/test_asset_events.py | 0
.../execution_api/routes/test_assets.py | 0
.../execution_api/routes/test_connections.py | 130 +
.../execution_api/routes/test_dag_runs.py | 220 +
.../execution_api/routes/test_health.py | 28 +
.../execution_api/routes/test_task_instances.py | 1131 +
.../execution_api/routes/test_variables.py | 217 +
.../api_fastapi/execution_api/routes/test_xcoms.py | 376 +
.../unit/api_fastapi/execution_api/test_app.py | 36 +
.../tests/unit}/api_fastapi/test_app.py | 0
.../tests/unit/assets}/__init__.py | 0
airflow-core/tests/unit/assets/test_evaluation.py | 199 +
airflow-core/tests/unit/assets/test_manager.py | 189 +
.../tests/unit/callbacks}/__init__.py | 0
.../unit}/callbacks/test_callback_requests.py | 0
.../tests/unit/charts}/__init__.py | 0
.../tests/unit}/charts/conftest.py | 0
.../tests/unit/charts/helm_template_generator.py | 169 +
airflow-core/tests/unit/charts/log_groomer.py | 276 +
.../tests/unit/cli}/__init__.py | 0
.../tests/unit/cli/api}/__init__.py | 0
.../tests/unit/cli/commands}/__init__.py | 0
.../unit}/cli/commands/_common_cli_classes.py | 0
.../unit/cli/commands/local_commands}/__init__.py | 0
.../local_commands/test_api_server_command.py | 182 +
.../local_commands/test_cheat_sheet_command.py | 0
.../local_commands/test_dag_processor_command.py | 0
.../cli/commands/local_commands/test_db_command.py | 628 +
.../commands/local_commands/test_info_command.py | 0
.../local_commands/test_kerberos_command.py | 0
.../local_commands/test_plugins_command.py | 140 +
.../test_rotate_fernet_key_command.py | 0
.../local_commands/test_scheduler_command.py | 0
.../local_commands/test_standalone_command.py | 0
.../local_commands/test_triggerer_command.py | 0
.../unit/cli/commands/remote_commands}/__init__.py | 0
.../commands/remote_commands/test_asset_command.py | 0
.../remote_commands/test_backfill_command.py | 0
.../remote_commands/test_config_command.py | 468 +
.../remote_commands/test_connection_command.py | 995 +
.../commands/remote_commands/test_dag_command.py | 834 +
.../commands/remote_commands/test_jobs_command.py | 0
.../commands/remote_commands/test_pool_command.py | 0
.../commands/remote_commands/test_task_command.py | 545 +
.../remote_commands/test_variable_command.py | 0
.../remote_commands/test_version_command.py | 0
.../unit}/cli/commands/test_legacy_commands.py | 0
{tests => airflow-core/tests/unit}/cli/conftest.py | 0
airflow-core/tests/unit/cli/test_cli_parser.py | 535 +
.../tests/unit}/cluster_policies/__init__.py | 0
.../tests/unit/config_templates}/__init__.py | 0
.../tests/unit}/config_templates/deprecated.cfg | 0
.../unit}/config_templates/deprecated_cmd.cfg | 0
.../unit}/config_templates/deprecated_secret.cfg | 0
.../tests/unit/config_templates/empty.cfg | 0
.../tests/unit}/config_templates/requirements.txt | 0
.../tests/unit/core}/__init__.py | 0
.../tests/unit}/core/test_airflow_module.py | 0
airflow-core/tests/unit/core/test_configuration.py | 1914 ++
.../tests/unit}/core/test_core.py | 0
.../tests/unit}/core/test_example_dags_system.py | 0
.../tests/unit}/core/test_exceptions.py | 0
.../tests/unit}/core/test_impersonation_tests.py | 0
.../tests/unit}/core/test_otel_logger.py | 0
.../tests/unit}/core/test_otel_tracer.py | 0
.../tests/unit}/core/test_policies.py | 0
airflow-core/tests/unit/core/test_sentry.py | 197 +
.../tests/unit}/core/test_settings.py | 0
.../tests/unit/core/test_sqlalchemy_config.py | 111 +
airflow-core/tests/unit/core/test_stats.py | 548 +
.../tests/unit/dag_processing}/__init__.py | 0
.../tests/unit/dag_processing/bundles}/__init__.py | 0
.../tests/unit/dag_processing/bundles/test_base.py | 270 +
.../bundles/test_dag_bundle_manager.py | 197 +
.../tests/unit/dag_processing/bundles/test_git.py | 590 +
.../unit}/dag_processing/bundles/test_local.py | 0
.../tests/unit/dag_processing/test_collection.py | 594 +
.../tests/unit/dag_processing/test_manager.py | 1096 +
.../tests/unit/dag_processing/test_processor.py | 361 +
.../tests/unit}/dags/.airflowignore | 0
.../tests/unit}/dags/.airflowignore_glob | 0
{tests => airflow-core/tests/unit}/dags/.gitignore | 0
{tests => airflow-core/tests/unit}/dags/README.md | 0
.../tests/unit/dags}/__init__.py | 0
{tests => airflow-core/tests/unit}/dags/no_dags.py | 0
.../tests/unit}/dags/subdir1/.airflowignore | 0
.../tests/unit/dags/subdir1}/__init__.py | 0
.../tests/unit}/dags/subdir1/test_ignore_this.py | 0
.../tests/unit}/dags/subdir2/.airflowignore_glob | 0
.../tests/unit/dags/subdir2}/__init__.py | 0
.../tests/unit/dags/subdir2/subdir3}/__init__.py | 0
.../unit}/dags/subdir2/subdir3/test_nested_dag.py | 0
.../unit}/dags/subdir2/test_dont_ignore_this.py | 0
.../tests/unit}/dags/test_assets.py | 0
.../test_backfill_with_upstream_failed_task.py | 0
.../tests/unit}/dags/test_cli_triggered_dags.py | 0
.../unit}/dags/test_dag_for_db_queries_counter.py | 0
.../tests/unit}/dags/test_dag_parsing_context.py | 0
.../tests/unit}/dags/test_dag_warnings.py | 0
.../tests/unit}/dags/test_dag_with_no_tags.py | 0
.../tests/unit}/dags/test_dag_xcom_openlineage.py | 0
.../tests/unit}/dags/test_dagrun_fast_follow.py | 0
.../tests/unit}/dags/test_default_impersonation.py | 0
.../tests/unit}/dags/test_double_trigger.py | 0
.../tests/unit}/dags/test_example_bash_operator.py | 0
.../test_external_task_sensor_check_existense.py | 43 +
.../tests/unit}/dags/test_failing.py | 0
.../tests/unit}/dags/test_future_start_date.py | 0
.../tests/unit}/dags/test_heartbeat_failed_fast.py | 0
.../tests/unit}/dags/test_impersonation.py | 0
airflow-core/tests/unit/dags/test_imports.py | 47 +
.../tests/unit}/dags/test_invalid_cron.py | 0
.../tests/unit}/dags/test_invalid_dup_task.py | 0
.../tests/unit}/dags/test_invalid_param.py | 0
.../tests/unit/dags/test_invalid_param2.py | 45 +
.../tests/unit/dags/test_invalid_param3.py | 45 +
.../tests/unit/dags/test_invalid_param4.py | 45 +
.../tests/unit}/dags/test_latest_runs.py | 0
.../tests/unit/dags/test_logging_in_dag.py | 46 +
.../tests/unit}/dags/test_mapped_classic.py | 0
.../tests/unit}/dags/test_mapped_taskflow.py | 0
.../tests/unit}/dags/test_mark_state.py | 0
.../tests/unit}/dags/test_miscellaneous.py | 0
.../tests/unit}/dags/test_missing_owner.py | 0
.../tests/unit}/dags/test_multiple_dags.py | 0
.../tests/unit}/dags/test_no_impersonation.py | 0
.../tests/unit}/dags/test_on_failure_callback.py | 0
.../tests/unit}/dags/test_on_kill.py | 0
.../tests/unit}/dags/test_only_empty_tasks.py | 0
.../tests/unit}/dags/test_openlineage_execution.py | 0
.../tests/unit}/dags/test_parsing_context.py | 0
.../tests/unit}/dags/test_scheduler_dags.py | 0
.../tests/unit}/dags/test_sensor.py | 0
.../tests/unit}/dags/test_task_view_type_check.py | 0
airflow-core/tests/unit/dags/test_valid_param.py | 49 +
airflow-core/tests/unit/dags/test_valid_param2.py | 47 +
.../unit}/dags/test_with_non_default_owner.py | 0
.../unit/dags/test_zip/file_no_airflow_dag.py | 0
.../tests/unit}/dags/test_zip/test_zip.py | 0
.../dags/test_zip/test_zip_module}/__init__.py | 0
.../unit}/dags/test_zip/test_zip_module/test.py | 0
.../tests/unit}/dags_corrupted/README.md | 0
.../tests/unit/dags_corrupted}/__init__.py | 0
.../dags_corrupted/test_impersonation_custom.py | 0
.../unit}/dags_corrupted/test_nonstring_owner.py | 0
.../tests/unit/dags_with_system_exit}/__init__.py | 0
.../unit}/dags_with_system_exit/a_system_exit.py | 0
.../dags_with_system_exit/b_test_scheduler_dags.py | 0
.../unit}/dags_with_system_exit/c_system_exit.py | 0
.../tests/unit/datasets}/__init__.py | 0
.../tests/unit}/datasets/test_dataset.py | 0
.../tests/unit/decorators}/__init__.py | 0
airflow-core/tests/unit/decorators/test_bash.py | 520 +
.../unit/decorators/test_branch_external_python.py | 81 +
.../tests/unit/decorators/test_branch_python.py | 69 +
.../unit/decorators/test_branch_virtualenv.py | 88 +
.../tests/unit}/decorators/test_condition.py | 0
.../tests/unit}/decorators/test_external_python.py | 0
airflow-core/tests/unit/decorators/test_mapped.py | 101 +
.../unit}/decorators/test_python_virtualenv.py | 0
airflow-core/tests/unit/decorators/test_sensor.py | 222 +
.../tests/unit}/decorators/test_setup_teardown.py | 0
.../tests/unit/decorators/test_short_circuit.py | 148 +
.../tests/unit}/decorators/test_task_group.py | 0
.../tests/unit}/executors/.gitignore | 0
.../tests/unit/executors}/__init__.py | 0
.../tests/unit}/executors/test_base_executor.py | 0
.../tests/unit}/executors/test_debug_executor.py | 0
.../tests/unit/executors/test_executor_loader.py | 368 +
.../tests/unit}/executors/test_executor_utils.py | 0
.../tests/unit}/executors/test_local_executor.py | 0
.../unit}/executors/test_sequential_executor.py | 0
.../tests/unit/hooks}/__init__.py | 0
airflow-core/tests/unit/hooks/test_base.py | 88 +
.../tests/unit/io}/__init__.py | 0
{tests => airflow-core/tests/unit}/io/test_path.py | 0
.../tests/unit}/io/test_wrapper.py | 0
.../tests/unit/jobs}/__init__.py | 0
airflow-core/tests/unit/jobs/test_base_job.py | 284 +
airflow-core/tests/unit/jobs/test_scheduler_job.py | 6688 ++++++
airflow-core/tests/unit/jobs/test_triggerer_job.py | 591 +
.../tests/unit/lineage}/__init__.py | 0
.../tests/unit}/lineage/test_hook.py | 0
airflow-core/tests/unit/lineage/test_lineage.py | 203 +
.../tests/unit/listeners}/__init__.py | 0
.../tests/unit}/listeners/asset_listener.py | 0
.../tests/unit}/listeners/class_listener.py | 0
.../unit}/listeners/dag_import_error_listener.py | 0
.../tests/unit}/listeners/dag_listener.py | 0
.../tests/unit}/listeners/empty_listener.py | 0
.../tests/unit}/listeners/file_write_listener.py | 0
.../tests/unit}/listeners/full_listener.py | 0
.../tests/unit}/listeners/lifecycle_listener.py | 0
.../tests/unit}/listeners/partial_listener.py | 0
.../tests/unit}/listeners/slow_listener.py | 0
.../tests/unit/listeners/test_asset_listener.py | 65 +
.../tests/unit/listeners/test_listeners.py | 193 +
.../tests/unit}/listeners/throwing_listener.py | 0
.../tests/unit}/listeners/very_slow_listener.py | 0
.../tests/unit}/listeners/xcom_listener.py | 0
.../tests/unit/macros}/__init__.py | 0
.../tests/unit}/models/__init__.py | 0
airflow-core/tests/unit/models/test_asset.py | 165 +
airflow-core/tests/unit/models/test_backfill.py | 432 +
.../tests/unit}/models/test_base.py | 0
.../tests/unit/models/test_baseoperator.py | 340 +
airflow-core/tests/unit/models/test_cleartasks.py | 777 +
.../tests/unit}/models/test_connection.py | 0
airflow-core/tests/unit/models/test_dag.py | 3689 ++++
.../tests/unit}/models/test_dag_version.py | 0
airflow-core/tests/unit/models/test_dagbag.py | 940 +
airflow-core/tests/unit/models/test_dagcode.py | 212 +
airflow-core/tests/unit/models/test_dagrun.py | 2529 +++
airflow-core/tests/unit/models/test_dagwarning.py | 73 +
.../tests/unit}/models/test_deadline.py | 0
.../tests/unit/models/test_mappedoperator.py | 1375 ++
.../tests/unit}/models/test_pool.py | 0
.../tests/unit}/models/test_renderedtifields.py | 0
.../tests/unit/models/test_serialized_dag.py | 393 +
.../tests/unit/models/test_taskinstance.py | 5057 +++++
.../tests/unit}/models/test_taskmap.py | 0
.../tests/unit}/models/test_timestamp.py | 0
airflow-core/tests/unit/models/test_trigger.py | 543 +
airflow-core/tests/unit/models/test_variable.py | 329 +
airflow-core/tests/unit/models/test_xcom.py | 423 +
.../tests/unit}/models/test_xcom_arg.py | 0
.../tests/unit/notifications}/__init__.py | 0
.../tests/unit}/notifications/test_basenotifier.py | 0
.../tests/unit}/notifications/test_notifier.txt | 0
.../tests/unit/plugins}/__init__.py | 0
.../tests/unit/plugins/priority_weight_strategy.py | 68 +
airflow-core/tests/unit/plugins/test_plugin.py | 136 +
.../tests/unit}/plugins/test_plugin_ignore.py | 0
.../tests/unit/plugins/test_plugins_manager.py | 341 +
.../tests/unit/secrets}/__init__.py | 0
.../tests/unit}/secrets/test_cache.py | 0
.../tests/unit/security}/__init__.py | 0
.../tests/unit}/security/test_kerberos.py | 0
.../tests/unit/sensors}/__init__.py | 0
airflow-core/tests/unit/sensors/test_base.py | 1410 ++
.../unit/sensors/test_external_task_sensor.py | 1734 ++
.../tests/unit}/sensors/test_filesystem.py | 0
.../tests/unit/serialization}/__init__.py | 0
.../unit/serialization/serializers}/__init__.py | 0
.../serialization/serializers/test_serializers.py | 0
.../unit/serialization/test_dag_serialization.py | 3071 +++
.../tests/unit/serialization/test_serde.py | 449 +
.../unit/serialization/test_serialized_objects.py | 437 +
.../tests/unit/task}/__init__.py | 0
.../tests/unit}/task/conftest.py | 0
.../tests/unit/testconfig}/__init__.py | 0
.../tests/unit/testconfig/conf}/__init__.py | 0
.../unit}/testconfig/conf/core-with-trash.xml | 0
.../tests/unit}/testconfig/conf/emr-core-site.xml | 0
.../tests/unit}/testconfig/conf/ha-core-site.xml | 0
.../unit}/testconfig/conf/ha-noport-hdfs-site.xml | 0
.../testconfig/conf/ha-noport-trash-hdfs-site.xml | 0
.../unit}/testconfig/conf/ha-port-hdfs-site.xml | 0
.../testconfig/conf/non-ha-port-core-site.xml | 0
.../tests/unit/ti_deps}/__init__.py | 0
.../tests/unit/ti_deps/contexts}/__init__.py | 0
.../tests/unit/ti_deps/deps}/__init__.py | 0
.../tests/unit}/ti_deps/deps/fake_models.py | 0
.../deps/test_dag_ti_slots_available_dep.py | 0
.../unit}/ti_deps/deps/test_dag_unpaused_dep.py | 0
.../unit}/ti_deps/deps/test_dagrun_exists_dep.py | 0
.../ti_deps/deps/test_mapped_task_upstream_dep.py | 0
.../ti_deps/deps/test_not_in_retry_period_dep.py | 0
.../deps/test_not_previously_skipped_dep.py | 167 +
.../ti_deps/deps/test_pool_slots_available_dep.py | 0
.../unit/ti_deps/deps/test_prev_dagrun_dep.py | 334 +
.../ti_deps/deps/test_ready_to_reschedule_dep.py | 178 +
.../ti_deps/deps/test_runnable_exec_date_dep.py | 0
.../unit}/ti_deps/deps/test_task_concurrency.py | 0
.../ti_deps/deps/test_task_not_running_dep.py | 0
.../unit/ti_deps/deps/test_trigger_rule_dep.py | 1647 ++
.../unit}/ti_deps/deps/test_valid_state_dep.py | 0
.../tests/unit/timetables}/__init__.py | 0
.../tests/unit/timetables/test_assets_timetable.py | 345 +
.../unit}/timetables/test_continuous_timetable.py | 0
.../unit}/timetables/test_events_timetable.py | 0
.../unit/timetables/test_interval_timetable.py | 604 +
.../unit/timetables/test_trigger_timetable.py | 601 +
.../unit/timetables/test_workday_timetable.py | 109 +
.../tests/unit/utils}/__init__.py | 0
.../tests/unit/utils/log}/__init__.py | 0
.../tests/unit}/utils/log/test_colored_log.py | 0
.../unit}/utils/log/test_file_processor_handler.py | 0
.../tests/unit}/utils/log/test_json_formatter.py | 0
.../tests/unit/utils/log/test_log_reader.py | 287 +
airflow-core/tests/unit/utils/test_cli_util.py | 290 +
.../tests/unit}/utils/test_config.py | 0
airflow-core/tests/unit/utils/test_dag_cycle.py | 168 +
airflow-core/tests/unit/utils/test_db.py | 266 +
airflow-core/tests/unit/utils/test_db_cleanup.py | 616 +
airflow-core/tests/unit/utils/test_db_manager.py | 138 +
.../tests/unit}/utils/test_decorators.py | 0
.../tests/unit}/utils/test_docs.py | 0
airflow-core/tests/unit/utils/test_dot_renderer.py | 226 +
.../tests/unit}/utils/test_edgemodifier.py | 0
airflow-core/tests/unit/utils/test_email.py | 401 +
.../tests/unit}/utils/test_entry_points.py | 0
.../tests/unit}/utils/test_event_scheduler.py | 0
airflow-core/tests/unit/utils/test_file.py | 265 +
airflow-core/tests/unit/utils/test_helpers.py | 376 +
airflow-core/tests/unit/utils/test_json.py | 111 +
airflow-core/tests/unit/utils/test_log_handlers.py | 896 +
.../tests/unit/utils/test_logging_mixin.py | 209 +
.../tests/unit}/utils/test_module_loading.py | 0
airflow-core/tests/unit/utils/test_net.py | 59 +
.../tests/unit/utils/test_operator_helpers.py | 149 +
.../tests/unit}/utils/test_operator_resources.py | 0
.../tests/unit/utils/test_orm_event_handlers.py | 38 +
...test_preexisting_python_virtualenv_decorator.py | 0
.../tests/unit/utils/test_process_utils.py | 247 +
airflow-core/tests/unit/utils/test_retries.py | 100 +
.../tests/unit}/utils/test_scheduler_health.py | 0
airflow-core/tests/unit/utils/test_serve_logs.py | 246 +
.../tests/unit}/utils/test_session.py | 0
.../tests/unit}/utils/test_singleton.py | 0
airflow-core/tests/unit/utils/test_sqlalchemy.py | 333 +
airflow-core/tests/unit/utils/test_state.py | 78 +
airflow-core/tests/unit/utils/test_task_group.py | 1768 ++
.../test_task_handler_with_custom_formatter.py | 0
.../tests/unit}/utils/test_timezone.py | 0
.../tests/unit}/utils/test_trigger_rule.py | 0
.../tests/unit}/utils/test_types.py | 0
.../tests/unit}/utils/test_warnings.py | 0
.../tests/unit}/utils/test_weight_rule.py | 0
.../providers/asana => airflow-ctl}/README.md | 0
airflow-ctl/pyproject.toml | 120 +
airflow-ctl/src/airflowctl/__init__.py | 19 +
airflow-ctl/src/airflowctl/__main__.py | 37 +
.../src/airflowctl/api}/__init__.py | 0
airflow-ctl/src/airflowctl/api/client.py | 263 +
.../src/airflowctl/api/datamodels}/__init__.py | 0
.../src/airflowctl/api/datamodels/generated.py | 1603 ++
airflow-ctl/src/airflowctl/api/operations.py | 479 +
airflow-ctl/src/airflowctl/ctl/__init__.py | 22 +
airflow-ctl/src/airflowctl/ctl/cli_config.py | 195 +
airflow-ctl/src/airflowctl/ctl/cli_parser.py | 153 +
.../src/airflowctl/ctl/commands}/__init__.py | 0
.../src/airflowctl/ctl/commands/auth_command.py | 43 +
airflow-ctl/src/airflowctl/exceptions.py | 34 +
airflow-ctl/src/airflowctl/typing_compat.py | 29 +
.../src/airflowctl/utils}/__init__.py | 0
airflow-ctl/src/airflowctl/utils/helpers.py | 30 +
airflow-ctl/src/airflowctl/utils/module_loading.py | 39 +
.../tests/airflow_ctl}/__init__.py | 0
airflow-ctl/tests/airflow_ctl/api/test_client.py | 124 +
.../tests/airflow_ctl/api/test_operations.py | 749 +
.../tests/airflow_ctl/commands}/__init__.py | 0
.../airflow_ctl/commands/test_auth_command.py | 50 +
airflow-ctl/tests/conftest.py | 55 +
airflow/_logging/structlog.py | 434 -
airflow/_vendor/__init__.py | 0
airflow/api/__init__.py | 44 -
airflow/api/auth/backend/deny_all.py | 44 -
airflow/api/client/__init__.py | 38 -
airflow/api_connexion/schemas/dag_schema.py | 86 -
airflow/api_fastapi/app.py | 160 -
airflow/api_fastapi/common/db/common.py | 181 -
airflow/api_fastapi/common/parameters.py | 713 -
airflow/api_fastapi/common/types.py | 74 -
airflow/api_fastapi/core_api/app.py | 177 -
airflow/api_fastapi/core_api/base.py | 41 -
.../api_fastapi/core_api/datamodels/connections.py | 90 -
airflow/api_fastapi/core_api/datamodels/dags.py | 183 -
airflow/api_fastapi/core_api/datamodels/job.py | 43 -
.../api_fastapi/core_api/datamodels/ui/config.py | 44 -
airflow/api_fastapi/core_api/datamodels/ui/dags.py | 35 -
.../core_api/datamodels/ui/structure.py | 50 -
.../api_fastapi/core_api/openapi/v1-generated.yaml | 11426 ----------
.../api_fastapi/core_api/routes/public/__init__.py | 93 -
.../api_fastapi/core_api/routes/public/assets.py | 486 -
.../core_api/routes/public/backfills.py | 268 -
.../api_fastapi/core_api/routes/public/config.py | 176 -
.../core_api/routes/public/dag_parsing.py | 67 -
.../core_api/routes/public/dag_report.py | 56 -
.../api_fastapi/core_api/routes/public/dag_run.py | 443 -
.../core_api/routes/public/dag_sources.py | 71 -
.../core_api/routes/public/dag_stats.py | 92 -
.../api_fastapi/core_api/routes/public/dag_tags.py | 71 -
.../core_api/routes/public/dag_versions.py | 124 -
.../core_api/routes/public/dag_warning.py | 76 -
airflow/api_fastapi/core_api/routes/public/dags.py | 327 -
.../core_api/routes/public/extra_links.py | 84 -
.../core_api/routes/public/import_error.py | 100 -
airflow/api_fastapi/core_api/routes/public/job.py | 128 -
airflow/api_fastapi/core_api/routes/public/log.py | 153 -
.../api_fastapi/core_api/routes/public/login.py | 38 -
.../api_fastapi/core_api/routes/public/plugins.py | 39 -
.../api_fastapi/core_api/routes/public/pools.py | 206 -
.../core_api/routes/public/providers.py | 55 -
.../core_api/routes/public/task_instances.py | 860 -
.../api_fastapi/core_api/routes/public/tasks.py | 80 -
.../core_api/routes/public/variables.py | 200 -
airflow/api_fastapi/core_api/routes/public/xcom.py | 270 -
airflow/api_fastapi/core_api/routes/ui/__init__.py | 38 -
airflow/api_fastapi/core_api/routes/ui/assets.py | 84 -
.../api_fastapi/core_api/routes/ui/backfills.py | 73 -
airflow/api_fastapi/core_api/routes/ui/config.py | 70 -
airflow/api_fastapi/core_api/routes/ui/dags.py | 149 -
.../api_fastapi/core_api/routes/ui/dashboard.py | 93 -
.../api_fastapi/core_api/routes/ui/dependencies.py | 86 -
airflow/api_fastapi/core_api/routes/ui/grid.py | 221 -
.../api_fastapi/core_api/routes/ui/structure.py | 134 -
airflow/api_fastapi/core_api/security.py | 146 -
.../api_fastapi/core_api/services/ui/structure.py | 94 -
airflow/api_fastapi/execution_api/app.py | 153 -
.../api_fastapi/execution_api/datamodels/asset.py | 51 -
.../execution_api/datamodels/taskinstance.py | 284 -
.../api_fastapi/execution_api/datamodels/token.py | 27 -
.../execution_api/datamodels/variable.py | 38 -
.../api_fastapi/execution_api/datamodels/xcom.py | 30 -
airflow/api_fastapi/execution_api/deps.py | 32 -
.../api_fastapi/execution_api/routes/__init__.py | 37 -
.../execution_api/routes/connections.py | 82 -
airflow/api_fastapi/execution_api/routes/health.py | 27 -
.../execution_api/routes/task_instances.py | 571 -
.../api_fastapi/execution_api/routes/variables.py | 102 -
airflow/api_fastapi/execution_api/routes/xcoms.py | 262 -
airflow/api_fastapi/logging/decorators.py | 159 -
airflow/assets/manager.py | 309 -
airflow/auth/managers/base_auth_manager.py | 417 -
airflow/auth/managers/models/batch_apis.py | 59 -
airflow/auth/managers/models/resource_details.py | 92 -
.../auth/managers/simple/openapi/v1-generated.yaml | 153 -
airflow/auth/managers/simple/routes/login.py | 54 -
airflow/auth/managers/simple/services/login.py | 73 -
.../auth/managers/simple/simple_auth_manager.py | 298 -
airflow/auth/managers/simple/ui/dev/index.html | 23 -
airflow/auth/managers/simple/ui/index.html | 13 -
airflow/auth/managers/simple/ui/package-lock.json | 5721 -----
airflow/auth/managers/simple/ui/package.json | 34 -
airflow/auth/managers/simple/ui/pnpm-lock.yaml | 4068 ----
.../auth/managers/simple/ui/src/login/Login.tsx | 80 -
airflow/auth/managers/simple/ui/src/main.tsx | 32 -
airflow/auth/managers/simple/ui/src/queryClient.ts | 28 -
airflow/auth/managers/simple/ui/src/router.tsx | 37 -
airflow/auth/managers/simple/ui/vite.config.ts | 48 -
airflow/auth/managers/simple/user.py | 41 -
airflow/auth/managers/utils/fab.py | 52 -
airflow/callbacks/callback_requests.py | 91 -
airflow/cli/cli_config.py | 1964 --
airflow/cli/cli_parser.py | 195 -
.../commands/local_commands/api_server_command.py | 132 -
.../commands/local_commands/standalone_command.py | 291 -
.../cli/commands/remote_commands/config_command.py | 539 -
.../cli/commands/remote_commands/dag_command.py | 589 -
.../commands/remote_commands/provider_command.py | 273 -
.../cli/commands/remote_commands/task_command.py | 763 -
airflow/config_templates/config.yml | 2737 ---
airflow/config_templates/unit_tests.cfg | 135 -
airflow/configuration.py | 2179 --
airflow/dag_processing/bundles/git.py | 330 -
airflow/dag_processing/bundles/manager.py | 141 -
airflow/dag_processing/collection.py | 833 -
airflow/dag_processing/manager.py | 1103 -
airflow/dag_processing/processor.py | 310 -
airflow/decorators/__init__.pyi | 793 -
airflow/decorators/base.py | 687 -
airflow/decorators/bash.py | 107 -
airflow/example_dags/example_asset_alias.py | 101 -
.../example_dags/example_asset_with_watchers.py | 45 -
airflow/example_dags/example_bash_decorator.py | 116 -
.../example_branch_day_of_week_operator.py | 61 -
airflow/example_dags/example_branch_operator.py | 168 -
.../example_branch_operator_decorator.py | 145 -
airflow/example_dags/example_complex.py | 221 -
airflow/example_dags/example_params_ui_tutorial.py | 260 -
airflow/example_dags/example_sensors.py | 132 -
.../example_short_circuit_decorator.py | 61 -
.../example_dags/example_short_circuit_operator.py | 67 -
airflow/exceptions.py | 503 -
airflow/executors/base_executor.py | 702 -
airflow/executors/local_executor.py | 253 -
airflow/executors/workloads.py | 145 -
airflow/hooks/README.md | 24 -
airflow/hooks/base.py | 184 -
airflow/jobs/local_task_job_runner.py | 360 -
airflow/jobs/scheduler_job_runner.py | 2175 --
airflow/jobs/triggerer_job_runner.py | 896 -
airflow/logging_config.py | 106 -
airflow/metrics/validators.py | 274 -
airflow/models/__init__.py | 140 -
airflow/models/abstractoperator.py | 289 -
airflow/models/asset.py | 738 -
airflow/models/backfill.py | 504 -
airflow/models/baseoperator.py | 1130 -
airflow/models/baseoperatorlink.py | 104 -
airflow/models/connection.py | 525 -
airflow/models/dag.py | 2537 ---
airflow/models/dagbundle.py | 43 -
airflow/models/dagrun.py | 1831 --
airflow/models/serialized_dag.py | 501 -
airflow/models/skipmixin.py | 232 -
airflow/models/taskinstance.py | 3849 ----
airflow/models/taskmap.py | 251 -
airflow/models/taskreschedule.py | 130 -
airflow/models/xcom.py | 533 -
airflow/models/xcom_arg.py | 192 -
airflow/operators/README.md | 24 -
airflow/operators/__init__.py | 59 -
airflow/operators/branch.py | 99 -
airflow/operators/smooth.py | 38 -
airflow/providers_manager.py | 1304 --
airflow/reproducible_build.yaml | 2 -
airflow/secrets/__init__.py | 37 -
airflow/security/permissions.py | 123 -
airflow/security/utils.py | 85 -
airflow/sensors/base.py | 445 -
airflow/serialization/dag_dependency.py | 43 -
airflow/serialization/schema.json | 392 -
airflow/serialization/serde.py | 391 -
airflow/serialization/serialized_objects.py | 1994 --
airflow/settings.py | 707 -
airflow/task/standard_task_runner.py | 321 -
.../ti_deps/deps/exec_date_after_start_date_dep.py | 46 -
airflow/ti_deps/deps/not_previously_skipped_dep.py | 94 -
airflow/timetables/trigger.py | 345 -
airflow/ui/CONTRIBUTING.md | 35 -
airflow/ui/dev/index.html | 24 -
airflow/ui/index.html | 15 -
airflow/ui/openapi-gen/queries/common.ts | 1860 --
airflow/ui/openapi-gen/queries/index.ts | 4 -
airflow/ui/openapi-gen/queries/infiniteQueries.ts | 1 -
airflow/ui/openapi-gen/queries/prefetch.ts | 2469 ---
airflow/ui/openapi-gen/queries/queries.ts | 4652 -----
airflow/ui/openapi-gen/queries/suspense.ts | 2897 ---
airflow/ui/openapi-gen/requests/schemas.gen.ts | 6552 ------
airflow/ui/openapi-gen/requests/services.gen.ts | 3534 ----
airflow/ui/openapi-gen/requests/types.gen.ts | 5318 -----
airflow/ui/package.json | 91 -
airflow/ui/pnpm-lock.yaml | 9386 ---------
airflow/ui/src/components/Assets/AssetEvent.tsx | 91 -
airflow/ui/src/components/Assets/AssetEvents.tsx | 101 -
airflow/ui/src/components/BackfillIcon.tsx | 36 -
.../ui/src/components/Clear/Run/ClearRunButton.tsx | 50 -
.../ui/src/components/Clear/Run/ClearRunDialog.tsx | 129 -
.../Clear/TaskInstance/ClearTaskInstanceButton.tsx | 52 -
.../Clear/TaskInstance/ClearTaskInstanceDialog.tsx | 156 -
airflow/ui/src/components/ConfirmationModal.tsx | 60 -
airflow/ui/src/components/DagVersionSelect.tsx | 95 -
airflow/ui/src/components/DataTable/DataTable.tsx | 151 -
.../components/FlexibleForm/FieldAdvancedArray.tsx | 107 -
.../ui/src/components/FlexibleForm/FieldBool.tsx | 43 -
.../src/components/FlexibleForm/FieldDateTime.tsx | 53 -
.../src/components/FlexibleForm/FieldDropdown.tsx | 82 -
.../components/FlexibleForm/FieldMultiSelect.tsx | 86 -
.../components/FlexibleForm/FieldMultilineText.tsx | 47 -
.../ui/src/components/FlexibleForm/FieldNumber.tsx | 58 -
.../ui/src/components/FlexibleForm/FieldObject.tsx | 80 -
.../ui/src/components/FlexibleForm/FieldRow.tsx | 61 -
.../src/components/FlexibleForm/FieldSelector.tsx | 121 -
.../ui/src/components/FlexibleForm/FieldString.tsx | 63 -
.../components/FlexibleForm/FieldStringArray.tsx | 66 -
.../src/components/FlexibleForm/FlexibleForm.tsx | 88 -
.../ui/src/components/FlexibleForm/HiddenInput.tsx | 39 -
airflow/ui/src/components/FlexibleForm/Row.tsx | 34 -
airflow/ui/src/components/FlexibleForm/index.tsx | 26 -
airflow/ui/src/components/Graph/AssetNode.tsx | 87 -
airflow/ui/src/components/Graph/DagNode.tsx | 62 -
airflow/ui/src/components/Graph/TaskNode.tsx | 146 -
airflow/ui/src/components/Graph/reactflowUtils.ts | 145 -
airflow/ui/src/components/Graph/useGraphLayout.ts | 279 -
.../src/components/MarkAs/Run/MarkRunAsDialog.tsx | 79 -
.../TaskInstance/MarkTaskInstanceAsDialog.tsx | 142 -
airflow/ui/src/components/Menu/MenuButton.tsx | 48 -
airflow/ui/src/components/Menu/ParseDag.tsx | 47 -
.../ui/src/components/Menu/RunBackfillButton.tsx | 46 -
airflow/ui/src/components/Menu/RunBackfillForm.tsx | 217 -
.../ui/src/components/Menu/RunBackfillModal.tsx | 47 -
airflow/ui/src/components/RenderedJsonField.tsx | 57 -
airflow/ui/src/components/StateBadge.tsx | 44 -
airflow/ui/src/components/StateIcon.tsx | 59 -
airflow/ui/src/components/TaskName.tsx | 68 -
airflow/ui/src/components/TaskTrySelect.tsx | 149 -
airflow/ui/src/components/TogglePause.tsx | 95 -
.../src/components/TriggerDag/TriggerDAGForm.tsx | 227 -
.../src/components/TriggerDag/TriggerDAGModal.tsx | 66 -
.../ui/src/components/TriggerDag/useParamStore.ts | 102 -
airflow/ui/src/components/TruncatedText.tsx | 40 -
.../ui/src/components/ui/Accordion/ItemTrigger.tsx | 47 -
.../ui/src/components/ui/ActionBar/BarContent.tsx | 39 -
airflow/ui/src/components/ui/Alert.tsx | 60 -
airflow/ui/src/components/ui/Breadcrumb/Root.tsx | 49 -
airflow/ui/src/components/ui/Button.tsx | 52 -
airflow/ui/src/components/ui/Checkbox.tsx | 38 -
.../ui/src/components/ui/Dialog/CloseTrigger.tsx | 36 -
airflow/ui/src/components/ui/Dialog/Content.tsx | 41 -
.../ui/src/components/ui/FileUpload/Dropzone.tsx | 43 -
.../ui/src/components/ui/FileUpload/FileInput.tsx | 52 -
airflow/ui/src/components/ui/FileUpload/Item.tsx | 61 -
airflow/ui/src/components/ui/FileUpload/List.tsx | 51 -
airflow/ui/src/components/ui/FileUpload/Root.tsx | 35 -
airflow/ui/src/components/ui/InputGroup.tsx | 57 -
airflow/ui/src/components/ui/Menu.tsx | 42 -
.../ui/src/components/ui/Pagination/PageText.tsx | 46 -
airflow/ui/src/components/ui/Pagination/Root.tsx | 54 -
airflow/ui/src/components/ui/Popover/Content.tsx | 37 -
airflow/ui/src/components/ui/RadioCard.tsx | 82 -
airflow/ui/src/components/ui/Select/Content.tsx | 37 -
airflow/ui/src/components/ui/Select/ItemGroup.tsx | 35 -
airflow/ui/src/components/ui/Select/Trigger.tsx | 51 -
airflow/ui/src/components/ui/Select/ValueText.tsx | 51 -
airflow/ui/src/components/ui/Switch.tsx | 50 -
airflow/ui/src/components/ui/Tag.tsx | 44 -
airflow/ui/src/components/ui/Tooltip.tsx | 64 -
.../ui/src/constants/reprocessBehaviourParams.ts | 23 -
airflow/ui/src/constants/searchParams.ts | 36 -
airflow/ui/src/hooks/useSelectedVersion.ts | 83 -
airflow/ui/src/layouts/BaseLayout.test.tsx | 60 -
airflow/ui/src/layouts/BaseLayout.tsx | 60 -
airflow/ui/src/layouts/Details/DagRunSelect.tsx | 90 -
airflow/ui/src/layouts/Details/DetailsLayout.tsx | 105 -
airflow/ui/src/layouts/Details/Graph/Graph.tsx | 211 -
airflow/ui/src/layouts/Details/Grid/Grid.tsx | 170 -
airflow/ui/src/layouts/Details/Grid/TaskNames.tsx | 102 -
airflow/ui/src/layouts/Details/PanelButtons.tsx | 124 -
airflow/ui/src/layouts/Nav/Nav.tsx | 73 -
airflow/ui/src/layouts/Nav/TimezoneModal.tsx | 42 -
airflow/ui/src/layouts/Nav/UserSettingsButton.tsx | 67 -
airflow/ui/src/main.tsx | 73 -
airflow/ui/src/mocks/handlers/config.ts | 59 -
airflow/ui/src/mocks/handlers/dag.ts | 66 -
airflow/ui/src/mocks/handlers/dags.ts | 193 -
airflow/ui/src/mocks/handlers/log.ts | 194 -
airflow/ui/src/pages/Asset/Asset.tsx | 77 -
airflow/ui/src/pages/Asset/AssetGraph.tsx | 102 -
airflow/ui/src/pages/AssetsList/AssetsList.tsx | 133 -
.../ui/src/pages/AssetsList/DependencyPopover.tsx | 64 -
airflow/ui/src/pages/Connections/Connections.tsx | 109 -
airflow/ui/src/pages/Dag/Code/Code.tsx | 134 -
airflow/ui/src/pages/Dag/Dag.tsx | 84 -
airflow/ui/src/pages/Dag/Header.tsx | 125 -
airflow/ui/src/pages/Dag/Overview/Overview.tsx | 128 -
airflow/ui/src/pages/DagsList/DagCard.test.tsx | 84 -
airflow/ui/src/pages/DagsList/DagsFilters.tsx | 244 -
airflow/ui/src/pages/DagsList/Schedule.tsx | 33 -
.../HistoricalMetrics/HistoricalMetrics.tsx | 103 -
airflow/ui/src/pages/MappedTaskInstance/Header.tsx | 64 -
.../MappedTaskInstance/MappedTaskInstance.tsx | 70 -
airflow/ui/src/pages/Plugins.tsx | 54 -
airflow/ui/src/pages/Providers.tsx | 86 -
airflow/ui/src/pages/Run/Details.tsx | 130 -
airflow/ui/src/pages/TaskInstance/Details.tsx | 214 -
airflow/ui/src/pages/TaskInstance/Header.tsx | 114 -
airflow/ui/src/pages/TaskInstance/Logs/Logs.tsx | 131 -
.../src/pages/TaskInstance/Logs/TaskLogContent.tsx | 41 -
.../src/pages/TaskInstance/Logs/TaskLogHeader.tsx | 130 -
.../src/pages/TaskInstance/RenderedTemplates.tsx | 64 -
.../ui/src/pages/TaskInstances/TaskInstances.tsx | 223 -
airflow/ui/src/pages/XCom/XCom.tsx | 88 -
airflow/ui/src/queries/useClearDagRunDryRun.ts | 51 -
airflow/ui/src/queries/useCreateBackfill.ts | 86 -
airflow/ui/src/queries/useCreateBackfillDryRun.ts | 42 -
airflow/ui/src/queries/useDagParams.ts | 70 -
airflow/ui/src/queries/useDags.tsx | 85 -
airflow/ui/src/queries/useLogs.tsx | 207 -
airflow/ui/src/queryClient.ts | 41 -
airflow/ui/src/router.tsx | 200 -
airflow/ui/src/utils/links.ts | 22 -
airflow/utils/cli.py | 413 -
airflow/utils/configuration.py | 50 -
airflow/utils/context.py | 185 -
airflow/utils/db.py | 1639 --
airflow/utils/db_cleanup.py | 520 -
airflow/utils/db_manager.py | 218 -
airflow/utils/dot_renderer.py | 223 -
airflow/utils/edgemodifier.py | 32 -
airflow/utils/email.py | 334 -
airflow/utils/file.py | 355 -
airflow/utils/helpers.py | 394 -
airflow/utils/json.py | 127 -
airflow/utils/jwt_signer.py | 103 -
airflow/utils/log/colored_log.py | 110 -
airflow/utils/log/file_processor_handler.py | 153 -
airflow/utils/log/file_task_handler.py | 601 -
airflow/utils/log/logging_mixin.py | 310 -
airflow/utils/operator_helpers.py | 283 -
airflow/utils/retries.py | 113 -
airflow/utils/serve_logs.py | 187 -
airflow/utils/state.py | 229 -
airflow/utils/task_group.py | 163 -
airflow/utils/yaml.py | 72 -
.../pgbouncer-exporter/build_and_push.sh | 6 +-
chart/dockerfiles/pgbouncer/Dockerfile | 3 +-
chart/dockerfiles/pgbouncer/build_and_push.sh | 12 +-
chart/files/statsd-mappings.yml | 7 +
chart/newsfragments/47416.significant.rst | 3 +
chart/templates/_helpers.yaml | 6 +
.../api-server/api-server-deployment.yaml | 7 +-
chart/templates/flower/flower-deployment.yaml | 1 +
.../templates/scheduler/scheduler-deployment.yaml | 1 +
.../templates/webserver/webserver-deployment.yaml | 1 +
chart/values.schema.json | 28 +-
chart/values.yaml | 14 +-
clients/README.md | 4 +-
clients/python/openapi_v1.yaml | 16 -
clients/python/test_python_client.py | 51 +-
codecov.yml | 2 +-
contributing-docs/03_contributors_quick_start.rst | 34 +-
contributing-docs/07_local_virtualenv.rst | 99 +-
contributing-docs/08_static_code_checks.rst | 22 +-
contributing-docs/09_testing.rst | 4 +-
contributing-docs/10_working_with_git.rst | 2 +-
contributing-docs/11_provider_distributions.rst | 373 +
contributing-docs/11_provider_packages.rst | 410 -
.../12_airflow_dependencies_and_extras.rst | 6 +-
contributing-docs/README.rst | 4 +-
.../contributors_quick_start_pycharm.rst | 8 +-
contributing-docs/testing/helm_unit_tests.rst | 2 +-
contributing-docs/testing/python_client_tests.rst | 2 +-
contributing-docs/testing/system_tests.rst | 6 +-
contributing-docs/testing/testing_packages.rst | 66 +-
contributing-docs/testing/unit_tests.rst | 26 +-
...UALLY_GENERATING_IMAGE_CACHE_AND_CONSTRAINTS.md | 2 +-
dev/PROVIDER_DISTRIBUTIONS_DETAILS.md | 182 +
dev/PROVIDER_PACKAGE_DETAILS.md | 182 -
dev/README.md | 25 +-
dev/README_RELEASE_AIRFLOW.md | 21 +-
dev/README_RELEASE_HELM_CHART.md | 1 -
dev/README_RELEASE_PROVIDERS.md | 1434 ++
dev/README_RELEASE_PROVIDER_PACKAGES.md | 1434 --
dev/README_RELEASE_PYTHON_CLIENT.md | 10 +-
dev/airflow-github | 3 +-
dev/breeze/README.md | 2 +-
dev/breeze/doc/01_installation.rst | 28 +-
dev/breeze/doc/02_customizing.rst | 18 +-
dev/breeze/doc/03_developer_tasks.rst | 14 +-
dev/breeze/doc/05_test_commands.rst | 8 +-
dev/breeze/doc/09_release_management_tasks.rst | 90 +-
dev/breeze/doc/10_advanced_breeze_topics.rst | 2 +-
dev/breeze/doc/README.rst | 2 +-
dev/breeze/doc/ci/02_images.md | 10 +-
dev/breeze/doc/ci/04_selective_checks.md | 2 +-
dev/breeze/doc/ci/05_workflows.md | 70 +-
dev/breeze/doc/ci/07_running_ci_locally.md | 2 +-
dev/breeze/doc/images/output-commands-hash.txt | 8 +-
dev/breeze/doc/images/output-commands.svg | 4 +-
dev/breeze/doc/images/output_build-docs.svg | 4 +-
dev/breeze/doc/images/output_build-docs.txt | 2 +-
dev/breeze/doc/images/output_ci-image_load.svg | 2 +-
dev/breeze/doc/images/output_ci-image_load.txt | 2 +-
dev/breeze/doc/images/output_prod-image_build.svg | 74 +-
dev/breeze/doc/images/output_prod-image_build.txt | 2 +-
.../doc/images/output_release-management.svg | 22 +-
.../doc/images/output_release-management.txt | 2 +-
...put_release-management_generate-constraints.svg | 2 +-
...put_release-management_generate-constraints.txt | 2 +-
...management_generate-issue-content-providers.svg | 52 +-
...management_generate-issue-content-providers.txt | 2 +-
...e-management_install-provider-distributions.svg | 320 +
...e-management_install-provider-distributions.txt | 1 +
...elease-management_install-provider-packages.svg | 320 -
...elease-management_install-provider-packages.txt | 1 -
...se-management_prepare-airflow-distributions.svg | 124 +
...se-management_prepare-airflow-distributions.txt | 1 +
..._release-management_prepare-airflow-package.svg | 124 -
..._release-management_prepare-airflow-package.txt | 1 -
...e-management_prepare-provider-distributions.svg | 240 +
...e-management_prepare-provider-distributions.txt | 1 +
...e-management_prepare-provider-documentation.svg | 76 +-
...e-management_prepare-provider-documentation.txt | 2 +-
...elease-management_prepare-provider-packages.svg | 244 -
...elease-management_prepare-provider-packages.txt | 1 -
...ut_release-management_prepare-python-client.svg | 2 +-
...ut_release-management_prepare-python-client.txt | 2 +-
...e-management_prepare-task-sdk-distributions.svg | 124 +
...e-management_prepare-task-sdk-distributions.txt | 1 +
...release-management_prepare-task-sdk-package.svg | 124 -
...release-management_prepare-task-sdk-package.txt | 1 -
.../output_release-management_publish-docs.svg | 2 +-
.../output_release-management_publish-docs.txt | 2 +-
...tput_release-management_release-prod-images.svg | 2 +-
...tput_release-management_release-prod-images.txt | 2 +-
...se-management_verify-provider-distributions.svg | 336 +
...se-management_verify-provider-distributions.txt | 1 +
...release-management_verify-provider-packages.svg | 332 -
...release-management_verify-provider-packages.txt | 1 -
.../output_setup_check-all-params-in-groups.svg | 10 +-
.../output_setup_check-all-params-in-groups.txt | 2 +-
.../output_setup_regenerate-command-images.svg | 58 +-
.../output_setup_regenerate-command-images.txt | 2 +-
dev/breeze/doc/images/output_shell.svg | 80 +-
dev/breeze/doc/images/output_shell.txt | 2 +-
dev/breeze/doc/images/output_start-airflow.svg | 158 +-
dev/breeze/doc/images/output_start-airflow.txt | 2 +-
dev/breeze/doc/images/output_static-checks.svg | 44 +-
dev/breeze/doc/images/output_static-checks.txt | 2 +-
.../doc/images/output_testing_core-tests.svg | 40 +-
.../doc/images/output_testing_core-tests.txt | 2 +-
.../doc/images/output_testing_providers-tests.svg | 50 +-
.../doc/images/output_testing_providers-tests.txt | 2 +-
dev/breeze/pyproject.toml | 2 +-
dev/breeze/src/airflow_breeze/breeze.py | 4 +-
.../src/airflow_breeze/commands/ci_commands.py | 8 +-
.../airflow_breeze/commands/ci_image_commands.py | 37 +-
.../src/airflow_breeze/commands/common_options.py | 16 +-
.../common_package_installation_options.py | 10 +-
.../airflow_breeze/commands/developer_commands.py | 75 +-
.../commands/developer_commands_config.py | 16 +-
.../airflow_breeze/commands/kubernetes_commands.py | 12 +-
.../src/airflow_breeze/commands/main_command.py | 10 +-
.../commands/minor_release_command.py | 4 +-
.../commands/production_image_commands.py | 42 +-
.../commands/production_image_commands_config.py | 4 +-
.../commands/release_candidate_command.py | 38 +-
.../src/airflow_breeze/commands/release_command.py | 6 +-
.../commands/release_management_commands.py | 598 +-
.../commands/release_management_commands_config.py | 42 +-
.../src/airflow_breeze/commands/sbom_commands.py | 12 +-
.../src/airflow_breeze/commands/setup_commands.py | 32 +-
.../airflow_breeze/commands/testing_commands.py | 32 +-
.../commands/testing_commands_config.py | 4 +-
.../files/simple_auth_manager_passwords.json | 1 +
dev/breeze/src/airflow_breeze/global_constants.py | 35 +-
.../src/airflow_breeze/params/build_ci_params.py | 4 +-
.../src/airflow_breeze/params/build_prod_params.py | 14 +-
.../src/airflow_breeze/params/shell_params.py | 68 +-
dev/breeze/src/airflow_breeze/pre_commit_ids.py | 3 +-
.../prepare_providers/provider_distributions.py | 283 +
.../prepare_providers/provider_documentation.py | 143 +-
.../prepare_providers/provider_packages.py | 275 -
.../provider_issue_TEMPLATE.md.jinja2 | 4 +-
.../templates/CHANGELOG_TEMPLATE.rst.jinja2 | 2 +-
.../templates/PROVIDER_INDEX_TEMPLATE.rst.jinja2 | 4 +-
.../templates/PROVIDER_README_TEMPLATE.rst.jinja2 | 2 +-
.../templates/pyproject_TEMPLATE.toml.jinja2 | 2 +-
.../airflow_breeze/utils/add_back_references.py | 22 +-
dev/breeze/src/airflow_breeze/utils/black_utils.py | 4 +-
dev/breeze/src/airflow_breeze/utils/cache.py | 12 +-
dev/breeze/src/airflow_breeze/utils/cdxgen.py | 16 +-
.../airflow_breeze/utils/docker_command_utils.py | 26 +-
.../src/airflow_breeze/utils/docs_publisher.py | 4 +-
dev/breeze/src/airflow_breeze/utils/github.py | 6 +-
.../src/airflow_breeze/utils/kubernetes_utils.py | 28 +-
.../utils/mark_image_as_refreshed.py | 4 +-
.../src/airflow_breeze/utils/md5_build_check.py | 15 +-
dev/breeze/src/airflow_breeze/utils/packages.py | 84 +-
dev/breeze/src/airflow_breeze/utils/path_utils.py | 166 +-
.../airflow_breeze/utils/provider_dependencies.py | 4 +-
.../airflow_breeze/utils/publish_docs_helpers.py | 6 +-
.../src/airflow_breeze/utils/reproducible.py | 16 +-
dev/breeze/src/airflow_breeze/utils/run_tests.py | 77 +-
dev/breeze/src/airflow_breeze/utils/run_utils.py | 22 +-
.../src/airflow_breeze/utils/selective_checks.py | 172 +-
dev/breeze/src/airflow_breeze/utils/versions.py | 4 +-
.../src/airflow_breeze/utils/virtualenv_utils.py | 6 +-
dev/breeze/src/airflow_breeze/utils/visuals.py | 24 +-
dev/breeze/tests/test_find_airflow_directory.py | 8 +-
dev/breeze/tests/test_packages.py | 34 +-
.../tests/test_pytest_args_for_test_types.py | 101 +-
dev/breeze/tests/test_selective_checks.py | 132 +-
dev/breeze/uv.lock | 17 +-
dev/check_files.py | 15 +-
dev/datamodel_code_formatter.py | 66 -
dev/perf/dags/elastic_dag.py | 2 +-
.../publish_provider_documentation.sh | 35 -
dev/refresh_images.sh | 10 +-
dev/templates/vote_email.j2 | 6 +-
devel-common/pyproject.toml | 2 -
devel-common/src/tests_common/__init__.py | 2 +-
devel-common/src/tests_common/pytest_plugin.py | 197 +-
.../src/tests_common/test_utils/asserts.py | 3 +-
.../test_utils/azure_system_helpers.py | 1 +
devel-common/src/tests_common/test_utils/compat.py | 9 +-
devel-common/src/tests_common/test_utils/db.py | 21 +-
.../tests_common/test_utils/gcp_system_helpers.py | 13 +-
.../src/tests_common/test_utils/mapping.py | 3 +-
.../src/tests_common/test_utils/mock_operators.py | 46 +-
devel-common/src/tests_common/test_utils/paths.py | 25 +
.../test_utils/perf/perf_kit/__init__.py | 24 +-
.../src/tests_common/test_utils/system_tests.py | 3 +-
.../tests_common/test_utils/system_tests_class.py | 1 +
.../src/tests_common/test_utils/version_compat.py | 3 +-
docker-context-files/.README.md | 2 +-
docker_tests/test_docker_compose_quick_start.py | 42 +-
docs/.gitignore | 1 +
docs/README.rst | 6 +-
.../core-extensions/auth-backends.rst | 34 -
.../howto/create-custom-providers.rst | 13 +-
docs/apache-airflow-providers/index.rst | 29 +-
.../operators-and-hooks-ref/google.rst | 4 +-
docs/apache-airflow-providers/packages-ref.rst | 2 +-
.../cluster-policies.rst | 185 -
.../dag-serialization.rst | 121 -
.../dagfile-processing.rst | 198 -
.../administration-and-deployment/index.rst | 39 -
.../administration-and-deployment/listeners.rst | 193 -
.../logging-monitoring/callbacks.rst | 100 -
.../logging-monitoring/index.rst | 41 -
.../logging-monitoring/metrics.rst | 294 -
.../logging-monitoring/tracking-user-activity.rst | 40 -
.../modules_management.rst | 398 -
.../administration-and-deployment/plugins.rst | 341 -
.../priority-weight.rst | 104 -
.../production-deployment.rst | 296 -
.../administration-and-deployment/scheduler.rst | 289 -
.../authoring-and-scheduling/cron.rst | 70 -
.../authoring-and-scheduling/datasets.rst | 545 -
.../authoring-and-scheduling/deferring.rst | 433 -
.../dynamic-task-mapping.rst | 678 -
.../authoring-and-scheduling/event-scheduling.rst | 109 -
.../authoring-and-scheduling/index.rst | 44 -
.../authoring-and-scheduling/timetable.rst | 424 -
.../authoring-and-scheduling/timezone.rst | 193 -
docs/apache-airflow/best-practices.rst | 1172 --
docs/apache-airflow/cli-and-env-variables-ref.rst | 114 -
docs/apache-airflow/configurations-ref.rst | 52 -
.../core-concepts/auth-manager/index.rst | 195 -
.../core-concepts/auth-manager/simple.rst | 84 -
docs/apache-airflow/core-concepts/dag-run.rst | 288 -
docs/apache-airflow/core-concepts/dags.rst | 835 -
docs/apache-airflow/core-concepts/debug.rst | 129 -
.../core-concepts/executor/index.rst | 346 -
.../apache-airflow/core-concepts/objectstorage.rst | 329 -
docs/apache-airflow/core-concepts/operators.rst | 306 -
docs/apache-airflow/core-concepts/overview.rst | 248 -
docs/apache-airflow/core-concepts/params.rst | 401 -
docs/apache-airflow/core-concepts/taskflow.rst | 210 -
docs/apache-airflow/core-concepts/tasks.rst | 237 -
docs/apache-airflow/core-concepts/xcoms.rst | 133 -
docs/apache-airflow/empty_plugin/empty_plugin.py | 57 -
docs/apache-airflow/extra-packages-ref.rst | 367 -
docs/apache-airflow/faq.rst | 519 -
docs/apache-airflow/howto/add-dag-tags.rst | 44 -
docs/apache-airflow/howto/add-owner-links.rst | 50 -
docs/apache-airflow/howto/connection.rst | 515 -
.../howto/create-custom-decorator.rst | 124 -
docs/apache-airflow/howto/define-extra-link.rst | 187 -
.../howto/docker-compose/docker-compose.yaml | 307 -
docs/apache-airflow/howto/docker-compose/index.rst | 479 -
.../howto/dynamic-dag-generation.rst | 220 -
docs/apache-airflow/howto/listener-plugin.rst | 95 -
docs/apache-airflow/howto/run-behind-proxy.rst | 84 -
docs/apache-airflow/howto/set-up-database.rst | 472 -
docs/apache-airflow/howto/timetable.rst | 355 -
.../howto/upgrading-from-1-10/index.rst | 1182 --
.../howto/upgrading-from-1-10/upgrade-check.rst | 221 -
docs/apache-airflow/howto/usage-cli.rst | 413 -
docs/apache-airflow/howto/variable.rst | 76 -
docs/apache-airflow/img/airflow_erd.sha256 | 1 -
docs/apache-airflow/img/airflow_erd.svg | 2556 ---
docs/apache-airflow/img/example_passing_conf.png | Bin 53383 -> 0 bytes
.../img/trigger-dag-tutorial-form.png | Bin 247468 -> 0 bytes
docs/apache-airflow/index.rst | 195 -
docs/apache-airflow/installation/dependencies.rst | 88 -
.../installation/installing-from-pypi.rst | 372 -
.../installation/installing-from-sources.rst | 161 -
docs/apache-airflow/integration.rst | 38 -
docs/apache-airflow/migrations-ref.rst | 174 -
docs/apache-airflow/project.rst | 125 -
docs/apache-airflow/public-airflow-interface.rst | 431 -
docs/apache-airflow/release-process.rst | 97 -
docs/apache-airflow/security/audit_logs.rst | 67 -
docs/apache-airflow/security/kerberos.rst | 188 -
docs/apache-airflow/security/security_model.rst | 292 -
docs/apache-airflow/static/redirects.js | 28 -
docs/apache-airflow/templates-ref.rst | 194 -
docs/apache-airflow/troubleshooting.rst | 48 -
docs/apache-airflow/tutorial/fundamentals.rst | 372 -
docs/apache-airflow/tutorial/objectstorage.rst | 134 -
docs/apache-airflow/tutorial/pipeline.rst | 336 -
docs/apache-airflow/tutorial/pipeline_example.csv | 96 -
docs/apache-airflow/tutorial/taskflow.rst | 751 -
docs/apache-airflow/ui.rst | 237 -
docs/build_docs.py | 21 +-
docs/conf.py | 72 +-
docs/diagrams/task_lifecycle/component.png | Bin 0 -> 2096 bytes
docs/diagrams/task_lifecycle/condition.png | Bin 0 -> 1913 bytes
docs/diagrams/task_lifecycle/deferrable_state.png | Bin 0 -> 2625 bytes
docs/diagrams/task_lifecycle/sensor_state.png | Bin 0 -> 2658 bytes
docs/diagrams/task_lifecycle/shared_state.png | Bin 0 -> 2482 bytes
docs/diagrams/task_lifecycle/terminal_state.png | Bin 0 -> 2624 bytes
docs/docker-stack/README.md | 2 +-
docs/docker-stack/build-arg-ref.rst | 98 +-
docs/docker-stack/build.rst | 16 +-
docs/docker-stack/changelog.rst | 1 +
.../restricted/restricted_environments.sh | 2 +-
docs/docker-stack/entrypoint.rst | 4 +-
docs/docker-stack/index.rst | 2 +-
docs/exts/docs_build/code_utils.py | 9 +-
docs/exts/docs_build/docs_builder.py | 66 +-
docs/exts/docs_build/fetch_inventories.py | 4 +-
docs/exts/docs_build/lint_checks.py | 6 +-
docs/exts/exampleinclude.py | 3 +
.../exts/includes/providers-configurations-ref.rst | 2 +-
docs/exts/operators_and_hooks_ref.py | 27 -
docs/exts/provider_yaml_utils.py | 2 +-
docs/exts/redirects.py | 2 +-
docs/exts/templates/auth_backend.rst.jinja2 | 27 -
.../adding-connections-and-variables.rst | 2 +-
docs/helm-chart/airflow-configuration.rst | 2 +-
docs/helm-chart/index.rst | 2 +-
docs/helm-chart/manage-dag-files.rst | 277 +
docs/helm-chart/manage-dags-files.rst | 277 -
docs/helm-chart/production-guide.rst | 2 +-
docs/helm-chart/quick-start.rst | 6 +-
docs/helm-chart/using-additional-containers.rst | 2 +-
docs/spelling_wordlist.txt | 7 +
generated/PYPI_README.md | 6 +-
generated/README.md | 2 +-
generated/dep_tree.txt | 49 -
generated/dependency_depth.json | 1 -
generated/provider_dependencies.json | 50 +-
generated/provider_metadata.json | 348 +
hatch_build.py | 349 +-
helm_tests/airflow_aux/test_airflow_common.py | 2 +-
helm_tests/airflow_aux/test_annotations.py | 2 +-
helm_tests/airflow_aux/test_basic_helm_chart.py | 2 +-
.../airflow_aux/test_celery_kubernetes_executor.py | 2 +-
helm_tests/airflow_aux/test_cleanup_pods.py | 2 +-
helm_tests/airflow_aux/test_configmap.py | 2 +-
helm_tests/airflow_aux/test_container_lifecycle.py | 2 +-
helm_tests/airflow_aux/test_create_user_job.py | 2 +-
helm_tests/airflow_aux/test_extra_env_env_from.py | 2 +-
.../test_logs_persistent_volume_claim.py | 2 +-
.../airflow_aux/test_migrate_database_job.py | 2 +-
helm_tests/airflow_aux/test_pod_launcher_role.py | 2 +-
helm_tests/airflow_aux/test_pod_template_file.py | 2 +-
helm_tests/airflow_aux/test_remote_logging.py | 2 +-
helm_tests/airflow_core/test_api_server.py | 2 +-
helm_tests/airflow_core/test_dag_processor.py | 4 +-
helm_tests/airflow_core/test_env.py | 2 +-
helm_tests/airflow_core/test_pdb_scheduler.py | 2 +-
helm_tests/airflow_core/test_scheduler.py | 4 +-
helm_tests/airflow_core/test_triggerer.py | 6 +-
helm_tests/airflow_core/test_worker.py | 4 +-
.../other/test_dags_persistent_volume_claim.py | 2 +-
helm_tests/other/test_flower.py | 2 +-
helm_tests/other/test_git_ssh_key_secret.py | 2 +-
helm_tests/other/test_git_sync_scheduler.py | 2 +-
helm_tests/other/test_git_sync_triggerer.py | 2 +-
helm_tests/other/test_git_sync_webserver.py | 2 +-
helm_tests/other/test_git_sync_worker.py | 2 +-
helm_tests/other/test_hpa.py | 2 +-
helm_tests/other/test_keda.py | 2 +-
helm_tests/other/test_limit_ranges.py | 2 +-
helm_tests/other/test_pdb_pgbouncer.py | 2 +-
helm_tests/other/test_pgbouncer.py | 2 +-
helm_tests/other/test_redis.py | 2 +-
helm_tests/other/test_resource_quota.py | 2 +-
helm_tests/other/test_statsd.py | 2 +-
helm_tests/security/test_elasticsearch_secret.py | 2 +-
.../security/test_extra_configmaps_secrets.py | 2 +-
helm_tests/security/test_kerberos.py | 2 +-
.../security/test_metadata_connection_secret.py | 2 +-
helm_tests/security/test_opensearch_secret.py | 2 +-
helm_tests/security/test_rbac.py | 2 +-
helm_tests/security/test_rbac_pod_log_reader.py | 2 +-
.../test_result_backend_connection_secret.py | 2 +-
helm_tests/security/test_scc_rolebinding.py | 2 +-
helm_tests/security/test_security_context.py | 2 +-
helm_tests/webserver/test_hpa_webserver.py | 2 +-
helm_tests/webserver/test_ingress_flower.py | 2 +-
helm_tests/webserver/test_ingress_web.py | 2 +-
helm_tests/webserver/test_pdb_webserver.py | 2 +-
helm_tests/webserver/test_webserver.py | 2 +-
kubernetes_tests/test_base.py | 173 +-
kubernetes_tests/test_kubernetes_executor.py | 2 +-
kubernetes_tests/test_other_executors.py | 11 +-
newsfragments/41348.significant.rst | 8 +-
newsfragments/41368.significant.rst | 4 +-
newsfragments/41774.significant.rst | 1 -
newsfragments/46231.significant.rst | 2 +-
newsfragments/47136.significant.rst | 13 +
newsfragments/47354.significant.rst | 12 +
newsfragments/47399.significant.rst | 20 +
newsfragments/47414.significant.rst | 17 +
newsfragments/47599.significant.rst | 23 +
newsfragments/47761.significant.rst | 34 +
newsfragments/47892.significant.rst | 22 +
newsfragments/47927.significant.rst | 25 +
newsfragments/48027.significant.rst | 14 +
newsfragments/48066.significant.rst | 78 +
newsfragments/aip-66.significant.rst | 10 +-
newsfragments/aip-72.significant.rst | 58 +-
newsfragments/aip-79.significant.rst | 13 +-
newsfragments/api-38.significant.rst | 31 +
performance/requirements.txt | 2 +-
.../performance_dag/performance_dag.py | 4 +-
.../performance_dag/performance_dag_utils.py | 3 +-
performance/tests/test_performance_dag.py | 2 +-
providers/MANAGING_PROVIDERS_LIFECYCLE.rst | 8 +-
providers/airbyte/README.rst | 6 +-
providers/airbyte/docs/changelog.rst | 35 +-
providers/airbyte/docs/commits.rst | 487 +-
providers/airbyte/docs/index.rst | 4 +-
providers/airbyte/provider.yaml | 3 +-
providers/airbyte/pyproject.toml | 8 +-
.../src/airflow/providers/airbyte/__init__.py | 2 +-
.../airflow/providers/airbyte/get_provider_info.py | 3 +-
providers/alibaba/README.rst | 6 +-
providers/alibaba/docs/changelog.rst | 23 +-
providers/alibaba/docs/commits.rst | 499 +-
providers/alibaba/docs/index.rst | 4 +-
providers/alibaba/provider.yaml | 3 +-
providers/alibaba/pyproject.toml | 8 +-
.../src/airflow/providers/alibaba/__init__.py | 2 +-
.../airflow/providers/alibaba/get_provider_info.py | 3 +-
.../alibaba/cloud/hooks/test_analyticdb_spark.py | 1 +
.../tests/unit/alibaba/cloud/hooks/test_oss.py | 1 +
providers/amazon/README.rst | 9 +-
providers/amazon/docs/changelog.rst | 53 +-
providers/amazon/docs/commits.rst | 44 +
providers/amazon/docs/executors/batch-executor.rst | 2 +-
providers/amazon/docs/executors/ecs-executor.rst | 2 +-
providers/amazon/docs/index.rst | 11 +-
providers/amazon/docs/operators/ec2.rst | 5 +
providers/amazon/docs/operators/mwaa.rst | 2 +-
providers/amazon/provider.yaml | 6 +-
providers/amazon/pyproject.toml | 14 +-
.../src/airflow/providers/amazon/__init__.py | 2 +-
.../amazon/aws/auth_manager/avp/entities.py | 4 +-
.../amazon/aws/auth_manager/avp/facade.py | 2 +-
.../amazon/aws/auth_manager/aws_auth_manager.py | 109 +-
.../amazon/aws/auth_manager/router/login.py | 12 +-
.../providers/amazon/aws/auth_manager/user.py | 11 +-
.../airflow/providers/amazon/aws/hooks/appflow.py | 20 +-
.../airflow/providers/amazon/aws/hooks/base_aws.py | 35 +-
.../src/airflow/providers/amazon/aws/hooks/ec2.py | 2 +-
.../src/airflow/providers/amazon/aws/hooks/eks.py | 9 +-
.../src/airflow/providers/amazon/aws/hooks/glue.py | 2 +-
.../src/airflow/providers/amazon/aws/hooks/logs.py | 4 +-
.../src/airflow/providers/amazon/aws/hooks/mwaa.py | 94 +-
.../providers/amazon/aws/hooks/redshift_cluster.py | 2 +-
.../providers/amazon/aws/hooks/redshift_data.py | 4 +-
.../src/airflow/providers/amazon/aws/hooks/s3.py | 4 +-
.../providers/amazon/aws/hooks/sagemaker.py | 2 +-
.../airflow/providers/amazon/aws/links/base_aws.py | 9 +-
.../airflow/providers/amazon/aws/operators/ec2.py | 174 +-
.../airflow/providers/amazon/aws/operators/mwaa.py | 75 +-
.../providers/amazon/aws/operators/sagemaker.py | 3 +-
.../airflow/providers/amazon/aws/sensors/ec2.py | 17 +-
.../airflow/providers/amazon/aws/sensors/mwaa.py | 69 +-
.../amazon/aws/transfers/redshift_to_s3.py | 23 +-
.../providers/amazon/aws/triggers/README.md | 8 +-
.../airflow/providers/amazon/aws/triggers/base.py | 13 +-
.../airflow/providers/amazon/aws/triggers/ecs.py | 8 +-
.../airflow/providers/amazon/aws/triggers/eks.py | 4 +-
.../airflow/providers/amazon/aws/triggers/glue.py | 2 +-
.../airflow/providers/amazon/aws/triggers/mwaa.py | 128 +
.../airflow/providers/amazon/aws/triggers/s3.py | 4 +-
.../providers/amazon/aws/triggers/sagemaker.py | 4 +-
.../airflow/providers/amazon/aws/triggers/sqs.py | 2 +-
.../amazon/aws/utils/waiter_with_logging.py | 7 +-
.../airflow/providers/amazon/aws/waiters/mwaa.json | 36 +
.../airflow/providers/amazon/get_provider_info.py | 11 +-
.../tests/system/amazon/aws/example_appflow.py | 1 +
.../tests/system/amazon/aws/example_appflow_run.py | 1 +
.../tests/system/amazon/aws/example_athena.py | 1 +
.../system/amazon/aws/example_azure_blob_to_s3.py | 1 +
.../tests/system/amazon/aws/example_batch.py | 1 +
.../tests/system/amazon/aws/example_bedrock.py | 1 +
.../aws/example_bedrock_retrieve_and_generate.py | 1 +
.../system/amazon/aws/example_cloudformation.py | 1 +
.../tests/system/amazon/aws/example_comprehend.py | 1 +
.../aws/example_comprehend_document_classifier.py | 1 +
.../tests/system/amazon/aws/example_datasync.py | 1 +
.../amazon/tests/system/amazon/aws/example_dms.py | 1 +
.../system/amazon/aws/example_dms_serverless.py | 1 +
.../tests/system/amazon/aws/example_dynamodb.py | 1 +
.../system/amazon/aws/example_dynamodb_to_s3.py | 1 +
.../amazon/tests/system/amazon/aws/example_ec2.py | 1 +
.../amazon/tests/system/amazon/aws/example_ecs.py | 1 +
.../tests/system/amazon/aws/example_ecs_fargate.py | 1 +
.../system/amazon/aws/example_eks_templated.py | 1 +
.../aws/example_eks_with_fargate_in_one_step.py | 1 +
.../amazon/aws/example_eks_with_fargate_profile.py | 1 +
.../aws/example_eks_with_nodegroup_in_one_step.py | 1 +
.../amazon/aws/example_eks_with_nodegroups.py | 1 +
.../amazon/tests/system/amazon/aws/example_emr.py | 1 +
.../tests/system/amazon/aws/example_emr_eks.py | 1 +
.../amazon/aws/example_emr_notebook_execution.py | 1 +
.../system/amazon/aws/example_emr_serverless.py | 1 +
.../tests/system/amazon/aws/example_eventbridge.py | 1 +
.../tests/system/amazon/aws/example_ftp_to_s3.py | 1 +
.../tests/system/amazon/aws/example_gcs_to_s3.py | 1 +
.../system/amazon/aws/example_glacier_to_gcs.py | 1 +
.../amazon/tests/system/amazon/aws/example_glue.py | 1 +
.../system/amazon/aws/example_glue_data_quality.py | 1 +
...xample_glue_data_quality_with_recommendation.py | 1 +
.../system/amazon/aws/example_glue_databrew.py | 1 +
.../amazon/aws/example_google_api_sheets_to_s3.py | 1 +
.../amazon/aws/example_google_api_youtube_to_s3.py | 1 +
.../system/amazon/aws/example_hive_to_dynamodb.py | 1 +
.../tests/system/amazon/aws/example_http_to_s3.py | 1 +
.../amazon/aws/example_imap_attachment_to_s3.py | 1 +
.../system/amazon/aws/example_kinesis_analytics.py | 1 +
.../tests/system/amazon/aws/example_lambda.py | 1 +
.../tests/system/amazon/aws/example_local_to_s3.py | 1 +
.../tests/system/amazon/aws/example_mongo_to_s3.py | 1 +
.../amazon/tests/system/amazon/aws/example_mwaa.py | 34 +
.../tests/system/amazon/aws/example_neptune.py | 1 +
.../tests/system/amazon/aws/example_quicksight.py | 1 +
.../tests/system/amazon/aws/example_rds_event.py | 1 +
.../tests/system/amazon/aws/example_rds_export.py | 1 +
.../system/amazon/aws/example_rds_instance.py | 1 +
.../system/amazon/aws/example_rds_snapshot.py | 1 +
.../tests/system/amazon/aws/example_redshift.py | 1 +
.../amazon/aws/example_redshift_s3_transfers.py | 1 +
.../amazon/tests/system/amazon/aws/example_s3.py | 9 +-
.../system/amazon/aws/example_s3_to_dynamodb.py | 1 +
.../tests/system/amazon/aws/example_s3_to_ftp.py | 1 +
.../tests/system/amazon/aws/example_s3_to_sftp.py | 1 +
.../tests/system/amazon/aws/example_s3_to_sql.py | 2 +-
.../tests/system/amazon/aws/example_sagemaker.py | 1 +
.../amazon/aws/example_sagemaker_endpoint.py | 1 +
.../amazon/aws/example_sagemaker_notebook.py | 1 +
.../amazon/aws/example_sagemaker_pipeline.py | 1 +
.../amazon/aws/example_sagemaker_unified_studio.py | 2 +-
.../system/amazon/aws/example_salesforce_to_s3.py | 1 +
.../tests/system/amazon/aws/example_sftp_to_s3.py | 1 +
.../amazon/tests/system/amazon/aws/example_sns.py | 1 +
.../tests/system/amazon/aws/example_sql_to_s3.py | 1 +
.../amazon/tests/system/amazon/aws/example_sqs.py | 1 +
.../system/amazon/aws/example_step_functions.py | 1 +
.../amazon/aws/tests/test_aws_auth_manager.py | 19 +-
.../amazon/aws/auth_manager/avp/test_facade.py | 2 +-
.../amazon/aws/auth_manager/router/test_login.py | 13 +-
.../aws/auth_manager/test_aws_auth_manager.py | 235 +-
.../amazon/tests/unit/amazon/aws/hooks/test_eks.py | 1 +
.../tests/unit/amazon/aws/hooks/test_mwaa.py | 214 +-
.../unit/amazon/aws/hooks/test_redshift_data.py | 16 +-
.../amazon/tests/unit/amazon/aws/hooks/test_s3.py | 109 +-
.../tests/unit/amazon/aws/links/test_athena.py | 18 +-
.../tests/unit/amazon/aws/links/test_base_aws.py | 6 +-
.../tests/unit/amazon/aws/links/test_batch.py | 41 +-
.../tests/unit/amazon/aws/links/test_comprehend.py | 29 +-
.../tests/unit/amazon/aws/links/test_datasync.py | 30 +-
.../amazon/tests/unit/amazon/aws/links/test_ec2.py | 29 +-
.../amazon/tests/unit/amazon/aws/links/test_emr.py | 81 +-
.../tests/unit/amazon/aws/links/test_glue.py | 18 +-
.../tests/unit/amazon/aws/links/test_logs.py | 19 +-
.../tests/unit/amazon/aws/links/test_sagemaker.py | 18 +-
.../aws/links/test_sagemaker_unified_studio.py | 17 +-
.../unit/amazon/aws/links/test_step_function.py | 29 +-
.../tests/unit/amazon/aws/operators/test_athena.py | 2 +-
.../unit/amazon/aws/operators/test_bedrock.py | 1 +
.../amazon/aws/operators/test_cloud_formation.py | 1 +
.../unit/amazon/aws/operators/test_comprehend.py | 1 +
.../unit/amazon/aws/operators/test_datasync.py | 2 +-
.../tests/unit/amazon/aws/operators/test_dms.py | 2 +-
.../tests/unit/amazon/aws/operators/test_ec2.py | 1 +
.../tests/unit/amazon/aws/operators/test_ecs.py | 1 +
.../tests/unit/amazon/aws/operators/test_eks.py | 1 +
.../amazon/aws/operators/test_emr_add_steps.py | 2 +-
.../amazon/aws/operators/test_emr_containers.py | 1 +
.../aws/operators/test_emr_create_job_flow.py | 4 +-
.../aws/operators/test_emr_modify_cluster.py | 1 +
.../aws/operators/test_emr_notebook_execution.py | 1 +
.../amazon/aws/operators/test_emr_serverless.py | 1 +
.../aws/operators/test_emr_terminate_job_flow.py | 1 +
.../unit/amazon/aws/operators/test_eventbridge.py | 1 +
.../unit/amazon/aws/operators/test_glacier.py | 1 +
.../tests/unit/amazon/aws/operators/test_glue.py | 1 +
.../unit/amazon/aws/operators/test_glue_crawler.py | 1 +
.../amazon/aws/operators/test_glue_databrew.py | 1 +
.../amazon/aws/operators/test_kinesis_analytics.py | 1 +
.../amazon/aws/operators/test_lambda_function.py | 1 +
.../tests/unit/amazon/aws/operators/test_mwaa.py | 36 +
.../unit/amazon/aws/operators/test_neptune.py | 1 +
.../unit/amazon/aws/operators/test_quicksight.py | 1 +
.../tests/unit/amazon/aws/operators/test_rds.py | 1 +
.../amazon/aws/operators/test_redshift_cluster.py | 1 +
.../amazon/aws/operators/test_redshift_data.py | 1 +
.../tests/unit/amazon/aws/operators/test_s3.py | 1 +
.../amazon/aws/operators/test_sagemaker_base.py | 2 +-
.../aws/operators/test_sagemaker_endpoint.py | 1 +
.../operators/test_sagemaker_endpoint_config.py | 1 +
.../amazon/aws/operators/test_sagemaker_model.py | 1 +
.../aws/operators/test_sagemaker_notebook.py | 1 +
.../aws/operators/test_sagemaker_pipeline.py | 1 +
.../aws/operators/test_sagemaker_processing.py | 1 +
.../aws/operators/test_sagemaker_training.py | 1 +
.../aws/operators/test_sagemaker_transform.py | 1 +
.../amazon/aws/operators/test_sagemaker_tuning.py | 1 +
.../tests/unit/amazon/aws/operators/test_sns.py | 1 +
.../tests/unit/amazon/aws/operators/test_sqs.py | 1 +
.../amazon/aws/operators/test_step_function.py | 1 +
.../tests/unit/amazon/aws/sensors/test_mwaa.py | 55 +-
.../unit/amazon/aws/system/utils/test_helpers.py | 1 +
.../tests/unit/amazon/aws/triggers/test_base.py | 4 +-
.../tests/unit/amazon/aws/triggers/test_bedrock.py | 9 +-
.../unit/amazon/aws/triggers/test_comprehend.py | 5 +-
.../tests/unit/amazon/aws/triggers/test_dms.py | 13 +-
.../tests/unit/amazon/aws/triggers/test_ec2.py | 8 +-
.../tests/unit/amazon/aws/triggers/test_ecs.py | 18 +-
.../tests/unit/amazon/aws/triggers/test_eks.py | 4 +-
.../tests/unit/amazon/aws/triggers/test_glue.py | 5 +-
.../unit/amazon/aws/triggers/test_glue_crawler.py | 3 +-
.../amazon/aws/triggers/test_kinesis_analytics.py | 5 +-
.../tests/unit/amazon/aws/triggers/test_mwaa.py | 109 +
.../tests/unit/amazon/aws/triggers/test_neptune.py | 16 +-
.../aws/triggers/test_opensearch_serverless.py | 3 +-
.../tests/unit/amazon/aws/triggers/test_s3.py | 14 +-
.../unit/amazon/aws/triggers/test_sagemaker.py | 4 +-
.../unit/amazon/aws/triggers/test_serialization.py | 3 -
.../tests/unit/amazon/aws/waiters/test_eks.py | 1 +
providers/apache/beam/README.rst | 8 +-
providers/apache/beam/docs/changelog.rst | 22 +-
providers/apache/beam/docs/commits.rst | 17 +
providers/apache/beam/docs/index.rst | 10 +-
providers/apache/beam/provider.yaml | 3 +-
providers/apache/beam/pyproject.toml | 8 +-
.../src/airflow/providers/apache/beam/README.md | 4 +-
.../src/airflow/providers/apache/beam/__init__.py | 2 +-
.../providers/apache/beam/get_provider_info.py | 3 +-
.../airflow/providers/apache/beam/hooks/beam.py | 43 +-
.../beam/tests/system/apache/beam/example_beam.py | 1 +
.../system/apache/beam/example_beam_java_flink.py | 1 +
.../system/apache/beam/example_beam_java_spark.py | 1 +
.../beam/tests/system/apache/beam/example_go.py | 1 +
.../system/apache/beam/example_go_dataflow.py | 1 +
.../system/apache/beam/example_java_dataflow.py | 1 +
.../tests/system/apache/beam/example_python.py | 1 +
.../system/apache/beam/example_python_async.py | 1 +
.../system/apache/beam/example_python_dataflow.py | 1 +
.../beam/tests/unit/apache/beam/hooks/test_beam.py | 6 +-
providers/apache/cassandra/README.rst | 6 +-
providers/apache/cassandra/docs/changelog.rst | 22 +-
providers/apache/cassandra/docs/commits.rst | 550 +-
providers/apache/cassandra/docs/index.rst | 4 +-
providers/apache/cassandra/provider.yaml | 3 +-
providers/apache/cassandra/pyproject.toml | 8 +-
.../airflow/providers/apache/cassandra/__init__.py | 2 +-
.../apache/cassandra/get_provider_info.py | 3 +-
providers/apache/drill/README.rst | 8 +-
providers/apache/drill/docs/changelog.rst | 25 +-
providers/apache/drill/docs/commits.rst | 495 +-
providers/apache/drill/docs/index.rst | 10 +-
providers/apache/drill/provider.yaml | 3 +-
providers/apache/drill/pyproject.toml | 8 +-
.../src/airflow/providers/apache/drill/__init__.py | 2 +-
.../providers/apache/drill/get_provider_info.py | 3 +-
providers/apache/druid/README.rst | 8 +-
providers/apache/druid/docs/changelog.rst | 27 +-
providers/apache/druid/docs/commits.rst | 717 +-
providers/apache/druid/docs/index.rst | 10 +-
providers/apache/druid/provider.yaml | 3 +-
providers/apache/druid/pyproject.toml | 8 +-
.../src/airflow/providers/apache/druid/__init__.py | 2 +-
.../providers/apache/druid/get_provider_info.py | 3 +-
.../unit/apache/druid/operators/test_druid.py | 2 +
providers/apache/flink/README.rst | 8 +-
providers/apache/flink/docs/changelog.rst | 21 +-
providers/apache/flink/docs/commits.rst | 281 +-
providers/apache/flink/docs/index.rst | 10 +-
providers/apache/flink/provider.yaml | 3 +-
providers/apache/flink/pyproject.toml | 8 +-
.../src/airflow/providers/apache/flink/__init__.py | 2 +-
.../providers/apache/flink/get_provider_info.py | 3 +-
providers/apache/hdfs/README.rst | 6 +-
providers/apache/hdfs/docs/changelog.rst | 23 +-
providers/apache/hdfs/docs/commits.rst | 665 +-
providers/apache/hdfs/docs/index.rst | 4 +-
providers/apache/hdfs/provider.yaml | 3 +-
providers/apache/hdfs/pyproject.toml | 8 +-
.../src/airflow/providers/apache/hdfs/__init__.py | 2 +-
.../providers/apache/hdfs/get_provider_info.py | 3 +-
providers/apache/hive/README.rst | 9 +-
providers/apache/hive/docs/changelog.rst | 17 +-
providers/apache/hive/docs/commits.rst | 16 +
providers/apache/hive/docs/index.rst | 10 +-
providers/apache/hive/provider.yaml | 3 +-
providers/apache/hive/pyproject.toml | 12 +-
.../src/airflow/providers/apache/hive/__init__.py | 2 +-
.../providers/apache/hive/get_provider_info.py | 4 +-
.../airflow/providers/apache/hive/hooks/hive.py | 9 +-
.../providers/apache/hive/operators/hive.py | 15 +-
.../apache/hive/transfers/hive_to_mysql.py | 8 +-
.../apache/hive/transfers/hive_to_samba.py | 7 +-
.../hive/tests/unit/apache/hive/hooks/test_hive.py | 12 +-
.../tests/unit/apache/hive/operators/test_hive.py | 1 +
.../unit/apache/hive/operators/test_hive_stats.py | 1 +
.../apache/hive/sensors/test_hive_partition.py | 1 +
.../hive/sensors/test_metastore_partition.py | 1 +
.../hive/sensors/test_named_hive_partition.py | 1 +
.../apache/hive/transfers/test_hive_to_mysql.py | 8 +-
.../apache/hive/transfers/test_hive_to_samba.py | 8 +-
providers/apache/iceberg/README.rst | 6 +-
providers/apache/iceberg/docs/changelog.rst | 23 +
providers/apache/iceberg/docs/commits.rst | 85 +-
providers/apache/iceberg/docs/index.rst | 4 +-
providers/apache/iceberg/provider.yaml | 3 +-
providers/apache/iceberg/pyproject.toml | 8 +-
.../airflow/providers/apache/iceberg/__init__.py | 2 +-
.../providers/apache/iceberg/get_provider_info.py | 4 +-
providers/apache/impala/README.rst | 8 +-
providers/apache/impala/docs/changelog.rst | 21 +-
providers/apache/impala/docs/commits.rst | 267 +-
providers/apache/impala/docs/index.rst | 10 +-
providers/apache/impala/provider.yaml | 3 +-
providers/apache/impala/pyproject.toml | 8 +-
.../airflow/providers/apache/impala/__init__.py | 2 +-
.../providers/apache/impala/get_provider_info.py | 3 +-
providers/apache/kafka/README.rst | 2 +-
providers/apache/kafka/docs/changelog.rst | 2 +-
providers/apache/kafka/docs/index.rst | 4 +-
providers/apache/kafka/pyproject.toml | 2 +-
.../airflow/providers/apache/kafka/hooks/base.py | 10 +-
providers/apache/kylin/README.rst | 6 +-
providers/apache/kylin/docs/changelog.rst | 23 +-
providers/apache/kylin/docs/commits.rst | 497 +-
providers/apache/kylin/docs/index.rst | 4 +-
providers/apache/kylin/provider.yaml | 3 +-
providers/apache/kylin/pyproject.toml | 8 +-
.../src/airflow/providers/apache/kylin/__init__.py | 2 +-
.../providers/apache/kylin/get_provider_info.py | 3 +-
providers/apache/livy/README.rst | 8 +-
providers/apache/livy/docs/changelog.rst | 17 +-
providers/apache/livy/docs/commits.rst | 16 +
providers/apache/livy/docs/index.rst | 10 +-
providers/apache/livy/provider.yaml | 3 +-
providers/apache/livy/pyproject.toml | 8 +-
.../src/airflow/providers/apache/livy/__init__.py | 2 +-
.../providers/apache/livy/get_provider_info.py | 3 +-
providers/apache/pig/README.rst | 6 +-
providers/apache/pig/docs/changelog.rst | 22 +-
providers/apache/pig/docs/commits.rst | 512 +-
providers/apache/pig/docs/index.rst | 4 +-
providers/apache/pig/provider.yaml | 3 +-
providers/apache/pig/pyproject.toml | 8 +-
.../src/airflow/providers/apache/pig/__init__.py | 2 +-
.../providers/apache/pig/get_provider_info.py | 3 +-
providers/apache/pinot/README.rst | 8 +-
providers/apache/pinot/docs/changelog.rst | 27 +-
providers/apache/pinot/docs/commits.rst | 567 +-
providers/apache/pinot/docs/index.rst | 10 +-
providers/apache/pinot/provider.yaml | 3 +-
providers/apache/pinot/pyproject.toml | 8 +-
.../src/airflow/providers/apache/pinot/__init__.py | 2 +-
.../providers/apache/pinot/get_provider_info.py | 3 +-
.../airflow/providers/apache/pinot/hooks/pinot.py | 26 +-
.../tests/unit/apache/pinot/hooks/test_pinot.py | 192 +
providers/apache/spark/README.rst | 8 +-
providers/apache/spark/docs/changelog.rst | 33 +-
providers/apache/spark/docs/commits.rst | 653 +-
providers/apache/spark/docs/index.rst | 10 +-
providers/apache/spark/provider.yaml | 3 +-
providers/apache/spark/pyproject.toml | 8 +-
.../src/airflow/providers/apache/spark/__init__.py | 2 +-
.../providers/apache/spark/get_provider_info.py | 3 +-
providers/apprise/README.rst | 6 +-
providers/apprise/docs/changelog.rst | 22 +-
providers/apprise/docs/commits.rst | 254 +-
providers/apprise/docs/index.rst | 4 +-
providers/apprise/provider.yaml | 3 +-
providers/apprise/pyproject.toml | 8 +-
.../src/airflow/providers/apprise/__init__.py | 2 +-
.../airflow/providers/apprise/get_provider_info.py | 3 +-
.../airflow/providers/apprise/hooks/__init__.py | 5 +-
.../providers/apprise/notifications/__init__.py | 5 +-
providers/arangodb/README.rst | 6 +-
providers/arangodb/docs/changelog.rst | 17 +-
providers/arangodb/docs/commits.rst | 16 +
providers/arangodb/docs/index.rst | 4 +-
providers/arangodb/provider.yaml | 3 +-
providers/arangodb/pyproject.toml | 8 +-
.../src/airflow/providers/arangodb/__init__.py | 2 +-
.../providers/arangodb/get_provider_info.py | 3 +-
providers/asana/README.rst | 6 +-
providers/asana/docs/changelog.rst | 17 +-
providers/asana/docs/commits.rst | 16 +
providers/asana/docs/index.rst | 4 +-
providers/asana/provider.yaml | 3 +-
providers/asana/pyproject.toml | 8 +-
.../asana/src/airflow/providers/asana/__init__.py | 2 +-
.../airflow/providers/asana/get_provider_info.py | 3 +-
providers/atlassian/jira/README.rst | 6 +-
providers/atlassian/jira/docs/changelog.rst | 22 +-
providers/atlassian/jira/docs/commits.rst | 320 +-
providers/atlassian/jira/docs/index.rst | 4 +-
providers/atlassian/jira/provider.yaml | 3 +-
providers/atlassian/jira/pyproject.toml | 8 +-
.../airflow/providers/atlassian/jira/__init__.py | 2 +-
.../providers/atlassian/jira/get_provider_info.py | 3 +-
providers/celery/README.rst | 9 +-
providers/celery/docs/changelog.rst | 41 +-
providers/celery/docs/commits.rst | 37 +
providers/celery/docs/index.rst | 11 +-
providers/celery/provider.yaml | 11 +-
providers/celery/pyproject.toml | 9 +-
.../src/airflow/providers/celery/__init__.py | 2 +-
.../airflow/providers/celery/cli/celery_command.py | 10 +-
.../celery/executors/celery_executor_utils.py | 7 +-
.../providers/celery/executors/default_celery.py | 7 +-
.../airflow/providers/celery/get_provider_info.py | 18 +-
.../tests/unit/celery/cli/test_celery_command.py | 34 -
providers/cloudant/README.rst | 6 +-
providers/cloudant/docs/changelog.rst | 21 +-
providers/cloudant/docs/commits.rst | 509 +-
providers/cloudant/docs/index.rst | 4 +-
providers/cloudant/provider.yaml | 3 +-
providers/cloudant/pyproject.toml | 8 +-
.../src/airflow/providers/cloudant/__init__.py | 2 +-
.../providers/cloudant/get_provider_info.py | 3 +-
providers/cncf/kubernetes/README.rst | 7 +-
providers/cncf/kubernetes/docs/changelog.rst | 45 +-
providers/cncf/kubernetes/docs/commits.rst | 37 +
providers/cncf/kubernetes/docs/index.rst | 5 +-
.../cncf/kubernetes/docs/kubernetes_executor.rst | 4 +-
providers/cncf/kubernetes/provider.yaml | 4 +-
providers/cncf/kubernetes/pyproject.toml | 9 +-
.../airflow/providers/cncf/kubernetes/__init__.py | 2 +-
.../providers/cncf/kubernetes/get_provider_info.py | 5 +-
.../providers/cncf/kubernetes/operators/pod.py | 17 +-
.../providers/cncf/kubernetes/pod_generator.py | 4 +-
.../providers/cncf/kubernetes/triggers/pod.py | 26 +-
.../providers/cncf/kubernetes/utils/pod_manager.py | 33 +-
.../unit/cncf/kubernetes/operators/test_pod.py | 47 +-
.../unit/cncf/kubernetes/triggers/test_pod.py | 46 +
.../unit/cncf/kubernetes/utils/test_pod_manager.py | 33 +-
providers/cohere/README.rst | 6 +-
providers/cohere/docs/changelog.rst | 17 +-
providers/cohere/docs/commits.rst | 16 +
providers/cohere/docs/index.rst | 4 +-
providers/cohere/provider.yaml | 3 +-
providers/cohere/pyproject.toml | 8 +-
.../src/airflow/providers/cohere/__init__.py | 2 +-
.../airflow/providers/cohere/get_provider_info.py | 3 +-
.../src/airflow/providers/cohere/hooks/__init__.py | 5 +-
providers/common/compat/README.rst | 8 +-
providers/common/compat/docs/changelog.rst | 32 +
providers/common/compat/docs/commits.rst | 34 +
providers/common/compat/docs/index.rst | 10 +-
providers/common/compat/provider.yaml | 4 +-
providers/common/compat/pyproject.toml | 8 +-
.../airflow/providers/common/compat/__init__.py | 2 +-
.../providers/common/compat/assets/__init__.py | 5 +-
.../src/airflow/providers/common/compat/check.py | 99 +
.../providers/common/compat/get_provider_info.py | 4 +-
.../providers/common/compat/openlineage/check.py | 104 +
.../common/compat/openlineage/utils/spark.py | 98 +-
.../common/compat/security/permissions.py | 16 +-
.../unit/common/compat/openlineage/test_check.py | 253 +
.../compat/tests/unit/common/compat/test_check.py | 103 +
providers/common/io/README.rst | 8 +-
providers/common/io/docs/changelog.rst | 46 +-
providers/common/io/docs/commits.rst | 261 +-
providers/common/io/docs/index.rst | 10 +-
providers/common/io/provider.yaml | 4 +-
providers/common/io/pyproject.toml | 8 +-
.../io/src/airflow/providers/common/io/__init__.py | 2 +-
.../src/airflow/providers/common/io/assets/file.py | 22 +-
.../providers/common/io/get_provider_info.py | 4 +-
.../airflow/providers/common/io/xcom/backend.py | 12 +-
.../io/tests/unit/common/io/assets/test_file.py | 33 +-
.../io/tests/unit/common/io/xcom/test_backend.py | 254 +-
providers/common/messaging/README.rst | 8 +-
providers/common/messaging/docs/commits.rst | 21 +-
providers/common/messaging/docs/index.rst | 4 +-
providers/common/messaging/provider.yaml | 4 +-
providers/common/messaging/pyproject.toml | 8 +-
.../messaging/src/airflow/providers/__init__.py | 1 +
.../airflow/providers/common/messaging/__init__.py | 2 +-
.../common/messaging/get_provider_info.py | 4 +-
.../messaging/example_message_queue_trigger.py | 8 +-
providers/common/sql/README.rst | 8 +-
providers/common/sql/docs/changelog.rst | 46 +-
providers/common/sql/docs/commits.rst | 34 +
providers/common/sql/docs/index.rst | 10 +-
providers/common/sql/provider.yaml | 4 +-
providers/common/sql/pyproject.toml | 8 +-
.../src/airflow/providers/common/sql/__init__.py | 2 +-
.../providers/common/sql/get_provider_info.py | 4 +-
.../airflow/providers/common/sql/operators/sql.py | 17 +-
.../airflow/providers/common/sql/triggers/sql.py | 32 +-
.../tests/unit/common/sql/operators/test_sql.py | 206 +-
.../sql/tests/unit/common/sql/triggers/test_sql.py | 9 +-
providers/databricks/README.rst | 8 +-
providers/databricks/docs/changelog.rst | 27 +-
providers/databricks/docs/commits.rst | 22 +
providers/databricks/docs/index.rst | 10 +-
providers/databricks/provider.yaml | 3 +-
providers/databricks/pyproject.toml | 8 +-
.../src/airflow/providers/databricks/__init__.py | 2 +-
.../providers/databricks/get_provider_info.py | 3 +-
.../providers/databricks/operators/databricks.py | 10 +-
.../databricks/plugins/databricks_workflow.py | 16 +-
providers/datadog/README.rst | 6 +-
providers/datadog/docs/changelog.rst | 17 +-
providers/datadog/docs/commits.rst | 16 +
providers/datadog/docs/index.rst | 4 +-
providers/datadog/provider.yaml | 3 +-
providers/datadog/pyproject.toml | 8 +-
.../src/airflow/providers/datadog/__init__.py | 2 +-
.../airflow/providers/datadog/get_provider_info.py | 3 +-
providers/dbt/cloud/README.rst | 23 +-
providers/dbt/cloud/docs/changelog.rst | 18 +-
providers/dbt/cloud/docs/commits.rst | 17 +
providers/dbt/cloud/docs/index.rst | 25 +-
providers/dbt/cloud/provider.yaml | 3 +-
providers/dbt/cloud/pyproject.toml | 12 +-
.../src/airflow/providers/dbt/cloud/__init__.py | 2 +-
.../providers/dbt/cloud/get_provider_info.py | 8 +-
.../airflow/providers/dbt/cloud/operators/dbt.py | 20 +-
.../providers/dbt/cloud/utils/openlineage.py | 82 +-
.../airflow/providers/dbt/cloud}/version_compat.py | 0
.../tests/unit/dbt/cloud/operators/test_dbt.py | 17 +-
providers/dingding/README.rst | 8 +-
providers/dingding/docs/changelog.rst | 17 +-
providers/dingding/docs/commits.rst | 16 +
providers/dingding/docs/index.rst | 10 +-
providers/dingding/provider.yaml | 3 +-
providers/dingding/pyproject.toml | 8 +-
.../src/airflow/providers/dingding/__init__.py | 2 +-
.../providers/dingding/get_provider_info.py | 3 +-
providers/discord/README.rst | 8 +-
providers/discord/docs/changelog.rst | 17 +-
providers/discord/docs/commits.rst | 16 +
providers/discord/docs/index.rst | 10 +-
providers/discord/provider.yaml | 3 +-
providers/discord/pyproject.toml | 8 +-
.../src/airflow/providers/discord/__init__.py | 2 +-
.../airflow/providers/discord/get_provider_info.py | 3 +-
providers/docker/README.rst | 8 +-
providers/docker/docs/changelog.rst | 17 +-
providers/docker/docs/commits.rst | 16 +
providers/docker/docs/index.rst | 10 +-
providers/docker/provider.yaml | 3 +-
providers/docker/pyproject.toml | 8 +-
.../src/airflow/providers/docker/__init__.py | 2 +-
.../airflow/providers/docker/get_provider_info.py | 3 +-
.../providers/docker/operators/docker_swarm.py | 6 +-
.../unit/docker/operators/test_docker_swarm.py | 45 +-
providers/edge/README.rst | 8 +-
providers/edge/docs/changelog.rst | 9 +
providers/edge/docs/edge_executor.rst | 2 +-
providers/edge/docs/index.rst | 4 +-
providers/edge/docs/install_on_windows.rst | 2 +-
providers/edge/provider.yaml | 2 +-
providers/edge/pyproject.toml | 8 +-
.../edge/src/airflow/providers/edge/__init__.py | 2 +-
.../src/airflow/providers/edge/cli/api_client.py | 28 +-
.../providers/edge/example_dags/win_notepad.py | 2 +-
.../providers/edge/example_dags/win_test.py | 6 +-
.../providers/edge/executors/edge_executor.py | 9 +-
.../airflow/providers/edge/get_provider_info.py | 2 +-
.../providers/edge/plugins/edge_executor_plugin.py | 6 +-
.../src/airflow/providers/edge/worker_api/auth.py | 44 +-
.../unit/edge/executors/test_edge_executor.py | 7 +-
providers/elasticsearch/README.rst | 8 +-
providers/elasticsearch/docs/changelog.rst | 18 +-
providers/elasticsearch/docs/commits.rst | 17 +
providers/elasticsearch/docs/index.rst | 10 +-
providers/elasticsearch/provider.yaml | 3 +-
providers/elasticsearch/pyproject.toml | 8 +-
.../airflow/providers/elasticsearch/__init__.py | 2 +-
.../providers/elasticsearch/get_provider_info.py | 3 +-
.../unit/elasticsearch/log/test_es_task_handler.py | 8 +-
providers/exasol/README.rst | 8 +-
providers/exasol/docs/changelog.rst | 22 +-
providers/exasol/docs/commits.rst | 17 +
providers/exasol/docs/index.rst | 10 +-
providers/exasol/provider.yaml | 3 +-
providers/exasol/pyproject.toml | 8 +-
.../src/airflow/providers/exasol/__init__.py | 2 +-
.../airflow/providers/exasol/get_provider_info.py | 3 +-
providers/fab/README.rst | 16 +-
providers/fab/docs/changelog.rst | 4 +-
providers/fab/docs/commits.rst | 4 +-
providers/fab/docs/index.rst | 5 +-
providers/fab/provider.yaml | 11 +-
providers/fab/pyproject.toml | 26 +-
.../providers/3rd-party-licenses/LICENSES-ui.txt | 2 +-
.../fab/src/airflow/providers/fab/__init__.py | 2 +-
.../auth_manager/api/auth/backend/kerberos_auth.py | 2 +-
.../fab/auth_manager/api_fastapi/routes/login.py | 2 +-
.../fab/auth_manager/api_fastapi/services/login.py | 4 +-
.../fab/auth_manager/cli_commands/user_command.py | 4 +-
.../providers/fab/auth_manager/fab_auth_manager.py | 238 +-
.../providers/fab/auth_manager/models/__init__.py | 2 +-
.../fab/auth_manager/models/anonymous_user.py | 2 +-
.../providers/fab/auth_manager/models/db.py | 27 +-
.../fab/auth_manager/security_manager/override.py | 604 +-
.../src/airflow/providers/fab/get_provider_info.py | 19 +-
.../providers/fab/www/api_connexion/security.py | 2 +-
providers/fab/src/airflow/providers/fab/www/app.py | 12 +-
.../fab/src/airflow/providers/fab/www/auth.py | 10 +-
.../fab/www/extensions/init_appbuilder.py | 9 +-
.../providers/fab/www/extensions/init_security.py | 4 +-
.../airflow/providers/fab/www/package-lock.json | 20596 +++++--------------
.../fab/src/airflow/providers/fab/www/package.json | 89 +-
.../providers/fab/www/security/permissions.py | 3 +
.../airflow/providers/fab/www/security_manager.py | 220 +-
.../airflow/providers/fab/www/static/css/flash.css | 57 +
.../providers/fab/www/static/dist/d3-tip.js | 1 -
.../www/static/dist/flash.137b30cff85b5588e661.css | 18 +
.../www/static/dist/flash.137b30cff85b5588e661.js | 1 +
.../fab/www/static/dist/jquery-ui.min.css | 5 +
.../providers/fab/www/static/dist/jquery-ui.min.js | 2 +
.../www/static/dist/jquery-ui.min.js.LICENSE.txt | 4 +
.../www/static/dist/main.b585926afc96bd076c4f.js | 2 -
...6bd076c4f.css => main.ec1d38d994d72bb083cd.css} | 0
.../www/static/dist/main.ec1d38d994d72bb083cd.js | 2 +
...xt => main.ec1d38d994d72bb083cd.js.LICENSE.txt} | 0
.../providers/fab/www/static/dist/manifest.json | 33 +-
.../www/static/dist/moment.4d28b37c229bdfc54575.js | 2 -
.../moment.4d28b37c229bdfc54575.js.LICENSE.txt | 11 -
.../www/static/dist/moment.624b1f00ba723d39ce06.js | 2 +
.../moment.624b1f00ba723d39ce06.js.LICENSE.txt | 11 +
.../fab/www/static/dist/oss-licenses.json | 4 +-
.../providers/fab/www/templates/airflow/main.html | 1 +
.../fab/www/templates/airflow/traceback.html | 6 +-
.../fab/www/templates/appbuilder/flash.html | 34 +
.../fab/src/airflow/providers/fab/www/utils.py | 29 +
.../fab/src/airflow/providers/fab/www/views.py | 49 +-
.../airflow/providers/fab/www/webpack.config.js | 44 +-
.../fab/auth_manager/api_endpoints/test_auth.py | 26 +-
.../test_role_and_permission_endpoint.py | 4 +-
.../api_endpoints/test_user_endpoint.py | 16 +-
.../api_fastapi/services/test_login.py | 2 +-
.../auth_manager/cli_commands/test_db_command.py | 17 +-
.../auth_manager/cli_commands/test_role_command.py | 27 +-
.../cli_commands/test_sync_perm_command.py | 16 +-
.../auth_manager/cli_commands/test_user_command.py | 31 +-
.../fab/tests/unit/fab/auth_manager/conftest.py | 4 +-
.../tests/unit/fab/auth_manager/models/test_db.py | 4 +-
.../schemas/test_role_and_permission_schema.py | 1 +
.../fab/auth_manager/schemas/test_user_schema.py | 2 +-
.../unit/fab/auth_manager/test_fab_auth_manager.py | 181 +-
.../tests/unit/fab/auth_manager/test_security.py | 84 +-
.../fab/auth_manager/views/test_permissions.py | 12 +-
.../unit/fab/auth_manager/views/test_roles_list.py | 12 +-
.../tests/unit/fab/auth_manager/views/test_user.py | 12 +-
.../unit/fab/auth_manager/views/test_user_edit.py | 12 +-
.../unit/fab/auth_manager/views/test_user_stats.py | 12 +-
providers/fab/tests/unit/{ => fab}/decorators.py | 0
providers/fab/tests/unit/fab/utils.py | 3 -
providers/fab/tests/unit/fab/www/test_auth.py | 14 +-
providers/fab/tests/unit/fab/www/views/conftest.py | 6 +-
.../fab/www/views/test_connection_form_fields.py | 163 +
.../fab/www/views/test_views_custom_user_views.py | 33 +-
providers/facebook/README.rst | 6 +-
providers/facebook/docs/changelog.rst | 21 +-
providers/facebook/docs/commits.rst | 519 +-
providers/facebook/docs/index.rst | 4 +-
providers/facebook/provider.yaml | 3 +-
providers/facebook/pyproject.toml | 8 +-
.../src/airflow/providers/facebook/__init__.py | 2 +-
.../providers/facebook/get_provider_info.py | 3 +-
providers/ftp/README.rst | 8 +-
providers/ftp/docs/changelog.rst | 17 +-
providers/ftp/docs/commits.rst | 16 +
providers/ftp/docs/index.rst | 10 +-
providers/ftp/provider.yaml | 3 +-
providers/ftp/pyproject.toml | 8 +-
.../ftp/src/airflow/providers/ftp/__init__.py | 2 +-
.../src/airflow/providers/ftp/get_provider_info.py | 3 +-
providers/github/README.rst | 6 +-
providers/github/docs/changelog.rst | 17 +-
providers/github/docs/commits.rst | 16 +
providers/github/docs/index.rst | 4 +-
providers/github/provider.yaml | 3 +-
providers/github/pyproject.toml | 8 +-
.../src/airflow/providers/github/__init__.py | 2 +-
.../airflow/providers/github/get_provider_info.py | 3 +-
providers/google/README.rst | 6 +-
providers/google/docs/.latest-doc-only-change.txt | 2 +-
.../google/docs/api-auth-backend/google-openid.rst | 2 +
providers/google/docs/changelog.rst | 2 +-
providers/google/docs/index.rst | 4 +-
providers/google/docs/operators/cloud/dataflow.rst | 8 +
.../docs/operators/cloud/kubernetes_engine.rst | 5 +
providers/google/provider.yaml | 1 +
providers/google/pyproject.toml | 6 +-
.../src/airflow/providers/google/ads/hooks/ads.py | 16 +-
.../airflow/providers/google/cloud/hooks/automl.py | 13 +-
.../providers/google/cloud/hooks/cloud_build.py | 11 +-
.../providers/google/cloud/hooks/cloud_composer.py | 12 +-
.../providers/google/cloud/hooks/dataplex.py | 3 +-
.../google/cloud/hooks/kubernetes_engine.py | 18 +-
.../providers/google/cloud/hooks/translate.py | 13 +-
.../google/cloud/hooks/vertex_ai/auto_ml.py | 11 +-
.../cloud/hooks/vertex_ai/batch_prediction_job.py | 11 +-
.../google/cloud/hooks/vertex_ai/custom_job.py | 11 +-
.../google/cloud/hooks/vertex_ai/dataset.py | 12 +-
.../cloud/hooks/vertex_ai/endpoint_service.py | 12 +-
.../hooks/vertex_ai/hyperparameter_tuning_job.py | 11 +-
.../google/cloud/hooks/vertex_ai/model_service.py | 12 +-
.../google/cloud/hooks/vertex_ai/pipeline_job.py | 11 +-
.../airflow/providers/google/cloud/links/base.py | 8 +-
.../providers/google/cloud/links/datafusion.py | 10 +-
.../providers/google/cloud/links/dataproc.py | 9 +-
.../providers/google/cloud/log/gcs_task_handler.py | 2 +-
.../providers/google/cloud/operators/bigquery.py | 2 +-
.../providers/google/cloud/operators/dataproc.py | 27 +
.../google/cloud/operators/dataproc_metastore.py | 11 +-
.../google/cloud/operators/kubernetes_engine.py | 55 +-
.../google/common/auth_backend/google_openid.py | 11 +-
.../google/common/hooks/operation_helpers.py | 79 +
.../airflow/providers/google/get_provider_info.py | 9 +-
.../marketing_platform/links/analytics_admin.py | 12 +-
.../google/tests/system/google/ads/example_ads.py | 3 +
.../cloud/azure/example_azure_fileshare_to_gcs.py | 1 +
.../google/cloud/bigquery/example_bigquery_dts.py | 1 +
.../google/cloud/bigquery/example_bigquery_jobs.py | 1 +
.../cloud/bigquery/example_bigquery_operations.py | 1 +
.../cloud/bigquery/example_bigquery_queries.py | 1 +
.../bigquery/example_bigquery_queries_async.py | 1 +
.../cloud/bigquery/example_bigquery_tables.py | 1 +
.../cloud/bigquery/example_bigquery_to_gcs.py | 1 +
.../cloud/bigquery/example_bigquery_transfer.py | 1 +
.../google/cloud/bigtable/example_bigtable.py | 1 +
.../cloud/cloud_batch/example_cloud_batch.py | 1 +
.../cloud/cloud_build/example_cloud_build.py | 1 +
.../cloud_build/example_cloud_build_trigger.py | 1 +
.../cloud/cloud_functions/example_functions.py | 1 +
.../example_cloud_memorystore_redis.py | 1 +
.../google/cloud/cloud_sql/example_cloud_sql.py | 1 +
.../cloud/cloud_sql/example_cloud_sql_query.py | 1 +
.../cloud/cloud_sql/example_cloud_sql_query_iam.py | 1 +
.../cloud/cloud_sql/example_cloud_sql_query_ssl.py | 1 +
.../system/google/cloud/compute/example_compute.py | 1 +
.../google/cloud/compute/example_compute_igm.py | 1 +
.../google/cloud/compute/example_compute_ssh.py | 1 +
.../cloud/compute/example_compute_ssh_os_login.py | 1 +
.../cloud/compute/example_compute_ssh_parallel.py | 1 +
.../example_dlp_deidentify_content.py | 1 +
.../data_loss_prevention/example_dlp_info_types.py | 1 +
.../example_dlp_inspect_template.py | 1 +
.../cloud/data_loss_prevention/example_dlp_job.py | 1 +
.../example_dlp_job_trigger.py | 1 +
.../dataflow/example_dataflow_java_streaming.py | 145 +
.../cloud/dataflow/example_dataflow_template.py | 1 +
.../google/cloud/dataflow/example_dataflow_yaml.py | 1 +
.../non_python_src/java_streaming_src/README.MD | 58 +
.../non_python_src/java_streaming_src/pom.xml | 131 +
.../java/org/example/pubsub/StreamingExample.java | 42 +
.../google/cloud/dataform/example_dataform.py | 1 +
.../google/cloud/datafusion/example_datafusion.py | 1 +
.../google/cloud/dataplex/example_dataplex.py | 1 +
.../cloud/dataplex/example_dataplex_catalog.py | 1 +
.../google/cloud/dataplex/example_dataplex_dp.py | 1 +
.../google/cloud/dataplex/example_dataplex_dq.py | 1 +
.../google/cloud/dataprep/example_dataprep.py | 1 +
.../cloud/dataproc/example_dataproc_batch.py | 1 +
.../dataproc/example_dataproc_batch_deferrable.py | 1 +
.../dataproc/example_dataproc_batch_persistent.py | 1 +
...proc_cluster_create_existing_stopped_cluster.py | 1 +
.../example_dataproc_cluster_deferrable.py | 1 +
.../dataproc/example_dataproc_cluster_diagnose.py | 1 +
.../dataproc/example_dataproc_cluster_generator.py | 1 +
.../example_dataproc_cluster_start_stop.py | 1 +
.../dataproc/example_dataproc_cluster_update.py | 1 +
.../cloud/dataproc/example_dataproc_flink.py | 1 +
.../google/cloud/dataproc/example_dataproc_gke.py | 1 +
.../cloud/dataproc/example_dataproc_hadoop.py | 1 +
.../google/cloud/dataproc/example_dataproc_hive.py | 1 +
.../google/cloud/dataproc/example_dataproc_pig.py | 1 +
.../cloud/dataproc/example_dataproc_presto.py | 1 +
.../cloud/dataproc/example_dataproc_pyspark.py | 1 +
.../cloud/dataproc/example_dataproc_spark.py | 1 +
.../cloud/dataproc/example_dataproc_spark_async.py | 1 +
.../dataproc/example_dataproc_spark_deferrable.py | 1 +
.../cloud/dataproc/example_dataproc_spark_sql.py | 1 +
.../cloud/dataproc/example_dataproc_sparkr.py | 1 +
.../cloud/dataproc/example_dataproc_trino.py | 1 +
.../cloud/dataproc/example_dataproc_workflow.py | 1 +
.../example_dataproc_workflow_deferrable.py | 1 +
.../example_dataproc_metastore.py | 1 +
.../example_dataproc_metastore_backup.py | 1 +
...ple_dataproc_metastore_hive_partition_sensor.py | 1 +
.../cloud/datastore/example_datastore_commit.py | 1 +
.../cloud/datastore/example_datastore_query.py | 1 +
.../cloud/datastore/example_datastore_rollback.py | 1 +
.../system/google/cloud/gcs/example_gcs_acl.py | 1 +
.../google/cloud/gcs/example_gcs_copy_delete.py | 1 +
.../system/google/cloud/gcs/example_gcs_sensor.py | 1 +
.../google/cloud/gcs/example_gcs_to_bigquery.py | 1 +
.../cloud/gcs/example_gcs_to_bigquery_async.py | 1 +
.../system/google/cloud/gcs/example_gcs_to_gcs.py | 1 +
.../google/cloud/gcs/example_gcs_to_gdrive.py | 1 +
.../system/google/cloud/gcs/example_gcs_to_sftp.py | 1 +
.../google/cloud/gcs/example_gcs_transform.py | 1 +
.../cloud/gcs/example_gcs_transform_timespan.py | 1 +
.../cloud/gcs/example_gcs_upload_download.py | 1 +
.../google/cloud/gcs/example_gdrive_to_gcs.py | 1 +
.../google/cloud/gcs/example_mssql_to_gcs.py | 1 +
.../google/cloud/gcs/example_mysql_to_gcs.py | 1 +
.../google/cloud/gcs/example_oracle_to_gcs.py | 1 +
.../google/cloud/gcs/example_presto_to_gcs.py | 1 +
.../system/google/cloud/gcs/example_s3_to_gcs.py | 1 +
.../google/cloud/gcs/example_salesforce_to_gcs.py | 1 +
.../system/google/cloud/gcs/example_sftp_to_gcs.py | 1 +
.../google/cloud/gcs/example_trino_to_gcs.py | 1 +
.../kubernetes_engine/example_kubernetes_engine.py | 1 +
.../example_kubernetes_engine_async.py | 1 +
.../cloud/life_sciences/example_life_sciences.py | 1 +
.../system/google/cloud/spanner/example_spanner.py | 1 +
.../cloud/speech_to_text/example_speech_to_text.py | 1 +
.../cloud/stackdriver/example_stackdriver.py | 1 +
.../example_cloud_storage_transfer_service_aws.py | 1 +
.../cloud/text_to_speech/example_text_to_speech.py | 1 +
.../cloud/transfers/example_facebook_ads_to_gcs.py | 1 +
.../google/cloud/transfers/example_gcs_to_sftp.py | 1 +
.../cloud/transfers/example_gdrive_to_local.py | 1 +
.../datacatalog/example_datacatalog_entries.py | 1 +
.../example_datacatalog_search_catalog.py | 1 +
.../example_datacatalog_tag_templates.py | 1 +
.../google/datacatalog/example_datacatalog_tags.py | 1 +
.../marketing_platform/example_campaign_manager.py | 1 +
.../marketing_platform/example_display_video.py | 10 +-
.../unit/google/ads/transfers/test_ads_to_gcs.py | 1 +
.../tests/unit/google/cloud/hooks/test_automl.py | 1 +
.../unit/google/cloud/hooks/test_bigquery_dts.py | 1 +
.../google/cloud/hooks/test_bigquery_system.py | 2 +-
.../tests/unit/google/cloud/hooks/test_bigtable.py | 1 +
.../unit/google/cloud/hooks/test_cloud_batch.py | 1 +
.../unit/google/cloud/hooks/test_cloud_build.py | 13 +-
.../google/cloud/hooks/test_cloud_memorystore.py | 1 +
.../unit/google/cloud/hooks/test_cloud_run.py | 1 +
.../unit/google/cloud/hooks/test_cloud_sql.py | 1 +
.../hooks/test_cloud_storage_transfer_service.py | 1 +
.../test_cloud_storage_transfer_service_async.py | 1 +
.../tests/unit/google/cloud/hooks/test_compute.py | 1 +
.../unit/google/cloud/hooks/test_datacatalog.py | 1 +
.../tests/unit/google/cloud/hooks/test_dataform.py | 1 +
.../unit/google/cloud/hooks/test_datafusion.py | 1 +
.../tests/unit/google/cloud/hooks/test_dataplex.py | 1 +
.../google/cloud/hooks/test_dataproc_metastore.py | 1 +
.../tests/unit/google/cloud/hooks/test_dlp.py | 1 +
.../unit/google/cloud/hooks/test_functions.py | 1 +
.../tests/unit/google/cloud/hooks/test_gcs.py | 2 +-
.../unit/google/cloud/hooks/test_kms_system.py | 2 +-
.../google/cloud/hooks/test_kubernetes_engine.py | 1 +
.../unit/google/cloud/hooks/test_life_sciences.py | 1 +
.../unit/google/cloud/hooks/test_managed_kafka.py | 1 +
.../tests/unit/google/cloud/hooks/test_mlengine.py | 1 +
.../google/cloud/hooks/test_natural_language.py | 1 +
.../tests/unit/google/cloud/hooks/test_os_login.py | 1 +
.../unit/google/cloud/hooks/test_secret_manager.py | 1 +
.../tests/unit/google/cloud/hooks/test_spanner.py | 1 +
.../unit/google/cloud/hooks/test_speech_to_text.py | 1 +
.../tests/unit/google/cloud/hooks/test_tasks.py | 1 +
.../unit/google/cloud/hooks/test_text_to_speech.py | 1 +
.../unit/google/cloud/hooks/test_translate.py | 1 +
.../google/cloud/hooks/test_video_intelligence.py | 1 +
.../tests/unit/google/cloud/hooks/test_vision.py | 1 +
.../google/cloud/hooks/vertex_ai/test_auto_ml.py | 1 +
.../hooks/vertex_ai/test_batch_prediction_job.py | 1 +
.../cloud/hooks/vertex_ai/test_custom_job.py | 1 +
.../google/cloud/hooks/vertex_ai/test_dataset.py | 1 +
.../cloud/hooks/vertex_ai/test_endpoint_service.py | 1 +
.../cloud/hooks/vertex_ai/test_feature_store.py | 1 +
.../cloud/hooks/vertex_ai/test_generative_model.py | 1 +
.../vertex_ai/test_hyperparameter_tuning_job.py | 1 +
.../cloud/hooks/vertex_ai/test_model_service.py | 1 +
.../cloud/hooks/vertex_ai/test_pipeline_job.py | 1 +
.../hooks/vertex_ai/test_prediction_service.py | 1 +
.../tests/unit/google/cloud/links/test_dataplex.py | 114 +-
.../unit/google/cloud/links/test_translate.py | 44 +-
.../cloud/log/test_gcs_task_handler_system.py | 2 +-
.../log/test_stackdriver_task_handler_system.py | 2 +-
.../unit/google/cloud/openlineage/test_utils.py | 10 +-
.../unit/google/cloud/operators/test_bigquery.py | 73 +-
.../unit/google/cloud/operators/test_dataproc.py | 261 +-
.../cloud/operators/test_datastore_system.py | 3 +-
.../cloud/operators/test_kubernetes_engine.py | 56 +-
.../cloud/secrets/test_secret_manager_system.py | 3 +-
.../unit/google/cloud/triggers/test_vertex_ai.py | 1 +
.../common/auth_backend/test_google_openid.py | 37 +-
.../unit/google/common/hooks/test_base_google.py | 1 +
.../unit/google/firebase/hooks/test_firestore.py | 1 +
.../hooks/test_analytics_admin.py | 1 +
.../hooks/test_campaign_manager.py | 1 +
.../marketing_platform/hooks/test_display_video.py | 1 +
.../marketing_platform/hooks/test_search_ads.py | 1 +
.../tests/unit/google/suite/hooks/test_calendar.py | 1 +
.../tests/unit/google/suite/hooks/test_drive.py | 1 +
.../tests/unit/google/suite/hooks/test_sheets.py | 1 +
providers/grpc/README.rst | 6 +-
providers/grpc/docs/changelog.rst | 17 +-
providers/grpc/docs/commits.rst | 16 +
providers/grpc/docs/index.rst | 4 +-
providers/grpc/provider.yaml | 3 +-
providers/grpc/pyproject.toml | 8 +-
.../grpc/src/airflow/providers/grpc/__init__.py | 2 +-
.../airflow/providers/grpc/get_provider_info.py | 3 +-
providers/hashicorp/README.rst | 8 +-
providers/hashicorp/docs/changelog.rst | 26 +-
providers/hashicorp/docs/commits.rst | 682 +-
providers/hashicorp/docs/index.rst | 10 +-
providers/hashicorp/provider.yaml | 3 +-
providers/hashicorp/pyproject.toml | 8 +-
.../src/airflow/providers/hashicorp/__init__.py | 2 +-
.../hashicorp/_internal_client/vault_client.py | 11 +-
.../providers/hashicorp/get_provider_info.py | 3 +-
.../src/airflow/providers/hashicorp/hooks/vault.py | 5 +
.../airflow/providers/hashicorp/secrets/vault.py | 3 +
.../_internal_client/test_vault_client.py | 24 +
.../tests/unit/hashicorp/hooks/test_vault.py | 15 +-
providers/http/README.rst | 6 +-
providers/http/docs/changelog.rst | 22 +-
providers/http/docs/commits.rst | 17 +
providers/http/docs/index.rst | 6 +-
providers/http/provider.yaml | 3 +-
providers/http/pyproject.toml | 8 +-
.../http/src/airflow/providers/http/__init__.py | 2 +-
.../airflow/providers/http/get_provider_info.py | 3 +-
providers/imap/README.rst | 6 +-
providers/imap/docs/changelog.rst | 17 +-
providers/imap/docs/commits.rst | 16 +
providers/imap/docs/index.rst | 4 +-
providers/imap/provider.yaml | 3 +-
providers/imap/pyproject.toml | 8 +-
.../imap/src/airflow/providers/imap/__init__.py | 2 +-
.../airflow/providers/imap/get_provider_info.py | 3 +-
providers/influxdb/README.rst | 6 +-
providers/influxdb/docs/changelog.rst | 17 +-
providers/influxdb/docs/commits.rst | 16 +
providers/influxdb/docs/index.rst | 4 +-
providers/influxdb/provider.yaml | 3 +-
providers/influxdb/pyproject.toml | 8 +-
.../src/airflow/providers/influxdb/__init__.py | 2 +-
.../providers/influxdb/get_provider_info.py | 3 +-
providers/jdbc/README.rst | 8 +-
providers/jdbc/docs/changelog.rst | 23 +-
providers/jdbc/docs/commits.rst | 681 +-
providers/jdbc/docs/index.rst | 10 +-
providers/jdbc/provider.yaml | 3 +-
providers/jdbc/pyproject.toml | 8 +-
.../jdbc/src/airflow/providers/jdbc/__init__.py | 2 +-
.../airflow/providers/jdbc/get_provider_info.py | 3 +-
providers/jenkins/README.rst | 6 +-
providers/jenkins/docs/changelog.rst | 17 +-
providers/jenkins/docs/commits.rst | 16 +
providers/jenkins/docs/index.rst | 4 +-
providers/jenkins/provider.yaml | 3 +-
providers/jenkins/pyproject.toml | 8 +-
.../src/airflow/providers/jenkins/__init__.py | 2 +-
.../airflow/providers/jenkins/get_provider_info.py | 3 +-
providers/microsoft/azure/README.rst | 9 +-
providers/microsoft/azure/docs/changelog.rst | 25 +-
providers/microsoft/azure/docs/commits.rst | 20 +
providers/microsoft/azure/docs/index.rst | 10 +-
providers/microsoft/azure/provider.yaml | 3 +-
providers/microsoft/azure/pyproject.toml | 11 +-
.../airflow/providers/microsoft/azure/__init__.py | 2 +-
.../providers/microsoft/azure/get_provider_info.py | 6 +-
.../microsoft/azure/log/wasb_task_handler.py | 2 +-
.../microsoft/azure/operators/data_factory.py | 11 +-
.../providers/microsoft/azure/operators/powerbi.py | 9 +-
.../providers/microsoft/azure/operators/synapse.py | 11 +-
.../microsoft/azure/example_adf_run_pipeline.py | 1 -
.../system/microsoft/azure/example_s3_to_wasb.py | 1 +
.../azure/tests/unit/microsoft/azure/base.py | 1 +
.../unit/microsoft/azure/hooks/test_msgraph.py | 6 +-
.../microsoft/azure/operators/test_data_factory.py | 14 +-
.../unit/microsoft/azure/operators/test_msgraph.py | 4 +-
.../unit/microsoft/azure/operators/test_powerbi.py | 4 +-
.../unit/microsoft/azure/operators/test_synapse.py | 11 +-
.../unit/microsoft/azure/sensors/test_msgraph.py | 4 +-
.../unit/microsoft/azure/triggers/test_msgraph.py | 6 +-
.../unit/microsoft/azure/triggers/test_powerbi.py | 1 +
providers/microsoft/mssql/README.rst | 8 +-
providers/microsoft/mssql/docs/changelog.rst | 22 +-
providers/microsoft/mssql/docs/commits.rst | 17 +
providers/microsoft/mssql/docs/index.rst | 12 +-
providers/microsoft/mssql/provider.yaml | 3 +-
providers/microsoft/mssql/pyproject.toml | 8 +-
.../airflow/providers/microsoft/mssql/__init__.py | 2 +-
.../providers/microsoft/mssql/get_provider_info.py | 3 +-
providers/microsoft/psrp/README.rst | 6 +-
providers/microsoft/psrp/docs/changelog.rst | 21 +-
providers/microsoft/psrp/docs/commits.rst | 409 +-
providers/microsoft/psrp/docs/index.rst | 4 +-
providers/microsoft/psrp/provider.yaml | 3 +-
providers/microsoft/psrp/pyproject.toml | 8 +-
.../airflow/providers/microsoft/psrp/__init__.py | 2 +-
.../providers/microsoft/psrp/get_provider_info.py | 3 +-
providers/microsoft/winrm/README.rst | 8 +-
providers/microsoft/winrm/docs/changelog.rst | 17 +-
providers/microsoft/winrm/docs/commits.rst | 16 +
providers/microsoft/winrm/docs/index.rst | 4 +-
providers/microsoft/winrm/provider.yaml | 3 +-
providers/microsoft/winrm/pyproject.toml | 10 +-
.../airflow/providers/microsoft/winrm/__init__.py | 2 +-
.../providers/microsoft/winrm/get_provider_info.py | 5 +-
.../providers/microsoft/winrm/hooks/winrm.py | 40 +-
.../tests/unit/microsoft/winrm/hooks/test_winrm.py | 15 +-
providers/mongo/README.rst | 6 +-
providers/mongo/docs/changelog.rst | 19 +-
providers/mongo/docs/commits.rst | 20 +-
providers/mongo/docs/index.rst | 4 +-
providers/mongo/provider.yaml | 3 +-
providers/mongo/pyproject.toml | 8 +-
.../mongo/src/airflow/providers/mongo/__init__.py | 2 +-
.../airflow/providers/mongo/get_provider_info.py | 3 +-
providers/mysql/README.rst | 8 +-
providers/mysql/docs/changelog.rst | 28 +-
providers/mysql/docs/commits.rst | 21 +-
providers/mysql/docs/index.rst | 10 +-
providers/mysql/provider.yaml | 3 +-
providers/mysql/pyproject.toml | 8 +-
.../mysql/src/airflow/providers/mysql/__init__.py | 2 +-
.../airflow/providers/mysql/get_provider_info.py | 3 +-
providers/neo4j/README.rst | 6 +-
providers/neo4j/docs/changelog.rst | 17 +-
providers/neo4j/docs/commits.rst | 18 +-
providers/neo4j/docs/index.rst | 4 +-
providers/neo4j/provider.yaml | 3 +-
providers/neo4j/pyproject.toml | 8 +-
.../neo4j/src/airflow/providers/neo4j/__init__.py | 2 +-
.../airflow/providers/neo4j/get_provider_info.py | 3 +-
providers/odbc/README.rst | 8 +-
providers/odbc/docs/changelog.rst | 24 +-
providers/odbc/docs/commits.rst | 610 +-
providers/odbc/docs/index.rst | 10 +-
providers/odbc/provider.yaml | 3 +-
providers/odbc/pyproject.toml | 8 +-
.../odbc/src/airflow/providers/odbc/__init__.py | 2 +-
.../airflow/providers/odbc/get_provider_info.py | 3 +-
providers/openai/README.rst | 8 +-
providers/openai/docs/changelog.rst | 17 +-
providers/openai/docs/commits.rst | 18 +-
providers/openai/docs/index.rst | 4 +-
providers/openai/provider.yaml | 3 +-
providers/openai/pyproject.toml | 10 +-
.../src/airflow/providers/openai/__init__.py | 2 +-
.../airflow/providers/openai/get_provider_info.py | 5 +-
.../src/airflow/providers/openai/hooks/openai.py | 30 +-
.../openai/tests/unit/openai/hooks/test_openai.py | 31 +-
providers/openfaas/README.rst | 6 +-
providers/openfaas/docs/changelog.rst | 21 +-
providers/openfaas/docs/commits.rst | 425 +-
providers/openfaas/docs/index.rst | 4 +-
providers/openfaas/provider.yaml | 3 +-
providers/openfaas/pyproject.toml | 8 +-
.../src/airflow/providers/openfaas/__init__.py | 2 +-
.../providers/openfaas/get_provider_info.py | 3 +-
providers/openlineage/README.rst | 9 +-
providers/openlineage/docs/changelog.rst | 49 +-
providers/openlineage/docs/commits.rst | 41 +
providers/openlineage/docs/index.rst | 11 +-
providers/openlineage/provider.yaml | 21 +-
providers/openlineage/pyproject.toml | 10 +-
.../src/airflow/providers/openlineage/__init__.py | 2 +-
.../providers/openlineage/extractors/base.py | 74 +-
.../providers/openlineage/extractors/manager.py | 33 +-
.../providers/openlineage/get_provider_info.py | 13 +-
.../providers/openlineage/plugins/adapter.py | 2 +-
.../providers/openlineage/plugins/listener.py | 21 +-
.../providers/openlineage/plugins/macros.py | 19 +-
.../airflow/providers/openlineage/utils/spark.py | 90 +-
.../airflow/providers/openlineage/utils/utils.py | 19 +-
.../tests/system/openlineage/conftest.py | 1 +
.../system/openlineage/example_openlineage.py | 1 +
.../example_openlineage_mapped_sensor.py | 1 +
.../tests/unit/openlineage/extractors/test_base.py | 128 +-
.../unit/openlineage/extractors/test_manager.py | 35 +-
.../unit/openlineage/plugins/test_execution.py | 5 +-
.../unit/openlineage/plugins/test_listener.py | 1 +
.../tests/unit/openlineage/plugins/test_macros.py | 34 +-
.../tests/unit/openlineage/test_conf.py | 4 +-
.../tests/unit/openlineage/utils/test_spark.py | 89 +-
.../tests/unit/openlineage/utils/test_utils.py | 32 +-
providers/opensearch/README.rst | 6 +-
providers/opensearch/docs/changelog.rst | 19 +-
providers/opensearch/docs/commits.rst | 20 +-
providers/opensearch/docs/index.rst | 4 +-
providers/opensearch/provider.yaml | 3 +-
providers/opensearch/pyproject.toml | 8 +-
.../src/airflow/providers/opensearch/__init__.py | 2 +-
.../providers/opensearch/get_provider_info.py | 3 +-
.../unit/opensearch/log/test_os_task_handler.py | 7 +-
providers/opsgenie/README.rst | 6 +-
providers/opsgenie/docs/changelog.rst | 17 +-
providers/opsgenie/docs/commits.rst | 18 +-
providers/opsgenie/docs/index.rst | 4 +-
providers/opsgenie/provider.yaml | 3 +-
providers/opsgenie/pyproject.toml | 8 +-
.../src/airflow/providers/opsgenie/__init__.py | 2 +-
.../providers/opsgenie/get_provider_info.py | 3 +-
providers/oracle/README.rst | 8 +-
providers/oracle/docs/changelog.rst | 17 +-
providers/oracle/docs/commits.rst | 18 +-
providers/oracle/docs/index.rst | 10 +-
providers/oracle/provider.yaml | 3 +-
providers/oracle/pyproject.toml | 8 +-
.../src/airflow/providers/oracle/__init__.py | 2 +-
.../airflow/providers/oracle/get_provider_info.py | 3 +-
providers/pagerduty/README.rst | 6 +-
providers/pagerduty/docs/changelog.rst | 17 +-
providers/pagerduty/docs/commits.rst | 18 +-
providers/pagerduty/docs/index.rst | 4 +-
providers/pagerduty/provider.yaml | 3 +-
providers/pagerduty/pyproject.toml | 8 +-
.../src/airflow/providers/pagerduty/__init__.py | 2 +-
.../providers/pagerduty/get_provider_info.py | 3 +-
providers/papermill/README.rst | 8 +-
providers/papermill/docs/changelog.rst | 17 +-
providers/papermill/docs/commits.rst | 18 +-
providers/papermill/docs/index.rst | 10 +-
providers/papermill/provider.yaml | 3 +-
providers/papermill/pyproject.toml | 8 +-
.../src/airflow/providers/papermill/__init__.py | 2 +-
.../providers/papermill/get_provider_info.py | 3 +-
providers/pgvector/README.rst | 8 +-
providers/pgvector/docs/changelog.rst | 21 +-
providers/pgvector/docs/commits.rst | 145 +-
providers/pgvector/docs/index.rst | 10 +-
providers/pgvector/provider.yaml | 3 +-
providers/pgvector/pyproject.toml | 8 +-
.../src/airflow/providers/pgvector/__init__.py | 2 +-
.../providers/pgvector/get_provider_info.py | 4 +-
.../airflow/providers/pgvector/hooks/__init__.py | 5 +-
.../providers/pgvector/operators/__init__.py | 5 +-
providers/pinecone/README.rst | 6 +-
providers/pinecone/docs/changelog.rst | 22 +-
providers/pinecone/docs/commits.rst | 19 +-
providers/pinecone/docs/index.rst | 4 +-
providers/pinecone/provider.yaml | 3 +-
providers/pinecone/pyproject.toml | 8 +-
.../src/airflow/providers/pinecone/__init__.py | 2 +-
.../providers/pinecone/get_provider_info.py | 3 +-
providers/postgres/README.rst | 8 +-
providers/postgres/docs/changelog.rst | 17 +-
providers/postgres/docs/commits.rst | 18 +-
providers/postgres/docs/index.rst | 10 +-
providers/postgres/provider.yaml | 3 +-
providers/postgres/pyproject.toml | 8 +-
.../src/airflow/providers/postgres/__init__.py | 2 +-
.../providers/postgres/get_provider_info.py | 3 +-
providers/presto/README.rst | 8 +-
providers/presto/docs/changelog.rst | 17 +-
providers/presto/docs/commits.rst | 18 +-
providers/presto/docs/index.rst | 10 +-
providers/presto/provider.yaml | 3 +-
providers/presto/pyproject.toml | 8 +-
.../src/airflow/providers/presto/__init__.py | 2 +-
.../airflow/providers/presto/get_provider_info.py | 3 +-
.../src/airflow/providers/presto/hooks/presto.py | 9 +-
providers/qdrant/README.rst | 6 +-
providers/qdrant/docs/changelog.rst | 15 +
providers/qdrant/docs/commits.rst | 18 +-
providers/qdrant/docs/index.rst | 4 +-
providers/qdrant/provider.yaml | 3 +-
providers/qdrant/pyproject.toml | 8 +-
.../src/airflow/providers/qdrant/__init__.py | 2 +-
.../airflow/providers/qdrant/get_provider_info.py | 4 +-
providers/redis/README.rst | 6 +-
providers/redis/docs/changelog.rst | 18 +-
providers/redis/docs/commits.rst | 19 +-
providers/redis/docs/index.rst | 4 +-
providers/redis/provider.yaml | 3 +-
providers/redis/pyproject.toml | 8 +-
.../redis/src/airflow/providers/redis/__init__.py | 2 +-
.../airflow/providers/redis/get_provider_info.py | 3 +-
providers/salesforce/README.rst | 6 +-
providers/salesforce/docs/changelog.rst | 17 +-
providers/salesforce/docs/commits.rst | 18 +-
providers/salesforce/docs/index.rst | 4 +-
providers/salesforce/provider.yaml | 3 +-
providers/salesforce/pyproject.toml | 8 +-
.../src/airflow/providers/salesforce/__init__.py | 2 +-
.../providers/salesforce/get_provider_info.py | 3 +-
providers/samba/README.rst | 8 +-
providers/samba/docs/changelog.rst | 17 +-
providers/samba/docs/commits.rst | 18 +-
providers/samba/docs/index.rst | 10 +-
providers/samba/provider.yaml | 3 +-
providers/samba/pyproject.toml | 8 +-
.../samba/src/airflow/providers/samba/__init__.py | 2 +-
.../airflow/providers/samba/get_provider_info.py | 3 +-
.../tests/system/samba/example_gcs_to_samba.py | 1 +
providers/segment/README.rst | 6 +-
providers/segment/docs/changelog.rst | 17 +-
providers/segment/docs/commits.rst | 18 +-
providers/segment/docs/index.rst | 4 +-
providers/segment/provider.yaml | 3 +-
providers/segment/pyproject.toml | 8 +-
.../src/airflow/providers/segment/__init__.py | 2 +-
.../airflow/providers/segment/get_provider_info.py | 3 +-
providers/sendgrid/README.rst | 6 +-
providers/sendgrid/docs/changelog.rst | 21 +-
providers/sendgrid/docs/commits.rst | 389 +-
providers/sendgrid/docs/index.rst | 4 +-
providers/sendgrid/provider.yaml | 3 +-
providers/sendgrid/pyproject.toml | 8 +-
.../src/airflow/providers/sendgrid/__init__.py | 2 +-
.../providers/sendgrid/get_provider_info.py | 3 +-
providers/sftp/README.rst | 8 +-
providers/sftp/docs/changelog.rst | 24 +-
providers/sftp/docs/commits.rst | 21 +-
providers/sftp/docs/index.rst | 10 +-
providers/sftp/provider.yaml | 3 +-
providers/sftp/pyproject.toml | 8 +-
.../sftp/src/airflow/providers/sftp/__init__.py | 2 +-
.../airflow/providers/sftp/get_provider_info.py | 3 +-
providers/singularity/README.rst | 6 +-
providers/singularity/docs/changelog.rst | 22 +-
providers/singularity/docs/commits.rst | 492 +-
providers/singularity/docs/index.rst | 4 +-
providers/singularity/provider.yaml | 3 +-
providers/singularity/pyproject.toml | 8 +-
.../src/airflow/providers/singularity/__init__.py | 2 +-
.../providers/singularity/get_provider_info.py | 3 +-
providers/slack/README.rst | 8 +-
providers/slack/docs/changelog.rst | 17 +-
providers/slack/docs/commits.rst | 18 +-
providers/slack/docs/index.rst | 10 +-
providers/slack/provider.yaml | 3 +-
providers/slack/pyproject.toml | 8 +-
.../slack/src/airflow/providers/slack/__init__.py | 2 +-
.../airflow/providers/slack/get_provider_info.py | 3 +-
providers/smtp/README.rst | 6 +-
providers/smtp/docs/changelog.rst | 17 +-
providers/smtp/docs/commits.rst | 18 +-
providers/smtp/docs/index.rst | 4 +-
providers/smtp/provider.yaml | 3 +-
providers/smtp/pyproject.toml | 8 +-
.../smtp/src/airflow/providers/smtp/__init__.py | 2 +-
.../airflow/providers/smtp/get_provider_info.py | 3 +-
providers/snowflake/README.rst | 8 +-
providers/snowflake/docs/changelog.rst | 24 +-
providers/snowflake/docs/commits.rst | 21 +-
providers/snowflake/docs/index.rst | 10 +-
providers/snowflake/provider.yaml | 3 +-
providers/snowflake/pyproject.toml | 8 +-
.../src/airflow/providers/snowflake/__init__.py | 2 +-
.../providers/snowflake/get_provider_info.py | 3 +-
.../providers/snowflake/operators/snowflake.py | 19 +-
.../unit/snowflake/operators/test_snowflake.py | 63 +
providers/sqlite/README.rst | 8 +-
providers/sqlite/docs/changelog.rst | 22 +-
providers/sqlite/docs/commits.rst | 634 +-
providers/sqlite/docs/index.rst | 10 +-
providers/sqlite/provider.yaml | 3 +-
providers/sqlite/pyproject.toml | 8 +-
.../src/airflow/providers/sqlite/__init__.py | 2 +-
.../airflow/providers/sqlite/get_provider_info.py | 3 +-
providers/ssh/README.rst | 6 +-
providers/ssh/docs/changelog.rst | 27 +-
providers/ssh/docs/commits.rst | 803 +-
providers/ssh/docs/connections/ssh.rst | 2 +-
providers/ssh/docs/index.rst | 4 +-
providers/ssh/provider.yaml | 3 +-
providers/ssh/pyproject.toml | 8 +-
.../ssh/src/airflow/providers/ssh/__init__.py | 2 +-
.../src/airflow/providers/ssh/get_provider_info.py | 3 +-
providers/standard/README.rst | 6 +-
providers/standard/docs/changelog.rst | 51 +
providers/standard/docs/commits.rst | 47 +-
providers/standard/docs/index.rst | 4 +-
providers/standard/docs/operators/bash.rst | 18 +-
providers/standard/docs/operators/datetime.rst | 8 +-
providers/standard/docs/operators/python.rst | 40 +-
providers/standard/docs/sensors/bash.rst | 2 +-
providers/standard/docs/sensors/datetime.rst | 14 +-
.../standard/docs/sensors/external_task_sensor.rst | 8 +-
providers/standard/docs/sensors/file.rst | 4 +-
providers/standard/docs/sensors/python.rst | 4 +-
providers/standard/provider.yaml | 7 +-
providers/standard/pyproject.toml | 8 +-
.../src/airflow/providers/standard/__init__.py | 2 +-
.../providers/standard/get_provider_info.py | 6 +-
.../airflow/providers/standard/operators/bash.py | 59 +-
.../airflow/providers/standard/operators/branch.py | 105 +
.../providers/standard/operators/datetime.py | 2 +-
.../providers/standard/operators/latest_only.py | 2 +-
.../airflow/providers/standard/operators/python.py | 43 +-
.../airflow/providers/standard/operators/smooth.py | 38 +
.../providers/standard/operators/trigger_dagrun.py | 81 +-
.../providers/standard/operators/weekday.py | 6 +-
.../providers/standard/sensors/external_task.py | 7 +-
.../providers/standard/sensors/time_delta.py | 45 +-
.../airflow/providers/standard/sensors/weekday.py | 20 +-
.../standard/utils/python_virtualenv_script.jinja2 | 5 +
.../airflow/providers/standard/utils/skipmixin.py | 192 +
.../airflow/providers/standard}/utils/weekday.py | 0
.../tests/unit/standard/decorators/test_python.py | 16 +-
.../tests/unit/standard/operators/test_bash.py | 2 -
.../standard/operators/test_branch_operator.py | 349 +
.../tests/unit/standard/operators/test_datetime.py | 179 +-
.../operators/test_latest_only_operator.py | 155 +-
.../tests/unit/standard/operators/test_python.py | 366 +-
.../tests/unit/standard/operators/test_smooth.py | 29 +
.../unit/standard/operators/test_trigger_dagrun.py | 696 +
.../tests/unit/standard/operators/test_weekday.py | 120 +-
.../tests/unit/standard/sensors/test_python.py | 1 +
.../tests/unit/standard/sensors/test_time_delta.py | 88 +
.../tests/unit/standard/sensors/test_weekday.py | 24 +-
.../tests/unit/standard/utils/test_skipmixin.py | 299 +
.../tests/unit/standard/utils/test_weekday.py | 92 +
providers/tableau/README.rst | 6 +-
providers/tableau/docs/changelog.rst | 17 +-
providers/tableau/docs/commits.rst | 18 +-
providers/tableau/docs/index.rst | 4 +-
providers/tableau/provider.yaml | 3 +-
providers/tableau/pyproject.toml | 8 +-
.../src/airflow/providers/tableau/__init__.py | 2 +-
.../airflow/providers/tableau/get_provider_info.py | 3 +-
providers/telegram/README.rst | 6 +-
providers/telegram/docs/changelog.rst | 17 +-
providers/telegram/docs/commits.rst | 18 +-
providers/telegram/docs/index.rst | 4 +-
providers/telegram/provider.yaml | 3 +-
providers/telegram/pyproject.toml | 8 +-
.../src/airflow/providers/telegram/__init__.py | 2 +-
.../providers/telegram/get_provider_info.py | 3 +-
providers/teradata/README.rst | 8 +-
providers/teradata/docs/changelog.rst | 20 +
providers/teradata/docs/commits.rst | 19 +-
providers/teradata/docs/index.rst | 10 +-
providers/teradata/provider.yaml | 3 +-
providers/teradata/pyproject.toml | 8 +-
.../src/airflow/providers/teradata/__init__.py | 2 +-
.../providers/teradata/get_provider_info.py | 3 +-
providers/trino/README.rst | 8 +-
providers/trino/docs/changelog.rst | 23 +-
providers/trino/docs/commits.rst | 20 +-
providers/trino/docs/index.rst | 10 +-
providers/trino/provider.yaml | 3 +-
providers/trino/pyproject.toml | 8 +-
.../trino/src/airflow/providers/trino/__init__.py | 2 +-
.../airflow/providers/trino/get_provider_info.py | 3 +-
.../src/airflow/providers/trino/hooks/trino.py | 9 +-
providers/vertica/README.rst | 8 +-
providers/vertica/docs/changelog.rst | 29 +-
providers/vertica/docs/commits.rst | 579 +-
providers/vertica/docs/index.rst | 10 +-
providers/vertica/provider.yaml | 3 +-
providers/vertica/pyproject.toml | 8 +-
.../src/airflow/providers/vertica/__init__.py | 2 +-
.../airflow/providers/vertica/get_provider_info.py | 3 +-
providers/weaviate/README.rst | 6 +-
providers/weaviate/docs/changelog.rst | 17 +-
providers/weaviate/docs/commits.rst | 18 +-
providers/weaviate/docs/index.rst | 4 +-
providers/weaviate/provider.yaml | 3 +-
providers/weaviate/pyproject.toml | 8 +-
.../src/airflow/providers/weaviate/__init__.py | 2 +-
.../providers/weaviate/get_provider_info.py | 3 +-
.../airflow/providers/weaviate/hooks/__init__.py | 7 +-
.../providers/weaviate/operators/__init__.py | 5 +-
providers/yandex/README.rst | 25 +-
providers/yandex/docs/changelog.rst | 20 +-
providers/yandex/docs/commits.rst | 21 +-
providers/yandex/docs/index.rst | 32 +-
providers/yandex/provider.yaml | 3 +-
providers/yandex/pyproject.toml | 17 +-
.../src/airflow/providers/yandex/__init__.py | 2 +-
.../airflow/providers/yandex/get_provider_info.py | 6 +-
.../src/airflow/providers/yandex/links/yq.py | 11 +-
.../yandex/tests/unit/yandex/links/test_yq.py | 6 +-
providers/ydb/README.rst | 8 +-
providers/ydb/docs/changelog.rst | 28 +
providers/ydb/docs/commits.rst | 128 +-
providers/ydb/docs/index.rst | 10 +-
providers/ydb/provider.yaml | 3 +-
providers/ydb/pyproject.toml | 8 +-
.../ydb/src/airflow/providers/ydb/__init__.py | 2 +-
.../src/airflow/providers/ydb/get_provider_info.py | 4 +-
providers/zendesk/README.rst | 6 +-
providers/zendesk/docs/changelog.rst | 22 +-
providers/zendesk/docs/commits.rst | 482 +-
providers/zendesk/docs/index.rst | 4 +-
providers/zendesk/provider.yaml | 3 +-
providers/zendesk/pyproject.toml | 8 +-
.../src/airflow/providers/zendesk/__init__.py | 2 +-
.../airflow/providers/zendesk/get_provider_info.py | 3 +-
pyproject.toml | 419 +-
reproducible_build.yaml | 2 +
scripts/ci/docker-compose/devcontainer.env | 4 +-
scripts/ci/docker-compose/local.yml | 20 +-
.../docker-compose/providers-and-tests-sources.yml | 14 +-
scripts/ci/docker-compose/remove-sources.yml | 6 +-
scripts/ci/docker-compose/tests-sources.yml | 7 +-
scripts/ci/dockerfiles/apache-rat/Dockerfile | 21 +-
.../ci/dockerfiles/apache-rat/build_and_push.sh | 13 +-
scripts/ci/install_breeze.sh | 2 +-
scripts/ci/kubernetes/k8s_requirements.txt | 3 +-
.../pre_commit/base_operator_partial_arguments.py | 214 -
.../check_airflow_bug_report_template.py | 8 +-
.../check_base_operator_partial_arguments.py | 220 +
scripts/ci/pre_commit/check_deferrable_default.py | 2 +-
scripts/ci/pre_commit/check_extra_packages_ref.py | 6 +-
scripts/ci/pre_commit/check_google_re2_imports.py | 93 -
.../ci/pre_commit/check_imports_in_providers.py | 7 +-
.../pre_commit/check_init_decorator_arguments.py | 261 +
scripts/ci/pre_commit/check_integrations_list.py | 8 +-
scripts/ci/pre_commit/check_license.py | 2 +-
.../ci/pre_commit/check_order_dockerfile_extras.py | 8 +-
scripts/ci/pre_commit/check_pre_commit_hooks.py | 6 +-
scripts/ci/pre_commit/check_provider_docs.py | 18 +-
.../check_providers_subpackages_all_have_init.py | 5 +-
.../pre_commit/check_pyproject_toml_consistency.py | 7 -
scripts/ci/pre_commit/check_revision_heads_map.py | 96 +
.../check_system_tests_hidden_in_index.py | 12 +-
.../check_template_context_variable_in_sync.py | 201 +
.../ci/pre_commit/check_tests_in_right_folders.py | 26 +-
.../ci/pre_commit/check_ti_vs_tis_attributes.py | 8 +-
scripts/ci/pre_commit/common_precommit_utils.py | 41 +-
scripts/ci/pre_commit/compile_lint_ui.py | 41 +
scripts/ci/pre_commit/compile_ui_assets.py | 13 +-
scripts/ci/pre_commit/compile_ui_assets_dev.py | 13 +-
scripts/ci/pre_commit/compile_www_assets.py | 96 -
scripts/ci/pre_commit/compile_www_assets_dev.py | 65 -
scripts/ci/pre_commit/generate_airflow_diagrams.py | 8 +-
.../ci/pre_commit/generate_volumes_for_sources.py | 6 +-
scripts/ci/pre_commit/json_schema.py | 177 -
scripts/ci/pre_commit/lint_json_schema.py | 179 +
scripts/ci/pre_commit/lint_ui.py | 37 -
scripts/ci/pre_commit/lint_www.py | 34 -
scripts/ci/pre_commit/mypy.py | 6 +-
scripts/ci/pre_commit/mypy_folder.py | 19 +-
scripts/ci/pre_commit/supported_versions.py | 2 +-
scripts/ci/pre_commit/sync_init_decorator.py | 254 -
scripts/ci/pre_commit/template_context_key_sync.py | 194 -
scripts/ci/pre_commit/update_breeze_config_hash.py | 9 +-
scripts/ci/pre_commit/update_chart_dependencies.py | 6 +-
scripts/ci/pre_commit/update_example_dags_paths.py | 11 +-
.../pre_commit/update_installers_and_pre_commit.py | 25 +-
.../ci/pre_commit/update_providers_dependencies.py | 38 +-
scripts/ci/pre_commit/update_source_date_epoch.py | 8 +-
scripts/ci/pre_commit/update_versions.py | 4 +-
scripts/ci/pre_commit/version_heads_map.py | 98 -
scripts/ci/testing/run_unit_tests.sh | 4 +-
scripts/cov/other_coverage.py | 101 +-
scripts/cov/restapi_coverage.py | 11 +-
scripts/docker/entrypoint_ci.sh | 25 +-
scripts/docker/entrypoint_prod.sh | 18 +-
..._package_specs.py => get_distribution_specs.py} | 0
scripts/docker/install_airflow.sh | 8 +-
.../docker/install_from_docker_context_files.sh | 73 +-
scripts/docker/install_mssql.sh | 14 +-
scripts/in_container/check_environment.sh | 7 +-
scripts/in_container/configure_environment.sh | 2 +-
scripts/in_container/in_container_utils.py | 7 +
.../in_container/install_airflow_and_providers.py | 214 +-
.../in_container/install_airflow_python_client.py | 35 +-
.../install_development_dependencies.py | 11 +-
scripts/in_container/remove_arm_packages.py | 5 +-
scripts/in_container/run_generate_constraints.py | 126 +-
scripts/in_container/run_migration_reference.py | 17 +-
.../run_prepare_airflow_distributions.py | 156 +
.../in_container/run_prepare_airflow_packages.py | 138 -
scripts/in_container/run_prepare_er_diagram.py | 8 +-
.../in_container/run_provider_yaml_files_check.py | 55 +-
.../in_container/run_update_fastapi_api_spec.py | 26 +-
scripts/in_container/verify_providers.py | 28 +-
scripts/tools/setup_breeze | 2 +-
{task_sdk => task-sdk}/README.md | 0
task-sdk/dev/datamodel_code_formatter.py | 144 +
task-sdk/dev/generate_task_sdk_models.py | 95 +
task-sdk/pyproject.toml | 182 +
task-sdk/src/airflow/__init__.py | 18 +
task-sdk/src/airflow/sdk/__init__.py | 106 +
.../src/airflow/sdk/api}/__init__.py | 0
task-sdk/src/airflow/sdk/api/client.py | 632 +
.../src/airflow/sdk/api/datamodels}/__init__.py | 0
.../src/airflow/sdk/api/datamodels/_generated.py | 444 +
.../src/airflow/sdk/api/datamodels/activities.py | 0
.../src/airflow/sdk/definitions}/__init__.py | 0
.../airflow/sdk/definitions/_internal}/__init__.py | 0
.../sdk/definitions/_internal/abstractoperator.py | 499 +
.../sdk/definitions/_internal/contextmanager.py | 0
.../definitions/_internal/dag_parsing_context.py | 0
.../sdk/definitions/_internal/decorators.py | 0
.../sdk/definitions/_internal/expandinput.py | 0
.../airflow/sdk/definitions/_internal/mixins.py | 0
.../src/airflow/sdk/definitions/_internal/node.py | 221 +
.../airflow/sdk/definitions/_internal/templater.py | 0
.../src/airflow/sdk/definitions/_internal/types.py | 87 +
.../src/airflow/sdk/definitions/asset/__init__.py | 664 +
.../airflow/sdk/definitions/asset/decorators.py | 225 +
.../src/airflow/sdk/definitions/asset/metadata.py | 36 +
.../src/airflow/sdk/definitions/baseoperator.py | 1858 ++
.../airflow/sdk/definitions/baseoperatorlink.py | 66 +
task-sdk/src/airflow/sdk/definitions/connection.py | 100 +
.../src/airflow/sdk/definitions/context.py | 0
task-sdk/src/airflow/sdk/definitions/dag.py | 1143 +
.../src/airflow/sdk/definitions/edges.py | 0
.../src/airflow/sdk/definitions/macros.py | 0
.../src/airflow/sdk/definitions/mappedoperator.py | 837 +
.../src/airflow/sdk/definitions/param.py | 0
task-sdk/src/airflow/sdk/definitions/taskgroup.py | 691 +
.../src/airflow/sdk/definitions/template.py | 0
task-sdk/src/airflow/sdk/definitions/variable.py | 57 +
task-sdk/src/airflow/sdk/definitions/xcom_arg.py | 626 +
task-sdk/src/airflow/sdk/exceptions.py | 63 +
.../src/airflow/sdk/execution_time}/__init__.py | 0
task-sdk/src/airflow/sdk/execution_time/comms.py | 464 +
task-sdk/src/airflow/sdk/execution_time/context.py | 563 +
.../airflow/sdk/execution_time/execute_workload.py | 90 +
.../airflow/sdk/execution_time/lazy_sequence.py | 0
.../airflow/sdk/execution_time/secrets_masker.py | 424 +
.../src/airflow/sdk/execution_time/supervisor.py | 1153 ++
.../src/airflow/sdk/execution_time/task_runner.py | 956 +
task-sdk/src/airflow/sdk/execution_time/xcom.py | 294 +
task-sdk/src/airflow/sdk/log.py | 517 +
{task_sdk => task-sdk}/src/airflow/sdk/py.typed | 0
task-sdk/src/airflow/sdk/types.py | 109 +
.../api_connexion => task-sdk/tests}/__init__.py | 0
task-sdk/tests/conftest.py | 409 +
task-sdk/tests/task_sdk/__init__.py | 45 +
.../tests/task_sdk/api}/__init__.py | 0
task-sdk/tests/task_sdk/api/test_client.py | 815 +
.../tests/task_sdk}/dags/dag_parsing_context.py | 0
task-sdk/tests/task_sdk/dags/super_basic.py | 29 +
.../task_sdk/dags/super_basic_deferred_run.py | 37 +
.../tests/task_sdk}/dags/super_basic_run.py | 0
.../tests/task_sdk/definitions}/__init__.py | 0
.../task_sdk/definitions/_internal}/__init__.py | 0
.../definitions/_internal/test_templater.py | 0
.../tests/task_sdk}/definitions/conftest.py | 0
task-sdk/tests/task_sdk/definitions/test_asset.py | 414 +
.../task_sdk/definitions/test_asset_decorators.py | 326 +
.../task_sdk/definitions/test_baseoperator.py | 900 +
.../tests/task_sdk/definitions/test_connections.py | 150 +
.../tests/task_sdk}/definitions/test_context.py | 0
task-sdk/tests/task_sdk/definitions/test_dag.py | 488 +
.../tests/task_sdk}/definitions/test_macros.py | 0
.../task_sdk}/definitions/test_mappedoperator.py | 0
.../tests/task_sdk}/definitions/test_mixins.py | 0
.../tests/task_sdk}/definitions/test_param.py | 0
.../task_sdk/definitions/test_secrets_masker.py | 484 +
.../tests/task_sdk}/definitions/test_template.py | 0
.../tests/task_sdk/definitions/test_variables.py | 112 +
.../tests/task_sdk/definitions/test_xcom_arg.py | 361 +
.../tests/task_sdk/execution_time}/__init__.py | 0
.../tests/task_sdk}/execution_time/conftest.py | 0
.../tests/task_sdk/execution_time/test_context.py | 487 +
.../task_sdk/execution_time/test_supervisor.py | 1401 ++
.../task_sdk/execution_time/test_task_runner.py | 2198 ++
.../tests/task_sdk/log}/test_log.py | 0
task_sdk/__init__.py | 16 -
task_sdk/dev/generate_models.py | 99 -
task_sdk/pyproject.toml | 143 -
task_sdk/src/airflow/__init__.py | 21 -
task_sdk/src/airflow/sdk/__init__.py | 97 -
task_sdk/src/airflow/sdk/api/__init__.py | 16 -
task_sdk/src/airflow/sdk/api/client.py | 529 -
.../src/airflow/sdk/api/datamodels/__init__.py | 16 -
.../src/airflow/sdk/api/datamodels/_generated.py | 375 -
task_sdk/src/airflow/sdk/definitions/__init__.py | 16 -
.../airflow/sdk/definitions/_internal/__init__.py | 16 -
.../sdk/definitions/_internal/abstractoperator.py | 492 -
.../src/airflow/sdk/definitions/_internal/node.py | 222 -
.../src/airflow/sdk/definitions/_internal/types.py | 75 -
.../src/airflow/sdk/definitions/asset/__init__.py | 703 -
.../airflow/sdk/definitions/asset/decorators.py | 216 -
.../src/airflow/sdk/definitions/asset/metadata.py | 36 -
.../src/airflow/sdk/definitions/baseoperator.py | 1527 --
task_sdk/src/airflow/sdk/definitions/connection.py | 77 -
task_sdk/src/airflow/sdk/definitions/dag.py | 1120 -
.../src/airflow/sdk/definitions/mappedoperator.py | 832 -
task_sdk/src/airflow/sdk/definitions/taskgroup.py | 691 -
task_sdk/src/airflow/sdk/definitions/variable.py | 54 -
task_sdk/src/airflow/sdk/definitions/xcom_arg.py | 626 -
task_sdk/src/airflow/sdk/exceptions.py | 57 -
.../src/airflow/sdk/execution_time/__init__.py | 17 -
task_sdk/src/airflow/sdk/execution_time/comms.py | 405 -
task_sdk/src/airflow/sdk/execution_time/context.py | 411 -
.../airflow/sdk/execution_time/execute_workload.py | 84 -
.../airflow/sdk/execution_time/secrets_masker.py | 425 -
.../src/airflow/sdk/execution_time/supervisor.py | 1020 -
.../src/airflow/sdk/execution_time/task_runner.py | 829 -
task_sdk/src/airflow/sdk/log.py | 499 -
task_sdk/src/airflow/sdk/types.py | 105 -
task_sdk/tests/__init__.py | 16 -
task_sdk/tests/api/__init__.py | 16 -
task_sdk/tests/api/test_client.py | 671 -
task_sdk/tests/conftest.py | 397 -
task_sdk/tests/dags/super_basic.py | 29 -
task_sdk/tests/dags/super_basic_deferred_run.py | 37 -
task_sdk/tests/definitions/__init__.py | 16 -
task_sdk/tests/definitions/_internal/__init__.py | 16 -
task_sdk/tests/definitions/test_asset.py | 564 -
.../tests/definitions/test_asset_decorators.py | 239 -
task_sdk/tests/definitions/test_baseoperator.py | 623 -
task_sdk/tests/definitions/test_dag.py | 479 -
task_sdk/tests/definitions/test_secrets_masker.py | 484 -
task_sdk/tests/definitions/test_xcom_arg.py | 359 -
task_sdk/tests/execution_time/__init__.py | 16 -
task_sdk/tests/execution_time/test_context.py | 412 -
task_sdk/tests/execution_time/test_supervisor.py | 1346 --
task_sdk/tests/execution_time/test_task_runner.py | 1725 --
tests/__init__.py | 22 -
tests/always/__init__.py | 16 -
tests/always/test_connection.py | 836 -
tests/always/test_example_dags.py | 224 -
tests/always/test_project_structure.py | 657 -
tests/always/test_providers_manager.py | 561 -
tests/api/__init__.py | 16 -
tests/api/common/__init__.py | 16 -
tests/api_fastapi/__init__.py | 16 -
tests/api_fastapi/common/__init__.py | 16 -
tests/api_fastapi/conftest.py | 158 -
tests/api_fastapi/core_api/__init__.py | 16 -
tests/api_fastapi/core_api/routes/__init__.py | 16 -
.../api_fastapi/core_api/routes/public/__init__.py | 16 -
.../core_api/routes/public/test_assets.py | 1110 -
.../core_api/routes/public/test_backfills.py | 743 -
.../core_api/routes/public/test_config.py | 476 -
.../core_api/routes/public/test_connections.py | 1016 -
.../core_api/routes/public/test_dag_parsing.py | 74 -
.../core_api/routes/public/test_dag_report.py | 126 -
.../core_api/routes/public/test_dag_run.py | 1474 --
.../core_api/routes/public/test_dag_sources.py | 155 -
.../core_api/routes/public/test_dag_stats.py | 412 -
.../core_api/routes/public/test_dag_tags.py | 251 -
.../core_api/routes/public/test_dag_versions.py | 300 -
.../core_api/routes/public/test_dag_warning.py | 85 -
.../core_api/routes/public/test_dags.py | 512 -
.../core_api/routes/public/test_event_logs.py | 326 -
.../core_api/routes/public/test_extra_links.py | 268 -
.../core_api/routes/public/test_import_error.py | 227 -
.../api_fastapi/core_api/routes/public/test_job.py | 165 -
.../api_fastapi/core_api/routes/public/test_log.py | 377 -
.../core_api/routes/public/test_login.py | 54 -
.../core_api/routes/public/test_monitor.py | 157 -
.../core_api/routes/public/test_plugins.py | 64 -
.../core_api/routes/public/test_pools.py | 761 -
.../core_api/routes/public/test_providers.py | 73 -
.../core_api/routes/public/test_task_instances.py | 3776 ----
.../core_api/routes/public/test_tasks.py | 542 -
.../core_api/routes/public/test_variables.py | 997 -
.../core_api/routes/public/test_version.py | 51 -
.../core_api/routes/public/test_xcom.py | 625 -
tests/api_fastapi/core_api/routes/test_routes.py | 53 -
tests/api_fastapi/core_api/routes/ui/__init__.py | 16 -
.../api_fastapi/core_api/routes/ui/test_assets.py | 64 -
.../core_api/routes/ui/test_backfills.py | 152 -
.../api_fastapi/core_api/routes/ui/test_config.py | 117 -
tests/api_fastapi/core_api/routes/ui/test_dags.py | 108 -
.../core_api/routes/ui/test_dashboard.py | 178 -
.../core_api/routes/ui/test_dependencies.py | 223 -
tests/api_fastapi/core_api/routes/ui/test_grid.py | 977 -
.../core_api/routes/ui/test_structure.py | 502 -
tests/api_fastapi/core_api/test_security.py | 105 -
tests/api_fastapi/execution_api/__init__.py | 16 -
tests/api_fastapi/execution_api/conftest.py | 27 -
tests/api_fastapi/execution_api/routes/__init__.py | 16 -
.../execution_api/routes/test_connections.py | 107 -
.../execution_api/routes/test_health.py | 28 -
.../execution_api/routes/test_task_instances.py | 1109 -
.../execution_api/routes/test_variables.py | 189 -
.../api_fastapi/execution_api/routes/test_xcoms.py | 236 -
tests/api_fastapi/execution_api/test_app.py | 37 -
tests/assets/__init__.py | 16 -
tests/assets/test_manager.py | 191 -
tests/auth/__init__.py | 16 -
tests/auth/managers/__init__.py | 16 -
tests/auth/managers/simple/__init__.py | 16 -
tests/auth/managers/simple/conftest.py | 45 -
tests/auth/managers/simple/routes/__init__.py | 16 -
tests/auth/managers/simple/routes/test_login.py | 82 -
tests/auth/managers/simple/services/__init__.py | 16 -
tests/auth/managers/simple/services/test_login.py | 82 -
.../managers/simple/test_simple_auth_manager.py | 194 -
tests/auth/managers/test_base_auth_manager.py | 311 -
tests/callbacks/__init__.py | 16 -
tests/charts/__init__.py | 16 -
tests/charts/helm_template_generator.py | 169 -
tests/charts/log_groomer.py | 276 -
tests/cli/__init__.py | 17 -
tests/cli/commands/__init__.py | 17 -
tests/cli/commands/local_commands/__init__.py | 16 -
.../local_commands/test_api_server_command.py | 182 -
.../cli/commands/local_commands/test_db_command.py | 629 -
.../local_commands/test_plugins_command.py | 140 -
tests/cli/commands/remote_commands/__init__.py | 16 -
.../remote_commands/test_config_command.py | 449 -
.../remote_commands/test_connection_command.py | 995 -
.../commands/remote_commands/test_dag_command.py | 812 -
.../commands/remote_commands/test_task_command.py | 1094 -
tests/cli/test_cli_parser.py | 531 -
tests/config_templates/__init__.py | 16 -
tests/config_templates/empty.cfg | 17 -
tests/conftest.py | 175 -
tests/core/__init__.py | 16 -
tests/core/test_configuration.py | 1823 --
tests/core/test_logging_config.py | 344 -
tests/core/test_sentry.py | 197 -
tests/core/test_sqlalchemy_config.py | 111 -
tests/core/test_stats.py | 548 -
tests/dag_processing/__init__.py | 16 -
tests/dag_processing/bundles/__init__.py | 16 -
tests/dag_processing/bundles/test_base.py | 271 -
.../bundles/test_dag_bundle_manager.py | 198 -
tests/dag_processing/bundles/test_git.py | 585 -
tests/dag_processing/test_collection.py | 572 -
tests/dag_processing/test_manager.py | 1085 -
tests/dag_processing/test_processor.py | 312 -
tests/dags/__init__.py | 16 -
tests/dags/subdir1/__init__.py | 16 -
tests/dags/subdir2/__init__.py | 16 -
tests/dags/subdir2/subdir3/__init__.py | 16 -
tests/dags/test_dags_folder.py | 38 -
.../test_external_task_sensor_check_existense.py | 43 -
tests/dags/test_imports.py | 47 -
tests/dags/test_invalid_param2.py | 45 -
tests/dags/test_invalid_param3.py | 45 -
tests/dags/test_invalid_param4.py | 45 -
tests/dags/test_logging_in_dag.py | 45 -
tests/dags/test_valid_param.py | 49 -
tests/dags/test_valid_param2.py | 47 -
tests/dags/test_zip/file_no_airflow_dag.py | 16 -
tests/dags/test_zip/test_zip_module/__init__.py | 16 -
tests/dags_corrupted/__init__.py | 16 -
tests/dags_with_system_exit/__init__.py | 16 -
tests/datasets/__init__.py | 16 -
tests/decorators/__init__.py | 16 -
tests/decorators/test_bash.py | 523 -
tests/decorators/test_branch_external_python.py | 96 -
tests/decorators/test_branch_python.py | 84 -
tests/decorators/test_branch_virtualenv.py | 103 -
tests/decorators/test_mapped.py | 101 -
tests/decorators/test_sensor.py | 222 -
tests/decorators/test_short_circuit.py | 105 -
tests/executors/__init__.py | 17 -
tests/executors/test_executor_loader.py | 372 -
tests/hooks/__init__.py | 17 -
tests/hooks/test_base.py | 34 -
tests/integration/__init__.py | 16 -
tests/integration/cli/__init__.py | 16 -
tests/integration/cli/commands/__init__.py | 16 -
tests/integration/executors/__init__.py | 16 -
tests/integration/security/__init__.py | 16 -
tests/io/__init__.py | 16 -
tests/jobs/__init__.py | 17 -
tests/jobs/test_base_job.py | 284 -
tests/jobs/test_local_task_job.py | 1027 -
tests/jobs/test_scheduler_job.py | 6406 ------
tests/jobs/test_triggerer_job.py | 589 -
tests/lineage/__init__.py | 17 -
tests/lineage/test_lineage.py | 203 -
tests/listeners/__init__.py | 17 -
tests/listeners/test_asset_listener.py | 65 -
tests/listeners/test_listeners.py | 193 -
tests/macros/__init__.py | 17 -
tests/models/test_asset.py | 78 -
tests/models/test_backfill.py | 410 -
tests/models/test_baseoperator.py | 532 -
tests/models/test_baseoperatormeta.py | 224 -
tests/models/test_cleartasks.py | 751 -
tests/models/test_dag.py | 3495 ----
tests/models/test_dagbag.py | 940 -
tests/models/test_dagcode.py | 213 -
tests/models/test_dagrun.py | 2537 ---
tests/models/test_dagwarning.py | 74 -
tests/models/test_mappedoperator.py | 1374 --
tests/models/test_serialized_dag.py | 373 -
tests/models/test_skipmixin.py | 202 -
tests/models/test_taskinstance.py | 4996 -----
tests/models/test_trigger.py | 539 -
tests/models/test_variable.py | 330 -
tests/models/test_xcom.py | 403 -
tests/notifications/__init__.py | 16 -
tests/operators/__init__.py | 17 -
tests/operators/test_branch_operator.py | 270 -
tests/operators/test_trigger_dagrun.py | 783 -
tests/plugins/__init__.py | 17 -
tests/plugins/priority_weight_strategy.py | 68 -
tests/plugins/test_plugin.py | 136 -
tests/plugins/test_plugins_manager.py | 344 -
tests/secrets/__init__.py | 16 -
tests/security/__init__.py | 17 -
tests/sensors/__init__.py | 17 -
tests/sensors/test_base.py | 1408 --
tests/sensors/test_external_task_sensor.py | 1736 --
tests/serialization/__init__.py | 17 -
tests/serialization/serializers/__init__.py | 17 -
tests/serialization/test_dag_serialization.py | 2990 ---
tests/serialization/test_serde.py | 446 -
tests/serialization/test_serialized_objects.py | 421 -
tests/system/__init__.py | 17 -
tests/system/core/__init__.py | 16 -
tests/system/example_empty.py | 48 -
tests/task/__init__.py | 17 -
tests/task/test_standard_task_runner.py | 547 -
tests/testconfig/__init__.py | 16 -
tests/testconfig/conf/__init__.py | 16 -
tests/ti_deps/__init__.py | 17 -
tests/ti_deps/contexts/__init__.py | 17 -
tests/ti_deps/deps/__init__.py | 17 -
.../deps/test_not_previously_skipped_dep.py | 163 -
tests/ti_deps/deps/test_prev_dagrun_dep.py | 330 -
tests/ti_deps/deps/test_ready_to_reschedule_dep.py | 181 -
tests/ti_deps/deps/test_trigger_rule_dep.py | 1648 --
tests/timetables/__init__.py | 16 -
tests/timetables/test_assets_timetable.py | 342 -
tests/timetables/test_interval_timetable.py | 602 -
tests/timetables/test_trigger_timetable.py | 568 -
tests/timetables/test_workday_timetable.py | 107 -
tests/utils/__init__.py | 17 -
tests/utils/log/__init__.py | 17 -
tests/utils/log/test_log_reader.py | 286 -
tests/utils/test_cli_util.py | 290 -
tests/utils/test_dag_cycle.py | 168 -
tests/utils/test_db.py | 269 -
tests/utils/test_db_cleanup.py | 616 -
tests/utils/test_db_manager.py | 138 -
tests/utils/test_dot_renderer.py | 249 -
tests/utils/test_email.py | 401 -
tests/utils/test_file.py | 265 -
tests/utils/test_helpers.py | 377 -
tests/utils/test_json.py | 136 -
tests/utils/test_log_handlers.py | 847 -
tests/utils/test_logging_mixin.py | 221 -
tests/utils/test_net.py | 59 -
tests/utils/test_operator_helpers.py | 196 -
tests/utils/test_orm_event_handlers.py | 37 -
tests/utils/test_process_utils.py | 244 -
tests/utils/test_retries.py | 101 -
tests/utils/test_serve_logs.py | 238 -
tests/utils/test_sqlalchemy.py | 334 -
tests/utils/test_state.py | 78 -
tests/utils/test_task_group.py | 1775 --
tests/utils/test_weekday.py | 92 -
4409 files changed, 306722 insertions(+), 291589 deletions(-)
delete mode 100644 .github/workflows/test-provider-packages.yml
create mode 100644 .github/workflows/test-providers.yml
rename {3rd-party-licenses => airflow-core/3rd-party-licenses}/LICENSE-bootstrap.txt (100%)
rename {3rd-party-licenses => airflow-core/3rd-party-licenses}/LICENSE-bootstrap3-typeahead.txt (100%)
rename {3rd-party-licenses => airflow-core/3rd-party-licenses}/LICENSE-d3-shape.txt (100%)
rename {3rd-party-licenses => airflow-core/3rd-party-licenses}/LICENSE-d3-tip.txt (100%)
rename {3rd-party-licenses => airflow-core/3rd-party-licenses}/LICENSE-d3js.txt (100%)
rename {3rd-party-licenses => airflow-core/3rd-party-licenses}/LICENSE-dagre-d3.txt (100%)
rename {3rd-party-licenses => airflow-core/3rd-party-licenses}/LICENSE-datatables.txt (100%)
rename {3rd-party-licenses => airflow-core/3rd-party-licenses}/LICENSE-elasticmock.txt (100%)
rename {3rd-party-licenses => airflow-core/3rd-party-licenses}/LICENSE-eonasdan-bootstrap-datetimepicker.txt (100%)
rename {3rd-party-licenses => airflow-core/3rd-party-licenses}/LICENSE-flask-kerberos.txt (100%)
rename {3rd-party-licenses => airflow-core/3rd-party-licenses}/LICENSE-hue.txt (100%)
rename {3rd-party-licenses => airflow-core/3rd-party-licenses}/LICENSE-jqclock.txt (100%)
rename {3rd-party-licenses => airflow-core/3rd-party-licenses}/LICENSE-jquery.txt (100%)
rename {3rd-party-licenses => airflow-core/3rd-party-licenses}/LICENSE-moment.txt (100%)
rename {3rd-party-licenses => airflow-core/3rd-party-licenses}/LICENSE-normalize.txt (100%)
rename {3rd-party-licenses => airflow-core/3rd-party-licenses}/LICENSE-pytest-capture-warnings.txt (100%)
rename {3rd-party-licenses => airflow-core/3rd-party-licenses}/LICENSE-reproducible.txt (100%)
create mode 100644 airflow-core/LICENSE
rename NOTICE => airflow-core/NOTICE (100%)
create mode 100644 airflow-core/README.md
rename {docs/apache-airflow => airflow-core/docs}/.gitignore (100%)
create mode 100644 airflow-core/docs/administration-and-deployment/cluster-policies.rst
create mode 100644 airflow-core/docs/administration-and-deployment/dag-serialization.rst
create mode 100644 airflow-core/docs/administration-and-deployment/dagfile-processing.rst
create mode 100644 airflow-core/docs/administration-and-deployment/index.rst
rename {docs/apache-airflow => airflow-core/docs}/administration-and-deployment/kubernetes.rst (100%)
rename {docs/apache-airflow => airflow-core/docs}/administration-and-deployment/lineage.rst (100%)
create mode 100644 airflow-core/docs/administration-and-deployment/listeners.rst
rename {docs/apache-airflow => airflow-core/docs}/administration-and-deployment/logging-monitoring/advanced-logging-configuration.rst (100%)
create mode 100644 airflow-core/docs/administration-and-deployment/logging-monitoring/callbacks.rst
rename {docs/apache-airflow => airflow-core/docs}/administration-and-deployment/logging-monitoring/check-health.rst (100%)
rename {docs/apache-airflow => airflow-core/docs}/administration-and-deployment/logging-monitoring/errors.rst (100%)
create mode 100644 airflow-core/docs/administration-and-deployment/logging-monitoring/index.rst
rename {docs/apache-airflow => airflow-core/docs}/administration-and-deployment/logging-monitoring/logging-architecture.rst (100%)
rename {docs/apache-airflow => airflow-core/docs}/administration-and-deployment/logging-monitoring/logging-tasks.rst (100%)
create mode 100644 airflow-core/docs/administration-and-deployment/logging-monitoring/metrics.rst
rename {docs/apache-airflow => airflow-core/docs}/administration-and-deployment/logging-monitoring/traces.rst (100%)
create mode 100644 airflow-core/docs/administration-and-deployment/modules_management.rst
create mode 100644 airflow-core/docs/administration-and-deployment/plugins.rst
rename {docs/apache-airflow => airflow-core/docs}/administration-and-deployment/pools.rst (100%)
create mode 100644 airflow-core/docs/administration-and-deployment/priority-weight.rst
create mode 100644 airflow-core/docs/administration-and-deployment/production-deployment.rst
create mode 100644 airflow-core/docs/administration-and-deployment/scheduler.rst
rename {docs/apache-airflow => airflow-core/docs}/administration-and-deployment/web-stack.rst (100%)
rename {docs/apache-airflow => airflow-core/docs}/authoring-and-scheduling/connections.rst (100%)
create mode 100644 airflow-core/docs/authoring-and-scheduling/cron.rst
create mode 100644 airflow-core/docs/authoring-and-scheduling/datasets.rst
create mode 100644 airflow-core/docs/authoring-and-scheduling/deferring.rst
create mode 100644 airflow-core/docs/authoring-and-scheduling/dynamic-task-mapping.rst
create mode 100644 airflow-core/docs/authoring-and-scheduling/event-scheduling.rst
create mode 100644 airflow-core/docs/authoring-and-scheduling/index.rst
rename {docs/apache-airflow => airflow-core/docs}/authoring-and-scheduling/serializers.rst (100%)
create mode 100644 airflow-core/docs/authoring-and-scheduling/timetable.rst
create mode 100644 airflow-core/docs/authoring-and-scheduling/timezone.rst
create mode 100644 airflow-core/docs/best-practices.rst
create mode 100644 airflow-core/docs/cli-and-env-variables-ref.rst
create mode 100644 airflow-core/docs/configurations-ref.rst
create mode 100644 airflow-core/docs/core-concepts/auth-manager/index.rst
create mode 100644 airflow-core/docs/core-concepts/auth-manager/simple.rst
rename {docs/apache-airflow => airflow-core/docs}/core-concepts/backfill.rst (100%)
create mode 100644 airflow-core/docs/core-concepts/dag-run.rst
create mode 100644 airflow-core/docs/core-concepts/dags.rst
create mode 100644 airflow-core/docs/core-concepts/debug.rst
create mode 100644 airflow-core/docs/core-concepts/executor/index.rst
rename {docs/apache-airflow => airflow-core/docs}/core-concepts/executor/local.rst (100%)
rename {docs/apache-airflow => airflow-core/docs}/core-concepts/executor/sequential.rst (100%)
rename {docs/apache-airflow => airflow-core/docs}/core-concepts/index.rst (100%)
create mode 100644 airflow-core/docs/core-concepts/objectstorage.rst
create mode 100644 airflow-core/docs/core-concepts/operators.rst
create mode 100644 airflow-core/docs/core-concepts/overview.rst
create mode 100644 airflow-core/docs/core-concepts/params.rst
rename {docs/apache-airflow => airflow-core/docs}/core-concepts/sensors.rst (100%)
create mode 100644 airflow-core/docs/core-concepts/taskflow.rst
create mode 100644 airflow-core/docs/core-concepts/tasks.rst
rename {docs/apache-airflow => airflow-core/docs}/core-concepts/variables.rst (100%)
create mode 100644 airflow-core/docs/core-concepts/xcoms.rst
rename {docs/apache-airflow => airflow-core/docs}/database-erd-ref.rst (100%)
rename {docs/apache-airflow => airflow-core/docs}/empty_plugin/README.md (100%)
create mode 100644 airflow-core/docs/empty_plugin/empty_plugin.py
rename {docs/apache-airflow => airflow-core/docs}/empty_plugin/templates/empty_plugin/index.html (100%)
create mode 100644 airflow-core/docs/extra-packages-ref.rst
create mode 100644 airflow-core/docs/faq.rst
create mode 100644 airflow-core/docs/howto/add-dag-tags.rst
create mode 100644 airflow-core/docs/howto/add-owner-links.rst
create mode 100644 airflow-core/docs/howto/connection.rst
create mode 100644 airflow-core/docs/howto/create-custom-decorator.rst
rename {docs/apache-airflow => airflow-core/docs}/howto/custom-operator.rst (100%)
rename {docs/apache-airflow => airflow-core/docs}/howto/custom-view-plugin.rst (100%)
rename {docs/apache-airflow => airflow-core/docs}/howto/customize-ui.rst (100%)
create mode 100644 airflow-core/docs/howto/define-extra-link.rst
rename {docs/apache-airflow => airflow-core/docs}/howto/docker-compose/airflow.sh (100%)
create mode 100644 airflow-core/docs/howto/docker-compose/docker-compose.yaml
create mode 100644 airflow-core/docs/howto/docker-compose/index.rst
create mode 100644 airflow-core/docs/howto/dynamic-dag-generation.rst
rename {docs/apache-airflow => airflow-core/docs}/howto/email-config.rst (100%)
rename {docs/apache-airflow => airflow-core/docs}/howto/export-more-env-vars.rst (100%)
rename {docs/apache-airflow => airflow-core/docs}/howto/index.rst (100%)
create mode 100644 airflow-core/docs/howto/listener-plugin.rst
rename {docs/apache-airflow => airflow-core/docs}/howto/notifications.rst (100%)
rename {docs/apache-airflow => airflow-core/docs}/howto/operator/index.rst (100%)
create mode 100644 airflow-core/docs/howto/run-behind-proxy.rst
rename {docs/apache-airflow => airflow-core/docs}/howto/run-with-systemd.rst (100%)
rename {docs/apache-airflow => airflow-core/docs}/howto/set-config.rst (100%)
create mode 100644 airflow-core/docs/howto/set-up-database.rst
rename {docs/apache-airflow => airflow-core/docs}/howto/setup-and-teardown.rst (100%)
create mode 100644 airflow-core/docs/howto/timetable.rst
create mode 100644 airflow-core/docs/howto/upgrading-from-1-10/index.rst
create mode 100644 airflow-core/docs/howto/upgrading-from-1-10/upgrade-check.rst
create mode 100644 airflow-core/docs/howto/usage-cli.rst
create mode 100644 airflow-core/docs/howto/variable.rst
rename {docs/apache-airflow => airflow-core/docs}/img/add-dag-tags.png (100%)
rename {docs/apache-airflow => airflow-core/docs}/img/add_container_python_interpreter.png (100%)
create mode 100644 airflow-core/docs/img/airflow_erd.sha256
create mode 100644 airflow-core/docs/img/airflow_erd.svg
rename {docs/apache-airflow => airflow-core/docs}/img/apache.jpg (100%)
rename {docs/apache-airflow => airflow-core/docs}/img/arch-diag-logging.png (100%)
rename {docs/apache-airflow => airflow-core/docs}/img/asset-scheduled-dags.png (100%)
rename {docs/apache-airflow => airflow-core/docs}/img/assets.png (100%)
rename {docs/apache-airflow => airflow-core/docs}/img/audit_log.png (100%)
rename {docs/apache-airflow => airflow-core/docs}/img/aws-web-identity-federation-gcp.png (100%)
rename {docs/apache-airflow => airflow-core/docs}/img/basic-dag.png (100%)
rename {docs/apache-airflow => airflow-core/docs}/img/branch_note.png (100%)
rename {docs/apache-airflow => airflow-core/docs}/img/branch_with_trigger.png (100%)
rename {docs/apache-airflow => airflow-core/docs}/img/branch_without_trigger.png (100%)
rename {docs/apache-airflow => airflow-core/docs}/img/calendar.png (100%)
rename {docs/apache-airflow => airflow-core/docs}/img/change-site-title/default_instance_name_configuration.png (100%)
rename {docs/apache-airflow => airflow-core/docs}/img/change-site-title/example_instance_name_configuration.png (100%)
rename {docs/apache-airflow => airflow-core/docs}/img/change-ui-colors/dags-page-new.png (100%)
rename {docs/apache-airflow => airflow-core/docs}/img/change-ui-colors/dags-page-old.png (100%)
rename {docs/apache-airflow => airflow-core/docs}/img/change-ui-colors/graph-view-new.png (100%)
rename {docs/apache-airflow => airflow-core/docs}/img/change-ui-colors/graph-view-old.png (100%)
rename {docs/apache-airflow => airflow-core/docs}/img/change-ui-colors/tree-view-new.png (100%)
rename {docs/apache-airflow => airflow-core/docs}/img/change-ui-colors/tree-view-old.png (100%)
rename {docs/apache-airflow => airflow-core/docs}/img/cli_completion.gif (100%)
rename {docs/apache-airflow => airflow-core/docs}/img/cluster_activity.png (100%)
rename {docs/apache-airflow => airflow-core/docs}/img/code.png (100%)
rename {docs/apache-airflow => airflow-core/docs}/img/connection_create.png (100%)
rename {docs/apache-airflow => airflow-core/docs}/img/connection_edit.png (100%)
rename {docs/apache-airflow => airflow-core/docs}/img/dag_doc.png (100%)
rename {docs/apache-airflow => airflow-core/docs}/img/dag_file_processing_diagram.png (100%)
rename {docs/apache-airflow => airflow-core/docs}/img/dag_serialization.png (100%)
rename {docs/apache-airflow => airflow-core/docs}/img/dags.png (100%)
rename {docs/apache-airflow => airflow-core/docs}/img/demo_graph_view.png (100%)
rename {docs/apache-airflow => airflow-core/docs}/img/demo_grid_view.png (100%)
rename {docs/apache-airflow => airflow-core/docs}/img/diagram_auth_manager_airflow_architecture.md5sum (100%)
rename {docs/apache-airflow => airflow-core/docs}/img/diagram_auth_manager_airflow_architecture.png (100%)
rename {docs/apache-airflow => airflow-core/docs}/img/diagram_auth_manager_airflow_architecture.py (100%)
rename {docs/apache-airflow => airflow-core/docs}/img/diagram_basic_airflow_architecture.md5sum (100%)
rename {docs/apache-airflow => airflow-core/docs}/img/diagram_basic_airflow_architecture.png (100%)
rename {docs/apache-airflow => airflow-core/docs}/img/diagram_basic_airflow_architecture.py (100%)
rename {docs/apache-airflow => airflow-core/docs}/img/diagram_dag_processor_airflow_architecture.md5sum (100%)
rename {docs/apache-airflow => airflow-core/docs}/img/diagram_dag_processor_airflow_architecture.png (100%)
rename {docs/apache-airflow => airflow-core/docs}/img/diagram_dag_processor_airflow_architecture.py (100%)
rename {docs/apache-airflow => airflow-core/docs}/img/diagram_distributed_airflow_architecture.md5sum (100%)
rename {docs/apache-airflow => airflow-core/docs}/img/diagram_distributed_airflow_architecture.png (100%)
rename {docs/apache-airflow => airflow-core/docs}/img/diagram_distributed_airflow_architecture.py (100%)
rename {docs/apache-airflow => airflow-core/docs}/img/diagram_fab_auth_manager_airflow_architecture.png (100%)
rename {docs/apache-airflow => airflow-core/docs}/img/diagram_multi_team_airflow_architecture.md5sum (100%)
rename {docs/apache-airflow => airflow-core/docs}/img/diagram_multi_team_airflow_architecture.png (100%)
rename {docs/apache-airflow => airflow-core/docs}/img/diagram_multi_team_airflow_architecture.py (100%)
rename {docs/apache-airflow => airflow-core/docs}/img/diagram_multitenant_architecture.md5sum (100%)
create mode 100644 airflow-core/docs/img/diagram_task_lifecycle.md5sum
create mode 100644 airflow-core/docs/img/diagram_task_lifecycle.png
create mode 100644 airflow-core/docs/img/diagram_task_lifecycle.py
rename {docs/apache-airflow => airflow-core/docs}/img/docker-compose-pycharm.png (100%)
rename {docs/apache-airflow => airflow-core/docs}/img/duration.png (100%)
rename {docs/apache-airflow => airflow-core/docs}/img/edge_label_example.png (100%)
rename {docs/apache-airflow => airflow-core/docs}/img/email_connection.png (100%)
rename {docs/apache-airflow => airflow-core/docs}/img/gantt.png (100%)
rename {docs/apache-airflow => airflow-core/docs}/img/graph.png (100%)
rename {docs/apache-airflow => airflow-core/docs}/img/grid.png (100%)
rename {docs/apache-airflow => airflow-core/docs}/img/grid_instance_details.png (100%)
rename {docs/apache-airflow => airflow-core/docs}/img/grid_mapped_task.png (100%)
rename {docs/apache-airflow => airflow-core/docs}/img/grid_run_details.png (100%)
rename {docs/apache-airflow => airflow-core/docs}/img/grid_task_details.png (100%)
rename {docs/apache-airflow => airflow-core/docs}/img/grid_task_group.png (100%)
rename {docs/apache-airflow => airflow-core/docs}/img/howto-owner-links.gif (100%)
rename {docs/apache-airflow => airflow-core/docs}/img/landing_times.png (100%)
rename {docs/apache-airflow => airflow-core/docs}/img/latest_only_with_trigger.png (100%)
rename {docs/apache-airflow => airflow-core/docs}/img/logos/airflow_64x64_emoji_transparent.png (100%)
rename {docs/apache-airflow => airflow-core/docs}/img/logos/airflow_dark_bg.png (100%)
rename {docs/apache-airflow => airflow-core/docs}/img/logos/airflow_transparent.png (100%)
rename {docs/apache-airflow => airflow-core/docs}/img/logos/airflow_white_bg.png (100%)
rename {docs/apache-airflow => airflow-core/docs}/img/logos/github_repository_social_image.png (100%)
rename {docs/apache-airflow => airflow-core/docs}/img/logos/wordmark_1.png (100%)
rename {docs/apache-airflow => airflow-core/docs}/img/logos/wordmark_1.svg (100%)
rename {docs/apache-airflow => airflow-core/docs}/img/logos/wordmark_2.png (100%)
rename {docs/apache-airflow => airflow-core/docs}/img/logos/wordmark_2.svg (100%)
rename {docs/apache-airflow => airflow-core/docs}/img/mapping-simple-graph.png (100%)
rename {docs/apache-airflow => airflow-core/docs}/img/mapping-simple-grid.png (100%)
rename {docs/apache-airflow => airflow-core/docs}/img/operator_extra_link.png (100%)
rename {docs/apache-airflow => airflow-core/docs}/img/run_task_on_celery_executor.puml (100%)
rename {docs/apache-airflow => airflow-core/docs}/img/run_types.png (100%)
rename {docs/apache-airflow => airflow-core/docs}/img/setup-teardown-complex.png (100%)
rename {docs/apache-airflow => airflow-core/docs}/img/setup-teardown-group.png (100%)
rename {docs/apache-airflow => airflow-core/docs}/img/setup-teardown-nesting.png (100%)
rename {docs/apache-airflow => airflow-core/docs}/img/setup-teardown-parallel.png (100%)
rename {docs/apache-airflow => airflow-core/docs}/img/setup-teardown-scope.png (100%)
rename {docs/apache-airflow => airflow-core/docs}/img/setup-teardown-setup-group.png (100%)
rename {docs/apache-airflow => airflow-core/docs}/img/setup-teardown-simple.png (100%)
rename {docs/apache-airflow => airflow-core/docs}/img/task_doc.png (100%)
rename {docs/apache-airflow => airflow-core/docs}/img/task_group.gif (100%)
rename {docs/apache-airflow => airflow-core/docs}/img/task_instance_history.png (100%)
rename {docs/apache-airflow => airflow-core/docs}/img/task_instance_history_log.png (100%)
rename {docs/apache-airflow => airflow-core/docs}/img/task_lifecycle_diagram.png (100%)
rename {docs/apache-airflow => airflow-core/docs}/img/template_field_renderer_path.png (100%)
create mode 100644 airflow-core/docs/img/trigger-dag-tutorial-form-1.png
create mode 100644 airflow-core/docs/img/trigger-dag-tutorial-form-2.png
create mode 100644 airflow-core/docs/img/trigger-dag-tutorial-form-3.png
create mode 100644 airflow-core/docs/img/trigger-dag-tutorial-form-4.png
rename {docs/apache-airflow => airflow-core/docs}/img/tutorial-pipeline-1.png (100%)
rename {docs/apache-airflow => airflow-core/docs}/img/tutorial-pipeline-2.png (100%)
rename {docs/apache-airflow => airflow-core/docs}/img/ui-alert-message.png (100%)
rename {docs/apache-airflow => airflow-core/docs}/img/ui-timezone-chooser.png (100%)
rename {docs/apache-airflow => airflow-core/docs}/img/usage_cli_export.png (100%)
rename {docs/apache-airflow => airflow-core/docs}/img/usage_cli_imgcat.png (100%)
rename {docs/apache-airflow => airflow-core/docs}/img/variable_hidden.png (100%)
rename {docs/apache-airflow => airflow-core/docs}/img/watcher.png (100%)
create mode 100644 airflow-core/docs/index.rst
create mode 100644 airflow-core/docs/installation/dependencies.rst
rename {docs/apache-airflow => airflow-core/docs}/installation/index.rst (100%)
create mode 100644 airflow-core/docs/installation/installing-from-pypi.rst
create mode 100644 airflow-core/docs/installation/installing-from-sources.rst
rename {docs/apache-airflow => airflow-core/docs}/installation/prerequisites.rst (100%)
rename {docs/apache-airflow => airflow-core/docs}/installation/setting-up-the-database.rst (100%)
rename {docs/apache-airflow => airflow-core/docs}/installation/supported-versions.rst (100%)
rename {docs/apache-airflow => airflow-core/docs}/installation/upgrading.rst (100%)
create mode 100644 airflow-core/docs/integration.rst
rename {docs/apache-airflow => airflow-core/docs}/license.rst (100%)
create mode 100644 airflow-core/docs/migrations-ref.rst
rename {docs/apache-airflow => airflow-core/docs}/operators-and-hooks-ref.rst (100%)
rename {docs/apache-airflow => airflow-core/docs}/privacy_notice.rst (100%)
create mode 100644 airflow-core/docs/project.rst
create mode 100644 airflow-core/docs/public-airflow-interface.rst
rename {docs/apache-airflow => airflow-core/docs}/redirects.txt (100%)
create mode 100644 airflow-core/docs/release-process.rst
rename {docs/apache-airflow => airflow-core/docs}/release_notes.rst (100%)
rename {docs/apache-airflow => airflow-core/docs}/security/api.rst (100%)
create mode 100644 airflow-core/docs/security/audit_logs.rst
rename {docs/apache-airflow => airflow-core/docs}/security/flower.rst (100%)
rename {docs/apache-airflow => airflow-core/docs}/security/index.rst (100%)
create mode 100644 airflow-core/docs/security/kerberos.rst
rename {docs/apache-airflow => airflow-core/docs}/security/releasing_security_patches.rst (100%)
rename {docs/apache-airflow => airflow-core/docs}/security/sbom.rst (100%)
rename {docs/apache-airflow => airflow-core/docs}/security/secrets/fernet.rst (100%)
rename {docs/apache-airflow => airflow-core/docs}/security/secrets/index.rst (100%)
rename {docs/apache-airflow => airflow-core/docs}/security/secrets/mask-sensitive-values.rst (100%)
rename {docs/apache-airflow => airflow-core/docs}/security/secrets/secrets-backend/index.rst (100%)
rename {docs/apache-airflow => airflow-core/docs}/security/secrets/secrets-backend/local-filesystem-secrets-backend.rst (100%)
create mode 100644 airflow-core/docs/security/security_model.rst
create mode 100644 airflow-core/docs/security/sql.rst
rename {docs/apache-airflow => airflow-core/docs}/security/webserver.rst (100%)
rename {docs/apache-airflow => airflow-core/docs}/security/workload.rst (100%)
rename {docs/apache-airflow => airflow-core/docs}/stable-rest-api-ref.rst (100%)
rename {docs/apache-airflow => airflow-core/docs}/start.rst (100%)
rename {docs/apache-airflow => airflow-core/docs}/static/exampleinclude.css (100%)
rename {docs/apache-airflow => airflow-core/docs}/static/gh-jira-links.js (100%)
create mode 100644 airflow-core/docs/static/redirects.js
create mode 100644 airflow-core/docs/templates-ref.rst
rename {docs/apache-airflow => airflow-core/docs}/templates/footer.html (100%)
create mode 100644 airflow-core/docs/troubleshooting.rst
create mode 100644 airflow-core/docs/tutorial/fundamentals.rst
rename {docs/apache-airflow => airflow-core/docs}/tutorial/index.rst (100%)
create mode 100644 airflow-core/docs/tutorial/objectstorage.rst
create mode 100644 airflow-core/docs/tutorial/pipeline.rst
create mode 100644 airflow-core/docs/tutorial/pipeline_example.csv
create mode 100644 airflow-core/docs/tutorial/taskflow.rst
create mode 100644 airflow-core/docs/ui.rst
create mode 100644 airflow-core/hatch_build_airflow_core.py
create mode 100644 airflow-core/pyproject.toml
rename {airflow => airflow-core/src/airflow}/METRICS.md (100%)
rename {airflow => airflow-core/src/airflow}/__init__.py (100%)
rename {airflow => airflow-core/src/airflow}/__main__.py (100%)
copy {airflow/api_connexion => airflow-core/src/airflow/_logging}/__init__.py (100%)
create mode 100644 airflow-core/src/airflow/_logging/structlog.py
rename {airflow => airflow-core/src/airflow}/_vendor/README.md (100%)
rename {airflow/_logging => airflow-core/src/airflow/_vendor}/__init__.py (100%)
rename {airflow => airflow-core/src/airflow}/_vendor/vendor.md (100%)
rename {airflow => airflow-core/src/airflow}/alembic.ini (100%)
rename {airflow/api_connexion/schemas => airflow-core/src/airflow/api}/__init__.py (100%)
create mode 100644 airflow-core/src/airflow/api/client/__init__.py
rename {airflow => airflow-core/src/airflow}/api/client/local_client.py (100%)
copy {airflow/api/auth => airflow-core/src/airflow/api/common}/__init__.py (100%)
rename {airflow => airflow-core/src/airflow}/api/common/airflow_health.py (100%)
rename {airflow => airflow-core/src/airflow}/api/common/delete_dag.py (100%)
rename {airflow => airflow-core/src/airflow}/api/common/mark_tasks.py (100%)
rename {airflow => airflow-core/src/airflow}/api/common/trigger_dag.py (100%)
rename {airflow => airflow-core/src/airflow}/api_fastapi/__init__.py (100%)
create mode 100644 airflow-core/src/airflow/api_fastapi/app.py
rename {airflow/api/auth/backend => airflow-core/src/airflow/api_fastapi/auth}/__init__.py (100%)
rename {airflow/api/common => airflow-core/src/airflow/api_fastapi/auth/managers}/__init__.py (100%)
create mode 100644 airflow-core/src/airflow/api_fastapi/auth/managers/base_auth_manager.py
rename {airflow/auth => airflow-core/src/airflow/api_fastapi/auth/managers/models}/__init__.py (100%)
rename {airflow => airflow-core/src/airflow/api_fastapi}/auth/managers/models/base_user.py (100%)
create mode 100644 airflow-core/src/airflow/api_fastapi/auth/managers/models/batch_apis.py
create mode 100644 airflow-core/src/airflow/api_fastapi/auth/managers/models/resource_details.py
rename {airflow/auth/managers => airflow-core/src/airflow/api_fastapi/auth/managers/simple}/__init__.py (100%)
rename {airflow/auth/managers/models => airflow-core/src/airflow/api_fastapi/auth/managers/simple/datamodels}/__init__.py (100%)
rename {airflow => airflow-core/src/airflow/api_fastapi}/auth/managers/simple/datamodels/login.py (100%)
rename {airflow/auth/managers/simple => airflow-core/src/airflow/api_fastapi/auth/managers/simple/openapi}/__init__.py (100%)
create mode 100644 airflow-core/src/airflow/api_fastapi/auth/managers/simple/openapi/v1-generated.yaml
rename {airflow/auth/managers/simple/datamodels => airflow-core/src/airflow/api_fastapi/auth/managers/simple/routes}/__init__.py (100%)
create mode 100644 airflow-core/src/airflow/api_fastapi/auth/managers/simple/routes/login.py
rename {airflow/api_fastapi/common => airflow-core/src/airflow/api_fastapi/auth/managers/simple/services}/__init__.py (100%)
create mode 100644 airflow-core/src/airflow/api_fastapi/auth/managers/simple/services/login.py
create mode 100644 airflow-core/src/airflow/api_fastapi/auth/managers/simple/simple_auth_manager.py
create mode 100644 airflow-core/src/airflow/api_fastapi/auth/managers/simple/ui/dev/index.html
create mode 100644 airflow-core/src/airflow/api_fastapi/auth/managers/simple/ui/index.html
rename {airflow => airflow-core/src/airflow/api_fastapi}/auth/managers/simple/ui/openapi-gen/queries/common.ts (100%)
rename {airflow => airflow-core/src/airflow/api_fastapi}/auth/managers/simple/ui/openapi-gen/queries/index.ts (100%)
rename {airflow => airflow-core/src/airflow/api_fastapi}/auth/managers/simple/ui/openapi-gen/queries/infiniteQueries.ts (100%)
rename {airflow => airflow-core/src/airflow/api_fastapi}/auth/managers/simple/ui/openapi-gen/queries/prefetch.ts (100%)
rename {airflow => airflow-core/src/airflow/api_fastapi}/auth/managers/simple/ui/openapi-gen/queries/queries.ts (100%)
rename {airflow => airflow-core/src/airflow/api_fastapi}/auth/managers/simple/ui/openapi-gen/queries/suspense.ts (100%)
rename {airflow => airflow-core/src/airflow/api_fastapi}/auth/managers/simple/ui/openapi-gen/requests/core/ApiError.ts (100%)
rename {airflow => airflow-core/src/airflow/api_fastapi}/auth/managers/simple/ui/openapi-gen/requests/core/ApiRequestOptions.ts (100%)
rename {airflow => airflow-core/src/airflow/api_fastapi}/auth/managers/simple/ui/openapi-gen/requests/core/ApiResult.ts (100%)
rename {airflow => airflow-core/src/airflow/api_fastapi}/auth/managers/simple/ui/openapi-gen/requests/core/CancelablePromise.ts (100%)
rename {airflow => airflow-core/src/airflow/api_fastapi}/auth/managers/simple/ui/openapi-gen/requests/core/OpenAPI.ts (100%)
rename {airflow => airflow-core/src/airflow/api_fastapi}/auth/managers/simple/ui/openapi-gen/requests/core/request.ts (100%)
rename {airflow => airflow-core/src/airflow/api_fastapi}/auth/managers/simple/ui/openapi-gen/requests/index.ts (100%)
rename {airflow => airflow-core/src/airflow/api_fastapi}/auth/managers/simple/ui/openapi-gen/requests/schemas.gen.ts (100%)
rename {airflow => airflow-core/src/airflow/api_fastapi}/auth/managers/simple/ui/openapi-gen/requests/services.gen.ts (100%)
rename {airflow => airflow-core/src/airflow/api_fastapi}/auth/managers/simple/ui/openapi-gen/requests/types.gen.ts (100%)
create mode 100644 airflow-core/src/airflow/api_fastapi/auth/managers/simple/ui/package-lock.json
create mode 100644 airflow-core/src/airflow/api_fastapi/auth/managers/simple/ui/package.json
create mode 100644 airflow-core/src/airflow/api_fastapi/auth/managers/simple/ui/pnpm-lock.yaml
rename {airflow => airflow-core/src/airflow/api_fastapi}/auth/managers/simple/ui/src/login/Login.test.tsx (100%)
create mode 100644 airflow-core/src/airflow/api_fastapi/auth/managers/simple/ui/src/login/Login.tsx
rename {airflow => airflow-core/src/airflow/api_fastapi}/auth/managers/simple/ui/src/login/LoginForm.tsx (100%)
create mode 100644 airflow-core/src/airflow/api_fastapi/auth/managers/simple/ui/src/main.tsx
rename {airflow => airflow-core/src/airflow/api_fastapi}/auth/managers/simple/ui/src/queries/useCreateToken.ts (100%)
create mode 100644 airflow-core/src/airflow/api_fastapi/auth/managers/simple/ui/src/queryClient.ts
create mode 100644 airflow-core/src/airflow/api_fastapi/auth/managers/simple/ui/src/router.tsx
rename {airflow => airflow-core/src/airflow/api_fastapi}/auth/managers/simple/ui/src/test-utils.tsx (100%)
rename {airflow => airflow-core/src/airflow/api_fastapi}/auth/managers/simple/ui/tests-setup.ts (100%)
create mode 100644 airflow-core/src/airflow/api_fastapi/auth/managers/simple/ui/vite.config.ts
create mode 100644 airflow-core/src/airflow/api_fastapi/auth/managers/simple/user.py
create mode 100644 airflow-core/src/airflow/api_fastapi/auth/tokens.py
rename {airflow/api_fastapi/common/db => airflow-core/src/airflow/api_fastapi/common}/__init__.py (100%)
rename {airflow/api_fastapi/core_api => airflow-core/src/airflow/api_fastapi/common/db}/__init__.py (100%)
create mode 100644 airflow-core/src/airflow/api_fastapi/common/db/common.py
rename {airflow => airflow-core/src/airflow}/api_fastapi/common/db/dag_runs.py (100%)
rename {airflow => airflow-core/src/airflow}/api_fastapi/common/db/dags.py (100%)
rename {airflow => airflow-core/src/airflow}/api_fastapi/common/exceptions.py (100%)
rename {airflow => airflow-core/src/airflow}/api_fastapi/common/headers.py (100%)
create mode 100644 airflow-core/src/airflow/api_fastapi/common/parameters.py
rename {airflow => airflow-core/src/airflow}/api_fastapi/common/router.py (100%)
create mode 100644 airflow-core/src/airflow/api_fastapi/common/types.py
rename {airflow/api_fastapi/core_api/datamodels => airflow-core/src/airflow/api_fastapi/core_api}/__init__.py (100%)
create mode 100644 airflow-core/src/airflow/api_fastapi/core_api/app.py
create mode 100644 airflow-core/src/airflow/api_fastapi/core_api/base.py
rename {airflow/api_fastapi/core_api/datamodels/ui => airflow-core/src/airflow/api_fastapi/core_api/datamodels}/__init__.py (100%)
rename {airflow => airflow-core/src/airflow}/api_fastapi/core_api/datamodels/assets.py (100%)
rename {airflow => airflow-core/src/airflow}/api_fastapi/core_api/datamodels/backfills.py (100%)
rename {airflow => airflow-core/src/airflow}/api_fastapi/core_api/datamodels/common.py (100%)
rename {airflow => airflow-core/src/airflow}/api_fastapi/core_api/datamodels/config.py (100%)
create mode 100644 airflow-core/src/airflow/api_fastapi/core_api/datamodels/connections.py
rename {airflow => airflow-core/src/airflow}/api_fastapi/core_api/datamodels/dag_report.py (100%)
rename {airflow => airflow-core/src/airflow}/api_fastapi/core_api/datamodels/dag_run.py (100%)
rename {airflow => airflow-core/src/airflow}/api_fastapi/core_api/datamodels/dag_sources.py (100%)
rename {airflow => airflow-core/src/airflow}/api_fastapi/core_api/datamodels/dag_stats.py (100%)
rename {airflow => airflow-core/src/airflow}/api_fastapi/core_api/datamodels/dag_tags.py (100%)
rename {airflow => airflow-core/src/airflow}/api_fastapi/core_api/datamodels/dag_versions.py (100%)
rename {airflow => airflow-core/src/airflow}/api_fastapi/core_api/datamodels/dag_warning.py (100%)
create mode 100644 airflow-core/src/airflow/api_fastapi/core_api/datamodels/dags.py
rename {airflow => airflow-core/src/airflow}/api_fastapi/core_api/datamodels/event_logs.py (100%)
rename {airflow => airflow-core/src/airflow}/api_fastapi/core_api/datamodels/extra_links.py (100%)
rename {airflow => airflow-core/src/airflow}/api_fastapi/core_api/datamodels/import_error.py (100%)
create mode 100644 airflow-core/src/airflow/api_fastapi/core_api/datamodels/job.py
rename {airflow => airflow-core/src/airflow}/api_fastapi/core_api/datamodels/log.py (100%)
rename {airflow => airflow-core/src/airflow}/api_fastapi/core_api/datamodels/monitor.py (100%)
rename {airflow => airflow-core/src/airflow}/api_fastapi/core_api/datamodels/plugins.py (100%)
rename {airflow => airflow-core/src/airflow}/api_fastapi/core_api/datamodels/pools.py (100%)
rename {airflow => airflow-core/src/airflow}/api_fastapi/core_api/datamodels/providers.py (100%)
rename {airflow => airflow-core/src/airflow}/api_fastapi/core_api/datamodels/task_instances.py (100%)
rename {airflow => airflow-core/src/airflow}/api_fastapi/core_api/datamodels/tasks.py (100%)
rename {airflow => airflow-core/src/airflow}/api_fastapi/core_api/datamodels/trigger.py (100%)
rename {airflow/api_fastapi/core_api/openapi => airflow-core/src/airflow/api_fastapi/core_api/datamodels/ui}/__init__.py (100%)
create mode 100644 airflow-core/src/airflow/api_fastapi/core_api/datamodels/ui/auth.py
rename {airflow => airflow-core/src/airflow}/api_fastapi/core_api/datamodels/ui/common.py (100%)
create mode 100644 airflow-core/src/airflow/api_fastapi/core_api/datamodels/ui/config.py
create mode 100644 airflow-core/src/airflow/api_fastapi/core_api/datamodels/ui/dags.py
rename {airflow => airflow-core/src/airflow}/api_fastapi/core_api/datamodels/ui/dashboard.py (100%)
rename {airflow => airflow-core/src/airflow}/api_fastapi/core_api/datamodels/ui/grid.py (100%)
create mode 100644 airflow-core/src/airflow/api_fastapi/core_api/datamodels/ui/structure.py
rename {airflow => airflow-core/src/airflow}/api_fastapi/core_api/datamodels/variables.py (100%)
rename {airflow => airflow-core/src/airflow}/api_fastapi/core_api/datamodels/version.py (100%)
rename {airflow => airflow-core/src/airflow}/api_fastapi/core_api/datamodels/xcom.py (100%)
rename {airflow => airflow-core/src/airflow}/api_fastapi/core_api/init_dagbag.py (100%)
rename {airflow => airflow-core/src/airflow}/api_fastapi/core_api/middleware.py (100%)
rename {airflow/api_fastapi/core_api/routes => airflow-core/src/airflow/api_fastapi/core_api/openapi}/__init__.py (100%)
rename {airflow => airflow-core/src/airflow}/api_fastapi/core_api/openapi/exceptions.py (100%)
create mode 100644 airflow-core/src/airflow/api_fastapi/core_api/openapi/v1-generated.yaml
rename {airflow/api_fastapi/core_api/services => airflow-core/src/airflow/api_fastapi/core_api/routes}/__init__.py (100%)
create mode 100644 airflow-core/src/airflow/api_fastapi/core_api/routes/public/__init__.py
create mode 100644 airflow-core/src/airflow/api_fastapi/core_api/routes/public/assets.py
create mode 100644 airflow-core/src/airflow/api_fastapi/core_api/routes/public/auth.py
create mode 100644 airflow-core/src/airflow/api_fastapi/core_api/routes/public/backfills.py
create mode 100644 airflow-core/src/airflow/api_fastapi/core_api/routes/public/config.py
rename {airflow => airflow-core/src/airflow}/api_fastapi/core_api/routes/public/connections.py (100%)
create mode 100644 airflow-core/src/airflow/api_fastapi/core_api/routes/public/dag_parsing.py
create mode 100644 airflow-core/src/airflow/api_fastapi/core_api/routes/public/dag_report.py
create mode 100644 airflow-core/src/airflow/api_fastapi/core_api/routes/public/dag_run.py
create mode 100644 airflow-core/src/airflow/api_fastapi/core_api/routes/public/dag_sources.py
create mode 100644 airflow-core/src/airflow/api_fastapi/core_api/routes/public/dag_stats.py
create mode 100644 airflow-core/src/airflow/api_fastapi/core_api/routes/public/dag_tags.py
create mode 100644 airflow-core/src/airflow/api_fastapi/core_api/routes/public/dag_versions.py
create mode 100644 airflow-core/src/airflow/api_fastapi/core_api/routes/public/dag_warning.py
create mode 100644 airflow-core/src/airflow/api_fastapi/core_api/routes/public/dags.py
rename {airflow => airflow-core/src/airflow}/api_fastapi/core_api/routes/public/event_logs.py (100%)
create mode 100644 airflow-core/src/airflow/api_fastapi/core_api/routes/public/extra_links.py
create mode 100644 airflow-core/src/airflow/api_fastapi/core_api/routes/public/import_error.py
create mode 100644 airflow-core/src/airflow/api_fastapi/core_api/routes/public/job.py
create mode 100644 airflow-core/src/airflow/api_fastapi/core_api/routes/public/log.py
rename {airflow => airflow-core/src/airflow}/api_fastapi/core_api/routes/public/monitor.py (100%)
create mode 100644 airflow-core/src/airflow/api_fastapi/core_api/routes/public/plugins.py
create mode 100644 airflow-core/src/airflow/api_fastapi/core_api/routes/public/pools.py
create mode 100644 airflow-core/src/airflow/api_fastapi/core_api/routes/public/providers.py
create mode 100644 airflow-core/src/airflow/api_fastapi/core_api/routes/public/task_instances.py
create mode 100644 airflow-core/src/airflow/api_fastapi/core_api/routes/public/tasks.py
create mode 100644 airflow-core/src/airflow/api_fastapi/core_api/routes/public/variables.py
rename {airflow => airflow-core/src/airflow}/api_fastapi/core_api/routes/public/version.py (100%)
create mode 100644 airflow-core/src/airflow/api_fastapi/core_api/routes/public/xcom.py
create mode 100644 airflow-core/src/airflow/api_fastapi/core_api/routes/ui/__init__.py
create mode 100644 airflow-core/src/airflow/api_fastapi/core_api/routes/ui/assets.py
create mode 100644 airflow-core/src/airflow/api_fastapi/core_api/routes/ui/auth.py
create mode 100644 airflow-core/src/airflow/api_fastapi/core_api/routes/ui/backfills.py
create mode 100644 airflow-core/src/airflow/api_fastapi/core_api/routes/ui/config.py
create mode 100644 airflow-core/src/airflow/api_fastapi/core_api/routes/ui/connections.py
create mode 100644 airflow-core/src/airflow/api_fastapi/core_api/routes/ui/dags.py
create mode 100644 airflow-core/src/airflow/api_fastapi/core_api/routes/ui/dashboard.py
create mode 100644 airflow-core/src/airflow/api_fastapi/core_api/routes/ui/dependencies.py
create mode 100644 airflow-core/src/airflow/api_fastapi/core_api/routes/ui/grid.py
create mode 100644 airflow-core/src/airflow/api_fastapi/core_api/routes/ui/structure.py
create mode 100644 airflow-core/src/airflow/api_fastapi/core_api/security.py
rename {airflow/api_fastapi/core_api/services/public => airflow-core/src/airflow/api_fastapi/core_api/services}/__init__.py (100%)
rename {airflow/api_fastapi/core_api/services/ui => airflow-core/src/airflow/api_fastapi/core_api/services/public}/__init__.py (100%)
rename {airflow => airflow-core/src/airflow}/api_fastapi/core_api/services/public/common.py (100%)
rename {airflow => airflow-core/src/airflow}/api_fastapi/core_api/services/public/connections.py (100%)
rename {airflow => airflow-core/src/airflow}/api_fastapi/core_api/services/public/pools.py (100%)
rename {airflow => airflow-core/src/airflow}/api_fastapi/core_api/services/public/variables.py (100%)
rename {airflow/api_fastapi/execution_api => airflow-core/src/airflow/api_fastapi/core_api/services/ui}/__init__.py (100%)
create mode 100644 airflow-core/src/airflow/api_fastapi/core_api/services/ui/connections.py
rename {airflow => airflow-core/src/airflow}/api_fastapi/core_api/services/ui/dependencies.py (100%)
rename {airflow => airflow-core/src/airflow}/api_fastapi/core_api/services/ui/grid.py (100%)
create mode 100644 airflow-core/src/airflow/api_fastapi/core_api/services/ui/structure.py
rename {airflow/api_fastapi/execution_api/datamodels => airflow-core/src/airflow/api_fastapi/execution_api}/__init__.py (100%)
create mode 100644 airflow-core/src/airflow/api_fastapi/execution_api/app.py
rename {airflow/api_fastapi/logging => airflow-core/src/airflow/api_fastapi/execution_api/datamodels}/__init__.py (100%)
create mode 100644 airflow-core/src/airflow/api_fastapi/execution_api/datamodels/asset.py
rename {airflow => airflow-core/src/airflow}/api_fastapi/execution_api/datamodels/asset_event.py (100%)
rename {airflow => airflow-core/src/airflow}/api_fastapi/execution_api/datamodels/connection.py (100%)
create mode 100644 airflow-core/src/airflow/api_fastapi/execution_api/datamodels/dagrun.py
create mode 100644 airflow-core/src/airflow/api_fastapi/execution_api/datamodels/taskinstance.py
create mode 100644 airflow-core/src/airflow/api_fastapi/execution_api/datamodels/token.py
create mode 100644 airflow-core/src/airflow/api_fastapi/execution_api/datamodels/variable.py
create mode 100644 airflow-core/src/airflow/api_fastapi/execution_api/datamodels/xcom.py
create mode 100644 airflow-core/src/airflow/api_fastapi/execution_api/deps.py
create mode 100644 airflow-core/src/airflow/api_fastapi/execution_api/routes/__init__.py
rename {airflow => airflow-core/src/airflow}/api_fastapi/execution_api/routes/asset_events.py (100%)
rename {airflow => airflow-core/src/airflow}/api_fastapi/execution_api/routes/assets.py (100%)
create mode 100644 airflow-core/src/airflow/api_fastapi/execution_api/routes/connections.py
create mode 100644 airflow-core/src/airflow/api_fastapi/execution_api/routes/dag_runs.py
create mode 100644 airflow-core/src/airflow/api_fastapi/execution_api/routes/health.py
create mode 100644 airflow-core/src/airflow/api_fastapi/execution_api/routes/task_instances.py
create mode 100644 airflow-core/src/airflow/api_fastapi/execution_api/routes/variables.py
create mode 100644 airflow-core/src/airflow/api_fastapi/execution_api/routes/xcoms.py
rename {airflow => airflow-core/src/airflow}/api_fastapi/gunicorn_config.py (100%)
rename {airflow/assets => airflow-core/src/airflow/api_fastapi/logging}/__init__.py (100%)
create mode 100644 airflow-core/src/airflow/api_fastapi/logging/decorators.py
rename {airflow => airflow-core/src/airflow}/api_fastapi/main.py (100%)
rename {airflow/auth/managers/simple/services => airflow-core/src/airflow/assets}/__init__.py (100%)
create mode 100644 airflow-core/src/airflow/assets/evaluation.py
create mode 100644 airflow-core/src/airflow/assets/manager.py
rename {airflow => airflow-core/src/airflow}/callbacks/__init__.py (100%)
rename {airflow => airflow-core/src/airflow}/callbacks/base_callback_sink.py (100%)
create mode 100644 airflow-core/src/airflow/callbacks/callback_requests.py
rename {airflow => airflow-core/src/airflow}/callbacks/database_callback_sink.py (100%)
rename {airflow => airflow-core/src/airflow}/callbacks/pipe_callback_sink.py (100%)
rename {airflow/auth/managers/simple/openapi => airflow-core/src/airflow/cli}/__init__.py (100%)
rename {airflow/cli/commands/local_commands => airflow-core/src/airflow/cli/api}/__init__.py (100%)
rename {airflow/cli/commands/remote_commands => airflow-core/src/airflow/cli/api/datamodels}/__init__.py (100%)
create mode 100644 airflow-core/src/airflow/cli/cli_config.py
create mode 100644 airflow-core/src/airflow/cli/cli_parser.py
rename {airflow/auth/managers/simple/routes => airflow-core/src/airflow/cli/commands}/__init__.py (100%)
rename {airflow => airflow-core/src/airflow}/cli/commands/legacy_commands.py (100%)
rename {airflow/dag_processing => airflow-core/src/airflow/cli/commands/local_commands}/__init__.py (100%)
create mode 100644 airflow-core/src/airflow/cli/commands/local_commands/api_server_command.py
rename {airflow => airflow-core/src/airflow}/cli/commands/local_commands/cheat_sheet_command.py (100%)
rename {airflow => airflow-core/src/airflow}/cli/commands/local_commands/daemon_utils.py (100%)
rename {airflow => airflow-core/src/airflow}/cli/commands/local_commands/dag_processor_command.py (100%)
rename {airflow => airflow-core/src/airflow}/cli/commands/local_commands/db_command.py (100%)
rename {airflow => airflow-core/src/airflow}/cli/commands/local_commands/info_command.py (100%)
rename {airflow => airflow-core/src/airflow}/cli/commands/local_commands/kerberos_command.py (100%)
rename {airflow => airflow-core/src/airflow}/cli/commands/local_commands/plugins_command.py (100%)
rename {airflow => airflow-core/src/airflow}/cli/commands/local_commands/rotate_fernet_key_command.py (100%)
rename {airflow => airflow-core/src/airflow}/cli/commands/local_commands/scheduler_command.py (100%)
create mode 100644 airflow-core/src/airflow/cli/commands/local_commands/standalone_command.py
rename {airflow => airflow-core/src/airflow}/cli/commands/local_commands/triggerer_command.py (100%)
rename {airflow/dag_processing/bundles => airflow-core/src/airflow/cli/commands/remote_commands}/__init__.py (100%)
rename {airflow => airflow-core/src/airflow}/cli/commands/remote_commands/asset_command.py (100%)
rename {airflow => airflow-core/src/airflow}/cli/commands/remote_commands/backfill_command.py (100%)
create mode 100644 airflow-core/src/airflow/cli/commands/remote_commands/config_command.py
rename {airflow => airflow-core/src/airflow}/cli/commands/remote_commands/connection_command.py (100%)
create mode 100644 airflow-core/src/airflow/cli/commands/remote_commands/dag_command.py
rename {airflow => airflow-core/src/airflow}/cli/commands/remote_commands/jobs_command.py (100%)
rename {airflow => airflow-core/src/airflow}/cli/commands/remote_commands/pool_command.py (100%)
create mode 100644 airflow-core/src/airflow/cli/commands/remote_commands/provider_command.py
create mode 100644 airflow-core/src/airflow/cli/commands/remote_commands/task_command.py
rename {airflow => airflow-core/src/airflow}/cli/commands/remote_commands/variable_command.py (100%)
rename {airflow => airflow-core/src/airflow}/cli/commands/remote_commands/version_command.py (100%)
rename {airflow => airflow-core/src/airflow}/cli/simple_table.py (100%)
rename {airflow => airflow-core/src/airflow}/cli/utils.py (100%)
rename {airflow/auth/managers/utils => airflow-core/src/airflow/config_templates}/__init__.py (100%)
rename {airflow => airflow-core/src/airflow}/config_templates/airflow_local_settings.py (100%)
create mode 100644 airflow-core/src/airflow/config_templates/config.yml
rename {airflow => airflow-core/src/airflow}/config_templates/config.yml.schema.json (100%)
rename {airflow => airflow-core/src/airflow}/config_templates/default_airflow.cfg (100%)
rename {airflow => airflow-core/src/airflow}/config_templates/default_webserver_config.py (100%)
rename {airflow => airflow-core/src/airflow}/config_templates/provider_config_fallback_defaults.cfg (100%)
create mode 100644 airflow-core/src/airflow/config_templates/unit_tests.cfg
create mode 100644 airflow-core/src/airflow/configuration.py
rename {airflow => airflow-core/src/airflow}/customized_form_field_behaviours.schema.json (100%)
rename {airflow/example_dags/plugins => airflow-core/src/airflow/dag_processing}/__init__.py (100%)
rename {airflow/executors => airflow-core/src/airflow/dag_processing/bundles}/__init__.py (100%)
rename {airflow => airflow-core/src/airflow}/dag_processing/bundles/base.py (100%)
create mode 100644 airflow-core/src/airflow/dag_processing/bundles/git.py
rename {airflow => airflow-core/src/airflow}/dag_processing/bundles/local.py (100%)
create mode 100644 airflow-core/src/airflow/dag_processing/bundles/manager.py
rename {airflow => airflow-core/src/airflow}/dag_processing/bundles/provider.yaml (100%)
create mode 100644 airflow-core/src/airflow/dag_processing/collection.py
create mode 100644 airflow-core/src/airflow/dag_processing/manager.py
create mode 100644 airflow-core/src/airflow/dag_processing/processor.py
rename {airflow => airflow-core/src/airflow}/datasets/__init__.py (100%)
rename {airflow => airflow-core/src/airflow}/datasets/metadata.py (100%)
rename {airflow => airflow-core/src/airflow}/decorators/__init__.py (100%)
create mode 100644 airflow-core/src/airflow/decorators/__init__.pyi
create mode 100644 airflow-core/src/airflow/decorators/base.py
create mode 100644 airflow-core/src/airflow/decorators/bash.py
rename {airflow => airflow-core/src/airflow}/decorators/branch_external_python.py (100%)
rename {airflow => airflow-core/src/airflow}/decorators/branch_python.py (100%)
rename {airflow => airflow-core/src/airflow}/decorators/branch_virtualenv.py (100%)
rename {airflow => airflow-core/src/airflow}/decorators/condition.py (100%)
rename {airflow => airflow-core/src/airflow}/decorators/external_python.py (100%)
rename {airflow => airflow-core/src/airflow}/decorators/python.py (100%)
rename {airflow => airflow-core/src/airflow}/decorators/python_virtualenv.py (100%)
rename {airflow => airflow-core/src/airflow}/decorators/sensor.py (100%)
rename {airflow => airflow-core/src/airflow}/decorators/setup_teardown.py (100%)
rename {airflow => airflow-core/src/airflow}/decorators/short_circuit.py (100%)
rename {airflow => airflow-core/src/airflow}/decorators/task_group.py (100%)
rename {airflow/cli => airflow-core/src/airflow/example_dags}/__init__.py (100%)
create mode 100644 airflow-core/src/airflow/example_dags/example_asset_alias.py
rename {airflow => airflow-core/src/airflow}/example_dags/example_asset_alias_with_no_taskflow.py (100%)
rename {airflow => airflow-core/src/airflow}/example_dags/example_asset_decorator.py (100%)
create mode 100644 airflow-core/src/airflow/example_dags/example_asset_with_watchers.py
rename {airflow => airflow-core/src/airflow}/example_dags/example_assets.py (100%)
create mode 100644 airflow-core/src/airflow/example_dags/example_bash_decorator.py
rename {airflow => airflow-core/src/airflow}/example_dags/example_bash_operator.py (100%)
rename {airflow => airflow-core/src/airflow}/example_dags/example_branch_datetime_operator.py (100%)
create mode 100644 airflow-core/src/airflow/example_dags/example_branch_day_of_week_operator.py
rename {airflow => airflow-core/src/airflow}/example_dags/example_branch_labels.py (100%)
create mode 100644 airflow-core/src/airflow/example_dags/example_branch_operator.py
create mode 100644 airflow-core/src/airflow/example_dags/example_branch_operator_decorator.py
rename {airflow => airflow-core/src/airflow}/example_dags/example_branch_python_dop_operator_3.py (100%)
create mode 100644 airflow-core/src/airflow/example_dags/example_complex.py
create mode 100644 airflow-core/src/airflow/example_dags/example_custom_weight.py
rename {airflow => airflow-core/src/airflow}/example_dags/example_dag_decorator.py (100%)
rename {airflow => airflow-core/src/airflow}/example_dags/example_display_name.py (100%)
rename {airflow => airflow-core/src/airflow}/example_dags/example_dynamic_task_mapping.py (100%)
rename {airflow => airflow-core/src/airflow}/example_dags/example_dynamic_task_mapping_with_no_taskflow_operators.py (100%)
rename {airflow => airflow-core/src/airflow}/example_dags/example_external_task_marker_dag.py (100%)
rename {airflow => airflow-core/src/airflow}/example_dags/example_inlet_event_extra.py (100%)
rename {airflow => airflow-core/src/airflow}/example_dags/example_kubernetes_executor.py (100%)
rename {airflow => airflow-core/src/airflow}/example_dags/example_latest_only.py (100%)
rename {airflow => airflow-core/src/airflow}/example_dags/example_latest_only_with_trigger.py (100%)
rename {airflow => airflow-core/src/airflow}/example_dags/example_local_kubernetes_executor.py (100%)
rename {airflow => airflow-core/src/airflow}/example_dags/example_nested_branch_dag.py (100%)
rename {airflow => airflow-core/src/airflow}/example_dags/example_outlet_event_extra.py (100%)
rename {airflow => airflow-core/src/airflow}/example_dags/example_params_trigger_ui.py (100%)
create mode 100644 airflow-core/src/airflow/example_dags/example_params_ui_tutorial.py
rename {airflow => airflow-core/src/airflow}/example_dags/example_passing_params_via_test_command.py (100%)
rename {airflow => airflow-core/src/airflow}/example_dags/example_python_decorator.py (100%)
rename {airflow => airflow-core/src/airflow}/example_dags/example_python_operator.py (100%)
rename {airflow => airflow-core/src/airflow}/example_dags/example_sensor_decorator.py (100%)
create mode 100644 airflow-core/src/airflow/example_dags/example_sensors.py
rename {airflow => airflow-core/src/airflow}/example_dags/example_setup_teardown.py (100%)
rename {airflow => airflow-core/src/airflow}/example_dags/example_setup_teardown_taskflow.py (100%)
create mode 100644 airflow-core/src/airflow/example_dags/example_short_circuit_decorator.py
create mode 100644 airflow-core/src/airflow/example_dags/example_short_circuit_operator.py
create mode 100644 airflow-core/src/airflow/example_dags/example_simplest_dag.py
rename {airflow => airflow-core/src/airflow}/example_dags/example_skip_dag.py (100%)
rename {airflow => airflow-core/src/airflow}/example_dags/example_task_group.py (100%)
rename {airflow => airflow-core/src/airflow}/example_dags/example_task_group_decorator.py (100%)
rename {airflow => airflow-core/src/airflow}/example_dags/example_time_delta_sensor_async.py (100%)
rename {airflow => airflow-core/src/airflow}/example_dags/example_trigger_controller_dag.py (100%)
rename {airflow => airflow-core/src/airflow}/example_dags/example_trigger_target_dag.py (100%)
rename {airflow => airflow-core/src/airflow}/example_dags/example_workday_timetable.py (100%)
rename {airflow => airflow-core/src/airflow}/example_dags/example_xcom.py (100%)
rename {airflow => airflow-core/src/airflow}/example_dags/example_xcomargs.py (100%)
rename {airflow/cli/commands => airflow-core/src/airflow/example_dags/libs}/__init__.py (100%)
rename {airflow => airflow-core/src/airflow}/example_dags/libs/helper.py (100%)
rename {airflow/io/utils => airflow-core/src/airflow/example_dags/plugins}/__init__.py (100%)
rename {airflow => airflow-core/src/airflow}/example_dags/plugins/decreasing_priority_weight_strategy.py (100%)
rename {airflow => airflow-core/src/airflow}/example_dags/plugins/event_listener.py (100%)
rename {airflow => airflow-core/src/airflow}/example_dags/plugins/listener_plugin.py (100%)
rename {airflow => airflow-core/src/airflow}/example_dags/plugins/workday.py (100%)
rename {airflow => airflow-core/src/airflow}/example_dags/sql/sample.sql (100%)
rename {airflow => airflow-core/src/airflow}/example_dags/sql/tutorial_taskflow_template.sql (100%)
rename {airflow => airflow-core/src/airflow}/example_dags/tutorial.py (100%)
rename {airflow => airflow-core/src/airflow}/example_dags/tutorial_dag.py (100%)
rename {airflow => airflow-core/src/airflow}/example_dags/tutorial_objectstorage.py (100%)
rename {airflow => airflow-core/src/airflow}/example_dags/tutorial_taskflow_api.py (100%)
rename {airflow => airflow-core/src/airflow}/example_dags/tutorial_taskflow_api_virtualenv.py (100%)
rename {airflow => airflow-core/src/airflow}/example_dags/tutorial_taskflow_templates.py (100%)
create mode 100644 airflow-core/src/airflow/exceptions.py
rename {airflow/listeners/spec => airflow-core/src/airflow/executors}/__init__.py (100%)
create mode 100644 airflow-core/src/airflow/executors/base_executor.py
rename {airflow => airflow-core/src/airflow}/executors/debug_executor.py (100%)
rename {airflow => airflow-core/src/airflow}/executors/executor_constants.py (100%)
rename {airflow => airflow-core/src/airflow}/executors/executor_loader.py (100%)
rename {airflow => airflow-core/src/airflow}/executors/executor_utils.py (100%)
create mode 100644 airflow-core/src/airflow/executors/local_executor.py
rename {airflow => airflow-core/src/airflow}/executors/sequential_executor.py (100%)
create mode 100644 airflow-core/src/airflow/executors/workloads.py
create mode 100644 airflow-core/src/airflow/hooks/README.md
rename {airflow => airflow-core/src/airflow}/hooks/__init__.py (100%)
create mode 100644 airflow-core/src/airflow/hooks/base.py
rename {airflow => airflow-core/src/airflow}/io/__init__.py (100%)
rename {airflow => airflow-core/src/airflow}/io/path.py (100%)
rename {airflow => airflow-core/src/airflow}/io/store/__init__.py (100%)
rename {airflow => airflow-core/src/airflow}/io/typedef.py (100%)
rename {airflow/metrics => airflow-core/src/airflow/io/utils}/__init__.py (100%)
rename {airflow => airflow-core/src/airflow}/io/utils/stat.py (100%)
rename {airflow => airflow-core/src/airflow}/jobs/JOB_LIFECYCLE.md (100%)
rename {airflow/config_templates => airflow-core/src/airflow/jobs}/__init__.py (100%)
rename {airflow => airflow-core/src/airflow}/jobs/base_job_runner.py (100%)
rename {airflow => airflow-core/src/airflow}/jobs/dag_processor_job_runner.py (100%)
rename {airflow => airflow-core/src/airflow}/jobs/job.py (100%)
create mode 100644 airflow-core/src/airflow/jobs/scheduler_job_runner.py
create mode 100644 airflow-core/src/airflow/jobs/triggerer_job_runner.py
rename {airflow => airflow-core/src/airflow}/lineage/__init__.py (100%)
rename {airflow => airflow-core/src/airflow}/lineage/backend.py (100%)
rename {airflow => airflow-core/src/airflow}/lineage/hook.py (100%)
rename {airflow => airflow-core/src/airflow}/listeners/__init__.py (100%)
rename {airflow => airflow-core/src/airflow}/listeners/listener.py (100%)
rename {airflow/notifications => airflow-core/src/airflow/listeners/spec}/__init__.py (100%)
rename {airflow => airflow-core/src/airflow}/listeners/spec/asset.py (100%)
rename {airflow => airflow-core/src/airflow}/listeners/spec/dagrun.py (100%)
rename {airflow => airflow-core/src/airflow}/listeners/spec/importerrors.py (100%)
rename {airflow => airflow-core/src/airflow}/listeners/spec/lifecycle.py (100%)
rename {airflow => airflow-core/src/airflow}/listeners/spec/taskinstance.py (100%)
create mode 100644 airflow-core/src/airflow/logging_config.py
rename {airflow => airflow-core/src/airflow}/macros/__init__.py (100%)
rename {airflow/timetables => airflow-core/src/airflow/metrics}/__init__.py (100%)
rename {airflow => airflow-core/src/airflow}/metrics/base_stats_logger.py (100%)
rename {airflow => airflow-core/src/airflow}/metrics/datadog_logger.py (100%)
rename {airflow => airflow-core/src/airflow}/metrics/otel_logger.py (100%)
rename {airflow => airflow-core/src/airflow}/metrics/protocols.py (100%)
rename {airflow => airflow-core/src/airflow}/metrics/statsd_logger.py (100%)
create mode 100644 airflow-core/src/airflow/metrics/validators.py
rename {airflow/example_dags => airflow-core/src/airflow/migrations}/__init__.py (100%)
rename {airflow => airflow-core/src/airflow}/migrations/db_types.py (100%)
rename {airflow => airflow-core/src/airflow}/migrations/db_types.pyi (100%)
rename {airflow => airflow-core/src/airflow}/migrations/env.py (100%)
rename {airflow => airflow-core/src/airflow}/migrations/script.py.mako (100%)
rename {airflow => airflow-core/src/airflow}/migrations/utils.py (100%)
rename {airflow => airflow-core/src/airflow}/migrations/versions/0001_2_7_0_add_index_to_task_instance_table.py (100%)
rename {airflow => airflow-core/src/airflow}/migrations/versions/0002_2_7_0_add_custom_operator_name_column.py (100%)
rename {airflow => airflow-core/src/airflow}/migrations/versions/0003_2_7_0_add_include_deferred_column_to_pool.py (100%)
rename {airflow => airflow-core/src/airflow}/migrations/versions/0004_2_8_0_add_clear_number_to_dag_run.py (100%)
rename {airflow => airflow-core/src/airflow}/migrations/versions/0005_2_8_0_add_owner_display_name_to_audit_log_table.py (100%)
rename {airflow => airflow-core/src/airflow}/migrations/versions/0006_2_8_0_make_connection_login_password_text.py (100%)
rename {airflow => airflow-core/src/airflow}/migrations/versions/0007_2_8_0_add_processor_subdir_import_error.py (100%)
rename {airflow => airflow-core/src/airflow}/migrations/versions/0008_2_8_1_refactor_dag_run_indexes.py (100%)
rename {airflow => airflow-core/src/airflow}/migrations/versions/0009_2_9_0_add_rendered_map_index_to_taskinstance.py (100%)
rename {airflow => airflow-core/src/airflow}/migrations/versions/0010_2_9_0_add_run_id_to_audit_log_table_and_change_event_name_length.py (100%)
rename {airflow => airflow-core/src/airflow}/migrations/versions/0011_2_9_0_add_dataset_expression_in_dagmodel.py (100%)
rename {airflow => airflow-core/src/airflow}/migrations/versions/0012_2_9_0_adding_adding_max_failure_runs_column_.py (100%)
rename {airflow => airflow-core/src/airflow}/migrations/versions/0013_2_9_0_make_xcom_value_to_longblob_for_mysql.py (100%)
rename {airflow => airflow-core/src/airflow}/migrations/versions/0014_2_9_0_add_display_name_for_dag_and_task_.py (100%)
rename {airflow => airflow-core/src/airflow}/migrations/versions/0015_2_9_0_update_trigger_kwargs_type.py (100%)
rename {airflow => airflow-core/src/airflow}/migrations/versions/0016_2_9_2_remove_idx_last_scheduling_decision_.py (100%)
rename {airflow => airflow-core/src/airflow}/migrations/versions/0017_2_9_2_fix_inconsistency_between_ORM_and_migration_files.py (100%)
rename {airflow => airflow-core/src/airflow}/migrations/versions/0018_2_10_0_add_indexes_on_dag_id_column_in_referencing_tables.py (100%)
rename {airflow => airflow-core/src/airflow}/migrations/versions/0019_2_10_0_add_new_executor_field_to_db.py (100%)
rename {airflow => airflow-core/src/airflow}/migrations/versions/0020_2_10_0_added_dagpriorityparsingrequest_table.py (100%)
rename {airflow => airflow-core/src/airflow}/migrations/versions/0021_2_10_0_add_task_instance_history.py (100%)
rename {airflow => airflow-core/src/airflow}/migrations/versions/0022_2_10_0_add_dataset_alias.py (100%)
rename {airflow => airflow-core/src/airflow}/migrations/versions/0023_2_10_0_dataset_alias_dataset_event.py (100%)
rename {airflow => airflow-core/src/airflow}/migrations/versions/0024_2_10_0_add_try_number_to_audit_log.py (100%)
rename {airflow => airflow-core/src/airflow}/migrations/versions/0025_2_10_0_dataset_alias_dataset.py (100%)
rename {airflow => airflow-core/src/airflow}/migrations/versions/0026_2_10_0_dag_schedule_dataset_alias_reference.py (100%)
rename {airflow => airflow-core/src/airflow}/migrations/versions/0027_2_10_3_fix_dag_schedule_dataset_alias_reference_naming.py (100%)
rename {airflow => airflow-core/src/airflow}/migrations/versions/0028_3_0_0_drop_ab_user_id_foreign_key.py (100%)
rename {airflow => airflow-core/src/airflow}/migrations/versions/0029_3_0_0_remove_is_subdag.py (100%)
rename {airflow => airflow-core/src/airflow}/migrations/versions/0030_3_0_0_rename_schedule_interval_to_timetable_.py (100%)
rename {airflow => airflow-core/src/airflow}/migrations/versions/0031_3_0_0_add_triggered_by_field_to_dagrun.py (100%)
rename {airflow => airflow-core/src/airflow}/migrations/versions/0032_3_0_0_rename_execution_date_to_logical_date_and_nullable.py (100%)
rename {airflow => airflow-core/src/airflow}/migrations/versions/0033_3_0_0_add_tables_for_backfill.py (100%)
rename {airflow => airflow-core/src/airflow}/migrations/versions/0034_3_0_0_remove_redundant_index.py (100%)
rename {airflow => airflow-core/src/airflow}/migrations/versions/0035_3_0_0_update_user_id_type.py (100%)
rename {airflow => airflow-core/src/airflow}/migrations/versions/0036_3_0_0_add_name_field_to_dataset_model.py (100%)
rename {airflow => airflow-core/src/airflow}/migrations/versions/0037_3_0_0_add_backfill_to_dag_run_model.py (100%)
rename {airflow => airflow-core/src/airflow}/migrations/versions/0038_3_0_0_add_asset_active.py (100%)
rename {airflow => airflow-core/src/airflow}/migrations/versions/0039_3_0_0_tweak_assetaliasmodel_to_match_asset.py (100%)
rename {airflow => airflow-core/src/airflow}/migrations/versions/0040_3_0_0_add_exception_reason_and_logical_date_.py (100%)
rename {airflow => airflow-core/src/airflow}/migrations/versions/0041_3_0_0_rename_dataset_as_asset.py (100%)
rename {airflow => airflow-core/src/airflow}/migrations/versions/0042_3_0_0_add_uuid_primary_key_to_task_instance_.py (100%)
rename {airflow => airflow-core/src/airflow}/migrations/versions/0043_3_0_0_remove_scheduler_lock_column.py (100%)
rename {airflow => airflow-core/src/airflow}/migrations/versions/0044_3_0_0__drop_task_fail_table.py (100%)
rename {airflow => airflow-core/src/airflow}/migrations/versions/0045_3_0_0_add_last_heartbeat_at_directly_to_ti.py (100%)
rename {airflow => airflow-core/src/airflow}/migrations/versions/0046_3_0_0_drop_dag_pickling.py (100%)
rename {airflow => airflow-core/src/airflow}/migrations/versions/0047_3_0_0_add_dag_versioning.py (100%)
rename {airflow => airflow-core/src/airflow}/migrations/versions/0048_3_0_0_add_trigger_asset_reference.py (100%)
rename {airflow => airflow-core/src/airflow}/migrations/versions/0049_3_0_0_remove_pickled_data_from_xcom_table.py (100%)
rename {airflow => airflow-core/src/airflow}/migrations/versions/0050_3_0_0_add_dagbundlemodel.py (100%)
rename {airflow => airflow-core/src/airflow}/migrations/versions/0051_3_0_0_update_task_instance_trigger_timeout_to_utcdatetime.py (100%)
rename {airflow => airflow-core/src/airflow}/migrations/versions/0052_3_0_0_add_deadline_alerts_table.py (100%)
rename {airflow => airflow-core/src/airflow}/migrations/versions/0053_3_0_0_remove_processor_subdir.py (100%)
rename {airflow => airflow-core/src/airflow}/migrations/versions/0054_3_0_0_add_asset_reference_models.py (100%)
rename {airflow => airflow-core/src/airflow}/migrations/versions/0055_3_0_0_remove_pickled_data_from_dagrun_table.py (100%)
rename {airflow => airflow-core/src/airflow}/migrations/versions/0056_3_0_0_add_relative_fileloc_column.py (100%)
rename {airflow => airflow-core/src/airflow}/migrations/versions/0057_3_0_0_add_new_task_instance_field_scheduled_.py (100%)
rename {airflow => airflow-core/src/airflow}/migrations/versions/0058_3_0_0_add_dagrun_run_after.py (100%)
rename {airflow => airflow-core/src/airflow}/migrations/versions/0059_3_0_0_remove_external_trigger_field.py (100%)
rename {airflow => airflow-core/src/airflow}/migrations/versions/0060_3_0_0_add_try_id_to_ti_and_tih.py (100%)
create mode 100644 airflow-core/src/airflow/migrations/versions/0061_3_0_0_use_ti_id_as_primary_key_to_TINote.py
create mode 100644 airflow-core/src/airflow/migrations/versions/0062_3_0_0_remove_dag_default_view.py
create mode 100644 airflow-core/src/airflow/migrations/versions/0063_3_0_0_use_ti_id_as_fk_to_taskreschedule.py
rename {airflow/example_dags/libs => airflow-core/src/airflow/migrations/versions}/__init__.py (100%)
create mode 100644 airflow-core/src/airflow/models/__init__.py
create mode 100644 airflow-core/src/airflow/models/abstractoperator.py
create mode 100644 airflow-core/src/airflow/models/asset.py
create mode 100644 airflow-core/src/airflow/models/backfill.py
rename {airflow => airflow-core/src/airflow}/models/base.py (100%)
create mode 100644 airflow-core/src/airflow/models/baseoperator.py
create mode 100644 airflow-core/src/airflow/models/connection.py
rename {airflow => airflow-core/src/airflow}/models/crypto.py (100%)
create mode 100644 airflow-core/src/airflow/models/dag.py
rename {airflow => airflow-core/src/airflow}/models/dag_version.py (100%)
rename {airflow => airflow-core/src/airflow}/models/dagbag.py (100%)
create mode 100644 airflow-core/src/airflow/models/dagbundle.py
rename {airflow => airflow-core/src/airflow}/models/dagcode.py (100%)
create mode 100644 airflow-core/src/airflow/models/dagrun.py
rename {airflow => airflow-core/src/airflow}/models/dagwarning.py (100%)
rename {airflow => airflow-core/src/airflow}/models/db_callback_request.py (100%)
rename {airflow => airflow-core/src/airflow}/models/deadline.py (100%)
rename {airflow => airflow-core/src/airflow}/models/errors.py (100%)
rename {airflow => airflow-core/src/airflow}/models/expandinput.py (100%)
rename {airflow => airflow-core/src/airflow}/models/log.py (100%)
rename {airflow => airflow-core/src/airflow}/models/mappedoperator.py (100%)
rename {airflow => airflow-core/src/airflow}/models/operator.py (100%)
rename {airflow => airflow-core/src/airflow}/models/param.py (100%)
rename {airflow => airflow-core/src/airflow}/models/pool.py (100%)
rename {airflow => airflow-core/src/airflow}/models/renderedtifields.py (100%)
create mode 100644 airflow-core/src/airflow/models/serialized_dag.py
create mode 100644 airflow-core/src/airflow/models/skipmixin.py
create mode 100644 airflow-core/src/airflow/models/taskinstance.py
rename {airflow => airflow-core/src/airflow}/models/taskinstancehistory.py (100%)
rename {airflow => airflow-core/src/airflow}/models/taskinstancekey.py (100%)
rename {airflow => airflow-core/src/airflow}/models/tasklog.py (100%)
create mode 100644 airflow-core/src/airflow/models/taskmap.py
rename {airflow => airflow-core/src/airflow}/models/taskmixin.py (100%)
create mode 100644 airflow-core/src/airflow/models/taskreschedule.py
rename {airflow => airflow-core/src/airflow}/models/trigger.py (100%)
rename {airflow => airflow-core/src/airflow}/models/variable.py (100%)
create mode 100644 airflow-core/src/airflow/models/xcom.py
create mode 100644 airflow-core/src/airflow/models/xcom_arg.py
rename {dev/breeze/src => airflow-core/src/airflow/notifications}/__init__.py (100%)
rename {airflow => airflow-core/src/airflow}/notifications/basenotifier.py (100%)
create mode 100644 airflow-core/src/airflow/operators/__init__.py
rename {airflow => airflow-core/src/airflow}/plugins_manager.py (100%)
rename {airflow => airflow-core/src/airflow}/policies.py (100%)
rename {airflow => airflow-core/src/airflow}/provider.yaml.schema.json (100%)
rename {airflow => airflow-core/src/airflow}/provider_info.schema.json (100%)
create mode 100644 airflow-core/src/airflow/providers_manager.py
rename {airflow => airflow-core/src/airflow}/py.typed (100%)
create mode 100644 airflow-core/src/airflow/secrets/__init__.py
rename {airflow => airflow-core/src/airflow}/secrets/base_secrets.py (100%)
rename {airflow => airflow-core/src/airflow}/secrets/cache.py (100%)
rename {airflow => airflow-core/src/airflow}/secrets/environment_variables.py (100%)
rename {airflow => airflow-core/src/airflow}/secrets/local_filesystem.py (100%)
rename {airflow => airflow-core/src/airflow}/secrets/metastore.py (100%)
rename {airflow/jobs => airflow-core/src/airflow/security}/__init__.py (100%)
rename {airflow => airflow-core/src/airflow}/security/kerberos.py (100%)
create mode 100644 airflow-core/src/airflow/security/permissions.py
create mode 100644 airflow-core/src/airflow/security/utils.py
rename {airflow => airflow-core/src/airflow}/sensors/README.md (100%)
rename {airflow => airflow-core/src/airflow}/sensors/__init__.py (100%)
create mode 100644 airflow-core/src/airflow/sensors/base.py
rename {airflow => airflow-core/src/airflow}/sentry.py (100%)
rename {airflow => airflow-core/src/airflow}/serialization/__init__.py (100%)
create mode 100644 airflow-core/src/airflow/serialization/dag_dependency.py
rename {airflow => airflow-core/src/airflow}/serialization/enums.py (100%)
rename {airflow => airflow-core/src/airflow}/serialization/helpers.py (100%)
rename {airflow => airflow-core/src/airflow}/serialization/json_schema.py (100%)
create mode 100644 airflow-core/src/airflow/serialization/schema.json
create mode 100644 airflow-core/src/airflow/serialization/serde.py
create mode 100644 airflow-core/src/airflow/serialization/serialized_objects.py
rename {airflow/migrations => airflow-core/src/airflow/serialization/serializers}/__init__.py (100%)
rename {airflow => airflow-core/src/airflow}/serialization/serializers/bignum.py (100%)
rename {airflow => airflow-core/src/airflow}/serialization/serializers/builtin.py (100%)
rename {airflow => airflow-core/src/airflow}/serialization/serializers/datetime.py (100%)
rename {airflow => airflow-core/src/airflow}/serialization/serializers/deltalake.py (100%)
rename {airflow => airflow-core/src/airflow}/serialization/serializers/iceberg.py (100%)
rename {airflow => airflow-core/src/airflow}/serialization/serializers/kubernetes.py (100%)
rename {airflow => airflow-core/src/airflow}/serialization/serializers/numpy.py (100%)
rename {airflow => airflow-core/src/airflow}/serialization/serializers/pandas.py (100%)
rename {airflow => airflow-core/src/airflow}/serialization/serializers/timezone.py (100%)
create mode 100644 airflow-core/src/airflow/settings.py
rename {airflow => airflow-core/src/airflow}/stats.py (100%)
rename {airflow/migrations/versions => airflow-core/src/airflow/task}/__init__.py (100%)
rename {airflow => airflow-core/src/airflow}/task/priority_strategy.py (100%)
rename {airflow/security => airflow-core/src/airflow/ti_deps}/__init__.py (100%)
rename {airflow => airflow-core/src/airflow}/ti_deps/dep_context.py (100%)
rename {airflow => airflow-core/src/airflow}/ti_deps/dependencies_deps.py (100%)
rename {airflow => airflow-core/src/airflow}/ti_deps/dependencies_states.py (100%)
rename {airflow => airflow-core/src/airflow}/ti_deps/deps/__init__.py (100%)
rename {airflow => airflow-core/src/airflow}/ti_deps/deps/base_ti_dep.py (100%)
rename {airflow => airflow-core/src/airflow}/ti_deps/deps/dag_ti_slots_available_dep.py (100%)
rename {airflow => airflow-core/src/airflow}/ti_deps/deps/dag_unpaused_dep.py (100%)
rename {airflow => airflow-core/src/airflow}/ti_deps/deps/dagrun_exists_dep.py (100%)
create mode 100644 airflow-core/src/airflow/ti_deps/deps/exec_date_after_start_date_dep.py
rename {airflow => airflow-core/src/airflow}/ti_deps/deps/mapped_task_expanded.py (100%)
rename {airflow => airflow-core/src/airflow}/ti_deps/deps/mapped_task_upstream_dep.py (100%)
rename {airflow => airflow-core/src/airflow}/ti_deps/deps/not_in_retry_period_dep.py (100%)
create mode 100644 airflow-core/src/airflow/ti_deps/deps/not_previously_skipped_dep.py
rename {airflow => airflow-core/src/airflow}/ti_deps/deps/pool_slots_available_dep.py (100%)
rename {airflow => airflow-core/src/airflow}/ti_deps/deps/prev_dagrun_dep.py (100%)
rename {airflow => airflow-core/src/airflow}/ti_deps/deps/ready_to_reschedule.py (100%)
rename {airflow => airflow-core/src/airflow}/ti_deps/deps/runnable_exec_date_dep.py (100%)
rename {airflow => airflow-core/src/airflow}/ti_deps/deps/task_concurrency_dep.py (100%)
rename {airflow => airflow-core/src/airflow}/ti_deps/deps/task_not_running_dep.py (100%)
rename {airflow => airflow-core/src/airflow}/ti_deps/deps/trigger_rule_dep.py (100%)
rename {airflow => airflow-core/src/airflow}/ti_deps/deps/valid_state_dep.py (100%)
create mode 100644 airflow-core/src/airflow/timetables/__init__.py
rename {airflow => airflow-core/src/airflow}/timetables/_cron.py (100%)
rename {airflow => airflow-core/src/airflow}/timetables/_delta.py (100%)
rename {airflow => airflow-core/src/airflow}/timetables/assets.py (100%)
rename {airflow => airflow-core/src/airflow}/timetables/base.py (100%)
rename {airflow => airflow-core/src/airflow}/timetables/events.py (100%)
rename {airflow => airflow-core/src/airflow}/timetables/interval.py (100%)
rename {airflow => airflow-core/src/airflow}/timetables/simple.py (100%)
create mode 100644 airflow-core/src/airflow/timetables/trigger.py
rename {airflow => airflow-core/src/airflow}/traces/__init__.py (100%)
rename {airflow => airflow-core/src/airflow}/traces/otel_tracer.py (100%)
rename {airflow => airflow-core/src/airflow}/traces/tracer.py (100%)
rename {airflow => airflow-core/src/airflow}/traces/utils.py (100%)
rename {airflow => airflow-core/src/airflow}/triggers/__init__.py (100%)
rename {airflow => airflow-core/src/airflow}/triggers/base.py (100%)
rename {airflow => airflow-core/src/airflow}/triggers/testing.py (100%)
rename {airflow => airflow-core/src/airflow}/typing_compat.py (100%)
rename {airflow => airflow-core/src/airflow}/ui/.env.example (100%)
rename {airflow => airflow-core/src/airflow}/ui/.prettierignore (100%)
rename {airflow => airflow-core/src/airflow}/ui/.prettierrc (100%)
create mode 100644 airflow-core/src/airflow/ui/CONTRIBUTING.md
rename {airflow => airflow-core/src/airflow}/ui/README.md (100%)
create mode 100644 airflow-core/src/airflow/ui/dev/index.html
rename {airflow => airflow-core/src/airflow}/ui/eslint.config.js (100%)
create mode 100644 airflow-core/src/airflow/ui/index.html
create mode 100644 airflow-core/src/airflow/ui/openapi-gen/queries/common.ts
create mode 100644 airflow-core/src/airflow/ui/openapi-gen/queries/ensureQueryData.ts
create mode 100644 airflow-core/src/airflow/ui/openapi-gen/queries/index.ts
create mode 100644 airflow-core/src/airflow/ui/openapi-gen/queries/infiniteQueries.ts
create mode 100644 airflow-core/src/airflow/ui/openapi-gen/queries/prefetch.ts
create mode 100644 airflow-core/src/airflow/ui/openapi-gen/queries/queries.ts
create mode 100644 airflow-core/src/airflow/ui/openapi-gen/queries/suspense.ts
rename {airflow => airflow-core/src/airflow}/ui/openapi-gen/requests/core/ApiError.ts (100%)
rename {airflow => airflow-core/src/airflow}/ui/openapi-gen/requests/core/ApiRequestOptions.ts (100%)
rename {airflow => airflow-core/src/airflow}/ui/openapi-gen/requests/core/ApiResult.ts (100%)
rename {airflow => airflow-core/src/airflow}/ui/openapi-gen/requests/core/CancelablePromise.ts (100%)
rename {airflow => airflow-core/src/airflow}/ui/openapi-gen/requests/core/OpenAPI.ts (100%)
rename {airflow => airflow-core/src/airflow}/ui/openapi-gen/requests/core/request.ts (100%)
rename {airflow => airflow-core/src/airflow}/ui/openapi-gen/requests/index.ts (100%)
create mode 100644 airflow-core/src/airflow/ui/openapi-gen/requests/schemas.gen.ts
create mode 100644 airflow-core/src/airflow/ui/openapi-gen/requests/services.gen.ts
create mode 100644 airflow-core/src/airflow/ui/openapi-gen/requests/types.gen.ts
create mode 100644 airflow-core/src/airflow/ui/package.json
create mode 100644 airflow-core/src/airflow/ui/pnpm-lock.yaml
rename {airflow => airflow-core/src/airflow}/ui/public/pin_32.png (100%)
rename {airflow => airflow-core/src/airflow}/ui/rules/core.js (100%)
rename {airflow => airflow-core/src/airflow}/ui/rules/levels.js (100%)
rename {airflow => airflow-core/src/airflow}/ui/rules/off.js (100%)
rename {airflow => airflow-core/src/airflow}/ui/rules/perfectionist.js (100%)
rename {airflow => airflow-core/src/airflow}/ui/rules/plugin-patch.d.ts (100%)
rename {airflow => airflow-core/src/airflow}/ui/rules/prettier.js (100%)
rename {airflow => airflow-core/src/airflow}/ui/rules/react.js (100%)
rename {airflow => airflow-core/src/airflow}/ui/rules/stylistic.js (100%)
rename {airflow => airflow-core/src/airflow}/ui/rules/typescript.js (100%)
rename {airflow => airflow-core/src/airflow}/ui/rules/unicorn.js (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/assets/AirflowPin.tsx (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/assets/DagIcon.tsx (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/assets/TaskIcon.tsx (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/components/ActionAccordion/ActionAccordion.tsx (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/components/ActionAccordion/columns.tsx (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/components/ActionAccordion/index.tsx (100%)
create mode 100644 airflow-core/src/airflow/ui/src/components/AssetExpression/AndGateNode.tsx
create mode 100644 airflow-core/src/airflow/ui/src/components/AssetExpression/AssetExpression.tsx
create mode 100644 airflow-core/src/airflow/ui/src/components/AssetExpression/AssetNode.tsx
create mode 100644 airflow-core/src/airflow/ui/src/components/AssetExpression/OrGateNode.tsx
create mode 100644 airflow-core/src/airflow/ui/src/components/AssetExpression/index.ts
create mode 100644 airflow-core/src/airflow/ui/src/components/AssetExpression/types.ts
create mode 100644 airflow-core/src/airflow/ui/src/components/Assets/AssetEvent.tsx
create mode 100644 airflow-core/src/airflow/ui/src/components/Assets/AssetEvents.tsx
create mode 100644 airflow-core/src/airflow/ui/src/components/Banner/BackfillBanner.tsx
create mode 100644 airflow-core/src/airflow/ui/src/components/Banner/index.tsx
rename {airflow => airflow-core/src/airflow}/ui/src/components/BreadcrumbStats.tsx (100%)
create mode 100644 airflow-core/src/airflow/ui/src/components/Clear/Run/ClearRunButton.tsx
create mode 100644 airflow-core/src/airflow/ui/src/components/Clear/Run/ClearRunDialog.tsx
rename {airflow => airflow-core/src/airflow}/ui/src/components/Clear/Run/index.tsx (100%)
create mode 100644 airflow-core/src/airflow/ui/src/components/Clear/TaskInstance/ClearTaskInstanceButton.tsx
create mode 100644 airflow-core/src/airflow/ui/src/components/Clear/TaskInstance/ClearTaskInstanceDialog.tsx
rename {airflow => airflow-core/src/airflow}/ui/src/components/Clear/TaskInstance/index.tsx (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/components/Clear/columns.tsx (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/components/Clear/index.tsx (100%)
create mode 100644 airflow-core/src/airflow/ui/src/components/ConfirmationModal.tsx
create mode 100644 airflow-core/src/airflow/ui/src/components/DagActions/ParseDag.tsx
create mode 100644 airflow-core/src/airflow/ui/src/components/DagActions/RunBackfillButton.tsx
create mode 100644 airflow-core/src/airflow/ui/src/components/DagActions/RunBackfillForm.tsx
create mode 100644 airflow-core/src/airflow/ui/src/components/DagActions/RunBackfillModal.tsx
rename {airflow => airflow-core/src/airflow}/ui/src/components/DagRunInfo.tsx (100%)
create mode 100644 airflow-core/src/airflow/ui/src/components/DagVersionDetails.tsx
create mode 100644 airflow-core/src/airflow/ui/src/components/DagVersionSelect.tsx
rename {airflow => airflow-core/src/airflow}/ui/src/components/DataTable/CardList.tsx (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/components/DataTable/DataTable.test.tsx (100%)
create mode 100644 airflow-core/src/airflow/ui/src/components/DataTable/DataTable.tsx
rename {airflow => airflow-core/src/airflow}/ui/src/components/DataTable/TableList.tsx (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/components/DataTable/ToggleTableDisplay.tsx (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/components/DataTable/index.ts (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/components/DataTable/searchParams.test.ts (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/components/DataTable/searchParams.ts (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/components/DataTable/skeleton.tsx (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/components/DataTable/types.ts (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/components/DataTable/useRowSelection.ts (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/components/DataTable/useTableUrlState.ts (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/components/DisplayMarkdownButton.tsx (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/components/DurationChart.tsx (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/components/EditableMarkdownButton.tsx (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/components/ErrorAlert.tsx (100%)
create mode 100644 airflow-core/src/airflow/ui/src/components/FlexibleForm/FieldAdvancedArray.tsx
create mode 100644 airflow-core/src/airflow/ui/src/components/FlexibleForm/FieldBool.tsx
create mode 100644 airflow-core/src/airflow/ui/src/components/FlexibleForm/FieldDateTime.tsx
create mode 100644 airflow-core/src/airflow/ui/src/components/FlexibleForm/FieldDropdown.tsx
create mode 100644 airflow-core/src/airflow/ui/src/components/FlexibleForm/FieldMultiSelect.tsx
create mode 100644 airflow-core/src/airflow/ui/src/components/FlexibleForm/FieldMultilineText.tsx
create mode 100644 airflow-core/src/airflow/ui/src/components/FlexibleForm/FieldNumber.tsx
create mode 100644 airflow-core/src/airflow/ui/src/components/FlexibleForm/FieldObject.tsx
create mode 100644 airflow-core/src/airflow/ui/src/components/FlexibleForm/FieldRow.tsx
create mode 100644 airflow-core/src/airflow/ui/src/components/FlexibleForm/FieldSelector.tsx
create mode 100644 airflow-core/src/airflow/ui/src/components/FlexibleForm/FieldString.tsx
create mode 100644 airflow-core/src/airflow/ui/src/components/FlexibleForm/FieldStringArray.tsx
create mode 100644 airflow-core/src/airflow/ui/src/components/FlexibleForm/FlexibleForm.tsx
create mode 100644 airflow-core/src/airflow/ui/src/components/FlexibleForm/HiddenInput.tsx
create mode 100644 airflow-core/src/airflow/ui/src/components/FlexibleForm/Row.tsx
create mode 100644 airflow-core/src/airflow/ui/src/components/FlexibleForm/index.tsx
rename {airflow => airflow-core/src/airflow}/ui/src/components/Graph/AliasNode.tsx (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/components/Graph/AssetConditionNode.tsx (100%)
create mode 100644 airflow-core/src/airflow/ui/src/components/Graph/AssetNode.tsx
create mode 100644 airflow-core/src/airflow/ui/src/components/Graph/DagNode.tsx
create mode 100644 airflow-core/src/airflow/ui/src/components/Graph/DownloadButton.tsx
rename {airflow => airflow-core/src/airflow}/ui/src/components/Graph/Edge.tsx (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/components/Graph/JoinNode.tsx (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/components/Graph/NodeWrapper.tsx (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/components/Graph/TaskLink.tsx (100%)
create mode 100644 airflow-core/src/airflow/ui/src/components/Graph/TaskNode.tsx
create mode 100644 airflow-core/src/airflow/ui/src/components/Graph/reactflowUtils.ts
create mode 100644 airflow-core/src/airflow/ui/src/components/Graph/useGraphLayout.ts
rename {airflow => airflow-core/src/airflow}/ui/src/components/HeaderCard.tsx (100%)
create mode 100644 airflow-core/src/airflow/ui/src/components/JsonEditor.tsx
rename {airflow => airflow-core/src/airflow}/ui/src/components/LimitedItemsList.tsx (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/components/MarkAs/Run/MarkRunAsButton.tsx (100%)
create mode 100644 airflow-core/src/airflow/ui/src/components/MarkAs/Run/MarkRunAsDialog.tsx
rename {airflow => airflow-core/src/airflow}/ui/src/components/MarkAs/Run/index.tsx (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/components/MarkAs/TaskInstance/MarkTaskInstanceAsButton.tsx (100%)
create mode 100644 airflow-core/src/airflow/ui/src/components/MarkAs/TaskInstance/MarkTaskInstanceAsDialog.tsx
rename {airflow => airflow-core/src/airflow}/ui/src/components/MarkAs/TaskInstance/index.tsx (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/components/MarkAs/index.tsx (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/components/MarkAs/utils.ts (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/components/QuickFilterButton.tsx (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/components/ReactMarkdown.tsx (100%)
create mode 100644 airflow-core/src/airflow/ui/src/components/RenderedJsonField.tsx
rename {airflow => airflow-core/src/airflow}/ui/src/components/RunTypeIcon.tsx (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/components/SearchBar.test.tsx (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/components/SearchBar.tsx (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/components/SearchDags/SearchDags.tsx (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/components/SearchDags/SearchDagsButton.tsx (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/components/SearchDags/SearchDagsDropdownIndicator.tsx (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/components/SearchDags/index.ts (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/components/Stat.tsx (100%)
create mode 100644 airflow-core/src/airflow/ui/src/components/StateBadge.tsx
create mode 100644 airflow-core/src/airflow/ui/src/components/StateIcon.tsx
rename {airflow => airflow-core/src/airflow}/ui/src/components/TaskInstanceTooltip.tsx (100%)
create mode 100644 airflow-core/src/airflow/ui/src/components/TaskName.tsx
create mode 100644 airflow-core/src/airflow/ui/src/components/TaskTrySelect.tsx
rename {airflow => airflow-core/src/airflow}/ui/src/components/Time.test.tsx (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/components/Time.tsx (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/components/TimeRangeSelector.tsx (100%)
create mode 100644 airflow-core/src/airflow/ui/src/components/TogglePause.tsx
rename {airflow => airflow-core/src/airflow}/ui/src/components/TrendCountButton.tsx (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/components/TrendCountChart.tsx (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/components/TriggerDag/EditableMarkdown.tsx (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/components/TriggerDag/TriggerDAGButton.tsx (100%)
create mode 100644 airflow-core/src/airflow/ui/src/components/TriggerDag/TriggerDAGForm.tsx
create mode 100644 airflow-core/src/airflow/ui/src/components/TriggerDag/TriggerDAGModal.tsx
create mode 100644 airflow-core/src/airflow/ui/src/components/TruncatedText.tsx
rename {airflow => airflow-core/src/airflow}/ui/src/components/ui/Accordion/ItemContent.tsx (100%)
create mode 100644 airflow-core/src/airflow/ui/src/components/ui/Accordion/ItemTrigger.tsx
rename {airflow => airflow-core/src/airflow}/ui/src/components/ui/Accordion/index.tsx (100%)
create mode 100644 airflow-core/src/airflow/ui/src/components/ui/ActionBar/BarContent.tsx
rename {airflow => airflow-core/src/airflow}/ui/src/components/ui/ActionBar/CloseTrigger.tsx (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/components/ui/ActionBar/index.ts (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/components/ui/ActionButton.tsx (100%)
create mode 100644 airflow-core/src/airflow/ui/src/components/ui/Alert.tsx
create mode 100644 airflow-core/src/airflow/ui/src/components/ui/Breadcrumb/Root.tsx
rename {airflow => airflow-core/src/airflow}/ui/src/components/ui/Breadcrumb/index.ts (100%)
create mode 100644 airflow-core/src/airflow/ui/src/components/ui/Button.tsx
create mode 100644 airflow-core/src/airflow/ui/src/components/ui/Checkbox.tsx
rename {airflow => airflow-core/src/airflow}/ui/src/components/ui/Clipboard.tsx (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/components/ui/CloseButton.tsx (100%)
create mode 100644 airflow-core/src/airflow/ui/src/components/ui/Dialog/CloseTrigger.tsx
create mode 100644 airflow-core/src/airflow/ui/src/components/ui/Dialog/Content.tsx
rename {airflow => airflow-core/src/airflow}/ui/src/components/ui/Dialog/index.ts (100%)
create mode 100644 airflow-core/src/airflow/ui/src/components/ui/FileUpload/Dropzone.tsx
create mode 100644 airflow-core/src/airflow/ui/src/components/ui/FileUpload/FileInput.tsx
create mode 100644 airflow-core/src/airflow/ui/src/components/ui/FileUpload/Item.tsx
create mode 100644 airflow-core/src/airflow/ui/src/components/ui/FileUpload/List.tsx
create mode 100644 airflow-core/src/airflow/ui/src/components/ui/FileUpload/Root.tsx
rename {airflow => airflow-core/src/airflow}/ui/src/components/ui/FileUpload/index.ts (100%)
create mode 100644 airflow-core/src/airflow/ui/src/components/ui/InputGroup.tsx
create mode 100644 airflow-core/src/airflow/ui/src/components/ui/Menu.tsx
rename {airflow => airflow-core/src/airflow}/ui/src/components/ui/NumberInput.tsx (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/components/ui/Pagination/Ellipsis.tsx (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/components/ui/Pagination/Item.tsx (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/components/ui/Pagination/Items.tsx (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/components/ui/Pagination/NextTrigger.tsx (100%)
create mode 100644 airflow-core/src/airflow/ui/src/components/ui/Pagination/PageText.tsx
rename {airflow => airflow-core/src/airflow}/ui/src/components/ui/Pagination/PrevTrigger.tsx (100%)
create mode 100644 airflow-core/src/airflow/ui/src/components/ui/Pagination/Root.tsx
rename {airflow => airflow-core/src/airflow}/ui/src/components/ui/Pagination/context.ts (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/components/ui/Pagination/index.ts (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/components/ui/Popover/Arrow.tsx (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/components/ui/Popover/CloseTrigger.tsx (100%)
create mode 100644 airflow-core/src/airflow/ui/src/components/ui/Popover/Content.tsx
rename {airflow => airflow-core/src/airflow}/ui/src/components/ui/Popover/index.tsx (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/components/ui/ProgressBar.tsx (100%)
create mode 100644 airflow-core/src/airflow/ui/src/components/ui/RadioCard.tsx
rename {airflow => airflow-core/src/airflow}/ui/src/components/ui/SegmentedControl.tsx (100%)
create mode 100644 airflow-core/src/airflow/ui/src/components/ui/Select/Content.tsx
rename {airflow => airflow-core/src/airflow}/ui/src/components/ui/Select/Item.tsx (100%)
create mode 100644 airflow-core/src/airflow/ui/src/components/ui/Select/ItemGroup.tsx
rename {airflow => airflow-core/src/airflow}/ui/src/components/ui/Select/Root.tsx (100%)
create mode 100644 airflow-core/src/airflow/ui/src/components/ui/Select/Trigger.tsx
create mode 100644 airflow-core/src/airflow/ui/src/components/ui/Select/ValueText.tsx
rename {airflow => airflow-core/src/airflow}/ui/src/components/ui/Select/index.ts (100%)
create mode 100644 airflow-core/src/airflow/ui/src/components/ui/Switch.tsx
create mode 100644 airflow-core/src/airflow/ui/src/components/ui/Tag.tsx
rename {airflow => airflow-core/src/airflow}/ui/src/components/ui/Toaster.tsx (100%)
create mode 100644 airflow-core/src/airflow/ui/src/components/ui/Tooltip.tsx
rename {airflow => airflow-core/src/airflow}/ui/src/components/ui/index.ts (100%)
create mode 100644 airflow-core/src/airflow/ui/src/constants/reprocessBehaviourParams.ts
create mode 100644 airflow-core/src/airflow/ui/src/constants/searchParams.ts
rename {airflow => airflow-core/src/airflow}/ui/src/constants/sortParams.ts (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/constants/stateOptions.ts (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/context/colorMode/ColorModeProvider.tsx (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/context/colorMode/index.ts (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/context/colorMode/useColorMode.tsx (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/context/openGroups/OpenGroupsProvider.tsx (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/context/openGroups/index.ts (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/context/openGroups/useOpenGroups.ts (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/context/timezone/TimezoneProvider.tsx (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/context/timezone/index.ts (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/context/timezone/useTimezone.ts (100%)
create mode 100644 airflow-core/src/airflow/ui/src/hooks/useSelectedVersion.ts
create mode 100644 airflow-core/src/airflow/ui/src/layouts/BaseLayout.tsx
rename {airflow => airflow-core/src/airflow}/ui/src/layouts/DagsLayout.tsx (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/layouts/Details/DagBreadcrumb.tsx (100%)
create mode 100644 airflow-core/src/airflow/ui/src/layouts/Details/DagRunSelect.tsx
create mode 100644 airflow-core/src/airflow/ui/src/layouts/Details/DetailsLayout.tsx
rename {airflow => airflow-core/src/airflow}/ui/src/layouts/Details/Gantt/Gantt.tsx (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/layouts/Details/Gantt/index.ts (100%)
create mode 100644 airflow-core/src/airflow/ui/src/layouts/Details/Graph/Graph.tsx
rename {airflow => airflow-core/src/airflow}/ui/src/layouts/Details/Graph/index.ts (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/layouts/Details/Grid/Bar.tsx (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/layouts/Details/Grid/DurationAxis.tsx (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/layouts/Details/Grid/DurationTick.tsx (100%)
create mode 100644 airflow-core/src/airflow/ui/src/layouts/Details/Grid/Grid.tsx
rename {airflow => airflow-core/src/airflow}/ui/src/layouts/Details/Grid/GridButton.tsx (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/layouts/Details/Grid/GridTI.tsx (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/layouts/Details/Grid/TaskInstancesColumn.tsx (100%)
create mode 100644 airflow-core/src/airflow/ui/src/layouts/Details/Grid/TaskNames.tsx
rename {airflow => airflow-core/src/airflow}/ui/src/layouts/Details/Grid/index.ts (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/layouts/Details/Grid/utils.ts (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/layouts/Details/NavTabs.tsx (100%)
create mode 100644 airflow-core/src/airflow/ui/src/layouts/Details/PanelButtons.tsx
rename {airflow => airflow-core/src/airflow}/ui/src/layouts/Details/ToggleGroups.tsx (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/layouts/Nav/AdminButton.tsx (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/layouts/Nav/BrowseButton.tsx (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/layouts/Nav/DocsButton.tsx (100%)
create mode 100644 airflow-core/src/airflow/ui/src/layouts/Nav/LogoutModal.tsx
create mode 100644 airflow-core/src/airflow/ui/src/layouts/Nav/Nav.tsx
rename {airflow => airflow-core/src/airflow}/ui/src/layouts/Nav/NavButton.tsx (100%)
create mode 100644 airflow-core/src/airflow/ui/src/layouts/Nav/PluginMenus.tsx
create mode 100644 airflow-core/src/airflow/ui/src/layouts/Nav/SecurityButton.tsx
create mode 100644 airflow-core/src/airflow/ui/src/layouts/Nav/TimezoneModal.tsx
rename {airflow => airflow-core/src/airflow}/ui/src/layouts/Nav/TimezoneSelector.tsx (100%)
create mode 100644 airflow-core/src/airflow/ui/src/layouts/Nav/UserSettingsButton.tsx
rename {airflow => airflow-core/src/airflow}/ui/src/layouts/Nav/index.ts (100%)
create mode 100644 airflow-core/src/airflow/ui/src/main.tsx
create mode 100644 airflow-core/src/airflow/ui/src/mocks/handlers/config.ts
create mode 100644 airflow-core/src/airflow/ui/src/mocks/handlers/dag.ts
create mode 100644 airflow-core/src/airflow/ui/src/mocks/handlers/dags.ts
rename {airflow => airflow-core/src/airflow}/ui/src/mocks/handlers/index.ts (100%)
create mode 100644 airflow-core/src/airflow/ui/src/mocks/handlers/log.ts
create mode 100644 airflow-core/src/airflow/ui/src/pages/Asset/Asset.tsx
create mode 100644 airflow-core/src/airflow/ui/src/pages/Asset/AssetGraph.tsx
create mode 100644 airflow-core/src/airflow/ui/src/pages/Asset/CreateAssetEvent.tsx
create mode 100644 airflow-core/src/airflow/ui/src/pages/Asset/CreateAssetEventModal.tsx
rename {airflow => airflow-core/src/airflow}/ui/src/pages/Asset/Header.tsx (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/pages/Asset/index.ts (100%)
create mode 100644 airflow-core/src/airflow/ui/src/pages/AssetsList/AssetsList.tsx
create mode 100644 airflow-core/src/airflow/ui/src/pages/AssetsList/DependencyPopover.tsx
rename {airflow => airflow-core/src/airflow}/ui/src/pages/AssetsList/index.ts (100%)
create mode 100644 airflow-core/src/airflow/ui/src/pages/Connections/AddConnectionButton.tsx
create mode 100644 airflow-core/src/airflow/ui/src/pages/Connections/ConnectionForm.tsx
create mode 100644 airflow-core/src/airflow/ui/src/pages/Connections/ConnectionStandardFields.tsx
create mode 100644 airflow-core/src/airflow/ui/src/pages/Connections/Connections.tsx
create mode 100644 airflow-core/src/airflow/ui/src/pages/Connections/DeleteConnectionButton.tsx
create mode 100644 airflow-core/src/airflow/ui/src/pages/Connections/EditConnectionButton.tsx
rename {airflow => airflow-core/src/airflow}/ui/src/pages/Connections/index.ts (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/pages/Dag/Backfills/Backfills.tsx (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/pages/Dag/Backfills/index.ts (100%)
create mode 100644 airflow-core/src/airflow/ui/src/pages/Dag/Code/Code.tsx
rename {airflow => airflow-core/src/airflow}/ui/src/pages/Dag/Code/index.ts (100%)
create mode 100644 airflow-core/src/airflow/ui/src/pages/Dag/Dag.tsx
rename {airflow => airflow-core/src/airflow}/ui/src/pages/Dag/DagHeader.test.tsx (100%)
create mode 100644 airflow-core/src/airflow/ui/src/pages/Dag/Details.tsx
create mode 100644 airflow-core/src/airflow/ui/src/pages/Dag/Header.tsx
rename {airflow => airflow-core/src/airflow}/ui/src/pages/Dag/Overview/FailedLogs.tsx (100%)
create mode 100644 airflow-core/src/airflow/ui/src/pages/Dag/Overview/Overview.tsx
rename {airflow => airflow-core/src/airflow}/ui/src/pages/Dag/Overview/TaskLogPreview.tsx (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/pages/Dag/Overview/index.ts (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/pages/Dag/Tasks/TaskCard.tsx (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/pages/Dag/Tasks/TaskRecentRuns.tsx (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/pages/Dag/Tasks/Tasks.tsx (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/pages/Dag/Tasks/index.ts (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/pages/Dag/index.ts (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/pages/DagRuns.tsx (100%)
create mode 100644 airflow-core/src/airflow/ui/src/pages/DagsList/AssetSchedule.tsx
create mode 100644 airflow-core/src/airflow/ui/src/pages/DagsList/DagCard.test.tsx
rename {airflow => airflow-core/src/airflow}/ui/src/pages/DagsList/DagCard.tsx (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/pages/DagsList/DagTags.tsx (100%)
create mode 100644 airflow-core/src/airflow/ui/src/pages/DagsList/DagsFilters.tsx
rename {airflow => airflow-core/src/airflow}/ui/src/pages/DagsList/DagsList.test.tsx (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/pages/DagsList/DagsList.tsx (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/pages/DagsList/RecentRuns.tsx (100%)
create mode 100644 airflow-core/src/airflow/ui/src/pages/DagsList/Schedule.tsx
rename {airflow => airflow-core/src/airflow}/ui/src/pages/DagsList/SortSelect.tsx (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/pages/DagsList/index.ts (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/pages/Dashboard/Dashboard.tsx (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/pages/Dashboard/Health/Health.tsx (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/pages/Dashboard/Health/HealthBadge.tsx (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/pages/Dashboard/Health/HealthSection.tsx (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/pages/Dashboard/Health/index.ts (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/pages/Dashboard/HistoricalMetrics/DagRunMetrics.tsx (100%)
create mode 100644 airflow-core/src/airflow/ui/src/pages/Dashboard/HistoricalMetrics/HistoricalMetrics.tsx
rename {airflow => airflow-core/src/airflow}/ui/src/pages/Dashboard/HistoricalMetrics/MetricSection.tsx (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/pages/Dashboard/HistoricalMetrics/MetricSectionSkeleton.tsx (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/pages/Dashboard/HistoricalMetrics/TaskInstanceMetrics.tsx (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/pages/Dashboard/HistoricalMetrics/index.ts (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/pages/Dashboard/Stats/DAGImportErrors.tsx (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/pages/Dashboard/Stats/DAGImportErrorsModal.tsx (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/pages/Dashboard/Stats/DagFilterButton.tsx (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/pages/Dashboard/Stats/Stats.tsx (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/pages/Dashboard/Stats/index.ts (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/pages/Dashboard/index.ts (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/pages/Error.tsx (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/pages/Events/Events.tsx (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/pages/Events/index.tsx (100%)
create mode 100644 airflow-core/src/airflow/ui/src/pages/MappedTaskInstance/Header.tsx
create mode 100644 airflow-core/src/airflow/ui/src/pages/MappedTaskInstance/MappedTaskInstance.tsx
rename {airflow => airflow-core/src/airflow}/ui/src/pages/MappedTaskInstance/index.ts (100%)
create mode 100644 airflow-core/src/airflow/ui/src/pages/Plugins.tsx
rename {airflow => airflow-core/src/airflow}/ui/src/pages/Pools/AddPoolButton.tsx (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/pages/Pools/DeletePoolButton.tsx (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/pages/Pools/EditPoolButton.tsx (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/pages/Pools/PoolBar.tsx (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/pages/Pools/PoolForm.tsx (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/pages/Pools/Pools.tsx (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/pages/Pools/index.tsx (100%)
create mode 100644 airflow-core/src/airflow/ui/src/pages/Providers.tsx
create mode 100644 airflow-core/src/airflow/ui/src/pages/Run/Details.tsx
rename {airflow => airflow-core/src/airflow}/ui/src/pages/Run/Header.tsx (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/pages/Run/Run.tsx (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/pages/Run/index.ts (100%)
create mode 100644 airflow-core/src/airflow/ui/src/pages/Security.tsx
rename {airflow => airflow-core/src/airflow}/ui/src/pages/Task/Header.tsx (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/pages/Task/Overview/Overview.tsx (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/pages/Task/Overview/index.ts (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/pages/Task/Task.tsx (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/pages/Task/index.ts (100%)
create mode 100644 airflow-core/src/airflow/ui/src/pages/TaskInstance/BlockingDeps.tsx
create mode 100644 airflow-core/src/airflow/ui/src/pages/TaskInstance/Details.tsx
rename {airflow => airflow-core/src/airflow}/ui/src/pages/TaskInstance/ExtraLinks.tsx (100%)
create mode 100644 airflow-core/src/airflow/ui/src/pages/TaskInstance/Header.tsx
rename {airflow => airflow-core/src/airflow}/ui/src/pages/TaskInstance/Logs/Logs.test.tsx (100%)
create mode 100644 airflow-core/src/airflow/ui/src/pages/TaskInstance/Logs/Logs.tsx
create mode 100644 airflow-core/src/airflow/ui/src/pages/TaskInstance/Logs/TaskLogContent.tsx
create mode 100644 airflow-core/src/airflow/ui/src/pages/TaskInstance/Logs/TaskLogHeader.tsx
rename {airflow => airflow-core/src/airflow}/ui/src/pages/TaskInstance/Logs/index.ts (100%)
create mode 100644 airflow-core/src/airflow/ui/src/pages/TaskInstance/RenderedTemplates.tsx
rename {airflow => airflow-core/src/airflow}/ui/src/pages/TaskInstance/TaskInstance.tsx (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/pages/TaskInstance/TriggererInfo.tsx (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/pages/TaskInstance/index.ts (100%)
create mode 100644 airflow-core/src/airflow/ui/src/pages/TaskInstances/TaskInstances.tsx
rename {airflow => airflow-core/src/airflow}/ui/src/pages/TaskInstances/TaskInstancesFilter.tsx (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/pages/TaskInstances/index.ts (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/pages/Variables/DeleteVariablesButton.tsx (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/pages/Variables/ImportVariablesButton.tsx (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/pages/Variables/ImportVariablesForm.tsx (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/pages/Variables/ManageVariable/AddVariableButton.tsx (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/pages/Variables/ManageVariable/DeleteVariableButton.tsx (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/pages/Variables/ManageVariable/EditVariableButton.tsx (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/pages/Variables/ManageVariable/VariableForm.tsx (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/pages/Variables/Variables.tsx (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/pages/Variables/index.tsx (100%)
create mode 100644 airflow-core/src/airflow/ui/src/pages/XCom/XCom.tsx
rename {airflow => airflow-core/src/airflow}/ui/src/pages/XCom/XComEntry.tsx (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/pages/XCom/index.ts (100%)
create mode 100644 airflow-core/src/airflow/ui/src/queries/useAddConnection.ts
rename {airflow => airflow-core/src/airflow}/ui/src/queries/useAddPool.ts (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/queries/useAddVariable.ts (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/queries/useBulkDeleteVariables.ts (100%)
create mode 100644 airflow-core/src/airflow/ui/src/queries/useClearDagRunDryRun.ts
rename {airflow => airflow-core/src/airflow}/ui/src/queries/useClearRun.ts (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/queries/useClearTaskInstances.ts (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/queries/useClearTaskInstancesDryRun.ts (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/queries/useConfig.tsx (100%)
create mode 100644 airflow-core/src/airflow/ui/src/queries/useConnectionTypeMeta.ts
create mode 100644 airflow-core/src/airflow/ui/src/queries/useCreateBackfill.ts
create mode 100644 airflow-core/src/airflow/ui/src/queries/useCreateBackfillDryRun.ts
create mode 100644 airflow-core/src/airflow/ui/src/queries/useDagParams.ts
rename {airflow => airflow-core/src/airflow}/ui/src/queries/useDagParsing.ts (100%)
create mode 100644 airflow-core/src/airflow/ui/src/queries/useDags.tsx
create mode 100644 airflow-core/src/airflow/ui/src/queries/useDeleteConnection.ts
rename {airflow => airflow-core/src/airflow}/ui/src/queries/useDeletePool.ts (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/queries/useDeleteVariable.ts (100%)
create mode 100644 airflow-core/src/airflow/ui/src/queries/useDependencyGraph.ts
create mode 100644 airflow-core/src/airflow/ui/src/queries/useEditConnection.tsx
rename {airflow => airflow-core/src/airflow}/ui/src/queries/useEditPool.ts (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/queries/useEditVariable.ts (100%)
create mode 100644 airflow-core/src/airflow/ui/src/queries/useGrid.ts
rename {airflow => airflow-core/src/airflow}/ui/src/queries/useImportVariables.ts (100%)
create mode 100644 airflow-core/src/airflow/ui/src/queries/useLogs.tsx
create mode 100644 airflow-core/src/airflow/ui/src/queries/useParamStore.ts
rename {airflow => airflow-core/src/airflow}/ui/src/queries/usePatchDagRun.ts (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/queries/usePatchTaskInstance.ts (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/queries/usePatchTaskInstanceDryRun.ts (100%)
create mode 100644 airflow-core/src/airflow/ui/src/queries/useTogglePause.ts
rename {airflow => airflow-core/src/airflow}/ui/src/queries/useTrigger.ts (100%)
create mode 100644 airflow-core/src/airflow/ui/src/queryClient.ts
create mode 100644 airflow-core/src/airflow/ui/src/router.tsx
rename {airflow => airflow-core/src/airflow}/ui/src/theme.ts (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/utils/AppWrapper.tsx (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/utils/ChakraWrapper.test.tsx (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/utils/ChakraWrapper.tsx (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/utils/RouterWrapper.test.tsx (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/utils/RouterWrapper.tsx (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/utils/TrimText.tsx (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/utils/Wrapper.tsx (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/utils/advancedSelectStyles.ts (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/utils/capitalize.ts (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/utils/datetime_utils.ts (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/utils/downloadJson.ts (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/utils/getMetaKey.ts (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/utils/index.ts (100%)
create mode 100644 airflow-core/src/airflow/ui/src/utils/links.ts
rename {airflow => airflow-core/src/airflow}/ui/src/utils/logs.ts (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/utils/option.ts (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/utils/pluralize.test.ts (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/utils/pluralize.ts (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/utils/query.ts (100%)
create mode 100644 airflow-core/src/airflow/ui/src/utils/tokenHandler.test.ts
create mode 100644 airflow-core/src/airflow/ui/src/utils/tokenHandler.ts
rename {airflow => airflow-core/src/airflow}/ui/src/utils/trimTextFn.ts (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/utils/useContainerWidth.ts (100%)
rename {airflow => airflow-core/src/airflow}/ui/src/vite-env.d.ts (100%)
rename {airflow => airflow-core/src/airflow}/ui/testsSetup.ts (100%)
rename {airflow => airflow-core/src/airflow}/ui/tsconfig.app.json (100%)
rename {airflow => airflow-core/src/airflow}/ui/tsconfig.dev.json (100%)
rename {airflow => airflow-core/src/airflow}/ui/tsconfig.json (100%)
rename {airflow => airflow-core/src/airflow}/ui/tsconfig.node.json (100%)
rename {airflow => airflow-core/src/airflow}/ui/vite.config.ts (100%)
rename {airflow/serialization/serializers => airflow-core/src/airflow/utils}/__init__.py (100%)
rename {airflow => airflow-core/src/airflow}/utils/api_migration.py (100%)
create mode 100644 airflow-core/src/airflow/utils/cli.py
rename {airflow => airflow-core/src/airflow}/utils/cli_action_loggers.py (100%)
rename {airflow => airflow-core/src/airflow}/utils/code_utils.py (100%)
create mode 100644 airflow-core/src/airflow/utils/configuration.py
create mode 100644 airflow-core/src/airflow/utils/context.py
rename {airflow => airflow-core/src/airflow}/utils/dag_cycle_tester.py (100%)
rename {airflow => airflow-core/src/airflow}/utils/dag_edges.py (100%)
rename {airflow => airflow-core/src/airflow}/utils/dag_parsing_context.py (100%)
rename {airflow => airflow-core/src/airflow}/utils/dates.py (100%)
create mode 100644 airflow-core/src/airflow/utils/db.py
create mode 100644 airflow-core/src/airflow/utils/db_cleanup.py
create mode 100644 airflow-core/src/airflow/utils/db_manager.py
rename {airflow => airflow-core/src/airflow}/utils/decorators.py (100%)
rename {airflow => airflow-core/src/airflow}/utils/deprecation_tools.py (100%)
rename {airflow => airflow-core/src/airflow}/utils/docs.py (100%)
create mode 100644 airflow-core/src/airflow/utils/dot_renderer.py
create mode 100644 airflow-core/src/airflow/utils/edgemodifier.py
create mode 100644 airflow-core/src/airflow/utils/email.py
rename {airflow => airflow-core/src/airflow}/utils/entry_points.py (100%)
rename {airflow => airflow-core/src/airflow}/utils/event_scheduler.py (100%)
create mode 100644 airflow-core/src/airflow/utils/file.py
rename {airflow => airflow-core/src/airflow}/utils/hashlib_wrapper.py (100%)
create mode 100644 airflow-core/src/airflow/utils/helpers.py
create mode 100644 airflow-core/src/airflow/utils/json.py
rename {airflow => airflow-core/src/airflow}/utils/log/__init__.py (100%)
rename {airflow => airflow-core/src/airflow}/utils/log/action_logger.py (100%)
create mode 100644 airflow-core/src/airflow/utils/log/colored_log.py
create mode 100644 airflow-core/src/airflow/utils/log/file_processor_handler.py
create mode 100644 airflow-core/src/airflow/utils/log/file_task_handler.py
rename {airflow => airflow-core/src/airflow}/utils/log/json_formatter.py (100%)
rename {airflow => airflow-core/src/airflow}/utils/log/log_reader.py (100%)
create mode 100644 airflow-core/src/airflow/utils/log/logging_mixin.py
rename {airflow => airflow-core/src/airflow}/utils/log/non_caching_file_handler.py (100%)
rename {airflow => airflow-core/src/airflow}/utils/log/task_handler_with_custom_formatter.py (100%)
rename {airflow => airflow-core/src/airflow}/utils/log/timezone_aware.py (100%)
rename {airflow => airflow-core/src/airflow}/utils/mixins.py (100%)
rename {airflow => airflow-core/src/airflow}/utils/module_loading.py (100%)
rename {airflow => airflow-core/src/airflow}/utils/net.py (100%)
create mode 100644 airflow-core/src/airflow/utils/operator_helpers.py
rename {airflow => airflow-core/src/airflow}/utils/operator_resources.py (100%)
rename {airflow => airflow-core/src/airflow}/utils/orm_event_handlers.py (100%)
rename {airflow => airflow-core/src/airflow}/utils/platform.py (100%)
rename {airflow => airflow-core/src/airflow}/utils/process_utils.py (100%)
rename {airflow => airflow-core/src/airflow}/utils/providers_configuration_loader.py (100%)
create mode 100644 airflow-core/src/airflow/utils/retries.py
rename {airflow => airflow-core/src/airflow}/utils/scheduler_health.py (100%)
create mode 100644 airflow-core/src/airflow/utils/serve_logs.py
rename {airflow => airflow-core/src/airflow}/utils/session.py (100%)
rename {airflow => airflow-core/src/airflow}/utils/setup_teardown.py (100%)
rename {airflow => airflow-core/src/airflow}/utils/singleton.py (100%)
rename {airflow => airflow-core/src/airflow}/utils/sqlalchemy.py (100%)
create mode 100644 airflow-core/src/airflow/utils/state.py
rename {airflow => airflow-core/src/airflow}/utils/strings.py (100%)
create mode 100644 airflow-core/src/airflow/utils/task_group.py
rename {airflow => airflow-core/src/airflow}/utils/task_instance_session.py (100%)
rename {airflow => airflow-core/src/airflow}/utils/timeout.py (100%)
rename {airflow => airflow-core/src/airflow}/utils/timezone.py (100%)
rename {airflow => airflow-core/src/airflow}/utils/trigger_rule.py (100%)
rename {airflow => airflow-core/src/airflow}/utils/types.py (100%)
rename {airflow => airflow-core/src/airflow}/utils/warnings.py (100%)
rename {airflow => airflow-core/src/airflow}/utils/weight_rule.py (100%)
rename {airflow => airflow-core/src/airflow}/utils/xcom.py (100%)
create mode 100644 airflow-core/src/airflow/utils/yaml.py
rename {airflow => airflow-core/src/airflow}/version.py (100%)
create mode 100644 airflow-core/tests/conftest.py
rename {tests => airflow-core/tests}/deprecations_ignore.yml (100%)
copy {providers/airbyte/src/airflow => airflow-core/tests/integration}/__init__.py (100%)
rename {dev/provider_packages => airflow-core/tests/integration/cli}/__init__.py (100%)
copy {airflow/api_connexion => airflow-core/tests/integration/cli/commands}/__init__.py (100%)
rename {tests => airflow-core/tests}/integration/cli/commands/test_celery_command.py (100%)
copy {airflow/api_connexion => airflow-core/tests/integration/executors}/__init__.py (100%)
rename {tests => airflow-core/tests}/integration/executors/test_celery_executor.py (100%)
copy {airflow/api_connexion => airflow-core/tests/integration/security}/__init__.py (100%)
rename {tests => airflow-core/tests}/integration/security/test_kerberos.py (100%)
copy {providers/airbyte/src/airflow => airflow-core/tests/system}/__init__.py (100%)
rename {tests => airflow-core/tests}/system/conftest.py (100%)
copy {airflow/api_connexion => airflow-core/tests/system/core}/__init__.py (100%)
rename {tests => airflow-core/tests}/system/core/example_external_task_child_deferrable.py (100%)
rename {tests => airflow-core/tests}/system/core/example_external_task_parent_deferrable.py (100%)
create mode 100644 airflow-core/tests/system/example_empty.py
copy {providers/airbyte/src/airflow => airflow-core/tests/unit}/__init__.py (100%)
copy {airflow/api_connexion => airflow-core/tests/unit/always}/__init__.py (100%)
create mode 100644 airflow-core/tests/unit/always/test_connection.py
create mode 100644 airflow-core/tests/unit/always/test_example_dags.py
rename {tests => airflow-core/tests/unit}/always/test_pandas.py (100%)
create mode 100644 airflow-core/tests/unit/always/test_project_structure.py
create mode 100644 airflow-core/tests/unit/always/test_providers_manager.py
rename {tests => airflow-core/tests/unit}/always/test_secrets.py (100%)
rename {tests => airflow-core/tests/unit}/always/test_secrets_backends.py (100%)
rename {tests => airflow-core/tests/unit}/always/test_secrets_local_filesystem.py (100%)
copy {airflow/api_connexion => airflow-core/tests/unit/api}/__init__.py (100%)
copy {airflow/api_connexion => airflow-core/tests/unit/api/common}/__init__.py (100%)
rename {tests => airflow-core/tests/unit}/api/common/test_airflow_health.py (100%)
rename {tests => airflow-core/tests/unit}/api/common/test_mark_tasks.py (100%)
copy {airflow/api_connexion => airflow-core/tests/unit/api_fastapi}/__init__.py (100%)
copy {airflow/api_connexion => airflow-core/tests/unit/api_fastapi/auth}/__init__.py (100%)
copy {airflow/api_connexion => airflow-core/tests/unit/api_fastapi/auth/managers}/__init__.py (100%)
copy {airflow/api_connexion => airflow-core/tests/unit/api_fastapi/auth/managers/simple}/__init__.py (100%)
create mode 100644 airflow-core/tests/unit/api_fastapi/auth/managers/simple/conftest.py
copy {airflow/api_connexion => airflow-core/tests/unit/api_fastapi/auth/managers/simple/routes}/__init__.py (100%)
create mode 100644 airflow-core/tests/unit/api_fastapi/auth/managers/simple/routes/test_login.py
copy {airflow/api_connexion => airflow-core/tests/unit/api_fastapi/auth/managers/simple/services}/__init__.py (100%)
create mode 100644 airflow-core/tests/unit/api_fastapi/auth/managers/simple/services/test_login.py
create mode 100644 airflow-core/tests/unit/api_fastapi/auth/managers/simple/test_simple_auth_manager.py
rename {tests => airflow-core/tests/unit/api_fastapi}/auth/managers/simple/test_user.py (100%)
create mode 100644 airflow-core/tests/unit/api_fastapi/auth/managers/test_base_auth_manager.py
create mode 100644 airflow-core/tests/unit/api_fastapi/auth/test_tokens.py
copy {airflow/api_connexion => airflow-core/tests/unit/api_fastapi/common}/__init__.py (100%)
rename {tests => airflow-core/tests/unit}/api_fastapi/common/test_exceptions.py (100%)
create mode 100644 airflow-core/tests/unit/api_fastapi/conftest.py
copy {airflow/api_connexion => airflow-core/tests/unit/api_fastapi/core_api}/__init__.py (100%)
copy {airflow/api_connexion => airflow-core/tests/unit/api_fastapi/core_api/routes}/__init__.py (100%)
copy {airflow/api_connexion => airflow-core/tests/unit/api_fastapi/core_api/routes/public}/__init__.py (100%)
create mode 100644 airflow-core/tests/unit/api_fastapi/core_api/routes/public/test_assets.py
create mode 100644 airflow-core/tests/unit/api_fastapi/core_api/routes/public/test_auth.py
create mode 100644 airflow-core/tests/unit/api_fastapi/core_api/routes/public/test_backfills.py
create mode 100644 airflow-core/tests/unit/api_fastapi/core_api/routes/public/test_config.py
create mode 100644 airflow-core/tests/unit/api_fastapi/core_api/routes/public/test_connections.py
create mode 100644 airflow-core/tests/unit/api_fastapi/core_api/routes/public/test_dag_parsing.py
create mode 100644 airflow-core/tests/unit/api_fastapi/core_api/routes/public/test_dag_report.py
create mode 100644 airflow-core/tests/unit/api_fastapi/core_api/routes/public/test_dag_run.py
create mode 100644 airflow-core/tests/unit/api_fastapi/core_api/routes/public/test_dag_sources.py
create mode 100644 airflow-core/tests/unit/api_fastapi/core_api/routes/public/test_dag_stats.py
create mode 100644 airflow-core/tests/unit/api_fastapi/core_api/routes/public/test_dag_tags.py
create mode 100644 airflow-core/tests/unit/api_fastapi/core_api/routes/public/test_dag_versions.py
create mode 100644 airflow-core/tests/unit/api_fastapi/core_api/routes/public/test_dag_warning.py
create mode 100644 airflow-core/tests/unit/api_fastapi/core_api/routes/public/test_dags.py
create mode 100644 airflow-core/tests/unit/api_fastapi/core_api/routes/public/test_event_logs.py
create mode 100644 airflow-core/tests/unit/api_fastapi/core_api/routes/public/test_extra_links.py
create mode 100644 airflow-core/tests/unit/api_fastapi/core_api/routes/public/test_import_error.py
create mode 100644 airflow-core/tests/unit/api_fastapi/core_api/routes/public/test_job.py
create mode 100644 airflow-core/tests/unit/api_fastapi/core_api/routes/public/test_log.py
create mode 100644 airflow-core/tests/unit/api_fastapi/core_api/routes/public/test_monitor.py
create mode 100644 airflow-core/tests/unit/api_fastapi/core_api/routes/public/test_plugins.py
create mode 100644 airflow-core/tests/unit/api_fastapi/core_api/routes/public/test_pools.py
create mode 100644 airflow-core/tests/unit/api_fastapi/core_api/routes/public/test_providers.py
create mode 100644 airflow-core/tests/unit/api_fastapi/core_api/routes/public/test_task_instances.py
create mode 100644 airflow-core/tests/unit/api_fastapi/core_api/routes/public/test_tasks.py
create mode 100644 airflow-core/tests/unit/api_fastapi/core_api/routes/public/test_variables.py
create mode 100644 airflow-core/tests/unit/api_fastapi/core_api/routes/public/test_version.py
create mode 100644 airflow-core/tests/unit/api_fastapi/core_api/routes/public/test_xcom.py
create mode 100644 airflow-core/tests/unit/api_fastapi/core_api/routes/test_routes.py
copy {airflow/api_connexion => airflow-core/tests/unit/api_fastapi/core_api/routes/ui}/__init__.py (100%)
create mode 100644 airflow-core/tests/unit/api_fastapi/core_api/routes/ui/test_assets.py
create mode 100644 airflow-core/tests/unit/api_fastapi/core_api/routes/ui/test_auth.py
create mode 100644 airflow-core/tests/unit/api_fastapi/core_api/routes/ui/test_backfills.py
create mode 100644 airflow-core/tests/unit/api_fastapi/core_api/routes/ui/test_config.py
create mode 100644 airflow-core/tests/unit/api_fastapi/core_api/routes/ui/test_connections.py
create mode 100644 airflow-core/tests/unit/api_fastapi/core_api/routes/ui/test_dags.py
create mode 100644 airflow-core/tests/unit/api_fastapi/core_api/routes/ui/test_dashboard.py
create mode 100644 airflow-core/tests/unit/api_fastapi/core_api/routes/ui/test_dependencies.py
create mode 100644 airflow-core/tests/unit/api_fastapi/core_api/routes/ui/test_grid.py
create mode 100644 airflow-core/tests/unit/api_fastapi/core_api/routes/ui/test_structure.py
create mode 100644 airflow-core/tests/unit/api_fastapi/core_api/test_security.py
copy {airflow/api_connexion => airflow-core/tests/unit/api_fastapi/execution_api}/__init__.py (100%)
create mode 100644 airflow-core/tests/unit/api_fastapi/execution_api/conftest.py
copy {airflow/api_connexion => airflow-core/tests/unit/api_fastapi/execution_api/routes}/__init__.py (100%)
rename {tests => airflow-core/tests/unit}/api_fastapi/execution_api/routes/test_asset_events.py (100%)
rename {tests => airflow-core/tests/unit}/api_fastapi/execution_api/routes/test_assets.py (100%)
create mode 100644 airflow-core/tests/unit/api_fastapi/execution_api/routes/test_connections.py
create mode 100644 airflow-core/tests/unit/api_fastapi/execution_api/routes/test_dag_runs.py
create mode 100644 airflow-core/tests/unit/api_fastapi/execution_api/routes/test_health.py
create mode 100644 airflow-core/tests/unit/api_fastapi/execution_api/routes/test_task_instances.py
create mode 100644 airflow-core/tests/unit/api_fastapi/execution_api/routes/test_variables.py
create mode 100644 airflow-core/tests/unit/api_fastapi/execution_api/routes/test_xcoms.py
create mode 100644 airflow-core/tests/unit/api_fastapi/execution_api/test_app.py
rename {tests => airflow-core/tests/unit}/api_fastapi/test_app.py (100%)
copy {airflow/api_connexion => airflow-core/tests/unit/assets}/__init__.py (100%)
create mode 100644 airflow-core/tests/unit/assets/test_evaluation.py
create mode 100644 airflow-core/tests/unit/assets/test_manager.py
copy {airflow/api_connexion => airflow-core/tests/unit/callbacks}/__init__.py (100%)
rename {tests => airflow-core/tests/unit}/callbacks/test_callback_requests.py (100%)
copy {airflow/api_connexion => airflow-core/tests/unit/charts}/__init__.py (100%)
rename {tests => airflow-core/tests/unit}/charts/conftest.py (100%)
create mode 100644 airflow-core/tests/unit/charts/helm_template_generator.py
create mode 100644 airflow-core/tests/unit/charts/log_groomer.py
rename {airflow/task => airflow-core/tests/unit/cli}/__init__.py (100%)
copy {airflow/api_connexion => airflow-core/tests/unit/cli/api}/__init__.py (100%)
rename {airflow/ti_deps => airflow-core/tests/unit/cli/commands}/__init__.py (100%)
rename {tests => airflow-core/tests/unit}/cli/commands/_common_cli_classes.py (100%)
copy {airflow/api_connexion => airflow-core/tests/unit/cli/commands/local_commands}/__init__.py (100%)
create mode 100644 airflow-core/tests/unit/cli/commands/local_commands/test_api_server_command.py
rename {tests => airflow-core/tests/unit}/cli/commands/local_commands/test_cheat_sheet_command.py (100%)
rename {tests => airflow-core/tests/unit}/cli/commands/local_commands/test_dag_processor_command.py (100%)
create mode 100644 airflow-core/tests/unit/cli/commands/local_commands/test_db_command.py
rename {tests => airflow-core/tests/unit}/cli/commands/local_commands/test_info_command.py (100%)
rename {tests => airflow-core/tests/unit}/cli/commands/local_commands/test_kerberos_command.py (100%)
create mode 100644 airflow-core/tests/unit/cli/commands/local_commands/test_plugins_command.py
rename {tests => airflow-core/tests/unit}/cli/commands/local_commands/test_rotate_fernet_key_command.py (100%)
rename {tests => airflow-core/tests/unit}/cli/commands/local_commands/test_scheduler_command.py (100%)
rename {tests => airflow-core/tests/unit}/cli/commands/local_commands/test_standalone_command.py (100%)
rename {tests => airflow-core/tests/unit}/cli/commands/local_commands/test_triggerer_command.py (100%)
copy {airflow/api_connexion => airflow-core/tests/unit/cli/commands/remote_commands}/__init__.py (100%)
rename {tests => airflow-core/tests/unit}/cli/commands/remote_commands/test_asset_command.py (100%)
rename {tests => airflow-core/tests/unit}/cli/commands/remote_commands/test_backfill_command.py (100%)
create mode 100644 airflow-core/tests/unit/cli/commands/remote_commands/test_config_command.py
create mode 100644 airflow-core/tests/unit/cli/commands/remote_commands/test_connection_command.py
create mode 100644 airflow-core/tests/unit/cli/commands/remote_commands/test_dag_command.py
rename {tests => airflow-core/tests/unit}/cli/commands/remote_commands/test_jobs_command.py (100%)
rename {tests => airflow-core/tests/unit}/cli/commands/remote_commands/test_pool_command.py (100%)
create mode 100644 airflow-core/tests/unit/cli/commands/remote_commands/test_task_command.py
rename {tests => airflow-core/tests/unit}/cli/commands/remote_commands/test_variable_command.py (100%)
rename {tests => airflow-core/tests/unit}/cli/commands/remote_commands/test_version_command.py (100%)
rename {tests => airflow-core/tests/unit}/cli/commands/test_legacy_commands.py (100%)
rename {tests => airflow-core/tests/unit}/cli/conftest.py (100%)
create mode 100644 airflow-core/tests/unit/cli/test_cli_parser.py
rename {tests => airflow-core/tests/unit}/cluster_policies/__init__.py (100%)
copy {airflow/api_connexion => airflow-core/tests/unit/config_templates}/__init__.py (100%)
rename {tests => airflow-core/tests/unit}/config_templates/deprecated.cfg (100%)
rename {tests => airflow-core/tests/unit}/config_templates/deprecated_cmd.cfg (100%)
rename {tests => airflow-core/tests/unit}/config_templates/deprecated_secret.cfg (100%)
rename airflow/utils/__init__.py => airflow-core/tests/unit/config_templates/empty.cfg (100%)
rename {tests => airflow-core/tests/unit}/config_templates/requirements.txt (100%)
copy {airflow/api_connexion => airflow-core/tests/unit/core}/__init__.py (100%)
rename {tests => airflow-core/tests/unit}/core/test_airflow_module.py (100%)
create mode 100644 airflow-core/tests/unit/core/test_configuration.py
rename {tests => airflow-core/tests/unit}/core/test_core.py (100%)
rename {tests => airflow-core/tests/unit}/core/test_example_dags_system.py (100%)
rename {tests => airflow-core/tests/unit}/core/test_exceptions.py (100%)
rename {tests => airflow-core/tests/unit}/core/test_impersonation_tests.py (100%)
rename {tests => airflow-core/tests/unit}/core/test_otel_logger.py (100%)
rename {tests => airflow-core/tests/unit}/core/test_otel_tracer.py (100%)
rename {tests => airflow-core/tests/unit}/core/test_policies.py (100%)
create mode 100644 airflow-core/tests/unit/core/test_sentry.py
rename {tests => airflow-core/tests/unit}/core/test_settings.py (100%)
create mode 100644 airflow-core/tests/unit/core/test_sqlalchemy_config.py
create mode 100644 airflow-core/tests/unit/core/test_stats.py
copy {airflow/api_connexion => airflow-core/tests/unit/dag_processing}/__init__.py (100%)
copy {airflow/api_connexion => airflow-core/tests/unit/dag_processing/bundles}/__init__.py (100%)
create mode 100644 airflow-core/tests/unit/dag_processing/bundles/test_base.py
create mode 100644 airflow-core/tests/unit/dag_processing/bundles/test_dag_bundle_manager.py
create mode 100644 airflow-core/tests/unit/dag_processing/bundles/test_git.py
rename {tests => airflow-core/tests/unit}/dag_processing/bundles/test_local.py (100%)
create mode 100644 airflow-core/tests/unit/dag_processing/test_collection.py
create mode 100644 airflow-core/tests/unit/dag_processing/test_manager.py
create mode 100644 airflow-core/tests/unit/dag_processing/test_processor.py
rename {tests => airflow-core/tests/unit}/dags/.airflowignore (100%)
rename {tests => airflow-core/tests/unit}/dags/.airflowignore_glob (100%)
rename {tests => airflow-core/tests/unit}/dags/.gitignore (100%)
rename {tests => airflow-core/tests/unit}/dags/README.md (100%)
copy {airflow/api_connexion => airflow-core/tests/unit/dags}/__init__.py (100%)
rename {tests => airflow-core/tests/unit}/dags/no_dags.py (100%)
rename {tests => airflow-core/tests/unit}/dags/subdir1/.airflowignore (100%)
copy {airflow/api_connexion => airflow-core/tests/unit/dags/subdir1}/__init__.py (100%)
rename {tests => airflow-core/tests/unit}/dags/subdir1/test_ignore_this.py (100%)
rename {tests => airflow-core/tests/unit}/dags/subdir2/.airflowignore_glob (100%)
copy {airflow/api_connexion => airflow-core/tests/unit/dags/subdir2}/__init__.py (100%)
copy {airflow/api_connexion => airflow-core/tests/unit/dags/subdir2/subdir3}/__init__.py (100%)
rename {tests => airflow-core/tests/unit}/dags/subdir2/subdir3/test_nested_dag.py (100%)
rename {tests => airflow-core/tests/unit}/dags/subdir2/test_dont_ignore_this.py (100%)
rename {tests => airflow-core/tests/unit}/dags/test_assets.py (100%)
rename {tests => airflow-core/tests/unit}/dags/test_backfill_with_upstream_failed_task.py (100%)
rename {tests => airflow-core/tests/unit}/dags/test_cli_triggered_dags.py (100%)
rename {tests => airflow-core/tests/unit}/dags/test_dag_for_db_queries_counter.py (100%)
rename {tests => airflow-core/tests/unit}/dags/test_dag_parsing_context.py (100%)
rename {tests => airflow-core/tests/unit}/dags/test_dag_warnings.py (100%)
rename {tests => airflow-core/tests/unit}/dags/test_dag_with_no_tags.py (100%)
rename {tests => airflow-core/tests/unit}/dags/test_dag_xcom_openlineage.py (100%)
rename {tests => airflow-core/tests/unit}/dags/test_dagrun_fast_follow.py (100%)
rename {tests => airflow-core/tests/unit}/dags/test_default_impersonation.py (100%)
rename {tests => airflow-core/tests/unit}/dags/test_double_trigger.py (100%)
rename {tests => airflow-core/tests/unit}/dags/test_example_bash_operator.py (100%)
create mode 100644 airflow-core/tests/unit/dags/test_external_task_sensor_check_existense.py
rename {tests => airflow-core/tests/unit}/dags/test_failing.py (100%)
rename {tests => airflow-core/tests/unit}/dags/test_future_start_date.py (100%)
rename {tests => airflow-core/tests/unit}/dags/test_heartbeat_failed_fast.py (100%)
rename {tests => airflow-core/tests/unit}/dags/test_impersonation.py (100%)
create mode 100644 airflow-core/tests/unit/dags/test_imports.py
rename {tests => airflow-core/tests/unit}/dags/test_invalid_cron.py (100%)
rename {tests => airflow-core/tests/unit}/dags/test_invalid_dup_task.py (100%)
rename {tests => airflow-core/tests/unit}/dags/test_invalid_param.py (100%)
create mode 100644 airflow-core/tests/unit/dags/test_invalid_param2.py
create mode 100644 airflow-core/tests/unit/dags/test_invalid_param3.py
create mode 100644 airflow-core/tests/unit/dags/test_invalid_param4.py
rename {tests => airflow-core/tests/unit}/dags/test_latest_runs.py (100%)
create mode 100644 airflow-core/tests/unit/dags/test_logging_in_dag.py
rename {tests => airflow-core/tests/unit}/dags/test_mapped_classic.py (100%)
rename {tests => airflow-core/tests/unit}/dags/test_mapped_taskflow.py (100%)
rename {tests => airflow-core/tests/unit}/dags/test_mark_state.py (100%)
rename {tests => airflow-core/tests/unit}/dags/test_miscellaneous.py (100%)
rename {tests => airflow-core/tests/unit}/dags/test_missing_owner.py (100%)
rename {tests => airflow-core/tests/unit}/dags/test_multiple_dags.py (100%)
rename {tests => airflow-core/tests/unit}/dags/test_no_impersonation.py (100%)
rename {tests => airflow-core/tests/unit}/dags/test_on_failure_callback.py (100%)
rename {tests => airflow-core/tests/unit}/dags/test_on_kill.py (100%)
rename {tests => airflow-core/tests/unit}/dags/test_only_empty_tasks.py (100%)
rename {tests => airflow-core/tests/unit}/dags/test_openlineage_execution.py (100%)
rename {tests => airflow-core/tests/unit}/dags/test_parsing_context.py (100%)
rename {tests => airflow-core/tests/unit}/dags/test_scheduler_dags.py (100%)
rename {tests => airflow-core/tests/unit}/dags/test_sensor.py (100%)
rename {tests => airflow-core/tests/unit}/dags/test_task_view_type_check.py (100%)
create mode 100644 airflow-core/tests/unit/dags/test_valid_param.py
create mode 100644 airflow-core/tests/unit/dags/test_valid_param2.py
rename {tests => airflow-core/tests/unit}/dags/test_with_non_default_owner.py (100%)
copy airflow/api_connexion/__init__.py => airflow-core/tests/unit/dags/test_zip/file_no_airflow_dag.py (100%)
rename {tests => airflow-core/tests/unit}/dags/test_zip/test_zip.py (100%)
copy {airflow/api_connexion => airflow-core/tests/unit/dags/test_zip/test_zip_module}/__init__.py (100%)
rename {tests => airflow-core/tests/unit}/dags/test_zip/test_zip_module/test.py (100%)
rename {tests => airflow-core/tests/unit}/dags_corrupted/README.md (100%)
copy {airflow/api_connexion => airflow-core/tests/unit/dags_corrupted}/__init__.py (100%)
rename {tests => airflow-core/tests/unit}/dags_corrupted/test_impersonation_custom.py (100%)
rename {tests => airflow-core/tests/unit}/dags_corrupted/test_nonstring_owner.py (100%)
copy {airflow/api_connexion => airflow-core/tests/unit/dags_with_system_exit}/__init__.py (100%)
rename {tests => airflow-core/tests/unit}/dags_with_system_exit/a_system_exit.py (100%)
rename {tests => airflow-core/tests/unit}/dags_with_system_exit/b_test_scheduler_dags.py (100%)
rename {tests => airflow-core/tests/unit}/dags_with_system_exit/c_system_exit.py (100%)
copy {airflow/api_connexion => airflow-core/tests/unit/datasets}/__init__.py (100%)
rename {tests => airflow-core/tests/unit}/datasets/test_dataset.py (100%)
copy {airflow/api_connexion => airflow-core/tests/unit/decorators}/__init__.py (100%)
create mode 100644 airflow-core/tests/unit/decorators/test_bash.py
create mode 100644 airflow-core/tests/unit/decorators/test_branch_external_python.py
create mode 100644 airflow-core/tests/unit/decorators/test_branch_python.py
create mode 100644 airflow-core/tests/unit/decorators/test_branch_virtualenv.py
rename {tests => airflow-core/tests/unit}/decorators/test_condition.py (100%)
rename {tests => airflow-core/tests/unit}/decorators/test_external_python.py (100%)
create mode 100644 airflow-core/tests/unit/decorators/test_mapped.py
rename {tests => airflow-core/tests/unit}/decorators/test_python_virtualenv.py (100%)
create mode 100644 airflow-core/tests/unit/decorators/test_sensor.py
rename {tests => airflow-core/tests/unit}/decorators/test_setup_teardown.py (100%)
create mode 100644 airflow-core/tests/unit/decorators/test_short_circuit.py
rename {tests => airflow-core/tests/unit}/decorators/test_task_group.py (100%)
rename {tests => airflow-core/tests/unit}/executors/.gitignore (100%)
copy {airflow/api/auth => airflow-core/tests/unit/executors}/__init__.py (100%)
rename {tests => airflow-core/tests/unit}/executors/test_base_executor.py (100%)
rename {tests => airflow-core/tests/unit}/executors/test_debug_executor.py (100%)
create mode 100644 airflow-core/tests/unit/executors/test_executor_loader.py
rename {tests => airflow-core/tests/unit}/executors/test_executor_utils.py (100%)
rename {tests => airflow-core/tests/unit}/executors/test_local_executor.py (100%)
rename {tests => airflow-core/tests/unit}/executors/test_sequential_executor.py (100%)
copy {airflow/api/auth => airflow-core/tests/unit/hooks}/__init__.py (100%)
create mode 100644 airflow-core/tests/unit/hooks/test_base.py
copy {airflow/api_connexion => airflow-core/tests/unit/io}/__init__.py (100%)
rename {tests => airflow-core/tests/unit}/io/test_path.py (100%)
rename {tests => airflow-core/tests/unit}/io/test_wrapper.py (100%)
copy {airflow/api/auth => airflow-core/tests/unit/jobs}/__init__.py (100%)
create mode 100644 airflow-core/tests/unit/jobs/test_base_job.py
create mode 100644 airflow-core/tests/unit/jobs/test_scheduler_job.py
create mode 100644 airflow-core/tests/unit/jobs/test_triggerer_job.py
copy {airflow/api/auth => airflow-core/tests/unit/lineage}/__init__.py (100%)
rename {tests => airflow-core/tests/unit}/lineage/test_hook.py (100%)
create mode 100644 airflow-core/tests/unit/lineage/test_lineage.py
copy {airflow/api/auth => airflow-core/tests/unit/listeners}/__init__.py (100%)
rename {tests => airflow-core/tests/unit}/listeners/asset_listener.py (100%)
rename {tests => airflow-core/tests/unit}/listeners/class_listener.py (100%)
rename {tests => airflow-core/tests/unit}/listeners/dag_import_error_listener.py (100%)
rename {tests => airflow-core/tests/unit}/listeners/dag_listener.py (100%)
rename {tests => airflow-core/tests/unit}/listeners/empty_listener.py (100%)
rename {tests => airflow-core/tests/unit}/listeners/file_write_listener.py (100%)
rename {tests => airflow-core/tests/unit}/listeners/full_listener.py (100%)
rename {tests => airflow-core/tests/unit}/listeners/lifecycle_listener.py (100%)
rename {tests => airflow-core/tests/unit}/listeners/partial_listener.py (100%)
rename {tests => airflow-core/tests/unit}/listeners/slow_listener.py (100%)
create mode 100644 airflow-core/tests/unit/listeners/test_asset_listener.py
create mode 100644 airflow-core/tests/unit/listeners/test_listeners.py
rename {tests => airflow-core/tests/unit}/listeners/throwing_listener.py (100%)
rename {tests => airflow-core/tests/unit}/listeners/very_slow_listener.py (100%)
rename {tests => airflow-core/tests/unit}/listeners/xcom_listener.py (100%)
copy {airflow/api/auth => airflow-core/tests/unit/macros}/__init__.py (100%)
rename {tests => airflow-core/tests/unit}/models/__init__.py (100%)
create mode 100644 airflow-core/tests/unit/models/test_asset.py
create mode 100644 airflow-core/tests/unit/models/test_backfill.py
rename {tests => airflow-core/tests/unit}/models/test_base.py (100%)
create mode 100644 airflow-core/tests/unit/models/test_baseoperator.py
create mode 100644 airflow-core/tests/unit/models/test_cleartasks.py
rename {tests => airflow-core/tests/unit}/models/test_connection.py (100%)
create mode 100644 airflow-core/tests/unit/models/test_dag.py
rename {tests => airflow-core/tests/unit}/models/test_dag_version.py (100%)
create mode 100644 airflow-core/tests/unit/models/test_dagbag.py
create mode 100644 airflow-core/tests/unit/models/test_dagcode.py
create mode 100644 airflow-core/tests/unit/models/test_dagrun.py
create mode 100644 airflow-core/tests/unit/models/test_dagwarning.py
rename {tests => airflow-core/tests/unit}/models/test_deadline.py (100%)
create mode 100644 airflow-core/tests/unit/models/test_mappedoperator.py
rename {tests => airflow-core/tests/unit}/models/test_pool.py (100%)
rename {tests => airflow-core/tests/unit}/models/test_renderedtifields.py (100%)
create mode 100644 airflow-core/tests/unit/models/test_serialized_dag.py
create mode 100644 airflow-core/tests/unit/models/test_taskinstance.py
rename {tests => airflow-core/tests/unit}/models/test_taskmap.py (100%)
rename {tests => airflow-core/tests/unit}/models/test_timestamp.py (100%)
create mode 100644 airflow-core/tests/unit/models/test_trigger.py
create mode 100644 airflow-core/tests/unit/models/test_variable.py
create mode 100644 airflow-core/tests/unit/models/test_xcom.py
rename {tests => airflow-core/tests/unit}/models/test_xcom_arg.py (100%)
copy {airflow/api_connexion => airflow-core/tests/unit/notifications}/__init__.py (100%)
rename {tests => airflow-core/tests/unit}/notifications/test_basenotifier.py (100%)
rename {tests => airflow-core/tests/unit}/notifications/test_notifier.txt (100%)
copy {airflow/api/auth => airflow-core/tests/unit/plugins}/__init__.py (100%)
create mode 100644 airflow-core/tests/unit/plugins/priority_weight_strategy.py
create mode 100644 airflow-core/tests/unit/plugins/test_plugin.py
rename {tests => airflow-core/tests/unit}/plugins/test_plugin_ignore.py (100%)
create mode 100644 airflow-core/tests/unit/plugins/test_plugins_manager.py
copy {airflow/api_connexion => airflow-core/tests/unit/secrets}/__init__.py (100%)
rename {tests => airflow-core/tests/unit}/secrets/test_cache.py (100%)
copy {airflow/api/auth => airflow-core/tests/unit/security}/__init__.py (100%)
rename {tests => airflow-core/tests/unit}/security/test_kerberos.py (100%)
copy {airflow/api/auth => airflow-core/tests/unit/sensors}/__init__.py (100%)
create mode 100644 airflow-core/tests/unit/sensors/test_base.py
create mode 100644 airflow-core/tests/unit/sensors/test_external_task_sensor.py
rename {tests => airflow-core/tests/unit}/sensors/test_filesystem.py (100%)
copy {airflow/api/auth => airflow-core/tests/unit/serialization}/__init__.py (100%)
copy {airflow/api/auth => airflow-core/tests/unit/serialization/serializers}/__init__.py (100%)
rename {tests => airflow-core/tests/unit}/serialization/serializers/test_serializers.py (100%)
create mode 100644 airflow-core/tests/unit/serialization/test_dag_serialization.py
create mode 100644 airflow-core/tests/unit/serialization/test_serde.py
create mode 100644 airflow-core/tests/unit/serialization/test_serialized_objects.py
copy {airflow/api/auth => airflow-core/tests/unit/task}/__init__.py (100%)
rename {tests => airflow-core/tests/unit}/task/conftest.py (100%)
copy {airflow/api_connexion => airflow-core/tests/unit/testconfig}/__init__.py (100%)
copy {airflow/api_connexion => airflow-core/tests/unit/testconfig/conf}/__init__.py (100%)
rename {tests => airflow-core/tests/unit}/testconfig/conf/core-with-trash.xml (100%)
rename {tests => airflow-core/tests/unit}/testconfig/conf/emr-core-site.xml (100%)
rename {tests => airflow-core/tests/unit}/testconfig/conf/ha-core-site.xml (100%)
rename {tests => airflow-core/tests/unit}/testconfig/conf/ha-noport-hdfs-site.xml (100%)
rename {tests => airflow-core/tests/unit}/testconfig/conf/ha-noport-trash-hdfs-site.xml (100%)
rename {tests => airflow-core/tests/unit}/testconfig/conf/ha-port-hdfs-site.xml (100%)
rename {tests => airflow-core/tests/unit}/testconfig/conf/non-ha-port-core-site.xml (100%)
copy {airflow/api/auth => airflow-core/tests/unit/ti_deps}/__init__.py (100%)
copy {airflow/api/auth => airflow-core/tests/unit/ti_deps/contexts}/__init__.py (100%)
copy {airflow/api/auth => airflow-core/tests/unit/ti_deps/deps}/__init__.py (100%)
rename {tests => airflow-core/tests/unit}/ti_deps/deps/fake_models.py (100%)
rename {tests => airflow-core/tests/unit}/ti_deps/deps/test_dag_ti_slots_available_dep.py (100%)
rename {tests => airflow-core/tests/unit}/ti_deps/deps/test_dag_unpaused_dep.py (100%)
rename {tests => airflow-core/tests/unit}/ti_deps/deps/test_dagrun_exists_dep.py (100%)
rename {tests => airflow-core/tests/unit}/ti_deps/deps/test_mapped_task_upstream_dep.py (100%)
rename {tests => airflow-core/tests/unit}/ti_deps/deps/test_not_in_retry_period_dep.py (100%)
create mode 100644 airflow-core/tests/unit/ti_deps/deps/test_not_previously_skipped_dep.py
rename {tests => airflow-core/tests/unit}/ti_deps/deps/test_pool_slots_available_dep.py (100%)
create mode 100644 airflow-core/tests/unit/ti_deps/deps/test_prev_dagrun_dep.py
create mode 100644 airflow-core/tests/unit/ti_deps/deps/test_ready_to_reschedule_dep.py
rename {tests => airflow-core/tests/unit}/ti_deps/deps/test_runnable_exec_date_dep.py (100%)
rename {tests => airflow-core/tests/unit}/ti_deps/deps/test_task_concurrency.py (100%)
rename {tests => airflow-core/tests/unit}/ti_deps/deps/test_task_not_running_dep.py (100%)
create mode 100644 airflow-core/tests/unit/ti_deps/deps/test_trigger_rule_dep.py
rename {tests => airflow-core/tests/unit}/ti_deps/deps/test_valid_state_dep.py (100%)
copy {airflow/api_connexion => airflow-core/tests/unit/timetables}/__init__.py (100%)
create mode 100644 airflow-core/tests/unit/timetables/test_assets_timetable.py
rename {tests => airflow-core/tests/unit}/timetables/test_continuous_timetable.py (100%)
rename {tests => airflow-core/tests/unit}/timetables/test_events_timetable.py (100%)
create mode 100644 airflow-core/tests/unit/timetables/test_interval_timetable.py
create mode 100644 airflow-core/tests/unit/timetables/test_trigger_timetable.py
create mode 100644 airflow-core/tests/unit/timetables/test_workday_timetable.py
copy {airflow/api/auth => airflow-core/tests/unit/utils}/__init__.py (100%)
copy {airflow/api/auth => airflow-core/tests/unit/utils/log}/__init__.py (100%)
rename {tests => airflow-core/tests/unit}/utils/log/test_colored_log.py (100%)
rename {tests => airflow-core/tests/unit}/utils/log/test_file_processor_handler.py (100%)
rename {tests => airflow-core/tests/unit}/utils/log/test_json_formatter.py (100%)
create mode 100644 airflow-core/tests/unit/utils/log/test_log_reader.py
create mode 100644 airflow-core/tests/unit/utils/test_cli_util.py
rename {tests => airflow-core/tests/unit}/utils/test_config.py (100%)
create mode 100644 airflow-core/tests/unit/utils/test_dag_cycle.py
create mode 100644 airflow-core/tests/unit/utils/test_db.py
create mode 100644 airflow-core/tests/unit/utils/test_db_cleanup.py
create mode 100644 airflow-core/tests/unit/utils/test_db_manager.py
rename {tests => airflow-core/tests/unit}/utils/test_decorators.py (100%)
rename {tests => airflow-core/tests/unit}/utils/test_docs.py (100%)
create mode 100644 airflow-core/tests/unit/utils/test_dot_renderer.py
rename {tests => airflow-core/tests/unit}/utils/test_edgemodifier.py (100%)
create mode 100644 airflow-core/tests/unit/utils/test_email.py
rename {tests => airflow-core/tests/unit}/utils/test_entry_points.py (100%)
rename {tests => airflow-core/tests/unit}/utils/test_event_scheduler.py (100%)
create mode 100644 airflow-core/tests/unit/utils/test_file.py
create mode 100644 airflow-core/tests/unit/utils/test_helpers.py
create mode 100644 airflow-core/tests/unit/utils/test_json.py
create mode 100644 airflow-core/tests/unit/utils/test_log_handlers.py
create mode 100644 airflow-core/tests/unit/utils/test_logging_mixin.py
rename {tests => airflow-core/tests/unit}/utils/test_module_loading.py (100%)
create mode 100644 airflow-core/tests/unit/utils/test_net.py
create mode 100644 airflow-core/tests/unit/utils/test_operator_helpers.py
rename {tests => airflow-core/tests/unit}/utils/test_operator_resources.py (100%)
create mode 100644 airflow-core/tests/unit/utils/test_orm_event_handlers.py
rename {tests => airflow-core/tests/unit}/utils/test_preexisting_python_virtualenv_decorator.py (100%)
create mode 100644 airflow-core/tests/unit/utils/test_process_utils.py
create mode 100644 airflow-core/tests/unit/utils/test_retries.py
rename {tests => airflow-core/tests/unit}/utils/test_scheduler_health.py (100%)
create mode 100644 airflow-core/tests/unit/utils/test_serve_logs.py
rename {tests => airflow-core/tests/unit}/utils/test_session.py (100%)
rename {tests => airflow-core/tests/unit}/utils/test_singleton.py (100%)
create mode 100644 airflow-core/tests/unit/utils/test_sqlalchemy.py
create mode 100644 airflow-core/tests/unit/utils/test_state.py
create mode 100644 airflow-core/tests/unit/utils/test_task_group.py
rename {tests => airflow-core/tests/unit}/utils/test_task_handler_with_custom_formatter.py (100%)
rename {tests => airflow-core/tests/unit}/utils/test_timezone.py (100%)
rename {tests => airflow-core/tests/unit}/utils/test_trigger_rule.py (100%)
rename {tests => airflow-core/tests/unit}/utils/test_types.py (100%)
rename {tests => airflow-core/tests/unit}/utils/test_warnings.py (100%)
rename {tests => airflow-core/tests/unit}/utils/test_weight_rule.py (100%)
copy {providers/asana/src/airflow/providers/asana => airflow-ctl}/README.md (100%)
create mode 100644 airflow-ctl/pyproject.toml
create mode 100644 airflow-ctl/src/airflowctl/__init__.py
create mode 100644 airflow-ctl/src/airflowctl/__main__.py
copy {airflow/api_connexion => airflow-ctl/src/airflowctl/api}/__init__.py (100%)
create mode 100644 airflow-ctl/src/airflowctl/api/client.py
copy {airflow/api_connexion => airflow-ctl/src/airflowctl/api/datamodels}/__init__.py (100%)
create mode 100644 airflow-ctl/src/airflowctl/api/datamodels/generated.py
create mode 100644 airflow-ctl/src/airflowctl/api/operations.py
create mode 100644 airflow-ctl/src/airflowctl/ctl/__init__.py
create mode 100644 airflow-ctl/src/airflowctl/ctl/cli_config.py
create mode 100644 airflow-ctl/src/airflowctl/ctl/cli_parser.py
copy {airflow/api_connexion => airflow-ctl/src/airflowctl/ctl/commands}/__init__.py (100%)
create mode 100644 airflow-ctl/src/airflowctl/ctl/commands/auth_command.py
create mode 100644 airflow-ctl/src/airflowctl/exceptions.py
create mode 100644 airflow-ctl/src/airflowctl/typing_compat.py
copy {airflow/api_connexion => airflow-ctl/src/airflowctl/utils}/__init__.py (100%)
create mode 100644 airflow-ctl/src/airflowctl/utils/helpers.py
create mode 100644 airflow-ctl/src/airflowctl/utils/module_loading.py
copy {airflow/api_connexion => airflow-ctl/tests/airflow_ctl}/__init__.py (100%)
create mode 100644 airflow-ctl/tests/airflow_ctl/api/test_client.py
create mode 100644 airflow-ctl/tests/airflow_ctl/api/test_operations.py
copy {airflow/api_connexion => airflow-ctl/tests/airflow_ctl/commands}/__init__.py (100%)
create mode 100644 airflow-ctl/tests/airflow_ctl/commands/test_auth_command.py
create mode 100644 airflow-ctl/tests/conftest.py
delete mode 100644 airflow/_logging/structlog.py
delete mode 100644 airflow/_vendor/__init__.py
delete mode 100644 airflow/api/__init__.py
delete mode 100644 airflow/api/auth/backend/deny_all.py
delete mode 100644 airflow/api/client/__init__.py
delete mode 100644 airflow/api_connexion/schemas/dag_schema.py
delete mode 100644 airflow/api_fastapi/app.py
delete mode 100644 airflow/api_fastapi/common/db/common.py
delete mode 100644 airflow/api_fastapi/common/parameters.py
delete mode 100644 airflow/api_fastapi/common/types.py
delete mode 100644 airflow/api_fastapi/core_api/app.py
delete mode 100644 airflow/api_fastapi/core_api/base.py
delete mode 100644 airflow/api_fastapi/core_api/datamodels/connections.py
delete mode 100644 airflow/api_fastapi/core_api/datamodels/dags.py
delete mode 100644 airflow/api_fastapi/core_api/datamodels/job.py
delete mode 100644 airflow/api_fastapi/core_api/datamodels/ui/config.py
delete mode 100644 airflow/api_fastapi/core_api/datamodels/ui/dags.py
delete mode 100644 airflow/api_fastapi/core_api/datamodels/ui/structure.py
delete mode 100644 airflow/api_fastapi/core_api/openapi/v1-generated.yaml
delete mode 100644 airflow/api_fastapi/core_api/routes/public/__init__.py
delete mode 100644 airflow/api_fastapi/core_api/routes/public/assets.py
delete mode 100644 airflow/api_fastapi/core_api/routes/public/backfills.py
delete mode 100644 airflow/api_fastapi/core_api/routes/public/config.py
delete mode 100644 airflow/api_fastapi/core_api/routes/public/dag_parsing.py
delete mode 100644 airflow/api_fastapi/core_api/routes/public/dag_report.py
delete mode 100644 airflow/api_fastapi/core_api/routes/public/dag_run.py
delete mode 100644 airflow/api_fastapi/core_api/routes/public/dag_sources.py
delete mode 100644 airflow/api_fastapi/core_api/routes/public/dag_stats.py
delete mode 100644 airflow/api_fastapi/core_api/routes/public/dag_tags.py
delete mode 100644 airflow/api_fastapi/core_api/routes/public/dag_versions.py
delete mode 100644 airflow/api_fastapi/core_api/routes/public/dag_warning.py
delete mode 100644 airflow/api_fastapi/core_api/routes/public/dags.py
delete mode 100644 airflow/api_fastapi/core_api/routes/public/extra_links.py
delete mode 100644 airflow/api_fastapi/core_api/routes/public/import_error.py
delete mode 100644 airflow/api_fastapi/core_api/routes/public/job.py
delete mode 100644 airflow/api_fastapi/core_api/routes/public/log.py
delete mode 100644 airflow/api_fastapi/core_api/routes/public/login.py
delete mode 100644 airflow/api_fastapi/core_api/routes/public/plugins.py
delete mode 100644 airflow/api_fastapi/core_api/routes/public/pools.py
delete mode 100644 airflow/api_fastapi/core_api/routes/public/providers.py
delete mode 100644 airflow/api_fastapi/core_api/routes/public/task_instances.py
delete mode 100644 airflow/api_fastapi/core_api/routes/public/tasks.py
delete mode 100644 airflow/api_fastapi/core_api/routes/public/variables.py
delete mode 100644 airflow/api_fastapi/core_api/routes/public/xcom.py
delete mode 100644 airflow/api_fastapi/core_api/routes/ui/__init__.py
delete mode 100644 airflow/api_fastapi/core_api/routes/ui/assets.py
delete mode 100644 airflow/api_fastapi/core_api/routes/ui/backfills.py
delete mode 100644 airflow/api_fastapi/core_api/routes/ui/config.py
delete mode 100644 airflow/api_fastapi/core_api/routes/ui/dags.py
delete mode 100644 airflow/api_fastapi/core_api/routes/ui/dashboard.py
delete mode 100644 airflow/api_fastapi/core_api/routes/ui/dependencies.py
delete mode 100644 airflow/api_fastapi/core_api/routes/ui/grid.py
delete mode 100644 airflow/api_fastapi/core_api/routes/ui/structure.py
delete mode 100644 airflow/api_fastapi/core_api/security.py
delete mode 100644 airflow/api_fastapi/core_api/services/ui/structure.py
delete mode 100644 airflow/api_fastapi/execution_api/app.py
delete mode 100644 airflow/api_fastapi/execution_api/datamodels/asset.py
delete mode 100644 airflow/api_fastapi/execution_api/datamodels/taskinstance.py
delete mode 100644 airflow/api_fastapi/execution_api/datamodels/token.py
delete mode 100644 airflow/api_fastapi/execution_api/datamodels/variable.py
delete mode 100644 airflow/api_fastapi/execution_api/datamodels/xcom.py
delete mode 100644 airflow/api_fastapi/execution_api/deps.py
delete mode 100644 airflow/api_fastapi/execution_api/routes/__init__.py
delete mode 100644 airflow/api_fastapi/execution_api/routes/connections.py
delete mode 100644 airflow/api_fastapi/execution_api/routes/health.py
delete mode 100644 airflow/api_fastapi/execution_api/routes/task_instances.py
delete mode 100644 airflow/api_fastapi/execution_api/routes/variables.py
delete mode 100644 airflow/api_fastapi/execution_api/routes/xcoms.py
delete mode 100644 airflow/api_fastapi/logging/decorators.py
delete mode 100644 airflow/assets/manager.py
delete mode 100644 airflow/auth/managers/base_auth_manager.py
delete mode 100644 airflow/auth/managers/models/batch_apis.py
delete mode 100644 airflow/auth/managers/models/resource_details.py
delete mode 100644 airflow/auth/managers/simple/openapi/v1-generated.yaml
delete mode 100644 airflow/auth/managers/simple/routes/login.py
delete mode 100644 airflow/auth/managers/simple/services/login.py
delete mode 100644 airflow/auth/managers/simple/simple_auth_manager.py
delete mode 100644 airflow/auth/managers/simple/ui/dev/index.html
delete mode 100644 airflow/auth/managers/simple/ui/index.html
delete mode 100644 airflow/auth/managers/simple/ui/package-lock.json
delete mode 100644 airflow/auth/managers/simple/ui/package.json
delete mode 100644 airflow/auth/managers/simple/ui/pnpm-lock.yaml
delete mode 100644 airflow/auth/managers/simple/ui/src/login/Login.tsx
delete mode 100644 airflow/auth/managers/simple/ui/src/main.tsx
delete mode 100644 airflow/auth/managers/simple/ui/src/queryClient.ts
delete mode 100644 airflow/auth/managers/simple/ui/src/router.tsx
delete mode 100644 airflow/auth/managers/simple/ui/vite.config.ts
delete mode 100644 airflow/auth/managers/simple/user.py
delete mode 100644 airflow/auth/managers/utils/fab.py
delete mode 100644 airflow/callbacks/callback_requests.py
delete mode 100644 airflow/cli/cli_config.py
delete mode 100644 airflow/cli/cli_parser.py
delete mode 100644 airflow/cli/commands/local_commands/api_server_command.py
delete mode 100644 airflow/cli/commands/local_commands/standalone_command.py
delete mode 100644 airflow/cli/commands/remote_commands/config_command.py
delete mode 100644 airflow/cli/commands/remote_commands/dag_command.py
delete mode 100644 airflow/cli/commands/remote_commands/provider_command.py
delete mode 100644 airflow/cli/commands/remote_commands/task_command.py
delete mode 100644 airflow/config_templates/config.yml
delete mode 100644 airflow/config_templates/unit_tests.cfg
delete mode 100644 airflow/configuration.py
delete mode 100644 airflow/dag_processing/bundles/git.py
delete mode 100644 airflow/dag_processing/bundles/manager.py
delete mode 100644 airflow/dag_processing/collection.py
delete mode 100644 airflow/dag_processing/manager.py
delete mode 100644 airflow/dag_processing/processor.py
delete mode 100644 airflow/decorators/__init__.pyi
delete mode 100644 airflow/decorators/base.py
delete mode 100644 airflow/decorators/bash.py
delete mode 100644 airflow/example_dags/example_asset_alias.py
delete mode 100644 airflow/example_dags/example_asset_with_watchers.py
delete mode 100644 airflow/example_dags/example_bash_decorator.py
delete mode 100644 airflow/example_dags/example_branch_day_of_week_operator.py
delete mode 100644 airflow/example_dags/example_branch_operator.py
delete mode 100644 airflow/example_dags/example_branch_operator_decorator.py
delete mode 100644 airflow/example_dags/example_complex.py
delete mode 100644 airflow/example_dags/example_params_ui_tutorial.py
delete mode 100644 airflow/example_dags/example_sensors.py
delete mode 100644 airflow/example_dags/example_short_circuit_decorator.py
delete mode 100644 airflow/example_dags/example_short_circuit_operator.py
delete mode 100644 airflow/exceptions.py
delete mode 100644 airflow/executors/base_executor.py
delete mode 100644 airflow/executors/local_executor.py
delete mode 100644 airflow/executors/workloads.py
delete mode 100644 airflow/hooks/README.md
delete mode 100644 airflow/hooks/base.py
delete mode 100644 airflow/jobs/local_task_job_runner.py
delete mode 100644 airflow/jobs/scheduler_job_runner.py
delete mode 100644 airflow/jobs/triggerer_job_runner.py
delete mode 100644 airflow/logging_config.py
delete mode 100644 airflow/metrics/validators.py
delete mode 100644 airflow/models/__init__.py
delete mode 100644 airflow/models/abstractoperator.py
delete mode 100644 airflow/models/asset.py
delete mode 100644 airflow/models/backfill.py
delete mode 100644 airflow/models/baseoperator.py
delete mode 100644 airflow/models/baseoperatorlink.py
delete mode 100644 airflow/models/connection.py
delete mode 100644 airflow/models/dag.py
delete mode 100644 airflow/models/dagbundle.py
delete mode 100644 airflow/models/dagrun.py
delete mode 100644 airflow/models/serialized_dag.py
delete mode 100644 airflow/models/skipmixin.py
delete mode 100644 airflow/models/taskinstance.py
delete mode 100644 airflow/models/taskmap.py
delete mode 100644 airflow/models/taskreschedule.py
delete mode 100644 airflow/models/xcom.py
delete mode 100644 airflow/models/xcom_arg.py
delete mode 100644 airflow/operators/README.md
delete mode 100644 airflow/operators/__init__.py
delete mode 100644 airflow/operators/branch.py
delete mode 100644 airflow/operators/smooth.py
delete mode 100644 airflow/providers_manager.py
delete mode 100644 airflow/reproducible_build.yaml
delete mode 100644 airflow/secrets/__init__.py
delete mode 100644 airflow/security/permissions.py
delete mode 100644 airflow/security/utils.py
delete mode 100644 airflow/sensors/base.py
delete mode 100644 airflow/serialization/dag_dependency.py
delete mode 100644 airflow/serialization/schema.json
delete mode 100644 airflow/serialization/serde.py
delete mode 100644 airflow/serialization/serialized_objects.py
delete mode 100644 airflow/settings.py
delete mode 100644 airflow/task/standard_task_runner.py
delete mode 100644 airflow/ti_deps/deps/exec_date_after_start_date_dep.py
delete mode 100644 airflow/ti_deps/deps/not_previously_skipped_dep.py
delete mode 100644 airflow/timetables/trigger.py
delete mode 100644 airflow/ui/CONTRIBUTING.md
delete mode 100644 airflow/ui/dev/index.html
delete mode 100644 airflow/ui/index.html
delete mode 100644 airflow/ui/openapi-gen/queries/common.ts
delete mode 100644 airflow/ui/openapi-gen/queries/index.ts
delete mode 100644 airflow/ui/openapi-gen/queries/infiniteQueries.ts
delete mode 100644 airflow/ui/openapi-gen/queries/prefetch.ts
delete mode 100644 airflow/ui/openapi-gen/queries/queries.ts
delete mode 100644 airflow/ui/openapi-gen/queries/suspense.ts
delete mode 100644 airflow/ui/openapi-gen/requests/schemas.gen.ts
delete mode 100644 airflow/ui/openapi-gen/requests/services.gen.ts
delete mode 100644 airflow/ui/openapi-gen/requests/types.gen.ts
delete mode 100644 airflow/ui/package.json
delete mode 100644 airflow/ui/pnpm-lock.yaml
delete mode 100644 airflow/ui/src/components/Assets/AssetEvent.tsx
delete mode 100644 airflow/ui/src/components/Assets/AssetEvents.tsx
delete mode 100644 airflow/ui/src/components/BackfillIcon.tsx
delete mode 100644 airflow/ui/src/components/Clear/Run/ClearRunButton.tsx
delete mode 100644 airflow/ui/src/components/Clear/Run/ClearRunDialog.tsx
delete mode 100644 airflow/ui/src/components/Clear/TaskInstance/ClearTaskInstanceButton.tsx
delete mode 100644 airflow/ui/src/components/Clear/TaskInstance/ClearTaskInstanceDialog.tsx
delete mode 100644 airflow/ui/src/components/ConfirmationModal.tsx
delete mode 100644 airflow/ui/src/components/DagVersionSelect.tsx
delete mode 100644 airflow/ui/src/components/DataTable/DataTable.tsx
delete mode 100644 airflow/ui/src/components/FlexibleForm/FieldAdvancedArray.tsx
delete mode 100644 airflow/ui/src/components/FlexibleForm/FieldBool.tsx
delete mode 100644 airflow/ui/src/components/FlexibleForm/FieldDateTime.tsx
delete mode 100644 airflow/ui/src/components/FlexibleForm/FieldDropdown.tsx
delete mode 100644 airflow/ui/src/components/FlexibleForm/FieldMultiSelect.tsx
delete mode 100644 airflow/ui/src/components/FlexibleForm/FieldMultilineText.tsx
delete mode 100644 airflow/ui/src/components/FlexibleForm/FieldNumber.tsx
delete mode 100644 airflow/ui/src/components/FlexibleForm/FieldObject.tsx
delete mode 100644 airflow/ui/src/components/FlexibleForm/FieldRow.tsx
delete mode 100644 airflow/ui/src/components/FlexibleForm/FieldSelector.tsx
delete mode 100644 airflow/ui/src/components/FlexibleForm/FieldString.tsx
delete mode 100644 airflow/ui/src/components/FlexibleForm/FieldStringArray.tsx
delete mode 100644 airflow/ui/src/components/FlexibleForm/FlexibleForm.tsx
delete mode 100644 airflow/ui/src/components/FlexibleForm/HiddenInput.tsx
delete mode 100644 airflow/ui/src/components/FlexibleForm/Row.tsx
delete mode 100644 airflow/ui/src/components/FlexibleForm/index.tsx
delete mode 100644 airflow/ui/src/components/Graph/AssetNode.tsx
delete mode 100644 airflow/ui/src/components/Graph/DagNode.tsx
delete mode 100644 airflow/ui/src/components/Graph/TaskNode.tsx
delete mode 100644 airflow/ui/src/components/Graph/reactflowUtils.ts
delete mode 100644 airflow/ui/src/components/Graph/useGraphLayout.ts
delete mode 100644 airflow/ui/src/components/MarkAs/Run/MarkRunAsDialog.tsx
delete mode 100644 airflow/ui/src/components/MarkAs/TaskInstance/MarkTaskInstanceAsDialog.tsx
delete mode 100644 airflow/ui/src/components/Menu/MenuButton.tsx
delete mode 100644 airflow/ui/src/components/Menu/ParseDag.tsx
delete mode 100644 airflow/ui/src/components/Menu/RunBackfillButton.tsx
delete mode 100644 airflow/ui/src/components/Menu/RunBackfillForm.tsx
delete mode 100644 airflow/ui/src/components/Menu/RunBackfillModal.tsx
delete mode 100644 airflow/ui/src/components/RenderedJsonField.tsx
delete mode 100644 airflow/ui/src/components/StateBadge.tsx
delete mode 100644 airflow/ui/src/components/StateIcon.tsx
delete mode 100644 airflow/ui/src/components/TaskName.tsx
delete mode 100644 airflow/ui/src/components/TaskTrySelect.tsx
delete mode 100644 airflow/ui/src/components/TogglePause.tsx
delete mode 100644 airflow/ui/src/components/TriggerDag/TriggerDAGForm.tsx
delete mode 100644 airflow/ui/src/components/TriggerDag/TriggerDAGModal.tsx
delete mode 100644 airflow/ui/src/components/TriggerDag/useParamStore.ts
delete mode 100644 airflow/ui/src/components/TruncatedText.tsx
delete mode 100644 airflow/ui/src/components/ui/Accordion/ItemTrigger.tsx
delete mode 100644 airflow/ui/src/components/ui/ActionBar/BarContent.tsx
delete mode 100644 airflow/ui/src/components/ui/Alert.tsx
delete mode 100644 airflow/ui/src/components/ui/Breadcrumb/Root.tsx
delete mode 100644 airflow/ui/src/components/ui/Button.tsx
delete mode 100644 airflow/ui/src/components/ui/Checkbox.tsx
delete mode 100644 airflow/ui/src/components/ui/Dialog/CloseTrigger.tsx
delete mode 100644 airflow/ui/src/components/ui/Dialog/Content.tsx
delete mode 100644 airflow/ui/src/components/ui/FileUpload/Dropzone.tsx
delete mode 100644 airflow/ui/src/components/ui/FileUpload/FileInput.tsx
delete mode 100644 airflow/ui/src/components/ui/FileUpload/Item.tsx
delete mode 100644 airflow/ui/src/components/ui/FileUpload/List.tsx
delete mode 100644 airflow/ui/src/components/ui/FileUpload/Root.tsx
delete mode 100644 airflow/ui/src/components/ui/InputGroup.tsx
delete mode 100644 airflow/ui/src/components/ui/Menu.tsx
delete mode 100644 airflow/ui/src/components/ui/Pagination/PageText.tsx
delete mode 100644 airflow/ui/src/components/ui/Pagination/Root.tsx
delete mode 100644 airflow/ui/src/components/ui/Popover/Content.tsx
delete mode 100644 airflow/ui/src/components/ui/RadioCard.tsx
delete mode 100644 airflow/ui/src/components/ui/Select/Content.tsx
delete mode 100644 airflow/ui/src/components/ui/Select/ItemGroup.tsx
delete mode 100644 airflow/ui/src/components/ui/Select/Trigger.tsx
delete mode 100644 airflow/ui/src/components/ui/Select/ValueText.tsx
delete mode 100644 airflow/ui/src/components/ui/Switch.tsx
delete mode 100644 airflow/ui/src/components/ui/Tag.tsx
delete mode 100644 airflow/ui/src/components/ui/Tooltip.tsx
delete mode 100644 airflow/ui/src/constants/reprocessBehaviourParams.ts
delete mode 100644 airflow/ui/src/constants/searchParams.ts
delete mode 100644 airflow/ui/src/hooks/useSelectedVersion.ts
delete mode 100644 airflow/ui/src/layouts/BaseLayout.test.tsx
delete mode 100644 airflow/ui/src/layouts/BaseLayout.tsx
delete mode 100644 airflow/ui/src/layouts/Details/DagRunSelect.tsx
delete mode 100644 airflow/ui/src/layouts/Details/DetailsLayout.tsx
delete mode 100644 airflow/ui/src/layouts/Details/Graph/Graph.tsx
delete mode 100644 airflow/ui/src/layouts/Details/Grid/Grid.tsx
delete mode 100644 airflow/ui/src/layouts/Details/Grid/TaskNames.tsx
delete mode 100644 airflow/ui/src/layouts/Details/PanelButtons.tsx
delete mode 100644 airflow/ui/src/layouts/Nav/Nav.tsx
delete mode 100644 airflow/ui/src/layouts/Nav/TimezoneModal.tsx
delete mode 100644 airflow/ui/src/layouts/Nav/UserSettingsButton.tsx
delete mode 100644 airflow/ui/src/main.tsx
delete mode 100644 airflow/ui/src/mocks/handlers/config.ts
delete mode 100644 airflow/ui/src/mocks/handlers/dag.ts
delete mode 100644 airflow/ui/src/mocks/handlers/dags.ts
delete mode 100644 airflow/ui/src/mocks/handlers/log.ts
delete mode 100644 airflow/ui/src/pages/Asset/Asset.tsx
delete mode 100644 airflow/ui/src/pages/Asset/AssetGraph.tsx
delete mode 100644 airflow/ui/src/pages/AssetsList/AssetsList.tsx
delete mode 100644 airflow/ui/src/pages/AssetsList/DependencyPopover.tsx
delete mode 100644 airflow/ui/src/pages/Connections/Connections.tsx
delete mode 100644 airflow/ui/src/pages/Dag/Code/Code.tsx
delete mode 100644 airflow/ui/src/pages/Dag/Dag.tsx
delete mode 100644 airflow/ui/src/pages/Dag/Header.tsx
delete mode 100644 airflow/ui/src/pages/Dag/Overview/Overview.tsx
delete mode 100644 airflow/ui/src/pages/DagsList/DagCard.test.tsx
delete mode 100644 airflow/ui/src/pages/DagsList/DagsFilters.tsx
delete mode 100644 airflow/ui/src/pages/DagsList/Schedule.tsx
delete mode 100644 airflow/ui/src/pages/Dashboard/HistoricalMetrics/HistoricalMetrics.tsx
delete mode 100644 airflow/ui/src/pages/MappedTaskInstance/Header.tsx
delete mode 100644 airflow/ui/src/pages/MappedTaskInstance/MappedTaskInstance.tsx
delete mode 100644 airflow/ui/src/pages/Plugins.tsx
delete mode 100644 airflow/ui/src/pages/Providers.tsx
delete mode 100644 airflow/ui/src/pages/Run/Details.tsx
delete mode 100644 airflow/ui/src/pages/TaskInstance/Details.tsx
delete mode 100644 airflow/ui/src/pages/TaskInstance/Header.tsx
delete mode 100644 airflow/ui/src/pages/TaskInstance/Logs/Logs.tsx
delete mode 100644 airflow/ui/src/pages/TaskInstance/Logs/TaskLogContent.tsx
delete mode 100644 airflow/ui/src/pages/TaskInstance/Logs/TaskLogHeader.tsx
delete mode 100644 airflow/ui/src/pages/TaskInstance/RenderedTemplates.tsx
delete mode 100644 airflow/ui/src/pages/TaskInstances/TaskInstances.tsx
delete mode 100644 airflow/ui/src/pages/XCom/XCom.tsx
delete mode 100644 airflow/ui/src/queries/useClearDagRunDryRun.ts
delete mode 100644 airflow/ui/src/queries/useCreateBackfill.ts
delete mode 100644 airflow/ui/src/queries/useCreateBackfillDryRun.ts
delete mode 100644 airflow/ui/src/queries/useDagParams.ts
delete mode 100644 airflow/ui/src/queries/useDags.tsx
delete mode 100644 airflow/ui/src/queries/useLogs.tsx
delete mode 100644 airflow/ui/src/queryClient.ts
delete mode 100644 airflow/ui/src/router.tsx
delete mode 100644 airflow/ui/src/utils/links.ts
delete mode 100644 airflow/utils/cli.py
delete mode 100644 airflow/utils/configuration.py
delete mode 100644 airflow/utils/context.py
delete mode 100644 airflow/utils/db.py
delete mode 100644 airflow/utils/db_cleanup.py
delete mode 100644 airflow/utils/db_manager.py
delete mode 100644 airflow/utils/dot_renderer.py
delete mode 100644 airflow/utils/edgemodifier.py
delete mode 100644 airflow/utils/email.py
delete mode 100644 airflow/utils/file.py
delete mode 100644 airflow/utils/helpers.py
delete mode 100644 airflow/utils/json.py
delete mode 100644 airflow/utils/jwt_signer.py
delete mode 100644 airflow/utils/log/colored_log.py
delete mode 100644 airflow/utils/log/file_processor_handler.py
delete mode 100644 airflow/utils/log/file_task_handler.py
delete mode 100644 airflow/utils/log/logging_mixin.py
delete mode 100644 airflow/utils/operator_helpers.py
delete mode 100644 airflow/utils/retries.py
delete mode 100644 airflow/utils/serve_logs.py
delete mode 100644 airflow/utils/state.py
delete mode 100644 airflow/utils/task_group.py
delete mode 100644 airflow/utils/yaml.py
create mode 100644 chart/newsfragments/47416.significant.rst
create mode 100644 contributing-docs/11_provider_distributions.rst
delete mode 100644 contributing-docs/11_provider_packages.rst
create mode 100644 dev/PROVIDER_DISTRIBUTIONS_DETAILS.md
delete mode 100644 dev/PROVIDER_PACKAGE_DETAILS.md
create mode 100644 dev/README_RELEASE_PROVIDERS.md
delete mode 100644 dev/README_RELEASE_PROVIDER_PACKAGES.md
create mode 100644 dev/breeze/doc/images/output_release-management_install-provider-distributions.svg
create mode 100644 dev/breeze/doc/images/output_release-management_install-provider-distributions.txt
delete mode 100644 dev/breeze/doc/images/output_release-management_install-provider-packages.svg
delete mode 100644 dev/breeze/doc/images/output_release-management_install-provider-packages.txt
create mode 100644 dev/breeze/doc/images/output_release-management_prepare-airflow-distributions.svg
create mode 100644 dev/breeze/doc/images/output_release-management_prepare-airflow-distributions.txt
delete mode 100644 dev/breeze/doc/images/output_release-management_prepare-airflow-package.svg
delete mode 100644 dev/breeze/doc/images/output_release-management_prepare-airflow-package.txt
create mode 100644 dev/breeze/doc/images/output_release-management_prepare-provider-distributions.svg
create mode 100644 dev/breeze/doc/images/output_release-management_prepare-provider-distributions.txt
delete mode 100644 dev/breeze/doc/images/output_release-management_prepare-provider-packages.svg
delete mode 100644 dev/breeze/doc/images/output_release-management_prepare-provider-packages.txt
create mode 100644 dev/breeze/doc/images/output_release-management_prepare-task-sdk-distributions.svg
create mode 100644 dev/breeze/doc/images/output_release-management_prepare-task-sdk-distributions.txt
delete mode 100644 dev/breeze/doc/images/output_release-management_prepare-task-sdk-package.svg
delete mode 100644 dev/breeze/doc/images/output_release-management_prepare-task-sdk-package.txt
create mode 100644 dev/breeze/doc/images/output_release-management_verify-provider-distributions.svg
create mode 100644 dev/breeze/doc/images/output_release-management_verify-provider-distributions.txt
delete mode 100644 dev/breeze/doc/images/output_release-management_verify-provider-packages.svg
delete mode 100644 dev/breeze/doc/images/output_release-management_verify-provider-packages.txt
create mode 100644 dev/breeze/src/airflow_breeze/files/simple_auth_manager_passwords.json
create mode 100644 dev/breeze/src/airflow_breeze/prepare_providers/provider_distributions.py
delete mode 100644 dev/breeze/src/airflow_breeze/prepare_providers/provider_packages.py
delete mode 100644 dev/datamodel_code_formatter.py
delete mode 100755 dev/provider_packages/publish_provider_documentation.sh
create mode 100644 devel-common/src/tests_common/test_utils/paths.py
delete mode 100644 docs/apache-airflow-providers/core-extensions/auth-backends.rst
delete mode 100644 docs/apache-airflow/administration-and-deployment/cluster-policies.rst
delete mode 100644 docs/apache-airflow/administration-and-deployment/dag-serialization.rst
delete mode 100644 docs/apache-airflow/administration-and-deployment/dagfile-processing.rst
delete mode 100644 docs/apache-airflow/administration-and-deployment/index.rst
delete mode 100644 docs/apache-airflow/administration-and-deployment/listeners.rst
delete mode 100644 docs/apache-airflow/administration-and-deployment/logging-monitoring/callbacks.rst
delete mode 100644 docs/apache-airflow/administration-and-deployment/logging-monitoring/index.rst
delete mode 100644 docs/apache-airflow/administration-and-deployment/logging-monitoring/metrics.rst
delete mode 100644 docs/apache-airflow/administration-and-deployment/logging-monitoring/tracking-user-activity.rst
delete mode 100644 docs/apache-airflow/administration-and-deployment/modules_management.rst
delete mode 100644 docs/apache-airflow/administration-and-deployment/plugins.rst
delete mode 100644 docs/apache-airflow/administration-and-deployment/priority-weight.rst
delete mode 100644 docs/apache-airflow/administration-and-deployment/production-deployment.rst
delete mode 100644 docs/apache-airflow/administration-and-deployment/scheduler.rst
delete mode 100644 docs/apache-airflow/authoring-and-scheduling/cron.rst
delete mode 100644 docs/apache-airflow/authoring-and-scheduling/datasets.rst
delete mode 100644 docs/apache-airflow/authoring-and-scheduling/deferring.rst
delete mode 100644 docs/apache-airflow/authoring-and-scheduling/dynamic-task-mapping.rst
delete mode 100644 docs/apache-airflow/authoring-and-scheduling/event-scheduling.rst
delete mode 100644 docs/apache-airflow/authoring-and-scheduling/index.rst
delete mode 100644 docs/apache-airflow/authoring-and-scheduling/timetable.rst
delete mode 100644 docs/apache-airflow/authoring-and-scheduling/timezone.rst
delete mode 100644 docs/apache-airflow/best-practices.rst
delete mode 100644 docs/apache-airflow/cli-and-env-variables-ref.rst
delete mode 100644 docs/apache-airflow/configurations-ref.rst
delete mode 100644 docs/apache-airflow/core-concepts/auth-manager/index.rst
delete mode 100644 docs/apache-airflow/core-concepts/auth-manager/simple.rst
delete mode 100644 docs/apache-airflow/core-concepts/dag-run.rst
delete mode 100644 docs/apache-airflow/core-concepts/dags.rst
delete mode 100644 docs/apache-airflow/core-concepts/debug.rst
delete mode 100644 docs/apache-airflow/core-concepts/executor/index.rst
delete mode 100644 docs/apache-airflow/core-concepts/objectstorage.rst
delete mode 100644 docs/apache-airflow/core-concepts/operators.rst
delete mode 100644 docs/apache-airflow/core-concepts/overview.rst
delete mode 100644 docs/apache-airflow/core-concepts/params.rst
delete mode 100644 docs/apache-airflow/core-concepts/taskflow.rst
delete mode 100644 docs/apache-airflow/core-concepts/tasks.rst
delete mode 100644 docs/apache-airflow/core-concepts/xcoms.rst
delete mode 100644 docs/apache-airflow/empty_plugin/empty_plugin.py
delete mode 100644 docs/apache-airflow/extra-packages-ref.rst
delete mode 100644 docs/apache-airflow/faq.rst
delete mode 100644 docs/apache-airflow/howto/add-dag-tags.rst
delete mode 100644 docs/apache-airflow/howto/add-owner-links.rst
delete mode 100644 docs/apache-airflow/howto/connection.rst
delete mode 100644 docs/apache-airflow/howto/create-custom-decorator.rst
delete mode 100644 docs/apache-airflow/howto/define-extra-link.rst
delete mode 100644 docs/apache-airflow/howto/docker-compose/docker-compose.yaml
delete mode 100644 docs/apache-airflow/howto/docker-compose/index.rst
delete mode 100644 docs/apache-airflow/howto/dynamic-dag-generation.rst
delete mode 100644 docs/apache-airflow/howto/listener-plugin.rst
delete mode 100644 docs/apache-airflow/howto/run-behind-proxy.rst
delete mode 100644 docs/apache-airflow/howto/set-up-database.rst
delete mode 100644 docs/apache-airflow/howto/timetable.rst
delete mode 100644 docs/apache-airflow/howto/upgrading-from-1-10/index.rst
delete mode 100644 docs/apache-airflow/howto/upgrading-from-1-10/upgrade-check.rst
delete mode 100644 docs/apache-airflow/howto/usage-cli.rst
delete mode 100644 docs/apache-airflow/howto/variable.rst
delete mode 100644 docs/apache-airflow/img/airflow_erd.sha256
delete mode 100644 docs/apache-airflow/img/airflow_erd.svg
delete mode 100644 docs/apache-airflow/img/example_passing_conf.png
delete mode 100644 docs/apache-airflow/img/trigger-dag-tutorial-form.png
delete mode 100644 docs/apache-airflow/index.rst
delete mode 100644 docs/apache-airflow/installation/dependencies.rst
delete mode 100644 docs/apache-airflow/installation/installing-from-pypi.rst
delete mode 100644 docs/apache-airflow/installation/installing-from-sources.rst
delete mode 100644 docs/apache-airflow/integration.rst
delete mode 100644 docs/apache-airflow/migrations-ref.rst
delete mode 100644 docs/apache-airflow/project.rst
delete mode 100644 docs/apache-airflow/public-airflow-interface.rst
delete mode 100644 docs/apache-airflow/release-process.rst
delete mode 100644 docs/apache-airflow/security/audit_logs.rst
delete mode 100644 docs/apache-airflow/security/kerberos.rst
delete mode 100644 docs/apache-airflow/security/security_model.rst
delete mode 100644 docs/apache-airflow/static/redirects.js
delete mode 100644 docs/apache-airflow/templates-ref.rst
delete mode 100644 docs/apache-airflow/troubleshooting.rst
delete mode 100644 docs/apache-airflow/tutorial/fundamentals.rst
delete mode 100644 docs/apache-airflow/tutorial/objectstorage.rst
delete mode 100644 docs/apache-airflow/tutorial/pipeline.rst
delete mode 100644 docs/apache-airflow/tutorial/pipeline_example.csv
delete mode 100644 docs/apache-airflow/tutorial/taskflow.rst
delete mode 100644 docs/apache-airflow/ui.rst
create mode 100644 docs/diagrams/task_lifecycle/component.png
create mode 100644 docs/diagrams/task_lifecycle/condition.png
create mode 100644 docs/diagrams/task_lifecycle/deferrable_state.png
create mode 100644 docs/diagrams/task_lifecycle/sensor_state.png
create mode 100644 docs/diagrams/task_lifecycle/shared_state.png
create mode 100644 docs/diagrams/task_lifecycle/terminal_state.png
delete mode 100644 docs/exts/templates/auth_backend.rst.jinja2
create mode 100644 docs/helm-chart/manage-dag-files.rst
delete mode 100644 docs/helm-chart/manage-dags-files.rst
create mode 100644 newsfragments/47136.significant.rst
create mode 100644 newsfragments/47354.significant.rst
create mode 100644 newsfragments/47399.significant.rst
create mode 100644 newsfragments/47414.significant.rst
create mode 100644 newsfragments/47599.significant.rst
create mode 100644 newsfragments/47761.significant.rst
create mode 100644 newsfragments/47892.significant.rst
create mode 100644 newsfragments/47927.significant.rst
create mode 100644 newsfragments/48027.significant.rst
create mode 100644 newsfragments/48066.significant.rst
create mode 100644 newsfragments/api-38.significant.rst
create mode 100644 providers/amazon/src/airflow/providers/amazon/aws/triggers/mwaa.py
create mode 100644 providers/amazon/src/airflow/providers/amazon/aws/waiters/mwaa.json
create mode 100644 providers/amazon/tests/unit/amazon/aws/triggers/test_mwaa.py
create mode 100644 providers/common/compat/src/airflow/providers/common/compat/check.py
create mode 100644 providers/common/compat/src/airflow/providers/common/compat/openlineage/check.py
create mode 100644 providers/common/compat/tests/unit/common/compat/openlineage/test_check.py
create mode 100644 providers/common/compat/tests/unit/common/compat/test_check.py
copy providers/{amazon/src/airflow/providers/amazon => dbt/cloud/src/airflow/providers/dbt/cloud}/version_compat.py (100%)
create mode 100644 providers/fab/src/airflow/providers/fab/www/static/css/flash.css
delete mode 100644 providers/fab/src/airflow/providers/fab/www/static/dist/d3-tip.js
create mode 100644 providers/fab/src/airflow/providers/fab/www/static/dist/flash.137b30cff85b5588e661.css
create mode 100644 providers/fab/src/airflow/providers/fab/www/static/dist/flash.137b30cff85b5588e661.js
create mode 100644 providers/fab/src/airflow/providers/fab/www/static/dist/jquery-ui.min.css
create mode 100644 providers/fab/src/airflow/providers/fab/www/static/dist/jquery-ui.min.js
create mode 100644 providers/fab/src/airflow/providers/fab/www/static/dist/jquery-ui.min.js.LICENSE.txt
delete mode 100644 providers/fab/src/airflow/providers/fab/www/static/dist/main.b585926afc96bd076c4f.js
rename providers/fab/src/airflow/providers/fab/www/static/dist/{main.b585926afc96bd076c4f.css => main.ec1d38d994d72bb083cd.css} (100%)
create mode 100644 providers/fab/src/airflow/providers/fab/www/static/dist/main.ec1d38d994d72bb083cd.js
rename providers/fab/src/airflow/providers/fab/www/static/dist/{main.b585926afc96bd076c4f.js.LICENSE.txt => main.ec1d38d994d72bb083cd.js.LICENSE.txt} (100%)
delete mode 100644 providers/fab/src/airflow/providers/fab/www/static/dist/moment.4d28b37c229bdfc54575.js
delete mode 100644 providers/fab/src/airflow/providers/fab/www/static/dist/moment.4d28b37c229bdfc54575.js.LICENSE.txt
create mode 100644 providers/fab/src/airflow/providers/fab/www/static/dist/moment.624b1f00ba723d39ce06.js
create mode 100644 providers/fab/src/airflow/providers/fab/www/static/dist/moment.624b1f00ba723d39ce06.js.LICENSE.txt
create mode 100644 providers/fab/src/airflow/providers/fab/www/templates/appbuilder/flash.html
rename providers/fab/tests/unit/{ => fab}/decorators.py (100%)
create mode 100644 providers/fab/tests/unit/fab/www/views/test_connection_form_fields.py
create mode 100644 providers/google/src/airflow/providers/google/common/hooks/operation_helpers.py
create mode 100644 providers/google/tests/system/google/cloud/dataflow/example_dataflow_java_streaming.py
create mode 100644 providers/google/tests/system/google/cloud/dataflow/resources/non_python_src/java_streaming_src/README.MD
create mode 100644 providers/google/tests/system/google/cloud/dataflow/resources/non_python_src/java_streaming_src/pom.xml
create mode 100644 providers/google/tests/system/google/cloud/dataflow/resources/non_python_src/java_streaming_src/src/main/java/org/example/pubsub/StreamingExample.java
create mode 100644 providers/standard/src/airflow/providers/standard/operators/branch.py
create mode 100644 providers/standard/src/airflow/providers/standard/operators/smooth.py
create mode 100644 providers/standard/src/airflow/providers/standard/utils/skipmixin.py
rename {airflow => providers/standard/src/airflow/providers/standard}/utils/weekday.py (100%)
create mode 100644 providers/standard/tests/unit/standard/operators/test_branch_operator.py
create mode 100644 providers/standard/tests/unit/standard/operators/test_smooth.py
create mode 100644 providers/standard/tests/unit/standard/operators/test_trigger_dagrun.py
create mode 100644 providers/standard/tests/unit/standard/utils/test_skipmixin.py
create mode 100644 providers/standard/tests/unit/standard/utils/test_weekday.py
create mode 100644 reproducible_build.yaml
delete mode 100755 scripts/ci/pre_commit/base_operator_partial_arguments.py
create mode 100755 scripts/ci/pre_commit/check_base_operator_partial_arguments.py
delete mode 100755 scripts/ci/pre_commit/check_google_re2_imports.py
create mode 100755 scripts/ci/pre_commit/check_init_decorator_arguments.py
create mode 100755 scripts/ci/pre_commit/check_revision_heads_map.py
create mode 100755 scripts/ci/pre_commit/check_template_context_variable_in_sync.py
create mode 100755 scripts/ci/pre_commit/compile_lint_ui.py
delete mode 100755 scripts/ci/pre_commit/compile_www_assets.py
delete mode 100755 scripts/ci/pre_commit/compile_www_assets_dev.py
delete mode 100755 scripts/ci/pre_commit/json_schema.py
create mode 100755 scripts/ci/pre_commit/lint_json_schema.py
delete mode 100755 scripts/ci/pre_commit/lint_ui.py
delete mode 100755 scripts/ci/pre_commit/lint_www.py
delete mode 100755 scripts/ci/pre_commit/sync_init_decorator.py
delete mode 100755 scripts/ci/pre_commit/template_context_key_sync.py
delete mode 100755 scripts/ci/pre_commit/version_heads_map.py
rename scripts/docker/{get_package_specs.py => get_distribution_specs.py} (100%)
create mode 100755 scripts/in_container/run_prepare_airflow_distributions.py
delete mode 100755 scripts/in_container/run_prepare_airflow_packages.py
rename {task_sdk => task-sdk}/README.md (100%)
create mode 100644 task-sdk/dev/datamodel_code_formatter.py
create mode 100644 task-sdk/dev/generate_task_sdk_models.py
create mode 100644 task-sdk/pyproject.toml
create mode 100644 task-sdk/src/airflow/__init__.py
create mode 100644 task-sdk/src/airflow/sdk/__init__.py
copy {airflow/api_connexion => task-sdk/src/airflow/sdk/api}/__init__.py (100%)
create mode 100644 task-sdk/src/airflow/sdk/api/client.py
copy {airflow/api_connexion => task-sdk/src/airflow/sdk/api/datamodels}/__init__.py (100%)
create mode 100644 task-sdk/src/airflow/sdk/api/datamodels/_generated.py
rename {task_sdk => task-sdk}/src/airflow/sdk/api/datamodels/activities.py (100%)
copy {airflow/api_connexion => task-sdk/src/airflow/sdk/definitions}/__init__.py (100%)
copy {airflow/api_connexion => task-sdk/src/airflow/sdk/definitions/_internal}/__init__.py (100%)
create mode 100644 task-sdk/src/airflow/sdk/definitions/_internal/abstractoperator.py
rename {task_sdk => task-sdk}/src/airflow/sdk/definitions/_internal/contextmanager.py (100%)
rename {task_sdk => task-sdk}/src/airflow/sdk/definitions/_internal/dag_parsing_context.py (100%)
rename {task_sdk => task-sdk}/src/airflow/sdk/definitions/_internal/decorators.py (100%)
rename {task_sdk => task-sdk}/src/airflow/sdk/definitions/_internal/expandinput.py (100%)
rename {task_sdk => task-sdk}/src/airflow/sdk/definitions/_internal/mixins.py (100%)
create mode 100644 task-sdk/src/airflow/sdk/definitions/_internal/node.py
rename {task_sdk => task-sdk}/src/airflow/sdk/definitions/_internal/templater.py (100%)
create mode 100644 task-sdk/src/airflow/sdk/definitions/_internal/types.py
create mode 100644 task-sdk/src/airflow/sdk/definitions/asset/__init__.py
create mode 100644 task-sdk/src/airflow/sdk/definitions/asset/decorators.py
create mode 100644 task-sdk/src/airflow/sdk/definitions/asset/metadata.py
create mode 100644 task-sdk/src/airflow/sdk/definitions/baseoperator.py
create mode 100644 task-sdk/src/airflow/sdk/definitions/baseoperatorlink.py
create mode 100644 task-sdk/src/airflow/sdk/definitions/connection.py
rename {task_sdk => task-sdk}/src/airflow/sdk/definitions/context.py (100%)
create mode 100644 task-sdk/src/airflow/sdk/definitions/dag.py
rename {task_sdk => task-sdk}/src/airflow/sdk/definitions/edges.py (100%)
rename {task_sdk => task-sdk}/src/airflow/sdk/definitions/macros.py (100%)
create mode 100644 task-sdk/src/airflow/sdk/definitions/mappedoperator.py
rename {task_sdk => task-sdk}/src/airflow/sdk/definitions/param.py (100%)
create mode 100644 task-sdk/src/airflow/sdk/definitions/taskgroup.py
rename {task_sdk => task-sdk}/src/airflow/sdk/definitions/template.py (100%)
create mode 100644 task-sdk/src/airflow/sdk/definitions/variable.py
create mode 100644 task-sdk/src/airflow/sdk/definitions/xcom_arg.py
create mode 100644 task-sdk/src/airflow/sdk/exceptions.py
rename {airflow/api/auth => task-sdk/src/airflow/sdk/execution_time}/__init__.py (100%)
create mode 100644 task-sdk/src/airflow/sdk/execution_time/comms.py
create mode 100644 task-sdk/src/airflow/sdk/execution_time/context.py
create mode 100644 task-sdk/src/airflow/sdk/execution_time/execute_workload.py
rename {task_sdk => task-sdk}/src/airflow/sdk/execution_time/lazy_sequence.py (100%)
create mode 100644 task-sdk/src/airflow/sdk/execution_time/secrets_masker.py
create mode 100644 task-sdk/src/airflow/sdk/execution_time/supervisor.py
create mode 100644 task-sdk/src/airflow/sdk/execution_time/task_runner.py
create mode 100644 task-sdk/src/airflow/sdk/execution_time/xcom.py
create mode 100644 task-sdk/src/airflow/sdk/log.py
rename {task_sdk => task-sdk}/src/airflow/sdk/py.typed (100%)
create mode 100644 task-sdk/src/airflow/sdk/types.py
copy {airflow/api_connexion => task-sdk/tests}/__init__.py (100%)
create mode 100644 task-sdk/tests/conftest.py
create mode 100644 task-sdk/tests/task_sdk/__init__.py
copy {airflow/api_connexion => task-sdk/tests/task_sdk/api}/__init__.py (100%)
create mode 100644 task-sdk/tests/task_sdk/api/test_client.py
rename {task_sdk/tests => task-sdk/tests/task_sdk}/dags/dag_parsing_context.py (100%)
create mode 100644 task-sdk/tests/task_sdk/dags/super_basic.py
create mode 100644 task-sdk/tests/task_sdk/dags/super_basic_deferred_run.py
rename {task_sdk/tests => task-sdk/tests/task_sdk}/dags/super_basic_run.py (100%)
copy {airflow/api_connexion => task-sdk/tests/task_sdk/definitions}/__init__.py (100%)
copy {airflow/api_connexion => task-sdk/tests/task_sdk/definitions/_internal}/__init__.py (100%)
rename {task_sdk/tests => task-sdk/tests/task_sdk}/definitions/_internal/test_templater.py (100%)
rename {task_sdk/tests => task-sdk/tests/task_sdk}/definitions/conftest.py (100%)
create mode 100644 task-sdk/tests/task_sdk/definitions/test_asset.py
create mode 100644 task-sdk/tests/task_sdk/definitions/test_asset_decorators.py
create mode 100644 task-sdk/tests/task_sdk/definitions/test_baseoperator.py
create mode 100644 task-sdk/tests/task_sdk/definitions/test_connections.py
rename {task_sdk/tests => task-sdk/tests/task_sdk}/definitions/test_context.py (100%)
create mode 100644 task-sdk/tests/task_sdk/definitions/test_dag.py
rename {task_sdk/tests => task-sdk/tests/task_sdk}/definitions/test_macros.py (100%)
rename {task_sdk/tests => task-sdk/tests/task_sdk}/definitions/test_mappedoperator.py (100%)
rename {task_sdk/tests => task-sdk/tests/task_sdk}/definitions/test_mixins.py (100%)
rename {task_sdk/tests => task-sdk/tests/task_sdk}/definitions/test_param.py (100%)
create mode 100644 task-sdk/tests/task_sdk/definitions/test_secrets_masker.py
rename {task_sdk/tests => task-sdk/tests/task_sdk}/definitions/test_template.py (100%)
create mode 100644 task-sdk/tests/task_sdk/definitions/test_variables.py
create mode 100644 task-sdk/tests/task_sdk/definitions/test_xcom_arg.py
rename {airflow/api_connexion => task-sdk/tests/task_sdk/execution_time}/__init__.py (100%)
rename {task_sdk/tests => task-sdk/tests/task_sdk}/execution_time/conftest.py (100%)
create mode 100644 task-sdk/tests/task_sdk/execution_time/test_context.py
create mode 100644 task-sdk/tests/task_sdk/execution_time/test_supervisor.py
create mode 100644 task-sdk/tests/task_sdk/execution_time/test_task_runner.py
rename {task_sdk/tests => task-sdk/tests/task_sdk/log}/test_log.py (100%)
delete mode 100644 task_sdk/__init__.py
delete mode 100644 task_sdk/dev/generate_models.py
delete mode 100644 task_sdk/pyproject.toml
delete mode 100644 task_sdk/src/airflow/__init__.py
delete mode 100644 task_sdk/src/airflow/sdk/__init__.py
delete mode 100644 task_sdk/src/airflow/sdk/api/__init__.py
delete mode 100644 task_sdk/src/airflow/sdk/api/client.py
delete mode 100644 task_sdk/src/airflow/sdk/api/datamodels/__init__.py
delete mode 100644 task_sdk/src/airflow/sdk/api/datamodels/_generated.py
delete mode 100644 task_sdk/src/airflow/sdk/definitions/__init__.py
delete mode 100644 task_sdk/src/airflow/sdk/definitions/_internal/__init__.py
delete mode 100644 task_sdk/src/airflow/sdk/definitions/_internal/abstractoperator.py
delete mode 100644 task_sdk/src/airflow/sdk/definitions/_internal/node.py
delete mode 100644 task_sdk/src/airflow/sdk/definitions/_internal/types.py
delete mode 100644 task_sdk/src/airflow/sdk/definitions/asset/__init__.py
delete mode 100644 task_sdk/src/airflow/sdk/definitions/asset/decorators.py
delete mode 100644 task_sdk/src/airflow/sdk/definitions/asset/metadata.py
delete mode 100644 task_sdk/src/airflow/sdk/definitions/baseoperator.py
delete mode 100644 task_sdk/src/airflow/sdk/definitions/connection.py
delete mode 100644 task_sdk/src/airflow/sdk/definitions/dag.py
delete mode 100644 task_sdk/src/airflow/sdk/definitions/mappedoperator.py
delete mode 100644 task_sdk/src/airflow/sdk/definitions/taskgroup.py
delete mode 100644 task_sdk/src/airflow/sdk/definitions/variable.py
delete mode 100644 task_sdk/src/airflow/sdk/definitions/xcom_arg.py
delete mode 100644 task_sdk/src/airflow/sdk/exceptions.py
delete mode 100644 task_sdk/src/airflow/sdk/execution_time/__init__.py
delete mode 100644 task_sdk/src/airflow/sdk/execution_time/comms.py
delete mode 100644 task_sdk/src/airflow/sdk/execution_time/context.py
delete mode 100644 task_sdk/src/airflow/sdk/execution_time/execute_workload.py
delete mode 100644 task_sdk/src/airflow/sdk/execution_time/secrets_masker.py
delete mode 100644 task_sdk/src/airflow/sdk/execution_time/supervisor.py
delete mode 100644 task_sdk/src/airflow/sdk/execution_time/task_runner.py
delete mode 100644 task_sdk/src/airflow/sdk/log.py
delete mode 100644 task_sdk/src/airflow/sdk/types.py
delete mode 100644 task_sdk/tests/__init__.py
delete mode 100644 task_sdk/tests/api/__init__.py
delete mode 100644 task_sdk/tests/api/test_client.py
delete mode 100644 task_sdk/tests/conftest.py
delete mode 100644 task_sdk/tests/dags/super_basic.py
delete mode 100644 task_sdk/tests/dags/super_basic_deferred_run.py
delete mode 100644 task_sdk/tests/definitions/__init__.py
delete mode 100644 task_sdk/tests/definitions/_internal/__init__.py
delete mode 100644 task_sdk/tests/definitions/test_asset.py
delete mode 100644 task_sdk/tests/definitions/test_asset_decorators.py
delete mode 100644 task_sdk/tests/definitions/test_baseoperator.py
delete mode 100644 task_sdk/tests/definitions/test_dag.py
delete mode 100644 task_sdk/tests/definitions/test_secrets_masker.py
delete mode 100644 task_sdk/tests/definitions/test_xcom_arg.py
delete mode 100644 task_sdk/tests/execution_time/__init__.py
delete mode 100644 task_sdk/tests/execution_time/test_context.py
delete mode 100644 task_sdk/tests/execution_time/test_supervisor.py
delete mode 100644 task_sdk/tests/execution_time/test_task_runner.py
delete mode 100644 tests/__init__.py
delete mode 100644 tests/always/__init__.py
delete mode 100644 tests/always/test_connection.py
delete mode 100644 tests/always/test_example_dags.py
delete mode 100644 tests/always/test_project_structure.py
delete mode 100644 tests/always/test_providers_manager.py
delete mode 100644 tests/api/__init__.py
delete mode 100644 tests/api/common/__init__.py
delete mode 100644 tests/api_fastapi/__init__.py
delete mode 100644 tests/api_fastapi/common/__init__.py
delete mode 100644 tests/api_fastapi/conftest.py
delete mode 100644 tests/api_fastapi/core_api/__init__.py
delete mode 100644 tests/api_fastapi/core_api/routes/__init__.py
delete mode 100644 tests/api_fastapi/core_api/routes/public/__init__.py
delete mode 100644 tests/api_fastapi/core_api/routes/public/test_assets.py
delete mode 100644 tests/api_fastapi/core_api/routes/public/test_backfills.py
delete mode 100644 tests/api_fastapi/core_api/routes/public/test_config.py
delete mode 100644 tests/api_fastapi/core_api/routes/public/test_connections.py
delete mode 100644 tests/api_fastapi/core_api/routes/public/test_dag_parsing.py
delete mode 100644 tests/api_fastapi/core_api/routes/public/test_dag_report.py
delete mode 100644 tests/api_fastapi/core_api/routes/public/test_dag_run.py
delete mode 100644 tests/api_fastapi/core_api/routes/public/test_dag_sources.py
delete mode 100644 tests/api_fastapi/core_api/routes/public/test_dag_stats.py
delete mode 100644 tests/api_fastapi/core_api/routes/public/test_dag_tags.py
delete mode 100644 tests/api_fastapi/core_api/routes/public/test_dag_versions.py
delete mode 100644 tests/api_fastapi/core_api/routes/public/test_dag_warning.py
delete mode 100644 tests/api_fastapi/core_api/routes/public/test_dags.py
delete mode 100644 tests/api_fastapi/core_api/routes/public/test_event_logs.py
delete mode 100644 tests/api_fastapi/core_api/routes/public/test_extra_links.py
delete mode 100644 tests/api_fastapi/core_api/routes/public/test_import_error.py
delete mode 100644 tests/api_fastapi/core_api/routes/public/test_job.py
delete mode 100644 tests/api_fastapi/core_api/routes/public/test_log.py
delete mode 100644 tests/api_fastapi/core_api/routes/public/test_login.py
delete mode 100644 tests/api_fastapi/core_api/routes/public/test_monitor.py
delete mode 100644 tests/api_fastapi/core_api/routes/public/test_plugins.py
delete mode 100644 tests/api_fastapi/core_api/routes/public/test_pools.py
delete mode 100644 tests/api_fastapi/core_api/routes/public/test_providers.py
delete mode 100644 tests/api_fastapi/core_api/routes/public/test_task_instances.py
delete mode 100644 tests/api_fastapi/core_api/routes/public/test_tasks.py
delete mode 100644 tests/api_fastapi/core_api/routes/public/test_variables.py
delete mode 100644 tests/api_fastapi/core_api/routes/public/test_version.py
delete mode 100644 tests/api_fastapi/core_api/routes/public/test_xcom.py
delete mode 100644 tests/api_fastapi/core_api/routes/test_routes.py
delete mode 100644 tests/api_fastapi/core_api/routes/ui/__init__.py
delete mode 100644 tests/api_fastapi/core_api/routes/ui/test_assets.py
delete mode 100644 tests/api_fastapi/core_api/routes/ui/test_backfills.py
delete mode 100644 tests/api_fastapi/core_api/routes/ui/test_config.py
delete mode 100644 tests/api_fastapi/core_api/routes/ui/test_dags.py
delete mode 100644 tests/api_fastapi/core_api/routes/ui/test_dashboard.py
delete mode 100644 tests/api_fastapi/core_api/routes/ui/test_dependencies.py
delete mode 100644 tests/api_fastapi/core_api/routes/ui/test_grid.py
delete mode 100644 tests/api_fastapi/core_api/routes/ui/test_structure.py
delete mode 100644 tests/api_fastapi/core_api/test_security.py
delete mode 100644 tests/api_fastapi/execution_api/__init__.py
delete mode 100644 tests/api_fastapi/execution_api/conftest.py
delete mode 100644 tests/api_fastapi/execution_api/routes/__init__.py
delete mode 100644 tests/api_fastapi/execution_api/routes/test_connections.py
delete mode 100644 tests/api_fastapi/execution_api/routes/test_health.py
delete mode 100644 tests/api_fastapi/execution_api/routes/test_task_instances.py
delete mode 100644 tests/api_fastapi/execution_api/routes/test_variables.py
delete mode 100644 tests/api_fastapi/execution_api/routes/test_xcoms.py
delete mode 100644 tests/api_fastapi/execution_api/test_app.py
delete mode 100644 tests/assets/__init__.py
delete mode 100644 tests/assets/test_manager.py
delete mode 100644 tests/auth/__init__.py
delete mode 100644 tests/auth/managers/__init__.py
delete mode 100644 tests/auth/managers/simple/__init__.py
delete mode 100644 tests/auth/managers/simple/conftest.py
delete mode 100644 tests/auth/managers/simple/routes/__init__.py
delete mode 100644 tests/auth/managers/simple/routes/test_login.py
delete mode 100644 tests/auth/managers/simple/services/__init__.py
delete mode 100644 tests/auth/managers/simple/services/test_login.py
delete mode 100644 tests/auth/managers/simple/test_simple_auth_manager.py
delete mode 100644 tests/auth/managers/test_base_auth_manager.py
delete mode 100644 tests/callbacks/__init__.py
delete mode 100644 tests/charts/__init__.py
delete mode 100644 tests/charts/helm_template_generator.py
delete mode 100644 tests/charts/log_groomer.py
delete mode 100644 tests/cli/__init__.py
delete mode 100644 tests/cli/commands/__init__.py
delete mode 100644 tests/cli/commands/local_commands/__init__.py
delete mode 100644 tests/cli/commands/local_commands/test_api_server_command.py
delete mode 100644 tests/cli/commands/local_commands/test_db_command.py
delete mode 100644 tests/cli/commands/local_commands/test_plugins_command.py
delete mode 100644 tests/cli/commands/remote_commands/__init__.py
delete mode 100644 tests/cli/commands/remote_commands/test_config_command.py
delete mode 100644 tests/cli/commands/remote_commands/test_connection_command.py
delete mode 100644 tests/cli/commands/remote_commands/test_dag_command.py
delete mode 100644 tests/cli/commands/remote_commands/test_task_command.py
delete mode 100644 tests/cli/test_cli_parser.py
delete mode 100644 tests/config_templates/__init__.py
delete mode 100644 tests/config_templates/empty.cfg
delete mode 100644 tests/conftest.py
delete mode 100644 tests/core/__init__.py
delete mode 100644 tests/core/test_configuration.py
delete mode 100644 tests/core/test_logging_config.py
delete mode 100644 tests/core/test_sentry.py
delete mode 100644 tests/core/test_sqlalchemy_config.py
delete mode 100644 tests/core/test_stats.py
delete mode 100644 tests/dag_processing/__init__.py
delete mode 100644 tests/dag_processing/bundles/__init__.py
delete mode 100644 tests/dag_processing/bundles/test_base.py
delete mode 100644 tests/dag_processing/bundles/test_dag_bundle_manager.py
delete mode 100644 tests/dag_processing/bundles/test_git.py
delete mode 100644 tests/dag_processing/test_collection.py
delete mode 100644 tests/dag_processing/test_manager.py
delete mode 100644 tests/dag_processing/test_processor.py
delete mode 100644 tests/dags/__init__.py
delete mode 100644 tests/dags/subdir1/__init__.py
delete mode 100644 tests/dags/subdir2/__init__.py
delete mode 100644 tests/dags/subdir2/subdir3/__init__.py
delete mode 100644 tests/dags/test_dags_folder.py
delete mode 100644 tests/dags/test_external_task_sensor_check_existense.py
delete mode 100644 tests/dags/test_imports.py
delete mode 100644 tests/dags/test_invalid_param2.py
delete mode 100644 tests/dags/test_invalid_param3.py
delete mode 100644 tests/dags/test_invalid_param4.py
delete mode 100644 tests/dags/test_logging_in_dag.py
delete mode 100644 tests/dags/test_valid_param.py
delete mode 100644 tests/dags/test_valid_param2.py
delete mode 100644 tests/dags/test_zip/file_no_airflow_dag.py
delete mode 100644 tests/dags/test_zip/test_zip_module/__init__.py
delete mode 100644 tests/dags_corrupted/__init__.py
delete mode 100644 tests/dags_with_system_exit/__init__.py
delete mode 100644 tests/datasets/__init__.py
delete mode 100644 tests/decorators/__init__.py
delete mode 100644 tests/decorators/test_bash.py
delete mode 100644 tests/decorators/test_branch_external_python.py
delete mode 100644 tests/decorators/test_branch_python.py
delete mode 100644 tests/decorators/test_branch_virtualenv.py
delete mode 100644 tests/decorators/test_mapped.py
delete mode 100644 tests/decorators/test_sensor.py
delete mode 100644 tests/decorators/test_short_circuit.py
delete mode 100644 tests/executors/__init__.py
delete mode 100644 tests/executors/test_executor_loader.py
delete mode 100644 tests/hooks/__init__.py
delete mode 100644 tests/hooks/test_base.py
delete mode 100644 tests/integration/__init__.py
delete mode 100644 tests/integration/cli/__init__.py
delete mode 100644 tests/integration/cli/commands/__init__.py
delete mode 100644 tests/integration/executors/__init__.py
delete mode 100644 tests/integration/security/__init__.py
delete mode 100644 tests/io/__init__.py
delete mode 100644 tests/jobs/__init__.py
delete mode 100644 tests/jobs/test_base_job.py
delete mode 100644 tests/jobs/test_local_task_job.py
delete mode 100644 tests/jobs/test_scheduler_job.py
delete mode 100644 tests/jobs/test_triggerer_job.py
delete mode 100644 tests/lineage/__init__.py
delete mode 100644 tests/lineage/test_lineage.py
delete mode 100644 tests/listeners/__init__.py
delete mode 100644 tests/listeners/test_asset_listener.py
delete mode 100644 tests/listeners/test_listeners.py
delete mode 100644 tests/macros/__init__.py
delete mode 100644 tests/models/test_asset.py
delete mode 100644 tests/models/test_backfill.py
delete mode 100644 tests/models/test_baseoperator.py
delete mode 100644 tests/models/test_baseoperatormeta.py
delete mode 100644 tests/models/test_cleartasks.py
delete mode 100644 tests/models/test_dag.py
delete mode 100644 tests/models/test_dagbag.py
delete mode 100644 tests/models/test_dagcode.py
delete mode 100644 tests/models/test_dagrun.py
delete mode 100644 tests/models/test_dagwarning.py
delete mode 100644 tests/models/test_mappedoperator.py
delete mode 100644 tests/models/test_serialized_dag.py
delete mode 100644 tests/models/test_skipmixin.py
delete mode 100644 tests/models/test_taskinstance.py
delete mode 100644 tests/models/test_trigger.py
delete mode 100644 tests/models/test_variable.py
delete mode 100644 tests/models/test_xcom.py
delete mode 100644 tests/notifications/__init__.py
delete mode 100644 tests/operators/__init__.py
delete mode 100644 tests/operators/test_branch_operator.py
delete mode 100644 tests/operators/test_trigger_dagrun.py
delete mode 100644 tests/plugins/__init__.py
delete mode 100644 tests/plugins/priority_weight_strategy.py
delete mode 100644 tests/plugins/test_plugin.py
delete mode 100644 tests/plugins/test_plugins_manager.py
delete mode 100644 tests/secrets/__init__.py
delete mode 100644 tests/security/__init__.py
delete mode 100644 tests/sensors/__init__.py
delete mode 100644 tests/sensors/test_base.py
delete mode 100644 tests/sensors/test_external_task_sensor.py
delete mode 100644 tests/serialization/__init__.py
delete mode 100644 tests/serialization/serializers/__init__.py
delete mode 100644 tests/serialization/test_dag_serialization.py
delete mode 100644 tests/serialization/test_serde.py
delete mode 100644 tests/serialization/test_serialized_objects.py
delete mode 100644 tests/system/__init__.py
delete mode 100644 tests/system/core/__init__.py
delete mode 100644 tests/system/example_empty.py
delete mode 100644 tests/task/__init__.py
delete mode 100644 tests/task/test_standard_task_runner.py
delete mode 100644 tests/testconfig/__init__.py
delete mode 100644 tests/testconfig/conf/__init__.py
delete mode 100644 tests/ti_deps/__init__.py
delete mode 100644 tests/ti_deps/contexts/__init__.py
delete mode 100644 tests/ti_deps/deps/__init__.py
delete mode 100644 tests/ti_deps/deps/test_not_previously_skipped_dep.py
delete mode 100644 tests/ti_deps/deps/test_prev_dagrun_dep.py
delete mode 100644 tests/ti_deps/deps/test_ready_to_reschedule_dep.py
delete mode 100644 tests/ti_deps/deps/test_trigger_rule_dep.py
delete mode 100644 tests/timetables/__init__.py
delete mode 100644 tests/timetables/test_assets_timetable.py
delete mode 100644 tests/timetables/test_interval_timetable.py
delete mode 100644 tests/timetables/test_trigger_timetable.py
delete mode 100644 tests/timetables/test_workday_timetable.py
delete mode 100644 tests/utils/__init__.py
delete mode 100644 tests/utils/log/__init__.py
delete mode 100644 tests/utils/log/test_log_reader.py
delete mode 100644 tests/utils/test_cli_util.py
delete mode 100644 tests/utils/test_dag_cycle.py
delete mode 100644 tests/utils/test_db.py
delete mode 100644 tests/utils/test_db_cleanup.py
delete mode 100644 tests/utils/test_db_manager.py
delete mode 100644 tests/utils/test_dot_renderer.py
delete mode 100644 tests/utils/test_email.py
delete mode 100644 tests/utils/test_file.py
delete mode 100644 tests/utils/test_helpers.py
delete mode 100644 tests/utils/test_json.py
delete mode 100644 tests/utils/test_log_handlers.py
delete mode 100644 tests/utils/test_logging_mixin.py
delete mode 100644 tests/utils/test_net.py
delete mode 100644 tests/utils/test_operator_helpers.py
delete mode 100644 tests/utils/test_orm_event_handlers.py
delete mode 100644 tests/utils/test_process_utils.py
delete mode 100644 tests/utils/test_retries.py
delete mode 100644 tests/utils/test_serve_logs.py
delete mode 100644 tests/utils/test_sqlalchemy.py
delete mode 100644 tests/utils/test_state.py
delete mode 100644 tests/utils/test_task_group.py
delete mode 100644 tests/utils/test_weekday.py
(airflow) 01/01: WIP: switch all airflow logging to structlog
Posted by as...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
ash pushed a commit to branch structlog-in-logging-mixin
in repository https://gitbox.apache.org/repos/asf/airflow.git
commit 7931865f907d22757bd07c383e42f8138bafb4ca
Author: Ash Berlin-Taylor <as...@apache.org>
AuthorDate: Thu Mar 6 15:06:53 2025 +0000
WIP: switch all airflow logging to structlog
---
airflow-core/pyproject.toml | 2 +
airflow-core/src/airflow/_logging/__init__.py | 16 +
airflow-core/src/airflow/_logging/structlog.py | 469 +++++++++++++++++++++
.../src/airflow/jobs/triggerer_job_runner.py | 5 +-
airflow-core/src/airflow/logging_config.py | 9 +-
.../airflow/utils/log/file_processor_handler.py | 4 +-
.../src/airflow/utils/log/logging_mixin.py | 19 +-
airflow-core/src/airflow/utils/retries.py | 2 +-
.../tests/unit/always/test_providers_manager.py | 9 +-
.../tests/unit/core/test_logging_config.py | 344 ---------------
airflow-core/tests/unit/core/test_stats.py | 8 +-
.../unit/sensors/test_external_task_sensor.py | 18 +-
.../tests/unit/utils/test_logging_mixin.py | 12 -
.../tests/unit/utils/test_process_utils.py | 11 +-
devel-common/src/tests_common/pytest_plugin.py | 108 ++++-
15 files changed, 631 insertions(+), 405 deletions(-)
diff --git a/airflow-core/pyproject.toml b/airflow-core/pyproject.toml
index d3e46ce4106..d245204123c 100644
--- a/airflow-core/pyproject.toml
+++ b/airflow-core/pyproject.toml
@@ -109,6 +109,7 @@ dependencies = [
# See https://github.com/pygments/pygments/issues/2834
"pygments>=2.0.1,!=2.19.0",
"pyjwt>=2.10.0",
+ "pygtrie>=2.5.0",
"python-daemon>=3.0.0",
"python-dateutil>=2.7.0",
"python-slugify>=5.0",
@@ -124,6 +125,7 @@ dependencies = [
"sqlalchemy>=1.4.49,<2.0",
"sqlalchemy-jsonfield>=1.0",
"sqlalchemy-utils>=0.41.2",
+ "structlog>=25.1.0",
"svcs>=25.1.0",
"tabulate>=0.7.5",
"tenacity>=8.0.0,!=8.2.0",
diff --git a/airflow-core/src/airflow/_logging/__init__.py b/airflow-core/src/airflow/_logging/__init__.py
new file mode 100644
index 00000000000..13a83393a91
--- /dev/null
+++ b/airflow-core/src/airflow/_logging/__init__.py
@@ -0,0 +1,16 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
diff --git a/airflow-core/src/airflow/_logging/structlog.py b/airflow-core/src/airflow/_logging/structlog.py
new file mode 100644
index 00000000000..65201b1c6de
--- /dev/null
+++ b/airflow-core/src/airflow/_logging/structlog.py
@@ -0,0 +1,469 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+from __future__ import annotations
+
+import itertools
+import logging
+import os
+import sys
+import warnings
+from functools import cache
+from typing import Any, BinaryIO, Callable, Generic, Protocol, TextIO, TypeVar, Union, cast
+
+import pygtrie
+import structlog
+from structlog.processors import NAME_TO_LEVEL
+from structlog.typing import (
+ BindableLogger,
+ EventDict,
+ ExcInfo,
+ FilteringBoundLogger,
+ Processor,
+ WrappedLogger,
+)
+
+log = logging.getLogger(__name__)
+
+
+class AirflowFilteringBoundLogger(FilteringBoundLogger, Protocol):
+ def isEnabledFor(self, level: int): ...
+ def getEffectiveLevel(self) -> int: ...
+
+ name: str
+
+
+LEVEL_TO_FILTERING_LOGGER: dict[int, type[AirflowFilteringBoundLogger]] = {}
+
+
+def _make_airflow_structlogger(min_level):
+ # This uses https://github.com/hynek/structlog/blob/2f0cc42d/src/structlog/_native.py#L126
+ # as inspiration
+
+ LEVEL_TO_NAME = {v: k for k, v in NAME_TO_LEVEL.items()}
+
+ def isEnabledFor(self: Any, level):
+ return self.is_enabled_for(level)
+
+ def getEffectiveLevel(self: Any):
+ return self.get_effective_level()
+
+ @property
+ def name(self):
+ return self._logger.name
+
+ base = structlog.make_filtering_bound_logger(min_level)
+
+ cls = type(
+ f"AirflowBoundLoggerFilteringAt{LEVEL_TO_NAME.get(min_level, 'Notset').capitalize()}",
+ (base,),
+ {
+ "isEnabledFor": isEnabledFor,
+ "getEffectiveLevel": getEffectiveLevel,
+ "name": name,
+ },
+ )
+ LEVEL_TO_FILTERING_LOGGER[min_level] = cls
+ return cls
+
+
+AirflowBoundLoggerFilteringAtNotset = _make_airflow_structlogger(NAME_TO_LEVEL["notset"])
+AirflowBoundLoggerFilteringAtDebug = _make_airflow_structlogger(NAME_TO_LEVEL["debug"])
+AirflowBoundLoggerFilteringAtInfo = _make_airflow_structlogger(NAME_TO_LEVEL["info"])
+AirflowBoundLoggerFilteringAtWarning = _make_airflow_structlogger(NAME_TO_LEVEL["warning"])
+AirflowBoundLoggerFilteringAtError = _make_airflow_structlogger(NAME_TO_LEVEL["error"])
+AirflowBoundLoggerFilteringAtCritical = _make_airflow_structlogger(NAME_TO_LEVEL["critical"])
+
+# We use a trie structure so that we can easily and quickly find the most suitable log level to apply.
+# This mirrors the logging level cascade behavior from stdlib logging, without the complexity of multiple
+# handlers etc
+PER_LOGGER_LEVELS = pygtrie.StringTrie(separator=".")
+PER_LOGGER_LEVELS.update(
+ {
+ # Top level logging default - changed to respect config in `configure_structlog`
+ "": NAME_TO_LEVEL["info"],
+ }
+)
+
+
+def make_filtering_logger() -> Callable[..., BindableLogger]:
+ def maker(logger: WrappedLogger, *args, **kwargs):
+ # If the logger is a NamedBytesLogger/NamedWriteLogger (an Airflow specific subclass) then
+ # look up the global per-logger config and redirect to a new class.
+
+ logger_name = kwargs.get("context", {}).get("logger_name")
+ if not logger_name and isinstance(logger, (NamedWriteLogger, NamedBytesLogger)):
+ logger_name = logger.name
+
+ if logger_name:
+ level = PER_LOGGER_LEVELS.longest_prefix(logger_name).get(PER_LOGGER_LEVELS[""])
+ else:
+ level = PER_LOGGER_LEVELS[""]
+ return LEVEL_TO_FILTERING_LOGGER[level](logger, *args, **kwargs) # type: ignore[call-arg]
+
+ return maker
+
+
+class NamedBytesLogger(structlog.BytesLogger):
+ __slots__ = ("name",)
+
+ def __init__(self, name: str | None = None, file: BinaryIO | None = None):
+ self.name = name
+ super().__init__(file)
+
+
+class NamedWriteLogger(structlog.WriteLogger):
+ __slots__ = ("name",)
+
+ def __init__(self, name: str | None = None, file: TextIO | None = None):
+ self.name = name
+ super().__init__(file)
+
+
+LogOutputType = TypeVar("LogOutputType", bound=Union[TextIO, BinaryIO])
+
+
+class LoggerFactory(Generic[LogOutputType]):
+ def __init__(
+ self,
+ cls: Callable[[str | None, LogOutputType | None], WrappedLogger],
+ io: LogOutputType | None = None,
+ ):
+ self.cls = cls
+ self.io = io
+
+ def __call__(self, logger_name: str | None = None, *args: Any) -> WrappedLogger:
+ return self.cls(logger_name, self.io)
+
+
+def logger_name(logger: Any, method_name: Any, event_dict: EventDict) -> EventDict:
+ if logger_name := (event_dict.pop("logger_name", None) or getattr(logger, "name", None)):
+ event_dict.setdefault("logger", logger_name)
+ return event_dict
+
+
+def exception_group_tracebacks(
+ format_exception: Callable[[ExcInfo], list[dict[str, Any]]],
+) -> Processor:
+ # Make mypy happy
+ if not hasattr(__builtins__, "BaseExceptionGroup"):
+ T = TypeVar("T")
+
+ class BaseExceptionGroup(Generic[T]):
+ exceptions: list[T]
+
+ def _exception_group_tracebacks(logger: Any, method_name: Any, event_dict: EventDict) -> EventDict:
+ if exc_info := event_dict.get("exc_info", None):
+ group: BaseExceptionGroup[Exception] | None = None
+ if exc_info is True:
+ # `log.exception('mesg")` case
+ exc_info = sys.exc_info()
+ if exc_info[0] is None:
+ exc_info = None
+
+ if (
+ isinstance(exc_info, tuple)
+ and len(exc_info) == 3
+ and isinstance(exc_info[1], BaseExceptionGroup)
+ ):
+ group = exc_info[1]
+ elif isinstance(exc_info, BaseExceptionGroup):
+ group = exc_info
+
+ if group:
+ # Only remove it from event_dict if we handle it
+ del event_dict["exc_info"]
+ event_dict["exception"] = list(
+ itertools.chain.from_iterable(
+ format_exception((type(exc), exc, exc.__traceback__)) # type: ignore[attr-defined,arg-type]
+ for exc in (*group.exceptions, group)
+ )
+ )
+
+ return event_dict
+
+ return _exception_group_tracebacks
+
+
+# `eyJ` is `{"` in base64 encoding -- and any value that starts like that is in high likely hood a JWT
+# token. Better safe than sorry
+def redact_jwt(logger: Any, method_name: str, event_dict: EventDict) -> EventDict:
+ for k, v in event_dict.items():
+ if isinstance(v, str) and v.startswith("eyJ"):
+ event_dict[k] = "eyJ***"
+ return event_dict
+
+
+def drop_positional_args(logger: Any, method_name: Any, event_dict: EventDict) -> EventDict:
+ event_dict.pop("positional_args", None)
+ return event_dict
+
+
+@cache
+def structlog_processors(
+ json_output: bool,
+):
+ if json_output:
+ timestamper = structlog.processors.MaybeTimeStamper(fmt="iso")
+ else:
+ timestamper = structlog.processors.MaybeTimeStamper(fmt="%Y-%m-%d %H:%M:%S.%f")
+
+ processors: list[structlog.typing.Processor] = [
+ timestamper,
+ structlog.contextvars.merge_contextvars,
+ structlog.processors.add_log_level,
+ structlog.stdlib.PositionalArgumentsFormatter(),
+ logger_name,
+ redact_jwt,
+ structlog.processors.StackInfoRenderer(),
+ ]
+
+ # Imports to suppress showing code from these modules. We need the import to get the filepath for
+ # structlog to ignore.
+ import contextlib
+
+ import click
+ import httpcore
+ import httpx
+
+ suppress = (
+ click,
+ contextlib,
+ httpx,
+ httpcore,
+ httpx,
+ )
+
+ if json_output:
+ dict_exc_formatter = structlog.tracebacks.ExceptionDictTransformer(
+ use_rich=False, show_locals=False, suppress=suppress
+ )
+
+ dict_tracebacks = structlog.processors.ExceptionRenderer(dict_exc_formatter)
+ if hasattr(__builtins__, "BaseExceptionGroup"):
+ exc_group_processor = exception_group_tracebacks(dict_exc_formatter)
+ processors.append(exc_group_processor)
+ else:
+ exc_group_processor = None
+
+ import msgspec
+
+ def json_dumps(msg, default):
+ # Note: this is likely an "expensive" step, but lets massage the dict order for nice
+ # viewing of the raw JSON logs.
+ # Maybe we don't need this once the UI renders the JSON instead of displaying the raw text
+ msg = {
+ "timestamp": msg.pop("timestamp"),
+ "level": msg.pop("level"),
+ "event": msg.pop("event"),
+ **msg,
+ }
+ return msgspec.json.encode(msg, enc_hook=default)
+
+ def json_processor(logger: Any, method_name: Any, event_dict: EventDict) -> str:
+ # Stdlib logging doesn't need the re-ordering, it's fine as it is
+ return msgspec.json.encode(event_dict).decode("utf-8")
+
+ json = structlog.processors.JSONRenderer(serializer=json_dumps)
+
+ processors.extend(
+ (
+ dict_tracebacks,
+ structlog.processors.UnicodeDecoder(),
+ json,
+ ),
+ )
+
+ return processors, {
+ "timestamper": timestamper,
+ "exc_group_processor": exc_group_processor,
+ "dict_tracebacks": dict_tracebacks,
+ "json": json_processor,
+ }
+ else:
+ rich_exc_formatter = structlog.dev.RichTracebackFormatter(
+ # These values are picked somewhat arbitrarily to produce useful-but-compact tracebacks. If
+ # we ever need to change these then they should be configurable.
+ extra_lines=0,
+ max_frames=30,
+ indent_guides=False,
+ suppress=suppress,
+ )
+ my_styles = structlog.dev.ConsoleRenderer.get_default_level_styles()
+ my_styles["debug"] = structlog.dev.CYAN
+
+ console = structlog.dev.ConsoleRenderer(
+ exception_formatter=rich_exc_formatter, level_styles=my_styles
+ )
+ processors.append(console)
+ return processors, {
+ "timestamper": timestamper,
+ "console": console,
+ }
+
+
+def configure_structlog(
+ json_output: bool = False,
+ log_level: str = "DEBUG",
+ cache_logger_on_first_use: bool = True,
+ stdlib_config: dict | None = None,
+):
+ if "fatal" not in NAME_TO_LEVEL:
+ NAME_TO_LEVEL["fatal"] = NAME_TO_LEVEL["critical"]
+
+ stdlib_config = stdlib_config or {}
+
+ """Set up struct logging and stdlib logging config."""
+ PER_LOGGER_LEVELS[""] = NAME_TO_LEVEL[log_level.lower()]
+
+ if json_output:
+ formatter = "plain"
+ else:
+ formatter = "colored"
+ processors, named = structlog_processors(json_output)
+ timestamper = named["timestamper"]
+
+ pre_chain: list[structlog.typing.Processor] = [
+ # Add the log level and a timestamp to the event_dict if the log entry
+ # is not from structlog.
+ structlog.stdlib.add_log_level,
+ structlog.stdlib.add_logger_name,
+ timestamper,
+ structlog.contextvars.merge_contextvars,
+ redact_jwt,
+ ]
+
+ # Don't cache the loggers during tests, it make it hard to capture them
+ if "PYTEST_VERSION" in os.environ:
+ cache_logger_on_first_use = False
+
+ color_formatter: list[structlog.typing.Processor] = [
+ structlog.stdlib.ProcessorFormatter.remove_processors_meta,
+ drop_positional_args,
+ ]
+ std_lib_formatter: list[structlog.typing.Processor] = [
+ structlog.stdlib.ProcessorFormatter.remove_processors_meta,
+ drop_positional_args,
+ ]
+
+ wrapper_class = cast(type[BindableLogger], make_filtering_logger())
+ if json_output:
+ structlog.configure(
+ processors=processors,
+ cache_logger_on_first_use=cache_logger_on_first_use,
+ wrapper_class=wrapper_class,
+ logger_factory=LoggerFactory(NamedBytesLogger), # type: ignore[type-var]
+ )
+
+ if processor := named["exc_group_processor"]:
+ pre_chain.append(processor)
+ pre_chain.append(named["dict_tracebacks"])
+ color_formatter.append(named["json"])
+ std_lib_formatter.append(named["json"])
+ else:
+ structlog.configure(
+ processors=processors,
+ cache_logger_on_first_use=cache_logger_on_first_use,
+ wrapper_class=wrapper_class,
+ logger_factory=LoggerFactory(NamedWriteLogger), # type: ignore[type-var]
+ )
+ color_formatter.append(named["console"])
+
+ global _warnings_showwarning
+
+ if _warnings_showwarning is None:
+ _warnings_showwarning = warnings.showwarning
+ # Capture warnings and show them via structlog
+ warnings.showwarning = _showwarning
+
+ import logging.config
+
+ config = {**stdlib_config}
+ config["formatters"].update(
+ {
+ "plain": {
+ "()": structlog.stdlib.ProcessorFormatter,
+ "processors": std_lib_formatter,
+ "foreign_pre_chain": pre_chain,
+ "pass_foreign_args": True,
+ },
+ "colored": {
+ "()": structlog.stdlib.ProcessorFormatter,
+ "processors": color_formatter,
+ "foreign_pre_chain": pre_chain,
+ "pass_foreign_args": True,
+ },
+ }
+ )
+ config["handlers"].update(
+ {
+ "default": {
+ "level": log_level.upper(),
+ "class": "logging.StreamHandler",
+ "formatter": formatter,
+ },
+ }
+ )
+ for log_config in config["loggers"].values():
+ # We want everything to go via structlog, remove whatever the user might have configured
+ log_config.pop("stream", None)
+ log_config.pop("formatter", None)
+ # log_config.pop("handlers", None)
+ config["loggers"].update(
+ {
+ # Set Airflow logging to the level requested, but most everything else at "INFO"
+ "airflow": {"level": log_level.upper()},
+ # These ones are too chatty even at info
+ "httpx": {"level": "WARN"},
+ "sqlalchemy.engine": {"level": "WARN"},
+ }
+ )
+ config["root"] = {
+ "handlers": ["default"],
+ "level": "INFO",
+ "propagate": True,
+ }
+
+ logging.config.dictConfig(config)
+
+
+_warnings_showwarning: Any = None
+
+
+def _showwarning(
+ message: Warning | str,
+ category: type[Warning],
+ filename: str,
+ lineno: int,
+ file: TextIO | None = None,
+ line: str | None = None,
+) -> Any:
+ """
+ Redirects warnings to structlog so they appear in task logs etc.
+
+ Implementation of showwarnings which redirects to logging, which will first
+ check to see if the file parameter is None. If a file is specified, it will
+ delegate to the original warnings implementation of showwarning. Otherwise,
+ it will call warnings.formatwarning and will log the resulting string to a
+ warnings logger named "py.warnings" with level logging.WARNING.
+ """
+ if file is not None:
+ if _warnings_showwarning is not None:
+ _warnings_showwarning(message, category, filename, lineno, file, line)
+ else:
+ log = structlog.get_logger("py.warnings")
+ log.warning(str(message), category=category.__name__, filename=filename, lineno=lineno)
diff --git a/airflow-core/src/airflow/jobs/triggerer_job_runner.py b/airflow-core/src/airflow/jobs/triggerer_job_runner.py
index bcf0bb9bb96..3d3a462dfef 100644
--- a/airflow-core/src/airflow/jobs/triggerer_job_runner.py
+++ b/airflow-core/src/airflow/jobs/triggerer_job_runner.py
@@ -547,7 +547,7 @@ class TriggerDetails(TypedDict):
events: int
-class TriggerRunner:
+class TriggerRunner(LoggingMixin):
"""
Runtime environment for all triggers.
@@ -579,9 +579,6 @@ class TriggerRunner:
# TODO: set this in a sig-int handler
stop: bool = False
- # TODO: connect this to the parent process
- log: FilteringBoundLogger = structlog.get_logger()
-
requests_sock: asyncio.StreamWriter
def __init__(self):
diff --git a/airflow-core/src/airflow/logging_config.py b/airflow-core/src/airflow/logging_config.py
index f0497c57409..0873b8b29bf 100644
--- a/airflow-core/src/airflow/logging_config.py
+++ b/airflow-core/src/airflow/logging_config.py
@@ -19,8 +19,8 @@ from __future__ import annotations
import logging
import warnings
-from logging.config import dictConfig
+from airflow._logging.structlog import configure_structlog
from airflow.configuration import conf
from airflow.exceptions import AirflowConfigException
from airflow.utils.module_loading import import_string
@@ -65,20 +65,21 @@ def configure_logging():
if "mask_secrets" not in task_handler_config["filters"]:
task_handler_config["filters"].append("mask_secrets")
+ level: str = conf.get_mandatory_value("logging", "LOGGING_LEVEL").upper()
# Try to init logging
- dictConfig(logging_config)
+ configure_structlog(log_level=level, stdlib_config=logging_config)
except (ValueError, KeyError) as e:
log.error("Unable to load the config, contains a configuration error.")
# When there is an error in the config, escalate the exception
# otherwise Airflow would silently fall back on the default config
raise e
- validate_logging_config(logging_config)
+ validate_logging_config()
return logging_class_path
-def validate_logging_config(logging_config):
+def validate_logging_config():
"""Validate the provided Logging Config."""
# Now lets validate the other logging-related settings
task_log_reader = conf.get("logging", "task_log_reader")
diff --git a/airflow-core/src/airflow/utils/log/file_processor_handler.py b/airflow-core/src/airflow/utils/log/file_processor_handler.py
index 5dbd034cea8..cf0cec6ed83 100644
--- a/airflow-core/src/airflow/utils/log/file_processor_handler.py
+++ b/airflow-core/src/airflow/utils/log/file_processor_handler.py
@@ -25,7 +25,7 @@ from pathlib import Path
from airflow import settings
from airflow.utils import timezone
from airflow.utils.helpers import parse_template_string
-from airflow.utils.log.logging_mixin import DISABLE_PROPOGATE
+from airflow.utils.log.logging_mixin import SetContextPropagate
from airflow.utils.log.non_caching_file_handler import NonCachingFileHandler
logger = logging.getLogger(__name__)
@@ -69,7 +69,7 @@ class FileProcessorHandler(logging.Handler):
self._symlink_latest_log_directory()
self._cur_date = datetime.today()
- return DISABLE_PROPOGATE
+ return SetContextPropagate.DISABLE_PROPAGATE
def emit(self, record):
if self.handler is not None:
diff --git a/airflow-core/src/airflow/utils/log/logging_mixin.py b/airflow-core/src/airflow/utils/log/logging_mixin.py
index d06ba0b7d34..785503ae13e 100644
--- a/airflow-core/src/airflow/utils/log/logging_mixin.py
+++ b/airflow-core/src/airflow/utils/log/logging_mixin.py
@@ -19,15 +19,16 @@ from __future__ import annotations
import abc
import enum
-import logging
import re
import sys
from io import TextIOBase, UnsupportedOperation
from logging import Handler, StreamHandler
from typing import IO, TYPE_CHECKING, Any, Optional, TypeVar, cast
+import structlog
+
if TYPE_CHECKING:
- from logging import Logger
+ from airflow._logging.structlog import AirflowFilteringBoundLogger
# 7-bit C1 ANSI escape sequences
ANSI_ESCAPE = re.compile(r"\x1B[@-_][0-?]*[ -/]*[@-~]")
@@ -67,7 +68,7 @@ _T = TypeVar("_T")
class LoggingMixin:
"""Convenience super-class to have a logger configured with the class name."""
- _log: logging.Logger | None = None
+ _log: AirflowFilteringBoundLogger | None = None
# Parent logger used by this class. It should match one of the loggers defined in the
# `logging_config_class`. By default, this attribute is used to create the final name of the logger, and
@@ -104,29 +105,27 @@ class LoggingMixin:
return logger_name
@classmethod
- def _get_log(cls, obj: Any, clazz: type[_T]) -> Logger:
+ def _get_log(cls, obj: Any, clazz: type[_T]) -> AirflowFilteringBoundLogger:
if obj._log is None:
logger_name: str = cls._create_logger_name(
logged_class=clazz,
log_config_logger_name=obj._log_config_logger_name,
class_logger_name=obj._logger_name,
)
- obj._log = logging.getLogger(logger_name)
+ obj._log = structlog.get_logger(logger_name)
return obj._log
@classmethod
- def logger(cls) -> Logger:
+ def logger(cls) -> AirflowFilteringBoundLogger:
"""Return a logger."""
return LoggingMixin._get_log(cls, cls)
@property
- def log(self) -> Logger:
+ def log(self) -> AirflowFilteringBoundLogger:
"""Return a logger."""
return LoggingMixin._get_log(self, self.__class__)
- def _set_context(self, context):
- if context is not None:
- set_context(self.log, context)
+ def _set_context(self, context): ...
class ExternalLoggingMixin:
diff --git a/airflow-core/src/airflow/utils/retries.py b/airflow-core/src/airflow/utils/retries.py
index 809d176ef6c..dad8af58fd3 100644
--- a/airflow-core/src/airflow/utils/retries.py
+++ b/airflow-core/src/airflow/utils/retries.py
@@ -42,7 +42,7 @@ def run_with_db_retries(max_retries: int = MAX_DB_RETRIES, logger: logging.Logge
reraise=True,
**kwargs,
)
- if logger and isinstance(logger, logging.Logger):
+ if logger is not None:
retry_kwargs["before_sleep"] = tenacity.before_sleep_log(logger, logging.DEBUG, True)
return tenacity.Retrying(**retry_kwargs)
diff --git a/airflow-core/tests/unit/always/test_providers_manager.py b/airflow-core/tests/unit/always/test_providers_manager.py
index feb6548e997..396c910f381 100644
--- a/airflow-core/tests/unit/always/test_providers_manager.py
+++ b/airflow-core/tests/unit/always/test_providers_manager.py
@@ -115,8 +115,8 @@ class TestProviderManager:
)
providers_manager._discover_hooks()
_ = providers_manager._hooks_lazy_dict["wrong-connection-type"]
- assert len(self._caplog.records) == 1
- assert "Inconsistency!" in self._caplog.records[0].message
+ assert len(self._caplog.entries) == 1
+ assert "Inconsistency!" in self._caplog[0]["event"]
assert "sftp" not in providers_manager.hooks
def test_warning_logs_not_generated(self):
@@ -160,11 +160,12 @@ class TestProviderManager:
providers_manager._discover_hooks()
_ = providers_manager._hooks_lazy_dict["dummy"]
assert len(self._caplog.records) == 1
- assert "The connection type 'dummy' is already registered" in self._caplog.records[0].message
+ msg = self._caplog.messages[0]
+ assert msg.startswith("The connection type 'dummy' is already registered")
assert (
"different class names: 'airflow.providers.dummy.hooks.dummy.DummyHook'"
" and 'airflow.providers.dummy.hooks.dummy.DummyHook2'."
- ) in self._caplog.records[0].message
+ ) in msg
def test_providers_manager_register_plugins(self):
providers_manager = ProvidersManager()
diff --git a/airflow-core/tests/unit/core/test_logging_config.py b/airflow-core/tests/unit/core/test_logging_config.py
deleted file mode 100644
index 29dae7ff712..00000000000
--- a/airflow-core/tests/unit/core/test_logging_config.py
+++ /dev/null
@@ -1,344 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied. See the License for the
-# specific language governing permissions and limitations
-# under the License.
-from __future__ import annotations
-
-import contextlib
-import importlib
-import logging
-import os
-import pathlib
-import sys
-import tempfile
-from unittest.mock import patch
-
-import pytest
-
-from airflow.configuration import conf
-
-from tests_common.test_utils.config import conf_vars
-
-SETTINGS_FILE_VALID = """
-LOGGING_CONFIG = {
- 'version': 1,
- 'disable_existing_loggers': False,
- 'formatters': {
- 'airflow.task': {
- 'format': '[%%(asctime)s] {{%%(filename)s:%%(lineno)d}} %%(levelname)s - %%(message)s'
- },
- },
- 'handlers': {
- 'console': {
- 'class': 'logging.StreamHandler',
- 'formatter': 'airflow.task',
- 'stream': 'ext://sys.stdout'
- },
- 'task': {
- 'class': 'logging.StreamHandler',
- 'formatter': 'airflow.task',
- 'stream': 'ext://sys.stdout'
- },
- },
- 'loggers': {
- 'airflow.task': {
- 'handlers': ['task'],
- 'level': 'INFO',
- 'propagate': False,
- },
- }
-}
-"""
-
-SETTINGS_FILE_INVALID = """
-LOGGING_CONFIG = {
- 'version': 1,
- 'disable_existing_loggers': False,
- 'formatters': {
- 'airflow.task': {
- 'format': '[%%(asctime)s] {{%%(filename)s:%%(lineno)d}} %%(levelname)s - %%(message)s'
- },
- },
- 'handlers': {
- 'console': {
- 'class': 'logging.StreamHandler',
- 'formatter': 'airflow.task',
- 'stream': 'ext://sys.stdout'
- }
- },
- 'loggers': {
- 'airflow': {
- 'handlers': ['file.handler'], # this handler does not exists
- 'level': 'INFO',
- 'propagate': False
- }
- }
-}
-"""
-
-SETTINGS_FILE_EMPTY = """
-# Other settings here
-"""
-
-SETTINGS_DEFAULT_NAME = "custom_airflow_local_settings"
-
-
-def reset_logging():
- """Reset Logging"""
- manager = logging.root.manager
- manager.disabled = logging.NOTSET
- airflow_loggers = [
- logger for logger_name, logger in manager.loggerDict.items() if logger_name.startswith("airflow")
- ]
- for logger in airflow_loggers:
- if isinstance(logger, logging.Logger):
- logger.setLevel(logging.NOTSET)
- logger.propagate = True
- logger.disabled = False
- logger.filters.clear()
- handlers = logger.handlers.copy()
- for handler in handlers:
- # Copied from `logging.shutdown`.
- try:
- handler.acquire()
- handler.flush()
- handler.close()
- except (OSError, ValueError):
- pass
- finally:
- handler.release()
- logger.removeHandler(handler)
-
-
-@contextlib.contextmanager
-def settings_context(content, directory=None, name="LOGGING_CONFIG"):
- """
- Sets a settings file and puts it in the Python classpath
-
- :param content:
- The content of the settings file
- :param directory: the directory
- :param name: str
- """
- initial_logging_config = os.environ.get("AIRFLOW__LOGGING__LOGGING_CONFIG_CLASS", "")
- try:
- settings_root = tempfile.mkdtemp()
- filename = f"{SETTINGS_DEFAULT_NAME}.py"
- if directory:
- # Create the directory structure with __init__.py
- dir_path = os.path.join(settings_root, directory)
- pathlib.Path(dir_path).mkdir(parents=True, exist_ok=True)
-
- basedir = settings_root
- for part in directory.split("/"):
- open(os.path.join(basedir, "__init__.py"), "w").close()
- basedir = os.path.join(basedir, part)
- open(os.path.join(basedir, "__init__.py"), "w").close()
-
- # Replace slashes by dots
- module = directory.replace("/", ".") + "." + SETTINGS_DEFAULT_NAME + "." + name
- settings_file = os.path.join(dir_path, filename)
- else:
- module = SETTINGS_DEFAULT_NAME + "." + name
- settings_file = os.path.join(settings_root, filename)
-
- with open(settings_file, "w") as handle:
- handle.writelines(content)
- sys.path.append(settings_root)
-
- # Using environment vars instead of conf_vars so value is accessible
- # to parent and child processes when using 'spawn' for multiprocessing.
- os.environ["AIRFLOW__LOGGING__LOGGING_CONFIG_CLASS"] = module
- yield settings_file
-
- finally:
- os.environ["AIRFLOW__LOGGING__LOGGING_CONFIG_CLASS"] = initial_logging_config
- sys.path.remove(settings_root)
-
-
-class TestLoggingSettings:
- # Make sure that the configure_logging is not cached
- def setup_method(self):
- self.old_modules = dict(sys.modules)
-
- def teardown_method(self):
- # Remove any new modules imported during the test run. This lets us
- # import the same source files for more than one test.
- from airflow.config_templates import airflow_local_settings
- from airflow.logging_config import configure_logging
-
- for mod in list(sys.modules):
- if mod not in self.old_modules:
- del sys.modules[mod]
-
- reset_logging()
- importlib.reload(airflow_local_settings)
- configure_logging()
-
- # When we try to load an invalid config file, we expect an error
- def test_loading_invalid_local_settings(self):
- from airflow.logging_config import configure_logging, log
-
- with settings_context(SETTINGS_FILE_INVALID):
- with patch.object(log, "error") as mock_info:
- # Load config
- with pytest.raises(ValueError):
- configure_logging()
-
- mock_info.assert_called_once_with(
- "Unable to load the config, contains a configuration error."
- )
-
- def test_loading_valid_complex_local_settings(self):
- # Test what happens when the config is somewhere in a subfolder
- module_structure = "etc.airflow.config"
- dir_structure = module_structure.replace(".", "/")
- with settings_context(SETTINGS_FILE_VALID, dir_structure):
- from airflow.logging_config import configure_logging, log
-
- with patch.object(log, "info") as mock_info:
- configure_logging()
- mock_info.assert_called_once_with(
- "Successfully imported user-defined logging config from %s",
- f"etc.airflow.config.{SETTINGS_DEFAULT_NAME}.LOGGING_CONFIG",
- )
-
- # When we try to load a valid config
- def test_loading_valid_local_settings(self):
- with settings_context(SETTINGS_FILE_VALID):
- from airflow.logging_config import configure_logging, log
-
- with patch.object(log, "info") as mock_info:
- configure_logging()
- mock_info.assert_called_once_with(
- "Successfully imported user-defined logging config from %s",
- f"{SETTINGS_DEFAULT_NAME}.LOGGING_CONFIG",
- )
-
- # When we load an empty file, it should go to default
- def test_loading_no_local_settings(self):
- with settings_context(SETTINGS_FILE_EMPTY):
- from airflow.logging_config import configure_logging
-
- with pytest.raises(ImportError):
- configure_logging()
-
- # When the key is not available in the configuration
- def test_when_the_config_key_does_not_exists(self):
- from airflow import logging_config
-
- with conf_vars({("logging", "logging_config_class"): None}):
- with patch.object(logging_config.log, "debug") as mock_debug:
- logging_config.configure_logging()
- mock_debug.assert_any_call("Unable to load custom logging, using default config instead")
-
- # Just default
- def test_loading_local_settings_without_logging_config(self):
- from airflow.logging_config import configure_logging, log
-
- with patch.object(log, "debug") as mock_info:
- configure_logging()
- mock_info.assert_called_once_with("Unable to load custom logging, using default config instead")
-
- def test_1_9_config(self):
- from airflow.logging_config import configure_logging
-
- with conf_vars({("logging", "task_log_reader"): "file.task"}):
- with pytest.warns(DeprecationWarning, match=r"file.task"):
- configure_logging()
- assert conf.get("logging", "task_log_reader") == "task"
-
- def test_loading_remote_logging_with_wasb_handler(self):
- """Test if logging can be configured successfully for Azure Blob Storage"""
- pytest.importorskip(
- "airflow.providers.microsoft.azure", reason="'microsoft.azure' provider not installed"
- )
- from airflow.config_templates import airflow_local_settings
- from airflow.logging_config import configure_logging
- from airflow.providers.microsoft.azure.log.wasb_task_handler import WasbTaskHandler
-
- with conf_vars(
- {
- ("logging", "remote_logging"): "True",
- ("logging", "remote_log_conn_id"): "some_wasb",
- ("logging", "remote_base_log_folder"): "wasb://some-folder",
- }
- ):
- importlib.reload(airflow_local_settings)
- configure_logging()
-
- logger = logging.getLogger("airflow.task")
- assert isinstance(logger.handlers[0], WasbTaskHandler)
-
- @pytest.mark.parametrize(
- "remote_base_log_folder, log_group_arn",
- [
- (
- "cloudwatch://arn:aws:logs:aaaa:bbbbb:log-group:ccccc",
- "arn:aws:logs:aaaa:bbbbb:log-group:ccccc",
- ),
- (
- "cloudwatch://arn:aws:logs:aaaa:bbbbb:log-group:aws/ccccc",
- "arn:aws:logs:aaaa:bbbbb:log-group:aws/ccccc",
- ),
- (
- "cloudwatch://arn:aws:logs:aaaa:bbbbb:log-group:/aws/ecs/ccccc",
- "arn:aws:logs:aaaa:bbbbb:log-group:/aws/ecs/ccccc",
- ),
- ],
- )
- def test_log_group_arns_remote_logging_with_cloudwatch_handler(
- self, remote_base_log_folder, log_group_arn
- ):
- """Test if the correct ARNs are configured for Cloudwatch"""
- from airflow.config_templates import airflow_local_settings
- from airflow.logging_config import configure_logging
-
- with conf_vars(
- {
- ("logging", "remote_logging"): "True",
- ("logging", "remote_log_conn_id"): "some_cloudwatch",
- ("logging", "remote_base_log_folder"): remote_base_log_folder,
- }
- ):
- importlib.reload(airflow_local_settings)
- configure_logging()
- assert (
- airflow_local_settings.DEFAULT_LOGGING_CONFIG["handlers"]["task"]["log_group_arn"]
- == log_group_arn
- )
-
- def test_loading_remote_logging_with_kwargs(self):
- """Test if logging can be configured successfully with kwargs"""
- pytest.importorskip("airflow.providers.amazon", reason="'amazon' provider not installed")
- from airflow.config_templates import airflow_local_settings
- from airflow.logging_config import configure_logging
- from airflow.providers.amazon.aws.log.s3_task_handler import S3TaskHandler
-
- with conf_vars(
- {
- ("logging", "remote_logging"): "True",
- ("logging", "remote_log_conn_id"): "some_s3",
- ("logging", "remote_base_log_folder"): "s3://some-folder",
- ("logging", "remote_task_handler_kwargs"): '{"delete_local_copy": true}',
- }
- ):
- importlib.reload(airflow_local_settings)
- configure_logging()
-
- logger = logging.getLogger("airflow.task")
- assert isinstance(logger.handlers[0], S3TaskHandler)
- assert getattr(logger.handlers[0], "delete_local_copy") is True
diff --git a/airflow-core/tests/unit/core/test_stats.py b/airflow-core/tests/unit/core/test_stats.py
index a297492dbf8..cff52656091 100644
--- a/airflow-core/tests/unit/core/test_stats.py
+++ b/airflow-core/tests/unit/core/test_stats.py
@@ -375,11 +375,11 @@ class TestPatternValidatorConfigOption:
@conf_vars({**stats_on, **block_list, ("metrics", "metrics_allow_list"): "baz,qux"})
def test_setting_allow_and_block_logs_warning(self, caplog):
- importlib.reload(airflow.stats)
-
- assert isinstance(airflow.stats.Stats.statsd, statsd.StatsClient)
- assert type(airflow.stats.Stats.instance.metrics_validator) is PatternAllowListValidator
with caplog.at_level(logging.WARNING):
+ importlib.reload(airflow.stats)
+
+ assert isinstance(airflow.stats.Stats.statsd, statsd.StatsClient)
+ assert type(airflow.stats.Stats.instance.metrics_validator) is PatternAllowListValidator
assert "Ignoring metrics_block_list" in caplog.text
diff --git a/airflow-core/tests/unit/sensors/test_external_task_sensor.py b/airflow-core/tests/unit/sensors/test_external_task_sensor.py
index b8f9b477aa8..947c125f8be 100644
--- a/airflow-core/tests/unit/sensors/test_external_task_sensor.py
+++ b/airflow-core/tests/unit/sensors/test_external_task_sensor.py
@@ -393,8 +393,7 @@ class TestExternalTaskSensor:
caplog.clear()
op.run(start_date=DEFAULT_DATE, end_date=DEFAULT_DATE, ignore_ti_state=True)
assert (
- f"Poking for tasks ['{TEST_TASK_ID}'] "
- f"in dag {TEST_DAG_ID} on {DEFAULT_DATE.isoformat()} ... "
+ f"Poking for tasks ['{TEST_TASK_ID}'] in dag {TEST_DAG_ID} on {DEFAULT_DATE.isoformat()} ... "
) in caplog.messages
def test_external_task_sensor_external_task_ids_param(self, caplog):
@@ -412,8 +411,7 @@ class TestExternalTaskSensor:
caplog.clear()
op.run(start_date=DEFAULT_DATE, end_date=DEFAULT_DATE, ignore_ti_state=True)
assert (
- f"Poking for tasks ['{TEST_TASK_ID}'] "
- f"in dag {TEST_DAG_ID} on {DEFAULT_DATE.isoformat()} ... "
+ f"Poking for tasks ['{TEST_TASK_ID}'] in dag {TEST_DAG_ID} on {DEFAULT_DATE.isoformat()} ... "
) in caplog.messages
def test_external_task_sensor_failed_states_as_success_mulitple_task_ids(self, caplog):
@@ -1431,13 +1429,13 @@ def dag_bag_cyclic():
dags.append(dag)
task_a = ExternalTaskSensor(
task_id=f"task_a_{n}",
- external_dag_id=f"dag_{n-1}",
- external_task_id=f"task_b_{n-1}",
+ external_dag_id=f"dag_{n - 1}",
+ external_task_id=f"task_b_{n - 1}",
)
task_b = ExternalTaskMarker(
task_id=f"task_b_{n}",
- external_dag_id=f"dag_{n+1}",
- external_task_id=f"task_a_{n+1}",
+ external_dag_id=f"dag_{n + 1}",
+ external_task_id=f"task_a_{n + 1}",
recursion_depth=3,
)
task_a >> task_b
@@ -1447,8 +1445,8 @@ def dag_bag_cyclic():
dags.append(dag)
task_a = ExternalTaskSensor(
task_id=f"task_a_{depth}",
- external_dag_id=f"dag_{depth-1}",
- external_task_id=f"task_b_{depth-1}",
+ external_dag_id=f"dag_{depth - 1}",
+ external_task_id=f"task_b_{depth - 1}",
)
task_b = ExternalTaskMarker(
task_id=f"task_b_{depth}",
diff --git a/airflow-core/tests/unit/utils/test_logging_mixin.py b/airflow-core/tests/unit/utils/test_logging_mixin.py
index 14e3532074b..4ad65db7fb1 100644
--- a/airflow-core/tests/unit/utils/test_logging_mixin.py
+++ b/airflow-core/tests/unit/utils/test_logging_mixin.py
@@ -93,18 +93,6 @@ class TestLoggingMixin:
assert DummyClass().log.name == "unit.utils.test_logging_mixin.DummyClass"
- def test_logger_name_is_root_when_logger_name_is_empty_string(self):
- """
- Ensure that when `_logger_name` is set as an empty string, the resulting logger name is an empty
- string too, which result in a logger with 'root' as name.
- Note: Passing an empty string to `logging.getLogger` will create a logger with name 'root'.
- """
-
- class EmptyStringLogger(LoggingMixin):
- _logger_name: str | None = ""
-
- assert EmptyStringLogger().log.name == "root"
-
def test_log_config_logger_name_correctly_prefix_logger_name(self):
"""
Ensure that when a class has `_log_config_logger_name`, it is used as prefix in the final logger
diff --git a/airflow-core/tests/unit/utils/test_process_utils.py b/airflow-core/tests/unit/utils/test_process_utils.py
index 7edc5f28b73..47ffc9245f3 100644
--- a/airflow-core/tests/unit/utils/test_process_utils.py
+++ b/airflow-core/tests/unit/utils/test_process_utils.py
@@ -103,19 +103,22 @@ class TestReapProcessGroup:
class TestExecuteInSubProcess:
def test_should_print_all_messages1(self, caplog):
execute_in_subprocess(["bash", "-c", "echo CAT; echo KITTY;"])
- msgs = [record.getMessage() for record in caplog.records]
- assert msgs == ["Executing cmd: bash -c 'echo CAT; echo KITTY;'", "Output:", "CAT", "KITTY"]
+ assert caplog.messages == [
+ "Executing cmd: bash -c 'echo CAT; echo KITTY;'",
+ "Output:",
+ "CAT",
+ "KITTY",
+ ]
def test_should_print_all_messages_from_cwd(self, caplog, tmp_path):
execute_in_subprocess(["bash", "-c", "echo CAT; pwd; echo KITTY;"], cwd=str(tmp_path))
- msgs = [record.getMessage() for record in caplog.records]
assert [
"Executing cmd: bash -c 'echo CAT; pwd; echo KITTY;'",
"Output:",
"CAT",
str(tmp_path),
"KITTY",
- ] == msgs
+ ] == caplog.messages
def test_using_env_works(self, caplog):
execute_in_subprocess(["bash", "-c", 'echo "My value is ${VALUE}"'], env=dict(VALUE="1"))
diff --git a/devel-common/src/tests_common/pytest_plugin.py b/devel-common/src/tests_common/pytest_plugin.py
index ad885d176c7..448653496c6 100644
--- a/devel-common/src/tests_common/pytest_plugin.py
+++ b/devel-common/src/tests_common/pytest_plugin.py
@@ -18,6 +18,7 @@
from __future__ import annotations
import json
+import logging
import os
import platform
import re
@@ -25,10 +26,10 @@ import subprocess
import sys
import warnings
from collections.abc import Generator
-from contextlib import ExitStack, suppress
+from contextlib import ExitStack, contextmanager, suppress
from datetime import datetime, timedelta, timezone
from pathlib import Path
-from typing import TYPE_CHECKING, Any, Callable, Protocol, TypeVar
+from typing import TYPE_CHECKING, Any, Callable, NoReturn, Protocol, TypeVar
from unittest import mock
import pytest
@@ -37,6 +38,7 @@ import time_machine
if TYPE_CHECKING:
from itsdangerous import URLSafeSerializer
from sqlalchemy.orm import Session
+ from structlog.typing import EventDict, WrappedLogger
from airflow.models.baseoperator import BaseOperator
from airflow.models.dag import DAG, ScheduleArg
@@ -1767,7 +1769,7 @@ def add_expected_folders_to_pythonpath():
@pytest.fixture
-def cap_structlog():
+def cap_structlog(request, monkeypatch):
"""
Test that structlog messages are logged.
@@ -1782,10 +1784,23 @@ def cap_structlog():
...
... assert "not logged" not in cap_structlog # not in works too
"""
- import structlog.testing
- from structlog import configure, get_config
+ import structlog.stdlib
+ from structlog import DropEvent, configure, get_config
+ from structlog._log_levels import map_method_name
+
+ from airflow._logging.structlog import (
+ NAME_TO_LEVEL,
+ PER_LOGGER_LEVELS,
+ NamedBytesLogger,
+ NamedWriteLogger,
+ )
+
+ class LogCapture:
+ _logger: str | None = None
+
+ def __init__(self):
+ self.entries = []
- class LogCapture(structlog.testing.LogCapture):
def __contains__(self, target):
import operator
@@ -1817,22 +1832,101 @@ def cap_structlog():
def __repr__(self):
return repr(self.entries)
+ def __call__(self, logger: WrappedLogger, method_name: str, event_dict: EventDict) -> NoReturn:
+ logger_name = (
+ event_dict.get("logger_name")
+ or event_dict.get("logger")
+ or (isinstance(logger, (NamedBytesLogger, NamedWriteLogger)) and logger.name)
+ or ""
+ )
+ if not self._logger or logger_name.startswith(self._logger):
+ event_dict["log_level"] = map_method_name(method_name)
+ self.entries.append(event_dict)
+
+ raise DropEvent
+
@property
def text(self):
"""All the event text as a single multi-line string."""
return "\n".join(e["event"] for e in self.entries)
+ # These next 4 make it duck-type the same as
+ @property
+ def messages(self):
+ """All the event messages as a list."""
+ return [e["event"] for e in self.entries]
+
+ @contextmanager
+ def at_level(self, level: str | int, logger=None):
+ self.clear()
+ if isinstance(level, str):
+ level = NAME_TO_LEVEL[level.lower()]
+
+ sentinel = object()
+ key = logger or ""
+ old = PER_LOGGER_LEVELS.get(key, sentinel)
+ PER_LOGGER_LEVELS[key] = level
+ self._logger = logger
+ yield self
+
+ if old is sentinel:
+ del PER_LOGGER_LEVELS[key]
+ else:
+ PER_LOGGER_LEVELS[key] = old
+
+ def set_level(self, level: str | int, logger=None):
+ self.clear()
+ # Set the global level
+ if isinstance(level, str):
+ level = NAME_TO_LEVEL[level.lower()]
+
+ old = PER_LOGGER_LEVELS[""]
+
+ def cleanup():
+ PER_LOGGER_LEVELS[""] = old
+
+ request.node.addfinalizer(cleanup)
+ PER_LOGGER_LEVELS[""] = level
+ self._logger = logger
+
+ def clear(self):
+ self.entries = []
+
+ @property
+ def records(self):
+ return self.entries
+
cap = LogCapture()
# Modify `_Configuration.default_processors` set via `configure` but always
# keep the list instance intact to not break references held by bound
# loggers.
processors = get_config()["processors"]
old_processors = processors.copy()
+
+ # And modify the stdlib logging to capture too
+ handler = logging.root.handlers[0]
+ if not isinstance(handler.formatter, structlog.stdlib.ProcessorFormatter):
+ raise AssertionError(
+ f"{type(handler.formatter)} is not an instance of structlog.stblid.ProcessorFormatter"
+ )
+
+ std_formatter = structlog.stdlib.ProcessorFormatter(
+ foreign_pre_chain=handler.formatter.foreign_pre_chain,
+ pass_foreign_args=True,
+ processor=cap,
+ )
+
+ def stdlib_filter(record):
+ with suppress(DropEvent):
+ std_formatter.format(record)
+ return False
+
try:
# clear processors list and use LogCapture for testing
processors.clear()
processors.append(cap)
configure(processors=processors)
+ monkeypatch.setattr(handler, "filters", [stdlib_filter])
yield cap
finally:
# remove LogCapture and restore original processors
@@ -1849,6 +1943,8 @@ def override_caplog(request):
This is in an effort to reduce flakiness from caplog related tests where one test file can change log
behaviour and bleed in to affecting other test files
"""
+ yield request.getfixturevalue("cap_structlog")
+ return
# We need this `_ispytest` so it doesn't warn about using private
fixture = pytest.LogCaptureFixture(request.node, _ispytest=True)
yield fixture