blob: 7fc109f3519c5629a38629ebf70f11612dafce34 [file] [log] [blame]
<!DOCTYPE html>
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Release Notes &mdash; Airflow Documentation</title>
<link rel="stylesheet" href="_static/_gen/css/main.min.css" type="text/css" />
<link rel="stylesheet" type="text/css" href="_static/pygments.css" />
<link rel="stylesheet" type="text/css" href="_static/_gen/css/main.min.css" />
<link rel="stylesheet" type="text/css" href="_static/copybutton.css" />
<link rel="stylesheet" type="text/css" href="_static/_gen/css/main-custom.min.css" />
<link rel="stylesheet" type="text/css" href="_static/graphviz.css" />
<link rel="shortcut icon" href="_static/pin_32.png"/>
<link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" />
<link rel="next" title="Best Practices" href="best-practices.html" />
<link rel="prev" title="Airflow’s release process and version policy" href="release-process.html" />
<!-- Matomo -->
<script>
var _paq = window._paq = window._paq || [];
/* tracker methods like "setCustomDimension" should be called before "trackPageView" */
/* We explicitly disable cookie tracking to avoid privacy issues */
_paq.push(['disableCookies']);
_paq.push(['trackPageView']);
_paq.push(['enableLinkTracking']);
(function() {
var u="https://analytics.apache.org/";
_paq.push(['setTrackerUrl', u+'matomo.php']);
_paq.push(['setSiteId', '13']);
var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
})();
</script>
<!-- End Matomo Code -->
</head><body class="td-section">
<header>
<nav class="js-navbar-scroll navbar">
<div class="navbar__icon-container">
<a href="/">
<svg xmlns="http://www.w3.org/2000/svg" width="155.314" height="60" viewBox="0 0 155.314 60">
<defs>
<clipPath id="clip-path">
<path id="Rectangle_1" d="M0 0h155.314v60H0z" fill="none" data-name="Rectangle 1"></path>
</clipPath>
</defs>
<g id="logo" transform="translate(-1305 -780.355)">
<g id="Group_2" clip-path="url(#clip-path)" data-name="Group 2" transform="translate(1305 780.355)">
<g id="Group_1" data-name="Group 1" transform="translate(.486 .486)">
<path id="Path_1" d="M1307.562 880.867l28.187-28.893a.521.521 0 0 0 .063-.666c-1.714-2.393-4.877-2.808-6.049-4.416-3.472-4.763-4.353-7.459-5.845-7.292a.456.456 0 0 0-.271.143l-10.182 10.438c-5.858 6-6.7 19.225-6.852 30.3a.552.552 0 0 0 .949.386z" fill="#017cee" data-name="Path 1" transform="translate(-1306.613 -822.232)"></path>
<path id="Path_2" d="M1405.512 908.489l-28.893-28.189a.521.521 0 0 0-.667-.063c-2.393 1.715-2.808 4.877-4.416 6.049-4.763 3.472-7.459 4.353-7.292 5.845a.456.456 0 0 0 .143.27l10.438 10.182c6 5.858 19.225 6.7 30.3 6.852a.552.552 0 0 0 .387-.946z" fill="#00ad46" data-name="Path 2" transform="translate(-1346.876 -850.567)"></path>
<path id="Path_3" d="M1373.909 902.252c-3.28-3.2-4.8-9.53 1.486-22.583-10.219 4.567-13.8 10.57-12.039 12.289z" fill="#04d659" data-name="Path 3" transform="translate(-1345.96 -850.233)"></path>
<path id="Path_4" d="M1433.132 782.359l-28.186 28.893a.52.52 0 0 0-.063.666c1.715 2.393 4.876 2.808 6.049 4.416 3.472 4.763 4.354 7.459 5.845 7.292a.454.454 0 0 0 .271-.143l10.182-10.438c5.858-6 6.7-19.225 6.852-30.3a.553.553 0 0 0-.95-.386z" fill="#00c7d4" data-name="Path 4" transform="translate(-1375.21 -782.123)"></path>
<path id="Path_5" d="M1426.9 881.155c-3.2 3.28-9.53 4.8-22.584-1.486 4.567 10.219 10.57 13.8 12.289 12.039z" fill="#11e1ee" data-name="Path 5" transform="translate(-1374.875 -850.233)"></path>
<path id="Path_6" d="M1307 782.919l28.893 28.186a.521.521 0 0 0 .666.063c2.393-1.715 2.808-4.877 4.416-6.049 4.763-3.472 7.459-4.353 7.292-5.845a.459.459 0 0 0-.143-.271l-10.438-10.182c-6-5.858-19.225-6.7-30.3-6.852a.552.552 0 0 0-.386.95z" fill="#e43921" data-name="Path 6" transform="translate(-1306.766 -781.97)"></path>
<path id="Path_7" d="M1405.8 804.711c3.28 3.2 4.8 9.53-1.486 22.584 10.219-4.567 13.8-10.571 12.039-12.289z" fill-rule="evenodd" fill="#ff7557" data-name="Path 7" transform="translate(-1374.875 -797.859)"></path>
<path id="Path_8" d="M1329.355 849.266c3.2-3.28 9.53-4.8 22.584 1.486-4.567-10.219-10.57-13.8-12.289-12.039z" fill="#0cb6ff" data-name="Path 8" transform="translate(-1322.503 -821.316)"></path>
<circle id="Ellipse_1" cx="1.26" cy="1.26" r="1.26" fill="#4a4848" data-name="Ellipse 1" transform="translate(28.18 28.171)"></circle>
<path id="Path_9" d="M1527.558 827.347a.229.229 0 0 1-.223-.223.458.458 0 0 1 .011-.123l2.766-7.214a.346.346 0 0 1 .357-.245h.758a.348.348 0 0 1 .357.245l2.754 7.214.022.123a.228.228 0 0 1-.223.223h-.568a.288.288 0 0 1-.19-.056.352.352 0 0 1-.089-.134l-.613-1.583h-3.657l-.613 1.583a.317.317 0 0 1-.1.134.269.269 0 0 1-.178.056zm4.795-2.732l-1.505-3.958-1.505 3.958zm3.322 4.85a.258.258 0 0 1-.189-.078.241.241 0 0 1-.067-.178v-7.4a.241.241 0 0 1 .067-.178.258.258 0 0 1 .189-.078h.513a.268.268 0 0 1 .256.256v.49a2.118 2.118 0 0 1 1.828-.858 2.092 2.092 0 0 1 1.751.736 3.135 3.135 0 0 1 .636 1.9q.011.122.011.379t-.011.379a3.168 3.168 0 0 1-.636 1.9 2.111 2.111 0 0 1-1.751.736 2.154 2.154 0 0 1-1.806-.836v2.587a.241.241 0 0 1-.067.178.223.223 0 0 1-.179.078zm2.364-2.91a1.324 1.324 0 0 0 1.149-.491 2.266 2.266 0 0 0 .4-1.293q.011-.111.011-.323 0-2.107-1.562-2.107a1.365 1.365 0 0 0-1.159.513 2.111 2.111 0 0 0-.412 1.2l-.012.424.012.435a1.862 1.862 0 0 0 .424 1.149 1.4 1.4 0 0 0 1.148.493zm5.628.9a2.329 2.329 0 0 1-1.015-.223 1.94 1.94 0 0 1-.747-.6 1.487 1.487 0 0 1-.268-.859 1.459 1.459 0 0 1 .6-1.2 3.4 3.4 0 0 1 1.65-.624l1.661-.234v-.323q0-1.137-1.3-1.137a1.4 1.4 0 0 0-.8.212 1.376 1.376 0 0 0-.468.48.305.305 0 0 1-.089.145.18.18 0 0 1-.134.045h-.48a.23.23 0 0 1-.245-.245 1.17 1.17 0 0 1 .245-.6 1.931 1.931 0 0 1 .747-.591 2.7 2.7 0 0 1 1.238-.256 2.351 2.351 0 0 1 1.8.591 2.032 2.032 0 0 1 .547 1.45v3.613a.257.257 0 0 1-.078.19.24.24 0 0 1-.178.067h-.513a.233.233 0 0 1-.257-.256v-.479a1.923 1.923 0 0 1-.714.6 2.557 2.557 0 0 1-1.203.237zm.234-.836a1.579 1.579 0 0 0 1.182-.469 1.881 1.881 0 0 0 .468-1.371v-.312l-1.293.19a2.918 2.918 0 0 0-1.193.379.761.761 0 0 0-.4.658.784.784 0 0 0 .368.691 1.585 1.585 0 0 0 .867.237zm6.643.836a2.556 2.556 0 0 1-1.873-.669 2.738 2.738 0 0 1-.714-1.9l-.011-.446.011-.446a2.7 2.7 0 0 1 .714-1.885 2.531 2.531 0 0 1 1.873-.68 2.917 2.917 0 0 1 1.36.29 2.077 2.077 0 0 1 .825.714 1.7 1.7 0 0 1 .3.848.2.2 0 0 1-.067.178.281.281 0 0 1-.19.067h-.535a.265.265 0 0 1-.168-.045.458.458 0 0 1-.111-.178 1.428 1.428 0 0 0-.535-.758 1.516 1.516 0 0 0-.87-.234 1.45 1.45 0 0 0-1.1.435 1.952 1.952 0 0 0-.435 1.3l-.011.4.011.379a1.969 1.969 0 0 0 .435 1.316 1.446 1.446 0 0 0 1.1.424 1.577 1.577 0 0 0 .87-.223 1.493 1.493 0 0 0 .535-.769.458.458 0 0 1 .111-.178.228.228 0 0 1 .168-.056h.535a.258.258 0 0 1 .19.078.2.2 0 0 1 .067.178 1.75 1.75 0 0 1-.3.847 2.078 2.078 0 0 1-.825.714 2.876 2.876 0 0 1-1.361.302zm4.078-.112a.233.233 0 0 1-.257-.256v-7.4a.241.241 0 0 1 .067-.178.259.259 0 0 1 .19-.078h.557a.267.267 0 0 1 .257.256v2.6a2.167 2.167 0 0 1 .758-.624 2.353 2.353 0 0 1 1.082-.223 2.067 2.067 0 0 1 1.661.691 2.642 2.642 0 0 1 .6 1.818v3.144a.257.257 0 0 1-.078.19.24.24 0 0 1-.178.067h-.557a.233.233 0 0 1-.256-.256V824a1.775 1.775 0 0 0-.39-1.227 1.387 1.387 0 0 0-1.1-.435 1.481 1.481 0 0 0-1.126.446 1.7 1.7 0 0 0-.412 1.215v3.088a.257.257 0 0 1-.078.19.24.24 0 0 1-.178.067zm8.846.112a2.466 2.466 0 0 1-1.84-.7 2.938 2.938 0 0 1-.747-1.94l-.011-.379.011-.368a2.953 2.953 0 0 1 .758-1.918 2.7 2.7 0 0 1 3.735.078 3.114 3.114 0 0 1 .68 2.119v.19a.257.257 0 0 1-.078.189.241.241 0 0 1-.178.067h-3.858v.1a2.11 2.11 0 0 0 .435 1.238 1.332 1.332 0 0 0 1.081.5 1.563 1.563 0 0 0 .836-.2 1.7 1.7 0 0 0 .491-.435.6.6 0 0 1 .145-.156.391.391 0 0 1 .19-.033h.547a.252.252 0 0 1 .167.056.192.192 0 0 1 .067.156.975.975 0 0 1-.312.591 2.51 2.51 0 0 1-.859.6 3.049 3.049 0 0 1-1.26.248zm1.527-3.434v-.033a1.817 1.817 0 0 0-.424-1.249 1.512 1.512 0 0 0-2.23 0 1.883 1.883 0 0 0-.4 1.249v.033z" fill="#51504f" data-name="Path 9" transform="translate(-1460.834 -808.144)"></path>
<path id="Path_10" d="M1527.2 827.081l-.061.061zm-.056-.279l-.08-.031zm2.766-7.214l.08.031zm1.472 0l-.081.029zm2.754 7.214l.084-.015a.064.064 0 0 0 0-.015zm.022.123h.086v-.015zm-.067.156l.06.061zm-.914.011l-.061.061.006.005zm-.089-.134l.081-.027zm-.613-1.583l.08-.031a.086.086 0 0 0-.08-.055zm-3.657 0v-.086a.086.086 0 0 0-.08.055zm-.613 1.583l-.08-.031zm-.1.134l.055.066zm4.047-2.676v.086a.086.086 0 0 0 .08-.116zm-1.505-3.958l.08-.03a.086.086 0 0 0-.16 0zm-1.505 3.958l-.08-.03a.086.086 0 0 0 .08.116zm-1.784 2.646a.128.128 0 0 1-.1-.042l-.122.121a.3.3 0 0 0 .217.092zm-.1-.042a.129.129 0 0 1-.042-.1h-.171a.3.3 0 0 0 .092.217zm-.042-.1a.38.38 0 0 1 .007-.1l-.163-.054a.514.514 0 0 0-.016.15zm.005-.092l2.765-7.214-.16-.061-2.765 7.214zm2.766-7.216a.283.283 0 0 1 .1-.143.3.3 0 0 1 .174-.046v-.172a.47.47 0 0 0-.271.076.453.453 0 0 0-.166.226zm.276-.189h.758v-.172h-.758zm.758 0a.3.3 0 0 1 .175.046.283.283 0 0 1 .1.143l.161-.059a.451.451 0 0 0-.166-.226.47.47 0 0 0-.272-.076zm.277.19l2.754 7.214.16-.061-2.754-7.214zm2.75 7.2l.022.123.169-.031-.022-.123zm.021.107a.13.13 0 0 1-.042.1l.121.121a.3.3 0 0 0 .092-.217zm-.042.1a.13.13 0 0 1-.1.042v.171a.3.3 0 0 0 .217-.092zm-.1.042h-.568v.171h.568zm-.568 0a.206.206 0 0 1-.135-.036l-.11.132a.373.373 0 0 0 .245.076zm-.129-.031a.262.262 0 0 1-.069-.1l-.162.054a.431.431 0 0 0 .11.167zm-.07-.1l-.613-1.584-.16.062.613 1.583zm-.693-1.638h-3.657v.171h3.657zm-3.737.055l-.614 1.584.16.062.613-1.583zm-.615 1.587a.235.235 0 0 1-.075.1l.111.13a.4.4 0 0 0 .126-.172zm-.074.1a.185.185 0 0 1-.124.036v.171a.354.354 0 0 0 .233-.076zm-.124.036h-.569v.171h.569zm4.306-2.677l-1.505-3.958-.16.061 1.505 3.958zm-1.666-3.958l-1.505 3.958.16.061 1.505-3.958zm-1.425 4.075h3.01v-.171h-3.01zm6.143 4.687l-.06.061zm0-7.761l.061.061zm.881 0l-.065.056.01.009zm.078.669h-.086a.086.086 0 0 0 .155.051zm3.579-.123l-.067.053zm.636 1.9h-.086zm0 .758l-.085-.007zm-.636 1.9l.067.054zm-3.557-.1l.068-.052a.086.086 0 0 0-.154.052zm-.067 2.765l-.061-.06zm2.787-3.323l-.069-.051zm.4-1.293l-.085-.008v.005zm-2.709-1.918l-.068-.052zm-.413 1.2h-.086zm-.011.423h-.085zm.011.435h-.086zm.424 1.149l.066-.054zm-1.216 3.315a.173.173 0 0 1-.129-.053l-.121.121a.342.342 0 0 0 .25.1zm-.129-.053a.157.157 0 0 1-.042-.118h-.172a.325.325 0 0 0 .092.239zm-.042-.118v-7.4h-.172v7.4zm0-7.4a.157.157 0 0 1 .042-.118l-.121-.121a.324.324 0 0 0-.092.239zm.042-.118a.173.173 0 0 1 .129-.053v-.172a.342.342 0 0 0-.25.1zm.129-.053h.513v-.172h-.513zm.513 0a.137.137 0 0 1 .113.048l.13-.111a.309.309 0 0 0-.244-.108zm.123.058a.137.137 0 0 1 .048.113h.171a.309.309 0 0 0-.108-.243zm.048.113v.49h.171v-.49zm.155.541a2.033 2.033 0 0 1 1.759-.823v-.171a2.2 2.2 0 0 0-1.9.894zm1.759-.823a2.007 2.007 0 0 1 1.683.7l.135-.106a2.177 2.177 0 0 0-1.818-.768zm1.683.7a3.045 3.045 0 0 1 .617 1.845l.171-.007a3.218 3.218 0 0 0-.654-1.946zm.617 1.85c.007.078.011.2.011.372h.171c0-.171 0-.3-.012-.387zm.011.372c0 .171 0 .294-.011.372l.17.015c.008-.086.012-.216.012-.387zm-.011.376a3.08 3.08 0 0 1-.617 1.846l.134.106a3.25 3.25 0 0 0 .654-1.945zm-.617 1.845a2.025 2.025 0 0 1-1.683.7v.171a2.2 2.2 0 0 0 1.817-.768zm-1.683.7a2.068 2.068 0 0 1-1.739-.8l-.136.1a2.239 2.239 0 0 0 1.874.87zm-1.892-.75v2.587h.172v-2.587zm0 2.587a.156.156 0 0 1-.042.118l.121.121a.325.325 0 0 0 .092-.239zm-.046.123a.138.138 0 0 1-.114.048v.172a.308.308 0 0 0 .244-.108zm-.114.048h-.546v.172h.546zm1.817-2.739a1.408 1.408 0 0 0 1.218-.526l-.138-.1a1.24 1.24 0 0 1-1.079.455zm1.217-.525a2.355 2.355 0 0 0 .419-1.341l-.171-.007a2.182 2.182 0 0 1-.385 1.246zm.418-1.336c.008-.079.012-.19.012-.332h-.172c0 .14 0 .245-.011.315zm.012-.332a2.726 2.726 0 0 0-.407-1.632 1.448 1.448 0 0 0-1.24-.562v.171a1.278 1.278 0 0 1 1.1.492 2.565 2.565 0 0 1 .374 1.53zm-1.647-2.193a1.452 1.452 0 0 0-1.228.547l.136.1a1.282 1.282 0 0 1 1.091-.479zm-1.228.547a2.2 2.2 0 0 0-.43 1.252l.172.008a2.028 2.028 0 0 1 .4-1.157zm-.43 1.254l-.011.424h.171l.011-.424zm-.011.428l.011.435h.172l-.011-.435zm.011.436a1.95 1.95 0 0 0 .443 1.2l.133-.109a1.776 1.776 0 0 1-.4-1.1zm.443 1.2a1.484 1.484 0 0 0 1.214.522v-.171a1.314 1.314 0 0 1-1.082-.459zm5.828 1.117l.037-.077zm-.747-.6l-.07.049zm.335-2.063l.052.068zm1.65-.624l.012.085zm1.661-.234l.012.085a.086.086 0 0 0 .074-.085zm-2.107-1.249l.046.072zm-.468.48l-.075-.042a.083.083 0 0 0-.006.015zm-.089.145l-.054-.067-.007.006zm-.792-.022l-.065.056.009.009zm-.067-.178h-.086zm.245-.6l-.07-.049zm.747-.591l.038.077zm3.033.334l-.063.058zm.468 5.252l.06.061zm-.881 0l-.065.056a.043.043 0 0 0 .009.009zm-.067-.669h.086a.086.086 0 0 0-.156-.048zm-.714.6l-.04-.076zm.223-1.059l-.062-.06zm.468-1.684h.086a.086.086 0 0 0-.1-.085zm-1.293.189l.012.085zm-1.193.379l.046.072zm-.033 1.349l-.047.071zm.635.985a2.241 2.241 0 0 1-.978-.215l-.074.155a2.412 2.412 0 0 0 1.051.231zm-.978-.215a1.859 1.859 0 0 1-.715-.576l-.138.1a2.024 2.024 0 0 0 .779.629zm-.713-.573a1.4 1.4 0 0 1-.253-.81h-.172a1.571 1.571 0 0 0 .283.907zm-.253-.81a1.374 1.374 0 0 1 .569-1.136l-.105-.135a1.544 1.544 0 0 0-.635 1.272zm.569-1.137a3.316 3.316 0 0 1 1.609-.607l-.024-.17a3.481 3.481 0 0 0-1.691.642zm1.609-.607l1.661-.234-.024-.17-1.662.234zm1.735-.319v-.323h-.171v.323zm0-.323a1.156 1.156 0 0 0-.355-.917 1.536 1.536 0 0 0-1.035-.306v.172a1.37 1.37 0 0 1 .922.263.986.986 0 0 1 .3.788zm-1.39-1.223a1.486 1.486 0 0 0-.851.227l.1.142a1.316 1.316 0 0 1 .755-.2zm-.849.226a1.452 1.452 0 0 0-.5.51l.15.084a1.286 1.286 0 0 1 .44-.449zm-.5.524a.226.226 0 0 1-.062.105l.107.134a.391.391 0 0 0 .117-.185zm-.068.112a.1.1 0 0 1-.073.019v.171a.266.266 0 0 0 .194-.07zm-.073.019h-.48v.171h.48zm-.48 0a.18.18 0 0 1-.122-.046l-.112.13a.352.352 0 0 0 .234.087zm-.113-.037a.18.18 0 0 1-.047-.123h-.171a.352.352 0 0 0 .087.234zm-.047-.119a1.1 1.1 0 0 1 .23-.557l-.14-.1a1.253 1.253 0 0 0-.261.648zm.23-.556a1.843 1.843 0 0 1 .715-.564l-.075-.154a2.018 2.018 0 0 0-.78.618zm.716-.564a2.611 2.611 0 0 1 1.2-.247v-.171a2.781 2.781 0 0 0-1.277.266zm1.2-.247a2.268 2.268 0 0 1 1.732.563l.126-.116a2.435 2.435 0 0 0-1.858-.618zm1.733.564a1.945 1.945 0 0 1 .523 1.391h.171a2.117 2.117 0 0 0-.57-1.508zm.523 1.391v3.613h.171v-3.613zm0 3.613a.172.172 0 0 1-.053.129l.121.121a.344.344 0 0 0 .1-.25zm-.053.129a.157.157 0 0 1-.118.042v.171a.326.326 0 0 0 .239-.092zm-.118.042h-.513v.171h.513zm-.513 0a.2.2 0 0 1-.134-.046l-.111.13a.367.367 0 0 0 .245.088zm-.124-.037a.194.194 0 0 1-.047-.134h-.171a.366.366 0 0 0 .087.245zm-.047-.134v-.479h-.171v.479zm-.156-.528a1.846 1.846 0 0 1-.683.575l.079.152a2.012 2.012 0 0 0 .745-.629zm-.683.575a2.476 2.476 0 0 1-1.153.236v.171a2.644 2.644 0 0 0 1.233-.255zm-.919-.429a1.666 1.666 0 0 0 1.244-.494l-.123-.12a1.493 1.493 0 0 1-1.121.442zm1.244-.494a1.969 1.969 0 0 0 .492-1.431h-.171a1.8 1.8 0 0 1-.444 1.312zm.492-1.431v-.312h-.171v.312zm-.1-.4l-1.293.189.025.17 1.293-.189zm-1.293.189a3 3 0 0 0-1.228.393l.095.143a2.837 2.837 0 0 1 1.158-.365zm-1.227.392a.845.845 0 0 0-.441.73h.172a.676.676 0 0 1 .362-.586zm-.441.73a.869.869 0 0 0 .406.762l.095-.142a.7.7 0 0 1-.33-.62zm.408.764a1.673 1.673 0 0 0 .916.247v-.171a1.5 1.5 0 0 1-.823-.221zm5.686.329l-.061.06zm-.714-1.9h-.085zm-.011-.446h-.085zm.011-.446h-.085zm.714-1.885l.061.061zm3.234-.39l-.04.076zm.825.713l-.073.046zm.3.848h-.086zm-.067.178l.056.065zm-.892.022l.054-.067zm-.112-.178l-.081.029zm-.535-.758l-.048.071zm-1.974.2l-.062-.059zm-.435 1.3h-.086zm-.011.4h-.086zm.011.379h-.086zm.435 1.316l-.062.059zm1.974.2l.046.072zm.535-.769l-.079-.033zm.112-.178l.054.067.007-.006zm.892.022l-.061.06zm.067.178l-.085-.009zm-.3.847l-.072-.046zm-.825.714l-.04-.076zm-1.36.2a2.471 2.471 0 0 1-1.814-.644l-.12.122a2.64 2.64 0 0 0 1.933.694zm-1.813-.643a2.653 2.653 0 0 1-.689-1.839l-.171.006a2.822 2.822 0 0 0 .738 1.952zm-.689-1.838l-.011-.446h-.171l.011.446zm-.011-.442l.011-.446h-.171l-.011.446zm.011-.445a2.611 2.611 0 0 1 .689-1.827l-.122-.121a2.78 2.78 0 0 0-.738 1.942zm.689-1.827a2.447 2.447 0 0 1 1.813-.655v-.171a2.617 2.617 0 0 0-1.934.705zm1.813-.655a2.836 2.836 0 0 1 1.32.28l.079-.152a3 3 0 0 0-1.4-.3zm1.32.28a1.99 1.99 0 0 1 .792.683l.145-.091a2.158 2.158 0 0 0-.858-.744zm.793.685a1.617 1.617 0 0 1 .287.8l.171-.009a1.789 1.789 0 0 0-.315-.89zm.287.809a.11.11 0 0 1-.037.1l.112.13a.281.281 0 0 0 .1-.252zm-.037.1a.2.2 0 0 1-.134.046v.171a.369.369 0 0 0 .246-.088zm-.134.046h-.535v.171h.535zm-.535 0a.184.184 0 0 1-.114-.026l-.107.134a.345.345 0 0 0 .221.064zm-.114-.026a.389.389 0 0 1-.086-.144l-.158.066a.533.533 0 0 0 .137.212zm-.084-.14a1.514 1.514 0 0 0-.57-.8l-.093.144a1.343 1.343 0 0 1 .5.715zm-.568-.8a1.6 1.6 0 0 0-.918-.249v.171a1.435 1.435 0 0 1 .822.219zm-.918-.249a1.535 1.535 0 0 0-1.166.462l.124.118a1.364 1.364 0 0 1 1.042-.408zm-1.166.462a2.036 2.036 0 0 0-.458 1.36l.171.006a1.872 1.872 0 0 1 .411-1.249zm-.458 1.361l-.011.4h.171l.011-.4zm-.011.406l.011.379.171-.005-.011-.379zm.011.38a2.052 2.052 0 0 0 .458 1.371l.124-.118a1.889 1.889 0 0 1-.411-1.26zm.458 1.371a1.533 1.533 0 0 0 1.166.451v-.172a1.363 1.363 0 0 1-1.042-.4zm1.166.451a1.661 1.661 0 0 0 .916-.237l-.093-.144a1.491 1.491 0 0 1-.823.209zm.918-.238a1.576 1.576 0 0 0 .568-.812l-.162-.057a1.409 1.409 0 0 1-.5.727zm.566-.807a.39.39 0 0 1 .086-.144l-.107-.134a.533.533 0 0 0-.137.213zm.093-.151a.144.144 0 0 1 .107-.031v-.171a.31.31 0 0 0-.228.081zm.107-.031h.535v-.171h-.535zm.535 0a.173.173 0 0 1 .129.053l.121-.121a.344.344 0 0 0-.25-.1zm.134.057a.11.11 0 0 1 .037.1l.17.017a.281.281 0 0 0-.1-.252zm.037.109a1.664 1.664 0 0 1-.288.806l.144.092a1.839 1.839 0 0 0 .315-.889zm-.288.806a1.989 1.989 0 0 1-.792.683l.079.152a2.162 2.162 0 0 0 .858-.744zm-.793.684a2.8 2.8 0 0 1-1.32.28v.171a2.96 2.96 0 0 0 1.4-.3zm2.568.187l-.065.056.01.009zm0-7.772l.061.06zm.926 0l-.065.056.009.009zm.078 2.776h-.085a.086.086 0 0 0 .153.053zm.758-.624l.038.077zm2.743.468l-.065.056zm.524 5.151l-.061-.06zm-.925 0l-.065.056.009.009zm-.457-4.5l-.065.056zm-2.23.011l-.062-.059zm-.49 4.493l-.061-.06zm-.736-.019a.2.2 0 0 1-.134-.046l-.112.13a.367.367 0 0 0 .245.088zm-.124-.037a.2.2 0 0 1-.046-.134h-.172a.367.367 0 0 0 .087.245zm-.046-.134v-7.4h-.172v7.4zm0-7.4a.156.156 0 0 1 .042-.118l-.121-.121a.326.326 0 0 0-.092.239zm.042-.118a.172.172 0 0 1 .129-.053v-.171a.343.343 0 0 0-.25.1zm.129-.053h.557v-.171h-.557zm.557 0a.137.137 0 0 1 .113.048l.13-.112a.308.308 0 0 0-.244-.108zm.122.057a.137.137 0 0 1 .048.113h.172a.309.309 0 0 0-.108-.243zm.048.113v2.6h.172v-2.6zm.153 2.651a2.076 2.076 0 0 1 .728-.6l-.075-.154a2.248 2.248 0 0 0-.788.649zm.73-.6a2.272 2.272 0 0 1 1.043-.214v-.171a2.438 2.438 0 0 0-1.121.232zm1.043-.214a1.982 1.982 0 0 1 1.6.661l.13-.112a2.152 2.152 0 0 0-1.727-.721zm1.6.663a2.557 2.557 0 0 1 .581 1.761h.171a2.727 2.727 0 0 0-.624-1.874zm.581 1.761v3.144h.171v-3.144zm0 3.144a.173.173 0 0 1-.053.129l.121.121a.345.345 0 0 0 .1-.25zm-.053.129a.156.156 0 0 1-.118.042v.171a.327.327 0 0 0 .239-.092zm-.118.042h-.557v.171h.557zm-.557 0a.2.2 0 0 1-.134-.046l-.112.13a.367.367 0 0 0 .245.088zm-.124-.037a.2.2 0 0 1-.046-.134h-.172a.368.368 0 0 0 .087.245zm-.046-.134V823.8h-.172v3.088zm0-3.088a1.859 1.859 0 0 0-.412-1.284l-.128.114a1.69 1.69 0 0 1 .368 1.169zm-.411-1.283a1.471 1.471 0 0 0-1.169-.464v.171a1.3 1.3 0 0 1 1.039.406zm-1.169-.464a1.566 1.566 0 0 0-1.188.473l.124.118a1.4 1.4 0 0 1 1.064-.419zm-1.188.473a1.779 1.779 0 0 0-.436 1.275h.172a1.609 1.609 0 0 1 .389-1.156zm-.436 1.275v3.088h.172V823.8zm0 3.088a.172.172 0 0 1-.053.129l.121.121a.344.344 0 0 0 .1-.25zm-.053.129a.156.156 0 0 1-.118.042v.171a.327.327 0 0 0 .239-.092zm-.118.042h-.557v.171h.557zm6.449-.505l-.062.059zm-.747-1.94h-.086zm-.012-.379h-.085v.005zm.012-.368l-.086-.006zm.758-1.918l-.061-.06zm3.735.078l-.065.056zm.6 2.5l.061.061zm-4.036.067v-.086a.086.086 0 0 0-.086.086zm0 .1h-.086zm.435 1.238l-.068.053zm1.918.3l.045.073zm.491-.435l-.069-.051zm.145-.156l.039.077h.006zm.9.022l-.055.066zm-.245.747l-.064-.057zm-.858.6l.035.078zm.267-3.189v.086a.086.086 0 0 0 .086-.086zm-.424-1.282l-.066.055zm-2.23 0l-.065-.055zm-.4 1.282h-.086a.086.086 0 0 0 .086.086zm1.528 3.349a2.38 2.38 0 0 1-1.779-.677l-.122.12a2.55 2.55 0 0 0 1.9.728zm-1.778-.676a2.86 2.86 0 0 1-.724-1.886l-.171.009a3.027 3.027 0 0 0 .771 1.995zm-.723-1.884l-.011-.379h-.171l.011.379zm-.011-.374l.011-.368-.172-.005-.011.368zm.011-.365a2.871 2.871 0 0 1 .735-1.864l-.124-.118a3.042 3.042 0 0 0-.782 1.971zm.734-1.864a2.331 2.331 0 0 1 1.756-.687v-.171a2.5 2.5 0 0 0-1.879.74zm1.756-.687a2.307 2.307 0 0 1 1.853.762l.13-.112a2.477 2.477 0 0 0-1.983-.821zm1.854.762a3.03 3.03 0 0 1 .659 2.062h.172a3.2 3.2 0 0 0-.7-2.175zm.659 2.062v.19h.172v-.19zm0 .19a.172.172 0 0 1-.053.129l.121.121a.345.345 0 0 0 .1-.25zm-.053.129a.156.156 0 0 1-.118.042v.171a.327.327 0 0 0 .239-.092zm-.118.042h-3.858v.171h3.858zm-3.944.086v.1h.172v-.1zm0 .1a2.2 2.2 0 0 0 .453 1.287l.135-.106a2.027 2.027 0 0 1-.417-1.189zm.454 1.288a1.418 1.418 0 0 0 1.148.533v-.171a1.247 1.247 0 0 1-1.015-.47zm1.148.533a1.647 1.647 0 0 0 .882-.214l-.09-.146a1.481 1.481 0 0 1-.791.188zm.882-.214a1.777 1.777 0 0 0 .515-.458l-.14-.1a1.613 1.613 0 0 1-.466.412zm.513-.456a1.251 1.251 0 0 1 .081-.1.28.28 0 0 1 .026-.025l.008-.006-.077-.153a.326.326 0 0 0-.083.068 1.55 1.55 0 0 0-.092.113zm.12-.134a.328.328 0 0 1 .146-.021v-.171a.468.468 0 0 0-.234.046zm.146-.021h.547v-.171h-.547zm.547 0a.166.166 0 0 1 .112.036l.11-.132a.337.337 0 0 0-.222-.076zm.112.036a.107.107 0 0 1 .036.09h.171a.277.277 0 0 0-.1-.222zm.036.09a.9.9 0 0 1-.291.534l.128.115a1.055 1.055 0 0 0 .334-.649zm-.291.535a2.42 2.42 0 0 1-.83.581l.072.156a2.6 2.6 0 0 0 .888-.624zm-.829.58a2.964 2.964 0 0 1-1.224.238v.171a3.133 3.133 0 0 0 1.295-.253zm.389-3.111v-.033h-.171v.033zm0-.033a1.9 1.9 0 0 0-.445-1.306l-.129.114a1.731 1.731 0 0 1 .4 1.192zm-.444-1.3a1.466 1.466 0 0 0-1.181-.521v.172a1.3 1.3 0 0 1 1.049.46zm-1.181-.521a1.466 1.466 0 0 0-1.18.521l.131.11a1.3 1.3 0 0 1 1.049-.46zm-1.181.521a1.965 1.965 0 0 0-.422 1.3h.172a1.794 1.794 0 0 1 .382-1.194zm-.422 1.3v.033h.172v-.033zm.086.119h3.055v-.171h-3.055z" fill="#51504f" data-name="Path 10" transform="translate(-1460.636 -807.945)"></path>
<path id="Path_11" d="M1519.066 884.011a.581.581 0 0 1-.567-.567 1.151 1.151 0 0 1 .028-.312l7.026-18.328a.881.881 0 0 1 .906-.623h1.926a.882.882 0 0 1 .907.623l7 18.328.057.312a.583.583 0 0 1-.567.567h-1.445a.735.735 0 0 1-.482-.142.9.9 0 0 1-.226-.34l-1.558-4.023h-9.292l-1.558 4.023a.8.8 0 0 1-.255.34.688.688 0 0 1-.453.142zm12.181-6.94l-3.824-10.056-3.823 10.055zm8.184-10.538a.592.592 0 0 1-.652-.651v-1.53a.714.714 0 0 1 .17-.482.656.656 0 0 1 .482-.2h1.785a.677.677 0 0 1 .68.68v1.53a.655.655 0 0 1-.2.481.713.713 0 0 1-.481.17zm.227 17.479a.593.593 0 0 1-.652-.652v-13.428a.611.611 0 0 1 .17-.453.656.656 0 0 1 .482-.2h1.359a.679.679 0 0 1 .652.651v13.427a.655.655 0 0 1-.2.482.613.613 0 0 1-.453.17zm6.861 0a.592.592 0 0 1-.651-.652v-13.4a.715.715 0 0 1 .17-.481.656.656 0 0 1 .482-.2h1.3a.677.677 0 0 1 .68.68v1.246a4.255 4.255 0 0 1 3.966-1.926h1.1a.679.679 0 0 1 .651.651v1.161a.566.566 0 0 1-.2.453.612.612 0 0 1-.453.17h-1.7a3.2 3.2 0 0 0-2.408.907 3.253 3.253 0 0 0-.879 2.408v8.328a.656.656 0 0 1-.2.482.716.716 0 0 1-.482.17zm12.234 0a.593.593 0 0 1-.651-.652v-11.814h-2.408a.592.592 0 0 1-.651-.651v-.963a.611.611 0 0 1 .17-.453.654.654 0 0 1 .481-.2h2.408v-1.417q0-4.816 4.872-4.815h1.586a.679.679 0 0 1 .652.651v.963a.656.656 0 0 1-.2.481.613.613 0 0 1-.453.17h-1.529a2.1 2.1 0 0 0-1.785.68 3.248 3.248 0 0 0-.51 2.011v1.275h6.062V863.7a.613.613 0 0 1 .17-.453.656.656 0 0 1 .482-.2h1.3a.679.679 0 0 1 .652.651v19.659a.655.655 0 0 1-.2.482.613.613 0 0 1-.454.17h-1.3a.592.592 0 0 1-.652-.652v-11.811h-6.062v11.813a.657.657 0 0 1-.2.482.614.614 0 0 1-.454.17zm20.9.283a6.487 6.487 0 0 1-4.844-1.757 6.837 6.837 0 0 1-1.813-4.674l-.029-1.218.029-1.218a6.732 6.732 0 0 1 1.841-4.646 7.389 7.389 0 0 1 9.631 0 6.736 6.736 0 0 1 1.841 4.646q.028.311.028 1.218t-.028 1.218a6.772 6.772 0 0 1-1.841 4.674 6.391 6.391 0 0 1-4.82 1.756zm0-2.181a3.582 3.582 0 0 0 2.8-1.133 4.931 4.931 0 0 0 1.133-3.258q.028-.283.028-1.076t-.028-1.076a4.931 4.931 0 0 0-1.133-3.258 3.582 3.582 0 0 0-2.8-1.133 3.671 3.671 0 0 0-2.833 1.133 4.83 4.83 0 0 0-1.1 3.258l-.028 1.076.028 1.076a4.83 4.83 0 0 0 1.1 3.258 3.671 3.671 0 0 0 2.828 1.132zm13.755 1.9a.846.846 0 0 1-.566-.17 1.321 1.321 0 0 1-.34-.538l-4.023-13.144-.056-.283a.575.575 0 0 1 .17-.425.641.641 0 0 1 .425-.17h1.246a.612.612 0 0 1 .453.17.646.646 0 0 1 .255.312l3.145 10.679 3.371-10.566a.761.761 0 0 1 .255-.4.726.726 0 0 1 .538-.2h.963a.728.728 0 0 1 .539.2.76.76 0 0 1 .255.4l3.371 10.566 3.144-10.679a.655.655 0 0 1 .2-.312.714.714 0 0 1 .482-.17h1.275a.542.542 0 0 1 .4.17.576.576 0 0 1 .17.425l-.057.283-3.994 13.144a1.323 1.323 0 0 1-.34.538.9.9 0 0 1-.6.17h-1.1a.86.86 0 0 1-.935-.708l-3.286-10.141-3.286 10.141a.928.928 0 0 1-.963.708z" fill="#51504f" data-name="Path 11" transform="translate(-1454.66 -838.62)"></path>
</g>
</g>
</g>
</svg>
</a>
</div>
<div class="desktop-only navbar__menu-container">
<div class="navbar__menu-content" id="main_navbar">
<div class="navbar__links-container">
<a class="navbar__text-link" href="/community/">
Community
</a>
<a class="navbar__text-link" href="/meetups/">
Meetups
</a>
<a class="navbar__text-link" href="/docs/">
Documentation
</a>
<a class="navbar__text-link" href="/use-cases/">
Use-cases
</a>
<a class="navbar__text-link" href="/announcements/">
Announcements
</a>
<a class="navbar__text-link" href="/blog/">
Blog
</a>
<a class="navbar__text-link" href="/ecosystem/">
Ecosystem
</a>
</div>
</div>
</div>
<div class="mobile-only navbar__drawer-container">
<button class="navbar__toggle-button" id="navbar-toggle-button">
<div id="hamburger-icon" class="navbar__toggle-button--icon visible">
<svg xmlns="http://www.w3.org/2000/svg" width="26" height="20" viewBox="0 0 26 20">
<g id="Group_1294" data-name="Group 1294" transform="translate(-38.791 291)">
<g id="Group_1291" data-name="Group 1291" transform="translate(39 -291)">
<rect id="Rectangle_461" width="26" height="2" fill="#51504f" data-name="Rectangle 461" rx="1" transform="translate(-.209)"></rect>
</g>
<g id="Group_1292" data-name="Group 1292" transform="translate(39 -281.822)">
<rect id="Rectangle_462" width="26" height="2" fill="#51504f" data-name="Rectangle 462" rx="1" transform="translate(-.209 -.178)"></rect>
</g>
<g id="Group_1293" data-name="Group 1293" transform="translate(39 -272.644)">
<rect id="Rectangle_463" width="26" height="2" fill="#51504f" data-name="Rectangle 463" rx="1" transform="translate(-.209 -.356)"></rect>
</g>
</g>
</svg>
</div>
<div id="close-icon" class="navbar__toggle-button--icon">
<svg xmlns="http://www.w3.org/2000/svg" width="19.799" height="19.799" viewBox="0 0 19.799 19.799">
<g id="Group_1574" data-name="Group 1574" transform="translate(-41.892 290.899)">
<g id="Group_1291" data-name="Group 1291" transform="rotate(-45 -308.114 -187.077)">
<rect id="Rectangle_461" width="26" height="2" fill="#51504f" data-name="Rectangle 461" rx="1" transform="translate(-.209)"></rect>
</g>
<g id="Group_1292" data-name="Group 1292" transform="rotate(45 372.48 -93.011)">
<rect id="Rectangle_462" width="26" height="2" fill="#51504f" data-name="Rectangle 462" rx="1" transform="translate(-.209 -.178)"></rect>
</g>
</g>
</svg>
</div>
</button>
<div class="navbar__drawer" id="navbar-drawer">
<div class="navbar__menu-content" id="main_navbar">
<div class="navbar__links-container">
<a class="navbar__text-link" href="/community/">
Community
</a>
<a class="navbar__text-link" href="/meetups/">
Meetups
</a>
<a class="navbar__text-link" href="/docs/">
Documentation
</a>
<a class="navbar__text-link" href="/use-cases/">
Use-cases
</a>
<a class="navbar__text-link" href="/announcements/">
Announcements
</a>
<a class="navbar__text-link" href="/blog/">
Blog
</a>
<a class="navbar__text-link" href="/ecosystem/">
Ecosystem
</a>
</div>
</div>
</div>
</div>
</nav>
</header>
<div class="roadmap container-fluid td-default base-layout">
<div class="content-drawer-wrapper">
<button class="content-drawer__toggle-button" id="content-open-button">
<div id="hamburger-icon" class="content-drawer__toggle-button--icon visible">
<svg xmlns="http://www.w3.org/2000/svg" width="20.005" height="13.879" viewBox="0 0 20.005 13.879">
<g id="Group_1619" data-name="Group 1619" transform="translate(271.132 -418.872)">
<g id="Group_1613" data-name="Group 1613" transform="translate(-266.229 431.045)">
<path id="Path_1337" d="M-218.5 513.215h-14.583a.259.259 0 0 1-.259-.26.259.259 0 0 1 .259-.259h14.583a.26.26 0 0 1 .259.259.259.259 0 0 1-.259.26z" fill="#51504f" data-name="Path 1337" transform="translate(233.345 -512.696)"></path>
</g>
<g id="Group_1614" data-name="Group 1614" transform="translate(-266.229 425.684)">
<path id="Path_1338" d="M-218.5 471.9h-14.583a.259.259 0 0 1-.259-.26.26.26 0 0 1 .259-.259h14.583a.26.26 0 0 1 .259.259.26.26 0 0 1-.259.26z" fill="#51504f" data-name="Path 1338" transform="translate(233.345 -471.376)"></path>
</g>
<g id="Group_1615" data-name="Group 1615" transform="translate(-266.229 420.323)">
<path id="Path_1339" d="M-218.5 430.574h-14.583a.259.259 0 0 1-.259-.259.259.259 0 0 1 .259-.259h14.583a.26.26 0 0 1 .259.259.259.259 0 0 1-.259.259z" fill="#51504f" data-name="Path 1339" transform="translate(233.345 -430.055)"></path>
</g>
<g id="Group_1616" data-name="Group 1616" transform="translate(-271.132 429.814)">
<path id="Path_1340" d="M-269.663 506.145a1.47 1.47 0 0 1-1.469-1.469 1.47 1.47 0 0 1 1.469-1.469 1.47 1.47 0 0 1 1.469 1.469 1.47 1.47 0 0 1-1.469 1.469zm0-2.418a.951.951 0 0 0-.95.95.951.951 0 0 0 .95.95.951.951 0 0 0 .95-.95.951.951 0 0 0-.95-.95z" fill="#51504f" data-name="Path 1340" transform="translate(271.132 -503.208)"></path>
</g>
<g id="Group_1617" data-name="Group 1617" transform="translate(-271.132 424.556)">
<path id="Path_1341" d="M-269.663 465.62a1.47 1.47 0 0 1-1.469-1.469 1.47 1.47 0 0 1 1.469-1.469 1.47 1.47 0 0 1 1.469 1.469 1.47 1.47 0 0 1-1.469 1.469zm0-2.418a.951.951 0 0 0-.95.95.951.951 0 0 0 .95.95.951.951 0 0 0 .95-.95.951.951 0 0 0-.95-.952z" fill="#51504f" data-name="Path 1341" transform="translate(271.132 -462.683)"></path>
</g>
<g id="Group_1618" data-name="Group 1618" transform="translate(-271.132 418.872)">
<path id="Path_1342" d="M-269.663 421.809a1.47 1.47 0 0 1-1.469-1.469 1.47 1.47 0 0 1 1.469-1.469 1.47 1.47 0 0 1 1.469 1.469 1.47 1.47 0 0 1-1.469 1.469zm0-2.418a.951.951 0 0 0-.95.95.951.951 0 0 0 .95.95.951.951 0 0 0 .95-.95.951.951 0 0 0-.95-.95z" fill="#51504f" data-name="Path 1342" transform="translate(271.132 -418.872)"></path>
</g>
</g>
</svg>
<span class="bodytext__mobile--brownish-grey">Content</span>
</div>
</button>
<nav id="content-navbar" class="navbar navbar--hidden">
<div class="navbar__icon-container">
<a href="/">
<svg xmlns="http://www.w3.org/2000/svg" width="155.314" height="60" viewBox="0 0 155.314 60">
<defs>
<clipPath id="clip-path">
<path id="Rectangle_1" d="M0 0h155.314v60H0z" fill="none" data-name="Rectangle 1"></path>
</clipPath>
</defs>
<g id="logo" transform="translate(-1305 -780.355)">
<g id="Group_2" clip-path="url(#clip-path)" data-name="Group 2" transform="translate(1305 780.355)">
<g id="Group_1" data-name="Group 1" transform="translate(.486 .486)">
<path id="Path_1" d="M1307.562 880.867l28.187-28.893a.521.521 0 0 0 .063-.666c-1.714-2.393-4.877-2.808-6.049-4.416-3.472-4.763-4.353-7.459-5.845-7.292a.456.456 0 0 0-.271.143l-10.182 10.438c-5.858 6-6.7 19.225-6.852 30.3a.552.552 0 0 0 .949.386z" fill="#017cee" data-name="Path 1" transform="translate(-1306.613 -822.232)"></path>
<path id="Path_2" d="M1405.512 908.489l-28.893-28.189a.521.521 0 0 0-.667-.063c-2.393 1.715-2.808 4.877-4.416 6.049-4.763 3.472-7.459 4.353-7.292 5.845a.456.456 0 0 0 .143.27l10.438 10.182c6 5.858 19.225 6.7 30.3 6.852a.552.552 0 0 0 .387-.946z" fill="#00ad46" data-name="Path 2" transform="translate(-1346.876 -850.567)"></path>
<path id="Path_3" d="M1373.909 902.252c-3.28-3.2-4.8-9.53 1.486-22.583-10.219 4.567-13.8 10.57-12.039 12.289z" fill="#04d659" data-name="Path 3" transform="translate(-1345.96 -850.233)"></path>
<path id="Path_4" d="M1433.132 782.359l-28.186 28.893a.52.52 0 0 0-.063.666c1.715 2.393 4.876 2.808 6.049 4.416 3.472 4.763 4.354 7.459 5.845 7.292a.454.454 0 0 0 .271-.143l10.182-10.438c5.858-6 6.7-19.225 6.852-30.3a.553.553 0 0 0-.95-.386z" fill="#00c7d4" data-name="Path 4" transform="translate(-1375.21 -782.123)"></path>
<path id="Path_5" d="M1426.9 881.155c-3.2 3.28-9.53 4.8-22.584-1.486 4.567 10.219 10.57 13.8 12.289 12.039z" fill="#11e1ee" data-name="Path 5" transform="translate(-1374.875 -850.233)"></path>
<path id="Path_6" d="M1307 782.919l28.893 28.186a.521.521 0 0 0 .666.063c2.393-1.715 2.808-4.877 4.416-6.049 4.763-3.472 7.459-4.353 7.292-5.845a.459.459 0 0 0-.143-.271l-10.438-10.182c-6-5.858-19.225-6.7-30.3-6.852a.552.552 0 0 0-.386.95z" fill="#e43921" data-name="Path 6" transform="translate(-1306.766 -781.97)"></path>
<path id="Path_7" d="M1405.8 804.711c3.28 3.2 4.8 9.53-1.486 22.584 10.219-4.567 13.8-10.571 12.039-12.289z" fill-rule="evenodd" fill="#ff7557" data-name="Path 7" transform="translate(-1374.875 -797.859)"></path>
<path id="Path_8" d="M1329.355 849.266c3.2-3.28 9.53-4.8 22.584 1.486-4.567-10.219-10.57-13.8-12.289-12.039z" fill="#0cb6ff" data-name="Path 8" transform="translate(-1322.503 -821.316)"></path>
<circle id="Ellipse_1" cx="1.26" cy="1.26" r="1.26" fill="#4a4848" data-name="Ellipse 1" transform="translate(28.18 28.171)"></circle>
<path id="Path_9" d="M1527.558 827.347a.229.229 0 0 1-.223-.223.458.458 0 0 1 .011-.123l2.766-7.214a.346.346 0 0 1 .357-.245h.758a.348.348 0 0 1 .357.245l2.754 7.214.022.123a.228.228 0 0 1-.223.223h-.568a.288.288 0 0 1-.19-.056.352.352 0 0 1-.089-.134l-.613-1.583h-3.657l-.613 1.583a.317.317 0 0 1-.1.134.269.269 0 0 1-.178.056zm4.795-2.732l-1.505-3.958-1.505 3.958zm3.322 4.85a.258.258 0 0 1-.189-.078.241.241 0 0 1-.067-.178v-7.4a.241.241 0 0 1 .067-.178.258.258 0 0 1 .189-.078h.513a.268.268 0 0 1 .256.256v.49a2.118 2.118 0 0 1 1.828-.858 2.092 2.092 0 0 1 1.751.736 3.135 3.135 0 0 1 .636 1.9q.011.122.011.379t-.011.379a3.168 3.168 0 0 1-.636 1.9 2.111 2.111 0 0 1-1.751.736 2.154 2.154 0 0 1-1.806-.836v2.587a.241.241 0 0 1-.067.178.223.223 0 0 1-.179.078zm2.364-2.91a1.324 1.324 0 0 0 1.149-.491 2.266 2.266 0 0 0 .4-1.293q.011-.111.011-.323 0-2.107-1.562-2.107a1.365 1.365 0 0 0-1.159.513 2.111 2.111 0 0 0-.412 1.2l-.012.424.012.435a1.862 1.862 0 0 0 .424 1.149 1.4 1.4 0 0 0 1.148.493zm5.628.9a2.329 2.329 0 0 1-1.015-.223 1.94 1.94 0 0 1-.747-.6 1.487 1.487 0 0 1-.268-.859 1.459 1.459 0 0 1 .6-1.2 3.4 3.4 0 0 1 1.65-.624l1.661-.234v-.323q0-1.137-1.3-1.137a1.4 1.4 0 0 0-.8.212 1.376 1.376 0 0 0-.468.48.305.305 0 0 1-.089.145.18.18 0 0 1-.134.045h-.48a.23.23 0 0 1-.245-.245 1.17 1.17 0 0 1 .245-.6 1.931 1.931 0 0 1 .747-.591 2.7 2.7 0 0 1 1.238-.256 2.351 2.351 0 0 1 1.8.591 2.032 2.032 0 0 1 .547 1.45v3.613a.257.257 0 0 1-.078.19.24.24 0 0 1-.178.067h-.513a.233.233 0 0 1-.257-.256v-.479a1.923 1.923 0 0 1-.714.6 2.557 2.557 0 0 1-1.203.237zm.234-.836a1.579 1.579 0 0 0 1.182-.469 1.881 1.881 0 0 0 .468-1.371v-.312l-1.293.19a2.918 2.918 0 0 0-1.193.379.761.761 0 0 0-.4.658.784.784 0 0 0 .368.691 1.585 1.585 0 0 0 .867.237zm6.643.836a2.556 2.556 0 0 1-1.873-.669 2.738 2.738 0 0 1-.714-1.9l-.011-.446.011-.446a2.7 2.7 0 0 1 .714-1.885 2.531 2.531 0 0 1 1.873-.68 2.917 2.917 0 0 1 1.36.29 2.077 2.077 0 0 1 .825.714 1.7 1.7 0 0 1 .3.848.2.2 0 0 1-.067.178.281.281 0 0 1-.19.067h-.535a.265.265 0 0 1-.168-.045.458.458 0 0 1-.111-.178 1.428 1.428 0 0 0-.535-.758 1.516 1.516 0 0 0-.87-.234 1.45 1.45 0 0 0-1.1.435 1.952 1.952 0 0 0-.435 1.3l-.011.4.011.379a1.969 1.969 0 0 0 .435 1.316 1.446 1.446 0 0 0 1.1.424 1.577 1.577 0 0 0 .87-.223 1.493 1.493 0 0 0 .535-.769.458.458 0 0 1 .111-.178.228.228 0 0 1 .168-.056h.535a.258.258 0 0 1 .19.078.2.2 0 0 1 .067.178 1.75 1.75 0 0 1-.3.847 2.078 2.078 0 0 1-.825.714 2.876 2.876 0 0 1-1.361.302zm4.078-.112a.233.233 0 0 1-.257-.256v-7.4a.241.241 0 0 1 .067-.178.259.259 0 0 1 .19-.078h.557a.267.267 0 0 1 .257.256v2.6a2.167 2.167 0 0 1 .758-.624 2.353 2.353 0 0 1 1.082-.223 2.067 2.067 0 0 1 1.661.691 2.642 2.642 0 0 1 .6 1.818v3.144a.257.257 0 0 1-.078.19.24.24 0 0 1-.178.067h-.557a.233.233 0 0 1-.256-.256V824a1.775 1.775 0 0 0-.39-1.227 1.387 1.387 0 0 0-1.1-.435 1.481 1.481 0 0 0-1.126.446 1.7 1.7 0 0 0-.412 1.215v3.088a.257.257 0 0 1-.078.19.24.24 0 0 1-.178.067zm8.846.112a2.466 2.466 0 0 1-1.84-.7 2.938 2.938 0 0 1-.747-1.94l-.011-.379.011-.368a2.953 2.953 0 0 1 .758-1.918 2.7 2.7 0 0 1 3.735.078 3.114 3.114 0 0 1 .68 2.119v.19a.257.257 0 0 1-.078.189.241.241 0 0 1-.178.067h-3.858v.1a2.11 2.11 0 0 0 .435 1.238 1.332 1.332 0 0 0 1.081.5 1.563 1.563 0 0 0 .836-.2 1.7 1.7 0 0 0 .491-.435.6.6 0 0 1 .145-.156.391.391 0 0 1 .19-.033h.547a.252.252 0 0 1 .167.056.192.192 0 0 1 .067.156.975.975 0 0 1-.312.591 2.51 2.51 0 0 1-.859.6 3.049 3.049 0 0 1-1.26.248zm1.527-3.434v-.033a1.817 1.817 0 0 0-.424-1.249 1.512 1.512 0 0 0-2.23 0 1.883 1.883 0 0 0-.4 1.249v.033z" fill="#51504f" data-name="Path 9" transform="translate(-1460.834 -808.144)"></path>
<path id="Path_10" d="M1527.2 827.081l-.061.061zm-.056-.279l-.08-.031zm2.766-7.214l.08.031zm1.472 0l-.081.029zm2.754 7.214l.084-.015a.064.064 0 0 0 0-.015zm.022.123h.086v-.015zm-.067.156l.06.061zm-.914.011l-.061.061.006.005zm-.089-.134l.081-.027zm-.613-1.583l.08-.031a.086.086 0 0 0-.08-.055zm-3.657 0v-.086a.086.086 0 0 0-.08.055zm-.613 1.583l-.08-.031zm-.1.134l.055.066zm4.047-2.676v.086a.086.086 0 0 0 .08-.116zm-1.505-3.958l.08-.03a.086.086 0 0 0-.16 0zm-1.505 3.958l-.08-.03a.086.086 0 0 0 .08.116zm-1.784 2.646a.128.128 0 0 1-.1-.042l-.122.121a.3.3 0 0 0 .217.092zm-.1-.042a.129.129 0 0 1-.042-.1h-.171a.3.3 0 0 0 .092.217zm-.042-.1a.38.38 0 0 1 .007-.1l-.163-.054a.514.514 0 0 0-.016.15zm.005-.092l2.765-7.214-.16-.061-2.765 7.214zm2.766-7.216a.283.283 0 0 1 .1-.143.3.3 0 0 1 .174-.046v-.172a.47.47 0 0 0-.271.076.453.453 0 0 0-.166.226zm.276-.189h.758v-.172h-.758zm.758 0a.3.3 0 0 1 .175.046.283.283 0 0 1 .1.143l.161-.059a.451.451 0 0 0-.166-.226.47.47 0 0 0-.272-.076zm.277.19l2.754 7.214.16-.061-2.754-7.214zm2.75 7.2l.022.123.169-.031-.022-.123zm.021.107a.13.13 0 0 1-.042.1l.121.121a.3.3 0 0 0 .092-.217zm-.042.1a.13.13 0 0 1-.1.042v.171a.3.3 0 0 0 .217-.092zm-.1.042h-.568v.171h.568zm-.568 0a.206.206 0 0 1-.135-.036l-.11.132a.373.373 0 0 0 .245.076zm-.129-.031a.262.262 0 0 1-.069-.1l-.162.054a.431.431 0 0 0 .11.167zm-.07-.1l-.613-1.584-.16.062.613 1.583zm-.693-1.638h-3.657v.171h3.657zm-3.737.055l-.614 1.584.16.062.613-1.583zm-.615 1.587a.235.235 0 0 1-.075.1l.111.13a.4.4 0 0 0 .126-.172zm-.074.1a.185.185 0 0 1-.124.036v.171a.354.354 0 0 0 .233-.076zm-.124.036h-.569v.171h.569zm4.306-2.677l-1.505-3.958-.16.061 1.505 3.958zm-1.666-3.958l-1.505 3.958.16.061 1.505-3.958zm-1.425 4.075h3.01v-.171h-3.01zm6.143 4.687l-.06.061zm0-7.761l.061.061zm.881 0l-.065.056.01.009zm.078.669h-.086a.086.086 0 0 0 .155.051zm3.579-.123l-.067.053zm.636 1.9h-.086zm0 .758l-.085-.007zm-.636 1.9l.067.054zm-3.557-.1l.068-.052a.086.086 0 0 0-.154.052zm-.067 2.765l-.061-.06zm2.787-3.323l-.069-.051zm.4-1.293l-.085-.008v.005zm-2.709-1.918l-.068-.052zm-.413 1.2h-.086zm-.011.423h-.085zm.011.435h-.086zm.424 1.149l.066-.054zm-1.216 3.315a.173.173 0 0 1-.129-.053l-.121.121a.342.342 0 0 0 .25.1zm-.129-.053a.157.157 0 0 1-.042-.118h-.172a.325.325 0 0 0 .092.239zm-.042-.118v-7.4h-.172v7.4zm0-7.4a.157.157 0 0 1 .042-.118l-.121-.121a.324.324 0 0 0-.092.239zm.042-.118a.173.173 0 0 1 .129-.053v-.172a.342.342 0 0 0-.25.1zm.129-.053h.513v-.172h-.513zm.513 0a.137.137 0 0 1 .113.048l.13-.111a.309.309 0 0 0-.244-.108zm.123.058a.137.137 0 0 1 .048.113h.171a.309.309 0 0 0-.108-.243zm.048.113v.49h.171v-.49zm.155.541a2.033 2.033 0 0 1 1.759-.823v-.171a2.2 2.2 0 0 0-1.9.894zm1.759-.823a2.007 2.007 0 0 1 1.683.7l.135-.106a2.177 2.177 0 0 0-1.818-.768zm1.683.7a3.045 3.045 0 0 1 .617 1.845l.171-.007a3.218 3.218 0 0 0-.654-1.946zm.617 1.85c.007.078.011.2.011.372h.171c0-.171 0-.3-.012-.387zm.011.372c0 .171 0 .294-.011.372l.17.015c.008-.086.012-.216.012-.387zm-.011.376a3.08 3.08 0 0 1-.617 1.846l.134.106a3.25 3.25 0 0 0 .654-1.945zm-.617 1.845a2.025 2.025 0 0 1-1.683.7v.171a2.2 2.2 0 0 0 1.817-.768zm-1.683.7a2.068 2.068 0 0 1-1.739-.8l-.136.1a2.239 2.239 0 0 0 1.874.87zm-1.892-.75v2.587h.172v-2.587zm0 2.587a.156.156 0 0 1-.042.118l.121.121a.325.325 0 0 0 .092-.239zm-.046.123a.138.138 0 0 1-.114.048v.172a.308.308 0 0 0 .244-.108zm-.114.048h-.546v.172h.546zm1.817-2.739a1.408 1.408 0 0 0 1.218-.526l-.138-.1a1.24 1.24 0 0 1-1.079.455zm1.217-.525a2.355 2.355 0 0 0 .419-1.341l-.171-.007a2.182 2.182 0 0 1-.385 1.246zm.418-1.336c.008-.079.012-.19.012-.332h-.172c0 .14 0 .245-.011.315zm.012-.332a2.726 2.726 0 0 0-.407-1.632 1.448 1.448 0 0 0-1.24-.562v.171a1.278 1.278 0 0 1 1.1.492 2.565 2.565 0 0 1 .374 1.53zm-1.647-2.193a1.452 1.452 0 0 0-1.228.547l.136.1a1.282 1.282 0 0 1 1.091-.479zm-1.228.547a2.2 2.2 0 0 0-.43 1.252l.172.008a2.028 2.028 0 0 1 .4-1.157zm-.43 1.254l-.011.424h.171l.011-.424zm-.011.428l.011.435h.172l-.011-.435zm.011.436a1.95 1.95 0 0 0 .443 1.2l.133-.109a1.776 1.776 0 0 1-.4-1.1zm.443 1.2a1.484 1.484 0 0 0 1.214.522v-.171a1.314 1.314 0 0 1-1.082-.459zm5.828 1.117l.037-.077zm-.747-.6l-.07.049zm.335-2.063l.052.068zm1.65-.624l.012.085zm1.661-.234l.012.085a.086.086 0 0 0 .074-.085zm-2.107-1.249l.046.072zm-.468.48l-.075-.042a.083.083 0 0 0-.006.015zm-.089.145l-.054-.067-.007.006zm-.792-.022l-.065.056.009.009zm-.067-.178h-.086zm.245-.6l-.07-.049zm.747-.591l.038.077zm3.033.334l-.063.058zm.468 5.252l.06.061zm-.881 0l-.065.056a.043.043 0 0 0 .009.009zm-.067-.669h.086a.086.086 0 0 0-.156-.048zm-.714.6l-.04-.076zm.223-1.059l-.062-.06zm.468-1.684h.086a.086.086 0 0 0-.1-.085zm-1.293.189l.012.085zm-1.193.379l.046.072zm-.033 1.349l-.047.071zm.635.985a2.241 2.241 0 0 1-.978-.215l-.074.155a2.412 2.412 0 0 0 1.051.231zm-.978-.215a1.859 1.859 0 0 1-.715-.576l-.138.1a2.024 2.024 0 0 0 .779.629zm-.713-.573a1.4 1.4 0 0 1-.253-.81h-.172a1.571 1.571 0 0 0 .283.907zm-.253-.81a1.374 1.374 0 0 1 .569-1.136l-.105-.135a1.544 1.544 0 0 0-.635 1.272zm.569-1.137a3.316 3.316 0 0 1 1.609-.607l-.024-.17a3.481 3.481 0 0 0-1.691.642zm1.609-.607l1.661-.234-.024-.17-1.662.234zm1.735-.319v-.323h-.171v.323zm0-.323a1.156 1.156 0 0 0-.355-.917 1.536 1.536 0 0 0-1.035-.306v.172a1.37 1.37 0 0 1 .922.263.986.986 0 0 1 .3.788zm-1.39-1.223a1.486 1.486 0 0 0-.851.227l.1.142a1.316 1.316 0 0 1 .755-.2zm-.849.226a1.452 1.452 0 0 0-.5.51l.15.084a1.286 1.286 0 0 1 .44-.449zm-.5.524a.226.226 0 0 1-.062.105l.107.134a.391.391 0 0 0 .117-.185zm-.068.112a.1.1 0 0 1-.073.019v.171a.266.266 0 0 0 .194-.07zm-.073.019h-.48v.171h.48zm-.48 0a.18.18 0 0 1-.122-.046l-.112.13a.352.352 0 0 0 .234.087zm-.113-.037a.18.18 0 0 1-.047-.123h-.171a.352.352 0 0 0 .087.234zm-.047-.119a1.1 1.1 0 0 1 .23-.557l-.14-.1a1.253 1.253 0 0 0-.261.648zm.23-.556a1.843 1.843 0 0 1 .715-.564l-.075-.154a2.018 2.018 0 0 0-.78.618zm.716-.564a2.611 2.611 0 0 1 1.2-.247v-.171a2.781 2.781 0 0 0-1.277.266zm1.2-.247a2.268 2.268 0 0 1 1.732.563l.126-.116a2.435 2.435 0 0 0-1.858-.618zm1.733.564a1.945 1.945 0 0 1 .523 1.391h.171a2.117 2.117 0 0 0-.57-1.508zm.523 1.391v3.613h.171v-3.613zm0 3.613a.172.172 0 0 1-.053.129l.121.121a.344.344 0 0 0 .1-.25zm-.053.129a.157.157 0 0 1-.118.042v.171a.326.326 0 0 0 .239-.092zm-.118.042h-.513v.171h.513zm-.513 0a.2.2 0 0 1-.134-.046l-.111.13a.367.367 0 0 0 .245.088zm-.124-.037a.194.194 0 0 1-.047-.134h-.171a.366.366 0 0 0 .087.245zm-.047-.134v-.479h-.171v.479zm-.156-.528a1.846 1.846 0 0 1-.683.575l.079.152a2.012 2.012 0 0 0 .745-.629zm-.683.575a2.476 2.476 0 0 1-1.153.236v.171a2.644 2.644 0 0 0 1.233-.255zm-.919-.429a1.666 1.666 0 0 0 1.244-.494l-.123-.12a1.493 1.493 0 0 1-1.121.442zm1.244-.494a1.969 1.969 0 0 0 .492-1.431h-.171a1.8 1.8 0 0 1-.444 1.312zm.492-1.431v-.312h-.171v.312zm-.1-.4l-1.293.189.025.17 1.293-.189zm-1.293.189a3 3 0 0 0-1.228.393l.095.143a2.837 2.837 0 0 1 1.158-.365zm-1.227.392a.845.845 0 0 0-.441.73h.172a.676.676 0 0 1 .362-.586zm-.441.73a.869.869 0 0 0 .406.762l.095-.142a.7.7 0 0 1-.33-.62zm.408.764a1.673 1.673 0 0 0 .916.247v-.171a1.5 1.5 0 0 1-.823-.221zm5.686.329l-.061.06zm-.714-1.9h-.085zm-.011-.446h-.085zm.011-.446h-.085zm.714-1.885l.061.061zm3.234-.39l-.04.076zm.825.713l-.073.046zm.3.848h-.086zm-.067.178l.056.065zm-.892.022l.054-.067zm-.112-.178l-.081.029zm-.535-.758l-.048.071zm-1.974.2l-.062-.059zm-.435 1.3h-.086zm-.011.4h-.086zm.011.379h-.086zm.435 1.316l-.062.059zm1.974.2l.046.072zm.535-.769l-.079-.033zm.112-.178l.054.067.007-.006zm.892.022l-.061.06zm.067.178l-.085-.009zm-.3.847l-.072-.046zm-.825.714l-.04-.076zm-1.36.2a2.471 2.471 0 0 1-1.814-.644l-.12.122a2.64 2.64 0 0 0 1.933.694zm-1.813-.643a2.653 2.653 0 0 1-.689-1.839l-.171.006a2.822 2.822 0 0 0 .738 1.952zm-.689-1.838l-.011-.446h-.171l.011.446zm-.011-.442l.011-.446h-.171l-.011.446zm.011-.445a2.611 2.611 0 0 1 .689-1.827l-.122-.121a2.78 2.78 0 0 0-.738 1.942zm.689-1.827a2.447 2.447 0 0 1 1.813-.655v-.171a2.617 2.617 0 0 0-1.934.705zm1.813-.655a2.836 2.836 0 0 1 1.32.28l.079-.152a3 3 0 0 0-1.4-.3zm1.32.28a1.99 1.99 0 0 1 .792.683l.145-.091a2.158 2.158 0 0 0-.858-.744zm.793.685a1.617 1.617 0 0 1 .287.8l.171-.009a1.789 1.789 0 0 0-.315-.89zm.287.809a.11.11 0 0 1-.037.1l.112.13a.281.281 0 0 0 .1-.252zm-.037.1a.2.2 0 0 1-.134.046v.171a.369.369 0 0 0 .246-.088zm-.134.046h-.535v.171h.535zm-.535 0a.184.184 0 0 1-.114-.026l-.107.134a.345.345 0 0 0 .221.064zm-.114-.026a.389.389 0 0 1-.086-.144l-.158.066a.533.533 0 0 0 .137.212zm-.084-.14a1.514 1.514 0 0 0-.57-.8l-.093.144a1.343 1.343 0 0 1 .5.715zm-.568-.8a1.6 1.6 0 0 0-.918-.249v.171a1.435 1.435 0 0 1 .822.219zm-.918-.249a1.535 1.535 0 0 0-1.166.462l.124.118a1.364 1.364 0 0 1 1.042-.408zm-1.166.462a2.036 2.036 0 0 0-.458 1.36l.171.006a1.872 1.872 0 0 1 .411-1.249zm-.458 1.361l-.011.4h.171l.011-.4zm-.011.406l.011.379.171-.005-.011-.379zm.011.38a2.052 2.052 0 0 0 .458 1.371l.124-.118a1.889 1.889 0 0 1-.411-1.26zm.458 1.371a1.533 1.533 0 0 0 1.166.451v-.172a1.363 1.363 0 0 1-1.042-.4zm1.166.451a1.661 1.661 0 0 0 .916-.237l-.093-.144a1.491 1.491 0 0 1-.823.209zm.918-.238a1.576 1.576 0 0 0 .568-.812l-.162-.057a1.409 1.409 0 0 1-.5.727zm.566-.807a.39.39 0 0 1 .086-.144l-.107-.134a.533.533 0 0 0-.137.213zm.093-.151a.144.144 0 0 1 .107-.031v-.171a.31.31 0 0 0-.228.081zm.107-.031h.535v-.171h-.535zm.535 0a.173.173 0 0 1 .129.053l.121-.121a.344.344 0 0 0-.25-.1zm.134.057a.11.11 0 0 1 .037.1l.17.017a.281.281 0 0 0-.1-.252zm.037.109a1.664 1.664 0 0 1-.288.806l.144.092a1.839 1.839 0 0 0 .315-.889zm-.288.806a1.989 1.989 0 0 1-.792.683l.079.152a2.162 2.162 0 0 0 .858-.744zm-.793.684a2.8 2.8 0 0 1-1.32.28v.171a2.96 2.96 0 0 0 1.4-.3zm2.568.187l-.065.056.01.009zm0-7.772l.061.06zm.926 0l-.065.056.009.009zm.078 2.776h-.085a.086.086 0 0 0 .153.053zm.758-.624l.038.077zm2.743.468l-.065.056zm.524 5.151l-.061-.06zm-.925 0l-.065.056.009.009zm-.457-4.5l-.065.056zm-2.23.011l-.062-.059zm-.49 4.493l-.061-.06zm-.736-.019a.2.2 0 0 1-.134-.046l-.112.13a.367.367 0 0 0 .245.088zm-.124-.037a.2.2 0 0 1-.046-.134h-.172a.367.367 0 0 0 .087.245zm-.046-.134v-7.4h-.172v7.4zm0-7.4a.156.156 0 0 1 .042-.118l-.121-.121a.326.326 0 0 0-.092.239zm.042-.118a.172.172 0 0 1 .129-.053v-.171a.343.343 0 0 0-.25.1zm.129-.053h.557v-.171h-.557zm.557 0a.137.137 0 0 1 .113.048l.13-.112a.308.308 0 0 0-.244-.108zm.122.057a.137.137 0 0 1 .048.113h.172a.309.309 0 0 0-.108-.243zm.048.113v2.6h.172v-2.6zm.153 2.651a2.076 2.076 0 0 1 .728-.6l-.075-.154a2.248 2.248 0 0 0-.788.649zm.73-.6a2.272 2.272 0 0 1 1.043-.214v-.171a2.438 2.438 0 0 0-1.121.232zm1.043-.214a1.982 1.982 0 0 1 1.6.661l.13-.112a2.152 2.152 0 0 0-1.727-.721zm1.6.663a2.557 2.557 0 0 1 .581 1.761h.171a2.727 2.727 0 0 0-.624-1.874zm.581 1.761v3.144h.171v-3.144zm0 3.144a.173.173 0 0 1-.053.129l.121.121a.345.345 0 0 0 .1-.25zm-.053.129a.156.156 0 0 1-.118.042v.171a.327.327 0 0 0 .239-.092zm-.118.042h-.557v.171h.557zm-.557 0a.2.2 0 0 1-.134-.046l-.112.13a.367.367 0 0 0 .245.088zm-.124-.037a.2.2 0 0 1-.046-.134h-.172a.368.368 0 0 0 .087.245zm-.046-.134V823.8h-.172v3.088zm0-3.088a1.859 1.859 0 0 0-.412-1.284l-.128.114a1.69 1.69 0 0 1 .368 1.169zm-.411-1.283a1.471 1.471 0 0 0-1.169-.464v.171a1.3 1.3 0 0 1 1.039.406zm-1.169-.464a1.566 1.566 0 0 0-1.188.473l.124.118a1.4 1.4 0 0 1 1.064-.419zm-1.188.473a1.779 1.779 0 0 0-.436 1.275h.172a1.609 1.609 0 0 1 .389-1.156zm-.436 1.275v3.088h.172V823.8zm0 3.088a.172.172 0 0 1-.053.129l.121.121a.344.344 0 0 0 .1-.25zm-.053.129a.156.156 0 0 1-.118.042v.171a.327.327 0 0 0 .239-.092zm-.118.042h-.557v.171h.557zm6.449-.505l-.062.059zm-.747-1.94h-.086zm-.012-.379h-.085v.005zm.012-.368l-.086-.006zm.758-1.918l-.061-.06zm3.735.078l-.065.056zm.6 2.5l.061.061zm-4.036.067v-.086a.086.086 0 0 0-.086.086zm0 .1h-.086zm.435 1.238l-.068.053zm1.918.3l.045.073zm.491-.435l-.069-.051zm.145-.156l.039.077h.006zm.9.022l-.055.066zm-.245.747l-.064-.057zm-.858.6l.035.078zm.267-3.189v.086a.086.086 0 0 0 .086-.086zm-.424-1.282l-.066.055zm-2.23 0l-.065-.055zm-.4 1.282h-.086a.086.086 0 0 0 .086.086zm1.528 3.349a2.38 2.38 0 0 1-1.779-.677l-.122.12a2.55 2.55 0 0 0 1.9.728zm-1.778-.676a2.86 2.86 0 0 1-.724-1.886l-.171.009a3.027 3.027 0 0 0 .771 1.995zm-.723-1.884l-.011-.379h-.171l.011.379zm-.011-.374l.011-.368-.172-.005-.011.368zm.011-.365a2.871 2.871 0 0 1 .735-1.864l-.124-.118a3.042 3.042 0 0 0-.782 1.971zm.734-1.864a2.331 2.331 0 0 1 1.756-.687v-.171a2.5 2.5 0 0 0-1.879.74zm1.756-.687a2.307 2.307 0 0 1 1.853.762l.13-.112a2.477 2.477 0 0 0-1.983-.821zm1.854.762a3.03 3.03 0 0 1 .659 2.062h.172a3.2 3.2 0 0 0-.7-2.175zm.659 2.062v.19h.172v-.19zm0 .19a.172.172 0 0 1-.053.129l.121.121a.345.345 0 0 0 .1-.25zm-.053.129a.156.156 0 0 1-.118.042v.171a.327.327 0 0 0 .239-.092zm-.118.042h-3.858v.171h3.858zm-3.944.086v.1h.172v-.1zm0 .1a2.2 2.2 0 0 0 .453 1.287l.135-.106a2.027 2.027 0 0 1-.417-1.189zm.454 1.288a1.418 1.418 0 0 0 1.148.533v-.171a1.247 1.247 0 0 1-1.015-.47zm1.148.533a1.647 1.647 0 0 0 .882-.214l-.09-.146a1.481 1.481 0 0 1-.791.188zm.882-.214a1.777 1.777 0 0 0 .515-.458l-.14-.1a1.613 1.613 0 0 1-.466.412zm.513-.456a1.251 1.251 0 0 1 .081-.1.28.28 0 0 1 .026-.025l.008-.006-.077-.153a.326.326 0 0 0-.083.068 1.55 1.55 0 0 0-.092.113zm.12-.134a.328.328 0 0 1 .146-.021v-.171a.468.468 0 0 0-.234.046zm.146-.021h.547v-.171h-.547zm.547 0a.166.166 0 0 1 .112.036l.11-.132a.337.337 0 0 0-.222-.076zm.112.036a.107.107 0 0 1 .036.09h.171a.277.277 0 0 0-.1-.222zm.036.09a.9.9 0 0 1-.291.534l.128.115a1.055 1.055 0 0 0 .334-.649zm-.291.535a2.42 2.42 0 0 1-.83.581l.072.156a2.6 2.6 0 0 0 .888-.624zm-.829.58a2.964 2.964 0 0 1-1.224.238v.171a3.133 3.133 0 0 0 1.295-.253zm.389-3.111v-.033h-.171v.033zm0-.033a1.9 1.9 0 0 0-.445-1.306l-.129.114a1.731 1.731 0 0 1 .4 1.192zm-.444-1.3a1.466 1.466 0 0 0-1.181-.521v.172a1.3 1.3 0 0 1 1.049.46zm-1.181-.521a1.466 1.466 0 0 0-1.18.521l.131.11a1.3 1.3 0 0 1 1.049-.46zm-1.181.521a1.965 1.965 0 0 0-.422 1.3h.172a1.794 1.794 0 0 1 .382-1.194zm-.422 1.3v.033h.172v-.033zm.086.119h3.055v-.171h-3.055z" fill="#51504f" data-name="Path 10" transform="translate(-1460.636 -807.945)"></path>
<path id="Path_11" d="M1519.066 884.011a.581.581 0 0 1-.567-.567 1.151 1.151 0 0 1 .028-.312l7.026-18.328a.881.881 0 0 1 .906-.623h1.926a.882.882 0 0 1 .907.623l7 18.328.057.312a.583.583 0 0 1-.567.567h-1.445a.735.735 0 0 1-.482-.142.9.9 0 0 1-.226-.34l-1.558-4.023h-9.292l-1.558 4.023a.8.8 0 0 1-.255.34.688.688 0 0 1-.453.142zm12.181-6.94l-3.824-10.056-3.823 10.055zm8.184-10.538a.592.592 0 0 1-.652-.651v-1.53a.714.714 0 0 1 .17-.482.656.656 0 0 1 .482-.2h1.785a.677.677 0 0 1 .68.68v1.53a.655.655 0 0 1-.2.481.713.713 0 0 1-.481.17zm.227 17.479a.593.593 0 0 1-.652-.652v-13.428a.611.611 0 0 1 .17-.453.656.656 0 0 1 .482-.2h1.359a.679.679 0 0 1 .652.651v13.427a.655.655 0 0 1-.2.482.613.613 0 0 1-.453.17zm6.861 0a.592.592 0 0 1-.651-.652v-13.4a.715.715 0 0 1 .17-.481.656.656 0 0 1 .482-.2h1.3a.677.677 0 0 1 .68.68v1.246a4.255 4.255 0 0 1 3.966-1.926h1.1a.679.679 0 0 1 .651.651v1.161a.566.566 0 0 1-.2.453.612.612 0 0 1-.453.17h-1.7a3.2 3.2 0 0 0-2.408.907 3.253 3.253 0 0 0-.879 2.408v8.328a.656.656 0 0 1-.2.482.716.716 0 0 1-.482.17zm12.234 0a.593.593 0 0 1-.651-.652v-11.814h-2.408a.592.592 0 0 1-.651-.651v-.963a.611.611 0 0 1 .17-.453.654.654 0 0 1 .481-.2h2.408v-1.417q0-4.816 4.872-4.815h1.586a.679.679 0 0 1 .652.651v.963a.656.656 0 0 1-.2.481.613.613 0 0 1-.453.17h-1.529a2.1 2.1 0 0 0-1.785.68 3.248 3.248 0 0 0-.51 2.011v1.275h6.062V863.7a.613.613 0 0 1 .17-.453.656.656 0 0 1 .482-.2h1.3a.679.679 0 0 1 .652.651v19.659a.655.655 0 0 1-.2.482.613.613 0 0 1-.454.17h-1.3a.592.592 0 0 1-.652-.652v-11.811h-6.062v11.813a.657.657 0 0 1-.2.482.614.614 0 0 1-.454.17zm20.9.283a6.487 6.487 0 0 1-4.844-1.757 6.837 6.837 0 0 1-1.813-4.674l-.029-1.218.029-1.218a6.732 6.732 0 0 1 1.841-4.646 7.389 7.389 0 0 1 9.631 0 6.736 6.736 0 0 1 1.841 4.646q.028.311.028 1.218t-.028 1.218a6.772 6.772 0 0 1-1.841 4.674 6.391 6.391 0 0 1-4.82 1.756zm0-2.181a3.582 3.582 0 0 0 2.8-1.133 4.931 4.931 0 0 0 1.133-3.258q.028-.283.028-1.076t-.028-1.076a4.931 4.931 0 0 0-1.133-3.258 3.582 3.582 0 0 0-2.8-1.133 3.671 3.671 0 0 0-2.833 1.133 4.83 4.83 0 0 0-1.1 3.258l-.028 1.076.028 1.076a4.83 4.83 0 0 0 1.1 3.258 3.671 3.671 0 0 0 2.828 1.132zm13.755 1.9a.846.846 0 0 1-.566-.17 1.321 1.321 0 0 1-.34-.538l-4.023-13.144-.056-.283a.575.575 0 0 1 .17-.425.641.641 0 0 1 .425-.17h1.246a.612.612 0 0 1 .453.17.646.646 0 0 1 .255.312l3.145 10.679 3.371-10.566a.761.761 0 0 1 .255-.4.726.726 0 0 1 .538-.2h.963a.728.728 0 0 1 .539.2.76.76 0 0 1 .255.4l3.371 10.566 3.144-10.679a.655.655 0 0 1 .2-.312.714.714 0 0 1 .482-.17h1.275a.542.542 0 0 1 .4.17.576.576 0 0 1 .17.425l-.057.283-3.994 13.144a1.323 1.323 0 0 1-.34.538.9.9 0 0 1-.6.17h-1.1a.86.86 0 0 1-.935-.708l-3.286-10.141-3.286 10.141a.928.928 0 0 1-.963.708z" fill="#51504f" data-name="Path 11" transform="translate(-1454.66 -838.62)"></path>
</g>
</g>
</g>
</svg>
</a>
</div>
<div id="content-close-button">
<svg xmlns="http://www.w3.org/2000/svg" width="19.799" height="19.799" viewBox="0 0 19.799 19.799">
<g id="Group_1574" data-name="Group 1574" transform="translate(-41.892 290.899)">
<g id="Group_1291" data-name="Group 1291" transform="rotate(-45 -308.114 -187.077)">
<rect id="Rectangle_461" width="26" height="2" fill="#51504f" data-name="Rectangle 461" rx="1" transform="translate(-.209)"></rect>
</g>
<g id="Group_1292" data-name="Group 1292" transform="rotate(45 372.48 -93.011)">
<rect id="Rectangle_462" width="26" height="2" fill="#51504f" data-name="Rectangle 462" rx="1" transform="translate(-.209 -.178)"></rect>
</g>
</g>
</svg>
</div>
</nav>
<div class="content-drawer-container" id="content-drawer">
<div class="content-drawer">
<div class="td-sidebar">
<div id="docs-version-selector" class="docs-version-selector sidebar__version-selector">
<a class="dropdown-toggle" href="#" id="versionDropdown" role="button" data-toggle="dropdown" aria-haspopup="true"
aria-expanded="false">
<span class="bodytext__medium--greyish-brown">Version: </span><span class="version">2.3.3</span>
</a>
<div class="dropdown-menu" aria-labelledby="navbarDropdownMenuLink">
</div>
<script type="application/x-template" id="version-item-template">
<a class="dropdown-item"></a>
</script>
</div>
<div class="searchb-box">
<form class="search-form" action="search.html" method="get">
<input class="search-form__input" type="text" name="q" placeholder="Search docs" size="16">
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
<button class="search-form__button" type="submit">
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20">
<g id="Group_1579" data-name="Group 1579" transform="translate(-41.001 -41)">
<path id="Path_169" d="M71.415 64.687a7.215 7.215 0 1 0-6.729 6.728 7.222 7.222 0 0 0 6.729-6.728z" fill="none" data-name="Path 169" transform="translate(-14.277 -14.276)"></path>
<path id="Path_170" d="M60.863 59.8l-6.093-6.09a7.78 7.78 0 1 0-1.06 1.06l6.09 6.093a.468.468 0 0 0 .662 0l.4-.4a.468.468 0 0 0 .001-.663zM42.512 49.183a6.274 6.274 0 1 1 5.851 5.85 6.28 6.28 0 0 1-5.851-5.85z" fill="#51504f" data-name="Path 170"></path>
</g>
</svg>
</button>
</form>
</div>
<style>
.searchb-box {
margin-bottom: 26px;
}
.searchb-box .search-form {
width: 100%;
margin-top: 20px;
}
</style>
<div class="toctree" role="navigation" aria-label="main navigation">
<p class="caption" role="heading"><span class="caption-text">Content</span></p>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="index.html">Home</a></li>
<li class="toctree-l1"><a class="reference internal" href="project.html">Project</a></li>
<li class="toctree-l1"><a class="reference internal" href="license.html">License</a></li>
<li class="toctree-l1"><a class="reference internal" href="start/index.html">Quick Start</a></li>
<li class="toctree-l1"><a class="reference internal" href="installation/index.html">Installation</a></li>
<li class="toctree-l1"><a class="reference internal" href="upgrading-from-1-10/index.html">Upgrading from 1.10 to 2</a></li>
<li class="toctree-l1"><a class="reference internal" href="tutorial.html">Tutorial</a></li>
<li class="toctree-l1"><a class="reference internal" href="tutorial_taskflow_api.html">Tutorial on the TaskFlow API</a></li>
<li class="toctree-l1"><a class="reference internal" href="howto/index.html">How-to Guides</a></li>
<li class="toctree-l1"><a class="reference internal" href="ui.html">UI / Screenshots</a></li>
<li class="toctree-l1"><a class="reference internal" href="concepts/index.html">Concepts</a></li>
<li class="toctree-l1"><a class="reference internal" href="executor/index.html">Executor</a></li>
<li class="toctree-l1"><a class="reference internal" href="dag-run.html">DAG Runs</a></li>
<li class="toctree-l1"><a class="reference internal" href="plugins.html">Plugins</a></li>
<li class="toctree-l1"><a class="reference internal" href="security/index.html">Security</a></li>
<li class="toctree-l1"><a class="reference internal" href="logging-monitoring/index.html">Logging &amp; Monitoring</a></li>
<li class="toctree-l1"><a class="reference internal" href="timezone.html">Time Zones</a></li>
<li class="toctree-l1"><a class="reference internal" href="usage-cli.html">Using the CLI</a></li>
<li class="toctree-l1"><a class="reference internal" href="integration.html">Integration</a></li>
<li class="toctree-l1"><a class="reference internal" href="kubernetes.html">Kubernetes</a></li>
<li class="toctree-l1"><a class="reference internal" href="lineage.html">Lineage</a></li>
<li class="toctree-l1"><a class="reference internal" href="listeners.html">Listeners</a></li>
<li class="toctree-l1"><a class="reference internal" href="dag-serialization.html">DAG Serialization</a></li>
<li class="toctree-l1"><a class="reference internal" href="modules_management.html">Modules Management</a></li>
<li class="toctree-l1"><a class="reference internal" href="release-process.html">Release Policies</a></li>
<li class="toctree-l1 current"><a class="current reference internal" href="#">Release Notes</a><ul>
<li class="toctree-l2"><a class="reference internal" href="#airflow-2-3-3-2022-07-05">Airflow 2.3.3 (2022-07-05)</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#significant-changes">Significant Changes</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#we-ve-upgraded-flask-app-builder-to-a-major-version-4-24399">We’ve upgraded Flask App Builder to a major version 4.* (#24399)</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="#bug-fixes">Bug Fixes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#doc-only-changes">Doc only changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#misc-internal">Misc/Internal</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#airflow-2-3-2-2022-06-04">Airflow 2.3.2 (2022-06-04)</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id1">Bug Fixes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id2">Doc only changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id3">Misc/Internal</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#airflow-2-3-1-2022-05-25">Airflow 2.3.1 (2022-05-25)</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id4">Significant Changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id5">Bug Fixes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id6">Doc only changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id7">Misc/Internal</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#airflow-2-3-0-2022-04-30">Airflow 2.3.0 (2022-04-30)</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id8">Significant Changes</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#passing-execution-date-to-xcom-set-xcom-clear-xcom-get-one-and-xcom-get-many-is-deprecated-19825">Passing <code class="docutils literal notranslate"><span class="pre">execution_date</span></code> to <code class="docutils literal notranslate"><span class="pre">XCom.set()</span></code>, <code class="docutils literal notranslate"><span class="pre">XCom.clear()</span></code> , <code class="docutils literal notranslate"><span class="pre">XCom.get_one()</span></code> , and <code class="docutils literal notranslate"><span class="pre">XCom.get_many()</span></code> is deprecated (#19825)</a></li>
<li class="toctree-l4"><a class="reference internal" href="#task-log-templates-are-now-read-from-the-metadata-database-instead-of-airflow-cfg-20165">Task log templates are now read from the metadata database instead of <code class="docutils literal notranslate"><span class="pre">airflow.cfg</span></code> (#20165)</a></li>
<li class="toctree-l4"><a class="reference internal" href="#minimum-kubernetes-library-version-bumped-from-3-0-0-to-21-7-0-20759">Minimum kubernetes library version bumped from <code class="docutils literal notranslate"><span class="pre">3.0.0</span></code> to <code class="docutils literal notranslate"><span class="pre">21.7.0</span></code> (#20759)</a></li>
<li class="toctree-l4"><a class="reference internal" href="#xcom-now-defined-by-run-id-instead-of-execution-date-20975">XCom now defined by <code class="docutils literal notranslate"><span class="pre">run_id</span></code> instead of <code class="docutils literal notranslate"><span class="pre">execution_date</span></code> (#20975)</a></li>
<li class="toctree-l4"><a class="reference internal" href="#non-json-serializable-params-deprecated-21135">Non-JSON-serializable params deprecated (#21135).</a></li>
<li class="toctree-l4"><a class="reference internal" href="#you-must-use-postgresql-instead-of-postgres-in-sql-alchemy-conn-for-sqlalchemy-1-4-0-21205">You must use <code class="docutils literal notranslate"><span class="pre">postgresql://</span></code> instead of <code class="docutils literal notranslate"><span class="pre">postgres://</span></code> in <code class="docutils literal notranslate"><span class="pre">sql_alchemy_conn</span></code> for SQLAlchemy 1.4.0+ (#21205)</a></li>
<li class="toctree-l4"><a class="reference internal" href="#auth-backends-replaces-auth-backend-configuration-setting-21472"><code class="docutils literal notranslate"><span class="pre">auth_backends</span></code> replaces <code class="docutils literal notranslate"><span class="pre">auth_backend</span></code> configuration setting (#21472)</a></li>
<li class="toctree-l4"><a class="reference internal" href="#airflow-models-base-operator-is-removed-21505"><code class="docutils literal notranslate"><span class="pre">airflow.models.base.Operator</span></code> is removed (#21505)</a></li>
<li class="toctree-l4"><a class="reference internal" href="#zip-files-in-the-dags-folder-can-no-longer-have-a-py-extension-21538">Zip files in the DAGs folder can no longer have a <code class="docutils literal notranslate"><span class="pre">.py</span></code> extension (#21538)</a></li>
<li class="toctree-l4"><a class="reference internal" href="#auth-backends-includes-session-21640"><code class="docutils literal notranslate"><span class="pre">auth_backends</span></code> includes session (#21640)</a></li>
<li class="toctree-l4"><a class="reference internal" href="#default-templates-for-log-filenames-and-elasticsearch-log-id-changed-21734">Default templates for log filenames and elasticsearch log_id changed (#21734)</a></li>
<li class="toctree-l4"><a class="reference internal" href="#baseoperatorlink-s-get-link-method-changed-to-take-a-ti-key-keyword-argument-21798">BaseOperatorLink’s <code class="docutils literal notranslate"><span class="pre">get_link</span></code> method changed to take a <code class="docutils literal notranslate"><span class="pre">ti_key</span></code> keyword argument (#21798)</a></li>
<li class="toctree-l4"><a class="reference internal" href="#readytorescheduledep-now-only-runs-when-reschedule-is-true-21815"><code class="docutils literal notranslate"><span class="pre">ReadyToRescheduleDep</span></code> now only runs when <code class="docutils literal notranslate"><span class="pre">reschedule</span></code> is <em>True</em> (#21815)</a></li>
<li class="toctree-l4"><a class="reference internal" href="#the-deps-attribute-on-an-operator-class-should-be-a-class-level-attribute-21815">The <code class="docutils literal notranslate"><span class="pre">deps</span></code> attribute on an operator class should be a class level attribute (#21815)</a></li>
<li class="toctree-l4"><a class="reference internal" href="#deprecation-connection-extra-must-be-json-encoded-dict-21816">Deprecation: <code class="docutils literal notranslate"><span class="pre">Connection.extra</span></code> must be JSON-encoded dict (#21816)</a><ul>
<li class="toctree-l5"><a class="reference internal" href="#tldr">TLDR</a></li>
<li class="toctree-l5"><a class="reference internal" href="#what-why-and-when">What, why, and when?</a></li>
<li class="toctree-l5"><a class="reference internal" href="#how-will-i-be-affected">How will I be affected?</a></li>
</ul>
</li>
<li class="toctree-l4"><a class="reference internal" href="#the-tree-default-view-setting-has-been-renamed-to-grid-22167">The <code class="docutils literal notranslate"><span class="pre">tree</span></code> default view setting has been renamed to <code class="docutils literal notranslate"><span class="pre">grid</span></code> (#22167)</a></li>
<li class="toctree-l4"><a class="reference internal" href="#database-configuration-moved-to-new-section-22284">Database configuration moved to new section (#22284)</a></li>
<li class="toctree-l4"><a class="reference internal" href="#remove-requirement-that-custom-connection-ui-fields-be-prefixed-22607">Remove requirement that custom connection UI fields be prefixed (#22607)</a></li>
<li class="toctree-l4"><a class="reference internal" href="#the-webserver-x-frame-enabled-configuration-works-according-to-description-now-23222">The webserver.X_FRAME_ENABLED configuration works according to description now (#23222).</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="#new-features">New Features</a></li>
<li class="toctree-l3"><a class="reference internal" href="#improvements">Improvements</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id9">Bug Fixes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id10">Doc only changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id11">Misc/Internal</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#airflow-2-2-5-2022-04-04">Airflow 2.2.5, (2022-04-04)</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id12">Significant Changes</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#id13">Bug Fixes</a></li>
<li class="toctree-l4"><a class="reference internal" href="#id14">Doc only changes</a></li>
<li class="toctree-l4"><a class="reference internal" href="#misc">Misc</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#airflow-2-2-4-2022-02-22">Airflow 2.2.4, (2022-02-22)</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id15">Significant Changes</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#smart-sensors-deprecated">Smart sensors deprecated</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="#id16">Bug Fixes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id17">Doc only changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id18">Misc</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#airflow-2-2-3-2021-12-21">Airflow 2.2.3, (2021-12-21)</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id19">Significant Changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id20">Bug Fixes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id21">Doc only changes</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#airflow-2-2-2-2021-11-15">Airflow 2.2.2 (2021-11-15)</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id22">Significant Changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id23">Bug Fixes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id24">Doc only changes</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#airflow-2-2-1-2021-10-29">Airflow 2.2.1 (2021-10-29)</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id25">Significant Changes</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#param-s-default-value-for-default-removed"><code class="docutils literal notranslate"><span class="pre">Param</span></code>’s default value for <code class="docutils literal notranslate"><span class="pre">default</span></code> removed</a></li>
<li class="toctree-l4"><a class="reference internal" href="#max-queued-runs-per-dag-configuration-has-been-removed"><code class="docutils literal notranslate"><span class="pre">max_queued_runs_per_dag</span></code> configuration has been removed</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="#id26">Bug Fixes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id27">Doc only changes</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#airflow-2-2-0-2021-10-11">Airflow 2.2.0 (2021-10-11)</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id28">Significant Changes</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#worker-log-server-port-configuration-has-been-moved-to-the-logging-section"><code class="docutils literal notranslate"><span class="pre">worker_log_server_port</span></code> configuration has been moved to the <code class="docutils literal notranslate"><span class="pre">logging</span></code> section.</a></li>
<li class="toctree-l4"><a class="reference internal" href="#pandas-is-now-an-optional-dependency"><code class="docutils literal notranslate"><span class="pre">pandas</span></code> is now an optional dependency</a></li>
<li class="toctree-l4"><a class="reference internal" href="#none-failed-or-skipped-trigger-rule-has-been-deprecated"><code class="docutils literal notranslate"><span class="pre">none_failed_or_skipped</span></code> trigger rule has been deprecated</a></li>
<li class="toctree-l4"><a class="reference internal" href="#dummy-trigger-rule-has-been-deprecated">Dummy trigger rule has been deprecated</a></li>
<li class="toctree-l4"><a class="reference internal" href="#dag-concurrency-settings-have-been-renamed">DAG concurrency settings have been renamed</a></li>
<li class="toctree-l4"><a class="reference internal" href="#task-concurrency-parameter-has-been-renamed">Task concurrency parameter has been renamed</a></li>
<li class="toctree-l4"><a class="reference internal" href="#processor-poll-interval-config-have-been-renamed-to-scheduler-idle-sleep-time"><code class="docutils literal notranslate"><span class="pre">processor_poll_interval</span></code> config have been renamed to <code class="docutils literal notranslate"><span class="pre">scheduler_idle_sleep_time</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="#marking-success-failed-automatically-clears-failed-downstream-tasks">Marking success/failed automatically clears failed downstream tasks</a></li>
<li class="toctree-l4"><a class="reference internal" href="#core-store-dag-code-has-been-removed"><code class="docutils literal notranslate"><span class="pre">[core]</span> <span class="pre">store_dag_code</span></code> has been removed</a></li>
<li class="toctree-l4"><a class="reference internal" href="#clearing-a-running-task-sets-its-state-to-restarting">Clearing a running task sets its state to <code class="docutils literal notranslate"><span class="pre">RESTARTING</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="#remove-taskinstance-log-filepath-attribute">Remove <code class="docutils literal notranslate"><span class="pre">TaskInstance.log_filepath</span></code> attribute</a></li>
<li class="toctree-l4"><a class="reference internal" href="#if-a-sensor-times-out-it-will-not-retry">If a sensor times out, it will not retry</a></li>
<li class="toctree-l4"><a class="reference internal" href="#default-task-pools-slots-can-be-set-using-core-default-pool-task-slot-count">Default Task Pools Slots can be set using <code class="docutils literal notranslate"><span class="pre">[core]</span> <span class="pre">default_pool_task_slot_count</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="#webserver-dag-refresh-buttons-removed">Webserver DAG refresh buttons removed</a></li>
<li class="toctree-l4"><a class="reference internal" href="#taskinstances-now-require-a-dagrun">TaskInstances now <em>require</em> a DagRun</a></li>
<li class="toctree-l4"><a class="reference internal" href="#taskinstance-and-taskreschedule-now-define-run-id-instead-of-execution-date">TaskInstance and TaskReschedule now define <code class="docutils literal notranslate"><span class="pre">run_id</span></code> instead of <code class="docutils literal notranslate"><span class="pre">execution_date</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="#daskexecutor-dask-worker-resources-and-queues">DaskExecutor - Dask Worker Resources and queues</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="#id31">New Features</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id32">Improvements</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id33">Bug Fixes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id34">Doc only changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id35">Misc/Internal</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#airflow-2-1-4-2021-09-18">Airflow 2.1.4 (2021-09-18)</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id36">Significant Changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id37">Bug Fixes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id38">Doc only changes</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#airflow-2-1-3-2021-08-23">Airflow 2.1.3 (2021-08-23)</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id39">Significant Changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id40">Bug Fixes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id41">Improvements</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id42">Doc only changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id43">Misc</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#airflow-2-1-2-2021-07-14">Airflow 2.1.2 (2021-07-14)</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id44">Significant Changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id45">Bug Fixes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id46">Misc</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#airflow-2-1-1-2021-07-02">Airflow 2.1.1 (2021-07-02)</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id47">Significant Changes</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#activate-dag-runs-argument-of-the-function-clear-task-instances-is-replaced-with-dag-run-state"><code class="docutils literal notranslate"><span class="pre">activate_dag_runs</span></code> argument of the function <code class="docutils literal notranslate"><span class="pre">clear_task_instances</span></code> is replaced with <code class="docutils literal notranslate"><span class="pre">dag_run_state</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="#dag-set-dag-runs-state-is-deprecated"><code class="docutils literal notranslate"><span class="pre">dag.set_dag_runs_state</span></code> is deprecated</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="#id49">Bug Fixes</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#airflow-2-1-0-2021-05-21">Airflow 2.1.0 (2021-05-21)</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id50">Significant Changes</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#new-deprecated-api-extra">New “deprecated_api” extra</a></li>
<li class="toctree-l4"><a class="reference internal" href="#the-http-provider-is-not-installed-by-default">The <code class="docutils literal notranslate"><span class="pre">http</span></code> provider is not installed by default</a></li>
<li class="toctree-l4"><a class="reference internal" href="#apply-default-decorator-isn-t-longer-necessary"><code class="docutils literal notranslate"><span class="pre">&#64;apply_default</span></code> decorator isn’t longer necessary</a></li>
<li class="toctree-l4"><a class="reference internal" href="#change-the-configuration-options-for-field-masking">Change the configuration options for field masking</a></li>
<li class="toctree-l4"><a class="reference internal" href="#deprecated-poddefaults-and-add-xcom-sidecar-in-airflow-kubernetes-pod-generator">Deprecated PodDefaults and add_xcom_sidecar in airflow.kubernetes.pod_generator</a></li>
<li class="toctree-l4"><a class="reference internal" href="#removed-pod-launcher-from-core-airflow">Removed pod_launcher from core airflow</a></li>
<li class="toctree-l4"><a class="reference internal" href="#default-webserver-worker-refresh-interval-is-changed-to-6000-seconds">Default <code class="docutils literal notranslate"><span class="pre">[webserver]</span> <span class="pre">worker_refresh_interval</span></code> is changed to <code class="docutils literal notranslate"><span class="pre">6000</span></code> seconds</a></li>
<li class="toctree-l4"><a class="reference internal" href="#default-queue-configuration-has-been-moved-to-the-operators-section"><code class="docutils literal notranslate"><span class="pre">default_queue</span></code> configuration has been moved to the <code class="docutils literal notranslate"><span class="pre">operators</span></code> section.</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="#id51">New Features</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id52">Improvements</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id53">Bug Fixes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id54">Doc only changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id55">Misc/Internal</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#airflow-2-0-2-2021-04-19">Airflow 2.0.2 (2021-04-19)</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id56">Significant Changes</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#default-kubernetes-enable-tcp-keepalive-is-changed-to-true">Default <code class="docutils literal notranslate"><span class="pre">[kubernetes]</span> <span class="pre">enable_tcp_keepalive</span></code> is changed to <code class="docutils literal notranslate"><span class="pre">True</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="#sync-perm-cli-no-longer-syncs-dag-specific-permissions-by-default"><code class="docutils literal notranslate"><span class="pre">sync-perm</span></code> CLI no longer syncs DAG specific permissions by default</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="#id57">Bug Fixes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id58">Improvements</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id59">Doc only changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id60">Misc/Internal</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#airflow-2-0-1-2021-02-08">Airflow 2.0.1 (2021-02-08)</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id61">Significant Changes</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#permission-to-view-airflow-configurations-has-been-removed-from-user-and-viewer-role">Permission to view Airflow Configurations has been removed from <code class="docutils literal notranslate"><span class="pre">User</span></code> and <code class="docutils literal notranslate"><span class="pre">Viewer</span></code> role</a></li>
<li class="toctree-l4"><a class="reference internal" href="#default-celery-worker-concurrency-is-changed-to-16">Default <code class="docutils literal notranslate"><span class="pre">[celery]</span> <span class="pre">worker_concurrency</span></code> is changed to <code class="docutils literal notranslate"><span class="pre">16</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="#default-scheduler-min-file-process-interval-is-changed-to-30">Default <code class="docutils literal notranslate"><span class="pre">[scheduler]</span> <span class="pre">min_file_process_interval</span></code> is changed to <code class="docutils literal notranslate"><span class="pre">30</span></code></a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="#id62">Bug Fixes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id63">Improvements</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id64">Doc only changes</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#airflow-2-0-0-2020-12-18">Airflow 2.0.0 (2020-12-18)</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id65">Significant Changes</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#major-changes">Major changes</a></li>
<li class="toctree-l4"><a class="reference internal" href="#the-experimental-rest-api-is-disabled-by-default">The experimental REST API is disabled by default</a></li>
<li class="toctree-l4"><a class="reference internal" href="#sparkjdbchook-default-connection">SparkJDBCHook default connection</a></li>
<li class="toctree-l4"><a class="reference internal" href="#changes-to-output-argument-in-commands">Changes to output argument in commands</a></li>
<li class="toctree-l4"><a class="reference internal" href="#azure-wasb-hook-does-not-work-together-with-snowflake-hook">Azure Wasb Hook does not work together with Snowflake hook</a></li>
<li class="toctree-l4"><a class="reference internal" href="#rename-all-to-devel-all-extra">Rename <code class="docutils literal notranslate"><span class="pre">all</span></code> to <code class="docutils literal notranslate"><span class="pre">devel_all</span></code> extra</a></li>
<li class="toctree-l4"><a class="reference internal" href="#context-variables-prev-execution-date-success-and-prev-execution-date-success-are-now-pendulum-datetime">Context variables <code class="docutils literal notranslate"><span class="pre">prev_execution_date_success</span></code> and <code class="docutils literal notranslate"><span class="pre">prev_execution_date_success</span></code> are now <code class="docutils literal notranslate"><span class="pre">pendulum.DateTime</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="#rename-policy-to-task-policy">Rename policy to task_policy</a></li>
<li class="toctree-l4"><a class="reference internal" href="#default-value-for-celery-operation-timeout-has-changed-to-1-0">Default value for <code class="docutils literal notranslate"><span class="pre">[celery]</span> <span class="pre">operation_timeout</span></code> has changed to <code class="docutils literal notranslate"><span class="pre">1.0</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="#adding-operators-and-sensors-via-plugins-is-no-longer-supported">Adding Operators and Sensors via plugins is no longer supported</a></li>
<li class="toctree-l4"><a class="reference internal" href="#importing-hooks-via-plugins-is-no-longer-supported">Importing Hooks via plugins is no longer supported</a></li>
<li class="toctree-l4"><a class="reference internal" href="#the-default-value-for-core-enable-xcom-pickling-has-been-changed-to-false">The default value for <code class="docutils literal notranslate"><span class="pre">[core]</span> <span class="pre">enable_xcom_pickling</span></code> has been changed to <code class="docutils literal notranslate"><span class="pre">False</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="#airflowignore-of-base-path">Airflowignore of base path</a></li>
<li class="toctree-l4"><a class="reference internal" href="#externaltasksensor-provides-all-task-context-variables-to-execution-date-fn-as-keyword-arguments"><code class="docutils literal notranslate"><span class="pre">ExternalTaskSensor</span></code> provides all task context variables to <code class="docutils literal notranslate"><span class="pre">execution_date_fn</span></code> as keyword arguments</a></li>
<li class="toctree-l4"><a class="reference internal" href="#the-default-value-for-webserver-cookie-samesite-has-been-changed-to-lax">The default value for <code class="docutils literal notranslate"><span class="pre">[webserver]</span> <span class="pre">cookie_samesite</span></code> has been changed to <code class="docutils literal notranslate"><span class="pre">Lax</span></code></a><ul>
<li class="toctree-l5"><a class="reference internal" href="#changes-to-import-paths">Changes to import paths</a></li>
</ul>
</li>
<li class="toctree-l4"><a class="reference internal" href="#database-schema-changes">Database schema changes</a><ul>
<li class="toctree-l5"><a class="reference internal" href="#unique-conn-id-in-connection-table">Unique conn_id in connection table</a></li>
<li class="toctree-l5"><a class="reference internal" href="#not-nullable-conn-type-column-in-connection-table">Not-nullable conn_type column in connection table</a></li>
</ul>
</li>
<li class="toctree-l4"><a class="reference internal" href="#configuration-changes">Configuration changes</a><ul>
<li class="toctree-l5"><a class="reference internal" href="#airflow-contrib-utils-log-has-been-moved">airflow.contrib.utils.log has been moved</a></li>
<li class="toctree-l5"><a class="reference internal" href="#sendgrid-emailer-has-been-moved">SendGrid emailer has been moved</a></li>
<li class="toctree-l5"><a class="reference internal" href="#unify-hostname-callable-option-in-core-section">Unify <code class="docutils literal notranslate"><span class="pre">hostname_callable</span></code> option in <code class="docutils literal notranslate"><span class="pre">core</span></code> section</a></li>
<li class="toctree-l5"><a class="reference internal" href="#custom-executors-is-loaded-using-full-import-path">Custom executors is loaded using full import path</a></li>
<li class="toctree-l5"><a class="reference internal" href="#use-customsqlainterface-instead-of-sqlainterface-for-custom-data-models">Use <code class="docutils literal notranslate"><span class="pre">CustomSQLAInterface</span></code> instead of <code class="docutils literal notranslate"><span class="pre">SQLAInterface</span></code> for custom data models.</a></li>
<li class="toctree-l5"><a class="reference internal" href="#drop-plugin-support-for-stat-name-handler">Drop plugin support for stat_name_handler</a></li>
<li class="toctree-l5"><a class="reference internal" href="#logging-configuration-has-been-moved-to-new-section">Logging configuration has been moved to new section</a></li>
<li class="toctree-l5"><a class="reference internal" href="#metrics-configuration-has-been-moved-to-new-section">Metrics configuration has been moved to new section</a></li>
<li class="toctree-l5"><a class="reference internal" href="#changes-to-elasticsearch-logging-provider">Changes to Elasticsearch logging provider</a></li>
<li class="toctree-l5"><a class="reference internal" href="#remove-gcp-service-account-keys-option-in-airflow-cfg-file">Remove gcp_service_account_keys option in airflow.cfg file</a></li>
<li class="toctree-l5"><a class="reference internal" href="#fernet-is-enabled-by-default">Fernet is enabled by default</a></li>
<li class="toctree-l5"><a class="reference internal" href="#changes-to-propagating-kubernetes-worker-annotations">Changes to propagating Kubernetes worker annotations</a></li>
<li class="toctree-l5"><a class="reference internal" href="#remove-run-duration">Remove run_duration</a></li>
<li class="toctree-l5"><a class="reference internal" href="#rename-pool-statsd-metrics">Rename pool statsd metrics</a></li>
<li class="toctree-l5"><a class="reference internal" href="#removal-of-mesos-executor">Removal of Mesos Executor</a></li>
<li class="toctree-l5"><a class="reference internal" href="#change-dag-loading-duration-metric-name">Change dag loading duration metric name</a></li>
<li class="toctree-l5"><a class="reference internal" href="#sentry-is-disabled-by-default">Sentry is disabled by default</a></li>
<li class="toctree-l5"><a class="reference internal" href="#simplified-gcstaskhandler-configuration">Simplified GCSTaskHandler configuration</a></li>
</ul>
</li>
<li class="toctree-l4"><a class="reference internal" href="#changes-to-the-core-operators-hooks">Changes to the core operators/hooks</a><ul>
<li class="toctree-l5"><a class="reference internal" href="#basesensoroperator-now-respects-the-trigger-rule-of-downstream-tasks">BaseSensorOperator now respects the trigger_rule of downstream tasks</a></li>
<li class="toctree-l5"><a class="reference internal" href="#baseoperator-uses-metaclass">BaseOperator uses metaclass</a></li>
<li class="toctree-l5"><a class="reference internal" href="#remove-sql-support-in-basehook">Remove SQL support in BaseHook</a></li>
<li class="toctree-l5"><a class="reference internal" href="#assigning-task-to-a-dag-using-bitwise-shift-bit-shift-operators-are-no-longer-supported">Assigning task to a DAG using bitwise shift (bit-shift) operators are no longer supported</a></li>
<li class="toctree-l5"><a class="reference internal" href="#removed-deprecated-import-mechanism">Removed deprecated import mechanism</a></li>
<li class="toctree-l5"><a class="reference internal" href="#changes-to-sensor-imports">Changes to sensor imports</a></li>
<li class="toctree-l5"><a class="reference internal" href="#skipped-tasks-can-satisfy-wait-for-downstream">Skipped tasks can satisfy wait_for_downstream</a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-utils-helpers-cross-downstream"><code class="docutils literal notranslate"><span class="pre">airflow.utils.helpers.cross_downstream</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-utils-helpers-chain"><code class="docutils literal notranslate"><span class="pre">airflow.utils.helpers.chain</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-operators-python-branchpythonoperator"><code class="docutils literal notranslate"><span class="pre">airflow.operators.python.BranchPythonOperator</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-sensors-sql-sensor-sqlsensor"><code class="docutils literal notranslate"><span class="pre">airflow.sensors.sql_sensor.SqlSensor</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-operators-trigger-dagrun-triggerdagrunoperator"><code class="docutils literal notranslate"><span class="pre">airflow.operators.trigger_dagrun.TriggerDagRunOperator</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-operators-python-pythonoperator"><code class="docutils literal notranslate"><span class="pre">airflow.operators.python.PythonOperator</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-sensors-filesystem-filesensor"><code class="docutils literal notranslate"><span class="pre">airflow.sensors.filesystem.FileSensor</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-operators-subdag-operator-subdagoperator"><code class="docutils literal notranslate"><span class="pre">airflow.operators.subdag_operator.SubDagOperator</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-providers-google-cloud-operators-datastore-clouddatastoreexportentitiesoperator"><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.datastore.CloudDatastoreExportEntitiesOperator</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-providers-google-cloud-operators-datastore-clouddatastoreimportentitiesoperator"><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.datastore.CloudDatastoreImportEntitiesOperator</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-providers-cncf-kubernetes-operators-kubernetes-pod-kubernetespodoperator"><code class="docutils literal notranslate"><span class="pre">airflow.providers.cncf.kubernetes.operators.kubernetes_pod.KubernetesPodOperator</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-providers-ssh-operators-ssh-sshoperator"><code class="docutils literal notranslate"><span class="pre">airflow.providers.ssh.operators.ssh.SSHOperator</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-providers-microsoft-winrm-operators-winrm-winrmoperator"><code class="docutils literal notranslate"><span class="pre">airflow.providers.microsoft.winrm.operators.winrm.WinRMOperator</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-operators-bash-bashoperator"><code class="docutils literal notranslate"><span class="pre">airflow.operators.bash.BashOperator</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-providers-docker-operators-docker-dockeroperator"><code class="docutils literal notranslate"><span class="pre">airflow.providers.docker.operators.docker.DockerOperator</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-providers-http-operators-http-simplehttpoperator"><code class="docutils literal notranslate"><span class="pre">airflow.providers.http.operators.http.SimpleHttpOperator</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-operators-latest-only-operator-latestonlyoperator"><code class="docutils literal notranslate"><span class="pre">airflow.operators.latest_only_operator.LatestOnlyOperator</span></code></a></li>
</ul>
</li>
<li class="toctree-l4"><a class="reference internal" href="#changes-to-the-core-python-api">Changes to the core Python API</a><ul>
<li class="toctree-l5"><a class="reference internal" href="#removed-sub-package-imports-from-airflow-init-py">Removed sub-package imports from <code class="docutils literal notranslate"><span class="pre">airflow/__init__.py</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#variables-removed-from-the-task-instance-context">Variables removed from the task instance context</a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-contrib-utils-weekday"><code class="docutils literal notranslate"><span class="pre">airflow.contrib.utils.Weekday</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-models-connection-connection"><code class="docutils literal notranslate"><span class="pre">airflow.models.connection.Connection</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-models-dag-dag-create-dagrun"><code class="docutils literal notranslate"><span class="pre">airflow.models.dag.DAG.create_dagrun</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-models-dagrun-dagrun"><code class="docutils literal notranslate"><span class="pre">airflow.models.dagrun.DagRun</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-utils-file-temporarydirectory"><code class="docutils literal notranslate"><span class="pre">airflow.utils.file.TemporaryDirectory</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-airflowmacroplugin"><code class="docutils literal notranslate"><span class="pre">airflow.AirflowMacroPlugin</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-settings-context-manager-dag"><code class="docutils literal notranslate"><span class="pre">airflow.settings.CONTEXT_MANAGER_DAG</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-utils-log-logging-mixin-redirect-stderr"><code class="docutils literal notranslate"><span class="pre">airflow.utils.log.logging_mixin.redirect_stderr</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-utils-log-logging-mixin-redirect-stdout"><code class="docutils literal notranslate"><span class="pre">airflow.utils.log.logging_mixin.redirect_stdout</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-models-baseoperator-baseoperator"><code class="docutils literal notranslate"><span class="pre">airflow.models.baseoperator.BaseOperator</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-models-dagbag-dagbag"><code class="docutils literal notranslate"><span class="pre">airflow.models.dagbag.DagBag</span></code></a></li>
</ul>
</li>
<li class="toctree-l4"><a class="reference internal" href="#changes-in-google-provider-package">Changes in <code class="docutils literal notranslate"><span class="pre">google</span></code> provider package</a><ul>
<li class="toctree-l5"><a class="reference internal" href="#direct-impersonation-added-to-operators-communicating-with-google-services">Direct impersonation added to operators communicating with Google services</a></li>
<li class="toctree-l5"><a class="reference internal" href="#normalize-gcp-conn-id-for-google-cloud">Normalize gcp_conn_id for Google Cloud</a></li>
<li class="toctree-l5"><a class="reference internal" href="#changes-to-import-paths-and-names-of-gcp-operators-and-hooks">Changes to import paths and names of GCP operators and hooks</a></li>
<li class="toctree-l5"><a class="reference internal" href="#unify-default-conn-id-for-google-cloud">Unify default conn_id for Google Cloud</a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-providers-google-cloud-hooks-dataflow-dataflowhook"><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.hooks.dataflow.DataflowHook</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-providers-google-cloud-operators-dataflow-dataflowcreatejavajoboperator"><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.dataflow.DataflowCreateJavaJobOperator</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-providers-google-cloud-operators-dataflow-dataflowtemplatedjobstartoperator"><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.dataflow.DataflowTemplatedJobStartOperator</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-providers-google-cloud-operators-dataflow-dataflowcreatepythonjoboperator"><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.dataflow.DataflowCreatePythonJobOperator</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-providers-google-cloud-sensors-gcs-gcsuploadsessioncompletesensor"><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.sensors.gcs.GCSUploadSessionCompleteSensor</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-providers-google-cloud-hooks-bigquery-bigquerybasecursor"><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.hooks.bigquery.BigQueryBaseCursor</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-providers-google-cloud-hooks-bigquery-bigqueryhook"><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.hooks.bigquery.BigQueryHook</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#id68"><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.hooks.bigquery.BigQueryBaseCursor</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-providers-google-cloud-operators-bigquery-bigquerycreateemptytableoperator"><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.bigquery.BigQueryCreateEmptyTableOperator</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-providers-google-cloud-operators-bigquery-bigquerycreateemptydatasetoperator"><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.bigquery.BigQueryCreateEmptyDatasetOperator</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#id69"><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.hooks.dataflow.DataflowHook</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-providers-google-cloud-hooks-mlengine-mlenginehook"><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.hooks.mlengine.MLEngineHook</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-providers-google-cloud-hooks-pubsub-pubsubhook"><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.hooks.pubsub.PubSubHook</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#id70"><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.hooks.pubsub.PubSubHook</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-providers-google-cloud-operators-pubsub-pubsubtopiccreateoperator"><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.pubsub.PubSubTopicCreateOperator</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-providers-google-cloud-operators-pubsub-pubsubsubscriptioncreateoperator"><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.pubsub.PubSubSubscriptionCreateOperator</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-providers-google-cloud-operators-pubsub-pubsubtopicdeleteoperator"><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.pubsub.PubSubTopicDeleteOperator</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-providers-google-cloud-operators-pubsub-pubsubsubscriptiondeleteoperator"><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.pubsub.PubSubSubscriptionDeleteOperator</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-providers-google-cloud-operators-pubsub-pubsubpublishoperator"><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.pubsub.PubSubPublishOperator</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-providers-google-cloud-sensors-pubsub-pubsubpullsensor"><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.sensors.pubsub.PubSubPullSensor</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-providers-google-cloud-operators-kubernetes-engine-gkestartpodoperator"><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.kubernetes_engine.GKEStartPodOperator</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-providers-google-cloud-hooks-gcs-gcshook"><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.hooks.gcs.GCSHook</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-providers-google-cloud-operators-dataproc-dataprocsubmitpigjoboperator"><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.dataproc.DataprocSubmitPigJobOperator</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-providers-google-cloud-operators-dataproc-dataprocsubmithivejoboperator"><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.dataproc.DataprocSubmitHiveJobOperator</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-providers-google-cloud-operators-dataproc-dataprocsubmitsparksqljoboperator"><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.dataproc.DataprocSubmitSparkSqlJobOperator</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-providers-google-cloud-operators-dataproc-dataprocsubmitsparkjoboperator"><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.dataproc.DataprocSubmitSparkJobOperator</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-providers-google-cloud-operators-dataproc-dataprocsubmithadoopjoboperator"><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.dataproc.DataprocSubmitHadoopJobOperator</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-providers-google-cloud-operators-dataproc-dataprocsubmitpysparkjoboperator"><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.dataproc.DataprocSubmitPySparkJobOperator</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-providers-google-cloud-operators-cloud-storage-transfer-service-clouddatatransferservicecreatejoboperator"><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.cloud_storage_transfer_service.CloudDataTransferServiceCreateJobOperator</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-providers-google-cloud-hooks-cloud-storage-transfer-service-clouddatatransferservicehook"><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.hooks.cloud_storage_transfer_service.CloudDataTransferServiceHook</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#id71"><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.hooks.bigquery.BigQueryHook</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-providers-google-cloud-hooks-cloud-build-cloudbuildhook"><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.hooks.cloud_build.CloudBuildHook</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-providers-google-cloud-operators-cloud-build-cloudbuildcreatebuildoperator"><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.cloud_build.CloudBuildCreateBuildOperator</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-providers-google-cloud-hooks-dataflow-dataflowhook-start-python-dataflow"><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.hooks.dataflow.DataflowHook.start_python_dataflow</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#id72"><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.hooks.dataflow.DataflowHook.start_python_dataflow</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#id73"><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.dataflow.DataflowCreatePythonJobOperator</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-providers-google-common-hooks-base-google-googlebasehook"><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.common.hooks.base_google.GoogleBaseHook</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-providers-google-cloud-operators-dataproc-dataproccreateclusteroperator"><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.dataproc.DataprocCreateClusterOperator</span></code></a></li>
</ul>
</li>
<li class="toctree-l4"><a class="reference internal" href="#generating-cluster-config">Generating Cluster Config</a><ul>
<li class="toctree-l5"><a class="reference internal" href="#airflow-providers-google-cloud-operators-bigquery-bigquerygetdatasettablesoperator"><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.bigquery.BigQueryGetDatasetTablesOperator</span></code></a></li>
</ul>
</li>
<li class="toctree-l4"><a class="reference internal" href="#changes-in-amazon-provider-package">Changes in <code class="docutils literal notranslate"><span class="pre">amazon</span></code> provider package</a><ul>
<li class="toctree-l5"><a class="reference internal" href="#migration-of-aws-components">Migration of AWS components</a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-providers-amazon-aws-hooks-emr-emrhook"><code class="docutils literal notranslate"><span class="pre">airflow.providers.amazon.aws.hooks.emr.EmrHook</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-providers-amazon-aws-operators-emr-add-steps-emraddstepsoperator"><code class="docutils literal notranslate"><span class="pre">airflow.providers.amazon.aws.operators.emr_add_steps.EmrAddStepsOperator</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-providers-amazon-aws-operators-emr-create-job-flow-emrcreatejobflowoperator"><code class="docutils literal notranslate"><span class="pre">airflow.providers.amazon.aws.operators.emr_create_job_flow.EmrCreateJobFlowOperator</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-providers-amazon-aws-operators-emr-terminate-job-flow-emrterminatejobflowoperator"><code class="docutils literal notranslate"><span class="pre">airflow.providers.amazon.aws.operators.emr_terminate_job_flow.EmrTerminateJobFlowOperator</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-providers-amazon-aws-operators-batch-awsbatchoperator"><code class="docutils literal notranslate"><span class="pre">airflow.providers.amazon.aws.operators.batch.AwsBatchOperator</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-providers-amazon-aws-sensors-athena-athenasensor"><code class="docutils literal notranslate"><span class="pre">airflow.providers.amazon.aws.sensors.athena.AthenaSensor</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-providers-amazon-aws-hooks-s3-s3hook"><code class="docutils literal notranslate"><span class="pre">airflow.providers.amazon.aws.hooks.s3.S3Hook</span></code></a></li>
</ul>
</li>
<li class="toctree-l4"><a class="reference internal" href="#changes-in-other-provider-packages">Changes in other provider packages</a><ul>
<li class="toctree-l5"><a class="reference internal" href="#changed-return-type-of-list-prefixes-and-list-keys-methods-in-s3hook">Changed return type of <code class="docutils literal notranslate"><span class="pre">list_prefixes</span></code> and <code class="docutils literal notranslate"><span class="pre">list_keys</span></code> methods in <code class="docutils literal notranslate"><span class="pre">S3Hook</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#removed-hipchat-integration">Removed HipChat integration</a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-providers-salesforce-hooks-salesforce-salesforcehook"><code class="docutils literal notranslate"><span class="pre">airflow.providers.salesforce.hooks.salesforce.SalesforceHook</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-providers-apache-pinot-hooks-pinot-pinotadminhook-create-segment"><code class="docutils literal notranslate"><span class="pre">airflow.providers.apache.pinot.hooks.pinot.PinotAdminHook.create_segment</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-providers-apache-hive-hooks-hive-hivemetastorehook-get-partitions"><code class="docutils literal notranslate"><span class="pre">airflow.providers.apache.hive.hooks.hive.HiveMetastoreHook.get_partitions</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-providers-ftp-hooks-ftp-ftphook-list-directory"><code class="docutils literal notranslate"><span class="pre">airflow.providers.ftp.hooks.ftp.FTPHook.list_directory</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-providers-postgres-hooks-postgres-postgreshook-copy-expert"><code class="docutils literal notranslate"><span class="pre">airflow.providers.postgres.hooks.postgres.PostgresHook.copy_expert</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-providers-opsgenie-operators-opsgenie-alert-opsgeniealertoperator"><code class="docutils literal notranslate"><span class="pre">airflow.providers.opsgenie.operators.opsgenie_alert.OpsgenieAlertOperator</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-providers-imap-hooks-imap-imaphook"><code class="docutils literal notranslate"><span class="pre">airflow.providers.imap.hooks.imap.ImapHook</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-providers-imap-sensors-imap-attachment-imapattachmentsensor"><code class="docutils literal notranslate"><span class="pre">airflow.providers.imap.sensors.imap_attachment.ImapAttachmentSensor</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-providers-http-hooks-http-httphook"><code class="docutils literal notranslate"><span class="pre">airflow.providers.http.hooks.http.HttpHook</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-providers-cloudant-hooks-cloudant-cloudanthook"><code class="docutils literal notranslate"><span class="pre">airflow.providers.cloudant.hooks.cloudant.CloudantHook</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-providers-snowflake"><code class="docutils literal notranslate"><span class="pre">airflow.providers.snowflake</span></code></a></li>
</ul>
</li>
<li class="toctree-l4"><a class="reference internal" href="#other-changes">Other changes</a><ul>
<li class="toctree-l5"><a class="reference internal" href="#standardized-extra-requirements">Standardized “extra” requirements</a></li>
<li class="toctree-l5"><a class="reference internal" href="#simplify-the-response-payload-of-endpoints-dag-stats-and-task-stats">Simplify the response payload of endpoints /dag_stats and /task_stats</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#airflow-1-10-15-2021-03-17">Airflow 1.10.15 (2021-03-17)</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id75">Significant Changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id76">Bug Fixes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id77">Improvements</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id78">Doc only changes</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#airflow-1-10-14-2020-12-10">Airflow 1.10.14 (2020-12-10)</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id79">Significant Changes</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#scheduler-max-threads-config-has-been-renamed-to-scheduler-parsing-processes"><code class="docutils literal notranslate"><span class="pre">[scheduler]</span> <span class="pre">max_threads</span></code> config has been renamed to <code class="docutils literal notranslate"><span class="pre">[scheduler]</span> <span class="pre">parsing_processes</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="#airflow-cli-changes-in-line-with-2-0">Airflow CLI changes in line with 2.0</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="#id80">Bug Fixes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id81">Improvements</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id82">Doc only changes</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#airflow-1-10-13-2020-11-25">Airflow 1.10.13 (2020-11-25)</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id83">Significant Changes</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#timesensor-is-now-timezone-aware">TimeSensor is now timezone aware</a></li>
<li class="toctree-l4"><a class="reference internal" href="#removed-kerberos-support-for-hdfs-hook">Removed Kerberos support for HDFS hook</a></li>
<li class="toctree-l4"><a class="reference internal" href="#unify-user-session-lifetime-configuration">Unify user session lifetime configuration</a></li>
<li class="toctree-l4"><a class="reference internal" href="#adding-operators-hooks-and-sensors-via-airflow-plugins-is-deprecated">Adding Operators, Hooks and Sensors via Airflow Plugins is deprecated</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="#id84">New Features</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id85">Bug Fixes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id86">Improvements</a></li>
<li class="toctree-l3"><a class="reference internal" href="#deprecations">Deprecations</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id87">Doc only changes</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#airflow-1-10-12-2020-08-25">Airflow 1.10.12 (2020-08-25)</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id88">Significant Changes</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#clearing-tasks-skipped-by-skipmixin-will-skip-them">Clearing tasks skipped by SkipMixin will skip them</a></li>
<li class="toctree-l4"><a class="reference internal" href="#the-pod-mutation-hook-function-will-now-accept-a-kubernetes-v1pod-object">The pod_mutation_hook function will now accept a kubernetes V1Pod object</a></li>
<li class="toctree-l4"><a class="reference internal" href="#pod-template-file-option-now-available-in-the-kubernetespodoperator">pod_template_file option now available in the KubernetesPodOperator</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="#id89">New Features</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id90">Bug Fixes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id91">Improvements</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id92">Doc only changes</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#airflow-1-10-11-2020-07-10">Airflow 1.10.11 (2020-07-10)</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id93">Significant Changes</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#use-null-as-default-value-for-dag-description">Use NULL as default value for dag.description</a></li>
<li class="toctree-l4"><a class="reference internal" href="#restrict-editing-dagrun-state-in-the-old-ui-flask-admin-based-ui">Restrict editing DagRun State in the old UI (Flask-admin based UI)</a></li>
<li class="toctree-l4"><a class="reference internal" href="#experimental-api-will-deny-all-request-by-default">Experimental API will deny all request by default.</a></li>
<li class="toctree-l4"><a class="reference internal" href="#xcom-values-can-no-longer-be-added-or-changed-from-the-webserver">XCom Values can no longer be added or changed from the Webserver</a></li>
<li class="toctree-l4"><a class="reference internal" href="#default-for-run-as-user-configured-has-been-changed-to-50000-from-0">Default for <code class="docutils literal notranslate"><span class="pre">run_as_user</span></code> configured has been changed to 50000 from 0</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="#id94">New Features</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id95">Bug Fixes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id96">Improvements</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id97">Doc only changes</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#airflow-1-10-10-2020-04-09">Airflow 1.10.10 (2020-04-09)</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id98">Significant Changes</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#setting-empty-string-to-a-airflow-variable-will-return-an-empty-string">Setting Empty string to a Airflow Variable will return an empty string</a></li>
<li class="toctree-l4"><a class="reference internal" href="#make-behavior-of-none-failed-trigger-rule-consistent-with-documentation">Make behavior of <code class="docutils literal notranslate"><span class="pre">none_failed</span></code> trigger rule consistent with documentation</a></li>
<li class="toctree-l4"><a class="reference internal" href="#add-new-trigger-rule-none-failed-or-skipped">Add new trigger rule <code class="docutils literal notranslate"><span class="pre">none_failed_or_skipped</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="#success-callback-will-be-called-when-a-task-in-marked-as-success-from-ui">Success Callback will be called when a task in marked as success from UI</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="#id99">New Features</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id100">Bug Fixes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id101">Improvements</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id102">Misc/Internal</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id103">Doc only changes</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#airflow-1-10-9-2020-02-07">Airflow 1.10.9 (2020-02-07)</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id104">Significant Changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id105">Bug Fixes</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#airflow-1-10-8-2020-02-07">Airflow 1.10.8 (2020-02-07)</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id106">Significant Changes</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#failure-callback-will-be-called-when-task-is-marked-failed">Failure callback will be called when task is marked failed</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="#id107">New Features</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id108">Improvements</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id109">Bug Fixes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id110">Misc/Internal</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id111">Doc only changes</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#airflow-1-10-7-2019-12-24">Airflow 1.10.7 (2019-12-24)</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id112">Significant Changes</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#changes-in-experimental-api-execution-date-microseconds-replacement">Changes in experimental API execution_date microseconds replacement</a></li>
<li class="toctree-l4"><a class="reference internal" href="#infinite-pool-size-and-pool-size-query-optimization">Infinite pool size and pool size query optimization</a></li>
<li class="toctree-l4"><a class="reference internal" href="#viewer-won-t-have-edit-permissions-on-dag-view">Viewer won’t have edit permissions on DAG view.</a></li>
<li class="toctree-l4"><a class="reference internal" href="#google-cloud-storage-hook">Google Cloud Storage Hook</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="#id113">New Features</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id114">Improvements</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id115">Bug Fixes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id116">Misc/Internal</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id117">Doc only changes</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#airflow-1-10-6-2019-10-28">Airflow 1.10.6 (2019-10-28)</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id118">Significant Changes</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#baseoperator-render-template-function-signature-changed">BaseOperator::render_template function signature changed</a></li>
<li class="toctree-l4"><a class="reference internal" href="#changes-to-aws-default-connection-s-default-region">Changes to <code class="docutils literal notranslate"><span class="pre">aws_default</span></code> Connection’s default region</a></li>
<li class="toctree-l4"><a class="reference internal" href="#some-dag-processing-metrics-have-been-renamed">Some DAG Processing metrics have been renamed</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="#id119">New Features</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id120">Improvements</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id121">Bug Fixes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id122">Doc-only changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id123">Misc/Internal</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#airflow-1-10-5-2019-09-04">Airflow 1.10.5 (2019-09-04)</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id124">Significant Changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id125">New Features</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id126">Improvements</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id127">Bug fixes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id128">Misc/Internal</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id129">Doc-only changes</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#airflow-1-10-4-2019-08-06">Airflow 1.10.4 (2019-08-06)</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id130">Significant Changes</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#export-mysql-timestamps-as-utc">Export MySQL timestamps as UTC</a></li>
<li class="toctree-l4"><a class="reference internal" href="#changes-to-datastorehook">Changes to DatastoreHook</a></li>
<li class="toctree-l4"><a class="reference internal" href="#changes-to-googlecloudstoragehook">Changes to GoogleCloudStorageHook</a></li>
<li class="toctree-l4"><a class="reference internal" href="#changes-in-writing-logs-to-elasticsearch">Changes in writing Logs to Elasticsearch</a></li>
<li class="toctree-l4"><a class="reference internal" href="#removal-of-non-pooled-task-slot-count-and-non-pooled-backfill-task-slot-count">Removal of <code class="docutils literal notranslate"><span class="pre">non_pooled_task_slot_count</span></code> and <code class="docutils literal notranslate"><span class="pre">non_pooled_backfill_task_slot_count</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="#pool-config-option-in-celery-section-to-support-different-celery-pool-implementation"><code class="docutils literal notranslate"><span class="pre">pool</span></code> config option in Celery section to support different Celery pool implementation</a></li>
<li class="toctree-l4"><a class="reference internal" href="#change-to-method-signature-in-baseoperator-and-dag-classes">Change to method signature in <code class="docutils literal notranslate"><span class="pre">BaseOperator</span></code> and <code class="docutils literal notranslate"><span class="pre">DAG</span></code> classes</a><ul>
<li class="toctree-l5"><a class="reference internal" href="#for-baseoperator">For <code class="docutils literal notranslate"><span class="pre">BaseOperator</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#for-dag">For <code class="docutils literal notranslate"><span class="pre">DAG</span></code></a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="#id132">New Features</a></li>
<li class="toctree-l3"><a class="reference internal" href="#improvement">Improvement</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id133">Bug fixes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id134">Misc/Internal</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id135">Doc-only changes</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#airflow-1-10-3-2019-04-09">Airflow 1.10.3 (2019-04-09)</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id136">Significant Changes</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#new-dag-discovery-safe-mode-config-option">New <code class="docutils literal notranslate"><span class="pre">dag_discovery_safe_mode</span></code> config option</a></li>
<li class="toctree-l4"><a class="reference internal" href="#redispy-dependency-updated-to-v3-series">RedisPy dependency updated to v3 series</a></li>
<li class="toctree-l4"><a class="reference internal" href="#slugify-uses-text-unidecode-or-airflow-gpl-unidecode-no-longer-required">SLUGIFY_USES_TEXT_UNIDECODE or AIRFLOW_GPL_UNIDECODE no longer required</a></li>
<li class="toctree-l4"><a class="reference internal" href="#new-sync-parallelism-config-option-in-celery-section">New <code class="docutils literal notranslate"><span class="pre">sync_parallelism</span></code> config option in <code class="docutils literal notranslate"><span class="pre">[celery]</span></code> section</a></li>
<li class="toctree-l4"><a class="reference internal" href="#rename-of-bashtaskrunner-to-standardtaskrunner">Rename of BashTaskRunner to StandardTaskRunner</a></li>
<li class="toctree-l4"><a class="reference internal" href="#modification-to-config-file-discovery">Modification to config file discovery</a></li>
<li class="toctree-l4"><a class="reference internal" href="#changes-in-google-cloud-related-operators">Changes in Google Cloud related operators</a></li>
<li class="toctree-l4"><a class="reference internal" href="#changes-in-google-cloud-related-hooks">Changes in Google Cloud related hooks</a></li>
<li class="toctree-l4"><a class="reference internal" href="#changed-behaviour-of-using-default-value-when-accessing-variables">Changed behaviour of using default value when accessing variables</a></li>
<li class="toctree-l4"><a class="reference internal" href="#removal-of-airflow-home-config-setting">Removal of <code class="docutils literal notranslate"><span class="pre">airflow_home</span></code> config setting</a></li>
<li class="toctree-l4"><a class="reference internal" href="#change-of-two-methods-signatures-in-gcptransferservicehook">Change of two methods signatures in <code class="docutils literal notranslate"><span class="pre">GCPTransferServiceHook</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="#moved-two-classes-to-different-modules">Moved two classes to different modules</a></li>
<li class="toctree-l4"><a class="reference internal" href="#fixed-typo-in-driver-class-path-in-sparksubmithook">Fixed typo in –driver-class-path in SparkSubmitHook</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="#new-feature">New Feature</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id137">Improvement</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id138">Bug fixes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id139">Misc/Internal</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id140">Doc-only changes</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#airflow-1-10-2-2019-01-19">Airflow 1.10.2 (2019-01-19)</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id141">Significant Changes</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#new-dag-processor-manager-log-location-config-option">New <code class="docutils literal notranslate"><span class="pre">dag_processor_manager_log_location</span></code> config option</a></li>
<li class="toctree-l4"><a class="reference internal" href="#dag-level-access-control-for-new-rbac-ui">DAG level Access Control for new RBAC UI</a></li>
<li class="toctree-l4"><a class="reference internal" href="#modification-to-ts-nodash-macro">Modification to <code class="docutils literal notranslate"><span class="pre">ts_nodash</span></code> macro</a></li>
<li class="toctree-l4"><a class="reference internal" href="#semantics-of-next-ds-prev-ds-changed-for-manually-triggered-runs">Semantics of next_ds/prev_ds changed for manually triggered runs</a></li>
<li class="toctree-l4"><a class="reference internal" href="#user-model-changes">User model changes</a></li>
<li class="toctree-l4"><a class="reference internal" href="#custom-auth-backends-interface-change">Custom auth backends interface change</a></li>
<li class="toctree-l4"><a class="reference internal" href="#support-autodetected-schemas-to-googlecloudstoragetobigqueryoperator">Support autodetected schemas to GoogleCloudStorageToBigQueryOperator</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="#id142">New features</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id143">Improvements</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id144">Bug fixes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id145">Doc-only changes</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#airflow-1-10-1-2018-11-13">Airflow 1.10.1 (2018-11-13)</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id146">Significant Changes</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#min-file-parsing-loop-time-config-option-temporarily-disabled">min_file_parsing_loop_time config option temporarily disabled</a></li>
<li class="toctree-l4"><a class="reference internal" href="#statsd-metrics">StatsD Metrics</a></li>
<li class="toctree-l4"><a class="reference internal" href="#emrhook-now-passes-all-of-connection-s-extra-to-createjobflow-api">EMRHook now passes all of connection’s extra to CreateJobFlow API</a></li>
<li class="toctree-l4"><a class="reference internal" href="#ldap-auth-backend-now-requires-tls">LDAP Auth Backend now requires TLS</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="#id147">New features</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id148">Improvements</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id149">Doc-only changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id150">Bug fixes</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#airflow-1-10-0-2018-08-03">Airflow 1.10.0 (2018-08-03)</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id151">Significant Changes</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#replace-dataprochook-await-calls-to-dataprochook-wait">Replace DataProcHook.await calls to DataProcHook.wait</a></li>
<li class="toctree-l4"><a class="reference internal" href="#setting-utf-8-as-default-mime-charset-in-email-utils">Setting UTF-8 as default mime_charset in email utils</a></li>
<li class="toctree-l4"><a class="reference internal" href="#add-a-configuration-variable-default-dag-run-display-number-to-control-numbers-of-dag-run-for-display">Add a configuration variable(default_dag_run_display_number) to control numbers of dag run for display</a></li>
<li class="toctree-l4"><a class="reference internal" href="#default-executor-for-subdagoperator-is-changed-to-sequentialexecutor">Default executor for SubDagOperator is changed to SequentialExecutor</a></li>
<li class="toctree-l4"><a class="reference internal" href="#new-webserver-ui-with-role-based-access-control">New Webserver UI with Role-Based Access Control</a><ul>
<li class="toctree-l5"><a class="reference internal" href="#setting-up-authentication">Setting up Authentication</a></li>
<li class="toctree-l5"><a class="reference internal" href="#creating-an-admin-account">Creating an Admin Account</a></li>
<li class="toctree-l5"><a class="reference internal" href="#using-your-new-ui">Using your new UI</a></li>
<li class="toctree-l5"><a class="reference internal" href="#breaking-changes">Breaking changes</a></li>
</ul>
</li>
<li class="toctree-l4"><a class="reference internal" href="#airflow-contrib-sensors-hdfs-sensors-renamed-to-airflow-contrib-sensors-hdfs-sensor">airflow.contrib.sensors.hdfs_sensors renamed to airflow.contrib.sensors.hdfs_sensor</a></li>
<li class="toctree-l4"><a class="reference internal" href="#mysql-setting-required">MySQL setting required</a></li>
<li class="toctree-l4"><a class="reference internal" href="#celery-config">Celery config</a></li>
<li class="toctree-l4"><a class="reference internal" href="#gcp-dataflow-operators">GCP Dataflow Operators</a></li>
<li class="toctree-l4"><a class="reference internal" href="#bigquery-hooks-and-operator">BigQuery Hooks and Operator</a></li>
<li class="toctree-l4"><a class="reference internal" href="#redshift-to-s3-operator">Redshift to S3 Operator</a></li>
<li class="toctree-l4"><a class="reference internal" href="#google-cloud-connection-string">Google cloud connection string</a></li>
<li class="toctree-l4"><a class="reference internal" href="#logging-configuration">Logging Configuration</a><ul>
<li class="toctree-l5"><a class="reference internal" href="#change-of-per-task-log-path">Change of per-task log path</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="#changelog">Changelog</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#airflow-1-9-0-2018-01-02">Airflow 1.9.0 (2018-01-02)</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id152">Significant Changes</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#ssh-hook-updates-along-with-new-ssh-operator-sftp-operator">SSH Hook updates, along with new SSH Operator &amp; SFTP Operator</a></li>
<li class="toctree-l4"><a class="reference internal" href="#s3hook-switched-to-use-boto3">S3Hook switched to use Boto3</a></li>
<li class="toctree-l4"><a class="reference internal" href="#logging-update">Logging update</a><ul>
<li class="toctree-l5"><a class="reference internal" href="#a-quick-recap-about-logging">A quick recap about logging</a></li>
<li class="toctree-l5"><a class="reference internal" href="#changes-in-airflow-logging">Changes in Airflow Logging</a></li>
<li class="toctree-l5"><a class="reference internal" href="#template-path-of-the-file-task-handler">Template path of the file_task_handler</a></li>
<li class="toctree-l5"><a class="reference internal" href="#i-m-using-s3log-or-gcslogs-what-do-i-do">I’m using S3Log or GCSLogs, what do I do!?</a></li>
</ul>
</li>
<li class="toctree-l4"><a class="reference internal" href="#id153">New Features</a><ul>
<li class="toctree-l5"><a class="reference internal" href="#dask-executor">Dask Executor</a></li>
</ul>
</li>
<li class="toctree-l4"><a class="reference internal" href="#deprecated-features">Deprecated Features</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="#id154">Changelog</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#airflow-1-8-2-2017-09-04">Airflow 1.8.2 (2017-09-04)</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id155">Significant Changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id156">Changelog</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#airflow-1-8-1-2017-05-09">Airflow 1.8.1 (2017-05-09)</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id157">Significant Changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id158">Changelog</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#airflow-1-8-0-2017-03-12">Airflow 1.8.0 (2017-03-12)</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id159">Significant Changes</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#database">Database</a></li>
<li class="toctree-l4"><a class="reference internal" href="#upgrade-systemd-unit-files">Upgrade systemd unit files</a></li>
<li class="toctree-l4"><a class="reference internal" href="#tasks-not-starting-although-dependencies-are-met-due-to-stricter-pool-checking">Tasks not starting although dependencies are met due to stricter pool checking</a></li>
<li class="toctree-l4"><a class="reference internal" href="#less-forgiving-scheduler-on-dynamic-start-date">Less forgiving scheduler on dynamic start_date</a></li>
<li class="toctree-l4"><a class="reference internal" href="#new-and-updated-scheduler-options">New and updated scheduler options</a><ul>
<li class="toctree-l5"><a class="reference internal" href="#child-process-log-directory">child_process_log_directory</a></li>
<li class="toctree-l5"><a class="reference internal" href="#run-duration">run_duration</a></li>
<li class="toctree-l5"><a class="reference internal" href="#num-runs">num_runs</a></li>
<li class="toctree-l5"><a class="reference internal" href="#min-file-process-interval">min_file_process_interval</a></li>
<li class="toctree-l5"><a class="reference internal" href="#min-file-parsing-loop-time">min_file_parsing_loop_time</a></li>
<li class="toctree-l5"><a class="reference internal" href="#dag-dir-list-interval">dag_dir_list_interval</a></li>
<li class="toctree-l5"><a class="reference internal" href="#catchup-by-default">catchup_by_default</a></li>
</ul>
</li>
<li class="toctree-l4"><a class="reference internal" href="#faulty-dags-do-not-show-an-error-in-the-web-ui">Faulty DAGs do not show an error in the Web UI</a></li>
<li class="toctree-l4"><a class="reference internal" href="#new-dags-are-paused-by-default">New DAGs are paused by default</a></li>
<li class="toctree-l4"><a class="reference internal" href="#airflow-context-variable-are-passed-to-hive-config-if-conf-is-specified">Airflow Context variable are passed to Hive config if conf is specified</a></li>
<li class="toctree-l4"><a class="reference internal" href="#google-cloud-operator-and-hook-alignment">Google Cloud Operator and Hook alignment</a></li>
<li class="toctree-l4"><a class="reference internal" href="#id160">Deprecated Features</a></li>
<li class="toctree-l4"><a class="reference internal" href="#known-issues">Known Issues</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="#id161">Changelog</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#airflow-1-7-1-2-2016-05-20">Airflow 1.7.1.2 (2016-05-20)</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id162">Significant Changes</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#changes-to-configuration">Changes to Configuration</a><ul>
<li class="toctree-l5"><a class="reference internal" href="#email-configuration-change">Email configuration change</a></li>
<li class="toctree-l5"><a class="reference internal" href="#s3-configuration-change">S3 configuration change</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="#id163">Changelog</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#airflow-1-7-1-2016-05-19">Airflow 1.7.1 (2016-05-19)</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="best-practices.html">Best Practices</a></li>
<li class="toctree-l1"><a class="reference internal" href="production-deployment.html">Production Deployment</a></li>
<li class="toctree-l1"><a class="reference internal" href="faq.html">FAQ</a></li>
<li class="toctree-l1"><a class="reference internal" href="privacy_notice.html">Privacy Notice</a></li>
</ul>
<p class="caption" role="heading"><span class="caption-text">References</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="operators-and-hooks-ref.html">Operators and hooks</a></li>
<li class="toctree-l1"><a class="reference internal" href="cli-and-env-variables-ref.html">CLI</a></li>
<li class="toctree-l1"><a class="reference internal" href="templates-ref.html">Templates</a></li>
<li class="toctree-l1"><a class="reference internal" href="python-api-ref.html">Python API</a></li>
<li class="toctree-l1"><a class="reference internal" href="stable-rest-api-ref.html">Stable REST API</a></li>
<li class="toctree-l1"><a class="reference internal" href="deprecated-rest-api-ref.html">Deprecated REST API</a></li>
<li class="toctree-l1"><a class="reference internal" href="configurations-ref.html">Configurations</a></li>
<li class="toctree-l1"><a class="reference internal" href="extra-packages-ref.html">Extra packages</a></li>
<li class="toctree-l1"><a class="reference internal" href="migrations-ref.html">Database Migrations</a></li>
</ul>
</div>
<style type="text/css">
.toctree {
}
.toctree li {
list-style: none;
}
.toctree .caption {
font-family: Roboto;
font-size: 18px;
font-weight: bold;
font-stretch: normal;
font-style: normal;
line-height: 1.33;
letter-spacing: normal;
color: #51504f;
padding-bottom: 13px;
text-transform: uppercase;
margin-bottom: 0;
}
.toctree .current > a:not([href="#"]) {
color: #017cee;
}
.toctree > ul {
padding-left: 0;
}
.toctree ul {
padding-left: 15px;
display: none;
}
.toctree > ul,
.toctree li.current > ul {
display: block;
}
.toctree a .toctree-expand {
display: inline-block;
position: relative;
height: 1em;
}
.toctree a .toctree-expand:before {
position: absolute;
top: 6px;
left: -12px;
content: '►';
font-size: 7px;
}
.toctree .current > a > .toctree-expand:before {
content: '▼';
}
.toctree .current {
color: #017cee;
}
.toctree li {
font-family: Roboto;
font-size: 16px;
font-weight: normal;
font-stretch: normal;
font-style: normal;
line-height: 1.63;
letter-spacing: normal;
color: #707070;
}
</style>
</div>
</div>
</div>
</div>
<div class="d-flex">
<div class="td-sidebar desktop-only d-print-none">
<div id="docs-version-selector" class="docs-version-selector sidebar__version-selector">
<a class="dropdown-toggle" href="#" id="versionDropdown" role="button" data-toggle="dropdown" aria-haspopup="true"
aria-expanded="false">
<span class="bodytext__medium--greyish-brown">Version: </span><span class="version">2.3.3</span>
</a>
<div class="dropdown-menu" aria-labelledby="navbarDropdownMenuLink">
</div>
<script type="application/x-template" id="version-item-template">
<a class="dropdown-item"></a>
</script>
</div>
<div class="searchb-box">
<form class="search-form" action="search.html" method="get">
<input class="search-form__input" type="text" name="q" placeholder="Search docs" size="16">
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
<button class="search-form__button" type="submit">
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20">
<g id="Group_1579" data-name="Group 1579" transform="translate(-41.001 -41)">
<path id="Path_169" d="M71.415 64.687a7.215 7.215 0 1 0-6.729 6.728 7.222 7.222 0 0 0 6.729-6.728z" fill="none" data-name="Path 169" transform="translate(-14.277 -14.276)"></path>
<path id="Path_170" d="M60.863 59.8l-6.093-6.09a7.78 7.78 0 1 0-1.06 1.06l6.09 6.093a.468.468 0 0 0 .662 0l.4-.4a.468.468 0 0 0 .001-.663zM42.512 49.183a6.274 6.274 0 1 1 5.851 5.85 6.28 6.28 0 0 1-5.851-5.85z" fill="#51504f" data-name="Path 170"></path>
</g>
</svg>
</button>
</form>
</div>
<style>
.searchb-box {
margin-bottom: 26px;
}
.searchb-box .search-form {
width: 100%;
margin-top: 20px;
}
</style>
<div class="toctree" role="navigation" aria-label="main navigation">
<p class="caption" role="heading"><span class="caption-text">Content</span></p>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="index.html">Home</a></li>
<li class="toctree-l1"><a class="reference internal" href="project.html">Project</a></li>
<li class="toctree-l1"><a class="reference internal" href="license.html">License</a></li>
<li class="toctree-l1"><a class="reference internal" href="start/index.html">Quick Start</a></li>
<li class="toctree-l1"><a class="reference internal" href="installation/index.html">Installation</a></li>
<li class="toctree-l1"><a class="reference internal" href="upgrading-from-1-10/index.html">Upgrading from 1.10 to 2</a></li>
<li class="toctree-l1"><a class="reference internal" href="tutorial.html">Tutorial</a></li>
<li class="toctree-l1"><a class="reference internal" href="tutorial_taskflow_api.html">Tutorial on the TaskFlow API</a></li>
<li class="toctree-l1"><a class="reference internal" href="howto/index.html">How-to Guides</a></li>
<li class="toctree-l1"><a class="reference internal" href="ui.html">UI / Screenshots</a></li>
<li class="toctree-l1"><a class="reference internal" href="concepts/index.html">Concepts</a></li>
<li class="toctree-l1"><a class="reference internal" href="executor/index.html">Executor</a></li>
<li class="toctree-l1"><a class="reference internal" href="dag-run.html">DAG Runs</a></li>
<li class="toctree-l1"><a class="reference internal" href="plugins.html">Plugins</a></li>
<li class="toctree-l1"><a class="reference internal" href="security/index.html">Security</a></li>
<li class="toctree-l1"><a class="reference internal" href="logging-monitoring/index.html">Logging &amp; Monitoring</a></li>
<li class="toctree-l1"><a class="reference internal" href="timezone.html">Time Zones</a></li>
<li class="toctree-l1"><a class="reference internal" href="usage-cli.html">Using the CLI</a></li>
<li class="toctree-l1"><a class="reference internal" href="integration.html">Integration</a></li>
<li class="toctree-l1"><a class="reference internal" href="kubernetes.html">Kubernetes</a></li>
<li class="toctree-l1"><a class="reference internal" href="lineage.html">Lineage</a></li>
<li class="toctree-l1"><a class="reference internal" href="listeners.html">Listeners</a></li>
<li class="toctree-l1"><a class="reference internal" href="dag-serialization.html">DAG Serialization</a></li>
<li class="toctree-l1"><a class="reference internal" href="modules_management.html">Modules Management</a></li>
<li class="toctree-l1"><a class="reference internal" href="release-process.html">Release Policies</a></li>
<li class="toctree-l1 current"><a class="current reference internal" href="#">Release Notes</a><ul>
<li class="toctree-l2"><a class="reference internal" href="#airflow-2-3-3-2022-07-05">Airflow 2.3.3 (2022-07-05)</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#significant-changes">Significant Changes</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#we-ve-upgraded-flask-app-builder-to-a-major-version-4-24399">We’ve upgraded Flask App Builder to a major version 4.* (#24399)</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="#bug-fixes">Bug Fixes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#doc-only-changes">Doc only changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#misc-internal">Misc/Internal</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#airflow-2-3-2-2022-06-04">Airflow 2.3.2 (2022-06-04)</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id1">Bug Fixes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id2">Doc only changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id3">Misc/Internal</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#airflow-2-3-1-2022-05-25">Airflow 2.3.1 (2022-05-25)</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id4">Significant Changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id5">Bug Fixes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id6">Doc only changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id7">Misc/Internal</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#airflow-2-3-0-2022-04-30">Airflow 2.3.0 (2022-04-30)</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id8">Significant Changes</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#passing-execution-date-to-xcom-set-xcom-clear-xcom-get-one-and-xcom-get-many-is-deprecated-19825">Passing <code class="docutils literal notranslate"><span class="pre">execution_date</span></code> to <code class="docutils literal notranslate"><span class="pre">XCom.set()</span></code>, <code class="docutils literal notranslate"><span class="pre">XCom.clear()</span></code> , <code class="docutils literal notranslate"><span class="pre">XCom.get_one()</span></code> , and <code class="docutils literal notranslate"><span class="pre">XCom.get_many()</span></code> is deprecated (#19825)</a></li>
<li class="toctree-l4"><a class="reference internal" href="#task-log-templates-are-now-read-from-the-metadata-database-instead-of-airflow-cfg-20165">Task log templates are now read from the metadata database instead of <code class="docutils literal notranslate"><span class="pre">airflow.cfg</span></code> (#20165)</a></li>
<li class="toctree-l4"><a class="reference internal" href="#minimum-kubernetes-library-version-bumped-from-3-0-0-to-21-7-0-20759">Minimum kubernetes library version bumped from <code class="docutils literal notranslate"><span class="pre">3.0.0</span></code> to <code class="docutils literal notranslate"><span class="pre">21.7.0</span></code> (#20759)</a></li>
<li class="toctree-l4"><a class="reference internal" href="#xcom-now-defined-by-run-id-instead-of-execution-date-20975">XCom now defined by <code class="docutils literal notranslate"><span class="pre">run_id</span></code> instead of <code class="docutils literal notranslate"><span class="pre">execution_date</span></code> (#20975)</a></li>
<li class="toctree-l4"><a class="reference internal" href="#non-json-serializable-params-deprecated-21135">Non-JSON-serializable params deprecated (#21135).</a></li>
<li class="toctree-l4"><a class="reference internal" href="#you-must-use-postgresql-instead-of-postgres-in-sql-alchemy-conn-for-sqlalchemy-1-4-0-21205">You must use <code class="docutils literal notranslate"><span class="pre">postgresql://</span></code> instead of <code class="docutils literal notranslate"><span class="pre">postgres://</span></code> in <code class="docutils literal notranslate"><span class="pre">sql_alchemy_conn</span></code> for SQLAlchemy 1.4.0+ (#21205)</a></li>
<li class="toctree-l4"><a class="reference internal" href="#auth-backends-replaces-auth-backend-configuration-setting-21472"><code class="docutils literal notranslate"><span class="pre">auth_backends</span></code> replaces <code class="docutils literal notranslate"><span class="pre">auth_backend</span></code> configuration setting (#21472)</a></li>
<li class="toctree-l4"><a class="reference internal" href="#airflow-models-base-operator-is-removed-21505"><code class="docutils literal notranslate"><span class="pre">airflow.models.base.Operator</span></code> is removed (#21505)</a></li>
<li class="toctree-l4"><a class="reference internal" href="#zip-files-in-the-dags-folder-can-no-longer-have-a-py-extension-21538">Zip files in the DAGs folder can no longer have a <code class="docutils literal notranslate"><span class="pre">.py</span></code> extension (#21538)</a></li>
<li class="toctree-l4"><a class="reference internal" href="#auth-backends-includes-session-21640"><code class="docutils literal notranslate"><span class="pre">auth_backends</span></code> includes session (#21640)</a></li>
<li class="toctree-l4"><a class="reference internal" href="#default-templates-for-log-filenames-and-elasticsearch-log-id-changed-21734">Default templates for log filenames and elasticsearch log_id changed (#21734)</a></li>
<li class="toctree-l4"><a class="reference internal" href="#baseoperatorlink-s-get-link-method-changed-to-take-a-ti-key-keyword-argument-21798">BaseOperatorLink’s <code class="docutils literal notranslate"><span class="pre">get_link</span></code> method changed to take a <code class="docutils literal notranslate"><span class="pre">ti_key</span></code> keyword argument (#21798)</a></li>
<li class="toctree-l4"><a class="reference internal" href="#readytorescheduledep-now-only-runs-when-reschedule-is-true-21815"><code class="docutils literal notranslate"><span class="pre">ReadyToRescheduleDep</span></code> now only runs when <code class="docutils literal notranslate"><span class="pre">reschedule</span></code> is <em>True</em> (#21815)</a></li>
<li class="toctree-l4"><a class="reference internal" href="#the-deps-attribute-on-an-operator-class-should-be-a-class-level-attribute-21815">The <code class="docutils literal notranslate"><span class="pre">deps</span></code> attribute on an operator class should be a class level attribute (#21815)</a></li>
<li class="toctree-l4"><a class="reference internal" href="#deprecation-connection-extra-must-be-json-encoded-dict-21816">Deprecation: <code class="docutils literal notranslate"><span class="pre">Connection.extra</span></code> must be JSON-encoded dict (#21816)</a><ul>
<li class="toctree-l5"><a class="reference internal" href="#tldr">TLDR</a></li>
<li class="toctree-l5"><a class="reference internal" href="#what-why-and-when">What, why, and when?</a></li>
<li class="toctree-l5"><a class="reference internal" href="#how-will-i-be-affected">How will I be affected?</a></li>
</ul>
</li>
<li class="toctree-l4"><a class="reference internal" href="#the-tree-default-view-setting-has-been-renamed-to-grid-22167">The <code class="docutils literal notranslate"><span class="pre">tree</span></code> default view setting has been renamed to <code class="docutils literal notranslate"><span class="pre">grid</span></code> (#22167)</a></li>
<li class="toctree-l4"><a class="reference internal" href="#database-configuration-moved-to-new-section-22284">Database configuration moved to new section (#22284)</a></li>
<li class="toctree-l4"><a class="reference internal" href="#remove-requirement-that-custom-connection-ui-fields-be-prefixed-22607">Remove requirement that custom connection UI fields be prefixed (#22607)</a></li>
<li class="toctree-l4"><a class="reference internal" href="#the-webserver-x-frame-enabled-configuration-works-according-to-description-now-23222">The webserver.X_FRAME_ENABLED configuration works according to description now (#23222).</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="#new-features">New Features</a></li>
<li class="toctree-l3"><a class="reference internal" href="#improvements">Improvements</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id9">Bug Fixes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id10">Doc only changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id11">Misc/Internal</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#airflow-2-2-5-2022-04-04">Airflow 2.2.5, (2022-04-04)</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id12">Significant Changes</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#id13">Bug Fixes</a></li>
<li class="toctree-l4"><a class="reference internal" href="#id14">Doc only changes</a></li>
<li class="toctree-l4"><a class="reference internal" href="#misc">Misc</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#airflow-2-2-4-2022-02-22">Airflow 2.2.4, (2022-02-22)</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id15">Significant Changes</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#smart-sensors-deprecated">Smart sensors deprecated</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="#id16">Bug Fixes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id17">Doc only changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id18">Misc</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#airflow-2-2-3-2021-12-21">Airflow 2.2.3, (2021-12-21)</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id19">Significant Changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id20">Bug Fixes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id21">Doc only changes</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#airflow-2-2-2-2021-11-15">Airflow 2.2.2 (2021-11-15)</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id22">Significant Changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id23">Bug Fixes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id24">Doc only changes</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#airflow-2-2-1-2021-10-29">Airflow 2.2.1 (2021-10-29)</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id25">Significant Changes</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#param-s-default-value-for-default-removed"><code class="docutils literal notranslate"><span class="pre">Param</span></code>’s default value for <code class="docutils literal notranslate"><span class="pre">default</span></code> removed</a></li>
<li class="toctree-l4"><a class="reference internal" href="#max-queued-runs-per-dag-configuration-has-been-removed"><code class="docutils literal notranslate"><span class="pre">max_queued_runs_per_dag</span></code> configuration has been removed</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="#id26">Bug Fixes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id27">Doc only changes</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#airflow-2-2-0-2021-10-11">Airflow 2.2.0 (2021-10-11)</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id28">Significant Changes</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#worker-log-server-port-configuration-has-been-moved-to-the-logging-section"><code class="docutils literal notranslate"><span class="pre">worker_log_server_port</span></code> configuration has been moved to the <code class="docutils literal notranslate"><span class="pre">logging</span></code> section.</a></li>
<li class="toctree-l4"><a class="reference internal" href="#pandas-is-now-an-optional-dependency"><code class="docutils literal notranslate"><span class="pre">pandas</span></code> is now an optional dependency</a></li>
<li class="toctree-l4"><a class="reference internal" href="#none-failed-or-skipped-trigger-rule-has-been-deprecated"><code class="docutils literal notranslate"><span class="pre">none_failed_or_skipped</span></code> trigger rule has been deprecated</a></li>
<li class="toctree-l4"><a class="reference internal" href="#dummy-trigger-rule-has-been-deprecated">Dummy trigger rule has been deprecated</a></li>
<li class="toctree-l4"><a class="reference internal" href="#dag-concurrency-settings-have-been-renamed">DAG concurrency settings have been renamed</a></li>
<li class="toctree-l4"><a class="reference internal" href="#task-concurrency-parameter-has-been-renamed">Task concurrency parameter has been renamed</a></li>
<li class="toctree-l4"><a class="reference internal" href="#processor-poll-interval-config-have-been-renamed-to-scheduler-idle-sleep-time"><code class="docutils literal notranslate"><span class="pre">processor_poll_interval</span></code> config have been renamed to <code class="docutils literal notranslate"><span class="pre">scheduler_idle_sleep_time</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="#marking-success-failed-automatically-clears-failed-downstream-tasks">Marking success/failed automatically clears failed downstream tasks</a></li>
<li class="toctree-l4"><a class="reference internal" href="#core-store-dag-code-has-been-removed"><code class="docutils literal notranslate"><span class="pre">[core]</span> <span class="pre">store_dag_code</span></code> has been removed</a></li>
<li class="toctree-l4"><a class="reference internal" href="#clearing-a-running-task-sets-its-state-to-restarting">Clearing a running task sets its state to <code class="docutils literal notranslate"><span class="pre">RESTARTING</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="#remove-taskinstance-log-filepath-attribute">Remove <code class="docutils literal notranslate"><span class="pre">TaskInstance.log_filepath</span></code> attribute</a></li>
<li class="toctree-l4"><a class="reference internal" href="#if-a-sensor-times-out-it-will-not-retry">If a sensor times out, it will not retry</a></li>
<li class="toctree-l4"><a class="reference internal" href="#default-task-pools-slots-can-be-set-using-core-default-pool-task-slot-count">Default Task Pools Slots can be set using <code class="docutils literal notranslate"><span class="pre">[core]</span> <span class="pre">default_pool_task_slot_count</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="#webserver-dag-refresh-buttons-removed">Webserver DAG refresh buttons removed</a></li>
<li class="toctree-l4"><a class="reference internal" href="#taskinstances-now-require-a-dagrun">TaskInstances now <em>require</em> a DagRun</a></li>
<li class="toctree-l4"><a class="reference internal" href="#taskinstance-and-taskreschedule-now-define-run-id-instead-of-execution-date">TaskInstance and TaskReschedule now define <code class="docutils literal notranslate"><span class="pre">run_id</span></code> instead of <code class="docutils literal notranslate"><span class="pre">execution_date</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="#daskexecutor-dask-worker-resources-and-queues">DaskExecutor - Dask Worker Resources and queues</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="#id31">New Features</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id32">Improvements</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id33">Bug Fixes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id34">Doc only changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id35">Misc/Internal</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#airflow-2-1-4-2021-09-18">Airflow 2.1.4 (2021-09-18)</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id36">Significant Changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id37">Bug Fixes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id38">Doc only changes</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#airflow-2-1-3-2021-08-23">Airflow 2.1.3 (2021-08-23)</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id39">Significant Changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id40">Bug Fixes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id41">Improvements</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id42">Doc only changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id43">Misc</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#airflow-2-1-2-2021-07-14">Airflow 2.1.2 (2021-07-14)</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id44">Significant Changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id45">Bug Fixes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id46">Misc</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#airflow-2-1-1-2021-07-02">Airflow 2.1.1 (2021-07-02)</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id47">Significant Changes</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#activate-dag-runs-argument-of-the-function-clear-task-instances-is-replaced-with-dag-run-state"><code class="docutils literal notranslate"><span class="pre">activate_dag_runs</span></code> argument of the function <code class="docutils literal notranslate"><span class="pre">clear_task_instances</span></code> is replaced with <code class="docutils literal notranslate"><span class="pre">dag_run_state</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="#dag-set-dag-runs-state-is-deprecated"><code class="docutils literal notranslate"><span class="pre">dag.set_dag_runs_state</span></code> is deprecated</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="#id49">Bug Fixes</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#airflow-2-1-0-2021-05-21">Airflow 2.1.0 (2021-05-21)</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id50">Significant Changes</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#new-deprecated-api-extra">New “deprecated_api” extra</a></li>
<li class="toctree-l4"><a class="reference internal" href="#the-http-provider-is-not-installed-by-default">The <code class="docutils literal notranslate"><span class="pre">http</span></code> provider is not installed by default</a></li>
<li class="toctree-l4"><a class="reference internal" href="#apply-default-decorator-isn-t-longer-necessary"><code class="docutils literal notranslate"><span class="pre">&#64;apply_default</span></code> decorator isn’t longer necessary</a></li>
<li class="toctree-l4"><a class="reference internal" href="#change-the-configuration-options-for-field-masking">Change the configuration options for field masking</a></li>
<li class="toctree-l4"><a class="reference internal" href="#deprecated-poddefaults-and-add-xcom-sidecar-in-airflow-kubernetes-pod-generator">Deprecated PodDefaults and add_xcom_sidecar in airflow.kubernetes.pod_generator</a></li>
<li class="toctree-l4"><a class="reference internal" href="#removed-pod-launcher-from-core-airflow">Removed pod_launcher from core airflow</a></li>
<li class="toctree-l4"><a class="reference internal" href="#default-webserver-worker-refresh-interval-is-changed-to-6000-seconds">Default <code class="docutils literal notranslate"><span class="pre">[webserver]</span> <span class="pre">worker_refresh_interval</span></code> is changed to <code class="docutils literal notranslate"><span class="pre">6000</span></code> seconds</a></li>
<li class="toctree-l4"><a class="reference internal" href="#default-queue-configuration-has-been-moved-to-the-operators-section"><code class="docutils literal notranslate"><span class="pre">default_queue</span></code> configuration has been moved to the <code class="docutils literal notranslate"><span class="pre">operators</span></code> section.</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="#id51">New Features</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id52">Improvements</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id53">Bug Fixes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id54">Doc only changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id55">Misc/Internal</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#airflow-2-0-2-2021-04-19">Airflow 2.0.2 (2021-04-19)</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id56">Significant Changes</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#default-kubernetes-enable-tcp-keepalive-is-changed-to-true">Default <code class="docutils literal notranslate"><span class="pre">[kubernetes]</span> <span class="pre">enable_tcp_keepalive</span></code> is changed to <code class="docutils literal notranslate"><span class="pre">True</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="#sync-perm-cli-no-longer-syncs-dag-specific-permissions-by-default"><code class="docutils literal notranslate"><span class="pre">sync-perm</span></code> CLI no longer syncs DAG specific permissions by default</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="#id57">Bug Fixes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id58">Improvements</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id59">Doc only changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id60">Misc/Internal</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#airflow-2-0-1-2021-02-08">Airflow 2.0.1 (2021-02-08)</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id61">Significant Changes</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#permission-to-view-airflow-configurations-has-been-removed-from-user-and-viewer-role">Permission to view Airflow Configurations has been removed from <code class="docutils literal notranslate"><span class="pre">User</span></code> and <code class="docutils literal notranslate"><span class="pre">Viewer</span></code> role</a></li>
<li class="toctree-l4"><a class="reference internal" href="#default-celery-worker-concurrency-is-changed-to-16">Default <code class="docutils literal notranslate"><span class="pre">[celery]</span> <span class="pre">worker_concurrency</span></code> is changed to <code class="docutils literal notranslate"><span class="pre">16</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="#default-scheduler-min-file-process-interval-is-changed-to-30">Default <code class="docutils literal notranslate"><span class="pre">[scheduler]</span> <span class="pre">min_file_process_interval</span></code> is changed to <code class="docutils literal notranslate"><span class="pre">30</span></code></a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="#id62">Bug Fixes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id63">Improvements</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id64">Doc only changes</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#airflow-2-0-0-2020-12-18">Airflow 2.0.0 (2020-12-18)</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id65">Significant Changes</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#major-changes">Major changes</a></li>
<li class="toctree-l4"><a class="reference internal" href="#the-experimental-rest-api-is-disabled-by-default">The experimental REST API is disabled by default</a></li>
<li class="toctree-l4"><a class="reference internal" href="#sparkjdbchook-default-connection">SparkJDBCHook default connection</a></li>
<li class="toctree-l4"><a class="reference internal" href="#changes-to-output-argument-in-commands">Changes to output argument in commands</a></li>
<li class="toctree-l4"><a class="reference internal" href="#azure-wasb-hook-does-not-work-together-with-snowflake-hook">Azure Wasb Hook does not work together with Snowflake hook</a></li>
<li class="toctree-l4"><a class="reference internal" href="#rename-all-to-devel-all-extra">Rename <code class="docutils literal notranslate"><span class="pre">all</span></code> to <code class="docutils literal notranslate"><span class="pre">devel_all</span></code> extra</a></li>
<li class="toctree-l4"><a class="reference internal" href="#context-variables-prev-execution-date-success-and-prev-execution-date-success-are-now-pendulum-datetime">Context variables <code class="docutils literal notranslate"><span class="pre">prev_execution_date_success</span></code> and <code class="docutils literal notranslate"><span class="pre">prev_execution_date_success</span></code> are now <code class="docutils literal notranslate"><span class="pre">pendulum.DateTime</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="#rename-policy-to-task-policy">Rename policy to task_policy</a></li>
<li class="toctree-l4"><a class="reference internal" href="#default-value-for-celery-operation-timeout-has-changed-to-1-0">Default value for <code class="docutils literal notranslate"><span class="pre">[celery]</span> <span class="pre">operation_timeout</span></code> has changed to <code class="docutils literal notranslate"><span class="pre">1.0</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="#adding-operators-and-sensors-via-plugins-is-no-longer-supported">Adding Operators and Sensors via plugins is no longer supported</a></li>
<li class="toctree-l4"><a class="reference internal" href="#importing-hooks-via-plugins-is-no-longer-supported">Importing Hooks via plugins is no longer supported</a></li>
<li class="toctree-l4"><a class="reference internal" href="#the-default-value-for-core-enable-xcom-pickling-has-been-changed-to-false">The default value for <code class="docutils literal notranslate"><span class="pre">[core]</span> <span class="pre">enable_xcom_pickling</span></code> has been changed to <code class="docutils literal notranslate"><span class="pre">False</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="#airflowignore-of-base-path">Airflowignore of base path</a></li>
<li class="toctree-l4"><a class="reference internal" href="#externaltasksensor-provides-all-task-context-variables-to-execution-date-fn-as-keyword-arguments"><code class="docutils literal notranslate"><span class="pre">ExternalTaskSensor</span></code> provides all task context variables to <code class="docutils literal notranslate"><span class="pre">execution_date_fn</span></code> as keyword arguments</a></li>
<li class="toctree-l4"><a class="reference internal" href="#the-default-value-for-webserver-cookie-samesite-has-been-changed-to-lax">The default value for <code class="docutils literal notranslate"><span class="pre">[webserver]</span> <span class="pre">cookie_samesite</span></code> has been changed to <code class="docutils literal notranslate"><span class="pre">Lax</span></code></a><ul>
<li class="toctree-l5"><a class="reference internal" href="#changes-to-import-paths">Changes to import paths</a></li>
</ul>
</li>
<li class="toctree-l4"><a class="reference internal" href="#database-schema-changes">Database schema changes</a><ul>
<li class="toctree-l5"><a class="reference internal" href="#unique-conn-id-in-connection-table">Unique conn_id in connection table</a></li>
<li class="toctree-l5"><a class="reference internal" href="#not-nullable-conn-type-column-in-connection-table">Not-nullable conn_type column in connection table</a></li>
</ul>
</li>
<li class="toctree-l4"><a class="reference internal" href="#configuration-changes">Configuration changes</a><ul>
<li class="toctree-l5"><a class="reference internal" href="#airflow-contrib-utils-log-has-been-moved">airflow.contrib.utils.log has been moved</a></li>
<li class="toctree-l5"><a class="reference internal" href="#sendgrid-emailer-has-been-moved">SendGrid emailer has been moved</a></li>
<li class="toctree-l5"><a class="reference internal" href="#unify-hostname-callable-option-in-core-section">Unify <code class="docutils literal notranslate"><span class="pre">hostname_callable</span></code> option in <code class="docutils literal notranslate"><span class="pre">core</span></code> section</a></li>
<li class="toctree-l5"><a class="reference internal" href="#custom-executors-is-loaded-using-full-import-path">Custom executors is loaded using full import path</a></li>
<li class="toctree-l5"><a class="reference internal" href="#use-customsqlainterface-instead-of-sqlainterface-for-custom-data-models">Use <code class="docutils literal notranslate"><span class="pre">CustomSQLAInterface</span></code> instead of <code class="docutils literal notranslate"><span class="pre">SQLAInterface</span></code> for custom data models.</a></li>
<li class="toctree-l5"><a class="reference internal" href="#drop-plugin-support-for-stat-name-handler">Drop plugin support for stat_name_handler</a></li>
<li class="toctree-l5"><a class="reference internal" href="#logging-configuration-has-been-moved-to-new-section">Logging configuration has been moved to new section</a></li>
<li class="toctree-l5"><a class="reference internal" href="#metrics-configuration-has-been-moved-to-new-section">Metrics configuration has been moved to new section</a></li>
<li class="toctree-l5"><a class="reference internal" href="#changes-to-elasticsearch-logging-provider">Changes to Elasticsearch logging provider</a></li>
<li class="toctree-l5"><a class="reference internal" href="#remove-gcp-service-account-keys-option-in-airflow-cfg-file">Remove gcp_service_account_keys option in airflow.cfg file</a></li>
<li class="toctree-l5"><a class="reference internal" href="#fernet-is-enabled-by-default">Fernet is enabled by default</a></li>
<li class="toctree-l5"><a class="reference internal" href="#changes-to-propagating-kubernetes-worker-annotations">Changes to propagating Kubernetes worker annotations</a></li>
<li class="toctree-l5"><a class="reference internal" href="#remove-run-duration">Remove run_duration</a></li>
<li class="toctree-l5"><a class="reference internal" href="#rename-pool-statsd-metrics">Rename pool statsd metrics</a></li>
<li class="toctree-l5"><a class="reference internal" href="#removal-of-mesos-executor">Removal of Mesos Executor</a></li>
<li class="toctree-l5"><a class="reference internal" href="#change-dag-loading-duration-metric-name">Change dag loading duration metric name</a></li>
<li class="toctree-l5"><a class="reference internal" href="#sentry-is-disabled-by-default">Sentry is disabled by default</a></li>
<li class="toctree-l5"><a class="reference internal" href="#simplified-gcstaskhandler-configuration">Simplified GCSTaskHandler configuration</a></li>
</ul>
</li>
<li class="toctree-l4"><a class="reference internal" href="#changes-to-the-core-operators-hooks">Changes to the core operators/hooks</a><ul>
<li class="toctree-l5"><a class="reference internal" href="#basesensoroperator-now-respects-the-trigger-rule-of-downstream-tasks">BaseSensorOperator now respects the trigger_rule of downstream tasks</a></li>
<li class="toctree-l5"><a class="reference internal" href="#baseoperator-uses-metaclass">BaseOperator uses metaclass</a></li>
<li class="toctree-l5"><a class="reference internal" href="#remove-sql-support-in-basehook">Remove SQL support in BaseHook</a></li>
<li class="toctree-l5"><a class="reference internal" href="#assigning-task-to-a-dag-using-bitwise-shift-bit-shift-operators-are-no-longer-supported">Assigning task to a DAG using bitwise shift (bit-shift) operators are no longer supported</a></li>
<li class="toctree-l5"><a class="reference internal" href="#removed-deprecated-import-mechanism">Removed deprecated import mechanism</a></li>
<li class="toctree-l5"><a class="reference internal" href="#changes-to-sensor-imports">Changes to sensor imports</a></li>
<li class="toctree-l5"><a class="reference internal" href="#skipped-tasks-can-satisfy-wait-for-downstream">Skipped tasks can satisfy wait_for_downstream</a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-utils-helpers-cross-downstream"><code class="docutils literal notranslate"><span class="pre">airflow.utils.helpers.cross_downstream</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-utils-helpers-chain"><code class="docutils literal notranslate"><span class="pre">airflow.utils.helpers.chain</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-operators-python-branchpythonoperator"><code class="docutils literal notranslate"><span class="pre">airflow.operators.python.BranchPythonOperator</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-sensors-sql-sensor-sqlsensor"><code class="docutils literal notranslate"><span class="pre">airflow.sensors.sql_sensor.SqlSensor</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-operators-trigger-dagrun-triggerdagrunoperator"><code class="docutils literal notranslate"><span class="pre">airflow.operators.trigger_dagrun.TriggerDagRunOperator</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-operators-python-pythonoperator"><code class="docutils literal notranslate"><span class="pre">airflow.operators.python.PythonOperator</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-sensors-filesystem-filesensor"><code class="docutils literal notranslate"><span class="pre">airflow.sensors.filesystem.FileSensor</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-operators-subdag-operator-subdagoperator"><code class="docutils literal notranslate"><span class="pre">airflow.operators.subdag_operator.SubDagOperator</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-providers-google-cloud-operators-datastore-clouddatastoreexportentitiesoperator"><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.datastore.CloudDatastoreExportEntitiesOperator</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-providers-google-cloud-operators-datastore-clouddatastoreimportentitiesoperator"><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.datastore.CloudDatastoreImportEntitiesOperator</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-providers-cncf-kubernetes-operators-kubernetes-pod-kubernetespodoperator"><code class="docutils literal notranslate"><span class="pre">airflow.providers.cncf.kubernetes.operators.kubernetes_pod.KubernetesPodOperator</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-providers-ssh-operators-ssh-sshoperator"><code class="docutils literal notranslate"><span class="pre">airflow.providers.ssh.operators.ssh.SSHOperator</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-providers-microsoft-winrm-operators-winrm-winrmoperator"><code class="docutils literal notranslate"><span class="pre">airflow.providers.microsoft.winrm.operators.winrm.WinRMOperator</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-operators-bash-bashoperator"><code class="docutils literal notranslate"><span class="pre">airflow.operators.bash.BashOperator</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-providers-docker-operators-docker-dockeroperator"><code class="docutils literal notranslate"><span class="pre">airflow.providers.docker.operators.docker.DockerOperator</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-providers-http-operators-http-simplehttpoperator"><code class="docutils literal notranslate"><span class="pre">airflow.providers.http.operators.http.SimpleHttpOperator</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-operators-latest-only-operator-latestonlyoperator"><code class="docutils literal notranslate"><span class="pre">airflow.operators.latest_only_operator.LatestOnlyOperator</span></code></a></li>
</ul>
</li>
<li class="toctree-l4"><a class="reference internal" href="#changes-to-the-core-python-api">Changes to the core Python API</a><ul>
<li class="toctree-l5"><a class="reference internal" href="#removed-sub-package-imports-from-airflow-init-py">Removed sub-package imports from <code class="docutils literal notranslate"><span class="pre">airflow/__init__.py</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#variables-removed-from-the-task-instance-context">Variables removed from the task instance context</a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-contrib-utils-weekday"><code class="docutils literal notranslate"><span class="pre">airflow.contrib.utils.Weekday</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-models-connection-connection"><code class="docutils literal notranslate"><span class="pre">airflow.models.connection.Connection</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-models-dag-dag-create-dagrun"><code class="docutils literal notranslate"><span class="pre">airflow.models.dag.DAG.create_dagrun</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-models-dagrun-dagrun"><code class="docutils literal notranslate"><span class="pre">airflow.models.dagrun.DagRun</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-utils-file-temporarydirectory"><code class="docutils literal notranslate"><span class="pre">airflow.utils.file.TemporaryDirectory</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-airflowmacroplugin"><code class="docutils literal notranslate"><span class="pre">airflow.AirflowMacroPlugin</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-settings-context-manager-dag"><code class="docutils literal notranslate"><span class="pre">airflow.settings.CONTEXT_MANAGER_DAG</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-utils-log-logging-mixin-redirect-stderr"><code class="docutils literal notranslate"><span class="pre">airflow.utils.log.logging_mixin.redirect_stderr</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-utils-log-logging-mixin-redirect-stdout"><code class="docutils literal notranslate"><span class="pre">airflow.utils.log.logging_mixin.redirect_stdout</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-models-baseoperator-baseoperator"><code class="docutils literal notranslate"><span class="pre">airflow.models.baseoperator.BaseOperator</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-models-dagbag-dagbag"><code class="docutils literal notranslate"><span class="pre">airflow.models.dagbag.DagBag</span></code></a></li>
</ul>
</li>
<li class="toctree-l4"><a class="reference internal" href="#changes-in-google-provider-package">Changes in <code class="docutils literal notranslate"><span class="pre">google</span></code> provider package</a><ul>
<li class="toctree-l5"><a class="reference internal" href="#direct-impersonation-added-to-operators-communicating-with-google-services">Direct impersonation added to operators communicating with Google services</a></li>
<li class="toctree-l5"><a class="reference internal" href="#normalize-gcp-conn-id-for-google-cloud">Normalize gcp_conn_id for Google Cloud</a></li>
<li class="toctree-l5"><a class="reference internal" href="#changes-to-import-paths-and-names-of-gcp-operators-and-hooks">Changes to import paths and names of GCP operators and hooks</a></li>
<li class="toctree-l5"><a class="reference internal" href="#unify-default-conn-id-for-google-cloud">Unify default conn_id for Google Cloud</a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-providers-google-cloud-hooks-dataflow-dataflowhook"><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.hooks.dataflow.DataflowHook</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-providers-google-cloud-operators-dataflow-dataflowcreatejavajoboperator"><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.dataflow.DataflowCreateJavaJobOperator</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-providers-google-cloud-operators-dataflow-dataflowtemplatedjobstartoperator"><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.dataflow.DataflowTemplatedJobStartOperator</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-providers-google-cloud-operators-dataflow-dataflowcreatepythonjoboperator"><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.dataflow.DataflowCreatePythonJobOperator</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-providers-google-cloud-sensors-gcs-gcsuploadsessioncompletesensor"><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.sensors.gcs.GCSUploadSessionCompleteSensor</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-providers-google-cloud-hooks-bigquery-bigquerybasecursor"><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.hooks.bigquery.BigQueryBaseCursor</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-providers-google-cloud-hooks-bigquery-bigqueryhook"><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.hooks.bigquery.BigQueryHook</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#id68"><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.hooks.bigquery.BigQueryBaseCursor</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-providers-google-cloud-operators-bigquery-bigquerycreateemptytableoperator"><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.bigquery.BigQueryCreateEmptyTableOperator</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-providers-google-cloud-operators-bigquery-bigquerycreateemptydatasetoperator"><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.bigquery.BigQueryCreateEmptyDatasetOperator</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#id69"><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.hooks.dataflow.DataflowHook</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-providers-google-cloud-hooks-mlengine-mlenginehook"><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.hooks.mlengine.MLEngineHook</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-providers-google-cloud-hooks-pubsub-pubsubhook"><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.hooks.pubsub.PubSubHook</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#id70"><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.hooks.pubsub.PubSubHook</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-providers-google-cloud-operators-pubsub-pubsubtopiccreateoperator"><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.pubsub.PubSubTopicCreateOperator</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-providers-google-cloud-operators-pubsub-pubsubsubscriptioncreateoperator"><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.pubsub.PubSubSubscriptionCreateOperator</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-providers-google-cloud-operators-pubsub-pubsubtopicdeleteoperator"><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.pubsub.PubSubTopicDeleteOperator</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-providers-google-cloud-operators-pubsub-pubsubsubscriptiondeleteoperator"><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.pubsub.PubSubSubscriptionDeleteOperator</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-providers-google-cloud-operators-pubsub-pubsubpublishoperator"><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.pubsub.PubSubPublishOperator</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-providers-google-cloud-sensors-pubsub-pubsubpullsensor"><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.sensors.pubsub.PubSubPullSensor</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-providers-google-cloud-operators-kubernetes-engine-gkestartpodoperator"><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.kubernetes_engine.GKEStartPodOperator</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-providers-google-cloud-hooks-gcs-gcshook"><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.hooks.gcs.GCSHook</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-providers-google-cloud-operators-dataproc-dataprocsubmitpigjoboperator"><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.dataproc.DataprocSubmitPigJobOperator</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-providers-google-cloud-operators-dataproc-dataprocsubmithivejoboperator"><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.dataproc.DataprocSubmitHiveJobOperator</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-providers-google-cloud-operators-dataproc-dataprocsubmitsparksqljoboperator"><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.dataproc.DataprocSubmitSparkSqlJobOperator</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-providers-google-cloud-operators-dataproc-dataprocsubmitsparkjoboperator"><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.dataproc.DataprocSubmitSparkJobOperator</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-providers-google-cloud-operators-dataproc-dataprocsubmithadoopjoboperator"><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.dataproc.DataprocSubmitHadoopJobOperator</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-providers-google-cloud-operators-dataproc-dataprocsubmitpysparkjoboperator"><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.dataproc.DataprocSubmitPySparkJobOperator</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-providers-google-cloud-operators-cloud-storage-transfer-service-clouddatatransferservicecreatejoboperator"><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.cloud_storage_transfer_service.CloudDataTransferServiceCreateJobOperator</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-providers-google-cloud-hooks-cloud-storage-transfer-service-clouddatatransferservicehook"><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.hooks.cloud_storage_transfer_service.CloudDataTransferServiceHook</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#id71"><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.hooks.bigquery.BigQueryHook</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-providers-google-cloud-hooks-cloud-build-cloudbuildhook"><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.hooks.cloud_build.CloudBuildHook</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-providers-google-cloud-operators-cloud-build-cloudbuildcreatebuildoperator"><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.cloud_build.CloudBuildCreateBuildOperator</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-providers-google-cloud-hooks-dataflow-dataflowhook-start-python-dataflow"><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.hooks.dataflow.DataflowHook.start_python_dataflow</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#id72"><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.hooks.dataflow.DataflowHook.start_python_dataflow</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#id73"><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.dataflow.DataflowCreatePythonJobOperator</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-providers-google-common-hooks-base-google-googlebasehook"><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.common.hooks.base_google.GoogleBaseHook</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-providers-google-cloud-operators-dataproc-dataproccreateclusteroperator"><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.dataproc.DataprocCreateClusterOperator</span></code></a></li>
</ul>
</li>
<li class="toctree-l4"><a class="reference internal" href="#generating-cluster-config">Generating Cluster Config</a><ul>
<li class="toctree-l5"><a class="reference internal" href="#airflow-providers-google-cloud-operators-bigquery-bigquerygetdatasettablesoperator"><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.bigquery.BigQueryGetDatasetTablesOperator</span></code></a></li>
</ul>
</li>
<li class="toctree-l4"><a class="reference internal" href="#changes-in-amazon-provider-package">Changes in <code class="docutils literal notranslate"><span class="pre">amazon</span></code> provider package</a><ul>
<li class="toctree-l5"><a class="reference internal" href="#migration-of-aws-components">Migration of AWS components</a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-providers-amazon-aws-hooks-emr-emrhook"><code class="docutils literal notranslate"><span class="pre">airflow.providers.amazon.aws.hooks.emr.EmrHook</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-providers-amazon-aws-operators-emr-add-steps-emraddstepsoperator"><code class="docutils literal notranslate"><span class="pre">airflow.providers.amazon.aws.operators.emr_add_steps.EmrAddStepsOperator</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-providers-amazon-aws-operators-emr-create-job-flow-emrcreatejobflowoperator"><code class="docutils literal notranslate"><span class="pre">airflow.providers.amazon.aws.operators.emr_create_job_flow.EmrCreateJobFlowOperator</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-providers-amazon-aws-operators-emr-terminate-job-flow-emrterminatejobflowoperator"><code class="docutils literal notranslate"><span class="pre">airflow.providers.amazon.aws.operators.emr_terminate_job_flow.EmrTerminateJobFlowOperator</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-providers-amazon-aws-operators-batch-awsbatchoperator"><code class="docutils literal notranslate"><span class="pre">airflow.providers.amazon.aws.operators.batch.AwsBatchOperator</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-providers-amazon-aws-sensors-athena-athenasensor"><code class="docutils literal notranslate"><span class="pre">airflow.providers.amazon.aws.sensors.athena.AthenaSensor</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-providers-amazon-aws-hooks-s3-s3hook"><code class="docutils literal notranslate"><span class="pre">airflow.providers.amazon.aws.hooks.s3.S3Hook</span></code></a></li>
</ul>
</li>
<li class="toctree-l4"><a class="reference internal" href="#changes-in-other-provider-packages">Changes in other provider packages</a><ul>
<li class="toctree-l5"><a class="reference internal" href="#changed-return-type-of-list-prefixes-and-list-keys-methods-in-s3hook">Changed return type of <code class="docutils literal notranslate"><span class="pre">list_prefixes</span></code> and <code class="docutils literal notranslate"><span class="pre">list_keys</span></code> methods in <code class="docutils literal notranslate"><span class="pre">S3Hook</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#removed-hipchat-integration">Removed HipChat integration</a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-providers-salesforce-hooks-salesforce-salesforcehook"><code class="docutils literal notranslate"><span class="pre">airflow.providers.salesforce.hooks.salesforce.SalesforceHook</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-providers-apache-pinot-hooks-pinot-pinotadminhook-create-segment"><code class="docutils literal notranslate"><span class="pre">airflow.providers.apache.pinot.hooks.pinot.PinotAdminHook.create_segment</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-providers-apache-hive-hooks-hive-hivemetastorehook-get-partitions"><code class="docutils literal notranslate"><span class="pre">airflow.providers.apache.hive.hooks.hive.HiveMetastoreHook.get_partitions</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-providers-ftp-hooks-ftp-ftphook-list-directory"><code class="docutils literal notranslate"><span class="pre">airflow.providers.ftp.hooks.ftp.FTPHook.list_directory</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-providers-postgres-hooks-postgres-postgreshook-copy-expert"><code class="docutils literal notranslate"><span class="pre">airflow.providers.postgres.hooks.postgres.PostgresHook.copy_expert</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-providers-opsgenie-operators-opsgenie-alert-opsgeniealertoperator"><code class="docutils literal notranslate"><span class="pre">airflow.providers.opsgenie.operators.opsgenie_alert.OpsgenieAlertOperator</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-providers-imap-hooks-imap-imaphook"><code class="docutils literal notranslate"><span class="pre">airflow.providers.imap.hooks.imap.ImapHook</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-providers-imap-sensors-imap-attachment-imapattachmentsensor"><code class="docutils literal notranslate"><span class="pre">airflow.providers.imap.sensors.imap_attachment.ImapAttachmentSensor</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-providers-http-hooks-http-httphook"><code class="docutils literal notranslate"><span class="pre">airflow.providers.http.hooks.http.HttpHook</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-providers-cloudant-hooks-cloudant-cloudanthook"><code class="docutils literal notranslate"><span class="pre">airflow.providers.cloudant.hooks.cloudant.CloudantHook</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#airflow-providers-snowflake"><code class="docutils literal notranslate"><span class="pre">airflow.providers.snowflake</span></code></a></li>
</ul>
</li>
<li class="toctree-l4"><a class="reference internal" href="#other-changes">Other changes</a><ul>
<li class="toctree-l5"><a class="reference internal" href="#standardized-extra-requirements">Standardized “extra” requirements</a></li>
<li class="toctree-l5"><a class="reference internal" href="#simplify-the-response-payload-of-endpoints-dag-stats-and-task-stats">Simplify the response payload of endpoints /dag_stats and /task_stats</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#airflow-1-10-15-2021-03-17">Airflow 1.10.15 (2021-03-17)</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id75">Significant Changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id76">Bug Fixes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id77">Improvements</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id78">Doc only changes</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#airflow-1-10-14-2020-12-10">Airflow 1.10.14 (2020-12-10)</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id79">Significant Changes</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#scheduler-max-threads-config-has-been-renamed-to-scheduler-parsing-processes"><code class="docutils literal notranslate"><span class="pre">[scheduler]</span> <span class="pre">max_threads</span></code> config has been renamed to <code class="docutils literal notranslate"><span class="pre">[scheduler]</span> <span class="pre">parsing_processes</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="#airflow-cli-changes-in-line-with-2-0">Airflow CLI changes in line with 2.0</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="#id80">Bug Fixes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id81">Improvements</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id82">Doc only changes</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#airflow-1-10-13-2020-11-25">Airflow 1.10.13 (2020-11-25)</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id83">Significant Changes</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#timesensor-is-now-timezone-aware">TimeSensor is now timezone aware</a></li>
<li class="toctree-l4"><a class="reference internal" href="#removed-kerberos-support-for-hdfs-hook">Removed Kerberos support for HDFS hook</a></li>
<li class="toctree-l4"><a class="reference internal" href="#unify-user-session-lifetime-configuration">Unify user session lifetime configuration</a></li>
<li class="toctree-l4"><a class="reference internal" href="#adding-operators-hooks-and-sensors-via-airflow-plugins-is-deprecated">Adding Operators, Hooks and Sensors via Airflow Plugins is deprecated</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="#id84">New Features</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id85">Bug Fixes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id86">Improvements</a></li>
<li class="toctree-l3"><a class="reference internal" href="#deprecations">Deprecations</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id87">Doc only changes</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#airflow-1-10-12-2020-08-25">Airflow 1.10.12 (2020-08-25)</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id88">Significant Changes</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#clearing-tasks-skipped-by-skipmixin-will-skip-them">Clearing tasks skipped by SkipMixin will skip them</a></li>
<li class="toctree-l4"><a class="reference internal" href="#the-pod-mutation-hook-function-will-now-accept-a-kubernetes-v1pod-object">The pod_mutation_hook function will now accept a kubernetes V1Pod object</a></li>
<li class="toctree-l4"><a class="reference internal" href="#pod-template-file-option-now-available-in-the-kubernetespodoperator">pod_template_file option now available in the KubernetesPodOperator</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="#id89">New Features</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id90">Bug Fixes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id91">Improvements</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id92">Doc only changes</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#airflow-1-10-11-2020-07-10">Airflow 1.10.11 (2020-07-10)</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id93">Significant Changes</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#use-null-as-default-value-for-dag-description">Use NULL as default value for dag.description</a></li>
<li class="toctree-l4"><a class="reference internal" href="#restrict-editing-dagrun-state-in-the-old-ui-flask-admin-based-ui">Restrict editing DagRun State in the old UI (Flask-admin based UI)</a></li>
<li class="toctree-l4"><a class="reference internal" href="#experimental-api-will-deny-all-request-by-default">Experimental API will deny all request by default.</a></li>
<li class="toctree-l4"><a class="reference internal" href="#xcom-values-can-no-longer-be-added-or-changed-from-the-webserver">XCom Values can no longer be added or changed from the Webserver</a></li>
<li class="toctree-l4"><a class="reference internal" href="#default-for-run-as-user-configured-has-been-changed-to-50000-from-0">Default for <code class="docutils literal notranslate"><span class="pre">run_as_user</span></code> configured has been changed to 50000 from 0</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="#id94">New Features</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id95">Bug Fixes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id96">Improvements</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id97">Doc only changes</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#airflow-1-10-10-2020-04-09">Airflow 1.10.10 (2020-04-09)</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id98">Significant Changes</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#setting-empty-string-to-a-airflow-variable-will-return-an-empty-string">Setting Empty string to a Airflow Variable will return an empty string</a></li>
<li class="toctree-l4"><a class="reference internal" href="#make-behavior-of-none-failed-trigger-rule-consistent-with-documentation">Make behavior of <code class="docutils literal notranslate"><span class="pre">none_failed</span></code> trigger rule consistent with documentation</a></li>
<li class="toctree-l4"><a class="reference internal" href="#add-new-trigger-rule-none-failed-or-skipped">Add new trigger rule <code class="docutils literal notranslate"><span class="pre">none_failed_or_skipped</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="#success-callback-will-be-called-when-a-task-in-marked-as-success-from-ui">Success Callback will be called when a task in marked as success from UI</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="#id99">New Features</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id100">Bug Fixes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id101">Improvements</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id102">Misc/Internal</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id103">Doc only changes</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#airflow-1-10-9-2020-02-07">Airflow 1.10.9 (2020-02-07)</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id104">Significant Changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id105">Bug Fixes</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#airflow-1-10-8-2020-02-07">Airflow 1.10.8 (2020-02-07)</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id106">Significant Changes</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#failure-callback-will-be-called-when-task-is-marked-failed">Failure callback will be called when task is marked failed</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="#id107">New Features</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id108">Improvements</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id109">Bug Fixes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id110">Misc/Internal</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id111">Doc only changes</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#airflow-1-10-7-2019-12-24">Airflow 1.10.7 (2019-12-24)</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id112">Significant Changes</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#changes-in-experimental-api-execution-date-microseconds-replacement">Changes in experimental API execution_date microseconds replacement</a></li>
<li class="toctree-l4"><a class="reference internal" href="#infinite-pool-size-and-pool-size-query-optimization">Infinite pool size and pool size query optimization</a></li>
<li class="toctree-l4"><a class="reference internal" href="#viewer-won-t-have-edit-permissions-on-dag-view">Viewer won’t have edit permissions on DAG view.</a></li>
<li class="toctree-l4"><a class="reference internal" href="#google-cloud-storage-hook">Google Cloud Storage Hook</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="#id113">New Features</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id114">Improvements</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id115">Bug Fixes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id116">Misc/Internal</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id117">Doc only changes</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#airflow-1-10-6-2019-10-28">Airflow 1.10.6 (2019-10-28)</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id118">Significant Changes</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#baseoperator-render-template-function-signature-changed">BaseOperator::render_template function signature changed</a></li>
<li class="toctree-l4"><a class="reference internal" href="#changes-to-aws-default-connection-s-default-region">Changes to <code class="docutils literal notranslate"><span class="pre">aws_default</span></code> Connection’s default region</a></li>
<li class="toctree-l4"><a class="reference internal" href="#some-dag-processing-metrics-have-been-renamed">Some DAG Processing metrics have been renamed</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="#id119">New Features</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id120">Improvements</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id121">Bug Fixes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id122">Doc-only changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id123">Misc/Internal</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#airflow-1-10-5-2019-09-04">Airflow 1.10.5 (2019-09-04)</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id124">Significant Changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id125">New Features</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id126">Improvements</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id127">Bug fixes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id128">Misc/Internal</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id129">Doc-only changes</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#airflow-1-10-4-2019-08-06">Airflow 1.10.4 (2019-08-06)</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id130">Significant Changes</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#export-mysql-timestamps-as-utc">Export MySQL timestamps as UTC</a></li>
<li class="toctree-l4"><a class="reference internal" href="#changes-to-datastorehook">Changes to DatastoreHook</a></li>
<li class="toctree-l4"><a class="reference internal" href="#changes-to-googlecloudstoragehook">Changes to GoogleCloudStorageHook</a></li>
<li class="toctree-l4"><a class="reference internal" href="#changes-in-writing-logs-to-elasticsearch">Changes in writing Logs to Elasticsearch</a></li>
<li class="toctree-l4"><a class="reference internal" href="#removal-of-non-pooled-task-slot-count-and-non-pooled-backfill-task-slot-count">Removal of <code class="docutils literal notranslate"><span class="pre">non_pooled_task_slot_count</span></code> and <code class="docutils literal notranslate"><span class="pre">non_pooled_backfill_task_slot_count</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="#pool-config-option-in-celery-section-to-support-different-celery-pool-implementation"><code class="docutils literal notranslate"><span class="pre">pool</span></code> config option in Celery section to support different Celery pool implementation</a></li>
<li class="toctree-l4"><a class="reference internal" href="#change-to-method-signature-in-baseoperator-and-dag-classes">Change to method signature in <code class="docutils literal notranslate"><span class="pre">BaseOperator</span></code> and <code class="docutils literal notranslate"><span class="pre">DAG</span></code> classes</a><ul>
<li class="toctree-l5"><a class="reference internal" href="#for-baseoperator">For <code class="docutils literal notranslate"><span class="pre">BaseOperator</span></code></a></li>
<li class="toctree-l5"><a class="reference internal" href="#for-dag">For <code class="docutils literal notranslate"><span class="pre">DAG</span></code></a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="#id132">New Features</a></li>
<li class="toctree-l3"><a class="reference internal" href="#improvement">Improvement</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id133">Bug fixes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id134">Misc/Internal</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id135">Doc-only changes</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#airflow-1-10-3-2019-04-09">Airflow 1.10.3 (2019-04-09)</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id136">Significant Changes</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#new-dag-discovery-safe-mode-config-option">New <code class="docutils literal notranslate"><span class="pre">dag_discovery_safe_mode</span></code> config option</a></li>
<li class="toctree-l4"><a class="reference internal" href="#redispy-dependency-updated-to-v3-series">RedisPy dependency updated to v3 series</a></li>
<li class="toctree-l4"><a class="reference internal" href="#slugify-uses-text-unidecode-or-airflow-gpl-unidecode-no-longer-required">SLUGIFY_USES_TEXT_UNIDECODE or AIRFLOW_GPL_UNIDECODE no longer required</a></li>
<li class="toctree-l4"><a class="reference internal" href="#new-sync-parallelism-config-option-in-celery-section">New <code class="docutils literal notranslate"><span class="pre">sync_parallelism</span></code> config option in <code class="docutils literal notranslate"><span class="pre">[celery]</span></code> section</a></li>
<li class="toctree-l4"><a class="reference internal" href="#rename-of-bashtaskrunner-to-standardtaskrunner">Rename of BashTaskRunner to StandardTaskRunner</a></li>
<li class="toctree-l4"><a class="reference internal" href="#modification-to-config-file-discovery">Modification to config file discovery</a></li>
<li class="toctree-l4"><a class="reference internal" href="#changes-in-google-cloud-related-operators">Changes in Google Cloud related operators</a></li>
<li class="toctree-l4"><a class="reference internal" href="#changes-in-google-cloud-related-hooks">Changes in Google Cloud related hooks</a></li>
<li class="toctree-l4"><a class="reference internal" href="#changed-behaviour-of-using-default-value-when-accessing-variables">Changed behaviour of using default value when accessing variables</a></li>
<li class="toctree-l4"><a class="reference internal" href="#removal-of-airflow-home-config-setting">Removal of <code class="docutils literal notranslate"><span class="pre">airflow_home</span></code> config setting</a></li>
<li class="toctree-l4"><a class="reference internal" href="#change-of-two-methods-signatures-in-gcptransferservicehook">Change of two methods signatures in <code class="docutils literal notranslate"><span class="pre">GCPTransferServiceHook</span></code></a></li>
<li class="toctree-l4"><a class="reference internal" href="#moved-two-classes-to-different-modules">Moved two classes to different modules</a></li>
<li class="toctree-l4"><a class="reference internal" href="#fixed-typo-in-driver-class-path-in-sparksubmithook">Fixed typo in –driver-class-path in SparkSubmitHook</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="#new-feature">New Feature</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id137">Improvement</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id138">Bug fixes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id139">Misc/Internal</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id140">Doc-only changes</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#airflow-1-10-2-2019-01-19">Airflow 1.10.2 (2019-01-19)</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id141">Significant Changes</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#new-dag-processor-manager-log-location-config-option">New <code class="docutils literal notranslate"><span class="pre">dag_processor_manager_log_location</span></code> config option</a></li>
<li class="toctree-l4"><a class="reference internal" href="#dag-level-access-control-for-new-rbac-ui">DAG level Access Control for new RBAC UI</a></li>
<li class="toctree-l4"><a class="reference internal" href="#modification-to-ts-nodash-macro">Modification to <code class="docutils literal notranslate"><span class="pre">ts_nodash</span></code> macro</a></li>
<li class="toctree-l4"><a class="reference internal" href="#semantics-of-next-ds-prev-ds-changed-for-manually-triggered-runs">Semantics of next_ds/prev_ds changed for manually triggered runs</a></li>
<li class="toctree-l4"><a class="reference internal" href="#user-model-changes">User model changes</a></li>
<li class="toctree-l4"><a class="reference internal" href="#custom-auth-backends-interface-change">Custom auth backends interface change</a></li>
<li class="toctree-l4"><a class="reference internal" href="#support-autodetected-schemas-to-googlecloudstoragetobigqueryoperator">Support autodetected schemas to GoogleCloudStorageToBigQueryOperator</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="#id142">New features</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id143">Improvements</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id144">Bug fixes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id145">Doc-only changes</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#airflow-1-10-1-2018-11-13">Airflow 1.10.1 (2018-11-13)</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id146">Significant Changes</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#min-file-parsing-loop-time-config-option-temporarily-disabled">min_file_parsing_loop_time config option temporarily disabled</a></li>
<li class="toctree-l4"><a class="reference internal" href="#statsd-metrics">StatsD Metrics</a></li>
<li class="toctree-l4"><a class="reference internal" href="#emrhook-now-passes-all-of-connection-s-extra-to-createjobflow-api">EMRHook now passes all of connection’s extra to CreateJobFlow API</a></li>
<li class="toctree-l4"><a class="reference internal" href="#ldap-auth-backend-now-requires-tls">LDAP Auth Backend now requires TLS</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="#id147">New features</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id148">Improvements</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id149">Doc-only changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id150">Bug fixes</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#airflow-1-10-0-2018-08-03">Airflow 1.10.0 (2018-08-03)</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id151">Significant Changes</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#replace-dataprochook-await-calls-to-dataprochook-wait">Replace DataProcHook.await calls to DataProcHook.wait</a></li>
<li class="toctree-l4"><a class="reference internal" href="#setting-utf-8-as-default-mime-charset-in-email-utils">Setting UTF-8 as default mime_charset in email utils</a></li>
<li class="toctree-l4"><a class="reference internal" href="#add-a-configuration-variable-default-dag-run-display-number-to-control-numbers-of-dag-run-for-display">Add a configuration variable(default_dag_run_display_number) to control numbers of dag run for display</a></li>
<li class="toctree-l4"><a class="reference internal" href="#default-executor-for-subdagoperator-is-changed-to-sequentialexecutor">Default executor for SubDagOperator is changed to SequentialExecutor</a></li>
<li class="toctree-l4"><a class="reference internal" href="#new-webserver-ui-with-role-based-access-control">New Webserver UI with Role-Based Access Control</a><ul>
<li class="toctree-l5"><a class="reference internal" href="#setting-up-authentication">Setting up Authentication</a></li>
<li class="toctree-l5"><a class="reference internal" href="#creating-an-admin-account">Creating an Admin Account</a></li>
<li class="toctree-l5"><a class="reference internal" href="#using-your-new-ui">Using your new UI</a></li>
<li class="toctree-l5"><a class="reference internal" href="#breaking-changes">Breaking changes</a></li>
</ul>
</li>
<li class="toctree-l4"><a class="reference internal" href="#airflow-contrib-sensors-hdfs-sensors-renamed-to-airflow-contrib-sensors-hdfs-sensor">airflow.contrib.sensors.hdfs_sensors renamed to airflow.contrib.sensors.hdfs_sensor</a></li>
<li class="toctree-l4"><a class="reference internal" href="#mysql-setting-required">MySQL setting required</a></li>
<li class="toctree-l4"><a class="reference internal" href="#celery-config">Celery config</a></li>
<li class="toctree-l4"><a class="reference internal" href="#gcp-dataflow-operators">GCP Dataflow Operators</a></li>
<li class="toctree-l4"><a class="reference internal" href="#bigquery-hooks-and-operator">BigQuery Hooks and Operator</a></li>
<li class="toctree-l4"><a class="reference internal" href="#redshift-to-s3-operator">Redshift to S3 Operator</a></li>
<li class="toctree-l4"><a class="reference internal" href="#google-cloud-connection-string">Google cloud connection string</a></li>
<li class="toctree-l4"><a class="reference internal" href="#logging-configuration">Logging Configuration</a><ul>
<li class="toctree-l5"><a class="reference internal" href="#change-of-per-task-log-path">Change of per-task log path</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="#changelog">Changelog</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#airflow-1-9-0-2018-01-02">Airflow 1.9.0 (2018-01-02)</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id152">Significant Changes</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#ssh-hook-updates-along-with-new-ssh-operator-sftp-operator">SSH Hook updates, along with new SSH Operator &amp; SFTP Operator</a></li>
<li class="toctree-l4"><a class="reference internal" href="#s3hook-switched-to-use-boto3">S3Hook switched to use Boto3</a></li>
<li class="toctree-l4"><a class="reference internal" href="#logging-update">Logging update</a><ul>
<li class="toctree-l5"><a class="reference internal" href="#a-quick-recap-about-logging">A quick recap about logging</a></li>
<li class="toctree-l5"><a class="reference internal" href="#changes-in-airflow-logging">Changes in Airflow Logging</a></li>
<li class="toctree-l5"><a class="reference internal" href="#template-path-of-the-file-task-handler">Template path of the file_task_handler</a></li>
<li class="toctree-l5"><a class="reference internal" href="#i-m-using-s3log-or-gcslogs-what-do-i-do">I’m using S3Log or GCSLogs, what do I do!?</a></li>
</ul>
</li>
<li class="toctree-l4"><a class="reference internal" href="#id153">New Features</a><ul>
<li class="toctree-l5"><a class="reference internal" href="#dask-executor">Dask Executor</a></li>
</ul>
</li>
<li class="toctree-l4"><a class="reference internal" href="#deprecated-features">Deprecated Features</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="#id154">Changelog</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#airflow-1-8-2-2017-09-04">Airflow 1.8.2 (2017-09-04)</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id155">Significant Changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id156">Changelog</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#airflow-1-8-1-2017-05-09">Airflow 1.8.1 (2017-05-09)</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id157">Significant Changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id158">Changelog</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#airflow-1-8-0-2017-03-12">Airflow 1.8.0 (2017-03-12)</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id159">Significant Changes</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#database">Database</a></li>
<li class="toctree-l4"><a class="reference internal" href="#upgrade-systemd-unit-files">Upgrade systemd unit files</a></li>
<li class="toctree-l4"><a class="reference internal" href="#tasks-not-starting-although-dependencies-are-met-due-to-stricter-pool-checking">Tasks not starting although dependencies are met due to stricter pool checking</a></li>
<li class="toctree-l4"><a class="reference internal" href="#less-forgiving-scheduler-on-dynamic-start-date">Less forgiving scheduler on dynamic start_date</a></li>
<li class="toctree-l4"><a class="reference internal" href="#new-and-updated-scheduler-options">New and updated scheduler options</a><ul>
<li class="toctree-l5"><a class="reference internal" href="#child-process-log-directory">child_process_log_directory</a></li>
<li class="toctree-l5"><a class="reference internal" href="#run-duration">run_duration</a></li>
<li class="toctree-l5"><a class="reference internal" href="#num-runs">num_runs</a></li>
<li class="toctree-l5"><a class="reference internal" href="#min-file-process-interval">min_file_process_interval</a></li>
<li class="toctree-l5"><a class="reference internal" href="#min-file-parsing-loop-time">min_file_parsing_loop_time</a></li>
<li class="toctree-l5"><a class="reference internal" href="#dag-dir-list-interval">dag_dir_list_interval</a></li>
<li class="toctree-l5"><a class="reference internal" href="#catchup-by-default">catchup_by_default</a></li>
</ul>
</li>
<li class="toctree-l4"><a class="reference internal" href="#faulty-dags-do-not-show-an-error-in-the-web-ui">Faulty DAGs do not show an error in the Web UI</a></li>
<li class="toctree-l4"><a class="reference internal" href="#new-dags-are-paused-by-default">New DAGs are paused by default</a></li>
<li class="toctree-l4"><a class="reference internal" href="#airflow-context-variable-are-passed-to-hive-config-if-conf-is-specified">Airflow Context variable are passed to Hive config if conf is specified</a></li>
<li class="toctree-l4"><a class="reference internal" href="#google-cloud-operator-and-hook-alignment">Google Cloud Operator and Hook alignment</a></li>
<li class="toctree-l4"><a class="reference internal" href="#id160">Deprecated Features</a></li>
<li class="toctree-l4"><a class="reference internal" href="#known-issues">Known Issues</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="#id161">Changelog</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#airflow-1-7-1-2-2016-05-20">Airflow 1.7.1.2 (2016-05-20)</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id162">Significant Changes</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#changes-to-configuration">Changes to Configuration</a><ul>
<li class="toctree-l5"><a class="reference internal" href="#email-configuration-change">Email configuration change</a></li>
<li class="toctree-l5"><a class="reference internal" href="#s3-configuration-change">S3 configuration change</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="#id163">Changelog</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#airflow-1-7-1-2016-05-19">Airflow 1.7.1 (2016-05-19)</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="best-practices.html">Best Practices</a></li>
<li class="toctree-l1"><a class="reference internal" href="production-deployment.html">Production Deployment</a></li>
<li class="toctree-l1"><a class="reference internal" href="faq.html">FAQ</a></li>
<li class="toctree-l1"><a class="reference internal" href="privacy_notice.html">Privacy Notice</a></li>
</ul>
<p class="caption" role="heading"><span class="caption-text">References</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="operators-and-hooks-ref.html">Operators and hooks</a></li>
<li class="toctree-l1"><a class="reference internal" href="cli-and-env-variables-ref.html">CLI</a></li>
<li class="toctree-l1"><a class="reference internal" href="templates-ref.html">Templates</a></li>
<li class="toctree-l1"><a class="reference internal" href="python-api-ref.html">Python API</a></li>
<li class="toctree-l1"><a class="reference internal" href="stable-rest-api-ref.html">Stable REST API</a></li>
<li class="toctree-l1"><a class="reference internal" href="deprecated-rest-api-ref.html">Deprecated REST API</a></li>
<li class="toctree-l1"><a class="reference internal" href="configurations-ref.html">Configurations</a></li>
<li class="toctree-l1"><a class="reference internal" href="extra-packages-ref.html">Extra packages</a></li>
<li class="toctree-l1"><a class="reference internal" href="migrations-ref.html">Database Migrations</a></li>
</ul>
</div>
<style type="text/css">
.toctree {
}
.toctree li {
list-style: none;
}
.toctree .caption {
font-family: Roboto;
font-size: 18px;
font-weight: bold;
font-stretch: normal;
font-style: normal;
line-height: 1.33;
letter-spacing: normal;
color: #51504f;
padding-bottom: 13px;
text-transform: uppercase;
margin-bottom: 0;
}
.toctree .current > a:not([href="#"]) {
color: #017cee;
}
.toctree > ul {
padding-left: 0;
}
.toctree ul {
padding-left: 15px;
display: none;
}
.toctree > ul,
.toctree li.current > ul {
display: block;
}
.toctree a .toctree-expand {
display: inline-block;
position: relative;
height: 1em;
}
.toctree a .toctree-expand:before {
position: absolute;
top: 6px;
left: -12px;
content: '►';
font-size: 7px;
}
.toctree .current > a > .toctree-expand:before {
content: '▼';
}
.toctree .current {
color: #017cee;
}
.toctree li {
font-family: Roboto;
font-size: 16px;
font-weight: normal;
font-stretch: normal;
font-style: normal;
line-height: 1.63;
letter-spacing: normal;
color: #707070;
}
</style>
</div>
<main class="col-12 col-md-9 col-xl-8" role="main">
<div role="navigation" aria-label="breadcrumbs navigation" class="d-none d-md-block d-print-none">
<ul class="breadcrumb">
<li class="breadcrumb-item"><a href="index.html" class="icon icon-home"> Home</a></li>
<li class="breadcrumb-item"><a href="release_notes.html"> Release Notes</a></li>
</ul>
</div>
<div class="rst-content">
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body" role="main">
<blockquote>
<div></div></blockquote>
<div class="section" id="release-notes">
<h1>Release Notes<a class="headerlink" href="#release-notes" title="Permalink to this heading"></a></h1>
<blockquote>
<div></div></blockquote>
<div class="contents local topic" id="apache-airflow-releases">
<p class="topic-title">Apache Airflow Releases</p>
<ul class="simple">
<li><p><a class="reference internal" href="#airflow-2-3-3-2022-07-05" id="id164">Airflow 2.3.3 (2022-07-05)</a></p></li>
<li><p><a class="reference internal" href="#airflow-2-3-2-2022-06-04" id="id165">Airflow 2.3.2 (2022-06-04)</a></p></li>
<li><p><a class="reference internal" href="#airflow-2-3-1-2022-05-25" id="id166">Airflow 2.3.1 (2022-05-25)</a></p></li>
<li><p><a class="reference internal" href="#airflow-2-3-0-2022-04-30" id="id167">Airflow 2.3.0 (2022-04-30)</a></p></li>
<li><p><a class="reference internal" href="#airflow-2-2-5-2022-04-04" id="id168">Airflow 2.2.5, (2022-04-04)</a></p></li>
<li><p><a class="reference internal" href="#airflow-2-2-4-2022-02-22" id="id169">Airflow 2.2.4, (2022-02-22)</a></p></li>
<li><p><a class="reference internal" href="#airflow-2-2-3-2021-12-21" id="id170">Airflow 2.2.3, (2021-12-21)</a></p></li>
<li><p><a class="reference internal" href="#airflow-2-2-2-2021-11-15" id="id171">Airflow 2.2.2 (2021-11-15)</a></p></li>
<li><p><a class="reference internal" href="#airflow-2-2-1-2021-10-29" id="id172">Airflow 2.2.1 (2021-10-29)</a></p></li>
<li><p><a class="reference internal" href="#airflow-2-2-0-2021-10-11" id="id173">Airflow 2.2.0 (2021-10-11)</a></p></li>
<li><p><a class="reference internal" href="#airflow-2-1-4-2021-09-18" id="id174">Airflow 2.1.4 (2021-09-18)</a></p></li>
<li><p><a class="reference internal" href="#airflow-2-1-3-2021-08-23" id="id175">Airflow 2.1.3 (2021-08-23)</a></p></li>
<li><p><a class="reference internal" href="#airflow-2-1-2-2021-07-14" id="id176">Airflow 2.1.2 (2021-07-14)</a></p></li>
<li><p><a class="reference internal" href="#airflow-2-1-1-2021-07-02" id="id177">Airflow 2.1.1 (2021-07-02)</a></p></li>
<li><p><a class="reference internal" href="#airflow-2-1-0-2021-05-21" id="id178">Airflow 2.1.0 (2021-05-21)</a></p></li>
<li><p><a class="reference internal" href="#airflow-2-0-2-2021-04-19" id="id179">Airflow 2.0.2 (2021-04-19)</a></p></li>
<li><p><a class="reference internal" href="#airflow-2-0-1-2021-02-08" id="id180">Airflow 2.0.1 (2021-02-08)</a></p></li>
<li><p><a class="reference internal" href="#airflow-2-0-0-2020-12-18" id="id181">Airflow 2.0.0 (2020-12-18)</a></p></li>
<li><p><a class="reference internal" href="#airflow-1-10-15-2021-03-17" id="id182">Airflow 1.10.15 (2021-03-17)</a></p></li>
<li><p><a class="reference internal" href="#airflow-1-10-14-2020-12-10" id="id183">Airflow 1.10.14 (2020-12-10)</a></p></li>
<li><p><a class="reference internal" href="#airflow-1-10-13-2020-11-25" id="id184">Airflow 1.10.13 (2020-11-25)</a></p></li>
<li><p><a class="reference internal" href="#airflow-1-10-12-2020-08-25" id="id185">Airflow 1.10.12 (2020-08-25)</a></p></li>
<li><p><a class="reference internal" href="#airflow-1-10-11-2020-07-10" id="id186">Airflow 1.10.11 (2020-07-10)</a></p></li>
<li><p><a class="reference internal" href="#airflow-1-10-10-2020-04-09" id="id187">Airflow 1.10.10 (2020-04-09)</a></p></li>
<li><p><a class="reference internal" href="#airflow-1-10-9-2020-02-07" id="id188">Airflow 1.10.9 (2020-02-07)</a></p></li>
<li><p><a class="reference internal" href="#airflow-1-10-8-2020-02-07" id="id189">Airflow 1.10.8 (2020-02-07)</a></p></li>
<li><p><a class="reference internal" href="#airflow-1-10-7-2019-12-24" id="id190">Airflow 1.10.7 (2019-12-24)</a></p></li>
<li><p><a class="reference internal" href="#airflow-1-10-6-2019-10-28" id="id191">Airflow 1.10.6 (2019-10-28)</a></p></li>
<li><p><a class="reference internal" href="#airflow-1-10-5-2019-09-04" id="id192">Airflow 1.10.5 (2019-09-04)</a></p></li>
<li><p><a class="reference internal" href="#airflow-1-10-4-2019-08-06" id="id193">Airflow 1.10.4 (2019-08-06)</a></p></li>
<li><p><a class="reference internal" href="#airflow-1-10-3-2019-04-09" id="id194">Airflow 1.10.3 (2019-04-09)</a></p></li>
<li><p><a class="reference internal" href="#airflow-1-10-2-2019-01-19" id="id195">Airflow 1.10.2 (2019-01-19)</a></p></li>
<li><p><a class="reference internal" href="#airflow-1-10-1-2018-11-13" id="id196">Airflow 1.10.1 (2018-11-13)</a></p></li>
<li><p><a class="reference internal" href="#airflow-1-10-0-2018-08-03" id="id197">Airflow 1.10.0 (2018-08-03)</a></p></li>
<li><p><a class="reference internal" href="#airflow-1-9-0-2018-01-02" id="id198">Airflow 1.9.0 (2018-01-02)</a></p></li>
<li><p><a class="reference internal" href="#airflow-1-8-2-2017-09-04" id="id199">Airflow 1.8.2 (2017-09-04)</a></p></li>
<li><p><a class="reference internal" href="#airflow-1-8-1-2017-05-09" id="id200">Airflow 1.8.1 (2017-05-09)</a></p></li>
<li><p><a class="reference internal" href="#airflow-1-8-0-2017-03-12" id="id201">Airflow 1.8.0 (2017-03-12)</a></p></li>
<li><p><a class="reference internal" href="#airflow-1-7-1-2-2016-05-20" id="id202">Airflow 1.7.1.2 (2016-05-20)</a></p></li>
<li><p><a class="reference internal" href="#airflow-1-7-1-2016-05-19" id="id203">Airflow 1.7.1 (2016-05-19)</a></p></li>
</ul>
</div>
<div class="section" id="airflow-2-3-3-2022-07-05">
<h2><a class="toc-backref" href="#id164">Airflow 2.3.3 (2022-07-05)</a><a class="headerlink" href="#airflow-2-3-3-2022-07-05" title="Permalink to this heading"></a></h2>
<div class="section" id="significant-changes">
<h3>Significant Changes<a class="headerlink" href="#significant-changes" title="Permalink to this heading"></a></h3>
<div class="section" id="we-ve-upgraded-flask-app-builder-to-a-major-version-4-24399">
<h4>We’ve upgraded Flask App Builder to a major version 4.* (#24399)<a class="headerlink" href="#we-ve-upgraded-flask-app-builder-to-a-major-version-4-24399" title="Permalink to this heading"></a></h4>
<p>Flask App Builder is one of the important components of Airflow Webserver, as
it uses a lot of dependencies that are essential to run the webserver and integrate it
in enterprise environments - especially authentication.</p>
<p>The FAB 4.* upgrades a number of dependencies to major releases, which upgrades them to versions
that have a number of security issues fixed. A lot of tests were performed to bring the dependencies
in a backwards-compatible way, however the dependencies themselves implement breaking changes in their
internals so it might be that some of those changes might impact the users in case they are using the
libraries for their own purposes.</p>
<p>One important change that you likely will need to apply to Oauth configuration is to add
<code class="docutils literal notranslate"><span class="pre">server_metadata_url</span></code> or <code class="docutils literal notranslate"><span class="pre">jwks_uri</span></code> and you can read about it more
in <a class="reference external" href="https://github.com/dpgaspar/Flask-AppBuilder/issues/1861">this issue</a>.</p>
<p>Here is the list of breaking changes in dependencies that comes together with FAB 4:</p>
<blockquote>
<div><ul class="simple">
<li><p><code class="docutils literal notranslate"><span class="pre">Flask</span></code> from 1.X to 2.X <a class="reference external" href="https://flask.palletsprojects.com/en/2.0.x/changes/#version-2-0-0">breaking changes</a></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">flask-jwt-extended</span></code> 3.X to 4.X <a class="reference external" href="https://flask-jwt-extended.readthedocs.io/en/stable/v4_upgrade_guide/">breaking changes:</a></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">Jinja2</span></code> 2.X to 3.X <a class="reference external" href="https://jinja.palletsprojects.com/en/3.0.x/changes/#version-3-0-0">breaking changes:</a></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">Werkzeug</span></code> 1.X to 2.X <a class="reference external" href="https://werkzeug.palletsprojects.com/en/2.0.x/changes/#version-2-0-0">breaking changes</a></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">pyJWT</span></code> 1.X to 2.X <a class="reference external" href="https://pyjwt.readthedocs.io/en/stable/changelog.html#v2-0-0">breaking changes:</a></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">Click</span></code> 7.X to 8.X <a class="reference external" href="https://click.palletsprojects.com/en/8.0.x/changes/#version-8-0-0">breaking changes:</a></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">itsdangerous</span></code> 1.X to 2.X <a class="reference external" href="https://github.com/pallets/itsdangerous/blob/main/CHANGES.rst#version-200">breaking changes</a></p></li>
</ul>
</div></blockquote>
</div>
</div>
<div class="section" id="bug-fixes">
<h3>Bug Fixes<a class="headerlink" href="#bug-fixes" title="Permalink to this heading"></a></h3>
<ul class="simple">
<li><p>Fix exception in mini task scheduler (#24865)</p></li>
<li><p>Fix cycle bug with attaching label to task group (#24847)</p></li>
<li><p>Fix timestamp defaults for <code class="docutils literal notranslate"><span class="pre">sensorinstance</span></code> (#24638)</p></li>
<li><p>Move fallible <code class="docutils literal notranslate"><span class="pre">ti.task.dag</span></code> assignment back inside <code class="docutils literal notranslate"><span class="pre">try/except</span></code> block (#24533) (#24592)</p></li>
<li><p>Add missing types to <code class="docutils literal notranslate"><span class="pre">FSHook</span></code> (#24470)</p></li>
<li><p>Mask secrets in <code class="docutils literal notranslate"><span class="pre">stdout</span></code> for <code class="docutils literal notranslate"><span class="pre">airflow</span> <span class="pre">tasks</span> <span class="pre">test</span></code> (#24362)</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">DebugExecutor</span></code> use <code class="docutils literal notranslate"><span class="pre">ti.run()</span></code> instead of <code class="docutils literal notranslate"><span class="pre">ti._run_raw_task</span></code> (#24357)</p></li>
<li><p>Fix bugs in <code class="docutils literal notranslate"><span class="pre">URI</span></code> constructor for <code class="docutils literal notranslate"><span class="pre">MySQL</span></code> connection (#24320)</p></li>
<li><p>Missing <code class="docutils literal notranslate"><span class="pre">scheduleinterval</span></code> nullable true added in <code class="docutils literal notranslate"><span class="pre">openapi</span></code> (#24253)</p></li>
<li><p>Unify <code class="docutils literal notranslate"><span class="pre">return_code</span></code> interface for task runner (#24093)</p></li>
<li><p>Handle occasional deadlocks in trigger with retries (#24071)</p></li>
<li><p>Remove special serde logic for mapped <code class="docutils literal notranslate"><span class="pre">op_kwargs</span></code> (#23860)</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">ExternalTaskSensor</span></code> respects <code class="docutils literal notranslate"><span class="pre">soft_fail</span></code> if the external task enters a <code class="docutils literal notranslate"><span class="pre">failed_state</span></code> (#23647)</p></li>
<li><p>Fix <code class="docutils literal notranslate"><span class="pre">StatD</span></code> timing metric units (#21106)</p></li>
<li><p>Add <code class="docutils literal notranslate"><span class="pre">cache_ok</span></code> flag to sqlalchemy TypeDecorators. (#24499)</p></li>
<li><p>Allow for <code class="docutils literal notranslate"><span class="pre">LOGGING_LEVEL=DEBUG</span></code> (#23360)</p></li>
<li><p>Fix grid date ticks (#24738, #24849)</p></li>
<li><p>Debounce status highlighting in Grid view (#24710)</p></li>
<li><p>Fix Grid vertical scrolling (#24684)</p></li>
<li><p>don’t try to render child rows for closed groups (#24637)</p></li>
<li><p>Do not calculate grid root instances (#24528)</p></li>
<li><p>Maintain grid view selection on filtering upstream (#23779)</p></li>
<li><p>Speed up <code class="docutils literal notranslate"><span class="pre">grid_data</span></code> endpoint by 10x (#24284)</p></li>
<li><p>Apply per-run log templates to log handlers (#24153)</p></li>
<li><p>Don’t crash scheduler if exec config has old k8s objects (#24117)</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">TI.log_url</span></code> fix for <code class="docutils literal notranslate"><span class="pre">map_index</span></code> (#24335)</p></li>
<li><p>Fix migration <code class="docutils literal notranslate"><span class="pre">0080_2_0_2</span></code> - Replace null values before setting column not null (#24585)</p></li>
<li><p>Patch <code class="docutils literal notranslate"><span class="pre">sql_alchemy_conn</span></code> if old Postgres schemes used (#24569)</p></li>
<li><p>Seed <code class="docutils literal notranslate"><span class="pre">log_template</span></code> table (#24511)</p></li>
<li><p>Fix deprecated <code class="docutils literal notranslate"><span class="pre">log_id_template</span></code> value (#24506)</p></li>
<li><p>Fix toast messages (#24505)</p></li>
<li><p>Add indexes for CASCADE deletes for <code class="docutils literal notranslate"><span class="pre">task_instance</span></code> (#24488)</p></li>
<li><p>Return empty dict if Pod JSON encoding fails (#24478)</p></li>
<li><p>Improve grid rendering performance with a custom tooltip (#24417, #24449)</p></li>
<li><p>Check for <code class="docutils literal notranslate"><span class="pre">run_id</span></code> for grid group summaries (#24327)</p></li>
<li><p>Optimize calendar view for cron scheduled DAGs (#24262)</p></li>
<li><p>Use <code class="docutils literal notranslate"><span class="pre">get_hostname</span></code> instead of <code class="docutils literal notranslate"><span class="pre">socket.getfqdn</span></code> (#24260)</p></li>
<li><p>Check that edge nodes actually exist (#24166)</p></li>
<li><p>Fix <code class="docutils literal notranslate"><span class="pre">useTasks</span></code> crash on error (#24152)</p></li>
<li><p>Do not fail re-queued TIs (#23846)</p></li>
<li><p>Reduce grid view API calls (#24083)</p></li>
<li><p>Rename Permissions to Permission Pairs. (#24065)</p></li>
<li><p>Replace <code class="docutils literal notranslate"><span class="pre">use_task_execution_date</span></code> with <code class="docutils literal notranslate"><span class="pre">use_task_logical_date</span></code> (#23983)</p></li>
<li><p>Grid fix details button truncated and small UI tweaks (#23934)</p></li>
<li><p>Add TaskInstance State <code class="docutils literal notranslate"><span class="pre">REMOVED</span></code> to finished states and success states (#23797)</p></li>
<li><p>Fix mapped task immutability after clear (#23667)</p></li>
<li><p>Fix permission issue for dag that has dot in name (#23510)</p></li>
<li><p>Fix closing connection <code class="docutils literal notranslate"><span class="pre">dbapi.get_pandas_df</span></code> (#23452)</p></li>
<li><p>Check bag DAG <code class="docutils literal notranslate"><span class="pre">schedule_interval</span></code> match timetable (#23113)</p></li>
<li><p>Parse error for task added to multiple groups (#23071)</p></li>
<li><p>Fix flaky order of returned dag runs (#24405)</p></li>
<li><p>Migrate <code class="docutils literal notranslate"><span class="pre">jsx</span></code> files that affect run/task selection to <code class="docutils literal notranslate"><span class="pre">tsx</span></code> (#24509)</p></li>
<li><p>Fix links to sources for examples (#24386)</p></li>
<li><p>Set proper <code class="docutils literal notranslate"><span class="pre">Content-Type</span></code> and <code class="docutils literal notranslate"><span class="pre">chartset</span></code> on <code class="docutils literal notranslate"><span class="pre">grid_data</span></code> endpoint (#24375)</p></li>
</ul>
</div>
<div class="section" id="doc-only-changes">
<h3>Doc only changes<a class="headerlink" href="#doc-only-changes" title="Permalink to this heading"></a></h3>
<ul class="simple">
<li><p>Fix doc description of <code class="docutils literal notranslate"><span class="pre">[core]</span></code> parallelism config setting (#23768)</p></li>
<li><p>Update templates doc to mention <code class="docutils literal notranslate"><span class="pre">extras</span></code> and format Airflow <code class="docutils literal notranslate"><span class="pre">Vars</span></code> / <code class="docutils literal notranslate"><span class="pre">Conns</span></code> (#24735)</p></li>
<li><p>Document built in Timetables (#23099)</p></li>
<li><p>Alphabetizes two tables (#23923)</p></li>
<li><p>Clarify that users should not use Maria DB (#24556)</p></li>
<li><p>Add imports to deferring code samples (#24544)</p></li>
<li><p>Add note about image regeneration in June 2022 (#24524)</p></li>
<li><p>Small cleanup of <code class="docutils literal notranslate"><span class="pre">get_current_context()</span></code> chapter (#24482)</p></li>
<li><p>Fix default 2.2.5 <code class="docutils literal notranslate"><span class="pre">log_id_template</span></code> (#24455)</p></li>
<li><p>Update description of installing providers separately from core (#24454)</p></li>
<li><p>Mention context variables and logging (#24304)</p></li>
</ul>
</div>
<div class="section" id="misc-internal">
<h3>Misc/Internal<a class="headerlink" href="#misc-internal" title="Permalink to this heading"></a></h3>
<ul class="simple">
<li><p>Do not support <code class="docutils literal notranslate"><span class="pre">MSSQL</span></code> less than <code class="docutils literal notranslate"><span class="pre">v2017</span></code> in code (#24095)</p></li>
<li><p>Drop Python <code class="docutils literal notranslate"><span class="pre">3.6</span></code> compatibility objects/modules (#24048)</p></li>
<li><p>Remove upper-binding for SQLAlchemy (#24819)</p></li>
<li><p>Remove internet explorer support (#24495)</p></li>
<li><p>Removing magic status code numbers from <code class="docutils literal notranslate"><span class="pre">api_connexion</span></code> (#24050)</p></li>
<li><p>Upgrade FAB to <code class="docutils literal notranslate"><span class="pre">4.1.2</span></code> (#24619)</p></li>
<li><p>Switch Markdown engine to <code class="docutils literal notranslate"><span class="pre">markdown-it-py</span></code> (#19702)</p></li>
<li><p>Update <code class="docutils literal notranslate"><span class="pre">rich</span></code> to latest version across the board. (#24186)</p></li>
<li><p>Get rid of <code class="docutils literal notranslate"><span class="pre">TimedJSONWebSignatureSerializer</span></code> (#24519)</p></li>
<li><p>Update flask-appbuilder <code class="docutils literal notranslate"><span class="pre">authlib</span></code>/ <code class="docutils literal notranslate"><span class="pre">oauth</span></code> dependency (#24516)</p></li>
<li><p>Upgrade to <code class="docutils literal notranslate"><span class="pre">webpack</span></code> 5 (#24485)</p></li>
<li><p>Add <code class="docutils literal notranslate"><span class="pre">typescript</span></code> (#24337)</p></li>
<li><p>The JWT claims in the request to retrieve logs have been standardized: we use <code class="docutils literal notranslate"><span class="pre">nbf</span></code> and <code class="docutils literal notranslate"><span class="pre">aud</span></code> claims for
maturity and audience of the requests. Also “filename” payload field is used to keep log name. (#24519)</p></li>
<li><p>Address all <code class="docutils literal notranslate"><span class="pre">yarn</span></code> test warnings (#24722)</p></li>
<li><p>Upgrade to react 18 and chakra 2 (#24430)</p></li>
<li><p>Refactor <code class="docutils literal notranslate"><span class="pre">DagRun.verify_integrity</span></code> (#24114)</p></li>
<li><p>Upgrade FAB to <code class="docutils literal notranslate"><span class="pre">4.1.1</span></code> (#24399)</p></li>
<li><p>We now need at least <code class="docutils literal notranslate"><span class="pre">Flask-WTF</span> <span class="pre">0.15</span></code> (#24621)</p></li>
</ul>
</div>
</div>
<div class="section" id="airflow-2-3-2-2022-06-04">
<h2><a class="toc-backref" href="#id165">Airflow 2.3.2 (2022-06-04)</a><a class="headerlink" href="#airflow-2-3-2-2022-06-04" title="Permalink to this heading"></a></h2>
<p>No significant changes</p>
<div class="section" id="id1">
<h3>Bug Fixes<a class="headerlink" href="#id1" title="Permalink to this heading"></a></h3>
<ul class="simple">
<li><p>Run the <code class="docutils literal notranslate"><span class="pre">check_migration</span></code> loop at least once</p></li>
<li><p>Fix grid view for mapped tasks (#24059)</p></li>
<li><p>Icons in grid view for different DAG run types (#23970)</p></li>
<li><p>Faster grid view (#23951)</p></li>
<li><p>Disallow calling expand with no arguments (#23463)</p></li>
<li><p>Add missing <code class="docutils literal notranslate"><span class="pre">is_mapped</span></code> field to Task response. (#23319)</p></li>
<li><p>DagFileProcessorManager: Start a new process group only if current process not a session leader (#23872)</p></li>
<li><p>Mask sensitive values for not-yet-running TIs (#23807)</p></li>
<li><p>Add cascade to <code class="docutils literal notranslate"><span class="pre">dag_tag</span></code> to <code class="docutils literal notranslate"><span class="pre">dag</span></code> foreign key (#23444)</p></li>
<li><p>Use <code class="docutils literal notranslate"><span class="pre">--subdir</span></code> argument value for standalone dag processor. (#23864)</p></li>
<li><p>Highlight task states by hovering on legend row (#23678)</p></li>
<li><p>Fix and speed up grid view (#23947)</p></li>
<li><p>Prevent UI from crashing if grid task instances are null (#23939)</p></li>
<li><p>Remove redundant register exit signals in <code class="docutils literal notranslate"><span class="pre">dag-processor</span></code> command (#23886)</p></li>
<li><p>Add <code class="docutils literal notranslate"><span class="pre">__wrapped__</span></code> property to <code class="docutils literal notranslate"><span class="pre">_TaskDecorator</span></code> (#23830)</p></li>
<li><p>Fix UnboundLocalError when <code class="docutils literal notranslate"><span class="pre">sql</span></code> is empty list in DbApiHook (#23816)</p></li>
<li><p>Enable clicking on DAG owner in autocomplete dropdown (#23804)</p></li>
<li><p>Simplify flash message for <code class="docutils literal notranslate"><span class="pre">_airflow_moved</span></code> tables (#23635)</p></li>
<li><p>Exclude missing tasks from the gantt view (#23627)</p></li>
</ul>
</div>
<div class="section" id="id2">
<h3>Doc only changes<a class="headerlink" href="#id2" title="Permalink to this heading"></a></h3>
<ul class="simple">
<li><p>Add column names for DB Migration Reference (#23853)</p></li>
</ul>
</div>
<div class="section" id="id3">
<h3>Misc/Internal<a class="headerlink" href="#id3" title="Permalink to this heading"></a></h3>
<ul class="simple">
<li><p>Remove pinning for xmltodict (#23992)</p></li>
</ul>
</div>
</div>
<div class="section" id="airflow-2-3-1-2022-05-25">
<h2><a class="toc-backref" href="#id166">Airflow 2.3.1 (2022-05-25)</a><a class="headerlink" href="#airflow-2-3-1-2022-05-25" title="Permalink to this heading"></a></h2>
<div class="section" id="id4">
<h3>Significant Changes<a class="headerlink" href="#id4" title="Permalink to this heading"></a></h3>
<p>No significant changes.</p>
</div>
<div class="section" id="id5">
<h3>Bug Fixes<a class="headerlink" href="#id5" title="Permalink to this heading"></a></h3>
<ul class="simple">
<li><p>Automatically reschedule stalled queued tasks in <code class="docutils literal notranslate"><span class="pre">CeleryExecutor</span></code> (#23690)</p></li>
<li><p>Fix expand/collapse all buttons (#23590)</p></li>
<li><p>Grid view status filters (#23392)</p></li>
<li><p>Expand/collapse all groups (#23487)</p></li>
<li><p>Fix retrieval of deprecated non-config values (#23723)</p></li>
<li><p>Fix secrets rendered in UI when task is not executed. (#22754)</p></li>
<li><p>Fix provider import error matching (#23825)</p></li>
<li><p>Fix regression in ignoring symlinks (#23535)</p></li>
<li><p>Fix <code class="docutils literal notranslate"><span class="pre">dag-processor</span></code> fetch metadata database config (#23575)</p></li>
<li><p>Fix auto upstream dep when expanding non-templated field (#23771)</p></li>
<li><p>Fix task log is not captured (#23684)</p></li>
<li><p>Add <code class="docutils literal notranslate"><span class="pre">reschedule</span></code> to the serialized fields for the <code class="docutils literal notranslate"><span class="pre">BaseSensorOperator</span></code> (#23674)</p></li>
<li><p>Modify db clean to also catch the ProgrammingError exception (#23699)</p></li>
<li><p>Remove titles from link buttons (#23736)</p></li>
<li><p>Fix grid details header text overlap (#23728)</p></li>
<li><p>Ensure <code class="docutils literal notranslate"><span class="pre">execution_timeout</span></code> as timedelta (#23655)</p></li>
<li><p>Don’t run pre-migration checks for downgrade (#23634)</p></li>
<li><p>Add index for event column in log table (#23625)</p></li>
<li><p>Implement <code class="docutils literal notranslate"><span class="pre">send_callback</span></code> method for <code class="docutils literal notranslate"><span class="pre">CeleryKubernetesExecutor</span></code> and <code class="docutils literal notranslate"><span class="pre">LocalKubernetesExecutor</span></code> (#23617)</p></li>
<li><p>Fix <code class="docutils literal notranslate"><span class="pre">PythonVirtualenvOperator</span></code> templated_fields (#23559)</p></li>
<li><p>Apply specific ID collation to <code class="docutils literal notranslate"><span class="pre">root_dag_id</span></code> too (#23536)</p></li>
<li><p>Prevent <code class="docutils literal notranslate"><span class="pre">KubernetesJobWatcher</span></code> getting stuck on resource too old (#23521)</p></li>
<li><p>Fix scheduler crash when expanding with mapped task that returned none (#23486)</p></li>
<li><p>Fix broken dagrun links when many runs start at the same time (#23462)</p></li>
<li><p>Fix: Exception when parsing log #20966 (#23301)</p></li>
<li><p>Handle invalid date parsing in webserver views. (#23161)</p></li>
<li><p>Pools with negative open slots should not block other pools (#23143)</p></li>
<li><p>Move around overflow, position and padding (#23044)</p></li>
<li><p>Change approach to finding bad rows to LEFT OUTER JOIN. (#23528)</p></li>
<li><p>Only count bad refs when <code class="docutils literal notranslate"><span class="pre">moved</span></code> table exists (#23491)</p></li>
<li><p>Visually distinguish task group summary (#23488)</p></li>
<li><p>Remove color change for highly nested groups (#23482)</p></li>
<li><p>Optimize 2.3.0 pre-upgrade check queries (#23458)</p></li>
<li><p>Add backward compatibility for <code class="docutils literal notranslate"><span class="pre">core__sql_alchemy_conn__cmd</span></code> (#23441)</p></li>
<li><p>Fix literal cross product expansion (#23434)</p></li>
<li><p>Fix broken task instance link in xcom list (#23367)</p></li>
<li><p>Fix connection test button (#23345)</p></li>
<li><p>fix cli <code class="docutils literal notranslate"><span class="pre">airflow</span> <span class="pre">dags</span> <span class="pre">show</span></code> for mapped operator (#23339)</p></li>
<li><p>Hide some task instance attributes (#23338)</p></li>
<li><p>Don’t show grid actions if server would reject with permission denied (#23332)</p></li>
<li><p>Use run_id for <code class="docutils literal notranslate"><span class="pre">ti.mark_success_url</span></code> (#23330)</p></li>
<li><p>Fix update user auth stats (#23314)</p></li>
<li><p>Use <code class="docutils literal notranslate"><span class="pre">&lt;Time</span> <span class="pre">/&gt;</span></code> in Mapped Instance table (#23313)</p></li>
<li><p>Fix duplicated Kubernetes DeprecationWarnings (#23302)</p></li>
<li><p>Store grid view selection in url params (#23290)</p></li>
<li><p>Remove custom signal handling in Triggerer (#23274)</p></li>
<li><p>Override pool for TaskInstance when pool is passed from cli. (#23258)</p></li>
<li><p>Show warning if ‘/’ is used in a DAG run ID (#23106)</p></li>
<li><p>Use kubernetes queue in kubernetes hybrid executors (#23048)</p></li>
<li><p>Add tags inside try block. (#21784)</p></li>
</ul>
</div>
<div class="section" id="id6">
<h3>Doc only changes<a class="headerlink" href="#id6" title="Permalink to this heading"></a></h3>
<ul class="simple">
<li><p>Move <code class="docutils literal notranslate"><span class="pre">dag_processing.processor_timeouts</span></code> to counters section (#23393)</p></li>
<li><p>Clarify that bundle extras should not be used for PyPi installs (#23697)</p></li>
<li><p>Synchronize support for Postgres and K8S in docs (#23673)</p></li>
<li><p>Replace DummyOperator references in docs (#23502)</p></li>
<li><p>Add doc notes for keyword-only args for <code class="docutils literal notranslate"><span class="pre">expand()</span></code> and <code class="docutils literal notranslate"><span class="pre">partial()</span></code> (#23373)</p></li>
<li><p>Document fix for broken elasticsearch logs with 2.3.0+ upgrade (#23821)</p></li>
</ul>
</div>
<div class="section" id="id7">
<h3>Misc/Internal<a class="headerlink" href="#id7" title="Permalink to this heading"></a></h3>
<ul class="simple">
<li><p>Add typing for airflow/configuration.py (#23716)</p></li>
<li><p>Disable Flower by default from docker-compose (#23685)</p></li>
<li><p>Added postgres 14 to support versions(including breeze) (#23506)</p></li>
<li><p>add K8S 1.24 support (#23637)</p></li>
<li><p>Refactor code references from tree to grid (#23254)</p></li>
</ul>
</div>
</div>
<div class="section" id="airflow-2-3-0-2022-04-30">
<h2><a class="toc-backref" href="#id167">Airflow 2.3.0 (2022-04-30)</a><a class="headerlink" href="#airflow-2-3-0-2022-04-30" title="Permalink to this heading"></a></h2>
<p>For production docker image related changes, see the <a class="reference external" href="https://airflow.apache.org/docs/docker-stack/changelog.html">Docker Image Changelog</a>.</p>
<div class="section" id="id8">
<h3>Significant Changes<a class="headerlink" href="#id8" title="Permalink to this heading"></a></h3>
<div class="section" id="passing-execution-date-to-xcom-set-xcom-clear-xcom-get-one-and-xcom-get-many-is-deprecated-19825">
<h4>Passing <code class="docutils literal notranslate"><span class="pre">execution_date</span></code> to <code class="docutils literal notranslate"><span class="pre">XCom.set()</span></code>, <code class="docutils literal notranslate"><span class="pre">XCom.clear()</span></code> , <code class="docutils literal notranslate"><span class="pre">XCom.get_one()</span></code> , and <code class="docutils literal notranslate"><span class="pre">XCom.get_many()</span></code> is deprecated (#19825)<a class="headerlink" href="#passing-execution-date-to-xcom-set-xcom-clear-xcom-get-one-and-xcom-get-many-is-deprecated-19825" title="Permalink to this heading"></a></h4>
<p>Continuing the effort to bind TaskInstance to a DagRun, XCom entries are now also tied to a DagRun. Use the <code class="docutils literal notranslate"><span class="pre">run_id</span></code> argument to specify the DagRun instead.</p>
</div>
<div class="section" id="task-log-templates-are-now-read-from-the-metadata-database-instead-of-airflow-cfg-20165">
<h4>Task log templates are now read from the metadata database instead of <code class="docutils literal notranslate"><span class="pre">airflow.cfg</span></code> (#20165)<a class="headerlink" href="#task-log-templates-are-now-read-from-the-metadata-database-instead-of-airflow-cfg-20165" title="Permalink to this heading"></a></h4>
<p>Previously, a task’s log is dynamically rendered from the <code class="docutils literal notranslate"><span class="pre">[core]</span> <span class="pre">log_filename_template</span></code> and <code class="docutils literal notranslate"><span class="pre">[elasticsearch]</span> <span class="pre">log_id_template</span></code> config values at runtime. This resulted in unfortunate characteristics, e.g. it is impractical to modify the config value after an Airflow instance is running for a while, since all existing task logs have be saved under the previous format and cannot be found with the new config value.</p>
<p>A new <code class="docutils literal notranslate"><span class="pre">log_template</span></code> table is introduced to solve this problem. This table is synchronized with the aforementioned config values every time Airflow starts, and a new field <code class="docutils literal notranslate"><span class="pre">log_template_id</span></code> is added to every DAG run to point to the format used by tasks (<code class="docutils literal notranslate"><span class="pre">NULL</span></code> indicates the first ever entry for compatibility).</p>
</div>
<div class="section" id="minimum-kubernetes-library-version-bumped-from-3-0-0-to-21-7-0-20759">
<h4>Minimum kubernetes library version bumped from <code class="docutils literal notranslate"><span class="pre">3.0.0</span></code> to <code class="docutils literal notranslate"><span class="pre">21.7.0</span></code> (#20759)<a class="headerlink" href="#minimum-kubernetes-library-version-bumped-from-3-0-0-to-21-7-0-20759" title="Permalink to this heading"></a></h4>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>This is only about changing the <code class="docutils literal notranslate"><span class="pre">kubernetes</span></code> library, not the Kubernetes cluster. Airflow support for
Kubernetes version is described in <a class="reference external" href="https://airflow.apache.org/docs/apache-airflow/stable/installation/prerequisites.html">Installation prerequisites</a>.</p>
</div>
<p>No change in behavior is expected. This was necessary in order to take advantage of a <a class="reference external" href="https://github.com/kubernetes-client/python-base/commit/70b78cd8488068c014b6d762a0c8d358273865b4">bugfix</a> concerning refreshing of Kubernetes API tokens with EKS, which enabled the removal of some <a class="reference external" href="https://github.com/apache/airflow/pull/20759">workaround code</a>.</p>
</div>
<div class="section" id="xcom-now-defined-by-run-id-instead-of-execution-date-20975">
<h4>XCom now defined by <code class="docutils literal notranslate"><span class="pre">run_id</span></code> instead of <code class="docutils literal notranslate"><span class="pre">execution_date</span></code> (#20975)<a class="headerlink" href="#xcom-now-defined-by-run-id-instead-of-execution-date-20975" title="Permalink to this heading"></a></h4>
<p>As a continuation to the TaskInstance-DagRun relation change started in Airflow 2.2, the <code class="docutils literal notranslate"><span class="pre">execution_date</span></code> columns on XCom has been removed from the database, and replaced by an <a class="reference external" href="https://docs.sqlalchemy.org/en/13/orm/extensions/associationproxy.html">association proxy</a> field at the ORM level. If you access Airflow’s metadata database directly, you should rewrite the implementation to use the <code class="docutils literal notranslate"><span class="pre">run_id</span></code> column instead.</p>
<p>Note that Airflow’s metadatabase definition on both the database and ORM levels are considered implementation detail without strict backward compatibility guarantees.</p>
</div>
<div class="section" id="non-json-serializable-params-deprecated-21135">
<h4>Non-JSON-serializable params deprecated (#21135).<a class="headerlink" href="#non-json-serializable-params-deprecated-21135" title="Permalink to this heading"></a></h4>
<p>It was previously possible to use dag or task param defaults that were not JSON-serializable.</p>
<p>For example this worked previously:</p>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="nd">@dag</span><span class="o">.</span><span class="n">task</span><span class="p">(</span><span class="n">params</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;a&quot;</span><span class="p">:</span> <span class="p">{</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">},</span> <span class="s2">&quot;b&quot;</span><span class="p">:</span> <span class="n">pendulum</span><span class="o">.</span><span class="n">now</span><span class="p">()})</span>
<span class="k">def</span> <span class="nf">datetime_param</span><span class="p">(</span><span class="n">value</span><span class="p">):</span>
<span class="nb">print</span><span class="p">(</span><span class="n">value</span><span class="p">)</span>
<span class="n">datetime_param</span><span class="p">(</span><span class="s2">&quot;{{ params.a }} | {{ params.b }}&quot;</span><span class="p">)</span>
</pre></div>
</div>
<p>Note the use of <code class="docutils literal notranslate"><span class="pre">set</span></code> and <code class="docutils literal notranslate"><span class="pre">datetime</span></code> types, which are not JSON-serializable. This behavior is problematic because to override these values in a dag run conf, you must use JSON, which could make these params non-overridable. Another problem is that the support for param validation assumes JSON. Use of non-JSON-serializable params will be removed in Airflow 3.0 and until then, use of them will produce a warning at parse time.</p>
</div>
<div class="section" id="you-must-use-postgresql-instead-of-postgres-in-sql-alchemy-conn-for-sqlalchemy-1-4-0-21205">
<h4>You must use <code class="docutils literal notranslate"><span class="pre">postgresql://</span></code> instead of <code class="docutils literal notranslate"><span class="pre">postgres://</span></code> in <code class="docutils literal notranslate"><span class="pre">sql_alchemy_conn</span></code> for SQLAlchemy 1.4.0+ (#21205)<a class="headerlink" href="#you-must-use-postgresql-instead-of-postgres-in-sql-alchemy-conn-for-sqlalchemy-1-4-0-21205" title="Permalink to this heading"></a></h4>
<p>When you use SQLAlchemy 1.4.0+, you need to use <code class="docutils literal notranslate"><span class="pre">postgresql://</span></code> as the scheme in the <code class="docutils literal notranslate"><span class="pre">sql_alchemy_conn</span></code>.
In the previous versions of SQLAlchemy it was possible to use <code class="docutils literal notranslate"><span class="pre">postgres://</span></code> , but using it in
SQLAlchemy 1.4.0+ results in:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">&gt;</span> <span class="k">raise</span> <span class="n">exc</span><span class="o">.</span><span class="n">NoSuchModuleError</span><span class="p">(</span>
<span class="s2">&quot;Can&#39;t load plugin: </span><span class="si">%s</span><span class="s2">:</span><span class="si">%s</span><span class="s2">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">group</span><span class="p">,</span> <span class="n">name</span><span class="p">)</span>
<span class="p">)</span>
<span class="n">E</span> <span class="n">sqlalchemy</span><span class="o">.</span><span class="n">exc</span><span class="o">.</span><span class="n">NoSuchModuleError</span><span class="p">:</span> <span class="n">Can</span><span class="s1">&#39;t load plugin: sqlalchemy.dialects:postgres</span>
</pre></div>
</div>
<p>If you cannot change the scheme of your URL immediately, Airflow continues to work with SQLAlchemy
1.3 and you can downgrade SQLAlchemy, but we recommend updating the scheme.
Details in the <a class="reference external" href="https://docs.sqlalchemy.org/en/14/changelog/changelog_14.html#change-3687655465c25a39b968b4f5f6e9170b">SQLAlchemy Changelog</a>.</p>
</div>
<div class="section" id="auth-backends-replaces-auth-backend-configuration-setting-21472">
<h4><code class="docutils literal notranslate"><span class="pre">auth_backends</span></code> replaces <code class="docutils literal notranslate"><span class="pre">auth_backend</span></code> configuration setting (#21472)<a class="headerlink" href="#auth-backends-replaces-auth-backend-configuration-setting-21472" title="Permalink to this heading"></a></h4>
<p>Previously, only one backend was used to authorize use of the REST API. In 2.3 this was changed to support multiple backends, separated by whitespace. Each will be tried in turn until a successful response is returned.</p>
<p>This setting is also used for the deprecated experimental API, which only uses the first option even if multiple are given.</p>
</div>
<div class="section" id="airflow-models-base-operator-is-removed-21505">
<h4><code class="docutils literal notranslate"><span class="pre">airflow.models.base.Operator</span></code> is removed (#21505)<a class="headerlink" href="#airflow-models-base-operator-is-removed-21505" title="Permalink to this heading"></a></h4>
<p>Previously, there was an empty class <code class="docutils literal notranslate"><span class="pre">airflow.models.base.Operator</span></code> for “type hinting”. This class was never really useful for anything (everything it did could be done better with <code class="docutils literal notranslate"><span class="pre">airflow.models.baseoperator.BaseOperator</span></code>), and has been removed. If you are relying on the class’s existence, use <code class="docutils literal notranslate"><span class="pre">BaseOperator</span></code> (for concrete operators), <code class="docutils literal notranslate"><span class="pre">airflow.models.abstractoperator.AbstractOperator</span></code> (the base class of both <code class="docutils literal notranslate"><span class="pre">BaseOperator</span></code> and the AIP-42 <code class="docutils literal notranslate"><span class="pre">MappedOperator</span></code>), or <code class="docutils literal notranslate"><span class="pre">airflow.models.operator.Operator</span></code> (a union type <code class="docutils literal notranslate"><span class="pre">BaseOperator</span> <span class="pre">|</span> <span class="pre">MappedOperator</span></code> for type annotation).</p>
</div>
<div class="section" id="zip-files-in-the-dags-folder-can-no-longer-have-a-py-extension-21538">
<h4>Zip files in the DAGs folder can no longer have a <code class="docutils literal notranslate"><span class="pre">.py</span></code> extension (#21538)<a class="headerlink" href="#zip-files-in-the-dags-folder-can-no-longer-have-a-py-extension-21538" title="Permalink to this heading"></a></h4>
<p>It was previously possible to have any extension for zip files in the DAGs folder. Now <code class="docutils literal notranslate"><span class="pre">.py</span></code> files are going to be loaded as modules without checking whether it is a zip file, as it leads to less IO. If a <code class="docutils literal notranslate"><span class="pre">.py</span></code> file in the DAGs folder is a zip compressed file, parsing it will fail with an exception.</p>
</div>
<div class="section" id="auth-backends-includes-session-21640">
<h4><code class="docutils literal notranslate"><span class="pre">auth_backends</span></code> includes session (#21640)<a class="headerlink" href="#auth-backends-includes-session-21640" title="Permalink to this heading"></a></h4>
<p>To allow the Airflow UI to use the API, the previous default authorization backend <code class="docutils literal notranslate"><span class="pre">airflow.api.auth.backend.deny_all</span></code> is changed to <code class="docutils literal notranslate"><span class="pre">airflow.api.auth.backend.session</span></code>, and this is automatically added to the list of API authorization backends if a non-default value is set.</p>
</div>
<div class="section" id="default-templates-for-log-filenames-and-elasticsearch-log-id-changed-21734">
<h4>Default templates for log filenames and elasticsearch log_id changed (#21734)<a class="headerlink" href="#default-templates-for-log-filenames-and-elasticsearch-log-id-changed-21734" title="Permalink to this heading"></a></h4>
<p>In order to support Dynamic Task Mapping the default templates for per-task instance logging has changed. If your config contains the old default values they will be upgraded-in-place.</p>
<p>If you are happy with the new config values you should <em>remove</em> the setting in <code class="docutils literal notranslate"><span class="pre">airflow.cfg</span></code> and let the default value be used. Old default values were:</p>
<ul class="simple">
<li><p><code class="docutils literal notranslate"><span class="pre">[core]</span> <span class="pre">log_filename_template</span></code>: <code class="docutils literal notranslate"><span class="pre">{{</span> <span class="pre">ti.dag_id</span> <span class="pre">}}/{{</span> <span class="pre">ti.task_id</span> <span class="pre">}}/{{</span> <span class="pre">ts</span> <span class="pre">}}/{{</span> <span class="pre">try_number</span> <span class="pre">}}.log</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">[elasticsearch]</span> <span class="pre">log_id_template</span></code>: <code class="docutils literal notranslate"><span class="pre">{dag_id}-{task_id}-{execution_date}-{try_number}</span></code></p></li>
</ul>
<p><code class="docutils literal notranslate"><span class="pre">[core]</span> <span class="pre">log_filename_template</span></code> now uses “hive partition style” of <code class="docutils literal notranslate"><span class="pre">dag_id=&lt;id&gt;/run_id=&lt;id&gt;</span></code> by default, which may cause problems on some older FAT filesystems. If this affects you then you will have to change the log template.</p>
<p>If you have customized the templates you should ensure that they contain <code class="docutils literal notranslate"><span class="pre">{{</span> <span class="pre">ti.map_index</span> <span class="pre">}}</span></code> if you want to use dynamically mapped tasks.</p>
<p>If after upgrading you find your task logs are no longer accessible, try adding a row in the <code class="docutils literal notranslate"><span class="pre">log_template</span></code> table with <code class="docutils literal notranslate"><span class="pre">id=0</span></code>
containing your previous <code class="docutils literal notranslate"><span class="pre">log_id_template</span></code> and <code class="docutils literal notranslate"><span class="pre">log_filename_template</span></code>. For example, if you used the defaults in 2.2.5:</p>
<div class="highlight-sql notranslate"><div class="highlight"><pre><span></span><span class="k">INSERT</span><span class="w"> </span><span class="k">INTO</span><span class="w"> </span><span class="n">log_template</span><span class="w"> </span><span class="p">(</span><span class="n">id</span><span class="p">,</span><span class="w"> </span><span class="n">filename</span><span class="p">,</span><span class="w"> </span><span class="n">elasticsearch_id</span><span class="p">,</span><span class="w"> </span><span class="n">created_at</span><span class="p">)</span><span class="w"> </span><span class="k">VALUES</span><span class="w"> </span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;{{ ti.dag_id }}/{{ ti.task_id }}/{{ ts }}/{{ try_number }}.log&#39;</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;{dag_id}-{task_id}-{execution_date}-{try_number}&#39;</span><span class="p">,</span><span class="w"> </span><span class="n">NOW</span><span class="p">());</span><span class="w"></span>
</pre></div>
</div>
</div>
<div class="section" id="baseoperatorlink-s-get-link-method-changed-to-take-a-ti-key-keyword-argument-21798">
<h4>BaseOperatorLink’s <code class="docutils literal notranslate"><span class="pre">get_link</span></code> method changed to take a <code class="docutils literal notranslate"><span class="pre">ti_key</span></code> keyword argument (#21798)<a class="headerlink" href="#baseoperatorlink-s-get-link-method-changed-to-take-a-ti-key-keyword-argument-21798" title="Permalink to this heading"></a></h4>
<p>In v2.2 we “deprecated” passing an execution date to XCom.get methods, but there was no other option for operator links as they were only passed an execution_date.</p>
<p>Now in 2.3 as part of Dynamic Task Mapping (AIP-42) we will need to add map_index to the XCom row to support the “reduce” part of the API.</p>
<p>In order to support that cleanly we have changed the interface for BaseOperatorLink to take an TaskInstanceKey as the <code class="docutils literal notranslate"><span class="pre">ti_key</span></code> keyword argument (as execution_date + task is no longer unique for mapped operators).</p>
<p>The existing signature will be detected (by the absence of the <code class="docutils literal notranslate"><span class="pre">ti_key</span></code> argument) and continue to work.</p>
</div>
<div class="section" id="readytorescheduledep-now-only-runs-when-reschedule-is-true-21815">
<h4><code class="docutils literal notranslate"><span class="pre">ReadyToRescheduleDep</span></code> now only runs when <code class="docutils literal notranslate"><span class="pre">reschedule</span></code> is <em>True</em> (#21815)<a class="headerlink" href="#readytorescheduledep-now-only-runs-when-reschedule-is-true-21815" title="Permalink to this heading"></a></h4>
<p>When a <code class="docutils literal notranslate"><span class="pre">ReadyToRescheduleDep</span></code> is run, it now checks whether the <code class="docutils literal notranslate"><span class="pre">reschedule</span></code> attribute on the operator, and always reports itself as <em>passed</em> unless it is set to <em>True</em>. If you use this dep class on your custom operator, you will need to add this attribute to the operator class. Built-in operator classes that use this dep class (including sensors and all subclasses) already have this attribute and are not affected.</p>
</div>
<div class="section" id="the-deps-attribute-on-an-operator-class-should-be-a-class-level-attribute-21815">
<h4>The <code class="docutils literal notranslate"><span class="pre">deps</span></code> attribute on an operator class should be a class level attribute (#21815)<a class="headerlink" href="#the-deps-attribute-on-an-operator-class-should-be-a-class-level-attribute-21815" title="Permalink to this heading"></a></h4>
<p>To support operator-mapping (AIP 42), the <code class="docutils literal notranslate"><span class="pre">deps</span></code> attribute on operator class must be a set at the class level. This means that if a custom operator implements this as an instance-level variable, it will not be able to be used for operator-mapping. This does not affect existing code, but we highly recommend you to restructure the operator’s dep logic in order to support the new feature.</p>
</div>
<div class="section" id="deprecation-connection-extra-must-be-json-encoded-dict-21816">
<h4>Deprecation: <code class="docutils literal notranslate"><span class="pre">Connection.extra</span></code> must be JSON-encoded dict (#21816)<a class="headerlink" href="#deprecation-connection-extra-must-be-json-encoded-dict-21816" title="Permalink to this heading"></a></h4>
<div class="section" id="tldr">
<h5>TLDR<a class="headerlink" href="#tldr" title="Permalink to this heading"></a></h5>
<p>From Airflow 3.0, the <code class="docutils literal notranslate"><span class="pre">extra</span></code> field in airflow connections must be a JSON-encoded Python dict.</p>
</div>
<div class="section" id="what-why-and-when">
<h5>What, why, and when?<a class="headerlink" href="#what-why-and-when" title="Permalink to this heading"></a></h5>
<p>Airflow’s Connection is used for storing credentials. For storage of information that does not
fit into user / password / host / schema / port, we have the <code class="docutils literal notranslate"><span class="pre">extra</span></code> string field. Its intention
was always to provide for storage of arbitrary key-value pairs, like <code class="docutils literal notranslate"><span class="pre">no_host_key_check</span></code> in the SSH
hook, or <code class="docutils literal notranslate"><span class="pre">keyfile_dict</span></code> in GCP.</p>
<p>But since the field is string, it’s technically been permissible to store any string value. For example
one could have stored the string value <code class="docutils literal notranslate"><span class="pre">'my-website.com'</span></code> and used this in the hook. But this is a very
bad practice. One reason is intelligibility: when you look at the value for <code class="docutils literal notranslate"><span class="pre">extra</span></code> , you don’t have any idea
what its purpose is. Better would be to store <code class="docutils literal notranslate"><span class="pre">{&quot;api_host&quot;:</span> <span class="pre">&quot;my-website.com&quot;}</span></code> which at least tells you
<em>something</em> about the value. Another reason is extensibility: if you store the API host as a simple string
value, what happens if you need to add more information, such as the API endpoint, or credentials? Then
you would need to convert the string to a dict, and this would be a breaking change.</p>
<p>For these reason, starting in Airflow 3.0 we will require that the <code class="docutils literal notranslate"><span class="pre">Connection.extra</span></code> field store
a JSON-encoded Python dict.</p>
</div>
<div class="section" id="how-will-i-be-affected">
<h5>How will I be affected?<a class="headerlink" href="#how-will-i-be-affected" title="Permalink to this heading"></a></h5>
<p>For users of providers that are included in the Airflow codebase, you should not have to make any changes
because in the Airflow codebase we should not allow hooks to misuse the <code class="docutils literal notranslate"><span class="pre">Connection.extra</span></code> field in this way.</p>
<p>However, if you have any custom hooks that store something other than JSON dict, you will have to update it.
If you do, you should see a warning any time that this connection is retrieved or instantiated (e.g. it should show up in
task logs).</p>
<p>To see if you have any connections that will need to be updated, you can run this command:</p>
<div class="highlight-shell notranslate"><div class="highlight"><pre><span></span>airflow connections <span class="nb">export</span> - <span class="m">2</span>&gt;<span class="p">&amp;</span><span class="m">1</span> &gt;/dev/null <span class="p">|</span> grep <span class="s1">&#39;non-JSON&#39;</span>
</pre></div>
</div>
<p>This will catch any warnings about connections that are storing something other than JSON-encoded Python dict in the <code class="docutils literal notranslate"><span class="pre">extra</span></code> field.</p>
</div>
</div>
<div class="section" id="the-tree-default-view-setting-has-been-renamed-to-grid-22167">
<h4>The <code class="docutils literal notranslate"><span class="pre">tree</span></code> default view setting has been renamed to <code class="docutils literal notranslate"><span class="pre">grid</span></code> (#22167)<a class="headerlink" href="#the-tree-default-view-setting-has-been-renamed-to-grid-22167" title="Permalink to this heading"></a></h4>
<p>If you set the <code class="docutils literal notranslate"><span class="pre">dag_default_view</span></code> config option or the <code class="docutils literal notranslate"><span class="pre">default_view</span></code> argument to <code class="docutils literal notranslate"><span class="pre">DAG()</span></code> to <code class="docutils literal notranslate"><span class="pre">tree</span></code> you will need to update your deployment. The old name will continue to work but will issue warnings.</p>
</div>
<div class="section" id="database-configuration-moved-to-new-section-22284">
<h4>Database configuration moved to new section (#22284)<a class="headerlink" href="#database-configuration-moved-to-new-section-22284" title="Permalink to this heading"></a></h4>
<p>The following configurations have been moved from <code class="docutils literal notranslate"><span class="pre">[core]</span></code> to the new <code class="docutils literal notranslate"><span class="pre">[database]</span></code> section. However when reading the new option, the old option will be checked to see if it exists. If it does a DeprecationWarning will be issued and the old option will be used instead.</p>
<ul class="simple">
<li><p>sql_alchemy_conn</p></li>
<li><p>sql_engine_encoding</p></li>
<li><p>sql_engine_collation_for_ids</p></li>
<li><p>sql_alchemy_pool_enabled</p></li>
<li><p>sql_alchemy_pool_size</p></li>
<li><p>sql_alchemy_max_overflow</p></li>
<li><p>sql_alchemy_pool_recycle</p></li>
<li><p>sql_alchemy_pool_pre_ping</p></li>
<li><p>sql_alchemy_schema</p></li>
<li><p>sql_alchemy_connect_args</p></li>
<li><p>load_default_connections</p></li>
<li><p>max_db_retries</p></li>
</ul>
</div>
<div class="section" id="remove-requirement-that-custom-connection-ui-fields-be-prefixed-22607">
<h4>Remove requirement that custom connection UI fields be prefixed (#22607)<a class="headerlink" href="#remove-requirement-that-custom-connection-ui-fields-be-prefixed-22607" title="Permalink to this heading"></a></h4>
<p>Hooks can define custom connection fields for their connection type by implementing method <code class="docutils literal notranslate"><span class="pre">get_connection_form_widgets</span></code>. These custom fields appear in the web UI as additional connection attributes, but internally they are stored in the connection <code class="docutils literal notranslate"><span class="pre">extra</span></code> dict field. For technical reasons, previously, when stored in the <code class="docutils literal notranslate"><span class="pre">extra</span></code> dict, the custom field’s dict key had to take the form <code class="docutils literal notranslate"><span class="pre">extra__&lt;conn</span> <span class="pre">type&gt;__&lt;field</span> <span class="pre">name&gt;</span></code>. This had the consequence of making it more cumbersome to define connections outside of the UI, since the prefix <code class="docutils literal notranslate"><span class="pre">extra__&lt;conn</span> <span class="pre">type&gt;__</span></code> makes it tougher to read and work with. With #22607, we make it so that you can now define custom fields such that they can be read from and stored in <code class="docutils literal notranslate"><span class="pre">extra</span></code> without the prefix.</p>
<p>To enable this, update the dict returned by the <code class="docutils literal notranslate"><span class="pre">get_connection_form_widgets</span></code> method to remove the prefix from the keys. Internally, the providers manager will still use a prefix to ensure each custom field is globally unique, but the absence of a prefix in the returned widget dict will signal to the Web UI to read and store custom fields without the prefix. Note that this is only a change to the Web UI behavior; when updating your hook in this way, you must make sure that when your <em>hook</em> reads the <code class="docutils literal notranslate"><span class="pre">extra</span></code> field, it will also check for the prefixed value for backward compatibility.</p>
</div>
<div class="section" id="the-webserver-x-frame-enabled-configuration-works-according-to-description-now-23222">
<h4>The webserver.X_FRAME_ENABLED configuration works according to description now (#23222).<a class="headerlink" href="#the-webserver-x-frame-enabled-configuration-works-according-to-description-now-23222" title="Permalink to this heading"></a></h4>
<p>In Airflow 2.0.0 - 2.2.4 the webserver.X_FRAME_ENABLED parameter worked the opposite of its description,
setting the value to “true” caused “X-Frame-Options” header to “DENY” (not allowing Airflow to be used
in an iframe). When you set it to “false”, the header was not added, so Airflow could be embedded in an
iframe. By default Airflow could not be embedded in an iframe.</p>
<p>In Airflow 2.2.5 there was a bug introduced that made it impossible to disable Airflow to
work in iframe. No matter what the configuration was set, it was possible to embed Airflow in an iframe.</p>
<p>Airflow 2.3.0 restores the original meaning to the parameter. If you set it to “true” (default) Airflow
can be embedded in an iframe (no header is added), but when you set it to “false” the header is added
and Airflow cannot be embedded in an iframe.</p>
</div>
</div>
<div class="section" id="new-features">
<h3>New Features<a class="headerlink" href="#new-features" title="Permalink to this heading"></a></h3>
<ul class="simple">
<li><p>Add dynamic task mapping (<a class="reference external" href="https://github.com/apache/airflow/pulls?q=is%3Apr+is%3Amerged+label%3AAIP-42+milestone%3A%22Airflow+2.3.0%22">AIP-42</a>)</p></li>
<li><p>New Grid View replaces Tree View (#18675)</p></li>
<li><p>Templated <code class="docutils literal notranslate"><span class="pre">requirements.txt</span></code> in Python Operators (#17349)</p></li>
<li><p>Allow reuse of decorated tasks (#22941)</p></li>
<li><p>Move the database configuration to a new section (#22284)</p></li>
<li><p>Add <code class="docutils literal notranslate"><span class="pre">SmoothOperator</span></code> (#22813)</p></li>
<li><p>Make operator’s <code class="docutils literal notranslate"><span class="pre">execution_timeout</span></code> configurable (#22389)</p></li>
<li><p>Events Timetable (#22332)</p></li>
<li><p>Support dag serialization with custom <code class="docutils literal notranslate"><span class="pre">ti_deps</span></code> rules (#22698)</p></li>
<li><p>Support log download in task log view (#22804)</p></li>
<li><p>support for continue backfill on failures (#22697)</p></li>
<li><p>Add <code class="docutils literal notranslate"><span class="pre">dag-processor</span></code> cli command (#22305)</p></li>
<li><p>Add possibility to create users in LDAP mode (#22619)</p></li>
<li><p>Add <code class="docutils literal notranslate"><span class="pre">ignore_first_depends_on_past</span></code> for scheduled jobs (#22491)</p></li>
<li><p>Update base sensor operator to support XCOM return value (#20656)</p></li>
<li><p>Add an option for run id in the ui trigger screen (#21851)</p></li>
<li><p>Enable JSON serialization for connections (#19857)</p></li>
<li><p>Add REST API endpoint for bulk update of DAGs (#19758)</p></li>
<li><p>Add queue button to click-on-DagRun interface. (#21555)</p></li>
<li><p>Add <code class="docutils literal notranslate"><span class="pre">list-import-errors</span></code> to <code class="docutils literal notranslate"><span class="pre">airflow</span> <span class="pre">dags</span></code> command (#22084)</p></li>
<li><p>Store callbacks in database if <code class="docutils literal notranslate"><span class="pre">standalone_dag_processor</span></code> config is True. (#21731)</p></li>
<li><p>Add LocalKubernetesExecutor (#19729)</p></li>
<li><p>Add <code class="docutils literal notranslate"><span class="pre">celery.task_timeout_error</span></code> metric (#21602)</p></li>
<li><p>Airflow <code class="docutils literal notranslate"><span class="pre">db</span> <span class="pre">downgrade</span></code> cli command (#21596)</p></li>
<li><p>Add <code class="docutils literal notranslate"><span class="pre">ALL_SKIPPED</span></code> trigger rule (#21662)</p></li>
<li><p>Add <code class="docutils literal notranslate"><span class="pre">db</span> <span class="pre">clean</span></code> CLI command for purging old data (#20838)</p></li>
<li><p>Add <code class="docutils literal notranslate"><span class="pre">celery_logging_level</span></code> (#21506)</p></li>
<li><p>Support different timeout value for dag file parsing (#21501)</p></li>
<li><p>Support generating SQL script for upgrades (#20962)</p></li>
<li><p>Add option to compress Serialized dag data (#21332)</p></li>
<li><p>Branch python operator decorator (#20860)</p></li>
<li><p>Add Audit Log View to Dag View (#20733)</p></li>
<li><p>Add missing StatsD metric for failing SLA Callback notification (#20924)</p></li>
<li><p>Add <code class="docutils literal notranslate"><span class="pre">ShortCircuitOperator</span></code> configurability for respecting downstream trigger rules (#20044)</p></li>
<li><p>Allow using Markup in page title in Webserver (#20888)</p></li>
<li><p>Add Listener Plugin API that tracks TaskInstance state changes (#20443)</p></li>
<li><p>Add context var hook to inject more env vars (#20361)</p></li>
<li><p>Add a button to set all tasks to skipped (#20455)</p></li>
<li><p>Cleanup pending pods (#20438)</p></li>
<li><p>Add config to warn public deployment exposure in UI (#18557)</p></li>
<li><p>Log filename template records (#20165)</p></li>
<li><p>Added windows extensions (#16110)</p></li>
<li><p>Showing approximate time until next dag_run in Airflow (#20273)</p></li>
<li><p>Extend config window on UI (#20052)</p></li>
<li><p>Add show dag dependencies feature to CLI (#19985)</p></li>
<li><p>Add cli command for ‘airflow dags reserialize` (#19471)</p></li>
<li><p>Add missing description field to Pool schema(REST API) (#19841)</p></li>
<li><p>Introduce DagRun action to change state to queued. (#19353)</p></li>
<li><p>Add DAG run details page (#19705)</p></li>
<li><p>Add role export/import to cli tools (#18916)</p></li>
<li><p>Adding <code class="docutils literal notranslate"><span class="pre">dag_id_pattern</span></code> parameter to the <code class="docutils literal notranslate"><span class="pre">/dags</span></code> endpoint (#18924)</p></li>
</ul>
</div>
<div class="section" id="improvements">
<h3>Improvements<a class="headerlink" href="#improvements" title="Permalink to this heading"></a></h3>
<ul class="simple">
<li><p>Show schedule_interval/timetable description in UI (#16931)</p></li>
<li><p>Added column duration to DAG runs view (#19482)</p></li>
<li><p>Enable use of custom conn extra fields without prefix (#22607)</p></li>
<li><p>Initialize finished counter at zero (#23080)</p></li>
<li><p>Improve logging of optional provider features messages (#23037)</p></li>
<li><p>Meaningful error message in resolve_template_files (#23027)</p></li>
<li><p>Update ImportError items instead of deleting and recreating them (#22928)</p></li>
<li><p>Add option <code class="docutils literal notranslate"><span class="pre">--skip-init</span></code> to db reset command (#22989)</p></li>
<li><p>Support importing connections from files with “.yml” extension (#22872)</p></li>
<li><p>Support glob syntax in <code class="docutils literal notranslate"><span class="pre">.airflowignore</span></code> files (#21392) (#22051)</p></li>
<li><p>Hide pagination when data is a single page (#22963)</p></li>
<li><p>Support for sorting DAGs in the web UI (#22671)</p></li>
<li><p>Speed up <code class="docutils literal notranslate"><span class="pre">has_access</span></code> decorator by ~200ms (#22858)</p></li>
<li><p>Add XComArg to lazy-imported list of Airflow module (#22862)</p></li>
<li><p>Add more fields to REST API dags/dag_id/details endpoint (#22756)</p></li>
<li><p>Don’t show irrelevant/duplicated/”internal” Task attrs in UI (#22812)</p></li>
<li><p>No need to load whole ti in current_state (#22764)</p></li>
<li><p>Pickle dag exception string fix (#22760)</p></li>
<li><p>Better verification of Localexecutor’s parallelism option (#22711)</p></li>
<li><p>log backfill exceptions to sentry (#22704)</p></li>
<li><p>retry commit on MySQL deadlocks during backfill (#22696)</p></li>
<li><p>Add more fields to REST API get DAG(dags/dag_id) endpoint (#22637)</p></li>
<li><p>Use timetable to generate planned days for current year (#22055)</p></li>
<li><p>Disable connection pool for celery worker (#22493)</p></li>
<li><p>Make date picker label visible in trigger dag view (#22379)</p></li>
<li><p>Expose <code class="docutils literal notranslate"><span class="pre">try_number</span></code> in airflow vars (#22297)</p></li>
<li><p>Add generic connection type (#22310)</p></li>
<li><p>Add a few more fields to the taskinstance finished log message (#22262)</p></li>
<li><p>Pause auto-refresh if scheduler isn’t running (#22151)</p></li>
<li><p>Show DagModel details. (#21868)</p></li>
<li><p>Add pip_install_options to PythonVirtualenvOperator (#22158)</p></li>
<li><p>Show import error for <code class="docutils literal notranslate"><span class="pre">airflow</span> <span class="pre">dags</span> <span class="pre">list</span></code> CLI command (#21991)</p></li>
<li><p>Pause auto-refresh when page is hidden (#21904)</p></li>
<li><p>Default args type check (#21809)</p></li>
<li><p>Enhance magic methods on XComArg for UX (#21882)</p></li>
<li><p>py files don’t have to be checked <code class="docutils literal notranslate"><span class="pre">is_zipfiles</span></code> in refresh_dag (#21926)</p></li>
<li><p>Fix TaskDecorator type hints (#21881)</p></li>
<li><p>Add ‘Show record’ option for variables (#21342)</p></li>
<li><p>Use DB where possible for quicker <code class="docutils literal notranslate"><span class="pre">airflow</span> <span class="pre">dag</span></code> subcommands (#21793)</p></li>
<li><p>REST API: add rendered fields in task instance. (#21741)</p></li>
<li><p>Change the default auth backend to session (#21640)</p></li>
<li><p>Don’t check if <code class="docutils literal notranslate"><span class="pre">py</span></code> DAG files are zipped during parsing (#21538)</p></li>
<li><p>Switch XCom implementation to use <code class="docutils literal notranslate"><span class="pre">run_id</span></code> (#20975)</p></li>
<li><p>Action log on Browse Views (#21569)</p></li>
<li><p>Implement multiple API auth backends (#21472)</p></li>
<li><p>Change logging level details of connection info in <code class="docutils literal notranslate"><span class="pre">get_connection()</span></code> (#21162)</p></li>
<li><p>Support mssql in airflow db shell (#21511)</p></li>
<li><p>Support config <code class="docutils literal notranslate"><span class="pre">worker_enable_remote_control</span></code> for celery (#21507)</p></li>
<li><p>Log memory usage in <code class="docutils literal notranslate"><span class="pre">CgroupTaskRunner</span></code> (#21481)</p></li>
<li><p>Modernize DAG-related URL routes and rename “tree” to “grid” (#20730)</p></li>
<li><p>Move Zombie detection to <code class="docutils literal notranslate"><span class="pre">SchedulerJob</span></code> (#21181)</p></li>
<li><p>Improve speed to run <code class="docutils literal notranslate"><span class="pre">airflow</span></code> by 6x (#21438)</p></li>
<li><p>Add more SQL template fields renderers (#21237)</p></li>
<li><p>Simplify fab has access lookup (#19294)</p></li>
<li><p>Log context only for default method (#21244)</p></li>
<li><p>Log trigger status only if at least one is running (#21191)</p></li>
<li><p>Add optional features in providers. (#21074)</p></li>
<li><p>Better multiple_outputs inferral for &#64;task.python (#20800)</p></li>
<li><p>Improve handling of string type and non-attribute <code class="docutils literal notranslate"><span class="pre">template_fields</span></code> (#21054)</p></li>
<li><p>Remove un-needed deps/version requirements (#20979)</p></li>
<li><p>Correctly specify overloads for TaskFlow API for type-hinting (#20933)</p></li>
<li><p>Introduce notification_sent to SlaMiss view (#20923)</p></li>
<li><p>Rewrite the task decorator as a composition (#20868)</p></li>
<li><p>Add “Greater/Smaller than or Equal” to filters in the browse views (#20602) (#20798)</p></li>
<li><p>Rewrite DAG run retrieval in task command (#20737)</p></li>
<li><p>Speed up creation of DagRun for large DAGs (5k+ tasks) by 25-130% (#20722)</p></li>
<li><p>Make native environment Airflow-flavored like sandbox (#20704)</p></li>
<li><p>Better error when param value has unexpected type (#20648)</p></li>
<li><p>Add filter by state in DagRun REST API (List Dag Runs) (#20485)</p></li>
<li><p>Prevent exponential memory growth in Tasks with custom logging handler (#20541)</p></li>
<li><p>Set default logger in logging Mixin (#20355)</p></li>
<li><p>Reduce deprecation warnings from www (#20378)</p></li>
<li><p>Add hour and minute to time format on x-axis of all charts using nvd3.lineChart (#20002)</p></li>
<li><p>Add specific warning when Task asks for more slots than pool defined with (#20178)</p></li>
<li><p>UI: Update duration column for better human readability (#20112)</p></li>
<li><p>Use Viewer role as example public role (#19215)</p></li>
<li><p>Properly implement DAG param dict copying (#20216)</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">ShortCircuitOperator</span></code> push XCom by returning python_callable result (#20071)</p></li>
<li><p>Add clear logging to tasks killed due to a Dagrun timeout (#19950)</p></li>
<li><p>Change log level for Zombie detection messages (#20204)</p></li>
<li><p>Better confirmation prompts (#20183)</p></li>
<li><p>Only execute TIs of running DagRuns (#20182)</p></li>
<li><p>Check and run migration in commands if necessary (#18439)</p></li>
<li><p>Log only when Zombies exists (#20118)</p></li>
<li><p>Increase length of the email and username (#19932)</p></li>
<li><p>Add more filtering options for TI’s in the UI (#19910)</p></li>
<li><p>Dynamically enable “Test Connection” button by connection type (#19792)</p></li>
<li><p>Avoid littering postgres server logs with “could not obtain lock” with HA schedulers (#19842)</p></li>
<li><p>Renamed <code class="docutils literal notranslate"><span class="pre">Connection.get_hook</span></code> parameter to make it the same as in <code class="docutils literal notranslate"><span class="pre">SqlSensor</span></code> and <code class="docutils literal notranslate"><span class="pre">SqlOperator</span></code>. (#19849)</p></li>
<li><p>Add hook_params in SqlSensor using the latest changes from PR #18718. (#18431)</p></li>
<li><p>Speed up webserver boot time by delaying provider initialization (#19709)</p></li>
<li><p>Configurable logging of <code class="docutils literal notranslate"><span class="pre">XCOM</span></code> value in PythonOperator (#19378)</p></li>
<li><p>Minimize production js files (#19658)</p></li>
<li><p>Add <code class="docutils literal notranslate"><span class="pre">hook_params</span></code> in <code class="docutils literal notranslate"><span class="pre">BaseSqlOperator</span></code> (#18718)</p></li>
<li><p>Add missing “end_date” to hash components (#19281)</p></li>
<li><p>More friendly output of the airflow plugins command + add timetables (#19298)</p></li>
<li><p>Add sensor default timeout config (#19119)</p></li>
<li><p>Update <code class="docutils literal notranslate"><span class="pre">taskinstance</span></code> REST API schema to include dag_run_id field (#19105)</p></li>
<li><p>Adding feature in bash operator to append the user defined env variable to system env variable (#18944)</p></li>
<li><p>Duplicate Connection: Added logic to query if a connection id exists before creating one (#18161)</p></li>
</ul>
</div>
<div class="section" id="id9">
<h3>Bug Fixes<a class="headerlink" href="#id9" title="Permalink to this heading"></a></h3>
<ul class="simple">
<li><p>Use inherited ‘trigger_tasks’ method (#23016)</p></li>
<li><p>In DAG dependency detector, use class type instead of class name (#21706)</p></li>
<li><p>Fix tasks being wrongly skipped by schedule_after_task_execution (#23181)</p></li>
<li><p>Fix X-Frame enabled behaviour (#23222)</p></li>
<li><p>Allow <code class="docutils literal notranslate"><span class="pre">extra</span></code> to be nullable in connection payload as per schema(REST API). (#23183)</p></li>
<li><p>Fix <code class="docutils literal notranslate"><span class="pre">dag_id</span></code> extraction for dag level access checks in web ui (#23015)</p></li>
<li><p>Fix timezone display for logs on UI (#23075)</p></li>
<li><p>Include message in graph errors (#23021)</p></li>
<li><p>Change trigger dropdown left position (#23013)</p></li>
<li><p>Don’t add planned tasks for legacy DAG runs (#23007)</p></li>
<li><p>Add dangling rows check for TaskInstance references (#22924)</p></li>
<li><p>Validate the input params in connection <code class="docutils literal notranslate"><span class="pre">CLI</span></code> command (#22688)</p></li>
<li><p>Fix trigger event payload is not persisted in db (#22944)</p></li>
<li><p>Drop “airflow moved” tables in command <code class="docutils literal notranslate"><span class="pre">db</span> <span class="pre">reset</span></code> (#22990)</p></li>
<li><p>Add max width to task group tooltips (#22978)</p></li>
<li><p>Add template support for <code class="docutils literal notranslate"><span class="pre">external_task_ids</span></code>. (#22809)</p></li>
<li><p>Allow <code class="docutils literal notranslate"><span class="pre">DagParam</span></code> to hold falsy values (#22964)</p></li>
<li><p>Fix regression in pool metrics (#22939)</p></li>
<li><p>Priority order tasks even when using pools (#22483)</p></li>
<li><p>Do not clear XCom when resuming from deferral (#22932)</p></li>
<li><p>Handle invalid JSON metadata in <code class="docutils literal notranslate"><span class="pre">get_logs_with_metadata</span> <span class="pre">endpoint</span></code>. (#22898)</p></li>
<li><p>Fix pre-upgrade check for rows dangling w.r.t. dag_run (#22850)</p></li>
<li><p>Fixed backfill interference with scheduler (#22701)</p></li>
<li><p>Support conf param override for backfill runs (#22837)</p></li>
<li><p>Correctly interpolate pool name in <code class="docutils literal notranslate"><span class="pre">PoolSlotsAvailableDep</span></code> statues (#22807)</p></li>
<li><p>Fix <code class="docutils literal notranslate"><span class="pre">email_on_failure</span></code> with <code class="docutils literal notranslate"><span class="pre">render_template_as_native_obj</span></code> (#22770)</p></li>
<li><p>Fix processor cleanup on <code class="docutils literal notranslate"><span class="pre">DagFileProcessorManager</span></code> (#22685)</p></li>
<li><p>Prevent meta name clash for task instances (#22783)</p></li>
<li><p>remove json parse for gantt chart (#22780)</p></li>
<li><p>Check for missing dagrun should know version (#22752)</p></li>
<li><p>Fixes <code class="docutils literal notranslate"><span class="pre">ScheduleInterval</span></code> spec (#22635)</p></li>
<li><p>Fixing task status for non-running and non-committed tasks (#22410)</p></li>
<li><p>Do not log the hook connection details even at DEBUG level (#22627)</p></li>
<li><p>Stop crashing when empty logs are received from kubernetes client (#22566)</p></li>
<li><p>Fix bugs about timezone change (#22525)</p></li>
<li><p>Fix entire DAG stops when one task has end_date (#20920)</p></li>
<li><p>Use logger to print message during task execution. (#22488)</p></li>
<li><p>Make sure finalizers are not skipped during exception handling (#22475)</p></li>
<li><p>update smart sensor docs and minor fix on <code class="docutils literal notranslate"><span class="pre">is_smart_sensor_compatible()</span></code> (#22386)</p></li>
<li><p>Fix <code class="docutils literal notranslate"><span class="pre">run_id</span></code> k8s and elasticsearch compatibility with Airflow 2.1 (#22385)</p></li>
<li><p>Allow to <code class="docutils literal notranslate"><span class="pre">except_skip</span></code> None on <code class="docutils literal notranslate"><span class="pre">BranchPythonOperator</span></code> (#20411)</p></li>
<li><p>Fix incorrect datetime details (DagRun views) (#21357)</p></li>
<li><p>Remove incorrect deprecation warning in secrets backend (#22326)</p></li>
<li><p>Remove <code class="docutils literal notranslate"><span class="pre">RefreshConfiguration</span></code> workaround for K8s token refreshing (#20759)</p></li>
<li><p>Masking extras in GET <code class="docutils literal notranslate"><span class="pre">/connections/&lt;connection&gt;</span></code> endpoint (#22227)</p></li>
<li><p>Set <code class="docutils literal notranslate"><span class="pre">queued_dttm</span></code> when submitting task to directly to executor (#22259)</p></li>
<li><p>Addressed some issues in the tutorial mentioned in discussion #22233 (#22236)</p></li>
<li><p>Change default python executable to python3 for docker decorator (#21973)</p></li>
<li><p>Don’t validate that Params are JSON when NOTSET (#22000)</p></li>
<li><p>Add per-DAG delete permissions (#21938)</p></li>
<li><p>Fix handling some None parameters in kubernetes 23 libs. (#21905)</p></li>
<li><p>Fix handling of empty (None) tags in <code class="docutils literal notranslate"><span class="pre">bulk_write_to_db</span></code> (#21757)</p></li>
<li><p>Fix DAG date range bug (#20507)</p></li>
<li><p>Removed <code class="docutils literal notranslate"><span class="pre">request.referrer</span></code> from views.py (#21751)</p></li>
<li><p>Make <code class="docutils literal notranslate"><span class="pre">DbApiHook</span></code> use <code class="docutils literal notranslate"><span class="pre">get_uri</span></code> from Connection (#21764)</p></li>
<li><p>Fix some migrations (#21670)</p></li>
<li><p>[de]serialize resources on task correctly (#21445)</p></li>
<li><p>Add params <code class="docutils literal notranslate"><span class="pre">dag_id</span></code>, <code class="docutils literal notranslate"><span class="pre">task_id</span></code> etc to <code class="docutils literal notranslate"><span class="pre">XCom.serialize_value</span></code> (#19505)</p></li>
<li><p>Update test connection functionality to use custom form fields (#21330)</p></li>
<li><p>fix all “high” npm vulnerabilities (#21526)</p></li>
<li><p>Fix bug incorrectly removing action from role, rather than permission. (#21483)</p></li>
<li><p>Fix relationship join bug in FAB/SecurityManager with SQLA 1.4 (#21296)</p></li>
<li><p>Use Identity instead of Sequence in SQLAlchemy 1.4 for MSSQL (#21238)</p></li>
<li><p>Ensure <code class="docutils literal notranslate"><span class="pre">on_task_instance_running</span></code> listener can get at task (#21157)</p></li>
<li><p>Return to the same place when triggering a DAG (#20955)</p></li>
<li><p>Fix task ID deduplication in <code class="docutils literal notranslate"><span class="pre">&#64;task_group</span></code> (#20870)</p></li>
<li><p>Add downgrade to some FAB migrations (#20874)</p></li>
<li><p>Only validate Params when DAG is triggered (#20802)</p></li>
<li><p>Fix <code class="docutils literal notranslate"><span class="pre">airflow</span> <span class="pre">trigger</span></code> cli (#20781)</p></li>
<li><p>Fix task instances iteration in a pool to prevent blocking (#20816)</p></li>
<li><p>Allow depending to a <code class="docutils literal notranslate"><span class="pre">&#64;task_group</span></code> as a whole (#20671)</p></li>
<li><p>Use original task’s <code class="docutils literal notranslate"><span class="pre">start_date</span></code> if a task continues after deferral (#20062)</p></li>
<li><p>Disabled edit button in task instances list view page (#20659)</p></li>
<li><p>Fix a package name import error (#20519) (#20519)</p></li>
<li><p>Remove <code class="docutils literal notranslate"><span class="pre">execution_date</span></code> label when get cleanup pods list (#20417)</p></li>
<li><p>Remove unneeded FAB REST API endpoints (#20487)</p></li>
<li><p>Fix parsing of Cloudwatch log group arn containing slashes (#14667) (#19700)</p></li>
<li><p>Sanity check for MySQL’s TIMESTAMP column (#19821)</p></li>
<li><p>Allow using default celery command group with executors subclassed from Celery-based executors. (#18189)</p></li>
<li><p>Move <code class="docutils literal notranslate"><span class="pre">class_permission_name</span></code> to mixin so it applies to all classes (#18749)</p></li>
<li><p>Adjust trimmed_pod_id and replace ‘.’ with ‘-‘ (#19036)</p></li>
<li><p>Pass custom_headers to send_email and send_email_smtp (#19009)</p></li>
<li><p>Ensure <code class="docutils literal notranslate"><span class="pre">catchup=False</span></code> is used in example dags (#19396)</p></li>
<li><p>Edit permalinks in OpenApi description file (#19244)</p></li>
<li><p>Navigate directly to DAG when selecting from search typeahead list (#18991)</p></li>
<li><p>[Minor] Fix padding on home page (#19025)</p></li>
</ul>
</div>
<div class="section" id="id10">
<h3>Doc only changes<a class="headerlink" href="#id10" title="Permalink to this heading"></a></h3>
<ul class="simple">
<li><p>Update doc for DAG file processing (#23209)</p></li>
<li><p>Replace changelog/updating with release notes and <code class="docutils literal notranslate"><span class="pre">towncrier</span></code> now (#22003)</p></li>
<li><p>Fix wrong reference in tracking-user-activity.rst (#22745)</p></li>
<li><p>Remove references to <code class="docutils literal notranslate"><span class="pre">rbac</span> <span class="pre">=</span> <span class="pre">True</span></code> from docs (#22725)</p></li>
<li><p>Doc: Update description for executor-bound dependencies (#22601)</p></li>
<li><p>Update check-health.rst (#22372)</p></li>
<li><p>Stronger language about Docker Compose customizability (#22304)</p></li>
<li><p>Update logging-tasks.rst (#22116)</p></li>
<li><p>Add example config of <code class="docutils literal notranslate"><span class="pre">sql_alchemy_connect_args</span></code> (#22045)</p></li>
<li><p>Update best-practices.rst (#22053)</p></li>
<li><p>Add information on DAG pausing/deactivation/deletion (#22025)</p></li>
<li><p>Add brief examples of integration test dags you might want (#22009)</p></li>
<li><p>Run inclusive language check on CHANGELOG (#21980)</p></li>
<li><p>Add detailed email docs for Sendgrid (#21958)</p></li>
<li><p>Add docs for <code class="docutils literal notranslate"><span class="pre">db</span> <span class="pre">upgrade</span></code> / <code class="docutils literal notranslate"><span class="pre">db</span> <span class="pre">downgrade</span></code> (#21879)</p></li>
<li><p>Update modules_management.rst (#21889)</p></li>
<li><p>Fix UPDATING section on SqlAlchemy 1.4 scheme changes (#21887)</p></li>
<li><p>Update TaskFlow tutorial doc to show how to pass “operator-level” args. (#21446)</p></li>
<li><p>Fix doc - replace decreasing by increasing (#21805)</p></li>
<li><p>Add another way to dynamically generate DAGs to docs (#21297)</p></li>
<li><p>Add extra information about time synchronization needed (#21685)</p></li>
<li><p>Update debug.rst docs (#21246)</p></li>
<li><p>Replaces the usage of <code class="docutils literal notranslate"><span class="pre">postgres://</span></code> with <code class="docutils literal notranslate"><span class="pre">postgresql://</span></code> (#21205)</p></li>
<li><p>Fix task execution process in <code class="docutils literal notranslate"><span class="pre">CeleryExecutor</span></code> docs (#20783)</p></li>
</ul>
</div>
<div class="section" id="id11">
<h3>Misc/Internal<a class="headerlink" href="#id11" title="Permalink to this heading"></a></h3>
<ul class="simple">
<li><p>Bring back deprecated security manager functions (#23243)</p></li>
<li><p>Replace usage of <code class="docutils literal notranslate"><span class="pre">DummyOperator</span></code> with <code class="docutils literal notranslate"><span class="pre">EmptyOperator</span></code> (#22974)</p></li>
<li><p>Deprecate <code class="docutils literal notranslate"><span class="pre">DummyOperator</span></code> in favor of <code class="docutils literal notranslate"><span class="pre">EmptyOperator</span></code> (#22832)</p></li>
<li><p>Remove unnecessary python 3.6 conditionals (#20549)</p></li>
<li><p>Bump <code class="docutils literal notranslate"><span class="pre">moment</span></code> from 2.29.1 to 2.29.2 in /airflow/www (#22873)</p></li>
<li><p>Bump <code class="docutils literal notranslate"><span class="pre">prismjs</span></code> from 1.26.0 to 1.27.0 in /airflow/www (#22823)</p></li>
<li><p>Bump <code class="docutils literal notranslate"><span class="pre">nanoid</span></code> from 3.1.23 to 3.3.2 in /airflow/www (#22803)</p></li>
<li><p>Bump <code class="docutils literal notranslate"><span class="pre">minimist</span></code> from 1.2.5 to 1.2.6 in /airflow/www (#22798)</p></li>
<li><p>Remove dag parsing from db init command (#22531)</p></li>
<li><p>Update our approach for executor-bound dependencies (#22573)</p></li>
<li><p>Use <code class="docutils literal notranslate"><span class="pre">Airflow.Base.metadata</span></code> in FAB models (#22353)</p></li>
<li><p>Limit docutils to make our documentation pretty again (#22420)</p></li>
<li><p>Add Python 3.10 support (#22050)</p></li>
<li><p>[FEATURE] add 1.22 1.23 K8S support (#21902)</p></li>
<li><p>Remove pandas upper limit now that SQLA is 1.4+ (#22162)</p></li>
<li><p>Patch <code class="docutils literal notranslate"><span class="pre">sql_alchemy_conn</span></code> if old postgres scheme used (#22333)</p></li>
<li><p>Protect against accidental misuse of XCom.get_value() (#22244)</p></li>
<li><p>Order filenames for migrations (#22168)</p></li>
<li><p>Don’t try to auto generate migrations for Celery tables (#22120)</p></li>
<li><p>Require SQLAlchemy 1.4 (#22114)</p></li>
<li><p>bump sphinx-jinja (#22101)</p></li>
<li><p>Add compat shim for SQLAlchemy to avoid warnings (#21959)</p></li>
<li><p>Rename <code class="docutils literal notranslate"><span class="pre">xcom.dagrun_id</span></code> to <code class="docutils literal notranslate"><span class="pre">xcom.dag_run_id</span></code> (#21806)</p></li>
<li><p>Deprecate non-JSON <code class="docutils literal notranslate"><span class="pre">conn.extra</span></code> (#21816)</p></li>
<li><p>Bump upper bound version of <code class="docutils literal notranslate"><span class="pre">jsonschema</span></code> to 5.0 (#21712)</p></li>
<li><p>Deprecate helper utility <code class="docutils literal notranslate"><span class="pre">days_ago</span></code> (#21653)</p></li>
<li><p>Remove <code class="docutils literal notranslate"><span class="pre">`:type`</span></code> lines now <code class="docutils literal notranslate"><span class="pre">sphinx-autoapi</span></code> supports type hints (#20951)</p></li>
<li><p>Silence deprecation warning in tests (#20900)</p></li>
<li><p>Use <code class="docutils literal notranslate"><span class="pre">DagRun.run_id</span></code> instead of <code class="docutils literal notranslate"><span class="pre">execution_date</span></code> when updating state of TIs (UI &amp; REST API) (#18724)</p></li>
<li><p>Add Context stub to Airflow packages (#20817)</p></li>
<li><p>Update Kubernetes library version (#18797)</p></li>
<li><p>Rename <code class="docutils literal notranslate"><span class="pre">PodLauncher</span></code> to <code class="docutils literal notranslate"><span class="pre">PodManager</span></code> (#20576)</p></li>
<li><p>Removes Python 3.6 support (#20467)</p></li>
<li><p>Add deprecation warning for non-json-serializable params (#20174)</p></li>
<li><p>Rename TaskMixin to DependencyMixin (#20297)</p></li>
<li><p>Deprecate passing execution_date to XCom methods (#19825)</p></li>
<li><p>Remove <code class="docutils literal notranslate"><span class="pre">get_readable_dags</span></code> and <code class="docutils literal notranslate"><span class="pre">get_editable_dags</span></code>, and <code class="docutils literal notranslate"><span class="pre">get_accessible_dags</span></code>. (#19961)</p></li>
<li><p>Remove postgres 9.6 support (#19987)</p></li>
<li><p>Removed hardcoded connection types. Check if hook is instance of DbApiHook. (#19639)</p></li>
<li><p>add kubernetes 1.21 support (#19557)</p></li>
<li><p>Add FAB base class and set import_name explicitly. (#19667)</p></li>
<li><p>Removes unused state transitions to handle auto-changing view permissions. (#19153)</p></li>
<li><p>Chore: Use enum for <code class="docutils literal notranslate"><span class="pre">__var</span></code> and <code class="docutils literal notranslate"><span class="pre">__type</span></code> members (#19303)</p></li>
<li><p>Use fab models (#19121)</p></li>
<li><p>Consolidate method names between Airflow Security Manager and FAB default (#18726)</p></li>
<li><p>Remove distutils usages for Python 3.10 (#19064)</p></li>
<li><p>Removing redundant <code class="docutils literal notranslate"><span class="pre">max_tis_per_query</span></code> initialisation on SchedulerJob (#19020)</p></li>
<li><p>Remove deprecated usage of <code class="docutils literal notranslate"><span class="pre">init_role()</span></code> from API (#18820)</p></li>
<li><p>Remove duplicate code on dbapi hook (#18821)</p></li>
</ul>
</div>
</div>
<div class="section" id="airflow-2-2-5-2022-04-04">
<h2><a class="toc-backref" href="#id168">Airflow 2.2.5, (2022-04-04)</a><a class="headerlink" href="#airflow-2-2-5-2022-04-04" title="Permalink to this heading"></a></h2>
<div class="section" id="id12">
<h3>Significant Changes<a class="headerlink" href="#id12" title="Permalink to this heading"></a></h3>
<p>No significant changes.</p>
<div class="section" id="id13">
<h4>Bug Fixes<a class="headerlink" href="#id13" title="Permalink to this heading"></a></h4>
<ul class="simple">
<li><p>Check and disallow a relative path for sqlite (#22530)</p></li>
<li><p>Fixed dask executor and tests (#22027)</p></li>
<li><p>Fix broken links to celery documentation (#22364)</p></li>
<li><p>Fix incorrect data provided to tries &amp; landing times charts (#21928)</p></li>
<li><p>Fix assignment of unassigned triggers (#21770)</p></li>
<li><p>Fix triggerer <code class="docutils literal notranslate"><span class="pre">--capacity</span></code> parameter (#21753)</p></li>
<li><p>Fix graph auto-refresh on page load (#21736)</p></li>
<li><p>Fix filesystem sensor for directories (#21729)</p></li>
<li><p>Fix stray <code class="docutils literal notranslate"><span class="pre">order_by(TaskInstance.execution_date)</span></code> (#21705)</p></li>
<li><p>Correctly handle multiple ‘=’ in LocalFileSystem secrets. (#21694)</p></li>
<li><p>Log exception in local executor (#21667)</p></li>
<li><p>Disable <code class="docutils literal notranslate"><span class="pre">default_pool</span></code> delete on web ui (#21658)</p></li>
<li><p>Extends <code class="docutils literal notranslate"><span class="pre">typing-extensions</span></code> to be installed with python 3.8+ #21566 (#21567)</p></li>
<li><p>Dispose unused connection pool (#21565)</p></li>
<li><p>Fix logging JDBC SQL error when task fails (#21540)</p></li>
<li><p>Filter out default configs when overrides exist. (#21539)</p></li>
<li><p>Fix Resources <code class="docutils literal notranslate"><span class="pre">__eq__</span></code> check (#21442)</p></li>
<li><p>Fix <code class="docutils literal notranslate"><span class="pre">max_active_runs=1</span></code> not scheduling runs when <code class="docutils literal notranslate"><span class="pre">min_file_process_interval</span></code> is high (#21413)</p></li>
<li><p>Reduce DB load incurred by Stale DAG deactivation (#21399)</p></li>
<li><p>Fix race condition between triggerer and scheduler (#21316)</p></li>
<li><p>Fix trigger dag redirect from task instance log view (#21239)</p></li>
<li><p>Log traceback in trigger exceptions (#21213)</p></li>
<li><p>A trigger might use a connection; make sure we mask passwords (#21207)</p></li>
<li><p>Update <code class="docutils literal notranslate"><span class="pre">ExternalTaskSensorLink</span></code> to handle templated <code class="docutils literal notranslate"><span class="pre">external_dag_id</span></code> (#21192)</p></li>
<li><p>Ensure <code class="docutils literal notranslate"><span class="pre">clear_task_instances</span></code> sets valid run state (#21116)</p></li>
<li><p>Fix: Update custom connection field processing (#20883)</p></li>
<li><p>Truncate stack trace to DAG user code for exceptions raised during execution (#20731)</p></li>
<li><p>Fix duplicate trigger creation race condition (#20699)</p></li>
<li><p>Fix Tasks getting stuck in scheduled state (#19747)</p></li>
<li><p>Fix: Do not render undefined graph edges (#19684)</p></li>
<li><p>Set <code class="docutils literal notranslate"><span class="pre">X-Frame-Options</span></code> header to DENY only if <code class="docutils literal notranslate"><span class="pre">X_FRAME_ENABLED</span></code> is set to true. (#19491)</p></li>
</ul>
</div>
<div class="section" id="id14">
<h4>Doc only changes<a class="headerlink" href="#id14" title="Permalink to this heading"></a></h4>
<ul class="simple">
<li><p>adding <code class="docutils literal notranslate"><span class="pre">on_execute_callback</span></code> to callbacks docs (#22362)</p></li>
<li><p>Add documentation on specifying a DB schema. (#22347)</p></li>
<li><p>Fix postgres part of pipeline example of tutorial (#21586)</p></li>
<li><p>Extend documentation for states of DAGs &amp; tasks and update trigger rules docs (#21382)</p></li>
<li><p>DB upgrade is required when updating Airflow (#22061)</p></li>
<li><p>Remove misleading MSSQL information from the docs (#21998)</p></li>
</ul>
</div>
<div class="section" id="misc">
<h4>Misc<a class="headerlink" href="#misc" title="Permalink to this heading"></a></h4>
<ul class="simple">
<li><p>Add the new Airflow Trove Classifier to setup.cfg (#22241)</p></li>
<li><p>Rename <code class="docutils literal notranslate"><span class="pre">to_delete</span></code> to <code class="docutils literal notranslate"><span class="pre">to_cancel</span></code> in TriggerRunner (#20658)</p></li>
<li><p>Update Flask-AppBuilder to <code class="docutils literal notranslate"><span class="pre">3.4.5</span></code> (#22596)</p></li>
</ul>
</div>
</div>
</div>
<div class="section" id="airflow-2-2-4-2022-02-22">
<h2><a class="toc-backref" href="#id169">Airflow 2.2.4, (2022-02-22)</a><a class="headerlink" href="#airflow-2-2-4-2022-02-22" title="Permalink to this heading"></a></h2>
<div class="section" id="id15">
<h3>Significant Changes<a class="headerlink" href="#id15" title="Permalink to this heading"></a></h3>
<div class="section" id="smart-sensors-deprecated">
<h4>Smart sensors deprecated<a class="headerlink" href="#smart-sensors-deprecated" title="Permalink to this heading"></a></h4>
<p>Smart sensors, an “early access” feature added in Airflow 2, are now deprecated and will be removed in Airflow 2.4.0. They have been superseded by Deferrable Operators, added in Airflow 2.2.0.</p>
<p>See <a class="reference external" href="https://airflow.apache.org/docs/apache-airflow/2.2.4/concepts/smart-sensors.html#migrating-to-deferrable-operators">Migrating to Deferrable Operators</a> for details on how to migrate.</p>
</div>
</div>
<div class="section" id="id16">
<h3>Bug Fixes<a class="headerlink" href="#id16" title="Permalink to this heading"></a></h3>
<ul class="simple">
<li><p>Adding missing login provider related methods from Flask-Appbuilder (#21294)</p></li>
<li><p>Fix slow DAG deletion due to missing <code class="docutils literal notranslate"><span class="pre">dag_id</span></code> index for job table (#20282)</p></li>
<li><p>Add a session backend to store session data in the database (#21478)</p></li>
<li><p>Show task status only for running dags or only for the last finished dag (#21352)</p></li>
<li><p>Use compat data interval shim in log handlers (#21289)</p></li>
<li><p>Fix mismatch in generated run_id and logical date of DAG run (#18707)</p></li>
<li><p>Fix TriggerDagRunOperator extra link (#19410)</p></li>
<li><p>Add possibility to create user in the Remote User mode (#19963)</p></li>
<li><p>Avoid deadlock when rescheduling task (#21362)</p></li>
<li><p>Fix the incorrect scheduling time for the first run of dag (#21011)</p></li>
<li><p>Fix Scheduler crash when executing task instances of missing DAG (#20349)</p></li>
<li><p>Deferred tasks does not cancel when DAG is marked fail (#20649)</p></li>
<li><p>Removed duplicated dag_run join in <code class="docutils literal notranslate"><span class="pre">Dag.get_task_instances()</span></code> (#20591)</p></li>
<li><p>Avoid unintentional data loss when deleting DAGs (#20758)</p></li>
<li><p>Fix session usage in <code class="docutils literal notranslate"><span class="pre">/rendered-k8s</span></code> view (#21006)</p></li>
<li><p>Fix <code class="docutils literal notranslate"><span class="pre">airflow</span> <span class="pre">dags</span> <span class="pre">backfill</span> <span class="pre">--reset-dagruns</span></code> errors when run twice (#21062)</p></li>
<li><p>Do not set <code class="docutils literal notranslate"><span class="pre">TaskInstance.max_tries</span></code> in <code class="docutils literal notranslate"><span class="pre">refresh_from_task</span></code> (#21018)</p></li>
<li><p>Don’t require dag_id in body in dagrun REST API endpoint (#21024)</p></li>
<li><p>Add Roles from Azure OAUTH Response in internal Security Manager (#20707)</p></li>
<li><p>Allow Viewing DagRuns and TIs if a user has DAG “read” perms (#20663)</p></li>
<li><p>Fix running <code class="docutils literal notranslate"><span class="pre">airflow</span> <span class="pre">dags</span> <span class="pre">test</span> <span class="pre">&lt;dag_id&gt;</span> <span class="pre">&lt;execution_dt&gt;</span></code> results in error when run twice (#21031)</p></li>
<li><p>Switch to non-vendored latest connexion library (#20910)</p></li>
<li><p>Bump flask-appbuilder to <code class="docutils literal notranslate"><span class="pre">&gt;=3.3.4</span></code> (#20628)</p></li>
<li><p>upgrade celery to <code class="docutils literal notranslate"><span class="pre">5.2.3</span></code> (#19703)</p></li>
<li><p>Bump croniter from <code class="docutils literal notranslate"><span class="pre">&lt;1.1</span></code> to <code class="docutils literal notranslate"><span class="pre">&lt;1.2</span></code> (#20489)</p></li>
<li><p>Avoid calling <code class="docutils literal notranslate"><span class="pre">DAG.following_schedule()</span></code> for <code class="docutils literal notranslate"><span class="pre">TaskInstance.get_template_context()</span></code> (#20486)</p></li>
<li><p>Fix(standalone): Remove hardcoded Webserver port (#20429)</p></li>
<li><p>Remove unnecessary logging in experimental API (#20356)</p></li>
<li><p>Un-ignore DeprecationWarning (#20322)</p></li>
<li><p>Deepcopying Kubernetes Secrets attributes causing issues (#20318)</p></li>
<li><p>Fix(dag-dependencies): fix arrow styling (#20303)</p></li>
<li><p>Adds retry on taskinstance retrieval lock (#20030)</p></li>
<li><p>Correctly send timing metrics when using dogstatsd (fix schedule_delay metric) (#19973)</p></li>
<li><p>Enhance <code class="docutils literal notranslate"><span class="pre">multiple_outputs</span></code> inference of dict typing (#19608)</p></li>
<li><p>Fixing Amazon SES email backend (#18042)</p></li>
<li><p>Pin MarkupSafe until we are able to upgrade Flask/Jinja (#21664)</p></li>
</ul>
</div>
<div class="section" id="id17">
<h3>Doc only changes<a class="headerlink" href="#id17" title="Permalink to this heading"></a></h3>
<ul class="simple">
<li><p>Added explaining concept of logical date in DAG run docs (#21433)</p></li>
<li><p>Add note about Variable precedence with env vars (#21568)</p></li>
<li><p>Update error docs to include before_send option (#21275)</p></li>
<li><p>Augment xcom docs (#20755)</p></li>
<li><p>Add documentation and release policy on “latest” constraints (#21093)</p></li>
<li><p>Add a link to the DAG model in the Python API reference (#21060)</p></li>
<li><p>Added an enum param example (#20841)</p></li>
<li><p>Compare taskgroup and subdag (#20700)</p></li>
<li><p>Add note about reserved <code class="docutils literal notranslate"><span class="pre">params</span></code> keyword (#20640)</p></li>
<li><p>Improve documentation on <code class="docutils literal notranslate"><span class="pre">Params</span></code> (#20567)</p></li>
<li><p>Fix typo in MySQL Database creation code (Set up DB docs) (#20102)</p></li>
<li><p>Add requirements.txt description (#20048)</p></li>
<li><p>Clean up <code class="docutils literal notranslate"><span class="pre">default_args</span></code> usage in docs (#19803)</p></li>
<li><p>Add docker-compose explanation to conn localhost (#19076)</p></li>
<li><p>Update CSV ingest code for tutorial (#18960)</p></li>
<li><p>Adds Pendulum 1.x -&gt; 2.x upgrade documentation (#18955)</p></li>
<li><p>Clean up dynamic <code class="docutils literal notranslate"><span class="pre">start_date</span></code> values from docs (#19607)</p></li>
<li><p>Docs for multiple pool slots (#20257)</p></li>
<li><p>Update upgrading.rst with detailed code example of how to resolve post-upgrade warning (#19993)</p></li>
</ul>
</div>
<div class="section" id="id18">
<h3>Misc<a class="headerlink" href="#id18" title="Permalink to this heading"></a></h3>
<ul class="simple">
<li><p>Deprecate some functions in the experimental API (#19931)</p></li>
<li><p>Deprecate smart sensors (#20151)</p></li>
</ul>
</div>
</div>
<div class="section" id="airflow-2-2-3-2021-12-21">
<h2><a class="toc-backref" href="#id170">Airflow 2.2.3, (2021-12-21)</a><a class="headerlink" href="#airflow-2-2-3-2021-12-21" title="Permalink to this heading"></a></h2>
<div class="section" id="id19">
<h3>Significant Changes<a class="headerlink" href="#id19" title="Permalink to this heading"></a></h3>
<p>No significant changes.</p>
</div>
<div class="section" id="id20">
<h3>Bug Fixes<a class="headerlink" href="#id20" title="Permalink to this heading"></a></h3>
<ul class="simple">
<li><p>Lazy Jinja2 context (#20217)</p></li>
<li><p>Exclude <code class="docutils literal notranslate"><span class="pre">snowflake-sqlalchemy</span></code> v1.2.5 (#20245)</p></li>
<li><p>Move away from legacy <code class="docutils literal notranslate"><span class="pre">importlib.resources</span></code> API (#19091)</p></li>
<li><p>Move <code class="docutils literal notranslate"><span class="pre">setgid</span></code> as the first command executed in forked task runner (#20040)</p></li>
<li><p>Fix race condition when starting <code class="docutils literal notranslate"><span class="pre">DagProcessorAgent</span></code> (#19935)</p></li>
<li><p>Limit <code class="docutils literal notranslate"><span class="pre">httpx</span></code> to &lt;0.20.0 (#20218)</p></li>
<li><p>Log provider import errors as debug warnings (#20172)</p></li>
<li><p>Bump minimum required <code class="docutils literal notranslate"><span class="pre">alembic</span></code> version (#20153)</p></li>
<li><p>Fix log link in gantt view (#20121)</p></li>
<li><p>fixing #19028 by moving chown to use sudo (#20114)</p></li>
<li><p>Lift off upper bound for <code class="docutils literal notranslate"><span class="pre">MarkupSafe</span></code> (#20113)</p></li>
<li><p>Fix infinite recursion on redact log (#20039)</p></li>
<li><p>Fix db downgrades (#19994)</p></li>
<li><p>Context class handles deprecation (#19886)</p></li>
<li><p>Fix possible reference to undeclared variable (#19933)</p></li>
<li><p>Validate <code class="docutils literal notranslate"><span class="pre">DagRun</span></code> state is valid on assignment (#19898)</p></li>
<li><p>Workaround occasional deadlocks with MSSQL (#19856)</p></li>
<li><p>Enable task run setting to be able reinitialize (#19845)</p></li>
<li><p>Fix log endpoint for same task (#19672)</p></li>
<li><p>Cast macro datetime string inputs explicitly (#19592)</p></li>
<li><p>Do not crash with stacktrace when task instance is missing (#19478)</p></li>
<li><p>Fix log timezone in task log view (#19342) (#19401)</p></li>
<li><p>Fix: Add taskgroup tooltip to graph view (#19083)</p></li>
<li><p>Rename execution date in forms and tables (#19063)</p></li>
<li><p>Simplify “invalid TI state” message (#19029)</p></li>
<li><p>Handle case of nonexistent file when preparing file path queue (#18998)</p></li>
<li><p>Do not create dagruns for DAGs with import errors (#19367)</p></li>
<li><p>Fix field relabeling when switching between conn types (#19411)</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">KubernetesExecutor</span></code> should default to template image if used (#19484)</p></li>
<li><p>Fix task instance api cannot list task instances with <code class="docutils literal notranslate"><span class="pre">None</span></code> state (#19487)</p></li>
<li><p>Fix IntegrityError in <code class="docutils literal notranslate"><span class="pre">DagFileProcessor.manage_slas</span></code> (#19553)</p></li>
<li><p>Declare data interval fields as serializable (#19616)</p></li>
<li><p>Relax timetable class validation (#19878)</p></li>
<li><p>Fix labels used to find queued <code class="docutils literal notranslate"><span class="pre">KubernetesExecutor</span></code> pods (#19904)</p></li>
<li><p>Fix moved data migration check for MySQL when replication is used (#19999)</p></li>
</ul>
</div>
<div class="section" id="id21">
<h3>Doc only changes<a class="headerlink" href="#id21" title="Permalink to this heading"></a></h3>
<ul class="simple">
<li><p>Warn without tracebacks when example_dags are missing deps (#20295)</p></li>
<li><p>Deferrable operators doc clarification (#20150)</p></li>
<li><p>Ensure the example DAGs are all working (#19355)</p></li>
<li><p>Updating core example DAGs to use TaskFlow API where applicable (#18562)</p></li>
<li><p>Add xcom clearing behaviour on task retries (#19968)</p></li>
<li><p>Add a short chapter focusing on adapting secret format for connections (#19859)</p></li>
<li><p>Add information about supported OS-es for Apache Airflow (#19855)</p></li>
<li><p>Update docs to reflect that changes to the <code class="docutils literal notranslate"><span class="pre">base_log_folder</span></code> require updating other configs (#19793)</p></li>
<li><p>Disclaimer in <code class="docutils literal notranslate"><span class="pre">KubernetesExecutor</span></code> pod template docs (#19686)</p></li>
<li><p>Add upgrade note on <code class="docutils literal notranslate"><span class="pre">execution_date</span></code> -&gt; <code class="docutils literal notranslate"><span class="pre">run_id</span></code> (#19593)</p></li>
<li><p>Expanding <code class="docutils literal notranslate"><span class="pre">.output</span></code> operator property information in TaskFlow tutorial doc (#19214)</p></li>
<li><p>Add example SLA DAG (#19563)</p></li>
<li><p>Add a proper example to patch DAG (#19465)</p></li>
<li><p>Add DAG file processing description to Scheduler Concepts (#18954)</p></li>
<li><p>Updating explicit arg example in TaskFlow API tutorial doc (#18907)</p></li>
<li><p>Adds back documentation about context usage in <a class="reference external" href="mailto:Python/&#37;&#52;&#48;task">Python/<span>&#64;</span>task</a> (#18868)</p></li>
<li><p>Add release date for when an endpoint/field is added in the REST API (#19203)</p></li>
<li><p>Better <code class="docutils literal notranslate"><span class="pre">pod_template_file</span></code> examples (#19691)</p></li>
<li><p>Add description on how you can customize image entrypoint (#18915)</p></li>
<li><p>Dags-in-image pod template example should not have dag mounts (#19337)</p></li>
</ul>
</div>
</div>
<div class="section" id="airflow-2-2-2-2021-11-15">
<h2><a class="toc-backref" href="#id171">Airflow 2.2.2 (2021-11-15)</a><a class="headerlink" href="#airflow-2-2-2-2021-11-15" title="Permalink to this heading"></a></h2>
<div class="section" id="id22">
<h3>Significant Changes<a class="headerlink" href="#id22" title="Permalink to this heading"></a></h3>
<p>No significant changes.</p>
</div>
<div class="section" id="id23">
<h3>Bug Fixes<a class="headerlink" href="#id23" title="Permalink to this heading"></a></h3>
<ul class="simple">
<li><p>Fix bug when checking for existence of a Variable (#19395)</p></li>
<li><p>Fix Serialization when <code class="docutils literal notranslate"><span class="pre">relativedelta</span></code> is passed as <code class="docutils literal notranslate"><span class="pre">schedule_interval</span></code> (#19418)</p></li>
<li><p>Fix moving of dangling TaskInstance rows for SQL Server (#19425)</p></li>
<li><p>Fix task instance modal in gantt view (#19258)</p></li>
<li><p>Fix serialization of <code class="docutils literal notranslate"><span class="pre">Params</span></code> with set data type (#19267)</p></li>
<li><p>Check if job object is <code class="docutils literal notranslate"><span class="pre">None</span></code> before calling <code class="docutils literal notranslate"><span class="pre">.is_alive()</span></code> (#19380)</p></li>
<li><p>Task should fail immediately when pod is unprocessable (#19359)</p></li>
<li><p>Fix downgrade for a DB Migration (#19390)</p></li>
<li><p>Only mark SchedulerJobs as failed, not any jobs (#19375)</p></li>
<li><p>Fix message on “Mark as” confirmation page (#19363)</p></li>
<li><p>Bugfix: Check next run exists before reading data interval (#19307)</p></li>
<li><p>Fix MySQL db migration with default encoding/collation (#19268)</p></li>
<li><p>Fix hidden tooltip position (#19261)</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">sqlite_default</span></code> Connection has been hard-coded to <code class="docutils literal notranslate"><span class="pre">/tmp</span></code>, use <code class="docutils literal notranslate"><span class="pre">gettempdir</span></code> instead (#19255)</p></li>
<li><p>Fix Toggle Wrap on DAG code page (#19211)</p></li>
<li><p>Clarify “dag not found” error message in CLI (#19338)</p></li>
<li><p>Add Note to SLA regarding <code class="docutils literal notranslate"><span class="pre">schedule_interval</span></code> (#19173)</p></li>
<li><p>Use <code class="docutils literal notranslate"><span class="pre">execution_date</span></code> to check for existing <code class="docutils literal notranslate"><span class="pre">DagRun</span></code> for <code class="docutils literal notranslate"><span class="pre">TriggerDagRunOperator</span></code> (#18968)</p></li>
<li><p>Add explicit session parameter in <code class="docutils literal notranslate"><span class="pre">PoolSlotsAvailableDep</span></code> (#18875)</p></li>
<li><p>FAB still requires <code class="docutils literal notranslate"><span class="pre">WTForms&lt;3.0</span></code> (#19466)</p></li>
<li><p>Fix missing dagruns when <code class="docutils literal notranslate"><span class="pre">catchup=True</span></code> (#19528)</p></li>
</ul>
</div>
<div class="section" id="id24">
<h3>Doc only changes<a class="headerlink" href="#id24" title="Permalink to this heading"></a></h3>
<ul class="simple">
<li><p>Add missing parameter documentation for “timetable” (#19282)</p></li>
<li><p>Improve Kubernetes Executor docs (#19339)</p></li>
<li><p>Update image tag used in docker docs</p></li>
</ul>
</div>
</div>
<div class="section" id="airflow-2-2-1-2021-10-29">
<h2><a class="toc-backref" href="#id172">Airflow 2.2.1 (2021-10-29)</a><a class="headerlink" href="#airflow-2-2-1-2021-10-29" title="Permalink to this heading"></a></h2>
<div class="section" id="id25">
<h3>Significant Changes<a class="headerlink" href="#id25" title="Permalink to this heading"></a></h3>
<div class="section" id="param-s-default-value-for-default-removed">
<h4><code class="docutils literal notranslate"><span class="pre">Param</span></code>’s default value for <code class="docutils literal notranslate"><span class="pre">default</span></code> removed<a class="headerlink" href="#param-s-default-value-for-default-removed" title="Permalink to this heading"></a></h4>
<p><code class="docutils literal notranslate"><span class="pre">Param</span></code>, introduced in Airflow 2.2.0, accidentally set the default value to <code class="docutils literal notranslate"><span class="pre">None</span></code>. This default has been removed. If you want <code class="docutils literal notranslate"><span class="pre">None</span></code> as your default, explicitly set it as such. For example:</p>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">Param</span><span class="p">(</span><span class="kc">None</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="p">[</span><span class="s2">&quot;null&quot;</span><span class="p">,</span> <span class="s2">&quot;string&quot;</span><span class="p">])</span>
</pre></div>
</div>
<p>Now if you resolve a <code class="docutils literal notranslate"><span class="pre">Param</span></code> without a default and don’t pass a value, you will get an <code class="docutils literal notranslate"><span class="pre">TypeError</span></code>. For Example:</p>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">Param</span><span class="p">()</span><span class="o">.</span><span class="n">resolve</span><span class="p">()</span> <span class="c1"># raises TypeError</span>
</pre></div>
</div>
</div>
<div class="section" id="max-queued-runs-per-dag-configuration-has-been-removed">
<h4><code class="docutils literal notranslate"><span class="pre">max_queued_runs_per_dag</span></code> configuration has been removed<a class="headerlink" href="#max-queued-runs-per-dag-configuration-has-been-removed" title="Permalink to this heading"></a></h4>
<p>The <code class="docutils literal notranslate"><span class="pre">max_queued_runs_per_dag</span></code> configuration option in <code class="docutils literal notranslate"><span class="pre">[core]</span></code> section has been removed. Previously, this controlled the number of queued dagrun
the scheduler can create in a dag. Now, the maximum number is controlled internally by the DAG’s <code class="docutils literal notranslate"><span class="pre">max_active_runs</span></code></p>
</div>
</div>
<div class="section" id="id26">
<h3>Bug Fixes<a class="headerlink" href="#id26" title="Permalink to this heading"></a></h3>
<ul class="simple">
<li><p>Fix Unexpected commit error in SchedulerJob (#19213)</p></li>
<li><p>Add DagRun.logical_date as a property (#19198)</p></li>
<li><p>Clear <code class="docutils literal notranslate"><span class="pre">ti.next_method</span></code> and <code class="docutils literal notranslate"><span class="pre">ti.next_kwargs</span></code> on task finish (#19183)</p></li>
<li><p>Faster PostgreSQL db migration to Airflow 2.2 (#19166)</p></li>
<li><p>Remove incorrect type comment in <code class="docutils literal notranslate"><span class="pre">Swagger2Specification._set_defaults</span></code> classmethod (#19065)</p></li>
<li><p>Add TriggererJob to jobs check command (#19179, #19185)</p></li>
<li><p>Hide tooltip when next run is <code class="docutils literal notranslate"><span class="pre">None</span></code> (#19112)</p></li>
<li><p>Create TI context with data interval compat layer (#19148)</p></li>
<li><p>Fix queued dag runs changes <code class="docutils literal notranslate"><span class="pre">catchup=False</span></code> behaviour (#19130, #19145)</p></li>
<li><p>add detailed information to logging when a dag or a task finishes. (#19097)</p></li>
<li><p>Warn about unsupported Python 3.10 (#19060)</p></li>
<li><p>Fix catchup by limiting queued dagrun creation using <code class="docutils literal notranslate"><span class="pre">max_active_runs</span></code> (#18897)</p></li>
<li><p>Prevent scheduler crash when serialized dag is missing (#19113)</p></li>
<li><p>Don’t install SQLAlchemy/Pendulum adapters for other DBs (#18745)</p></li>
<li><p>Workaround <code class="docutils literal notranslate"><span class="pre">libstdcpp</span></code> TLS error (#19010)</p></li>
<li><p>Change <code class="docutils literal notranslate"><span class="pre">ds</span></code>, <code class="docutils literal notranslate"><span class="pre">ts</span></code>, etc. back to use logical date (#19088)</p></li>
<li><p>Ensure task state doesn’t change when marked as failed/success/skipped (#19095)</p></li>
<li><p>Relax packaging requirement (#19087)</p></li>
<li><p>Rename trigger page label to Logical Date (#19061)</p></li>
<li><p>Allow Param to support a default value of <code class="docutils literal notranslate"><span class="pre">None</span></code> (#19034)</p></li>
<li><p>Upgrade old DAG/task param format when deserializing from the DB (#18986)</p></li>
<li><p>Don’t bake ENV and _cmd into tmp config for non-sudo (#18772)</p></li>
<li><p>CLI: Fail <code class="docutils literal notranslate"><span class="pre">backfill</span></code> command before loading DAGs if missing args (#18994)</p></li>
<li><p>BugFix: Null execution date on insert to <code class="docutils literal notranslate"><span class="pre">task_fail</span></code> violating NOT NULL (#18979)</p></li>
<li><p>Try to move “dangling” rows in db upgrade (#18953)</p></li>
<li><p>Row lock TI query in <code class="docutils literal notranslate"><span class="pre">SchedulerJob._process_executor_events</span></code> (#18975)</p></li>
<li><p>Sentry before send fallback (#18980)</p></li>
<li><p>Fix <code class="docutils literal notranslate"><span class="pre">XCom.delete</span></code> error in Airflow 2.2.0 (#18956)</p></li>
<li><p>Check python version before starting triggerer (#18926)</p></li>
</ul>
</div>
<div class="section" id="id27">
<h3>Doc only changes<a class="headerlink" href="#id27" title="Permalink to this heading"></a></h3>
<ul class="simple">
<li><p>Update access control documentation for TaskInstances and DagRuns (#18644)</p></li>
<li><p>Add information about keepalives for managed Postgres (#18850)</p></li>
<li><p>Doc: Add Callbacks Section to Logging &amp; Monitoring (#18842)</p></li>
<li><p>Group PATCH DAGrun together with other DAGRun endpoints (#18885)</p></li>
</ul>
</div>
</div>
<div class="section" id="airflow-2-2-0-2021-10-11">
<h2><a class="toc-backref" href="#id173">Airflow 2.2.0 (2021-10-11)</a><a class="headerlink" href="#airflow-2-2-0-2021-10-11" title="Permalink to this heading"></a></h2>
<div class="section" id="id28">
<h3>Significant Changes<a class="headerlink" href="#id28" title="Permalink to this heading"></a></h3>
<p>Note: Upgrading the database to <code class="docutils literal notranslate"><span class="pre">2.2.0</span></code> or later can take some time to complete, particularly if you have a large <code class="docutils literal notranslate"><span class="pre">task_instance</span></code> table.</p>
<div class="section" id="worker-log-server-port-configuration-has-been-moved-to-the-logging-section">
<h4><code class="docutils literal notranslate"><span class="pre">worker_log_server_port</span></code> configuration has been moved to the <code class="docutils literal notranslate"><span class="pre">logging</span></code> section.<a class="headerlink" href="#worker-log-server-port-configuration-has-been-moved-to-the-logging-section" title="Permalink to this heading"></a></h4>
<p>The <code class="docutils literal notranslate"><span class="pre">worker_log_server_port</span></code> configuration option has been moved from <code class="docutils literal notranslate"><span class="pre">[celery]</span></code> section to <code class="docutils literal notranslate"><span class="pre">[logging]</span></code> section to allow for re-use between different executors.</p>
</div>
<div class="section" id="pandas-is-now-an-optional-dependency">
<h4><code class="docutils literal notranslate"><span class="pre">pandas</span></code> is now an optional dependency<a class="headerlink" href="#pandas-is-now-an-optional-dependency" title="Permalink to this heading"></a></h4>
<p>Previously <code class="docutils literal notranslate"><span class="pre">pandas</span></code> was a core requirement so when you run <code class="docutils literal notranslate"><span class="pre">pip</span> <span class="pre">install</span> <span class="pre">apache-airflow</span></code> it looked for <code class="docutils literal notranslate"><span class="pre">pandas</span></code>
library and installed it if it does not exist.</p>
<p>If you want to install <code class="docutils literal notranslate"><span class="pre">pandas</span></code> compatible with Airflow, you can use <code class="docutils literal notranslate"><span class="pre">[pandas]</span></code> extra while
installing Airflow, example for Python 3.8 and Airflow 2.1.2:</p>
<div class="highlight-shell notranslate"><div class="highlight"><pre><span></span>pip install -U <span class="s2">&quot;apache-airflow[pandas]==2.1.2&quot;</span> <span class="se">\</span>
--constraint https://raw.githubusercontent.com/apache/airflow/constraints-2.1.2/constraints-3.8.txt<span class="s2">&quot;</span>
</pre></div>
</div>
</div>
<div class="section" id="none-failed-or-skipped-trigger-rule-has-been-deprecated">
<h4><code class="docutils literal notranslate"><span class="pre">none_failed_or_skipped</span></code> trigger rule has been deprecated<a class="headerlink" href="#none-failed-or-skipped-trigger-rule-has-been-deprecated" title="Permalink to this heading"></a></h4>
<p><code class="docutils literal notranslate"><span class="pre">TriggerRule.NONE_FAILED_OR_SKIPPED</span></code> is replaced by <code class="docutils literal notranslate"><span class="pre">TriggerRule.NONE_FAILED_MIN_ONE_SUCCESS</span></code>.
This is only name change, no functionality changes made.
This change is backward compatible however <code class="docutils literal notranslate"><span class="pre">TriggerRule.NONE_FAILED_OR_SKIPPED</span></code> will be removed in next major release.</p>
</div>
<div class="section" id="dummy-trigger-rule-has-been-deprecated">
<h4>Dummy trigger rule has been deprecated<a class="headerlink" href="#dummy-trigger-rule-has-been-deprecated" title="Permalink to this heading"></a></h4>
<p><code class="docutils literal notranslate"><span class="pre">TriggerRule.DUMMY</span></code> is replaced by <code class="docutils literal notranslate"><span class="pre">TriggerRule.ALWAYS</span></code>.
This is only name change, no functionality changes made.
This change is backward compatible however <code class="docutils literal notranslate"><span class="pre">TriggerRule.DUMMY</span></code> will be removed in next major release.</p>
</div>
<div class="section" id="dag-concurrency-settings-have-been-renamed">
<h4>DAG concurrency settings have been renamed<a class="headerlink" href="#dag-concurrency-settings-have-been-renamed" title="Permalink to this heading"></a></h4>
<p><code class="docutils literal notranslate"><span class="pre">[core]</span> <span class="pre">dag_concurrency</span></code> setting in <code class="docutils literal notranslate"><span class="pre">airflow.cfg</span></code> has been renamed to <code class="docutils literal notranslate"><span class="pre">[core]</span> <span class="pre">max_active_tasks_per_dag</span></code>
for better understanding.</p>
<p>It is the maximum number of task instances allowed to run concurrently in each DAG. To calculate
the number of tasks that is running concurrently for a DAG, add up the number of running
tasks for all DAG runs of the DAG.</p>
<p>This is configurable at the DAG level with <code class="docutils literal notranslate"><span class="pre">max_active_tasks</span></code> and a default can be set in <code class="docutils literal notranslate"><span class="pre">airflow.cfg</span></code> as
<code class="docutils literal notranslate"><span class="pre">[core]</span> <span class="pre">max_active_tasks_per_dag</span></code>.</p>
<p><strong>Before</strong>:</p>
<div class="highlight-ini notranslate"><div class="highlight"><pre><span></span><span class="k">[core]</span><span class="w"></span>
<span class="na">dag_concurrency</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">16</span><span class="w"></span>
</pre></div>
</div>
<p><strong>Now</strong>:</p>
<div class="highlight-ini notranslate"><div class="highlight"><pre><span></span><span class="k">[core]</span><span class="w"></span>
<span class="na">max_active_tasks_per_dag</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">16</span><span class="w"></span>
</pre></div>
</div>
<p>Similarly, <code class="docutils literal notranslate"><span class="pre">DAG.concurrency</span></code> has been renamed to <code class="docutils literal notranslate"><span class="pre">DAG.max_active_tasks</span></code>.</p>
<p><strong>Before</strong>:</p>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">dag</span> <span class="o">=</span> <span class="n">DAG</span><span class="p">(</span>
<span class="n">dag_id</span><span class="o">=</span><span class="s2">&quot;example_dag&quot;</span><span class="p">,</span>
<span class="n">start_date</span><span class="o">=</span><span class="n">datetime</span><span class="p">(</span><span class="mi">2021</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">),</span>
<span class="n">catchup</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
<span class="n">concurrency</span><span class="o">=</span><span class="mi">3</span><span class="p">,</span>
<span class="p">)</span>
</pre></div>
</div>
<p><strong>Now</strong>:</p>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">dag</span> <span class="o">=</span> <span class="n">DAG</span><span class="p">(</span>
<span class="n">dag_id</span><span class="o">=</span><span class="s2">&quot;example_dag&quot;</span><span class="p">,</span>
<span class="n">start_date</span><span class="o">=</span><span class="n">datetime</span><span class="p">(</span><span class="mi">2021</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">),</span>
<span class="n">catchup</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
<span class="n">max_active_tasks</span><span class="o">=</span><span class="mi">3</span><span class="p">,</span>
<span class="p">)</span>
</pre></div>
</div>
<p>If you are using DAGs Details API endpoint, use <code class="docutils literal notranslate"><span class="pre">max_active_tasks</span></code> instead of <code class="docutils literal notranslate"><span class="pre">concurrency</span></code>.</p>
</div>
<div class="section" id="task-concurrency-parameter-has-been-renamed">
<h4>Task concurrency parameter has been renamed<a class="headerlink" href="#task-concurrency-parameter-has-been-renamed" title="Permalink to this heading"></a></h4>
<p><code class="docutils literal notranslate"><span class="pre">BaseOperator.task_concurrency</span></code> has been deprecated and renamed to <code class="docutils literal notranslate"><span class="pre">max_active_tis_per_dag</span></code> for
better understanding.</p>
<p>This parameter controls the number of concurrent running task instances across <code class="docutils literal notranslate"><span class="pre">dag_runs</span></code>
per task.</p>
<p><strong>Before</strong>:</p>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="k">with</span> <span class="n">DAG</span><span class="p">(</span><span class="n">dag_id</span><span class="o">=</span><span class="s2">&quot;task_concurrency_example&quot;</span><span class="p">):</span>
<span class="n">BashOperator</span><span class="p">(</span><span class="n">task_id</span><span class="o">=</span><span class="s2">&quot;t1&quot;</span><span class="p">,</span> <span class="n">task_concurrency</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> <span class="n">bash_command</span><span class="o">=</span><span class="s2">&quot;echo Hi&quot;</span><span class="p">)</span>
</pre></div>
</div>
<p><strong>After</strong>:</p>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="k">with</span> <span class="n">DAG</span><span class="p">(</span><span class="n">dag_id</span><span class="o">=</span><span class="s2">&quot;task_concurrency_example&quot;</span><span class="p">):</span>
<span class="n">BashOperator</span><span class="p">(</span><span class="n">task_id</span><span class="o">=</span><span class="s2">&quot;t1&quot;</span><span class="p">,</span> <span class="n">max_active_tis_per_dag</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span> <span class="n">bash_command</span><span class="o">=</span><span class="s2">&quot;echo Hi&quot;</span><span class="p">)</span>
</pre></div>
</div>
</div>
<div class="section" id="processor-poll-interval-config-have-been-renamed-to-scheduler-idle-sleep-time">
<h4><code class="docutils literal notranslate"><span class="pre">processor_poll_interval</span></code> config have been renamed to <code class="docutils literal notranslate"><span class="pre">scheduler_idle_sleep_time</span></code><a class="headerlink" href="#processor-poll-interval-config-have-been-renamed-to-scheduler-idle-sleep-time" title="Permalink to this heading"></a></h4>
<p><code class="docutils literal notranslate"><span class="pre">[scheduler]</span> <span class="pre">processor_poll_interval</span></code> setting in <code class="docutils literal notranslate"><span class="pre">airflow.cfg</span></code> has been renamed to <code class="docutils literal notranslate"><span class="pre">[scheduler]</span> <span class="pre">scheduler_idle_sleep_time</span></code>
for better understanding.</p>
<p>It controls the ‘time to sleep’ at the end of the Scheduler loop if nothing was scheduled inside <code class="docutils literal notranslate"><span class="pre">SchedulerJob</span></code>.</p>
<p><strong>Before</strong>:</p>
<div class="highlight-ini notranslate"><div class="highlight"><pre><span></span><span class="k">[scheduler]</span><span class="w"></span>
<span class="na">processor_poll_interval</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">16</span><span class="w"></span>
</pre></div>
</div>
<p><strong>Now</strong>:</p>
<div class="highlight-ini notranslate"><div class="highlight"><pre><span></span><span class="k">[scheduler]</span><span class="w"></span>
<span class="na">scheduler_idle_sleep_time</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">16</span><span class="w"></span>
</pre></div>
</div>
</div>
<div class="section" id="marking-success-failed-automatically-clears-failed-downstream-tasks">
<h4>Marking success/failed automatically clears failed downstream tasks<a class="headerlink" href="#marking-success-failed-automatically-clears-failed-downstream-tasks" title="Permalink to this heading"></a></h4>
<p>When marking a task success/failed in Graph View, its downstream tasks that are in failed/upstream_failed state are automatically cleared.</p>
</div>
<div class="section" id="core-store-dag-code-has-been-removed">
<h4><code class="docutils literal notranslate"><span class="pre">[core]</span> <span class="pre">store_dag_code</span></code> has been removed<a class="headerlink" href="#core-store-dag-code-has-been-removed" title="Permalink to this heading"></a></h4>
<p>While DAG Serialization is a strict requirements since Airflow 2, we allowed users to control
where the Webserver looked for when showing the <strong>Code View</strong>.</p>
<p>If <code class="docutils literal notranslate"><span class="pre">[core]</span> <span class="pre">store_dag_code</span></code> was set to <code class="docutils literal notranslate"><span class="pre">True</span></code>, the Scheduler stored the code in the DAG file in the
DB (in <code class="docutils literal notranslate"><span class="pre">dag_code</span></code> table) as a plain string, and the webserver just read it from the same table.
If the value was set to <code class="docutils literal notranslate"><span class="pre">False</span></code>, the webserver read it from the DAG file.</p>
<p>While this setting made sense for Airflow &lt; 2, it caused some confusion to some users where they thought
this setting controlled DAG Serialization.</p>
<p>From Airflow 2.2, Airflow will only look for DB when a user clicks on <strong>Code View</strong> for a DAG.</p>
</div>
<div class="section" id="clearing-a-running-task-sets-its-state-to-restarting">
<h4>Clearing a running task sets its state to <code class="docutils literal notranslate"><span class="pre">RESTARTING</span></code><a class="headerlink" href="#clearing-a-running-task-sets-its-state-to-restarting" title="Permalink to this heading"></a></h4>
<p>Previously, clearing a running task sets its state to <code class="docutils literal notranslate"><span class="pre">SHUTDOWN</span></code>. The task gets killed and goes into <code class="docutils literal notranslate"><span class="pre">FAILED</span></code> state. After <a class="reference external" href="https://github.com/apache/airflow/pull/16681">#16681</a>, clearing a running task sets its state to <code class="docutils literal notranslate"><span class="pre">RESTARTING</span></code>. The task is eligible for retry without going into <code class="docutils literal notranslate"><span class="pre">FAILED</span></code> state.</p>
</div>
<div class="section" id="remove-taskinstance-log-filepath-attribute">
<h4>Remove <code class="docutils literal notranslate"><span class="pre">TaskInstance.log_filepath</span></code> attribute<a class="headerlink" href="#remove-taskinstance-log-filepath-attribute" title="Permalink to this heading"></a></h4>
<p>This method returned incorrect values for a long time, because it did not take into account the different
logger configuration and task retries. We have also started supporting more advanced tools that don’t use
files, so it is impossible to determine the correct file path in every case e.g. Stackdriver doesn’t use files
but identifies logs based on labels. For this reason, we decided to delete this attribute.</p>
<p>If you need to read logs, you can use <code class="docutils literal notranslate"><span class="pre">airflow.utils.log.log_reader.TaskLogReader</span></code> class, which does not have
the above restrictions.</p>
</div>
<div class="section" id="if-a-sensor-times-out-it-will-not-retry">
<h4>If a sensor times out, it will not retry<a class="headerlink" href="#if-a-sensor-times-out-it-will-not-retry" title="Permalink to this heading"></a></h4>
<p>Previously, a sensor is retried when it times out until the number of <code class="docutils literal notranslate"><span class="pre">retries</span></code> are exhausted. So the effective timeout of a sensor is <code class="docutils literal notranslate"><span class="pre">timeout</span> <span class="pre">*</span> <span class="pre">(retries</span> <span class="pre">+</span> <span class="pre">1)</span></code>. This behaviour is now changed. A sensor will immediately fail without retrying if <code class="docutils literal notranslate"><span class="pre">timeout</span></code> is reached. If it’s desirable to let the sensor continue running for longer time, set a larger <code class="docutils literal notranslate"><span class="pre">timeout</span></code> instead.</p>
</div>
<div class="section" id="default-task-pools-slots-can-be-set-using-core-default-pool-task-slot-count">
<h4>Default Task Pools Slots can be set using <code class="docutils literal notranslate"><span class="pre">[core]</span> <span class="pre">default_pool_task_slot_count</span></code><a class="headerlink" href="#default-task-pools-slots-can-be-set-using-core-default-pool-task-slot-count" title="Permalink to this heading"></a></h4>
<p>By default tasks are running in <code class="docutils literal notranslate"><span class="pre">default_pool</span></code>. <code class="docutils literal notranslate"><span class="pre">default_pool</span></code> is initialized with <code class="docutils literal notranslate"><span class="pre">128</span></code> slots and user can change the
number of slots through UI/CLI/API for an existing deployment.</p>
<p>For new deployments, you can use <code class="docutils literal notranslate"><span class="pre">default_pool_task_slot_count</span></code> setting in <code class="docutils literal notranslate"><span class="pre">[core]</span></code> section. This setting would
not have any effect in an existing deployment where the <code class="docutils literal notranslate"><span class="pre">default_pool</span></code> already exists.</p>
<p>Previously this was controlled by <code class="docutils literal notranslate"><span class="pre">non_pooled_task_slot_count</span></code> in <code class="docutils literal notranslate"><span class="pre">[core]</span></code> section, which was not documented.</p>
</div>
<div class="section" id="webserver-dag-refresh-buttons-removed">
<h4>Webserver DAG refresh buttons removed<a class="headerlink" href="#webserver-dag-refresh-buttons-removed" title="Permalink to this heading"></a></h4>
<p>Now that the DAG parser syncs DAG permissions there is no longer a need for manually refreshing DAGs. As such, the buttons to refresh a DAG have been removed from the UI.</p>
<p>In addition, the <code class="docutils literal notranslate"><span class="pre">/refresh</span></code> and <code class="docutils literal notranslate"><span class="pre">/refresh_all</span></code> webserver endpoints have also been removed.</p>
</div>
<div class="section" id="taskinstances-now-require-a-dagrun">
<h4>TaskInstances now <em>require</em> a DagRun<a class="headerlink" href="#taskinstances-now-require-a-dagrun" title="Permalink to this heading"></a></h4>
<p>Under normal operation every TaskInstance row in the database would have DagRun row too, but it was possible to manually delete the DagRun and Airflow would still schedule the TaskInstances.</p>
<p>In Airflow 2.2 we have changed this and now there is a database-level foreign key constraint ensuring that every TaskInstance has a DagRun row.</p>
<p>Before updating to this 2.2 release you will have to manually resolve any inconsistencies (add back DagRun rows, or delete TaskInstances) if you have any “dangling” TaskInstance” rows.</p>
<p>As part of this change the <code class="docutils literal notranslate"><span class="pre">clean_tis_without_dagrun_interval</span></code> config option under <code class="docutils literal notranslate"><span class="pre">[scheduler]</span></code> section has been removed and has no effect.</p>
</div>
<div class="section" id="taskinstance-and-taskreschedule-now-define-run-id-instead-of-execution-date">
<h4>TaskInstance and TaskReschedule now define <code class="docutils literal notranslate"><span class="pre">run_id</span></code> instead of <code class="docutils literal notranslate"><span class="pre">execution_date</span></code><a class="headerlink" href="#taskinstance-and-taskreschedule-now-define-run-id-instead-of-execution-date" title="Permalink to this heading"></a></h4>
<p>As a part of the TaskInstance-DagRun relation change, the <code class="docutils literal notranslate"><span class="pre">execution_date</span></code> columns on TaskInstance and TaskReschedule have been removed from the database, and replaced by <a class="reference external" href="https://docs.sqlalchemy.org/en/13/orm/extensions/associationproxy.html">association proxy</a> fields at the ORM level. If you access Airflow’s metadatabase directly, you should rewrite the implementation to use the <code class="docutils literal notranslate"><span class="pre">run_id</span></code> columns instead.</p>
<p>Note that Airflow’s metadatabase definition on both the database and ORM levels are considered implementation detail without strict backward compatibility guarantees.</p>
</div>
<div class="section" id="daskexecutor-dask-worker-resources-and-queues">
<h4>DaskExecutor - Dask Worker Resources and queues<a class="headerlink" href="#daskexecutor-dask-worker-resources-and-queues" title="Permalink to this heading"></a></h4>
<p>If dask workers are not started with complementary resources to match the specified queues, it will now result in an <code class="docutils literal notranslate"><span class="pre">AirflowException</span></code>, whereas before it would have just ignored the <code class="docutils literal notranslate"><span class="pre">queue</span></code> argument.</p>
</div>
</div>
<div class="section" id="id31">
<h3>New Features<a class="headerlink" href="#id31" title="Permalink to this heading"></a></h3>
<ul class="simple">
<li><p>AIP-39: Add (customizable) Timetable class to Airflow for richer scheduling behaviour (#15397, #16030,
#16352, #17030, #17122, #17414, #17552, #17755, #17989, #18084, #18088, #18244, #18266, #18420, #18434,
#18421, #18475, #18499, #18573, #18522, #18729, #18706, #18742, #18786, #18804)</p></li>
<li><p>AIP-40: Add Deferrable “Async” Tasks (#15389, #17564, #17565, #17601, #17745, #17747, #17748, #17875,
#17876, #18129, #18210, #18214, #18552, #18728, #18414)</p></li>
<li><p>Add a Docker Taskflow decorator (#15330, #18739)</p></li>
<li><p>Add Airflow Standalone command (#15826)</p></li>
<li><p>Display alert messages on dashboard from local settings (#18284)</p></li>
<li><p>Advanced Params using json-schema (#17100)</p></li>
<li><p>Ability to test connections from UI or API (#15795, #18750)</p></li>
<li><p>Add Next Run to UI (#17732)</p></li>
<li><p>Add default weight rule configuration option (#18627)</p></li>
<li><p>Add a calendar field to choose the execution date of the DAG when triggering it (#16141)</p></li>
<li><p>Allow setting specific <code class="docutils literal notranslate"><span class="pre">cwd</span></code> for BashOperator (#17751)</p></li>
<li><p>Show import errors in DAG views (#17818)</p></li>
<li><p>Add pre/post execution hooks [Experimental] (#17576)</p></li>
<li><p>Added table to view providers in Airflow ui under admin tab (#15385)</p></li>
<li><p>Adds secrets backend/logging/auth information to provider yaml (#17625)</p></li>
<li><p>Add date format filters to Jinja environment (#17451)</p></li>
<li><p>Introduce <code class="docutils literal notranslate"><span class="pre">RESTARTING</span></code> state (#16681)</p></li>
<li><p>Webserver: Unpause DAG on manual trigger (#16569)</p></li>
<li><p>API endpoint to create new user (#16609)</p></li>
<li><p>Add <code class="docutils literal notranslate"><span class="pre">insert_args</span></code> for support transfer replace (#15825)</p></li>
<li><p>Add recursive flag to glob in filesystem sensor (#16894)</p></li>
<li><p>Add conn to jinja template context (#16686)</p></li>
<li><p>Add <code class="docutils literal notranslate"><span class="pre">default_args</span></code> for <code class="docutils literal notranslate"><span class="pre">TaskGroup</span></code> (#16557)</p></li>
<li><p>Allow adding duplicate connections from UI (#15574)</p></li>
<li><p>Allow specifying multiple URLs via the CORS config option (#17941)</p></li>
<li><p>Implement API endpoint for DAG deletion (#17980)</p></li>
<li><p>Add DAG run endpoint for marking a dagrun success or failed(#17839)</p></li>
<li><p>Add support for <code class="docutils literal notranslate"><span class="pre">kinit</span></code> options <code class="docutils literal notranslate"><span class="pre">[-f|-F]</span></code> and <code class="docutils literal notranslate"><span class="pre">[-a|-A]</span></code> (#17816)</p></li>
<li><p>Queue support for <code class="docutils literal notranslate"><span class="pre">DaskExecutor</span></code> using Dask Worker Resources (#16829, #18720)</p></li>
<li><p>Make auto refresh interval configurable (#18107)</p></li>
</ul>
</div>
<div class="section" id="id32">
<h3>Improvements<a class="headerlink" href="#id32" title="Permalink to this heading"></a></h3>
<ul class="simple">
<li><p>Small improvements for Airflow UI (#18715, #18795)</p></li>
<li><p>Rename <code class="docutils literal notranslate"><span class="pre">processor_poll_interval</span></code> to <code class="docutils literal notranslate"><span class="pre">scheduler_idle_sleep_time</span></code> (#18704)</p></li>
<li><p>Check the allowed values for the logging level (#18651)</p></li>
<li><p>Fix error on triggering a dag that doesn’t exist using <code class="docutils literal notranslate"><span class="pre">dagrun_conf</span></code> (#18655)</p></li>
<li><p>Add muldelete action to <code class="docutils literal notranslate"><span class="pre">TaskInstanceModelView</span></code> (#18438)</p></li>
<li><p>Avoid importing DAGs during clean DB installation (#18450)</p></li>
<li><p>Require can_edit on DAG privileges to modify TaskInstances and DagRuns (#16634)</p></li>
<li><p>Make Kubernetes job description fit on one log line (#18377)</p></li>
<li><p>Always draw borders if task instance state is null or undefined (#18033)</p></li>
<li><p>Inclusive Language (#18349)</p></li>
<li><p>Improved log handling for zombie tasks (#18277)</p></li>
<li><p>Adding <code class="docutils literal notranslate"><span class="pre">Variable.update</span></code> method and improving detection of variable key collisions (#18159)</p></li>
<li><p>Add note about params on trigger DAG page (#18166)</p></li>
<li><p>Change <code class="docutils literal notranslate"><span class="pre">TaskInstance</span></code> and <code class="docutils literal notranslate"><span class="pre">TaskReschedule</span></code> PK from <code class="docutils literal notranslate"><span class="pre">execution_date</span></code> to <code class="docutils literal notranslate"><span class="pre">run_id</span></code> (#17719)</p></li>
<li><p>Adding <code class="docutils literal notranslate"><span class="pre">TaskGroup</span></code> support in <code class="docutils literal notranslate"><span class="pre">BaseOperator.chain()</span></code> (#17456)</p></li>
<li><p>Allow filtering DAGS by tags in the REST API (#18090)</p></li>
<li><p>Optimize imports of Providers Manager (#18052)</p></li>
<li><p>Adds capability of Warnings for incompatible community providers (#18020)</p></li>
<li><p>Serialize the <code class="docutils literal notranslate"><span class="pre">template_ext</span></code> attribute to show it in UI (#17985)</p></li>
<li><p>Add <code class="docutils literal notranslate"><span class="pre">robots.txt</span></code> and <code class="docutils literal notranslate"><span class="pre">X-Robots-Tag</span></code> header (#17946)</p></li>
<li><p>Refactor <code class="docutils literal notranslate"><span class="pre">BranchDayOfWeekOperator</span></code>, <code class="docutils literal notranslate"><span class="pre">DayOfWeekSensor</span></code> (#17940)</p></li>
<li><p>Update error message to guide the user into self-help mostly (#17929)</p></li>
<li><p>Update to Celery 5 (#17397)</p></li>
<li><p>Add links to provider’s documentation (#17736)</p></li>
<li><p>Remove Marshmallow schema warnings (#17753)</p></li>
<li><p>Rename <code class="docutils literal notranslate"><span class="pre">none_failed_or_skipped</span></code> by <code class="docutils literal notranslate"><span class="pre">none_failed_min_one_success</span></code> trigger rule (#17683)</p></li>
<li><p>Remove <code class="docutils literal notranslate"><span class="pre">[core]</span> <span class="pre">store_dag_code</span></code> &amp; use DB to get Dag Code (#16342)</p></li>
<li><p>Rename <code class="docutils literal notranslate"><span class="pre">task_concurrency</span></code> to <code class="docutils literal notranslate"><span class="pre">max_active_tis_per_dag</span></code> (#17708)</p></li>
<li><p>Import Hooks lazily individually in providers manager (#17682)</p></li>
<li><p>Adding support for multiple task-ids in the external task sensor (#17339)</p></li>
<li><p>Replace <code class="docutils literal notranslate"><span class="pre">execution_date</span></code> with <code class="docutils literal notranslate"><span class="pre">run_id</span></code> in airflow tasks run command (#16666)</p></li>
<li><p>Make output from users cli command more consistent (#17642)</p></li>
<li><p>Open relative extra links in place (#17477)</p></li>
<li><p>Move <code class="docutils literal notranslate"><span class="pre">worker_log_server_port</span></code> option to the logging section (#17621)</p></li>
<li><p>Use gunicorn to serve logs generated by worker (#17591)</p></li>
<li><p>Improve validation of Group id (#17578)</p></li>
<li><p>Simplify 404 page (#17501)</p></li>
<li><p>Add XCom.clear so it’s hookable in custom XCom backend (#17405)</p></li>
<li><p>Add deprecation notice for <code class="docutils literal notranslate"><span class="pre">SubDagOperator</span></code> (#17488)</p></li>
<li><p>Support DAGS folder being in different location on scheduler and runners (#16860)</p></li>
<li><p>Remove /dagrun/create and disable edit form generated by F.A.B (#17376)</p></li>
<li><p>Enable specifying dictionary paths in <code class="docutils literal notranslate"><span class="pre">template_fields_renderers</span></code> (#17321)</p></li>
<li><p>error early if virtualenv is missing (#15788)</p></li>
<li><p>Handle connection parameters added to Extra and custom fields (#17269)</p></li>
<li><p>Fix <code class="docutils literal notranslate"><span class="pre">airflow</span> <span class="pre">celery</span> <span class="pre">stop</span></code> to accept the pid file. (#17278)</p></li>
<li><p>Remove DAG refresh buttons (#17263)</p></li>
<li><p>Deprecate dummy trigger rule in favor of always (#17144)</p></li>
<li><p>Be verbose about failure to import <code class="docutils literal notranslate"><span class="pre">airflow_local_settings</span></code> (#17195)</p></li>
<li><p>Include exit code in <code class="docutils literal notranslate"><span class="pre">AirflowException</span></code> str when <code class="docutils literal notranslate"><span class="pre">BashOperator</span></code> fails. (#17151)</p></li>
<li><p>Adding EdgeModifier support for chain() (#17099)</p></li>
<li><p>Only allows supported field types to be used in custom connections (#17194)</p></li>
<li><p>Secrets backend failover (#16404)</p></li>
<li><p>Warn on Webserver when using <code class="docutils literal notranslate"><span class="pre">SQLite</span></code> or <code class="docutils literal notranslate"><span class="pre">SequentialExecutor</span></code> (#17133)</p></li>
<li><p>Extend <code class="docutils literal notranslate"><span class="pre">init_containers</span></code> defined in <code class="docutils literal notranslate"><span class="pre">pod_override</span></code> (#17537)</p></li>
<li><p>Client-side filter dag dependencies (#16253)</p></li>
<li><p>Improve executor validation in CLI (#17071)</p></li>
<li><p>Prevent running <code class="docutils literal notranslate"><span class="pre">airflow</span> <span class="pre">db</span> <span class="pre">init/upgrade</span></code> migrations and setup in parallel. (#17078)</p></li>
<li><p>Update <code class="docutils literal notranslate"><span class="pre">chain()</span></code> and <code class="docutils literal notranslate"><span class="pre">cross_downstream()</span></code> to support <code class="docutils literal notranslate"><span class="pre">XComArgs</span></code> (#16732)</p></li>
<li><p>Improve graph view refresh (#16696)</p></li>
<li><p>When a task instance fails with exception, log it (#16805)</p></li>
<li><p>Set process title for <code class="docutils literal notranslate"><span class="pre">serve-logs</span></code> and <code class="docutils literal notranslate"><span class="pre">LocalExecutor</span></code> (#16644)</p></li>
<li><p>Rename <code class="docutils literal notranslate"><span class="pre">test_cycle</span></code> to <code class="docutils literal notranslate"><span class="pre">check_cycle</span></code> (#16617)</p></li>
<li><p>Add schema as <code class="docutils literal notranslate"><span class="pre">DbApiHook</span></code> instance attribute (#16521, #17423)</p></li>
<li><p>Improve compatibility with MSSQL (#9973)</p></li>
<li><p>Add transparency for unsupported connection type (#16220)</p></li>
<li><p>Call resource based fab methods (#16190)</p></li>
<li><p>Format more dates with timezone (#16129)</p></li>
<li><p>Replace deprecated <code class="docutils literal notranslate"><span class="pre">dag.sub_dag</span></code> with <code class="docutils literal notranslate"><span class="pre">dag.partial_subset</span></code> (#16179)</p></li>
<li><p>Treat <code class="docutils literal notranslate"><span class="pre">AirflowSensorTimeout</span></code> as immediate failure without retrying (#12058)</p></li>
<li><p>Marking success/failed automatically clears failed downstream tasks (#13037)</p></li>
<li><p>Add close/open indicator for import dag errors (#16073)</p></li>
<li><p>Add collapsible import errors (#16072)</p></li>
<li><p>Always return a response in TI’s <code class="docutils literal notranslate"><span class="pre">action_clear</span></code> view (#15980)</p></li>
<li><p>Add cli command to delete user by email (#15873)</p></li>
<li><p>Use resource and action names for FAB permissions (#16410)</p></li>
<li><p>Rename DAG concurrency (<code class="docutils literal notranslate"><span class="pre">[core]</span> <span class="pre">dag_concurrency</span></code>) settings for easier understanding (#16267, #18730)</p></li>
<li><p>Calendar UI improvements (#16226)</p></li>
<li><p>Refactor: <code class="docutils literal notranslate"><span class="pre">SKIPPED</span></code> should not be logged again as <code class="docutils literal notranslate"><span class="pre">SUCCESS</span></code> (#14822)</p></li>
<li><p>Remove version limits for <code class="docutils literal notranslate"><span class="pre">dnspython</span></code> (#18046, #18162)</p></li>
<li><p>Accept custom run ID in TriggerDagRunOperator (#18788)</p></li>
</ul>
</div>
<div class="section" id="id33">
<h3>Bug Fixes<a class="headerlink" href="#id33" title="Permalink to this heading"></a></h3>
<ul class="simple">
<li><p>Make REST API patch user endpoint work the same way as the UI (#18757)</p></li>
<li><p>Properly set <code class="docutils literal notranslate"><span class="pre">start_date</span></code> for cleared tasks (#18708)</p></li>
<li><p>Ensure task_instance exists before running update on its state(REST API) (#18642)</p></li>
<li><p>Make <code class="docutils literal notranslate"><span class="pre">AirflowDateTimePickerWidget</span></code> a required field (#18602)</p></li>
<li><p>Retry deadlocked transactions on deleting old rendered task fields (#18616)</p></li>
<li><p>Fix <code class="docutils literal notranslate"><span class="pre">retry_exponential_backoff</span></code> divide by zero error when retry delay is zero (#17003)</p></li>
<li><p>Improve how UI handles datetimes (#18611, #18700)</p></li>
<li><p>Bugfix: dag_bag.get_dag should return None, not raise exception (#18554)</p></li>
<li><p>Only show the task modal if it is a valid instance (#18570)</p></li>
<li><p>Fix accessing rendered <code class="docutils literal notranslate"><span class="pre">{{</span> <span class="pre">task.x</span> <span class="pre">}}</span></code> attributes from within templates (#18516)</p></li>
<li><p>Add missing email type of connection (#18502)</p></li>
<li><p>Don’t use flash for “same-page” UI messages. (#18462)</p></li>
<li><p>Fix task group tooltip (#18406)</p></li>
<li><p>Properly fix dagrun update state endpoint (#18370)</p></li>
<li><p>Properly handle ti state difference between executor and scheduler (#17819)</p></li>
<li><p>Fix stuck “queued” tasks in KubernetesExecutor (#18152)</p></li>
<li><p>Don’t permanently add zip DAGs to <code class="docutils literal notranslate"><span class="pre">sys.path</span></code> (#18384)</p></li>
<li><p>Fix random deadlocks in MSSQL database (#18362)</p></li>
<li><p>Deactivating DAGs which have been removed from files (#17121)</p></li>
<li><p>When syncing dags to db remove <code class="docutils literal notranslate"><span class="pre">dag_tag</span></code> rows that are now unused (#8231)</p></li>
<li><p>Graceful scheduler shutdown on error (#18092)</p></li>
<li><p>Fix mini scheduler not respecting <code class="docutils literal notranslate"><span class="pre">wait_for_downstream</span></code> dep (#18338)</p></li>
<li><p>Pass exception to <code class="docutils literal notranslate"><span class="pre">run_finished_callback</span></code> for Debug Executor (#17983)</p></li>
<li><p>Make <code class="docutils literal notranslate"><span class="pre">XCom.get_one</span></code> return full, not abbreviated values (#18274)</p></li>
<li><p>Use try/except when closing temporary file in task_runner (#18269)</p></li>
<li><p>show next run if not none (#18273)</p></li>
<li><p>Fix DB session handling in <code class="docutils literal notranslate"><span class="pre">XCom.set</span></code> (#18240)</p></li>
<li><p>Fix external_executor_id not being set for manually run jobs (#17207)</p></li>
<li><p>Fix deleting of zipped Dags in Serialized Dag Table (#18243)</p></li>
<li><p>Return explicit error on user-add for duplicated email (#18224)</p></li>
<li><p>Remove loading dots even when last run data is empty (#18230)</p></li>
<li><p>Swap dag import error dropdown icons (#18207)</p></li>
<li><p>Automatically create section when migrating config (#16814)</p></li>
<li><p>Set encoding to utf-8 by default while reading task logs (#17965)</p></li>
<li><p>Apply parent dag permissions to subdags (#18160)</p></li>
<li><p>Change id collation for MySQL to case-sensitive (#18072)</p></li>
<li><p>Logs task launch exception in <code class="docutils literal notranslate"><span class="pre">StandardTaskRunner</span></code> (#17967)</p></li>
<li><p>Applied permissions to <code class="docutils literal notranslate"><span class="pre">self._error_file</span></code> (#15947)</p></li>
<li><p>Fix blank dag dependencies view (#17990)</p></li>
<li><p>Add missing menu access for dag dependencies and configurations pages (#17450)</p></li>
<li><p>Fix passing Jinja templates in <code class="docutils literal notranslate"><span class="pre">DateTimeSensor</span></code> (#17959)</p></li>
<li><p>Fixing bug which restricted the visibility of ImportErrors (#17924)</p></li>
<li><p>Fix grammar in <code class="docutils literal notranslate"><span class="pre">traceback.html</span></code> (#17942)</p></li>
<li><p>Fix <code class="docutils literal notranslate"><span class="pre">DagRunState</span></code> enum query for <code class="docutils literal notranslate"><span class="pre">MySQLdb</span></code> driver (#17886)</p></li>
<li><p>Fixed button size in “Actions” group. (#17902)</p></li>
<li><p>Only show import errors for DAGs a user can access (#17835)</p></li>
<li><p>Show all import_errors from zip files (#17759)</p></li>
<li><p>fix EXTRA_LOGGER_NAMES param and related docs (#17808)</p></li>
<li><p>Use one interpreter for Airflow and gunicorn (#17805)</p></li>
<li><p>Fix: Mysql 5.7 id utf8mb3 (#14535)</p></li>
<li><p>Fix dag_processing.last_duration metric random holes (#17769)</p></li>
<li><p>Automatically use <code class="docutils literal notranslate"><span class="pre">utf8mb3_general_ci</span></code> collation for MySQL (#17729)</p></li>
<li><p>fix: filter condition of <code class="docutils literal notranslate"><span class="pre">TaskInstance</span></code> does not work #17535 (#17548)</p></li>
<li><p>Dont use TaskInstance in CeleryExecutor.trigger_tasks (#16248)</p></li>
<li><p>Remove locks for upgrades in MSSQL (#17213)</p></li>
<li><p>Create virtualenv via python call (#17156)</p></li>
<li><p>Ensure a DAG is acyclic when running <code class="docutils literal notranslate"><span class="pre">DAG.cli()</span></code> (#17105)</p></li>
<li><p>Translate non-ascii characters (#17057)</p></li>
<li><p>Change the logic of <code class="docutils literal notranslate"><span class="pre">None</span></code> comparison in <code class="docutils literal notranslate"><span class="pre">model_list</span></code> template (#16893)</p></li>
<li><p>Have UI and POST /task_instances_state API endpoint have same behaviour (#16539)</p></li>
<li><p>ensure task is skipped if missing sla (#16719)</p></li>
<li><p>Fix direct use of <code class="docutils literal notranslate"><span class="pre">cached_property</span></code> module (#16710)</p></li>
<li><p>Fix TI success confirm page (#16650)</p></li>
<li><p>Modify return value check in python virtualenv jinja template (#16049)</p></li>
<li><p>Fix dag dependency search (#15924)</p></li>
<li><p>Make custom JSON encoder support <code class="docutils literal notranslate"><span class="pre">Decimal</span></code> (#16383)</p></li>
<li><p>Bugfix: Allow clearing tasks with just <code class="docutils literal notranslate"><span class="pre">dag_id</span></code> and empty <code class="docutils literal notranslate"><span class="pre">subdir</span></code> (#16513)</p></li>
<li><p>Convert port value to a number before calling test connection (#16497)</p></li>
<li><p>Handle missing/null serialized DAG dependencies (#16393)</p></li>
<li><p>Correctly set <code class="docutils literal notranslate"><span class="pre">dag.fileloc</span></code> when using the <code class="docutils literal notranslate"><span class="pre">&#64;dag</span></code> decorator (#16384)</p></li>
<li><p>Fix TI success/failure links (#16233)</p></li>
<li><p>Correctly implement autocomplete early return in <code class="docutils literal notranslate"><span class="pre">airflow/www/views.py</span></code> (#15940)</p></li>
<li><p>Backport fix to allow pickling of Loggers to Python 3.6 (#18798)</p></li>
<li><p>Fix bug that Backfill job fail to run when there are tasks run into <code class="docutils literal notranslate"><span class="pre">reschedule</span></code> state (#17305, #18806)</p></li>
</ul>
</div>
<div class="section" id="id34">
<h3>Doc only changes<a class="headerlink" href="#id34" title="Permalink to this heading"></a></h3>
<ul class="simple">
<li><p>Update <code class="docutils literal notranslate"><span class="pre">dagbag_size</span></code> documentation (#18824)</p></li>
<li><p>Update documentation about bundle extras (#18828)</p></li>
<li><p>Fix wrong Postgres <code class="docutils literal notranslate"><span class="pre">search_path</span></code> set up instructions (#17600)</p></li>
<li><p>Remove <code class="docutils literal notranslate"><span class="pre">AIRFLOW_GID</span></code> from Docker images (#18747)</p></li>
<li><p>Improve error message for BranchPythonOperator when no task_id to follow (#18471)</p></li>
<li><p>Improve guidance to users telling them what to do on import timeout (#18478)</p></li>
<li><p>Explain scheduler fine-tuning better (#18356)</p></li>
<li><p>Added example JSON for airflow pools import (#18376)</p></li>
<li><p>Add <code class="docutils literal notranslate"><span class="pre">sla_miss_callback</span></code> section to the documentation (#18305)</p></li>
<li><p>Explain sentry default environment variable for subprocess hook (#18346)</p></li>
<li><p>Refactor installation pages (#18282)</p></li>
<li><p>Improves quick-start docker-compose warnings and documentation (#18164)</p></li>
<li><p>Production-level support for MSSQL (#18382)</p></li>
<li><p>Update non-working example in documentation (#18067)</p></li>
<li><p>Remove default_args pattern + added get_current_context() use for Core Airflow example DAGs (#16866)</p></li>
<li><p>Update max_tis_per_query to better render on the webpage (#17971)</p></li>
<li><p>Adds Github Oauth example with team based authorization (#17896)</p></li>
<li><p>Update docker.rst (#17882)</p></li>
<li><p>Example xcom update (#17749)</p></li>
<li><p>Add doc warning about connections added via env vars (#17915)</p></li>
<li><p>fix wrong documents around upgrade-check.rst (#17903)</p></li>
<li><p>Add Brent to Committers list (#17873)</p></li>
<li><p>Improves documentation about modules management (#17757)</p></li>
<li><p>Remove deprecated metrics from metrics.rst (#17772)</p></li>
<li><p>Make sure “production-readiness” of docker-compose is well explained (#17731)</p></li>
<li><p>Doc: Update Upgrade to v2 docs with Airflow 1.10.x EOL dates (#17710)</p></li>
<li><p>Doc: Replace deprecated param from docstrings (#17709)</p></li>
<li><p>Describe dag owner more carefully (#17699)</p></li>
<li><p>Update note so avoid misinterpretation (#17701)</p></li>
<li><p>Docs: Make <code class="docutils literal notranslate"><span class="pre">DAG.is_active</span></code> read-only in API (#17667)</p></li>
<li><p>Update documentation regarding Python 3.9 support (#17611)</p></li>
<li><p>Fix MySQL database character set instruction (#17603)</p></li>
<li><p>Document overriding <code class="docutils literal notranslate"><span class="pre">XCom.clear</span></code> for data lifecycle management (#17589)</p></li>
<li><p>Path correction in docs for airflow core (#17567)</p></li>
<li><p>docs(celery): reworded, add actual multiple queues example (#17541)</p></li>
<li><p>Doc: Add FAQ to speed up parsing with tons of dag files (#17519)</p></li>
<li><p>Improve image building documentation for new users (#17409)</p></li>
<li><p>Doc: Strip unnecessary arguments from MariaDB JIRA URL (#17296)</p></li>
<li><p>Update warning about MariaDB and multiple schedulers (#17287)</p></li>
<li><p>Doc: Recommend using same configs on all Airflow components (#17146)</p></li>
<li><p>Move docs about masking to a new page (#17007)</p></li>
<li><p>Suggest use of Env vars instead of Airflow Vars in best practices doc (#16926)</p></li>
<li><p>Docs: Better description for <code class="docutils literal notranslate"><span class="pre">pod_template_file</span></code> (#16861)</p></li>
<li><p>Add Aneesh Joseph as Airflow Committer (#16835)</p></li>
<li><p>Docs: Added new pipeline example for the tutorial docs (#16548)</p></li>
<li><p>Remove upstart from docs (#16672)</p></li>
<li><p>Add new committers: <code class="docutils literal notranslate"><span class="pre">Jed</span></code> and <code class="docutils literal notranslate"><span class="pre">TP</span></code> (#16671)</p></li>
<li><p>Docs: Fix <code class="docutils literal notranslate"><span class="pre">flask-ouathlib</span></code> to <code class="docutils literal notranslate"><span class="pre">flask-oauthlib</span></code> in Upgrading docs (#16320)</p></li>
<li><p>Docs: Fix creating a connection docs (#16312)</p></li>
<li><p>Docs: Fix url for <code class="docutils literal notranslate"><span class="pre">Elasticsearch</span></code> (#16275)</p></li>
<li><p>Small improvements for README.md files (#16244)</p></li>
<li><p>Fix docs for <code class="docutils literal notranslate"><span class="pre">dag_concurrency</span></code> (#16177)</p></li>
<li><p>Check syntactic correctness for code-snippets (#16005)</p></li>
<li><p>Add proper link for wheel packages in docs. (#15999)</p></li>
<li><p>Add Docs for <code class="docutils literal notranslate"><span class="pre">default_pool</span></code> slots (#15997)</p></li>
<li><p>Add memory usage warning in quick-start documentation (#15967)</p></li>
<li><p>Update example <code class="docutils literal notranslate"><span class="pre">KubernetesExecutor</span></code> <code class="docutils literal notranslate"><span class="pre">git-sync</span></code> pod template file (#15904)</p></li>
<li><p>Docs: Fix Taskflow API docs (#16574)</p></li>
<li><p>Added new pipeline example for the tutorial docs (#16084)</p></li>
<li><p>Updating the DAG docstring to include <code class="docutils literal notranslate"><span class="pre">render_template_as_native_obj</span></code> (#16534)</p></li>
<li><p>Update docs on setting up SMTP (#16523)</p></li>
<li><p>Docs: Fix API verb from <code class="docutils literal notranslate"><span class="pre">POST</span></code> to <code class="docutils literal notranslate"><span class="pre">PATCH</span></code> (#16511)</p></li>
</ul>
</div>
<div class="section" id="id35">
<h3>Misc/Internal<a class="headerlink" href="#id35" title="Permalink to this heading"></a></h3>
<ul class="simple">
<li><p>Renaming variables to be consistent with code logic (#18685)</p></li>
<li><p>Simplify strings previously split across lines (#18679)</p></li>
<li><p>fix exception string of <code class="docutils literal notranslate"><span class="pre">BranchPythonOperator</span></code> (#18623)</p></li>
<li><p>Add multiple roles when creating users (#18617)</p></li>
<li><p>Move FABs base Security Manager into Airflow. (#16647)</p></li>
<li><p>Remove unnecessary css state colors (#18461)</p></li>
<li><p>Update <code class="docutils literal notranslate"><span class="pre">boto3</span></code> to <code class="docutils literal notranslate"><span class="pre">&lt;1.19</span></code> (#18389)</p></li>
<li><p>Improve coverage for <code class="docutils literal notranslate"><span class="pre">airflow.security.kerberos</span> <span class="pre">module</span></code> (#18258)</p></li>
<li><p>Fix Amazon Kinesis test (#18337)</p></li>
<li><p>Fix provider test accessing <code class="docutils literal notranslate"><span class="pre">importlib-resources</span></code> (#18228)</p></li>
<li><p>Silence warnings in tests from using SubDagOperator (#18275)</p></li>
<li><p>Fix usage of <code class="docutils literal notranslate"><span class="pre">range(len())</span></code> to <code class="docutils literal notranslate"><span class="pre">enumerate</span></code> (#18174)</p></li>
<li><p>Test coverage on the autocomplete view (#15943)</p></li>
<li><p>Add “packaging” to core requirements (#18122)</p></li>
<li><p>Adds LoggingMixins to BaseTrigger (#18106)</p></li>
<li><p>Fix building docs in <code class="docutils literal notranslate"><span class="pre">main</span></code> builds (#18035)</p></li>
<li><p>Remove upper-limit on <code class="docutils literal notranslate"><span class="pre">tenacity</span></code> (#17593)</p></li>
<li><p>Remove redundant <code class="docutils literal notranslate"><span class="pre">numpy</span></code> dependency (#17594)</p></li>
<li><p>Bump <code class="docutils literal notranslate"><span class="pre">mysql-connector-python</span></code> to latest version (#17596)</p></li>
<li><p>Make <code class="docutils literal notranslate"><span class="pre">pandas</span></code> an optional core dependency (#17575)</p></li>
<li><p>Add more typing to airflow.utils.helpers (#15582)</p></li>
<li><p>Chore: Some code cleanup in <code class="docutils literal notranslate"><span class="pre">airflow/utils/db.py</span></code> (#17090)</p></li>
<li><p>Refactor: Remove processor_factory from DAG processing (#16659)</p></li>
<li><p>Remove AbstractDagFileProcessorProcess from dag processing (#16816)</p></li>
<li><p>Update TaskGroup typing (#16811)</p></li>
<li><p>Update <code class="docutils literal notranslate"><span class="pre">click</span></code> to 8.x (#16779)</p></li>
<li><p>Remove remaining Pylint disables (#16760)</p></li>
<li><p>Remove duplicated try, there is already a try in create_session (#16701)</p></li>
<li><p>Removes pylint from our toolchain (#16682)</p></li>
<li><p>Refactor usage of unneeded function call (#16653)</p></li>
<li><p>Add type annotations to setup.py (#16658)</p></li>
<li><p>Remove SQLAlchemy &lt;1.4 constraint (#16630) (Note: our dependencies still have a requirement on &lt;1.4)</p></li>
<li><p>Refactor <code class="docutils literal notranslate"><span class="pre">dag.clear</span></code> method (#16086)</p></li>
<li><p>Use <code class="docutils literal notranslate"><span class="pre">DAG_ACTIONS</span></code> constant (#16232)</p></li>
<li><p>Use updated <code class="docutils literal notranslate"><span class="pre">_get_all_non_dag_permissions</span></code> method (#16317)</p></li>
<li><p>Add updated-name wrappers for built-in FAB methods (#16077)</p></li>
<li><p>Remove <code class="docutils literal notranslate"><span class="pre">TaskInstance.log_filepath</span></code> attribute (#15217)</p></li>
<li><p>Removes unnecessary function call in <code class="docutils literal notranslate"><span class="pre">airflow/www/app.py</span></code> (#15956)</p></li>
<li><p>Move <code class="docutils literal notranslate"><span class="pre">plyvel</span></code> to google provider extra (#15812)</p></li>
<li><p>Update permission migrations to use new naming scheme (#16400)</p></li>
<li><p>Use resource and action names for FAB (#16380)</p></li>
<li><p>Swap out calls to <code class="docutils literal notranslate"><span class="pre">find_permission_view_menu</span></code> for <code class="docutils literal notranslate"><span class="pre">get_permission</span></code> wrapper (#16377)</p></li>
<li><p>Fix deprecated default for <code class="docutils literal notranslate"><span class="pre">fab_logging_level</span></code> to <code class="docutils literal notranslate"><span class="pre">WARNING</span></code> (#18783)</p></li>
<li><p>Allow running tasks from UI when using <code class="docutils literal notranslate"><span class="pre">CeleryKubernetesExecutor</span></code> (#18441)</p></li>
</ul>
</div>
</div>
<div class="section" id="airflow-2-1-4-2021-09-18">
<h2><a class="toc-backref" href="#id174">Airflow 2.1.4 (2021-09-18)</a><a class="headerlink" href="#airflow-2-1-4-2021-09-18" title="Permalink to this heading"></a></h2>
<div class="section" id="id36">
<h3>Significant Changes<a class="headerlink" href="#id36" title="Permalink to this heading"></a></h3>
<p>No significant changes.</p>
</div>
<div class="section" id="id37">
<h3>Bug Fixes<a class="headerlink" href="#id37" title="Permalink to this heading"></a></h3>
<ul class="simple">
<li><p>Fix deprecation error message rather than silencing it (#18126)</p></li>
<li><p>Limit the number of queued dagruns created by the Scheduler (#18065)</p></li>
<li><p>Fix <code class="docutils literal notranslate"><span class="pre">DagRun</span></code> execution order from queued to running not being properly followed (#18061)</p></li>
<li><p>Fix <code class="docutils literal notranslate"><span class="pre">max_active_runs</span></code> not allowing moving of queued dagruns to running (#17945)</p></li>
<li><p>Avoid redirect loop for users with no permissions (#17838)</p></li>
<li><p>Avoid endless redirect loop when user has no roles (#17613)</p></li>
<li><p>Fix log links on graph TI modal (#17862)</p></li>
<li><p>Hide variable import form if user lacks permission (#18000)</p></li>
<li><p>Improve dag/task concurrency check (#17786)</p></li>
<li><p>Fix Clear task instances endpoint resets all DAG runs bug (#17961)</p></li>
<li><p>Fixes incorrect parameter passed to views (#18083) (#18085)</p></li>
<li><p>Fix Sentry handler from <code class="docutils literal notranslate"><span class="pre">LocalTaskJob</span></code> causing error (#18119)</p></li>
<li><p>Limit <code class="docutils literal notranslate"><span class="pre">colorlog</span></code> version (6.x is incompatible) (#18099)</p></li>
<li><p>Only show Pause/Unpause tooltip on hover (#17957)</p></li>
<li><p>Improve graph view load time for dags with open groups (#17821)</p></li>
<li><p>Increase width for Run column (#17817)</p></li>
<li><p>Fix wrong query on running tis (#17631)</p></li>
<li><p>Add root to tree refresh url (#17633)</p></li>
<li><p>Do not delete running DAG from the UI (#17630)</p></li>
<li><p>Improve discoverability of Provider packages’ functionality</p></li>
<li><p>Do not let <code class="docutils literal notranslate"><span class="pre">create_dagrun</span></code> overwrite explicit <code class="docutils literal notranslate"><span class="pre">run_id</span></code> (#17728)</p></li>
<li><p>Regression on pid reset to allow task start after heartbeat (#17333)</p></li>
<li><p>Set task state to failed when pod is DELETED while running (#18095)</p></li>
<li><p>Advises the kernel to not cache log files generated by Airflow (#18054)</p></li>
<li><p>Sort adopted tasks in <code class="docutils literal notranslate"><span class="pre">_check_for_stalled_adopted_tasks</span></code> method (#18208)</p></li>
</ul>
</div>
<div class="section" id="id38">
<h3>Doc only changes<a class="headerlink" href="#id38" title="Permalink to this heading"></a></h3>
<ul class="simple">
<li><p>Update version added fields in airflow/config_templates/config.yml (#18128)</p></li>
<li><p>Improve the description of how to handle dynamic task generation (#17963)</p></li>
<li><p>Improve cross-links to operators and hooks references (#17622)</p></li>
<li><p>Doc: Fix replacing Airflow version for Docker stack (#17711)</p></li>
<li><p>Make the providers operators/hooks reference much more usable (#17768)</p></li>
<li><p>Update description about the new <code class="docutils literal notranslate"><span class="pre">connection-types</span></code> provider meta-data</p></li>
<li><p>Suggest to use secrets backend for variable when it contains sensitive data (#17319)</p></li>
<li><p>Separate Installing from sources section and add more details (#18171)</p></li>
<li><p>Doc: Use <code class="docutils literal notranslate"><span class="pre">closer.lua</span></code> script for downloading sources (#18179)</p></li>
<li><p>Doc: Improve installing from sources (#18194)</p></li>
<li><p>Improves installing from sources pages for all components (#18251)</p></li>
</ul>
</div>
</div>
<div class="section" id="airflow-2-1-3-2021-08-23">
<h2><a class="toc-backref" href="#id175">Airflow 2.1.3 (2021-08-23)</a><a class="headerlink" href="#airflow-2-1-3-2021-08-23" title="Permalink to this heading"></a></h2>
<div class="section" id="id39">
<h3>Significant Changes<a class="headerlink" href="#id39" title="Permalink to this heading"></a></h3>
<p>No significant changes.</p>
</div>
<div class="section" id="id40">
<h3>Bug Fixes<a class="headerlink" href="#id40" title="Permalink to this heading"></a></h3>
<ul class="simple">
<li><p>Fix task retries when they receive <code class="docutils literal notranslate"><span class="pre">sigkill</span></code> and have retries and properly handle <code class="docutils literal notranslate"><span class="pre">sigterm</span></code> (#16301)</p></li>
<li><p>Fix redacting secrets in context exceptions. (#17618)</p></li>
<li><p>Fix race condition with dagrun callbacks (#16741)</p></li>
<li><p>Add ‘queued’ to DagRunState (#16854)</p></li>
<li><p>Add ‘queued’ state to DagRun (#16401)</p></li>
<li><p>Fix external elasticsearch logs link (#16357)</p></li>
<li><p>Add proper warning message when recorded PID is different from current PID (#17411)</p></li>
<li><p>Fix running tasks with <code class="docutils literal notranslate"><span class="pre">default_impersonation</span></code> config (#17229)</p></li>
<li><p>Rescue if a DagRun’s DAG was removed from db (#17544)</p></li>
<li><p>Fixed broken json_client (#17529)</p></li>
<li><p>Handle and log exceptions raised during task callback (#17347)</p></li>
<li><p>Fix CLI <code class="docutils literal notranslate"><span class="pre">kubernetes</span> <span class="pre">cleanup-pods</span></code> which fails on invalid label key (#17298)</p></li>
<li><p>Show serialization exceptions in DAG parsing log (#17277)</p></li>
<li><p>Fix: <code class="docutils literal notranslate"><span class="pre">TaskInstance</span></code> does not show <code class="docutils literal notranslate"><span class="pre">queued_by_job_id</span></code> &amp; <code class="docutils literal notranslate"><span class="pre">external_executor_id</span></code> (#17179)</p></li>
<li><p>Adds more explanatory message when <code class="docutils literal notranslate"><span class="pre">SecretsMasker</span></code> is not configured (#17101)</p></li>
<li><p>Enable the use of <code class="docutils literal notranslate"><span class="pre">__init_subclass__</span></code> in subclasses of <code class="docutils literal notranslate"><span class="pre">BaseOperator</span></code> (#17027)</p></li>
<li><p>Fix task instance retrieval in XCom view (#16923)</p></li>
<li><p>Validate type of <code class="docutils literal notranslate"><span class="pre">priority_weight</span></code> during parsing (#16765)</p></li>
<li><p>Correctly handle custom <code class="docutils literal notranslate"><span class="pre">deps</span></code> and <code class="docutils literal notranslate"><span class="pre">task_group</span></code> during DAG Serialization (#16734)</p></li>
<li><p>Fix slow (cleared) tasks being be adopted by Celery worker. (#16718)</p></li>
<li><p>Fix calculating duration in tree view (#16695)</p></li>
<li><p>Fix <code class="docutils literal notranslate"><span class="pre">AttributeError</span></code>: <code class="docutils literal notranslate"><span class="pre">datetime.timezone</span></code> object has no attribute <code class="docutils literal notranslate"><span class="pre">name</span></code> (#16599)</p></li>
<li><p>Redact conn secrets in webserver logs (#16579)</p></li>
<li><p>Change graph focus to top of view instead of center (#16484)</p></li>
<li><p>Fail tasks in scheduler when executor reports they failed (#15929)</p></li>
<li><p>fix(smart_sensor): Unbound variable errors (#14774)</p></li>
<li><p>Add back missing permissions to <code class="docutils literal notranslate"><span class="pre">UserModelView</span></code> controls. (#17431)</p></li>
<li><p>Better diagnostics and self-healing of docker-compose (#17484)</p></li>
<li><p>Improve diagnostics message when users have <code class="docutils literal notranslate"><span class="pre">secret_key</span></code> misconfigured (#17410)</p></li>
<li><p>Stop checking <code class="docutils literal notranslate"><span class="pre">execution_date</span></code> in <code class="docutils literal notranslate"><span class="pre">task_instance.refresh_from_db</span></code> (#16809)</p></li>
</ul>
</div>
<div class="section" id="id41">
<h3>Improvements<a class="headerlink" href="#id41" title="Permalink to this heading"></a></h3>
<ul class="simple">
<li><p>Run mini scheduler in <code class="docutils literal notranslate"><span class="pre">LocalTaskJob</span></code> during task exit (#16289)</p></li>
<li><p>Remove <code class="docutils literal notranslate"><span class="pre">SQLAlchemy&lt;1.4</span></code> constraint (#16630)</p></li>
<li><p>Bump Jinja2 upper-bound from 2.12.0 to 4.0.0 (#16595)</p></li>
<li><p>Bump <code class="docutils literal notranslate"><span class="pre">dnspython</span></code> (#16698)</p></li>
<li><p>Updates to <code class="docutils literal notranslate"><span class="pre">FlaskAppBuilder</span></code> 3.3.2+ (#17208)</p></li>
<li><p>Add State types for tasks and DAGs (#15285)</p></li>
<li><p>Set Process title for Worker when using <code class="docutils literal notranslate"><span class="pre">LocalExecutor</span></code> (#16623)</p></li>
<li><p>Move <code class="docutils literal notranslate"><span class="pre">DagFileProcessor</span></code> and <code class="docutils literal notranslate"><span class="pre">DagFileProcessorProcess</span></code> out of <code class="docutils literal notranslate"><span class="pre">scheduler_job.py</span></code> (#16581)</p></li>
</ul>
</div>
<div class="section" id="id42">
<h3>Doc only changes<a class="headerlink" href="#id42" title="Permalink to this heading"></a></h3>
<ul class="simple">
<li><p>Fix inconsistencies in configuration docs (#17317)</p></li>
<li><p>Fix docs link for using SQLite as Metadata DB (#17308)</p></li>
</ul>
</div>
<div class="section" id="id43">
<h3>Misc<a class="headerlink" href="#id43" title="Permalink to this heading"></a></h3>
<ul class="simple">
<li><p>Switch back http provider after requests removes LGPL dependency (#16974)</p></li>
</ul>
</div>
</div>
<div class="section" id="airflow-2-1-2-2021-07-14">
<h2><a class="toc-backref" href="#id176">Airflow 2.1.2 (2021-07-14)</a><a class="headerlink" href="#airflow-2-1-2-2021-07-14" title="Permalink to this heading"></a></h2>
<div class="section" id="id44">
<h3>Significant Changes<a class="headerlink" href="#id44" title="Permalink to this heading"></a></h3>
<p>No significant changes.</p>
</div>
<div class="section" id="id45">
<h3>Bug Fixes<a class="headerlink" href="#id45" title="Permalink to this heading"></a></h3>
<ul class="simple">
<li><p>Only allow webserver to request from the worker log server (#16754)</p></li>
<li><p>Fix “Invalid JSON configuration, must be a dict” bug (#16648)</p></li>
<li><p>Fix <code class="docutils literal notranslate"><span class="pre">CeleryKubernetesExecutor</span></code> (#16700)</p></li>
<li><p>Mask value if the key is <code class="docutils literal notranslate"><span class="pre">token</span></code> (#16474)</p></li>
<li><p>Fix impersonation issue with <code class="docutils literal notranslate"><span class="pre">LocalTaskJob</span></code> (#16852)</p></li>
<li><p>Resolve all npm vulnerabilities including bumping <code class="docutils literal notranslate"><span class="pre">jQuery</span></code> to <code class="docutils literal notranslate"><span class="pre">3.5</span></code> (#16440)</p></li>
</ul>
</div>
<div class="section" id="id46">
<h3>Misc<a class="headerlink" href="#id46" title="Permalink to this heading"></a></h3>
<ul class="simple">
<li><p>Add Python 3.9 support (#15515)</p></li>
</ul>
</div>
</div>
<div class="section" id="airflow-2-1-1-2021-07-02">
<h2><a class="toc-backref" href="#id177">Airflow 2.1.1 (2021-07-02)</a><a class="headerlink" href="#airflow-2-1-1-2021-07-02" title="Permalink to this heading"></a></h2>
<div class="section" id="id47">
<h3>Significant Changes<a class="headerlink" href="#id47" title="Permalink to this heading"></a></h3>
<div class="section" id="activate-dag-runs-argument-of-the-function-clear-task-instances-is-replaced-with-dag-run-state">
<h4><code class="docutils literal notranslate"><span class="pre">activate_dag_runs</span></code> argument of the function <code class="docutils literal notranslate"><span class="pre">clear_task_instances</span></code> is replaced with <code class="docutils literal notranslate"><span class="pre">dag_run_state</span></code><a class="headerlink" href="#activate-dag-runs-argument-of-the-function-clear-task-instances-is-replaced-with-dag-run-state" title="Permalink to this heading"></a></h4>
<p>To achieve the previous default behaviour of <code class="docutils literal notranslate"><span class="pre">clear_task_instances</span></code> with <code class="docutils literal notranslate"><span class="pre">activate_dag_runs=True</span></code>, no change is needed. To achieve the previous behaviour of <code class="docutils literal notranslate"><span class="pre">activate_dag_runs=False</span></code>, pass <code class="docutils literal notranslate"><span class="pre">dag_run_state=False</span></code> instead. (The previous parameter is still accepted, but is deprecated)</p>
</div>
<div class="section" id="dag-set-dag-runs-state-is-deprecated">
<h4><code class="docutils literal notranslate"><span class="pre">dag.set_dag_runs_state</span></code> is deprecated<a class="headerlink" href="#dag-set-dag-runs-state-is-deprecated" title="Permalink to this heading"></a></h4>
<p>The method <code class="docutils literal notranslate"><span class="pre">set_dag_runs_state</span></code> is no longer needed after a bug fix in PR: <a class="reference external" href="https://github.com/apache/airflow/pull/15382">#15382</a>. This method is now deprecated and will be removed in a future version.</p>
</div>
</div>
<div class="section" id="id49">
<h3>Bug Fixes<a class="headerlink" href="#id49" title="Permalink to this heading"></a></h3>
<ul class="simple">
<li><p>Don’t crash attempting to mask secrets in dict with non-string keys (#16601)</p></li>
<li><p>Always install sphinx_airflow_theme from <code class="docutils literal notranslate"><span class="pre">PyPI</span></code> (#16594)</p></li>
<li><p>Remove limitation for elasticsearch library (#16553)</p></li>
<li><p>Adding extra requirements for build and runtime of the PROD image. (#16170)</p></li>
<li><p>Cattrs 1.7.0 released by the end of May 2021 break lineage usage (#16173)</p></li>
<li><p>Removes unnecessary packages from setup_requires (#16139)</p></li>
<li><p>Pins docutils to &lt;0.17 until breaking behaviour is fixed (#16133)</p></li>
<li><p>Improvements for Docker Image docs (#14843)</p></li>
<li><p>Ensure that <code class="docutils literal notranslate"><span class="pre">dag_run.conf</span></code> is a dict (#15057)</p></li>
<li><p>Fix CLI connections import and migrate logic from secrets to Connection model (#15425)</p></li>
<li><p>Fix Dag Details start date bug (#16206)</p></li>
<li><p>Fix DAG run state not updated while DAG is paused (#16343)</p></li>
<li><p>Allow null value for operator field in task_instance schema(REST API) (#16516)</p></li>
<li><p>Avoid recursion going too deep when redacting logs (#16491)</p></li>
<li><p>Backfill: Don’t create a DagRun if no tasks match task regex (#16461)</p></li>
<li><p>Tree View UI for larger DAGs &amp; more consistent spacing in Tree View (#16522)</p></li>
<li><p>Correctly handle None returns from Query.scalar() (#16345)</p></li>
<li><p>Adding <code class="docutils literal notranslate"><span class="pre">only_active</span></code> parameter to /dags endpoint (#14306)</p></li>
<li><p>Don’t show stale Serialized DAGs if they are deleted in DB (#16368)</p></li>
<li><p>Make REST API List DAGs endpoint consistent with UI/CLI behaviour (#16318)</p></li>
<li><p>Support remote logging in elasticsearch with <code class="docutils literal notranslate"><span class="pre">filebeat</span> <span class="pre">7</span></code> (#14625)</p></li>
<li><p>Queue tasks with higher priority and earlier execution_date first. (#15210)</p></li>
<li><p>Make task ID on legend have enough width and width of line chart to be 100%. (#15915)</p></li>
<li><p>Fix normalize-url vulnerability (#16375)</p></li>
<li><p>Validate retries value on init for better errors (#16415)</p></li>
<li><p>add num_runs query param for tree refresh (#16437)</p></li>
<li><p>Fix templated default/example values in config ref docs (#16442)</p></li>
<li><p>Add <code class="docutils literal notranslate"><span class="pre">passphrase</span></code> and <code class="docutils literal notranslate"><span class="pre">private_key</span></code> to default sensitive field names (#16392)</p></li>
<li><p>Fix tasks in an infinite slots pool were never scheduled (#15247)</p></li>
<li><p>Fix Orphaned tasks stuck in CeleryExecutor as running (#16550)</p></li>
<li><p>Don’t fail to log if we can’t redact something (#16118)</p></li>
<li><p>Set max tree width to 1200 pixels (#16067)</p></li>
<li><p>Fill the “job_id” field for <code class="docutils literal notranslate"><span class="pre">airflow</span> <span class="pre">task</span> <span class="pre">run</span></code> without <code class="docutils literal notranslate"><span class="pre">--local</span></code>/<code class="docutils literal notranslate"><span class="pre">--raw</span></code> for KubeExecutor (#16108)</p></li>
<li><p>Fixes problem where conf variable was used before initialization (#16088)</p></li>
<li><p>Fix apply defaults for task decorator (#16085)</p></li>
<li><p>Parse recently modified files even if just parsed (#16075)</p></li>
<li><p>Ensure that we don’t try to mask empty string in logs (#16057)</p></li>
<li><p>Don’t die when masking <code class="docutils literal notranslate"><span class="pre">log.exception</span></code> when there is no exception (#16047)</p></li>
<li><p>Restores apply_defaults import in base_sensor_operator (#16040)</p></li>
<li><p>Fix auto-refresh in tree view When webserver ui is not in <code class="docutils literal notranslate"><span class="pre">/</span></code> (#16018)</p></li>
<li><p>Fix dag.clear() to set multiple dags to running when necessary (#15382)</p></li>
<li><p>Fix Celery executor getting stuck randomly because of reset_signals in multiprocessing (#15989)</p></li>
</ul>
</div>
</div>
<div class="section" id="airflow-2-1-0-2021-05-21">
<h2><a class="toc-backref" href="#id178">Airflow 2.1.0 (2021-05-21)</a><a class="headerlink" href="#airflow-2-1-0-2021-05-21" title="Permalink to this heading"></a></h2>
<div class="section" id="id50">
<h3>Significant Changes<a class="headerlink" href="#id50" title="Permalink to this heading"></a></h3>
<div class="section" id="new-deprecated-api-extra">
<h4>New “deprecated_api” extra<a class="headerlink" href="#new-deprecated-api-extra" title="Permalink to this heading"></a></h4>
<p>We have a new ‘[deprecated_api]’ extra that should be used when installing airflow when the deprecated API
is going to be used. This is now an optional feature of Airflow now because it pulls in <code class="docutils literal notranslate"><span class="pre">requests</span></code> which
(as of 14 May 2021) pulls LGPL <code class="docutils literal notranslate"><span class="pre">chardet</span></code> dependency.</p>
</div>
<div class="section" id="the-http-provider-is-not-installed-by-default">
<h4>The <code class="docutils literal notranslate"><span class="pre">http</span></code> provider is not installed by default<a class="headerlink" href="#the-http-provider-is-not-installed-by-default" title="Permalink to this heading"></a></h4>
<p>The <code class="docutils literal notranslate"><span class="pre">http</span></code> provider is now optional and not installed by default, until <code class="docutils literal notranslate"><span class="pre">chardet</span></code> becomes an optional
dependency of <code class="docutils literal notranslate"><span class="pre">requests</span></code>.
See <a class="reference external" href="https://github.com/psf/requests/pull/5797">PR to replace chardet with charset-normalizer</a></p>
</div>
<div class="section" id="apply-default-decorator-isn-t-longer-necessary">
<h4><code class="docutils literal notranslate"><span class="pre">&#64;apply_default</span></code> decorator isn’t longer necessary<a class="headerlink" href="#apply-default-decorator-isn-t-longer-necessary" title="Permalink to this heading"></a></h4>
<p>This decorator is now automatically added to all operators via the metaclass on BaseOperator</p>
</div>
<div class="section" id="change-the-configuration-options-for-field-masking">
<h4>Change the configuration options for field masking<a class="headerlink" href="#change-the-configuration-options-for-field-masking" title="Permalink to this heading"></a></h4>
<p>We’ve improved masking for sensitive data in Web UI and logs. As part of it, the following configurations have been changed:</p>
<ul class="simple">
<li><p><code class="docutils literal notranslate"><span class="pre">hide_sensitive_variable_fields</span></code> option in <code class="docutils literal notranslate"><span class="pre">admin</span></code> section has been replaced by <code class="docutils literal notranslate"><span class="pre">hide_sensitive_var_conn_fields</span></code> section in <code class="docutils literal notranslate"><span class="pre">core</span></code> section,</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">sensitive_variable_fields</span></code> option in <code class="docutils literal notranslate"><span class="pre">admin</span></code> section has been replaced by <code class="docutils literal notranslate"><span class="pre">sensitive_var_conn_names</span></code> section in <code class="docutils literal notranslate"><span class="pre">core</span></code> section.</p></li>
</ul>
</div>
<div class="section" id="deprecated-poddefaults-and-add-xcom-sidecar-in-airflow-kubernetes-pod-generator">
<h4>Deprecated PodDefaults and add_xcom_sidecar in airflow.kubernetes.pod_generator<a class="headerlink" href="#deprecated-poddefaults-and-add-xcom-sidecar-in-airflow-kubernetes-pod-generator" title="Permalink to this heading"></a></h4>
<p>We have moved PodDefaults from <code class="docutils literal notranslate"><span class="pre">airflow.kubernetes.pod_generator.PodDefaults</span></code> to
<code class="docutils literal notranslate"><span class="pre">airflow.providers.cncf.kubernetes.utils.xcom_sidecar.PodDefaults</span></code> and moved add_xcom_sidecar
from <code class="docutils literal notranslate"><span class="pre">airflow.kubernetes.pod_generator.PodGenerator.add_xcom_sidecar</span></code>to
<code class="docutils literal notranslate"><span class="pre">airflow.providers.cncf.kubernetes.utils.xcom_sidecar.add_xcom_sidecar</span></code>.
This change will allow us to modify the KubernetesPodOperator XCom functionality without requiring airflow upgrades.</p>
</div>
<div class="section" id="removed-pod-launcher-from-core-airflow">
<h4>Removed pod_launcher from core airflow<a class="headerlink" href="#removed-pod-launcher-from-core-airflow" title="Permalink to this heading"></a></h4>
<p>Moved the pod launcher from <code class="docutils literal notranslate"><span class="pre">airflow.kubernetes.pod_launcher</span></code> to <code class="docutils literal notranslate"><span class="pre">airflow.providers.cncf.kubernetes.utils.pod_launcher</span></code></p>
<p>This will allow users to update the pod_launcher for the KubernetesPodOperator without requiring an airflow upgrade</p>
</div>
<div class="section" id="default-webserver-worker-refresh-interval-is-changed-to-6000-seconds">
<h4>Default <code class="docutils literal notranslate"><span class="pre">[webserver]</span> <span class="pre">worker_refresh_interval</span></code> is changed to <code class="docutils literal notranslate"><span class="pre">6000</span></code> seconds<a class="headerlink" href="#default-webserver-worker-refresh-interval-is-changed-to-6000-seconds" title="Permalink to this heading"></a></h4>
<p>The default value for <code class="docutils literal notranslate"><span class="pre">[webserver]</span> <span class="pre">worker_refresh_interval</span></code> was <code class="docutils literal notranslate"><span class="pre">30</span></code> seconds for
Airflow &lt;=2.0.1. However, since Airflow 2.0 DAG Serialization is a hard requirement
and the Webserver used the serialized DAGs, there is no need to kill an existing
worker and create a new one as frequently as <code class="docutils literal notranslate"><span class="pre">30</span></code> seconds.</p>
<p>This setting can be raised to an even higher value, currently it is
set to <code class="docutils literal notranslate"><span class="pre">6000</span></code> seconds (100 minutes) to
serve as a DagBag cache burst time.</p>
</div>
<div class="section" id="default-queue-configuration-has-been-moved-to-the-operators-section">
<h4><code class="docutils literal notranslate"><span class="pre">default_queue</span></code> configuration has been moved to the <code class="docutils literal notranslate"><span class="pre">operators</span></code> section.<a class="headerlink" href="#default-queue-configuration-has-been-moved-to-the-operators-section" title="Permalink to this heading"></a></h4>
<p>The <code class="docutils literal notranslate"><span class="pre">default_queue</span></code> configuration option has been moved from <code class="docutils literal notranslate"><span class="pre">[celery]</span></code> section to <code class="docutils literal notranslate"><span class="pre">[operators]</span></code> section to allow for re-use between different executors.</p>
</div>
</div>
<div class="section" id="id51">
<h3>New Features<a class="headerlink" href="#id51" title="Permalink to this heading"></a></h3>
<ul class="simple">
<li><p>Add <code class="docutils literal notranslate"><span class="pre">PythonVirtualenvDecorator</span></code> to Taskflow API (#14761)</p></li>
<li><p>Add <code class="docutils literal notranslate"><span class="pre">Taskgroup</span></code> decorator (#15034)</p></li>
<li><p>Create a DAG Calendar View (#15423)</p></li>
<li><p>Create cross-DAG dependencies view (#13199)</p></li>
<li><p>Add rest API to query for providers (#13394)</p></li>
<li><p>Mask passwords and sensitive info in task logs and UI (#15599)</p></li>
<li><p>Add <code class="docutils literal notranslate"><span class="pre">SubprocessHook</span></code> for running commands from operators (#13423)</p></li>
<li><p>Add DAG Timeout in UI page “DAG Details” (#14165)</p></li>
<li><p>Add <code class="docutils literal notranslate"><span class="pre">WeekDayBranchOperator</span></code> (#13997)</p></li>
<li><p>Add JSON linter to DAG Trigger UI (#13551)</p></li>
<li><p>Add DAG Description Doc to Trigger UI Page (#13365)</p></li>
<li><p>Add airflow webserver URL into SLA miss email. (#13249)</p></li>
<li><p>Add read only REST API endpoints for users (#14735)</p></li>
<li><p>Add files to generate Airflow’s Python SDK (#14739)</p></li>
<li><p>Add dynamic fields to snowflake connection (#14724)</p></li>
<li><p>Add read only REST API endpoint for roles and permissions (#14664)</p></li>
<li><p>Add new datetime branch operator (#11964)</p></li>
<li><p>Add Google leveldb hook and operator (#13109) (#14105)</p></li>
<li><p>Add plugins endpoint to the REST API (#14280)</p></li>
<li><p>Add <code class="docutils literal notranslate"><span class="pre">worker_pod_pending_timeout</span></code> support (#15263)</p></li>
<li><p>Add support for labeling DAG edges (#15142)</p></li>
<li><p>Add CUD REST API endpoints for Roles (#14840)</p></li>
<li><p>Import connections from a file (#15177)</p></li>
<li><p>A bunch of <code class="docutils literal notranslate"><span class="pre">template_fields_renderers</span></code> additions (#15130)</p></li>
<li><p>Add REST API query sort and order to some endpoints (#14895)</p></li>
<li><p>Add timezone context in new ui (#15096)</p></li>
<li><p>Add query mutations to new UI (#15068)</p></li>
<li><p>Add different modes to sort dag files for parsing (#15046)</p></li>
<li><p>Auto refresh on Tree View (#15474)</p></li>
<li><p>BashOperator to raise <code class="docutils literal notranslate"><span class="pre">AirflowSkipException</span></code> on exit code 99 (by default, configurable) (#13421) (#14963)</p></li>
<li><p>Clear tasks by task ids in REST API (#14500)</p></li>
<li><p>Support jinja2 native Python types (#14603)</p></li>
<li><p>Allow celery workers without gossip or mingle modes (#13880)</p></li>
<li><p>Add <code class="docutils literal notranslate"><span class="pre">airflow</span> <span class="pre">jobs</span> <span class="pre">check</span></code> CLI command to check health of jobs (Scheduler etc) (#14519)</p></li>
<li><p>Rename <code class="docutils literal notranslate"><span class="pre">DateTimeBranchOperator</span></code> to <code class="docutils literal notranslate"><span class="pre">BranchDateTimeOperator</span></code> (#14720)</p></li>
</ul>
</div>
<div class="section" id="id52">
<h3>Improvements<a class="headerlink" href="#id52" title="Permalink to this heading"></a></h3>
<ul class="simple">
<li><p>Add optional result handler callback to <code class="docutils literal notranslate"><span class="pre">DbApiHook</span></code> (#15581)</p></li>
<li><p>Update Flask App Builder limit to recently released 3.3 (#15792)</p></li>
<li><p>Prevent creating flask sessions on REST API requests (#15295)</p></li>
<li><p>Sync DAG specific permissions when parsing (#15311)</p></li>
<li><p>Increase maximum length of pool name on Tasks to 256 characters (#15203)</p></li>
<li><p>Enforce READ COMMITTED isolation when using mysql (#15714)</p></li>
<li><p>Auto-apply <code class="docutils literal notranslate"><span class="pre">apply_default</span></code> to subclasses of <code class="docutils literal notranslate"><span class="pre">BaseOperator</span></code> (#15667)</p></li>
<li><p>Emit error on duplicated DAG ID (#15302)</p></li>
<li><p>Update <code class="docutils literal notranslate"><span class="pre">KubernetesExecutor</span></code> pod templates to allow access to IAM permissions (#15669)</p></li>
<li><p>More verbose logs when running <code class="docutils literal notranslate"><span class="pre">airflow</span> <span class="pre">db</span> <span class="pre">check-migrations</span></code> (#15662)</p></li>
<li><p>When one_success mark task as failed if no success (#15467)</p></li>
<li><p>Add an option to trigger a dag w/o changing conf (#15591)</p></li>
<li><p>Add Airflow UI instance_name configuration option (#10162)</p></li>
<li><p>Add a decorator to retry functions with DB transactions (#14109)</p></li>
<li><p>Add return to PythonVirtualenvOperator’s execute method (#14061)</p></li>
<li><p>Add verify_ssl config for kubernetes (#13516)</p></li>
<li><p>Add description about <code class="docutils literal notranslate"><span class="pre">secret_key</span></code> when Webserver &gt; 1 (#15546)</p></li>
<li><p>Add Traceback in LogRecord in <code class="docutils literal notranslate"><span class="pre">JSONFormatter</span></code> (#15414)</p></li>
<li><p>Add support for arbitrary json in conn uri format (#15100)</p></li>
<li><p>Adds description field in variable (#12413) (#15194)</p></li>
<li><p>Add logs to show last modified in SFTP, FTP and Filesystem sensor (#15134)</p></li>
<li><p>Execute <code class="docutils literal notranslate"><span class="pre">on_failure_callback</span></code> when SIGTERM is received (#15172)</p></li>
<li><p>Allow hiding of all edges when highlighting states (#15281)</p></li>
<li><p>Display explicit error in case UID has no actual username (#15212)</p></li>
<li><p>Serve logs with Scheduler when using Local or Sequential Executor (#15557)</p></li>
<li><p>Deactivate trigger, refresh, and delete controls on dag detail view. (#14144)</p></li>
<li><p>Turn off autocomplete for connection forms (#15073)</p></li>
<li><p>Increase default <code class="docutils literal notranslate"><span class="pre">worker_refresh_interval</span></code> to <code class="docutils literal notranslate"><span class="pre">6000</span></code> seconds (#14970)</p></li>
<li><p>Only show User’s local timezone if it’s not UTC (#13904)</p></li>
<li><p>Suppress LOG/WARNING for a few tasks CLI for better CLI experience (#14567)</p></li>
<li><p>Configurable API response (CORS) headers (#13620)</p></li>
<li><p>Allow viewers to see all docs links (#14197)</p></li>
<li><p>Update Tree View date ticks (#14141)</p></li>
<li><p>Make the tooltip to Pause / Unpause a DAG clearer (#13642)</p></li>
<li><p>Warn about precedence of env var when getting variables (#13501)</p></li>
<li><p>Move <code class="docutils literal notranslate"><span class="pre">[celery]</span> <span class="pre">default_queue</span></code> config to <code class="docutils literal notranslate"><span class="pre">[operators]</span> <span class="pre">default_queue</span></code> to re-use between executors (#14699)</p></li>
</ul>
</div>
<div class="section" id="id53">
<h3>Bug Fixes<a class="headerlink" href="#id53" title="Permalink to this heading"></a></h3>
<ul class="simple">
<li><p>Fix 500 error from <code class="docutils literal notranslate"><span class="pre">updateTaskInstancesState</span></code> API endpoint when <code class="docutils literal notranslate"><span class="pre">dry_run</span></code> not passed (#15889)</p></li>
<li><p>Ensure that task preceding a PythonVirtualenvOperator doesn’t fail (#15822)</p></li>
<li><p>Prevent mixed case env vars from crashing processes like worker (#14380)</p></li>
<li><p>Fixed type annotations in DAG decorator (#15778)</p></li>
<li><p>Fix on_failure_callback when task receive SIGKILL (#15537)</p></li>
<li><p>Fix dags table overflow (#15660)</p></li>
<li><p>Fix changing the parent dag state on subdag clear (#15562)</p></li>
<li><p>Fix reading from zip package to default to text (#13962)</p></li>
<li><p>Fix wrong parameter for <code class="docutils literal notranslate"><span class="pre">drawDagStatsForDag</span></code> in dags.html (#13884)</p></li>
<li><p>Fix QueuedLocalWorker crashing with EOFError (#13215)</p></li>
<li><p>Fix typo in <code class="docutils literal notranslate"><span class="pre">NotPreviouslySkippedDep</span></code> (#13933)</p></li>
<li><p>Fix parallelism after KubeExecutor pod adoption (#15555)</p></li>
<li><p>Fix kube client on mac with keepalive enabled (#15551)</p></li>
<li><p>Fixes wrong limit for dask for python&gt;3.7 (should be &lt;3.7) (#15545)</p></li>
<li><p>Fix Task Adoption in <code class="docutils literal notranslate"><span class="pre">KubernetesExecutor</span></code> (#14795)</p></li>
<li><p>Fix timeout when using XCom with <code class="docutils literal notranslate"><span class="pre">KubernetesPodOperator</span></code> (#15388)</p></li>
<li><p>Fix deprecated provider aliases in “extras” not working (#15465)</p></li>
<li><p>Fixed default XCom deserialization. (#14827)</p></li>
<li><p>Fix used_group_ids in <code class="docutils literal notranslate"><span class="pre">dag.partial_subset</span></code> (#13700) (#15308)</p></li>
<li><p>Further fix trimmed <code class="docutils literal notranslate"><span class="pre">pod_id</span></code> for <code class="docutils literal notranslate"><span class="pre">KubernetesPodOperator</span></code> (#15445)</p></li>
<li><p>Bugfix: Invalid name when trimmed <code class="docutils literal notranslate"><span class="pre">pod_id</span></code> ends with hyphen in <code class="docutils literal notranslate"><span class="pre">KubernetesPodOperator</span></code> (#15443)</p></li>
<li><p>Fix incorrect slots stats when TI <code class="docutils literal notranslate"><span class="pre">pool_slots</span> <span class="pre">&gt;</span> <span class="pre">1</span></code> (#15426)</p></li>
<li><p>Fix DAG last run link (#15327)</p></li>
<li><p>Fix <code class="docutils literal notranslate"><span class="pre">sync-perm</span></code> to work correctly when update_fab_perms = False (#14847)</p></li>
<li><p>Fixes limits on Arrow for plexus test (#14781)</p></li>
<li><p>Fix UI bugs in tree view (#14566)</p></li>
<li><p>Fix AzureDataFactoryHook failing to instantiate its connection (#14565)</p></li>
<li><p>Fix permission error on non-POSIX filesystem (#13121)</p></li>
<li><p>Fix spelling in “ignorable” (#14348)</p></li>
<li><p>Fix get_context_data doctest import (#14288)</p></li>
<li><p>Correct typo in <code class="docutils literal notranslate"><span class="pre">GCSObjectsWtihPrefixExistenceSensor</span></code> (#14179)</p></li>
<li><p>Fix order of failed deps (#14036)</p></li>
<li><p>Fix critical <code class="docutils literal notranslate"><span class="pre">CeleryKubernetesExecutor</span></code> bug (#13247)</p></li>
<li><p>Fix four bugs in <code class="docutils literal notranslate"><span class="pre">StackdriverTaskHandler</span></code> (#13784)</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">func.sum</span></code> may return <code class="docutils literal notranslate"><span class="pre">Decimal</span></code> that break rest APIs (#15585)</p></li>
<li><p>Persist tags params in pagination (#15411)</p></li>
<li><p>API: Raise <code class="docutils literal notranslate"><span class="pre">AlreadyExists</span></code> exception when the <code class="docutils literal notranslate"><span class="pre">execution_date</span></code> is same (#15174)</p></li>
<li><p>Remove duplicate call to <code class="docutils literal notranslate"><span class="pre">sync_metadata</span></code> inside <code class="docutils literal notranslate"><span class="pre">DagFileProcessorManager</span></code> (#15121)</p></li>
<li><p>Extra <code class="docutils literal notranslate"><span class="pre">docker-py</span></code> update to resolve docker op issues (#15731)</p></li>
<li><p>Ensure executors end method is called (#14085)</p></li>
<li><p>Remove <code class="docutils literal notranslate"><span class="pre">user_id</span></code> from API schema (#15117)</p></li>
<li><p>Prevent clickable bad links on disabled pagination (#15074)</p></li>
<li><p>Acquire lock on db for the time of migration (#10151)</p></li>
<li><p>Skip SLA check only if SLA is None (#14064)</p></li>
<li><p>Print right version in airflow info command (#14560)</p></li>
<li><p>Make <code class="docutils literal notranslate"><span class="pre">airflow</span> <span class="pre">info</span></code> work with pipes (#14528)</p></li>
<li><p>Rework client-side script for connection form. (#14052)</p></li>
<li><p>API: Add <code class="docutils literal notranslate"><span class="pre">CollectionInfo</span></code> in all Collections that have <code class="docutils literal notranslate"><span class="pre">total_entries</span></code> (#14366)</p></li>
<li><p>Fix <code class="docutils literal notranslate"><span class="pre">task_instance_mutation_hook</span></code> when importing airflow.models.dagrun (#15851)</p></li>
</ul>
</div>
<div class="section" id="id54">
<h3>Doc only changes<a class="headerlink" href="#id54" title="Permalink to this heading"></a></h3>
<ul class="simple">
<li><p>Fix docstring of SqlSensor (#15466)</p></li>
<li><p>Small changes on “DAGs and Tasks documentation” (#14853)</p></li>
<li><p>Add note on changes to configuration options (#15696)</p></li>
<li><p>Add docs to the <code class="docutils literal notranslate"><span class="pre">markdownlint</span></code> and <code class="docutils literal notranslate"><span class="pre">yamllint</span></code> config files (#15682)</p></li>
<li><p>Rename old “Experimental” API to deprecated in the docs. (#15653)</p></li>
<li><p>Fix documentation error in <code class="docutils literal notranslate"><span class="pre">git_sync_template.yaml</span></code> (#13197)</p></li>
<li><p>Fix doc link permission name (#14972)</p></li>
<li><p>Fix link to Helm chart docs (#14652)</p></li>
<li><p>Fix docstrings for Kubernetes code (#14605)</p></li>
<li><p>docs: Capitalize &amp; minor fixes (#14283) (#14534)</p></li>
<li><p>Fixed reading from zip package to default to text. (#13984)</p></li>
<li><p>An initial rework of the “Concepts” docs (#15444)</p></li>
<li><p>Improve docstrings for various modules (#15047)</p></li>
<li><p>Add documentation on database connection URI (#14124)</p></li>
<li><p>Add Helm Chart logo to docs index (#14762)</p></li>
<li><p>Create a new documentation package for Helm Chart (#14643)</p></li>
<li><p>Add docs about supported logging levels (#14507)</p></li>
<li><p>Update docs about tableau and salesforce provider (#14495)</p></li>
<li><p>Replace deprecated doc links to the correct one (#14429)</p></li>
<li><p>Refactor redundant doc url logic to use utility (#14080)</p></li>
<li><p>docs: NOTICE: Updated 2016-2019 to 2016-now (#14248)</p></li>
<li><p>Skip DAG perm sync during parsing if possible (#15464)</p></li>
<li><p>Add picture and examples for Edge Labels (#15310)</p></li>
<li><p>Add example DAG &amp; how-to guide for sqlite (#13196)</p></li>
<li><p>Add links to new modules for deprecated modules (#15316)</p></li>
<li><p>Add note in Updating.md about FAB data model change (#14478)</p></li>
</ul>
</div>
<div class="section" id="id55">
<h3>Misc/Internal<a class="headerlink" href="#id55" title="Permalink to this heading"></a></h3>
<ul class="simple">
<li><p>Fix <code class="docutils literal notranslate"><span class="pre">logging.exception</span></code> redundancy (#14823)</p></li>
<li><p>Bump <code class="docutils literal notranslate"><span class="pre">stylelint</span></code> to remove vulnerable sub-dependency (#15784)</p></li>
<li><p>Add resolution to force dependencies to use patched version of lodash (#15777)</p></li>
<li><p>Update croniter to 1.0.x series (#15769)</p></li>
<li><p>Get rid of Airflow 1.10 in Breeze (#15712)</p></li>
<li><p>Run helm chart tests in parallel (#15706)</p></li>
<li><p>Bump <code class="docutils literal notranslate"><span class="pre">ssri</span></code> from 6.0.1 to 6.0.2 in /airflow/www (#15437)</p></li>
<li><p>Remove the limit on Gunicorn dependency (#15611)</p></li>
<li><p>Better “dependency already registered” warning message for tasks #14613 (#14860)</p></li>
<li><p>Pin pandas-gbq to &lt;0.15.0 (#15114)</p></li>
<li><p>Use Pip 21.* to install airflow officially (#15513)</p></li>
<li><p>Bump mysqlclient to support the 1.4.x and 2.x series (#14978)</p></li>
<li><p>Finish refactor of DAG resource name helper (#15511)</p></li>
<li><p>Refactor/Cleanup Presentation of Graph Task and Path Highlighting (#15257)</p></li>
<li><p>Standardize default fab perms (#14946)</p></li>
<li><p>Remove <code class="docutils literal notranslate"><span class="pre">datepicker</span></code> for task instance detail view (#15284)</p></li>
<li><p>Turn provider’s import warnings into debug logs (#14903)</p></li>
<li><p>Remove left-over fields from required in provider_info schema. (#14119)</p></li>
<li><p>Deprecate <code class="docutils literal notranslate"><span class="pre">tableau</span></code> extra (#13595)</p></li>
<li><p>Use built-in <code class="docutils literal notranslate"><span class="pre">cached_property</span></code> on Python 3.8 where possible (#14606)</p></li>
<li><p>Clean-up JS code in UI templates (#14019)</p></li>
<li><p>Bump elliptic from 6.5.3 to 6.5.4 in /airflow/www (#14668)</p></li>
<li><p>Switch to f-strings using <code class="docutils literal notranslate"><span class="pre">flynt</span></code>. (#13732)</p></li>
<li><p>use <code class="docutils literal notranslate"><span class="pre">jquery</span></code> ready instead of vanilla js (#15258)</p></li>
<li><p>Migrate task instance log (ti_log) js (#15309)</p></li>
<li><p>Migrate graph js (#15307)</p></li>
<li><p>Migrate dags.html javascript (#14692)</p></li>
<li><p>Removes unnecessary AzureContainerInstance connection type (#15514)</p></li>
<li><p>Separate Kubernetes pod_launcher from core airflow (#15165)</p></li>
<li><p>update remaining old import paths of operators (#15127)</p></li>
<li><p>Remove broken and undocumented “demo mode” feature (#14601)</p></li>
<li><p>Simplify configuration/legibility of <code class="docutils literal notranslate"><span class="pre">Webpack</span></code> entries (#14551)</p></li>
<li><p>remove inline tree js (#14552)</p></li>
<li><p>Js linting and inline migration for simple scripts (#14215)</p></li>
<li><p>Remove use of repeated constant in AirflowConfigParser (#14023)</p></li>
<li><p>Deprecate email credentials from environment variables. (#13601)</p></li>
<li><p>Remove unused ‘context’ variable in task_instance.py (#14049)</p></li>
<li><p>Disable suppress_logs_and_warning in cli when debugging (#13180)</p></li>
</ul>
</div>
</div>
<div class="section" id="airflow-2-0-2-2021-04-19">
<h2><a class="toc-backref" href="#id179">Airflow 2.0.2 (2021-04-19)</a><a class="headerlink" href="#airflow-2-0-2-2021-04-19" title="Permalink to this heading"></a></h2>
<div class="section" id="id56">
<h3>Significant Changes<a class="headerlink" href="#id56" title="Permalink to this heading"></a></h3>
<div class="section" id="default-kubernetes-enable-tcp-keepalive-is-changed-to-true">
<h4>Default <code class="docutils literal notranslate"><span class="pre">[kubernetes]</span> <span class="pre">enable_tcp_keepalive</span></code> is changed to <code class="docutils literal notranslate"><span class="pre">True</span></code><a class="headerlink" href="#default-kubernetes-enable-tcp-keepalive-is-changed-to-true" title="Permalink to this heading"></a></h4>
<p>This allows Airflow to work more reliably with some environments (like Azure) by default.</p>
</div>
<div class="section" id="sync-perm-cli-no-longer-syncs-dag-specific-permissions-by-default">
<h4><code class="docutils literal notranslate"><span class="pre">sync-perm</span></code> CLI no longer syncs DAG specific permissions by default<a class="headerlink" href="#sync-perm-cli-no-longer-syncs-dag-specific-permissions-by-default" title="Permalink to this heading"></a></h4>
<p>The <code class="docutils literal notranslate"><span class="pre">sync-perm</span></code> CLI command will no longer sync DAG specific permissions by default as they are now being handled during
DAG parsing. If you need or want the old behavior, you can pass <code class="docutils literal notranslate"><span class="pre">--include-dags</span></code> to have <code class="docutils literal notranslate"><span class="pre">sync-perm</span></code> also sync DAG
specific permissions.</p>
</div>
</div>
<div class="section" id="id57">
<h3>Bug Fixes<a class="headerlink" href="#id57" title="Permalink to this heading"></a></h3>
<ul class="simple">
<li><p>Bugfix: <code class="docutils literal notranslate"><span class="pre">TypeError</span></code> when Serializing &amp; sorting iterable properties of DAGs (#15395)</p></li>
<li><p>Fix missing <code class="docutils literal notranslate"><span class="pre">on_load</span></code> trigger for folder-based plugins (#15208)</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">kubernetes</span> <span class="pre">cleanup-pods</span></code> subcommand will only clean up Airflow-created Pods (#15204)</p></li>
<li><p>Fix password masking in CLI action_logging (#15143)</p></li>
<li><p>Fix url generation for TriggerDagRunOperatorLink (#14990)</p></li>
<li><p>Restore base lineage backend (#14146)</p></li>
<li><p>Unable to trigger backfill or manual jobs with Kubernetes executor. (#14160)</p></li>
<li><p>Bugfix: Task docs are not shown in the Task Instance Detail View (#15191)</p></li>
<li><p>Bugfix: Fix overriding <code class="docutils literal notranslate"><span class="pre">pod_template_file</span></code> in KubernetesExecutor (#15197)</p></li>
<li><p>Bugfix: resources in <code class="docutils literal notranslate"><span class="pre">executor_config</span></code> breaks Graph View in UI (#15199)</p></li>
<li><p>Fix celery executor bug trying to call len on map (#14883)</p></li>
<li><p>Fix bug in airflow.stats timing that broke dogstatsd mode (#15132)</p></li>
<li><p>Avoid scheduler/parser manager deadlock by using non-blocking IO (#15112)</p></li>
<li><p>Re-introduce <code class="docutils literal notranslate"><span class="pre">dagrun.schedule_delay</span></code> metric (#15105)</p></li>
<li><p>Compare string values, not if strings are the same object in Kube executor(#14942)</p></li>
<li><p>Pass queue to BaseExecutor.execute_async like in airflow 1.10 (#14861)</p></li>
<li><p>Scheduler: Remove TIs from starved pools from the critical path. (#14476)</p></li>
<li><p>Remove extra/needless deprecation warnings from airflow.contrib module (#15065)</p></li>
<li><p>Fix support for long dag_id and task_id in KubernetesExecutor (#14703)</p></li>
<li><p>Sort lists, sets and tuples in Serialized DAGs (#14909)</p></li>
<li><p>Simplify cleaning string passed to origin param (#14738) (#14905)</p></li>
<li><p>Fix error when running tasks with Sentry integration enabled. (#13929)</p></li>
<li><p>Webserver: Sanitize string passed to origin param (#14738)</p></li>
<li><p>Fix losing duration &lt; 1 secs in tree (#13537)</p></li>
<li><p>Pin SQLAlchemy to &lt;1.4 due to breakage of sqlalchemy-utils (#14812)</p></li>
<li><p>Fix KubernetesExecutor issue with deleted pending pods (#14810)</p></li>
<li><p>Default to Celery Task model when backend model does not exist (#14612)</p></li>
<li><p>Bugfix: Plugins endpoint was unauthenticated (#14570)</p></li>
<li><p>BugFix: fix DAG doc display (especially for TaskFlow DAGs) (#14564)</p></li>
<li><p>BugFix: TypeError in airflow.kubernetes.pod_launcher’s monitor_pod (#14513)</p></li>
<li><p>Bugfix: Fix wrong output of tags and owners in dag detail API endpoint (#14490)</p></li>
<li><p>Fix logging error with task error when JSON logging is enabled (#14456)</p></li>
<li><p>Fix StatsD metrics not sending when using daemon mode (#14454)</p></li>
<li><p>Gracefully handle missing start_date and end_date for DagRun (#14452)</p></li>
<li><p>BugFix: Serialize max_retry_delay as a timedelta (#14436)</p></li>
<li><p>Fix crash when user clicks on “Task Instance Details” caused by start_date being None (#14416)</p></li>
<li><p>BugFix: Fix TaskInstance API call fails if a task is removed from running DAG (#14381)</p></li>
<li><p>Scheduler should not fail when invalid <code class="docutils literal notranslate"><span class="pre">executor_config</span></code> is passed (#14323)</p></li>
<li><p>Fix bug allowing task instances to survive when dagrun_timeout is exceeded (#14321)</p></li>
<li><p>Fix bug where DAG timezone was not always shown correctly in UI tooltips (#14204)</p></li>
<li><p>Use <code class="docutils literal notranslate"><span class="pre">Lax</span></code> for <code class="docutils literal notranslate"><span class="pre">cookie_samesite</span></code> when empty string is passed (#14183)</p></li>
<li><p>[AIRFLOW-6076] fix <code class="docutils literal notranslate"><span class="pre">dag.cli()</span></code> KeyError (#13647)</p></li>
<li><p>Fix running child tasks in a subdag after clearing a successful subdag (#14776)</p></li>
</ul>
</div>
<div class="section" id="id58">
<h3>Improvements<a class="headerlink" href="#id58" title="Permalink to this heading"></a></h3>
<ul class="simple">
<li><p>Remove unused JS packages causing false security alerts (#15383)</p></li>
<li><p>Change default of <code class="docutils literal notranslate"><span class="pre">[kubernetes]</span> <span class="pre">enable_tcp_keepalive</span></code> for new installs to <code class="docutils literal notranslate"><span class="pre">True</span></code> (#15338)</p></li>
<li><p>Fixed #14270: Add error message in OOM situations (#15207)</p></li>
<li><p>Better compatibility/diagnostics for arbitrary UID in docker image (#15162)</p></li>
<li><p>Updates 3.6 limits for latest versions of a few libraries (#15209)</p></li>
<li><p>Adds Blinker dependency which is missing after recent changes (#15182)</p></li>
<li><p>Remove ‘conf’ from search_columns in DagRun View (#15099)</p></li>
<li><p>More proper default value for namespace in K8S cleanup-pods CLI (#15060)</p></li>
<li><p>Faster default role syncing during webserver start (#15017)</p></li>
<li><p>Speed up webserver start when there are many DAGs (#14993)</p></li>
<li><p>Much easier to use and better documented Docker image (#14911)</p></li>
<li><p>Use <code class="docutils literal notranslate"><span class="pre">libyaml</span></code> C library when available. (#14577)</p></li>
<li><p>Don’t create unittest.cfg when not running in unit test mode (#14420)</p></li>
<li><p>Webserver: Allow Filtering TaskInstances by queued_dttm (#14708)</p></li>
<li><p>Update Flask-AppBuilder dependency to allow 3.2 (and all 3.x series) (#14665)</p></li>
<li><p>Remember expanded task groups in browser local storage (#14661)</p></li>
<li><p>Add plain format output to cli tables (#14546)</p></li>
<li><p>Make <code class="docutils literal notranslate"><span class="pre">airflow</span> <span class="pre">dags</span> <span class="pre">show</span></code> command display TaskGroups (#14269)</p></li>
<li><p>Increase maximum size of <code class="docutils literal notranslate"><span class="pre">extra</span></code> connection field. (#12944)</p></li>
<li><p>Speed up clear_task_instances by doing a single sql delete for TaskReschedule (#14048)</p></li>
<li><p>Add more flexibility with FAB menu links (#13903)</p></li>
<li><p>Add better description and guidance in case of sqlite version mismatch (#14209)</p></li>
</ul>
</div>
<div class="section" id="id59">
<h3>Doc only changes<a class="headerlink" href="#id59" title="Permalink to this heading"></a></h3>
<ul class="simple">
<li><p>Add documentation create/update community providers (#15061)</p></li>
<li><p>Fix mistake and typos in airflow.utils.timezone docstrings (#15180)</p></li>
<li><p>Replace new url for Stable Airflow Docs (#15169)</p></li>
<li><p>Docs: Clarify behavior of delete_worker_pods_on_failure (#14958)</p></li>
<li><p>Create a documentation package for Docker image (#14846)</p></li>
<li><p>Multiple minor doc (OpenAPI) fixes (#14917)</p></li>
<li><p>Replace Graph View Screenshot to show Auto-refresh (#14571)</p></li>
</ul>
</div>
<div class="section" id="id60">
<h3>Misc/Internal<a class="headerlink" href="#id60" title="Permalink to this heading"></a></h3>
<ul class="simple">
<li><p>Import Connection lazily in hooks to avoid cycles (#15361)</p></li>
<li><p>Rename last_scheduler_run into last_parsed_time, and ensure it’s updated in DB (#14581)</p></li>
<li><p>Make TaskInstance.pool_slots not nullable with a default of 1 (#14406)</p></li>
<li><p>Log migrations info in consistent way (#14158)</p></li>
</ul>
</div>
</div>
<div class="section" id="airflow-2-0-1-2021-02-08">
<h2><a class="toc-backref" href="#id180">Airflow 2.0.1 (2021-02-08)</a><a class="headerlink" href="#airflow-2-0-1-2021-02-08" title="Permalink to this heading"></a></h2>
<div class="section" id="id61">
<h3>Significant Changes<a class="headerlink" href="#id61" title="Permalink to this heading"></a></h3>
<div class="section" id="permission-to-view-airflow-configurations-has-been-removed-from-user-and-viewer-role">
<h4>Permission to view Airflow Configurations has been removed from <code class="docutils literal notranslate"><span class="pre">User</span></code> and <code class="docutils literal notranslate"><span class="pre">Viewer</span></code> role<a class="headerlink" href="#permission-to-view-airflow-configurations-has-been-removed-from-user-and-viewer-role" title="Permalink to this heading"></a></h4>
<p>Previously, Users with <code class="docutils literal notranslate"><span class="pre">User</span></code> or <code class="docutils literal notranslate"><span class="pre">Viewer</span></code> role were able to get/view configurations using
the REST API or in the Webserver. From Airflow 2.0.1, only users with <code class="docutils literal notranslate"><span class="pre">Admin</span></code> or <code class="docutils literal notranslate"><span class="pre">Op</span></code> role would be able
to get/view Configurations.</p>
<p>To allow users with other roles to view configuration, add <code class="docutils literal notranslate"><span class="pre">can</span> <span class="pre">read</span> <span class="pre">on</span> <span class="pre">Configurations</span></code> permissions to that role.</p>
<p>Note that if <code class="docutils literal notranslate"><span class="pre">[webserver]</span> <span class="pre">expose_config</span></code> is set to <code class="docutils literal notranslate"><span class="pre">False</span></code>, the API will throw a <code class="docutils literal notranslate"><span class="pre">403</span></code> response even if
the user has role with <code class="docutils literal notranslate"><span class="pre">can</span> <span class="pre">read</span> <span class="pre">on</span> <span class="pre">Configurations</span></code> permission.</p>
</div>
<div class="section" id="default-celery-worker-concurrency-is-changed-to-16">
<h4>Default <code class="docutils literal notranslate"><span class="pre">[celery]</span> <span class="pre">worker_concurrency</span></code> is changed to <code class="docutils literal notranslate"><span class="pre">16</span></code><a class="headerlink" href="#default-celery-worker-concurrency-is-changed-to-16" title="Permalink to this heading"></a></h4>
<p>The default value for <code class="docutils literal notranslate"><span class="pre">[celery]</span> <span class="pre">worker_concurrency</span></code> was <code class="docutils literal notranslate"><span class="pre">16</span></code> for Airflow &lt;2.0.0.
However, it was unintentionally changed to <code class="docutils literal notranslate"><span class="pre">8</span></code> in 2.0.0.</p>
<p>From Airflow 2.0.1, we revert to the old default of <code class="docutils literal notranslate"><span class="pre">16</span></code>.</p>
</div>
<div class="section" id="default-scheduler-min-file-process-interval-is-changed-to-30">
<h4>Default <code class="docutils literal notranslate"><span class="pre">[scheduler]</span> <span class="pre">min_file_process_interval</span></code> is changed to <code class="docutils literal notranslate"><span class="pre">30</span></code><a class="headerlink" href="#default-scheduler-min-file-process-interval-is-changed-to-30" title="Permalink to this heading"></a></h4>
<p>The default value for <code class="docutils literal notranslate"><span class="pre">[scheduler]</span> <span class="pre">min_file_process_interval</span></code> was <code class="docutils literal notranslate"><span class="pre">0</span></code>,
due to which the CPU Usage mostly stayed around 100% as the DAG files are parsed
constantly.</p>
<p>From Airflow 2.0.0, the scheduling decisions have been moved from
DagFileProcessor to Scheduler, so we can keep the default a bit higher: <code class="docutils literal notranslate"><span class="pre">30</span></code>.</p>
</div>
</div>
<div class="section" id="id62">
<h3>Bug Fixes<a class="headerlink" href="#id62" title="Permalink to this heading"></a></h3>
<ul class="simple">
<li><p>Bugfix: Return XCom Value in the XCom Endpoint API (#13684)</p></li>
<li><p>Bugfix: Import error when using custom backend and <code class="docutils literal notranslate"><span class="pre">sql_alchemy_conn_secret</span></code> (#13260)</p></li>
<li><p>Allow PID file path to be relative when daemonize a process (scheduler, kerberos, etc) (#13232)</p></li>
<li><p>Bugfix: no generic <code class="docutils literal notranslate"><span class="pre">DROP</span> <span class="pre">CONSTRAINT</span></code> in MySQL during <code class="docutils literal notranslate"><span class="pre">airflow</span> <span class="pre">db</span> <span class="pre">upgrade</span></code> (#13239)</p></li>
<li><p>Bugfix: Sync Access Control defined in DAGs when running <code class="docutils literal notranslate"><span class="pre">sync-perm</span></code> (#13377)</p></li>
<li><p>Stop sending Callback Requests if no callbacks are defined on DAG (#13163)</p></li>
<li><p>BugFix: Dag-level Callback Requests were not run (#13651)</p></li>
<li><p>Stop creating duplicate Dag File Processors (#13662)</p></li>
<li><p>Filter DagRuns with Task Instances in removed State while Scheduling (#13165)</p></li>
<li><p>Bump <code class="docutils literal notranslate"><span class="pre">datatables.net</span></code> from 1.10.21 to 1.10.22 in /airflow/www (#13143)</p></li>
<li><p>Bump <code class="docutils literal notranslate"><span class="pre">datatables.net</span></code> JS to 1.10.23 (#13253)</p></li>
<li><p>Bump <code class="docutils literal notranslate"><span class="pre">dompurify</span></code> from 2.0.12 to 2.2.6 in /airflow/www (#13164)</p></li>
<li><p>Update minimum <code class="docutils literal notranslate"><span class="pre">cattrs</span></code> version (#13223)</p></li>
<li><p>Remove inapplicable arg ‘output’ for CLI pools import/export (#13071)</p></li>
<li><p>Webserver: Fix the behavior to deactivate the authentication option and add docs (#13191)</p></li>
<li><p>Fix: add support for no-menu plugin views (#11742)</p></li>
<li><p>Add <code class="docutils literal notranslate"><span class="pre">python-daemon</span></code> limit for Python 3.8+ to fix daemon crash (#13540)</p></li>
<li><p>Change the default celery <code class="docutils literal notranslate"><span class="pre">worker_concurrency</span></code> to 16 (#13612)</p></li>
<li><p>Audit Log records View should not contain link if <code class="docutils literal notranslate"><span class="pre">dag_id</span></code> is None (#13619)</p></li>
<li><p>Fix invalid <code class="docutils literal notranslate"><span class="pre">continue_token</span></code> for cleanup list pods (#13563)</p></li>
<li><p>Switches to latest version of snowflake connector (#13654)</p></li>
<li><p>Fix backfill crash on task retry or reschedule (#13712)</p></li>
<li><p>Setting <code class="docutils literal notranslate"><span class="pre">max_tis_per_query</span></code> to <code class="docutils literal notranslate"><span class="pre">0</span></code> now correctly removes the limit (#13512)</p></li>
<li><p>Fix race conditions in task callback invocations (#10917)</p></li>
<li><p>Fix webserver exiting when gunicorn master crashes (#13518)(#13780)</p></li>
<li><p>Fix SQL syntax to check duplicate connections (#13783)</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">BaseBranchOperator</span></code> will push to xcom by default (#13704) (#13763)</p></li>
<li><p>Fix Deprecation for <code class="docutils literal notranslate"><span class="pre">configuration.getsection</span></code> (#13804)</p></li>
<li><p>Fix TaskNotFound in log endpoint (#13872)</p></li>
<li><p>Fix race condition when using Dynamic DAGs (#13893)</p></li>
<li><p>Fix: Linux/Chrome window bouncing in Webserver</p></li>
<li><p>Fix db shell for sqlite (#13907)</p></li>
<li><p>Only compare updated time when Serialized DAG exists (#13899)</p></li>
<li><p>Fix dag run type enum query for mysqldb driver (#13278)</p></li>
<li><p>Add authentication to lineage endpoint for experimental API (#13870)</p></li>
<li><p>Do not add User role perms to custom roles. (#13856)</p></li>
<li><p>Do not add <code class="docutils literal notranslate"><span class="pre">Website.can_read</span></code> access to default roles. (#13923)</p></li>
<li><p>Fix invalid value error caused by long Kubernetes pod name (#13299)</p></li>
<li><p>Fix DB Migration for SQLite to upgrade to 2.0 (#13921)</p></li>
<li><p>Bugfix: Manual DagRun trigger should not skip scheduled runs (#13963)</p></li>
<li><p>Stop loading Extra Operator links in Scheduler (#13932)</p></li>
<li><p>Added missing return parameter in read function of <code class="docutils literal notranslate"><span class="pre">FileTaskHandler</span></code> (#14001)</p></li>
<li><p>Bugfix: Do not try to create a duplicate Dag Run in Scheduler (#13920)</p></li>
<li><p>Make <code class="docutils literal notranslate"><span class="pre">v1/config</span></code> endpoint respect webserver <code class="docutils literal notranslate"><span class="pre">expose_config</span></code> setting (#14020)</p></li>
<li><p>Disable row level locking for Mariadb and MySQL &lt;8 (#14031)</p></li>
<li><p>Bugfix: Fix permissions to triggering only specific DAGs (#13922)</p></li>
<li><p>Fix broken SLA Mechanism (#14056)</p></li>
<li><p>Bugfix: Scheduler fails if task is removed at runtime (#14057)</p></li>
<li><p>Remove permissions to read Configurations for User and Viewer roles (#14067)</p></li>
<li><p>Fix DB Migration from 2.0.1rc1</p></li>
</ul>
</div>
<div class="section" id="id63">
<h3>Improvements<a class="headerlink" href="#id63" title="Permalink to this heading"></a></h3>
<ul class="simple">
<li><p>Increase the default <code class="docutils literal notranslate"><span class="pre">min_file_process_interval</span></code> to decrease CPU Usage (#13664)</p></li>
<li><p>Dispose connections when running tasks with <code class="docutils literal notranslate"><span class="pre">os.fork</span></code> &amp; <code class="docutils literal notranslate"><span class="pre">CeleryExecutor</span></code> (#13265)</p></li>
<li><p>Make function purpose clearer in <code class="docutils literal notranslate"><span class="pre">example_kubernetes_executor</span></code> example dag (#13216)</p></li>
<li><p>Remove unused libraries - <code class="docutils literal notranslate"><span class="pre">flask-swagger</span></code>, <code class="docutils literal notranslate"><span class="pre">funcsigs</span></code> (#13178)</p></li>
<li><p>Display alternative tooltip when a Task has yet to run (no TI) (#13162)</p></li>
<li><p>User werkzeug’s own type conversion for request args (#13184)</p></li>
<li><p>UI: Add <code class="docutils literal notranslate"><span class="pre">queued_by_job_id</span></code> &amp; <code class="docutils literal notranslate"><span class="pre">external_executor_id</span></code> Columns to TI View (#13266)</p></li>
<li><p>Make <code class="docutils literal notranslate"><span class="pre">json-merge-patch</span></code> an optional library and unpin it (#13175)</p></li>
<li><p>Adds missing LDAP “extra” dependencies to ldap provider. (#13308)</p></li>
<li><p>Refactor <code class="docutils literal notranslate"><span class="pre">setup.py</span></code> to better reflect changes in providers (#13314)</p></li>
<li><p>Pin <code class="docutils literal notranslate"><span class="pre">pyjwt</span></code> and Add integration tests for Apache Pinot (#13195)</p></li>
<li><p>Removes provider-imposed requirements from <code class="docutils literal notranslate"><span class="pre">setup.cfg</span></code> (#13409)</p></li>
<li><p>Replace deprecated decorator (#13443)</p></li>
<li><p>Streamline &amp; simplify <code class="docutils literal notranslate"><span class="pre">__eq__</span></code> methods in models Dag and BaseOperator (#13449)</p></li>
<li><p>Additional properties should be allowed in provider schema (#13440)</p></li>
<li><p>Remove unused dependency - <code class="docutils literal notranslate"><span class="pre">contextdecorator</span></code> (#13455)</p></li>
<li><p>Remove ‘typing’ dependency (#13472)</p></li>
<li><p>Log migrations info in consistent way (#13458)</p></li>
<li><p>Unpin <code class="docutils literal notranslate"><span class="pre">mysql-connector-python</span></code> to allow <code class="docutils literal notranslate"><span class="pre">8.0.22</span></code> (#13370)</p></li>
<li><p>Remove thrift as a core dependency (#13471)</p></li>
<li><p>Add <code class="docutils literal notranslate"><span class="pre">NotFound</span></code> response for DELETE methods in OpenAPI YAML (#13550)</p></li>
<li><p>Stop Log Spamming when <code class="docutils literal notranslate"><span class="pre">[core]</span> <span class="pre">lazy_load_plugins</span></code> is <code class="docutils literal notranslate"><span class="pre">False</span></code> (#13578)</p></li>
<li><p>Display message and docs link when no plugins are loaded (#13599)</p></li>
<li><p>Unpin restriction for <code class="docutils literal notranslate"><span class="pre">colorlog</span></code> dependency (#13176)</p></li>
<li><p>Add missing Dag Tag for Example DAGs (#13665)</p></li>
<li><p>Support tables in DAG docs (#13533)</p></li>
<li><p>Add <code class="docutils literal notranslate"><span class="pre">python3-openid</span></code> dependency (#13714)</p></li>
<li><p>Add <code class="docutils literal notranslate"><span class="pre">__repr__</span></code> for Executors (#13753)</p></li>
<li><p>Add description to hint if <code class="docutils literal notranslate"><span class="pre">conn_type</span></code> is missing (#13778)</p></li>
<li><p>Upgrade Azure blob to v12 (#12188)</p></li>
<li><p>Add extra field to <code class="docutils literal notranslate"><span class="pre">get_connnection</span></code> REST endpoint (#13885)</p></li>
<li><p>Make Smart Sensors DB Migration idempotent (#13892)</p></li>
<li><p>Improve the error when DAG does not exist when running dag pause command (#13900)</p></li>
<li><p>Update <code class="docutils literal notranslate"><span class="pre">airflow_local_settings.py</span></code> to fix an error message (#13927)</p></li>
<li><p>Only allow passing JSON Serializable conf to <code class="docutils literal notranslate"><span class="pre">TriggerDagRunOperator</span></code> (#13964)</p></li>
<li><p>Bugfix: Allow getting details of a DAG with null <code class="docutils literal notranslate"><span class="pre">start_date</span></code> (REST API) (#13959)</p></li>
<li><p>Add params to the DAG details endpoint (#13790)</p></li>
<li><p>Make the role assigned to anonymous users customizable (#14042)</p></li>
<li><p>Retry critical methods in Scheduler loop in case of <code class="docutils literal notranslate"><span class="pre">OperationalError</span></code> (#14032)</p></li>
</ul>
</div>
<div class="section" id="id64">
<h3>Doc only changes<a class="headerlink" href="#id64" title="Permalink to this heading"></a></h3>
<ul class="simple">
<li><p>Add Missing StatsD Metrics in Docs (#13708)</p></li>
<li><p>Add Missing Email configs in Configuration doc (#13709)</p></li>
<li><p>Add quick start for Airflow on Docker (#13660)</p></li>
<li><p>Describe which Python versions are supported (#13259)</p></li>
<li><p>Add note block to 2.x migration docs (#13094)</p></li>
<li><p>Add documentation about webserver_config.py (#13155)</p></li>
<li><p>Add missing version information to recently added configs (#13161)</p></li>
<li><p>API: Use generic information in UpdateMask component (#13146)</p></li>
<li><p>Add Airflow 2.0.0 to requirements table (#13140)</p></li>
<li><p>Avoid confusion in doc for CeleryKubernetesExecutor (#13116)</p></li>
<li><p>Update docs link in REST API spec (#13107)</p></li>
<li><p>Add link to PyPI Repository to provider docs (#13064)</p></li>
<li><p>Fix link to Airflow master branch documentation (#13179)</p></li>
<li><p>Minor enhancements to Sensors docs (#13381)</p></li>
<li><p>Use 2.0.0 in Airflow docs &amp; Breeze (#13379)</p></li>
<li><p>Improves documentation regarding providers and custom connections (#13375)(#13410)</p></li>
<li><p>Fix malformed table in production-deployment.rst (#13395)</p></li>
<li><p>Update celery.rst to fix broken links (#13400)</p></li>
<li><p>Remove reference to scheduler run_duration param in docs (#13346)</p></li>
<li><p>Set minimum SQLite version supported (#13412)</p></li>
<li><p>Fix installation doc (#13462)</p></li>
<li><p>Add docs about mocking variables and connections (#13502)</p></li>
<li><p>Add docs about Flask CLI (#13500)</p></li>
<li><p>Fix Upgrading to 2 guide to use <code class="docutils literal notranslate"><span class="pre">rbac</span></code> UI (#13569)</p></li>
<li><p>Make docs clear that Auth can not be disabled for Stable API (#13568)</p></li>
<li><p>Remove archived links from docs &amp; add link for AIPs (#13580)</p></li>
<li><p>Minor fixes in upgrading-to-2.rst (#13583)</p></li>
<li><p>Fix Link in Upgrading to 2.0 guide (#13584)</p></li>
<li><p>Fix heading for Mocking section in best-practices.rst (#13658)</p></li>
<li><p>Add docs on how to use custom operators within plugins folder (#13186)</p></li>
<li><p>Update docs to register Operator Extra Links (#13683)</p></li>
<li><p>Improvements for database setup docs (#13696)</p></li>
<li><p>Replace module path to Class with just Class Name (#13719)</p></li>
<li><p>Update DAG Serialization docs (#13722)</p></li>
<li><p>Fix link to Apache Airflow docs in webserver (#13250)</p></li>
<li><p>Clarifies differences between extras and provider packages (#13810)</p></li>
<li><p>Add information about all access methods to the environment (#13940)</p></li>
<li><p>Docs: Fix FAQ on scheduler latency (#13969)</p></li>
<li><p>Updated taskflow api doc to show dependency with sensor (#13968)</p></li>
<li><p>Add deprecated config options to docs (#13883)</p></li>
<li><p>Added a FAQ section to the Upgrading to 2 doc (#13979)</p></li>
</ul>
</div>
</div>
<div class="section" id="airflow-2-0-0-2020-12-18">
<h2><a class="toc-backref" href="#id181">Airflow 2.0.0 (2020-12-18)</a><a class="headerlink" href="#airflow-2-0-0-2020-12-18" title="Permalink to this heading"></a></h2>
<p>The full changelog is about 3,000 lines long (already excluding everything backported to 1.10)
so please check <a class="reference external" href="https://airflow.apache.org/blog/airflow-two-point-oh-is-here/">Airflow 2.0.0 Highligths Blog Post</a>
instead.</p>
<div class="section" id="id65">
<h3>Significant Changes<a class="headerlink" href="#id65" title="Permalink to this heading"></a></h3>
<p>The 2.0 release of the Airflow is a significant upgrade, and includes substantial major changes,
and some of them may be breaking. Existing code written for earlier versions of this project will may require updates
to use this version. Sometimes necessary configuration changes are also required.
This document describes the changes that have been made, and what you need to do to update your usage.</p>
<p>If you experience issues or have questions, please file <a class="reference external" href="https://github.com/apache/airflow/issues/new/choose">an issue</a>.</p>
<div class="section" id="major-changes">
<h4>Major changes<a class="headerlink" href="#major-changes" title="Permalink to this heading"></a></h4>
<p>This section describes the major changes that have been made in this release.</p>
</div>
<div class="section" id="the-experimental-rest-api-is-disabled-by-default">
<h4>The experimental REST API is disabled by default<a class="headerlink" href="#the-experimental-rest-api-is-disabled-by-default" title="Permalink to this heading"></a></h4>
<p>The experimental REST API is disabled by default. To restore these APIs while migrating to
the stable REST API, set <code class="docutils literal notranslate"><span class="pre">enable_experimental_api</span></code> option in <code class="docutils literal notranslate"><span class="pre">[api]</span></code> section to <code class="docutils literal notranslate"><span class="pre">True</span></code>.</p>
<p>Please note that the experimental REST API do not have access control.
The authenticated user has full access.</p>
</div>
<div class="section" id="sparkjdbchook-default-connection">
<h4>SparkJDBCHook default connection<a class="headerlink" href="#sparkjdbchook-default-connection" title="Permalink to this heading"></a></h4>
<p>For SparkJDBCHook default connection was <code class="docutils literal notranslate"><span class="pre">spark-default</span></code>, and for SparkSubmitHook it was
<code class="docutils literal notranslate"><span class="pre">spark_default</span></code>. Both hooks now use the <code class="docutils literal notranslate"><span class="pre">spark_default</span></code> which is a common pattern for the connection
names used across all providers.</p>
</div>
<div class="section" id="changes-to-output-argument-in-commands">
<h4>Changes to output argument in commands<a class="headerlink" href="#changes-to-output-argument-in-commands" title="Permalink to this heading"></a></h4>
<p>From Airflow 2.0, We are replacing <a class="reference external" href="https://pypi.org/project/tabulate/">tabulate</a> with <a class="reference external" href="https://github.com/willmcgugan/rich">rich</a> to render commands output. Due to this change, the <code class="docutils literal notranslate"><span class="pre">--output</span></code> argument
will no longer accept formats of tabulate tables. Instead, it now accepts:</p>
<ul class="simple">
<li><p><code class="docutils literal notranslate"><span class="pre">table</span></code> - will render the output in predefined table</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">json</span></code> - will render the output as a json</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">yaml</span></code> - will render the output as yaml</p></li>
</ul>
<p>By doing this we increased consistency and gave users possibility to manipulate the
output programmatically (when using json or yaml).</p>
<p>Affected commands:</p>
<ul class="simple">
<li><p><code class="docutils literal notranslate"><span class="pre">airflow</span> <span class="pre">dags</span> <span class="pre">list</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">airflow</span> <span class="pre">dags</span> <span class="pre">report</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">airflow</span> <span class="pre">dags</span> <span class="pre">list-runs</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">airflow</span> <span class="pre">dags</span> <span class="pre">list-jobs</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">airflow</span> <span class="pre">connections</span> <span class="pre">list</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">airflow</span> <span class="pre">connections</span> <span class="pre">get</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">airflow</span> <span class="pre">pools</span> <span class="pre">list</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">airflow</span> <span class="pre">pools</span> <span class="pre">get</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">airflow</span> <span class="pre">pools</span> <span class="pre">set</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">airflow</span> <span class="pre">pools</span> <span class="pre">delete</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">airflow</span> <span class="pre">pools</span> <span class="pre">import</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">airflow</span> <span class="pre">pools</span> <span class="pre">export</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">airflow</span> <span class="pre">role</span> <span class="pre">list</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">airflow</span> <span class="pre">providers</span> <span class="pre">list</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">airflow</span> <span class="pre">providers</span> <span class="pre">get</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">airflow</span> <span class="pre">providers</span> <span class="pre">hooks</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">airflow</span> <span class="pre">tasks</span> <span class="pre">states-for-dag-run</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">airflow</span> <span class="pre">users</span> <span class="pre">list</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">airflow</span> <span class="pre">variables</span> <span class="pre">list</span></code></p></li>
</ul>
</div>
<div class="section" id="azure-wasb-hook-does-not-work-together-with-snowflake-hook">
<h4>Azure Wasb Hook does not work together with Snowflake hook<a class="headerlink" href="#azure-wasb-hook-does-not-work-together-with-snowflake-hook" title="Permalink to this heading"></a></h4>
<p>The WasbHook in Apache Airflow use a legacy version of Azure library. While the conflict is not
significant for most of the Azure hooks, it is a problem for Wasb Hook because the <code class="docutils literal notranslate"><span class="pre">blob</span></code> folders
for both libraries overlap. Installing both Snowflake and Azure extra will result in non-importable
WasbHook.</p>
</div>
<div class="section" id="rename-all-to-devel-all-extra">
<h4>Rename <code class="docutils literal notranslate"><span class="pre">all</span></code> to <code class="docutils literal notranslate"><span class="pre">devel_all</span></code> extra<a class="headerlink" href="#rename-all-to-devel-all-extra" title="Permalink to this heading"></a></h4>
<p>The <code class="docutils literal notranslate"><span class="pre">all</span></code> extras were reduced to include only user-facing dependencies. This means
that this extra does not contain development dependencies. If you were relying on
<code class="docutils literal notranslate"><span class="pre">all</span></code> extra then you should use now <code class="docutils literal notranslate"><span class="pre">devel_all</span></code> or figure out if you need development
extras at all.</p>
</div>
<div class="section" id="context-variables-prev-execution-date-success-and-prev-execution-date-success-are-now-pendulum-datetime">
<h4>Context variables <code class="docutils literal notranslate"><span class="pre">prev_execution_date_success</span></code> and <code class="docutils literal notranslate"><span class="pre">prev_execution_date_success</span></code> are now <code class="docutils literal notranslate"><span class="pre">pendulum.DateTime</span></code><a class="headerlink" href="#context-variables-prev-execution-date-success-and-prev-execution-date-success-are-now-pendulum-datetime" title="Permalink to this heading"></a></h4>
</div>
<div class="section" id="rename-policy-to-task-policy">
<h4>Rename policy to task_policy<a class="headerlink" href="#rename-policy-to-task-policy" title="Permalink to this heading"></a></h4>
<p>Because Airflow introduced DAG level policy (<code class="docutils literal notranslate"><span class="pre">dag_policy</span></code>) we decided to rename existing <code class="docutils literal notranslate"><span class="pre">policy</span></code>
function to <code class="docutils literal notranslate"><span class="pre">task_policy</span></code> to make the distinction more profound and avoid any confusion.</p>
<p>Users using cluster policy need to rename their <code class="docutils literal notranslate"><span class="pre">policy</span></code> functions in <code class="docutils literal notranslate"><span class="pre">airflow_local_settings.py</span></code>
to <code class="docutils literal notranslate"><span class="pre">task_policy</span></code>.</p>
</div>
<div class="section" id="default-value-for-celery-operation-timeout-has-changed-to-1-0">
<h4>Default value for <code class="docutils literal notranslate"><span class="pre">[celery]</span> <span class="pre">operation_timeout</span></code> has changed to <code class="docutils literal notranslate"><span class="pre">1.0</span></code><a class="headerlink" href="#default-value-for-celery-operation-timeout-has-changed-to-1-0" title="Permalink to this heading"></a></h4>
<p>From Airflow 2, by default Airflow will retry 3 times to publish task to Celery broker. This is controlled by
<code class="docutils literal notranslate"><span class="pre">[celery]</span> <span class="pre">task_publish_max_retries</span></code>. Because of this we can now have a lower Operation timeout that raises
<code class="docutils literal notranslate"><span class="pre">AirflowTaskTimeout</span></code>. This generally occurs during network blips or intermittent DNS issues.</p>
</div>
<div class="section" id="adding-operators-and-sensors-via-plugins-is-no-longer-supported">
<h4>Adding Operators and Sensors via plugins is no longer supported<a class="headerlink" href="#adding-operators-and-sensors-via-plugins-is-no-longer-supported" title="Permalink to this heading"></a></h4>
<p>Operators and Sensors should no longer be registered or imported via Airflow’s plugin mechanism – these types of classes are just treated as plain python classes by Airflow, so there is no need to register them with Airflow.</p>
<p>If you previously had a <code class="docutils literal notranslate"><span class="pre">plugins/my_plugin.py</span></code> and you used it like this in a DAG:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">airflow.operators.my_plugin</span> <span class="kn">import</span> <span class="n">MyOperator</span>
</pre></div>
</div>
<p>You should instead import it as:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">my_plugin</span> <span class="kn">import</span> <span class="n">MyOperator</span>
</pre></div>
</div>
<p>The name under <code class="docutils literal notranslate"><span class="pre">airflow.operators.</span></code> was the plugin name, where as in the second example it is the python module name where the operator is defined.</p>
<p>See <a class="reference external" href="https://airflow.apache.org/docs/apache-airflow/stable/howto/custom-operator.html">https://airflow.apache.org/docs/apache-airflow/stable/howto/custom-operator.html</a> for more info.</p>
</div>
<div class="section" id="importing-hooks-via-plugins-is-no-longer-supported">
<h4>Importing Hooks via plugins is no longer supported<a class="headerlink" href="#importing-hooks-via-plugins-is-no-longer-supported" title="Permalink to this heading"></a></h4>
<p>Importing hooks added in plugins via <code class="docutils literal notranslate"><span class="pre">airflow.hooks.&lt;plugin_name&gt;</span></code> is no longer supported, and hooks should just be imported as regular python modules.</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">airflow.hooks.my_plugin</span> <span class="kn">import</span> <span class="n">MyHook</span>
</pre></div>
</div>
<p>You should instead import it as:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">my_plugin</span> <span class="kn">import</span> <span class="n">MyHook</span>
</pre></div>
</div>
<p>It is still possible (but not required) to “register” hooks in plugins. This is to allow future support for dynamically populating the Connections form in the UI.</p>
<p>See <a class="reference external" href="https://airflow.apache.org/docs/apache-airflow/stable/howto/custom-operator.html">https://airflow.apache.org/docs/apache-airflow/stable/howto/custom-operator.html</a> for more info.</p>
</div>
<div class="section" id="the-default-value-for-core-enable-xcom-pickling-has-been-changed-to-false">
<h4>The default value for <code class="docutils literal notranslate"><span class="pre">[core]</span> <span class="pre">enable_xcom_pickling</span></code> has been changed to <code class="docutils literal notranslate"><span class="pre">False</span></code><a class="headerlink" href="#the-default-value-for-core-enable-xcom-pickling-has-been-changed-to-false" title="Permalink to this heading"></a></h4>
<p>The pickle type for XCom messages has been replaced to JSON by default to prevent RCE attacks.
Note that JSON serialization is stricter than pickling, so for example if you want to pass
raw bytes through XCom you must encode them using an encoding like <code class="docutils literal notranslate"><span class="pre">base64</span></code>.
If you understand the risk and still want to use <a class="reference external" href="https://docs.python.org/3/library/pickle.html">pickling</a>,
set <code class="docutils literal notranslate"><span class="pre">enable_xcom_pickling</span> <span class="pre">=</span> <span class="pre">True</span></code> in your Airflow config’s <code class="docutils literal notranslate"><span class="pre">core</span></code> section.</p>
</div>
<div class="section" id="airflowignore-of-base-path">
<h4>Airflowignore of base path<a class="headerlink" href="#airflowignore-of-base-path" title="Permalink to this heading"></a></h4>
<p>There was a bug fixed in <a class="reference external" href="https://github.com/apache/airflow/pull/11993">https://github.com/apache/airflow/pull/11993</a> that the “airflowignore” checked
the base path of the dag folder for forbidden dags, not only the relative part. This had the effect
that if the base path contained the excluded word the whole dag folder could have been excluded. For
example if the airflowignore file contained x, and the dags folder was ‘/var/x/dags’, then all dags in
the folder would be excluded. The fix only matches the relative path only now which means that if you
previously used full path as ignored, you should change it to relative one. For example if your dag
folder was ‘/var/dags/’ and your airflowignore contained ‘/var/dag/excluded/’, you should change it
to ‘excluded/’.</p>
</div>
<div class="section" id="externaltasksensor-provides-all-task-context-variables-to-execution-date-fn-as-keyword-arguments">
<h4><code class="docutils literal notranslate"><span class="pre">ExternalTaskSensor</span></code> provides all task context variables to <code class="docutils literal notranslate"><span class="pre">execution_date_fn</span></code> as keyword arguments<a class="headerlink" href="#externaltasksensor-provides-all-task-context-variables-to-execution-date-fn-as-keyword-arguments" title="Permalink to this heading"></a></h4>
<p>The old syntax of passing <code class="docutils literal notranslate"><span class="pre">context</span></code> as a dictionary will continue to work with the caveat that the argument must be named <code class="docutils literal notranslate"><span class="pre">context</span></code>. The following will break. To fix it, change <code class="docutils literal notranslate"><span class="pre">ctx</span></code> to <code class="docutils literal notranslate"><span class="pre">context</span></code>.</p>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="k">def</span> <span class="nf">execution_date_fn</span><span class="p">(</span><span class="n">execution_date</span><span class="p">,</span> <span class="n">ctx</span><span class="p">):</span>
<span class="o">...</span>
</pre></div>
</div>
<p><code class="docutils literal notranslate"><span class="pre">execution_date_fn</span></code> can take in any number of keyword arguments available in the task context dictionary. The following forms of <code class="docutils literal notranslate"><span class="pre">execution_date_fn</span></code> are all supported:</p>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="k">def</span> <span class="nf">execution_date_fn</span><span class="p">(</span><span class="n">dt</span><span class="p">):</span>
<span class="o">...</span>
<span class="k">def</span> <span class="nf">execution_date_fn</span><span class="p">(</span><span class="n">execution_date</span><span class="p">):</span>
<span class="o">...</span>
<span class="k">def</span> <span class="nf">execution_date_fn</span><span class="p">(</span><span class="n">execution_date</span><span class="p">,</span> <span class="n">ds_nodash</span><span class="p">):</span>
<span class="o">...</span>
<span class="k">def</span> <span class="nf">execution_date_fn</span><span class="p">(</span><span class="n">execution_date</span><span class="p">,</span> <span class="n">ds_nodash</span><span class="p">,</span> <span class="n">dag</span><span class="p">):</span>
<span class="o">...</span>
</pre></div>
</div>
</div>
<div class="section" id="the-default-value-for-webserver-cookie-samesite-has-been-changed-to-lax">
<h4>The default value for <code class="docutils literal notranslate"><span class="pre">[webserver]</span> <span class="pre">cookie_samesite</span></code> has been changed to <code class="docutils literal notranslate"><span class="pre">Lax</span></code><a class="headerlink" href="#the-default-value-for-webserver-cookie-samesite-has-been-changed-to-lax" title="Permalink to this heading"></a></h4>
<p>As <a class="reference external" href="https://flask.palletsprojects.com/en/1.1.x/config/#SESSION_COOKIE_SAMESITE">recommended</a> by Flask, the
<code class="docutils literal notranslate"><span class="pre">[webserver]</span> <span class="pre">cookie_samesite</span></code> has been changed to <code class="docutils literal notranslate"><span class="pre">Lax</span></code> from <code class="docutils literal notranslate"><span class="pre">''</span></code> (empty string) .</p>
<div class="section" id="changes-to-import-paths">
<h5>Changes to import paths<a class="headerlink" href="#changes-to-import-paths" title="Permalink to this heading"></a></h5>
<p>Formerly the core code was maintained by the original creators - Airbnb. The code that was in the contrib
package was supported by the community. The project was passed to the Apache community and currently the
entire code is maintained by the community, so now the division has no justification, and it is only due
to historical reasons. In Airflow 2.0, we want to organize packages and move integrations
with third party services to the <code class="docutils literal notranslate"><span class="pre">airflow.providers</span></code> package.</p>
<p>All changes made are backward compatible, but if you use the old import paths you will
see a deprecation warning. The old import paths can be abandoned in the future.</p>
<p>According to <a class="reference external" href="https://cwiki.apache.org/confluence/display/AIRFLOW/AIP-21%3A+Changes+in+import+paths">AIP-21</a>
<code class="docutils literal notranslate"><span class="pre">_operator</span></code> suffix has been removed from operators. A deprecation warning has also been raised for paths
importing with the suffix.</p>
<p>The following table shows changes in import paths.</p>
<table class="docutils align-default">
<colgroup>
<col style="width: 50%" />
<col style="width: 50%" />
</colgroup>
<thead>
<tr class="row-odd"><th class="head"><p>Old path</p></th>
<th class="head"><p>New path</p></th>
</tr>
</thead>
<tbody>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.hooks.base_hook.BaseHook</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.hooks.base.BaseHook</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.hooks.dbapi_hook.DbApiHook</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.hooks.dbapi.DbApiHook</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.operators.dummy_operator.DummyOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.operators.dummy.DummyOperator</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.operators.dagrun_operator.TriggerDagRunOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.operators.trigger_dagrun.TriggerDagRunOperator</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.operators.branch_operator.BaseBranchOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.operators.branch.BaseBranchOperator</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.operators.subdag_operator.SubDagOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.operators.subdag.SubDagOperator</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.sensors.base_sensor_operator.BaseSensorOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.sensors.base.BaseSensorOperator</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.sensors.date_time_sensor.DateTimeSensor</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.sensors.date_time.DateTimeSensor</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.sensors.external_task_sensor.ExternalTaskMarker</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.sensors.external_task.ExternalTaskMarker</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.sensors.external_task_sensor.ExternalTaskSensor</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.sensors.external_task.ExternalTaskSensor</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.sensors.sql_sensor.SqlSensor</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.sensors.sql.SqlSensor</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.sensors.time_delta_sensor.TimeDeltaSensor</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.sensors.time_delta.TimeDeltaSensor</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.sensors.weekday_sensor.DayOfWeekSensor</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.sensors.weekday.DayOfWeekSensor</span></code></p></td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="section" id="database-schema-changes">
<h4>Database schema changes<a class="headerlink" href="#database-schema-changes" title="Permalink to this heading"></a></h4>
<p>In order to migrate the database, you should use the command <code class="docutils literal notranslate"><span class="pre">airflow</span> <span class="pre">db</span> <span class="pre">upgrade</span></code>, but in
some cases manual steps are required.</p>
<div class="section" id="unique-conn-id-in-connection-table">
<h5>Unique conn_id in connection table<a class="headerlink" href="#unique-conn-id-in-connection-table" title="Permalink to this heading"></a></h5>
<p>Previously, Airflow allowed users to add more than one connection with the same <code class="docutils literal notranslate"><span class="pre">conn_id</span></code> and on access it would choose one connection randomly. This acted as a basic load balancing and fault tolerance technique, when used in conjunction with retries.</p>
<p>This behavior caused some confusion for users, and there was no clear evidence if it actually worked well or not.</p>
<p>Now the <code class="docutils literal notranslate"><span class="pre">conn_id</span></code> will be unique. If you already have duplicates in your metadata database, you will have to manage those duplicate connections before upgrading the database.</p>
</div>
<div class="section" id="not-nullable-conn-type-column-in-connection-table">
<h5>Not-nullable conn_type column in connection table<a class="headerlink" href="#not-nullable-conn-type-column-in-connection-table" title="Permalink to this heading"></a></h5>
<p>The <code class="docutils literal notranslate"><span class="pre">conn_type</span></code> column in the <code class="docutils literal notranslate"><span class="pre">connection</span></code> table must contain content. Previously, this rule was enforced
by application logic, but was not enforced by the database schema.</p>
<p>If you made any modifications to the table directly, make sure you don’t have
null in the <code class="docutils literal notranslate"><span class="pre">conn_type</span></code> column.</p>
</div>
</div>
<div class="section" id="configuration-changes">
<h4>Configuration changes<a class="headerlink" href="#configuration-changes" title="Permalink to this heading"></a></h4>
<p>This release contains many changes that require a change in the configuration of this application or
other application that integrate with it.</p>
<p>This section describes the changes that have been made, and what you need to do to.</p>
<div class="section" id="airflow-contrib-utils-log-has-been-moved">
<h5>airflow.contrib.utils.log has been moved<a class="headerlink" href="#airflow-contrib-utils-log-has-been-moved" title="Permalink to this heading"></a></h5>
<p>Formerly the core code was maintained by the original creators - Airbnb. The code that was in the contrib
package was supported by the community. The project was passed to the Apache community and currently the
entire code is maintained by the community, so now the division has no justification, and it is only due
to historical reasons. In Airflow 2.0, we want to organize packages and move integrations
with third party services to the <code class="docutils literal notranslate"><span class="pre">airflow.providers</span></code> package.</p>
<p>To clean up, the following packages were moved:</p>
<table class="docutils align-default">
<colgroup>
<col style="width: 50%" />
<col style="width: 50%" />
</colgroup>
<thead>
<tr class="row-odd"><th class="head"><p>Old package</p></th>
<th class="head"><p>New package</p></th>
</tr>
</thead>
<tbody>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.utils.log</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.utils.log</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.utils.log.gcs_task_handler</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.log.gcs_task_handler</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.utils.log.wasb_task_handler</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.microsoft.azure.log.wasb_task_handler</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.utils.log.stackdriver_task_handler</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.log.stackdriver_task_handler</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.utils.log.s3_task_handler</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.amazon.aws.log.s3_task_handler</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.utils.log.es_task_handler</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.elasticsearch.log.es_task_handler</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.utils.log.cloudwatch_task_handler</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.amazon.aws.log.cloudwatch_task_handler</span></code></p></td>
</tr>
</tbody>
</table>
<p>You should update the import paths if you are setting log configurations with the <code class="docutils literal notranslate"><span class="pre">logging_config_class</span></code> option.
The old import paths still works but can be abandoned.</p>
</div>
<div class="section" id="sendgrid-emailer-has-been-moved">
<h5>SendGrid emailer has been moved<a class="headerlink" href="#sendgrid-emailer-has-been-moved" title="Permalink to this heading"></a></h5>
<p>Formerly the core code was maintained by the original creators - Airbnb. The code that was in the contrib
package was supported by the community. The project was passed to the Apache community and currently the
entire code is maintained by the community, so now the division has no justification, and it is only due
to historical reasons.</p>
<p>To clean up, the <code class="docutils literal notranslate"><span class="pre">send_mail</span></code> function from the <code class="docutils literal notranslate"><span class="pre">airflow.contrib.utils.sendgrid</span></code> module has been moved.</p>
<p>If your configuration file looks like this:</p>
<div class="highlight-ini notranslate"><div class="highlight"><pre><span></span><span class="k">[email]</span><span class="w"></span>
<span class="na">email_backend</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">airflow.contrib.utils.sendgrid.send_email</span><span class="w"></span>
</pre></div>
</div>
<p>It should look like this now:</p>
<div class="highlight-ini notranslate"><div class="highlight"><pre><span></span><span class="k">[email]</span><span class="w"></span>
<span class="na">email_backend</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">airflow.providers.sendgrid.utils.emailer.send_email</span><span class="w"></span>
</pre></div>
</div>
<p>The old configuration still works but can be abandoned.</p>
</div>
<div class="section" id="unify-hostname-callable-option-in-core-section">
<h5>Unify <code class="docutils literal notranslate"><span class="pre">hostname_callable</span></code> option in <code class="docutils literal notranslate"><span class="pre">core</span></code> section<a class="headerlink" href="#unify-hostname-callable-option-in-core-section" title="Permalink to this heading"></a></h5>
<p>The previous option used a colon(<code class="docutils literal notranslate"><span class="pre">:</span></code>) to split the module from function. Now the dot(<code class="docutils literal notranslate"><span class="pre">.</span></code>) is used.</p>
<p>The change aims to unify the format of all options that refer to objects in the <code class="docutils literal notranslate"><span class="pre">airflow.cfg</span></code> file.</p>
</div>
<div class="section" id="custom-executors-is-loaded-using-full-import-path">
<h5>Custom executors is loaded using full import path<a class="headerlink" href="#custom-executors-is-loaded-using-full-import-path" title="Permalink to this heading"></a></h5>
<p>In previous versions of Airflow it was possible to use plugins to load custom executors. It is still
possible, but the configuration has changed. Now you don’t have to create a plugin to configure a
custom executor, but you need to provide the full path to the module in the <code class="docutils literal notranslate"><span class="pre">executor</span></code> option
in the <code class="docutils literal notranslate"><span class="pre">core</span></code> section. The purpose of this change is to simplify the plugin mechanism and make
it easier to configure executor.</p>
<p>If your module was in the path <code class="docutils literal notranslate"><span class="pre">my_acme_company.executors.MyCustomExecutor</span></code> and the plugin was
called <code class="docutils literal notranslate"><span class="pre">my_plugin</span></code> then your configuration looks like this</p>
<div class="highlight-ini notranslate"><div class="highlight"><pre><span></span><span class="k">[core]</span><span class="w"></span>
<span class="na">executor</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">my_plugin.MyCustomExecutor</span><span class="w"></span>
</pre></div>
</div>
<p>And now it should look like this:</p>
<div class="highlight-ini notranslate"><div class="highlight"><pre><span></span><span class="k">[core]</span><span class="w"></span>
<span class="na">executor</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">my_acme_company.executors.MyCustomExecutor</span><span class="w"></span>
</pre></div>
</div>
<p>The old configuration is still works but can be abandoned at any time.</p>
</div>
<div class="section" id="use-customsqlainterface-instead-of-sqlainterface-for-custom-data-models">
<h5>Use <code class="docutils literal notranslate"><span class="pre">CustomSQLAInterface</span></code> instead of <code class="docutils literal notranslate"><span class="pre">SQLAInterface</span></code> for custom data models.<a class="headerlink" href="#use-customsqlainterface-instead-of-sqlainterface-for-custom-data-models" title="Permalink to this heading"></a></h5>
<p>From Airflow 2.0, if you want to define your own Flask App Builder data models you need to use CustomSQLAInterface
instead of SQLAInterface.</p>
<p>For Non-RBAC replace:</p>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">flask_appbuilder.models.sqla.interface</span> <span class="kn">import</span> <span class="n">SQLAInterface</span>
<span class="n">datamodel</span> <span class="o">=</span> <span class="n">SQLAInterface</span><span class="p">(</span><span class="n">your_data_model</span><span class="p">)</span>
</pre></div>
</div>
<p>with RBAC (in 1.10):</p>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">airflow.www_rbac.utils</span> <span class="kn">import</span> <span class="n">CustomSQLAInterface</span>
<span class="n">datamodel</span> <span class="o">=</span> <span class="n">CustomSQLAInterface</span><span class="p">(</span><span class="n">your_data_model</span><span class="p">)</span>
</pre></div>
</div>
<p>and in 2.0:</p>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">airflow.www.utils</span> <span class="kn">import</span> <span class="n">CustomSQLAInterface</span>
<span class="n">datamodel</span> <span class="o">=</span> <span class="n">CustomSQLAInterface</span><span class="p">(</span><span class="n">your_data_model</span><span class="p">)</span>
</pre></div>
</div>
</div>
<div class="section" id="drop-plugin-support-for-stat-name-handler">
<h5>Drop plugin support for stat_name_handler<a class="headerlink" href="#drop-plugin-support-for-stat-name-handler" title="Permalink to this heading"></a></h5>
<p>In previous version, you could use plugins mechanism to configure <code class="docutils literal notranslate"><span class="pre">stat_name_handler</span></code>. You should now use the <code class="docutils literal notranslate"><span class="pre">stat_name_handler</span></code>
option in <code class="docutils literal notranslate"><span class="pre">[scheduler]</span></code> section to achieve the same effect.</p>
<p>If your plugin looked like this and was available through the <code class="docutils literal notranslate"><span class="pre">test_plugin</span></code> path:</p>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="k">def</span> <span class="nf">my_stat_name_handler</span><span class="p">(</span><span class="n">stat</span><span class="p">):</span>
<span class="k">return</span> <span class="n">stat</span>
<span class="k">class</span> <span class="nc">AirflowTestPlugin</span><span class="p">(</span><span class="n">AirflowPlugin</span><span class="p">):</span>
<span class="n">name</span> <span class="o">=</span> <span class="s2">&quot;test_plugin&quot;</span>
<span class="n">stat_name_handler</span> <span class="o">=</span> <span class="n">my_stat_name_handler</span>
</pre></div>
</div>
<p>then your <code class="docutils literal notranslate"><span class="pre">airflow.cfg</span></code> file should look like this:</p>
<div class="highlight-ini notranslate"><div class="highlight"><pre><span></span><span class="k">[scheduler]</span><span class="w"></span>
<span class="na">stat_name_handler</span><span class="o">=</span><span class="s">test_plugin.my_stat_name_handler</span><span class="w"></span>
</pre></div>
</div>
<p>This change is intended to simplify the statsd configuration.</p>
</div>
<div class="section" id="logging-configuration-has-been-moved-to-new-section">
<h5>Logging configuration has been moved to new section<a class="headerlink" href="#logging-configuration-has-been-moved-to-new-section" title="Permalink to this heading"></a></h5>
<p>The following configurations have been moved from <code class="docutils literal notranslate"><span class="pre">[core]</span></code> to the new <code class="docutils literal notranslate"><span class="pre">[logging]</span></code> section.</p>
<ul class="simple">
<li><p><code class="docutils literal notranslate"><span class="pre">base_log_folder</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">remote_logging</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">remote_log_conn_id</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">remote_base_log_folder</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">encrypt_s3_logs</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">logging_level</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">fab_logging_level</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">logging_config_class</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">colored_console_log</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">colored_log_format</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">colored_formatter_class</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">log_format</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">simple_log_format</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">task_log_prefix_template</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">log_filename_template</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">log_processor_filename_template</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">dag_processor_manager_log_location</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">task_log_reader</span></code></p></li>
</ul>
</div>
<div class="section" id="metrics-configuration-has-been-moved-to-new-section">
<h5>Metrics configuration has been moved to new section<a class="headerlink" href="#metrics-configuration-has-been-moved-to-new-section" title="Permalink to this heading"></a></h5>
<p>The following configurations have been moved from <code class="docutils literal notranslate"><span class="pre">[scheduler]</span></code> to the new <code class="docutils literal notranslate"><span class="pre">[metrics]</span></code> section.</p>
<ul class="simple">
<li><p><code class="docutils literal notranslate"><span class="pre">statsd_on</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">statsd_host</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">statsd_port</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">statsd_prefix</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">statsd_allow_list</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">stat_name_handler</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">statsd_datadog_enabled</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">statsd_datadog_tags</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">statsd_custom_client_path</span></code></p></li>
</ul>
</div>
<div class="section" id="changes-to-elasticsearch-logging-provider">
<h5>Changes to Elasticsearch logging provider<a class="headerlink" href="#changes-to-elasticsearch-logging-provider" title="Permalink to this heading"></a></h5>
<p>When JSON output to stdout is enabled, log lines will now contain the <code class="docutils literal notranslate"><span class="pre">log_id</span></code> &amp; <code class="docutils literal notranslate"><span class="pre">offset</span></code> fields, this should make reading task logs from elasticsearch on the webserver work out of the box. Example configuration:</p>
<div class="highlight-ini notranslate"><div class="highlight"><pre><span></span><span class="k">[logging]</span><span class="w"></span>
<span class="na">remote_logging</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">True</span><span class="w"></span>
<span class="k">[elasticsearch]</span><span class="w"></span>
<span class="na">host</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">http://es-host:9200</span><span class="w"></span>
<span class="na">write_stdout</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">True</span><span class="w"></span>
<span class="na">json_format</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">True</span><span class="w"></span>
</pre></div>
</div>
<p>Note that the webserver expects the log line data itself to be present in the <code class="docutils literal notranslate"><span class="pre">message</span></code> field of the document.</p>
</div>
<div class="section" id="remove-gcp-service-account-keys-option-in-airflow-cfg-file">
<h5>Remove gcp_service_account_keys option in airflow.cfg file<a class="headerlink" href="#remove-gcp-service-account-keys-option-in-airflow-cfg-file" title="Permalink to this heading"></a></h5>
<p>This option has been removed because it is no longer supported by the Google Kubernetes Engine. The new
recommended service account keys for the Google Cloud management method is
<a class="reference external" href="https://cloud.google.com/kubernetes-engine/docs/how-to/workload-identity">Workload Identity</a>.</p>
</div>
<div class="section" id="fernet-is-enabled-by-default">
<h5>Fernet is enabled by default<a class="headerlink" href="#fernet-is-enabled-by-default" title="Permalink to this heading"></a></h5>
<p>The fernet mechanism is enabled by default to increase the security of the default installation. In order to
restore the previous behavior, the user must consciously set an empty key in the <code class="docutils literal notranslate"><span class="pre">fernet_key</span></code> option of
section <code class="docutils literal notranslate"><span class="pre">[core]</span></code> in the <code class="docutils literal notranslate"><span class="pre">airflow.cfg</span></code> file.</p>
<p>At the same time, this means that the <code class="docutils literal notranslate"><span class="pre">apache-airflow[crypto]</span></code> extra-packages are always installed.
However, this requires that your operating system has <code class="docutils literal notranslate"><span class="pre">libffi-dev</span></code> installed.</p>
</div>
<div class="section" id="changes-to-propagating-kubernetes-worker-annotations">
<h5>Changes to propagating Kubernetes worker annotations<a class="headerlink" href="#changes-to-propagating-kubernetes-worker-annotations" title="Permalink to this heading"></a></h5>
<p><code class="docutils literal notranslate"><span class="pre">kubernetes_annotations</span></code> configuration section has been removed.
A new key <code class="docutils literal notranslate"><span class="pre">worker_annotations</span></code> has been added to existing <code class="docutils literal notranslate"><span class="pre">kubernetes</span></code> section instead.
That is to remove restriction on the character set for k8s annotation keys.
All key/value pairs from <code class="docutils literal notranslate"><span class="pre">kubernetes_annotations</span></code> should now go to <code class="docutils literal notranslate"><span class="pre">worker_annotations</span></code> as a json. I.e. instead of e.g.</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="p">[</span><span class="n">kubernetes_annotations</span><span class="p">]</span>
<span class="n">annotation_key</span> <span class="o">=</span> <span class="n">annotation_value</span>
<span class="n">annotation_key2</span> <span class="o">=</span> <span class="n">annotation_value2</span>
</pre></div>
</div>
<p>it should be rewritten to</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="p">[</span><span class="n">kubernetes</span><span class="p">]</span>
<span class="n">worker_annotations</span> <span class="o">=</span> <span class="p">{</span> <span class="s2">&quot;annotation_key&quot;</span> <span class="p">:</span> <span class="s2">&quot;annotation_value&quot;</span><span class="p">,</span> <span class="s2">&quot;annotation_key2&quot;</span> <span class="p">:</span> <span class="s2">&quot;annotation_value2&quot;</span> <span class="p">}</span>
</pre></div>
</div>
</div>
<div class="section" id="remove-run-duration">
<h5>Remove run_duration<a class="headerlink" href="#remove-run-duration" title="Permalink to this heading"></a></h5>
<p>We should not use the <code class="docutils literal notranslate"><span class="pre">run_duration</span></code> option anymore. This used to be for restarting the scheduler from time to time, but right now the scheduler is getting more stable and therefore using this setting is considered bad and might cause an inconsistent state.</p>
</div>
<div class="section" id="rename-pool-statsd-metrics">
<h5>Rename pool statsd metrics<a class="headerlink" href="#rename-pool-statsd-metrics" title="Permalink to this heading"></a></h5>
<p>Used slot has been renamed to running slot to make the name self-explanatory
and the code more maintainable.</p>
<p>This means <code class="docutils literal notranslate"><span class="pre">pool.used_slots.&lt;pool_name&gt;</span></code> metric has been renamed to
<code class="docutils literal notranslate"><span class="pre">pool.running_slots.&lt;pool_name&gt;</span></code>. The <code class="docutils literal notranslate"><span class="pre">Used</span> <span class="pre">Slots</span></code> column in Pools Web UI view
has also been changed to <code class="docutils literal notranslate"><span class="pre">Running</span> <span class="pre">Slots</span></code>.</p>
</div>
<div class="section" id="removal-of-mesos-executor">
<h5>Removal of Mesos Executor<a class="headerlink" href="#removal-of-mesos-executor" title="Permalink to this heading"></a></h5>
<p>The Mesos Executor is removed from the code base as it was not widely used and not maintained. <a class="reference external" href="https://lists.apache.org/thread.html/daa9500026b820c6aaadeffd66166eae558282778091ebbc68819fb7&#64;%3Cdev.airflow.apache.org%3E">Mailing List Discussion on deleting it</a>.</p>
</div>
<div class="section" id="change-dag-loading-duration-metric-name">
<h5>Change dag loading duration metric name<a class="headerlink" href="#change-dag-loading-duration-metric-name" title="Permalink to this heading"></a></h5>
<p>Change DAG file loading duration metric from
<code class="docutils literal notranslate"><span class="pre">dag.loading-duration.&lt;dag_id&gt;</span></code> to <code class="docutils literal notranslate"><span class="pre">dag.loading-duration.&lt;dag_file&gt;</span></code>. This is to
better handle the case when a DAG file has multiple DAGs.</p>
</div>
<div class="section" id="sentry-is-disabled-by-default">
<h5>Sentry is disabled by default<a class="headerlink" href="#sentry-is-disabled-by-default" title="Permalink to this heading"></a></h5>
<p>Sentry is disabled by default. To enable these integrations, you need set <code class="docutils literal notranslate"><span class="pre">sentry_on</span></code> option
in <code class="docutils literal notranslate"><span class="pre">[sentry]</span></code> section to <code class="docutils literal notranslate"><span class="pre">&quot;True&quot;</span></code>.</p>
</div>
<div class="section" id="simplified-gcstaskhandler-configuration">
<h5>Simplified GCSTaskHandler configuration<a class="headerlink" href="#simplified-gcstaskhandler-configuration" title="Permalink to this heading"></a></h5>
<p>In previous versions, in order to configure the service account key file, you had to create a connection entry.
In the current version, you can configure <code class="docutils literal notranslate"><span class="pre">google_key_path</span></code> option in <code class="docutils literal notranslate"><span class="pre">[logging]</span></code> section to set
the key file path.</p>
<p>Users using Application Default Credentials (ADC) need not take any action.</p>
<p>The change aims to simplify the configuration of logging, to prevent corruption of
the instance configuration by changing the value controlled by the user - connection entry. If you
configure a backend secret, it also means the webserver doesn’t need to connect to it. This
simplifies setups with multiple GCP projects, because only one project will require the Secret Manager API
to be enabled.</p>
</div>
</div>
<div class="section" id="changes-to-the-core-operators-hooks">
<h4>Changes to the core operators/hooks<a class="headerlink" href="#changes-to-the-core-operators-hooks" title="Permalink to this heading"></a></h4>
<p>We strive to ensure that there are no changes that may affect the end user and your files, but this
release may contain changes that will require changes to your DAG files.</p>
<p>This section describes the changes that have been made, and what you need to do to update your DAG File,
if you use core operators or any other.</p>
<div class="section" id="basesensoroperator-now-respects-the-trigger-rule-of-downstream-tasks">
<h5>BaseSensorOperator now respects the trigger_rule of downstream tasks<a class="headerlink" href="#basesensoroperator-now-respects-the-trigger-rule-of-downstream-tasks" title="Permalink to this heading"></a></h5>
<p>Previously, BaseSensorOperator with setting <code class="docutils literal notranslate"><span class="pre">soft_fail=True</span></code> skips itself
and skips all its downstream tasks unconditionally, when it fails i.e the trigger_rule of downstream tasks is not
respected.</p>
<p>In the new behavior, the trigger_rule of downstream tasks is respected.
User can preserve/achieve the original behaviour by setting the trigger_rule of each downstream task to <code class="docutils literal notranslate"><span class="pre">all_success</span></code>.</p>
</div>
<div class="section" id="baseoperator-uses-metaclass">
<h5>BaseOperator uses metaclass<a class="headerlink" href="#baseoperator-uses-metaclass" title="Permalink to this heading"></a></h5>
<p><code class="docutils literal notranslate"><span class="pre">BaseOperator</span></code> class uses a <code class="docutils literal notranslate"><span class="pre">BaseOperatorMeta</span></code> as a metaclass. This meta class is based on
<code class="docutils literal notranslate"><span class="pre">abc.ABCMeta</span></code>. If your custom operator uses different metaclass then you will have to adjust it.</p>
</div>
<div class="section" id="remove-sql-support-in-basehook">
<h5>Remove SQL support in BaseHook<a class="headerlink" href="#remove-sql-support-in-basehook" title="Permalink to this heading"></a></h5>
<p>Remove <code class="docutils literal notranslate"><span class="pre">get_records</span></code> and <code class="docutils literal notranslate"><span class="pre">get_pandas_df</span></code> and <code class="docutils literal notranslate"><span class="pre">run</span></code> from BaseHook, which only apply for SQL-like hook,
If want to use them, or your custom hook inherit them, please use <code class="docutils literal notranslate"><span class="pre">airflow.hooks.dbapi.DbApiHook</span></code></p>
</div>
<div class="section" id="assigning-task-to-a-dag-using-bitwise-shift-bit-shift-operators-are-no-longer-supported">
<h5>Assigning task to a DAG using bitwise shift (bit-shift) operators are no longer supported<a class="headerlink" href="#assigning-task-to-a-dag-using-bitwise-shift-bit-shift-operators-are-no-longer-supported" title="Permalink to this heading"></a></h5>
<p>Previously, you could assign a task to a DAG as follows:</p>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">dag</span> <span class="o">=</span> <span class="n">DAG</span><span class="p">(</span><span class="s2">&quot;my_dag&quot;</span><span class="p">)</span>
<span class="n">dummy</span> <span class="o">=</span> <span class="n">DummyOperator</span><span class="p">(</span><span class="n">task_id</span><span class="o">=</span><span class="s2">&quot;dummy&quot;</span><span class="p">)</span>
<span class="n">dag</span> <span class="o">&gt;&gt;</span> <span class="n">dummy</span>
</pre></div>
</div>
<p>This is no longer supported. Instead, we recommend using the DAG as context manager:</p>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="k">with</span> <span class="n">DAG</span><span class="p">(</span><span class="s2">&quot;my_dag&quot;</span><span class="p">)</span> <span class="k">as</span> <span class="n">dag</span><span class="p">:</span>
<span class="n">dummy</span> <span class="o">=</span> <span class="n">DummyOperator</span><span class="p">(</span><span class="n">task_id</span><span class="o">=</span><span class="s2">&quot;dummy&quot;</span><span class="p">)</span>
</pre></div>
</div>
</div>
<div class="section" id="removed-deprecated-import-mechanism">
<h5>Removed deprecated import mechanism<a class="headerlink" href="#removed-deprecated-import-mechanism" title="Permalink to this heading"></a></h5>
<p>The deprecated import mechanism has been removed so the import of modules becomes more consistent and explicit.</p>
<p>For example: <code class="docutils literal notranslate"><span class="pre">from</span> <span class="pre">airflow.operators</span> <span class="pre">import</span> <span class="pre">BashOperator</span></code>
becomes <code class="docutils literal notranslate"><span class="pre">from</span> <span class="pre">airflow.operators.bash_operator</span> <span class="pre">import</span> <span class="pre">BashOperator</span></code></p>
</div>
<div class="section" id="changes-to-sensor-imports">
<h5>Changes to sensor imports<a class="headerlink" href="#changes-to-sensor-imports" title="Permalink to this heading"></a></h5>
<p>Sensors are now accessible via <code class="docutils literal notranslate"><span class="pre">airflow.sensors</span></code> and no longer via <code class="docutils literal notranslate"><span class="pre">airflow.operators.sensors</span></code>.</p>
<p>For example: <code class="docutils literal notranslate"><span class="pre">from</span> <span class="pre">airflow.operators.sensors</span> <span class="pre">import</span> <span class="pre">BaseSensorOperator</span></code>
becomes <code class="docutils literal notranslate"><span class="pre">from</span> <span class="pre">airflow.sensors.base</span> <span class="pre">import</span> <span class="pre">BaseSensorOperator</span></code></p>
</div>
<div class="section" id="skipped-tasks-can-satisfy-wait-for-downstream">
<h5>Skipped tasks can satisfy wait_for_downstream<a class="headerlink" href="#skipped-tasks-can-satisfy-wait-for-downstream" title="Permalink to this heading"></a></h5>
<p>Previously, a task instance with <code class="docutils literal notranslate"><span class="pre">wait_for_downstream=True</span></code> will only run if the downstream task of
the previous task instance is successful. Meanwhile, a task instance with <code class="docutils literal notranslate"><span class="pre">depends_on_past=True</span></code>
will run if the previous task instance is either successful or skipped. These two flags are close siblings
yet they have different behavior. This inconsistency in behavior made the API less intuitive to users.
To maintain consistent behavior, both successful or skipped downstream task can now satisfy the
<code class="docutils literal notranslate"><span class="pre">wait_for_downstream=True</span></code> flag.</p>
</div>
<div class="section" id="airflow-utils-helpers-cross-downstream">
<h5><code class="docutils literal notranslate"><span class="pre">airflow.utils.helpers.cross_downstream</span></code><a class="headerlink" href="#airflow-utils-helpers-cross-downstream" title="Permalink to this heading"></a></h5>
</div>
<div class="section" id="airflow-utils-helpers-chain">
<h5><code class="docutils literal notranslate"><span class="pre">airflow.utils.helpers.chain</span></code><a class="headerlink" href="#airflow-utils-helpers-chain" title="Permalink to this heading"></a></h5>
<p>The <code class="docutils literal notranslate"><span class="pre">chain</span></code> and <code class="docutils literal notranslate"><span class="pre">cross_downstream</span></code> methods are now moved to airflow.models.baseoperator module from
<code class="docutils literal notranslate"><span class="pre">airflow.utils.helpers</span></code> module.</p>
<p>The <code class="docutils literal notranslate"><span class="pre">baseoperator</span></code> module seems to be a better choice to keep
closely coupled methods together. Helpers module is supposed to contain standalone helper methods
that can be imported by all classes.</p>
<p>The <code class="docutils literal notranslate"><span class="pre">chain</span></code> method and <code class="docutils literal notranslate"><span class="pre">cross_downstream</span></code> method both use BaseOperator. If any other package imports
any classes or functions from helpers module, then it automatically has an
implicit dependency to BaseOperator. That can often lead to cyclic dependencies.</p>
<p>More information in <a class="reference external" href="https://issues.apache.org/jira/browse/AIRFLOW-6392">AIRFLOW-6392</a></p>
<p>In Airflow &lt; 2.0 you imported those two methods like this:</p>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">airflow.utils.helpers</span> <span class="kn">import</span> <span class="n">chain</span>
<span class="kn">from</span> <span class="nn">airflow.utils.helpers</span> <span class="kn">import</span> <span class="n">cross_downstream</span>
</pre></div>
</div>
<p>In Airflow 2.0 it should be changed to:</p>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">airflow.models.baseoperator</span> <span class="kn">import</span> <span class="n">chain</span>
<span class="kn">from</span> <span class="nn">airflow.models.baseoperator</span> <span class="kn">import</span> <span class="n">cross_downstream</span>
</pre></div>
</div>
</div>
<div class="section" id="airflow-operators-python-branchpythonoperator">
<h5><code class="docutils literal notranslate"><span class="pre">airflow.operators.python.BranchPythonOperator</span></code><a class="headerlink" href="#airflow-operators-python-branchpythonoperator" title="Permalink to this heading"></a></h5>
<p><code class="docutils literal notranslate"><span class="pre">BranchPythonOperator</span></code> will now return a value equal to the <code class="docutils literal notranslate"><span class="pre">task_id</span></code> of the chosen branch,
where previously it returned None. Since it inherits from BaseOperator it will do an
<code class="docutils literal notranslate"><span class="pre">xcom_push</span></code> of this value if <code class="docutils literal notranslate"><span class="pre">do_xcom_push=True</span></code>. This is useful for downstream decision-making.</p>
</div>
<div class="section" id="airflow-sensors-sql-sensor-sqlsensor">
<h5><code class="docutils literal notranslate"><span class="pre">airflow.sensors.sql_sensor.SqlSensor</span></code><a class="headerlink" href="#airflow-sensors-sql-sensor-sqlsensor" title="Permalink to this heading"></a></h5>
<p>SQLSensor now consistent with python <code class="docutils literal notranslate"><span class="pre">bool()</span></code> function and the <code class="docutils literal notranslate"><span class="pre">allow_null</span></code> parameter has been removed.</p>
<p>It will resolve after receiving any value that is casted to <code class="docutils literal notranslate"><span class="pre">True</span></code> with python <code class="docutils literal notranslate"><span class="pre">bool(value)</span></code>. That
changes the previous response receiving <code class="docutils literal notranslate"><span class="pre">NULL</span></code> or <code class="docutils literal notranslate"><span class="pre">'0'</span></code>. Earlier <code class="docutils literal notranslate"><span class="pre">'0'</span></code> has been treated as success
criteria. <code class="docutils literal notranslate"><span class="pre">NULL</span></code> has been treated depending on value of <code class="docutils literal notranslate"><span class="pre">allow_null</span></code>parameter. But all the previous
behaviour is still achievable setting param <code class="docutils literal notranslate"><span class="pre">success</span></code> to <code class="docutils literal notranslate"><span class="pre">lambda</span> <span class="pre">x:</span> <span class="pre">x</span> <span class="pre">is</span> <span class="pre">None</span> <span class="pre">or</span> <span class="pre">str(x)</span> <span class="pre">not</span> <span class="pre">in</span> <span class="pre">('0',</span> <span class="pre">'')</span></code>.</p>
</div>
<div class="section" id="airflow-operators-trigger-dagrun-triggerdagrunoperator">
<h5><code class="docutils literal notranslate"><span class="pre">airflow.operators.trigger_dagrun.TriggerDagRunOperator</span></code><a class="headerlink" href="#airflow-operators-trigger-dagrun-triggerdagrunoperator" title="Permalink to this heading"></a></h5>
<p>The TriggerDagRunOperator now takes a <code class="docutils literal notranslate"><span class="pre">conf</span></code> argument to which a dict can be provided as conf for the DagRun.
As a result, the <code class="docutils literal notranslate"><span class="pre">python_callable</span></code> argument was removed. PR: <a class="reference external" href="https://github.com/apache/airflow/pull/6317">https://github.com/apache/airflow/pull/6317</a>.</p>
</div>
<div class="section" id="airflow-operators-python-pythonoperator">
<h5><code class="docutils literal notranslate"><span class="pre">airflow.operators.python.PythonOperator</span></code><a class="headerlink" href="#airflow-operators-python-pythonoperator" title="Permalink to this heading"></a></h5>
<p><code class="docutils literal notranslate"><span class="pre">provide_context</span></code> argument on the PythonOperator was removed. The signature of the callable passed to the PythonOperator is now inferred and argument values are always automatically provided. There is no need to explicitly provide or not provide the context anymore. For example:</p>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="k">def</span> <span class="nf">myfunc</span><span class="p">(</span><span class="n">execution_date</span><span class="p">):</span>
<span class="nb">print</span><span class="p">(</span><span class="n">execution_date</span><span class="p">)</span>
<span class="n">python_operator</span> <span class="o">=</span> <span class="n">PythonOperator</span><span class="p">(</span><span class="n">task_id</span><span class="o">=</span><span class="s2">&quot;mytask&quot;</span><span class="p">,</span> <span class="n">python_callable</span><span class="o">=</span><span class="n">myfunc</span><span class="p">,</span> <span class="n">dag</span><span class="o">=</span><span class="n">dag</span><span class="p">)</span>
</pre></div>
</div>
<p>Notice you don’t have to set provide_context=True, variables from the task context are now automatically detected and provided.</p>
<p>All context variables can still be provided with a double-asterisk argument:</p>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="k">def</span> <span class="nf">myfunc</span><span class="p">(</span><span class="o">**</span><span class="n">context</span><span class="p">):</span>
<span class="nb">print</span><span class="p">(</span><span class="n">context</span><span class="p">)</span> <span class="c1"># all variables will be provided to context</span>
<span class="n">python_operator</span> <span class="o">=</span> <span class="n">PythonOperator</span><span class="p">(</span><span class="n">task_id</span><span class="o">=</span><span class="s2">&quot;mytask&quot;</span><span class="p">,</span> <span class="n">python_callable</span><span class="o">=</span><span class="n">myfunc</span><span class="p">)</span>
</pre></div>
</div>
<p>The task context variable names are reserved names in the callable function, hence a clash with <code class="docutils literal notranslate"><span class="pre">op_args</span></code> and <code class="docutils literal notranslate"><span class="pre">op_kwargs</span></code> results in an exception:</p>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="k">def</span> <span class="nf">myfunc</span><span class="p">(</span><span class="n">dag</span><span class="p">):</span>
<span class="c1"># raises a ValueError because &quot;dag&quot; is a reserved name</span>
<span class="c1"># valid signature example: myfunc(mydag)</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">&quot;output&quot;</span><span class="p">)</span>
<span class="n">python_operator</span> <span class="o">=</span> <span class="n">PythonOperator</span><span class="p">(</span>
<span class="n">task_id</span><span class="o">=</span><span class="s2">&quot;mytask&quot;</span><span class="p">,</span>
<span class="n">op_args</span><span class="o">=</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span>
<span class="n">python_callable</span><span class="o">=</span><span class="n">myfunc</span><span class="p">,</span>
<span class="p">)</span>
</pre></div>
</div>
<p>The change is backwards compatible, setting <code class="docutils literal notranslate"><span class="pre">provide_context</span></code> will add the <code class="docutils literal notranslate"><span class="pre">provide_context</span></code> variable to the <code class="docutils literal notranslate"><span class="pre">kwargs</span></code> (but won’t do anything).</p>
<p>PR: <a class="reference external" href="https://github.com/apache/airflow/pull/5990">#5990</a></p>
</div>
<div class="section" id="airflow-sensors-filesystem-filesensor">
<h5><code class="docutils literal notranslate"><span class="pre">airflow.sensors.filesystem.FileSensor</span></code><a class="headerlink" href="#airflow-sensors-filesystem-filesensor" title="Permalink to this heading"></a></h5>
<p>FileSensor is now takes a glob pattern, not just a filename. If the filename you are looking for has <code class="docutils literal notranslate"><span class="pre">*</span></code>, <code class="docutils literal notranslate"><span class="pre">?</span></code>, or <code class="docutils literal notranslate"><span class="pre">[</span></code> in it then you should replace these with <code class="docutils literal notranslate"><span class="pre">[*]</span></code>, <code class="docutils literal notranslate"><span class="pre">[?]</span></code>, and <code class="docutils literal notranslate"><span class="pre">[[]</span></code>.</p>
</div>
<div class="section" id="airflow-operators-subdag-operator-subdagoperator">
<h5><code class="docutils literal notranslate"><span class="pre">airflow.operators.subdag_operator.SubDagOperator</span></code><a class="headerlink" href="#airflow-operators-subdag-operator-subdagoperator" title="Permalink to this heading"></a></h5>
<p><code class="docutils literal notranslate"><span class="pre">SubDagOperator</span></code> is changed to use Airflow scheduler instead of backfill
to schedule tasks in the subdag. User no longer need to specify the executor
in <code class="docutils literal notranslate"><span class="pre">SubDagOperator</span></code>.</p>
</div>
<div class="section" id="airflow-providers-google-cloud-operators-datastore-clouddatastoreexportentitiesoperator">
<h5><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.datastore.CloudDatastoreExportEntitiesOperator</span></code><a class="headerlink" href="#airflow-providers-google-cloud-operators-datastore-clouddatastoreexportentitiesoperator" title="Permalink to this heading"></a></h5>
</div>
<div class="section" id="airflow-providers-google-cloud-operators-datastore-clouddatastoreimportentitiesoperator">
<h5><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.datastore.CloudDatastoreImportEntitiesOperator</span></code><a class="headerlink" href="#airflow-providers-google-cloud-operators-datastore-clouddatastoreimportentitiesoperator" title="Permalink to this heading"></a></h5>
</div>
<div class="section" id="airflow-providers-cncf-kubernetes-operators-kubernetes-pod-kubernetespodoperator">
<h5><code class="docutils literal notranslate"><span class="pre">airflow.providers.cncf.kubernetes.operators.kubernetes_pod.KubernetesPodOperator</span></code><a class="headerlink" href="#airflow-providers-cncf-kubernetes-operators-kubernetes-pod-kubernetespodoperator" title="Permalink to this heading"></a></h5>
</div>
<div class="section" id="airflow-providers-ssh-operators-ssh-sshoperator">
<h5><code class="docutils literal notranslate"><span class="pre">airflow.providers.ssh.operators.ssh.SSHOperator</span></code><a class="headerlink" href="#airflow-providers-ssh-operators-ssh-sshoperator" title="Permalink to this heading"></a></h5>
</div>
<div class="section" id="airflow-providers-microsoft-winrm-operators-winrm-winrmoperator">
<h5><code class="docutils literal notranslate"><span class="pre">airflow.providers.microsoft.winrm.operators.winrm.WinRMOperator</span></code><a class="headerlink" href="#airflow-providers-microsoft-winrm-operators-winrm-winrmoperator" title="Permalink to this heading"></a></h5>
</div>
<div class="section" id="airflow-operators-bash-bashoperator">
<h5><code class="docutils literal notranslate"><span class="pre">airflow.operators.bash.BashOperator</span></code><a class="headerlink" href="#airflow-operators-bash-bashoperator" title="Permalink to this heading"></a></h5>
</div>
<div class="section" id="airflow-providers-docker-operators-docker-dockeroperator">
<h5><code class="docutils literal notranslate"><span class="pre">airflow.providers.docker.operators.docker.DockerOperator</span></code><a class="headerlink" href="#airflow-providers-docker-operators-docker-dockeroperator" title="Permalink to this heading"></a></h5>
</div>
<div class="section" id="airflow-providers-http-operators-http-simplehttpoperator">
<h5><code class="docutils literal notranslate"><span class="pre">airflow.providers.http.operators.http.SimpleHttpOperator</span></code><a class="headerlink" href="#airflow-providers-http-operators-http-simplehttpoperator" title="Permalink to this heading"></a></h5>
<p>The <code class="docutils literal notranslate"><span class="pre">do_xcom_push</span></code> flag (a switch to push the result of an operator to xcom or not) was appearing in different incarnations in different operators. It’s function has been unified under a common name (<code class="docutils literal notranslate"><span class="pre">do_xcom_push</span></code>) on <code class="docutils literal notranslate"><span class="pre">BaseOperator</span></code>. This way it is also easy to globally disable pushing results to xcom.</p>
<p>The following operators were affected:</p>
<ul class="simple">
<li><p>DatastoreExportOperator (Backwards compatible)</p></li>
<li><p>DatastoreImportOperator (Backwards compatible)</p></li>
<li><p>KubernetesPodOperator (Not backwards compatible)</p></li>
<li><p>SSHOperator (Not backwards compatible)</p></li>
<li><p>WinRMOperator (Not backwards compatible)</p></li>
<li><p>BashOperator (Not backwards compatible)</p></li>
<li><p>DockerOperator (Not backwards compatible)</p></li>
<li><p>SimpleHttpOperator (Not backwards compatible)</p></li>
</ul>
<p>See <a class="reference external" href="https://jira.apache.org/jira/browse/AIRFLOW-3249">AIRFLOW-3249</a> for details</p>
</div>
<div class="section" id="airflow-operators-latest-only-operator-latestonlyoperator">
<h5><code class="docutils literal notranslate"><span class="pre">airflow.operators.latest_only_operator.LatestOnlyOperator</span></code><a class="headerlink" href="#airflow-operators-latest-only-operator-latestonlyoperator" title="Permalink to this heading"></a></h5>
<p>In previous versions, the <code class="docutils literal notranslate"><span class="pre">LatestOnlyOperator</span></code> forcefully skipped all (direct and indirect) downstream tasks on its own. From this version on the operator will <strong>only skip direct downstream</strong> tasks and the scheduler will handle skipping any further downstream dependencies.</p>
<p>No change is needed if only the default trigger rule <code class="docutils literal notranslate"><span class="pre">all_success</span></code> is being used.</p>
<p>If the DAG relies on tasks with other trigger rules (i.e. <code class="docutils literal notranslate"><span class="pre">all_done</span></code>) being skipped by the <code class="docutils literal notranslate"><span class="pre">LatestOnlyOperator</span></code>, adjustments to the DAG need to be made to accommodate the change in behaviour, i.e. with additional edges from the <code class="docutils literal notranslate"><span class="pre">LatestOnlyOperator</span></code>.</p>
<p>The goal of this change is to achieve a more consistent and configurable cascading behaviour based on the <code class="docutils literal notranslate"><span class="pre">BaseBranchOperator</span></code> (see <a class="reference external" href="https://jira.apache.org/jira/browse/AIRFLOW-2923">AIRFLOW-2923</a> and <a class="reference external" href="https://jira.apache.org/jira/browse/AIRFLOW-1784">AIRFLOW-1784</a>).</p>
</div>
</div>
<div class="section" id="changes-to-the-core-python-api">
<h4>Changes to the core Python API<a class="headerlink" href="#changes-to-the-core-python-api" title="Permalink to this heading"></a></h4>
<p>We strive to ensure that there are no changes that may affect the end user, and your Python files, but this
release may contain changes that will require changes to your plugins, DAG File or other integration.</p>
<p>Only changes unique to this provider are described here. You should still pay attention to the changes that
have been made to the core (including core operators) as they can affect the integration behavior
of this provider.</p>
<p>This section describes the changes that have been made, and what you need to do to update your Python files.</p>
<div class="section" id="removed-sub-package-imports-from-airflow-init-py">
<h5>Removed sub-package imports from <code class="docutils literal notranslate"><span class="pre">airflow/__init__.py</span></code><a class="headerlink" href="#removed-sub-package-imports-from-airflow-init-py" title="Permalink to this heading"></a></h5>
<p>The imports <code class="docutils literal notranslate"><span class="pre">LoggingMixin</span></code>, <code class="docutils literal notranslate"><span class="pre">conf</span></code>, and <code class="docutils literal notranslate"><span class="pre">AirflowException</span></code> have been removed from <code class="docutils literal notranslate"><span class="pre">airflow/__init__.py</span></code>.
All implicit references of these objects will no longer be valid. To migrate, all usages of each old path must be
replaced with its corresponding new path.</p>
<table class="docutils align-default">
<colgroup>
<col style="width: 50%" />
<col style="width: 50%" />
</colgroup>
<thead>
<tr class="row-odd"><th class="head"><p>Old Path (Implicit Import)</p></th>
<th class="head"><p>New Path (Explicit Import)</p></th>
</tr>
</thead>
<tbody>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.LoggingMixin</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.utils.log.logging_mixin.LoggingMixin</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.conf</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.configuration.conf</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.AirflowException</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.exceptions.AirflowException</span></code></p></td>
</tr>
</tbody>
</table>
</div>
<div class="section" id="variables-removed-from-the-task-instance-context">
<h5>Variables removed from the task instance context<a class="headerlink" href="#variables-removed-from-the-task-instance-context" title="Permalink to this heading"></a></h5>
<p>The following variables were removed from the task instance context:</p>
<ul class="simple">
<li><p>end_date</p></li>
<li><p>latest_date</p></li>
<li><p>tables</p></li>
</ul>
</div>
<div class="section" id="airflow-contrib-utils-weekday">
<h5><code class="docutils literal notranslate"><span class="pre">airflow.contrib.utils.Weekday</span></code><a class="headerlink" href="#airflow-contrib-utils-weekday" title="Permalink to this heading"></a></h5>
<p>Formerly the core code was maintained by the original creators - Airbnb. The code that was in the contrib
package was supported by the community. The project was passed to the Apache community and currently the
entire code is maintained by the community, so now the division has no justification, and it is only due
to historical reasons.</p>
<p>To clean up, <code class="docutils literal notranslate"><span class="pre">Weekday</span></code> enum has been moved from <code class="docutils literal notranslate"><span class="pre">airflow.contrib.utils</span></code> into <code class="docutils literal notranslate"><span class="pre">airflow.utils</span></code> module.</p>
</div>
<div class="section" id="airflow-models-connection-connection">
<h5><code class="docutils literal notranslate"><span class="pre">airflow.models.connection.Connection</span></code><a class="headerlink" href="#airflow-models-connection-connection" title="Permalink to this heading"></a></h5>
<p>The connection module has new deprecated methods:</p>
<ul class="simple">
<li><p><code class="docutils literal notranslate"><span class="pre">Connection.parse_from_uri</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">Connection.log_info</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">Connection.debug_info</span></code></p></li>
</ul>
<p>and one deprecated function:</p>
<ul class="simple">
<li><p><code class="docutils literal notranslate"><span class="pre">parse_netloc_to_hostname</span></code></p></li>
</ul>
<p>Previously, users could create a connection object in two ways</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">conn_1</span> <span class="o">=</span> <span class="n">Connection</span><span class="p">(</span><span class="n">conn_id</span><span class="o">=</span><span class="s2">&quot;conn_a&quot;</span><span class="p">,</span> <span class="n">uri</span><span class="o">=</span><span class="s2">&quot;mysql://AAA/&quot;</span><span class="p">)</span>
<span class="c1"># or</span>
<span class="n">conn_2</span> <span class="o">=</span> <span class="n">Connection</span><span class="p">(</span><span class="n">conn_id</span><span class="o">=</span><span class="s2">&quot;conn_a&quot;</span><span class="p">)</span>
<span class="n">conn_2</span><span class="o">.</span><span class="n">parse_uri</span><span class="p">(</span><span class="n">uri</span><span class="o">=</span><span class="s2">&quot;mysql://AAA/&quot;</span><span class="p">)</span>
</pre></div>
</div>
<p>Now the second way is not supported.</p>
<p><code class="docutils literal notranslate"><span class="pre">Connection.log_info</span></code> and <code class="docutils literal notranslate"><span class="pre">Connection.debug_info</span></code> method have been deprecated. Read each Connection field individually or use the
default representation (<code class="docutils literal notranslate"><span class="pre">__repr__</span></code>).</p>
<p>The old method is still works but can be abandoned at any time. The changes are intended to delete method
that are rarely used.</p>
</div>
<div class="section" id="airflow-models-dag-dag-create-dagrun">
<h5><code class="docutils literal notranslate"><span class="pre">airflow.models.dag.DAG.create_dagrun</span></code><a class="headerlink" href="#airflow-models-dag-dag-create-dagrun" title="Permalink to this heading"></a></h5>
<p>DAG.create_dagrun accepts run_type and does not require run_id
This change is caused by adding <code class="docutils literal notranslate"><span class="pre">run_type</span></code> column to <code class="docutils literal notranslate"><span class="pre">DagRun</span></code>.</p>
<p>Previous signature:</p>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="k">def</span> <span class="nf">create_dagrun</span><span class="p">(</span>
<span class="bp">self</span><span class="p">,</span>
<span class="n">run_id</span><span class="p">,</span>
<span class="n">state</span><span class="p">,</span>
<span class="n">execution_date</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
<span class="n">start_date</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
<span class="n">external_trigger</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
<span class="n">conf</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
<span class="n">session</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
<span class="p">):</span>
<span class="o">...</span>
</pre></div>
</div>
<p>current:</p>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="k">def</span> <span class="nf">create_dagrun</span><span class="p">(</span>
<span class="bp">self</span><span class="p">,</span>
<span class="n">state</span><span class="p">,</span>
<span class="n">execution_date</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
<span class="n">run_id</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
<span class="n">start_date</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
<span class="n">external_trigger</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
<span class="n">conf</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
<span class="n">run_type</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
<span class="n">session</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
<span class="p">):</span>
<span class="o">...</span>
</pre></div>
</div>
<p>If user provides <code class="docutils literal notranslate"><span class="pre">run_id</span></code> then the <code class="docutils literal notranslate"><span class="pre">run_type</span></code> will be derived from it by checking prefix, allowed types
: <code class="docutils literal notranslate"><span class="pre">manual</span></code>, <code class="docutils literal notranslate"><span class="pre">scheduled</span></code>, <code class="docutils literal notranslate"><span class="pre">backfill</span></code> (defined by <code class="docutils literal notranslate"><span class="pre">airflow.utils.types.DagRunType</span></code>).</p>
<p>If user provides <code class="docutils literal notranslate"><span class="pre">run_type</span></code> and <code class="docutils literal notranslate"><span class="pre">execution_date</span></code> then <code class="docutils literal notranslate"><span class="pre">run_id</span></code> is constructed as
<code class="docutils literal notranslate"><span class="pre">{run_type}__{execution_data.isoformat()}</span></code>.</p>
<p>Airflow should construct dagruns using <code class="docutils literal notranslate"><span class="pre">run_type</span></code> and <code class="docutils literal notranslate"><span class="pre">execution_date</span></code>, creation using
<code class="docutils literal notranslate"><span class="pre">run_id</span></code> is preserved for user actions.</p>
</div>
<div class="section" id="airflow-models-dagrun-dagrun">
<h5><code class="docutils literal notranslate"><span class="pre">airflow.models.dagrun.DagRun</span></code><a class="headerlink" href="#airflow-models-dagrun-dagrun" title="Permalink to this heading"></a></h5>
<p>Use DagRunType.SCHEDULED.value instead of DagRun.ID_PREFIX</p>
<p>All the run_id prefixes for different kind of DagRuns have been grouped into a single
enum in <code class="docutils literal notranslate"><span class="pre">airflow.utils.types.DagRunType</span></code>.</p>
<p>Previously, there were defined in various places, example as <code class="docutils literal notranslate"><span class="pre">ID_PREFIX</span></code> class variables for
<code class="docutils literal notranslate"><span class="pre">DagRun</span></code>, <code class="docutils literal notranslate"><span class="pre">BackfillJob</span></code> and in <code class="docutils literal notranslate"><span class="pre">_trigger_dag</span></code> function.</p>
<p>Was:</p>
<div class="highlight-pycon notranslate"><div class="highlight"><pre><span></span><span class="go">&gt;&gt; from airflow.models.dagrun import DagRun</span>
<span class="go">&gt;&gt; DagRun.ID_PREFIX</span>
<span class="go">scheduled__</span>
</pre></div>
</div>
<p>Replaced by:</p>
<div class="highlight-pycon notranslate"><div class="highlight"><pre><span></span><span class="go">&gt;&gt; from airflow.utils.types import DagRunType</span>
<span class="go">&gt;&gt; DagRunType.SCHEDULED.value</span>
<span class="go">scheduled</span>
</pre></div>
</div>
</div>
<div class="section" id="airflow-utils-file-temporarydirectory">
<h5><code class="docutils literal notranslate"><span class="pre">airflow.utils.file.TemporaryDirectory</span></code><a class="headerlink" href="#airflow-utils-file-temporarydirectory" title="Permalink to this heading"></a></h5>
<p>We remove <code class="docutils literal notranslate"><span class="pre">airflow.utils.file.TemporaryDirectory</span></code>
Since Airflow dropped support for Python &lt; 3.5 there’s no need to have this custom
implementation of <code class="docutils literal notranslate"><span class="pre">TemporaryDirectory</span></code> because the same functionality is provided by
<code class="docutils literal notranslate"><span class="pre">tempfile.TemporaryDirectory</span></code>.</p>
<p>Now users instead of <code class="docutils literal notranslate"><span class="pre">import</span> <span class="pre">from</span> <span class="pre">airflow.utils.files</span> <span class="pre">import</span> <span class="pre">TemporaryDirectory</span></code> should
do <code class="docutils literal notranslate"><span class="pre">from</span> <span class="pre">tempfile</span> <span class="pre">import</span> <span class="pre">TemporaryDirectory</span></code>. Both context managers provide the same
interface, thus no additional changes should be required.</p>
</div>
<div class="section" id="airflow-airflowmacroplugin">
<h5><code class="docutils literal notranslate"><span class="pre">airflow.AirflowMacroPlugin</span></code><a class="headerlink" href="#airflow-airflowmacroplugin" title="Permalink to this heading"></a></h5>
<p>We removed <code class="docutils literal notranslate"><span class="pre">airflow.AirflowMacroPlugin</span></code> class. The class was there in airflow package but it has not been used (apparently since 2015).
It has been removed.</p>
</div>
<div class="section" id="airflow-settings-context-manager-dag">
<h5><code class="docutils literal notranslate"><span class="pre">airflow.settings.CONTEXT_MANAGER_DAG</span></code><a class="headerlink" href="#airflow-settings-context-manager-dag" title="Permalink to this heading"></a></h5>
<p>CONTEXT_MANAGER_DAG was removed from settings. It’s role has been taken by <code class="docutils literal notranslate"><span class="pre">DagContext</span></code> in
‘airflow.models.dag’. One of the reasons was that settings should be rather static than store
dynamic context from the DAG, but the main one is that moving the context out of settings allowed to
untangle cyclic imports between DAG, BaseOperator, SerializedDAG, SerializedBaseOperator which was
part of AIRFLOW-6010.</p>
</div>
<div class="section" id="airflow-utils-log-logging-mixin-redirect-stderr">
<h5><code class="docutils literal notranslate"><span class="pre">airflow.utils.log.logging_mixin.redirect_stderr</span></code><a class="headerlink" href="#airflow-utils-log-logging-mixin-redirect-stderr" title="Permalink to this heading"></a></h5>
</div>
<div class="section" id="airflow-utils-log-logging-mixin-redirect-stdout">
<h5><code class="docutils literal notranslate"><span class="pre">airflow.utils.log.logging_mixin.redirect_stdout</span></code><a class="headerlink" href="#airflow-utils-log-logging-mixin-redirect-stdout" title="Permalink to this heading"></a></h5>
<p>Function <code class="docutils literal notranslate"><span class="pre">redirect_stderr</span></code> and <code class="docutils literal notranslate"><span class="pre">redirect_stdout</span></code> from <code class="docutils literal notranslate"><span class="pre">airflow.utils.log.logging_mixin</span></code> module has
been deleted because it can be easily replaced by the standard library.
The functions of the standard library are more flexible and can be used in larger cases.</p>
<p>The code below</p>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">logging</span>
<span class="kn">from</span> <span class="nn">airflow.utils.log.logging_mixin</span> <span class="kn">import</span> <span class="n">redirect_stderr</span><span class="p">,</span> <span class="n">redirect_stdout</span>
<span class="n">logger</span> <span class="o">=</span> <span class="n">logging</span><span class="o">.</span><span class="n">getLogger</span><span class="p">(</span><span class="s2">&quot;custom-logger&quot;</span><span class="p">)</span>
<span class="k">with</span> <span class="n">redirect_stdout</span><span class="p">(</span><span class="n">logger</span><span class="p">,</span> <span class="n">logging</span><span class="o">.</span><span class="n">INFO</span><span class="p">),</span> <span class="n">redirect_stderr</span><span class="p">(</span><span class="n">logger</span><span class="p">,</span> <span class="n">logging</span><span class="o">.</span><span class="n">WARN</span><span class="p">):</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">&quot;I love Airflow&quot;</span><span class="p">)</span>
</pre></div>
</div>
<p>can be replaced by the following code:</p>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">contextlib</span> <span class="kn">import</span> <span class="n">redirect_stdout</span><span class="p">,</span> <span class="n">redirect_stderr</span>
<span class="kn">import</span> <span class="nn">logging</span>
<span class="kn">from</span> <span class="nn">airflow.utils.log.logging_mixin</span> <span class="kn">import</span> <span class="n">StreamLogWriter</span>
<span class="n">logger</span> <span class="o">=</span> <span class="n">logging</span><span class="o">.</span><span class="n">getLogger</span><span class="p">(</span><span class="s2">&quot;custom-logger&quot;</span><span class="p">)</span>
<span class="k">with</span> <span class="n">redirect_stdout</span><span class="p">(</span><span class="n">StreamLogWriter</span><span class="p">(</span><span class="n">logger</span><span class="p">,</span> <span class="n">logging</span><span class="o">.</span><span class="n">INFO</span><span class="p">)),</span> <span class="n">redirect_stderr</span><span class="p">(</span>
<span class="n">StreamLogWriter</span><span class="p">(</span><span class="n">logger</span><span class="p">,</span> <span class="n">logging</span><span class="o">.</span><span class="n">WARN</span><span class="p">)</span>
<span class="p">):</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">&quot;I Love Airflow&quot;</span><span class="p">)</span>
</pre></div>
</div>
</div>
<div class="section" id="airflow-models-baseoperator-baseoperator">
<h5><code class="docutils literal notranslate"><span class="pre">airflow.models.baseoperator.BaseOperator</span></code><a class="headerlink" href="#airflow-models-baseoperator-baseoperator" title="Permalink to this heading"></a></h5>
<p>Now, additional arguments passed to BaseOperator cause an exception. Previous versions of Airflow took additional arguments and displayed a message on the console. When the
message was not noticed by users, it caused very difficult to detect errors.</p>
<p>In order to restore the previous behavior, you must set an <code class="docutils literal notranslate"><span class="pre">True</span></code> in the <code class="docutils literal notranslate"><span class="pre">allow_illegal_arguments</span></code>
option of section <code class="docutils literal notranslate"><span class="pre">[operators]</span></code> in the <code class="docutils literal notranslate"><span class="pre">airflow.cfg</span></code> file. In the future it is possible to completely
delete this option.</p>
</div>
<div class="section" id="airflow-models-dagbag-dagbag">
<h5><code class="docutils literal notranslate"><span class="pre">airflow.models.dagbag.DagBag</span></code><a class="headerlink" href="#airflow-models-dagbag-dagbag" title="Permalink to this heading"></a></h5>
<p>Passing <code class="docutils literal notranslate"><span class="pre">store_serialized_dags</span></code> argument to DagBag.<strong>init</strong> and accessing <code class="docutils literal notranslate"><span class="pre">DagBag.store_serialized_dags</span></code> property
are deprecated and will be removed in future versions.</p>
<p><strong>Previous signature</strong>:</p>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span>
<span class="n">dag_folder</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
<span class="n">include_examples</span><span class="o">=</span><span class="n">conf</span><span class="o">.</span><span class="n">getboolean</span><span class="p">(</span><span class="s2">&quot;core&quot;</span><span class="p">,</span> <span class="s2">&quot;LOAD_EXAMPLES&quot;</span><span class="p">),</span>
<span class="n">safe_mode</span><span class="o">=</span><span class="n">conf</span><span class="o">.</span><span class="n">getboolean</span><span class="p">(</span><span class="s2">&quot;core&quot;</span><span class="p">,</span> <span class="s2">&quot;DAG_DISCOVERY_SAFE_MODE&quot;</span><span class="p">),</span>
<span class="n">store_serialized_dags</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
<span class="p">):</span>
<span class="o">...</span>
</pre></div>
</div>
<p><strong>current</strong>:</p>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span>
<span class="n">dag_folder</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span>
<span class="n">include_examples</span><span class="o">=</span><span class="n">conf</span><span class="o">.</span><span class="n">getboolean</span><span class="p">(</span><span class="s2">&quot;core&quot;</span><span class="p">,</span> <span class="s2">&quot;LOAD_EXAMPLES&quot;</span><span class="p">),</span>
<span class="n">safe_mode</span><span class="o">=</span><span class="n">conf</span><span class="o">.</span><span class="n">getboolean</span><span class="p">(</span><span class="s2">&quot;core&quot;</span><span class="p">,</span> <span class="s2">&quot;DAG_DISCOVERY_SAFE_MODE&quot;</span><span class="p">),</span>
<span class="n">read_dags_from_db</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
<span class="p">):</span>
<span class="o">...</span>
</pre></div>
</div>
<p>If you were using positional arguments, it requires no change but if you were using keyword
arguments, please change <code class="docutils literal notranslate"><span class="pre">store_serialized_dags</span></code> to <code class="docutils literal notranslate"><span class="pre">read_dags_from_db</span></code>.</p>
<p>Similarly, if you were using <code class="docutils literal notranslate"><span class="pre">DagBag().store_serialized_dags</span></code> property, change it to
<code class="docutils literal notranslate"><span class="pre">DagBag().read_dags_from_db</span></code>.</p>
</div>
</div>
<div class="section" id="changes-in-google-provider-package">
<h4>Changes in <code class="docutils literal notranslate"><span class="pre">google</span></code> provider package<a class="headerlink" href="#changes-in-google-provider-package" title="Permalink to this heading"></a></h4>
<p>We strive to ensure that there are no changes that may affect the end user and your Python files, but this
release may contain changes that will require changes to your configuration, DAG Files or other integration
e.g. custom operators.</p>
<p>Only changes unique to this provider are described here. You should still pay attention to the changes that
have been made to the core (including core operators) as they can affect the integration behavior
of this provider.</p>
<p>This section describes the changes that have been made, and what you need to do to update your if
you use operators or hooks which integrate with Google services (including Google Cloud - GCP).</p>
<div class="section" id="direct-impersonation-added-to-operators-communicating-with-google-services">
<h5>Direct impersonation added to operators communicating with Google services<a class="headerlink" href="#direct-impersonation-added-to-operators-communicating-with-google-services" title="Permalink to this heading"></a></h5>
<p><a class="reference external" href="https://cloud.google.com/iam/docs/understanding-service-accounts#directly_impersonating_a_service_account">Directly impersonating a service account</a>
has been made possible for operators communicating with Google services via new argument called <code class="docutils literal notranslate"><span class="pre">impersonation_chain</span></code>
(<code class="docutils literal notranslate"><span class="pre">google_impersonation_chain</span></code> in case of operators that also communicate with services of other cloud providers).
As a result, GCSToS3Operator no longer derivatives from GCSListObjectsOperator.</p>
</div>
<div class="section" id="normalize-gcp-conn-id-for-google-cloud">
<h5>Normalize gcp_conn_id for Google Cloud<a class="headerlink" href="#normalize-gcp-conn-id-for-google-cloud" title="Permalink to this heading"></a></h5>
<p>Previously not all hooks and operators related to Google Cloud use
<code class="docutils literal notranslate"><span class="pre">gcp_conn_id</span></code> as parameter for GCP connection. There is currently one parameter
which apply to most services. Parameters like <code class="docutils literal notranslate"><span class="pre">datastore_conn_id</span></code>, <code class="docutils literal notranslate"><span class="pre">bigquery_conn_id</span></code>,
<code class="docutils literal notranslate"><span class="pre">google_cloud_storage_conn_id</span></code> and similar have been deprecated. Operators that require two connections are not changed.</p>
<p>Following components were affected by normalization:</p>
<ul class="simple">
<li><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.hooks.datastore.DatastoreHook</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.hooks.bigquery.BigQueryHook</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.hooks.gcs.GoogleCloudStorageHook</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.bigquery.BigQueryCheckOperator</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.bigquery.BigQueryValueCheckOperator</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.bigquery.BigQueryIntervalCheckOperator</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.bigquery.BigQueryGetDataOperator</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.bigquery.BigQueryOperator</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.bigquery.BigQueryDeleteDatasetOperator</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.bigquery.BigQueryCreateEmptyDatasetOperator</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.bigquery.BigQueryTableDeleteOperator</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.gcs.GoogleCloudStorageCreateBucketOperator</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.gcs.GoogleCloudStorageListOperator</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.gcs.GoogleCloudStorageDownloadOperator</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.gcs.GoogleCloudStorageDeleteOperator</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.gcs.GoogleCloudStorageBucketCreateAclEntryOperator</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.gcs.GoogleCloudStorageObjectCreateAclEntryOperator</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">airflow.operators.sql_to_gcs.BaseSQLToGoogleCloudStorageOperator</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">airflow.operators.adls_to_gcs.AdlsToGoogleCloudStorageOperator</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">airflow.operators.gcs_to_s3.GoogleCloudStorageToS3Operator</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">airflow.operators.gcs_to_gcs.GoogleCloudStorageToGoogleCloudStorageOperator</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">airflow.operators.bigquery_to_gcs.BigQueryToCloudStorageOperator</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">airflow.operators.local_to_gcs.FileToGoogleCloudStorageOperator</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">airflow.operators.cassandra_to_gcs.CassandraToGoogleCloudStorageOperator</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">airflow.operators.bigquery_to_bigquery.BigQueryToBigQueryOperator</span></code></p></li>
</ul>
</div>
<div class="section" id="changes-to-import-paths-and-names-of-gcp-operators-and-hooks">
<h5>Changes to import paths and names of GCP operators and hooks<a class="headerlink" href="#changes-to-import-paths-and-names-of-gcp-operators-and-hooks" title="Permalink to this heading"></a></h5>
<p>According to <a class="reference external" href="https://cwiki.apache.org/confluence/display/AIRFLOW/AIP-21%3A+Changes+in+import+paths">AIP-21</a>
operators related to Google Cloud has been moved from contrib to core.
The following table shows changes in import paths.</p>
<table class="docutils align-default">
<colgroup>
<col style="width: 50%" />
<col style="width: 50%" />
</colgroup>
<thead>
<tr class="row-odd"><th class="head"><p>Old path</p></th>
<th class="head"><p>New path</p></th>
</tr>
</thead>
<tbody>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.hooks.bigquery_hook.BigQueryHook</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.hooks.bigquery.BigQueryHook</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.hooks.datastore_hook.DatastoreHook</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.hooks.datastore.DatastoreHook</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.hooks.gcp_bigtable_hook.BigtableHook</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.hooks.bigtable.BigtableHook</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.hooks.gcp_cloud_build_hook.CloudBuildHook</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.hooks.cloud_build.CloudBuildHook</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.hooks.gcp_container_hook.GKEClusterHook</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.hooks.kubernetes_engine.GKEHook</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.hooks.gcp_compute_hook.GceHook</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.hooks.compute.ComputeEngineHook</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.hooks.gcp_dataflow_hook.DataFlowHook</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.hooks.dataflow.DataflowHook</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.hooks.gcp_dataproc_hook.DataProcHook</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.hooks.dataproc.DataprocHook</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.hooks.gcp_dlp_hook.CloudDLPHook</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.hooks.dlp.CloudDLPHook</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.hooks.gcp_function_hook.GcfHook</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.hooks.functions.CloudFunctionsHook</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.hooks.gcp_kms_hook.GoogleCloudKMSHook</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.hooks.kms.CloudKMSHook</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.hooks.gcp_mlengine_hook.MLEngineHook</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.hooks.mlengine.MLEngineHook</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.hooks.gcp_natural_language_hook.CloudNaturalLanguageHook</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.hooks.natural_language.CloudNaturalLanguageHook</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.hooks.gcp_pubsub_hook.PubSubHook</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.hooks.pubsub.PubSubHook</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.hooks.gcp_speech_to_text_hook.GCPSpeechToTextHook</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.hooks.speech_to_text.CloudSpeechToTextHook</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.hooks.gcp_spanner_hook.CloudSpannerHook</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.hooks.spanner.SpannerHook</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.hooks.gcp_sql_hook.CloudSqlDatabaseHook</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.hooks.cloud_sql.CloudSQLDatabaseHook</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.hooks.gcp_sql_hook.CloudSqlHook</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.hooks.cloud_sql.CloudSQLHook</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.hooks.gcp_tasks_hook.CloudTasksHook</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.hooks.tasks.CloudTasksHook</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.hooks.gcp_text_to_speech_hook.GCPTextToSpeechHook</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.hooks.text_to_speech.CloudTextToSpeechHook</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.hooks.gcp_transfer_hook.GCPTransferServiceHook</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.hooks.cloud_storage_transfer_service.CloudDataTransferServiceHook</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.hooks.gcp_translate_hook.CloudTranslateHook</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.hooks.translate.CloudTranslateHook</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.hooks.gcp_video_intelligence_hook.CloudVideoIntelligenceHook</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.hooks.video_intelligence.CloudVideoIntelligenceHook</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.hooks.gcp_vision_hook.CloudVisionHook</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.hooks.vision.CloudVisionHook</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.hooks.gcs_hook.GoogleCloudStorageHook</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.hooks.gcs.GCSHook</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.adls_to_gcs.AdlsToGoogleCloudStorageOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.operators.adls_to_gcs.AdlsToGoogleCloudStorageOperator</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.bigquery_check_operator.BigQueryCheckOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.bigquery.BigQueryCheckOperator</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.bigquery_check_operator.BigQueryIntervalCheckOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.bigquery.BigQueryIntervalCheckOperator</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.bigquery_check_operator.BigQueryValueCheckOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.bigquery.BigQueryValueCheckOperator</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.bigquery_get_data.BigQueryGetDataOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.bigquery.BigQueryGetDataOperator</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.bigquery_operator.BigQueryCreateEmptyDatasetOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.bigquery.BigQueryCreateEmptyDatasetOperator</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.bigquery_operator.BigQueryCreateEmptyTableOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.bigquery.BigQueryCreateEmptyTableOperator</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.bigquery_operator.BigQueryCreateExternalTableOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.bigquery.BigQueryCreateExternalTableOperator</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.bigquery_operator.BigQueryDeleteDatasetOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.bigquery.BigQueryDeleteDatasetOperator</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.bigquery_operator.BigQueryOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.bigquery.BigQueryExecuteQueryOperator</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.bigquery_table_delete_operator.BigQueryTableDeleteOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.bigquery.BigQueryDeleteTableOperator</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.bigquery_to_bigquery.BigQueryToBigQueryOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.operators.bigquery_to_bigquery.BigQueryToBigQueryOperator</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.bigquery_to_gcs.BigQueryToCloudStorageOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.operators.bigquery_to_gcs.BigQueryToCloudStorageOperator</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.bigquery_to_mysql_operator.BigQueryToMySqlOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.operators.bigquery_to_mysql.BigQueryToMySqlOperator</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.dataflow_operator.DataFlowJavaOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.dataflow.DataFlowJavaOperator</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.dataflow_operator.DataFlowPythonOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.dataflow.DataFlowPythonOperator</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.dataflow_operator.DataflowTemplateOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.dataflow.DataflowTemplateOperator</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.dataproc_operator.DataProcHadoopOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.dataproc.DataprocSubmitHadoopJobOperator</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.dataproc_operator.DataProcHiveOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.dataproc.DataprocSubmitHiveJobOperator</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.dataproc_operator.DataProcJobBaseOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.dataproc.DataprocJobBaseOperator</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.dataproc_operator.DataProcPigOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.dataproc.DataprocSubmitPigJobOperator</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.dataproc_operator.DataProcPySparkOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.dataproc.DataprocSubmitPySparkJobOperator</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.dataproc_operator.DataProcSparkOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.dataproc.DataprocSubmitSparkJobOperator</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.dataproc_operator.DataProcSparkSqlOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.dataproc.DataprocSubmitSparkSqlJobOperator</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.dataproc_operator.DataprocClusterCreateOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.dataproc.DataprocCreateClusterOperator</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.dataproc_operator.DataprocClusterDeleteOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.dataproc.DataprocDeleteClusterOperator</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.dataproc_operator.DataprocClusterScaleOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.dataproc.DataprocScaleClusterOperator</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.dataproc_operator.DataprocOperationBaseOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.dataproc.DataprocOperationBaseOperator</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.dataproc_operator.DataprocWorkflowTemplateInstantiateInlineOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.dataproc.DataprocInstantiateInlineWorkflowTemplateOperator</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.dataproc_operator.DataprocWorkflowTemplateInstantiateOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.dataproc.DataprocInstantiateWorkflowTemplateOperator</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.datastore_export_operator.DatastoreExportOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.datastore.DatastoreExportOperator</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.datastore_import_operator.DatastoreImportOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.datastore.DatastoreImportOperator</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.file_to_gcs.FileToGoogleCloudStorageOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.transfers.local_to_gcs.FileToGoogleCloudStorageOperator</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.gcp_bigtable_operator.BigtableClusterUpdateOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.bigtable.BigtableUpdateClusterOperator</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.gcp_bigtable_operator.BigtableInstanceCreateOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.bigtable.BigtableCreateInstanceOperator</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.gcp_bigtable_operator.BigtableInstanceDeleteOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.bigtable.BigtableDeleteInstanceOperator</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.gcp_bigtable_operator.BigtableTableCreateOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.bigtable.BigtableCreateTableOperator</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.gcp_bigtable_operator.BigtableTableDeleteOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.bigtable.BigtableDeleteTableOperator</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.gcp_bigtable_operator.BigtableTableWaitForReplicationSensor</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.sensors.bigtable.BigtableTableReplicationCompletedSensor</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.gcp_cloud_build_operator.CloudBuildCreateBuildOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.cloud_build.CloudBuildCreateBuildOperator</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.gcp_compute_operator.GceBaseOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.compute.GceBaseOperator</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.gcp_compute_operator.GceInstanceGroupManagerUpdateTemplateOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.compute.GceInstanceGroupManagerUpdateTemplateOperator</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.gcp_compute_operator.GceInstanceStartOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.compute.GceInstanceStartOperator</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.gcp_compute_operator.GceInstanceStopOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.compute.GceInstanceStopOperator</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.gcp_compute_operator.GceInstanceTemplateCopyOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.compute.GceInstanceTemplateCopyOperator</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.gcp_compute_operator.GceSetMachineTypeOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.compute.GceSetMachineTypeOperator</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.gcp_container_operator.GKEClusterCreateOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.kubernetes_engine.GKECreateClusterOperator</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.gcp_container_operator.GKEClusterDeleteOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.kubernetes_engine.GKEDeleteClusterOperator</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.gcp_container_operator.GKEPodOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.kubernetes_engine.GKEStartPodOperator</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.gcp_dlp_operator.CloudDLPCancelDLPJobOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.dlp.CloudDLPCancelDLPJobOperator</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.gcp_dlp_operator.CloudDLPCreateDLPJobOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.dlp.CloudDLPCreateDLPJobOperator</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.gcp_dlp_operator.CloudDLPCreateDeidentifyTemplateOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.dlp.CloudDLPCreateDeidentifyTemplateOperator</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.gcp_dlp_operator.CloudDLPCreateInspectTemplateOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.dlp.CloudDLPCreateInspectTemplateOperator</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.gcp_dlp_operator.CloudDLPCreateJobTriggerOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.dlp.CloudDLPCreateJobTriggerOperator</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.gcp_dlp_operator.CloudDLPCreateStoredInfoTypeOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.dlp.CloudDLPCreateStoredInfoTypeOperator</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.gcp_dlp_operator.CloudDLPDeidentifyContentOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.dlp.CloudDLPDeidentifyContentOperator</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.gcp_dlp_operator.CloudDLPDeleteDeidentifyTemplateOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.dlp.CloudDLPDeleteDeidentifyTemplateOperator</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.gcp_dlp_operator.CloudDLPDeleteDlpJobOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.dlp.CloudDLPDeleteDLPJobOperator</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.gcp_dlp_operator.CloudDLPDeleteInspectTemplateOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.dlp.CloudDLPDeleteInspectTemplateOperator</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.gcp_dlp_operator.CloudDLPDeleteJobTriggerOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.dlp.CloudDLPDeleteJobTriggerOperator</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.gcp_dlp_operator.CloudDLPDeleteStoredInfoTypeOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.dlp.CloudDLPDeleteStoredInfoTypeOperator</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.gcp_dlp_operator.CloudDLPGetDeidentifyTemplateOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.dlp.CloudDLPGetDeidentifyTemplateOperator</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.gcp_dlp_operator.CloudDLPGetDlpJobOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.dlp.CloudDLPGetDLPJobOperator</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.gcp_dlp_operator.CloudDLPGetInspectTemplateOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.dlp.CloudDLPGetInspectTemplateOperator</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.gcp_dlp_operator.CloudDLPGetJobTripperOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.dlp.CloudDLPGetJobTriggerOperator</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.gcp_dlp_operator.CloudDLPGetStoredInfoTypeOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.dlp.CloudDLPGetStoredInfoTypeOperator</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.gcp_dlp_operator.CloudDLPInspectContentOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.dlp.CloudDLPInspectContentOperator</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.gcp_dlp_operator.CloudDLPListDeidentifyTemplatesOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.dlp.CloudDLPListDeidentifyTemplatesOperator</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.gcp_dlp_operator.CloudDLPListDlpJobsOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.dlp.CloudDLPListDLPJobsOperator</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.gcp_dlp_operator.CloudDLPListInfoTypesOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.dlp.CloudDLPListInfoTypesOperator</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.gcp_dlp_operator.CloudDLPListInspectTemplatesOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.dlp.CloudDLPListInspectTemplatesOperator</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.gcp_dlp_operator.CloudDLPListJobTriggersOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.dlp.CloudDLPListJobTriggersOperator</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.gcp_dlp_operator.CloudDLPListStoredInfoTypesOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.dlp.CloudDLPListStoredInfoTypesOperator</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.gcp_dlp_operator.CloudDLPRedactImageOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.dlp.CloudDLPRedactImageOperator</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.gcp_dlp_operator.CloudDLPReidentifyContentOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.dlp.CloudDLPReidentifyContentOperator</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.gcp_dlp_operator.CloudDLPUpdateDeidentifyTemplateOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.dlp.CloudDLPUpdateDeidentifyTemplateOperator</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.gcp_dlp_operator.CloudDLPUpdateInspectTemplateOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.dlp.CloudDLPUpdateInspectTemplateOperator</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.gcp_dlp_operator.CloudDLPUpdateJobTriggerOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.dlp.CloudDLPUpdateJobTriggerOperator</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.gcp_dlp_operator.CloudDLPUpdateStoredInfoTypeOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.dlp.CloudDLPUpdateStoredInfoTypeOperator</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.gcp_function_operator.GcfFunctionDeleteOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.functions.GcfFunctionDeleteOperator</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.gcp_function_operator.GcfFunctionDeployOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.functions.GcfFunctionDeployOperator</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.gcp_natural_language_operator.CloudNaturalLanguageAnalyzeEntitiesOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.natural_language.CloudNaturalLanguageAnalyzeEntitiesOperator</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.gcp_natural_language_operator.CloudNaturalLanguageAnalyzeEntitySentimentOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.natural_language.CloudNaturalLanguageAnalyzeEntitySentimentOperator</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.gcp_natural_language_operator.CloudNaturalLanguageAnalyzeSentimentOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.natural_language.CloudNaturalLanguageAnalyzeSentimentOperator</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.gcp_natural_language_operator.CloudNaturalLanguageClassifyTextOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.natural_language.CloudNaturalLanguageClassifyTextOperator</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.gcp_spanner_operator.CloudSpannerInstanceDatabaseDeleteOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.spanner.SpannerDeleteDatabaseInstanceOperator</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.gcp_spanner_operator.CloudSpannerInstanceDatabaseDeployOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.spanner.SpannerDeployDatabaseInstanceOperator</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.gcp_spanner_operator.CloudSpannerInstanceDatabaseQueryOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.spanner.SpannerQueryDatabaseInstanceOperator</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.gcp_spanner_operator.CloudSpannerInstanceDatabaseUpdateOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.spanner.SpannerUpdateDatabaseInstanceOperator</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.gcp_spanner_operator.CloudSpannerInstanceDeleteOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.spanner.SpannerDeleteInstanceOperator</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.gcp_spanner_operator.CloudSpannerInstanceDeployOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.spanner.SpannerDeployInstanceOperator</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.gcp_speech_to_text_operator.GcpSpeechToTextRecognizeSpeechOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.speech_to_text.CloudSpeechToTextRecognizeSpeechOperator</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.gcp_text_to_speech_operator.GcpTextToSpeechSynthesizeOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.text_to_speech.CloudTextToSpeechSynthesizeOperator</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.gcp_transfer_operator.GcpTransferServiceJobCreateOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.cloud_storage_transfer_service.CloudDataTransferServiceCreateJobOperator</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.gcp_transfer_operator.GcpTransferServiceJobDeleteOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.cloud_storage_transfer_service.CloudDataTransferServiceDeleteJobOperator</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.gcp_transfer_operator.GcpTransferServiceJobUpdateOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.cloud_storage_transfer_service.CloudDataTransferServiceUpdateJobOperator</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.gcp_transfer_operator.GcpTransferServiceOperationCancelOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.cloud_storage_transfer_service.CloudDataTransferServiceCancelOperationOperator</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.gcp_transfer_operator.GcpTransferServiceOperationGetOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.cloud_storage_transfer_service.CloudDataTransferServiceGetOperationOperator</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.gcp_transfer_operator.GcpTransferServiceOperationPauseOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.cloud_storage_transfer_service.CloudDataTransferServicePauseOperationOperator</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.gcp_transfer_operator.GcpTransferServiceOperationResumeOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.cloud_storage_transfer_service.CloudDataTransferServiceResumeOperationOperator</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.gcp_transfer_operator.GcpTransferServiceOperationsListOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.cloud_storage_transfer_service.CloudDataTransferServiceListOperationsOperator</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.gcp_transfer_operator.GoogleCloudStorageToGoogleCloudStorageTransferOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.cloud_storage_transfer_service.CloudDataTransferServiceGCSToGCSOperator</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.gcp_translate_operator.CloudTranslateTextOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.translate.CloudTranslateTextOperator</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.gcp_translate_speech_operator.GcpTranslateSpeechOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.translate_speech.GcpTranslateSpeechOperator</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.gcp_video_intelligence_operator.CloudVideoIntelligenceDetectVideoExplicitContentOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.video_intelligence.CloudVideoIntelligenceDetectVideoExplicitContentOperator</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.gcp_video_intelligence_operator.CloudVideoIntelligenceDetectVideoLabelsOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.video_intelligence.CloudVideoIntelligenceDetectVideoLabelsOperator</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.gcp_video_intelligence_operator.CloudVideoIntelligenceDetectVideoShotsOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.video_intelligence.CloudVideoIntelligenceDetectVideoShotsOperator</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.gcp_vision_operator.CloudVisionAddProductToProductSetOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.vision.CloudVisionAddProductToProductSetOperator</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.gcp_vision_operator.CloudVisionAnnotateImageOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.vision.CloudVisionImageAnnotateOperator</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.gcp_vision_operator.CloudVisionDetectDocumentTextOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.vision.CloudVisionTextDetectOperator</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.gcp_vision_operator.CloudVisionDetectImageLabelsOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.vision.CloudVisionDetectImageLabelsOperator</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.gcp_vision_operator.CloudVisionDetectImageSafeSearchOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.vision.CloudVisionDetectImageSafeSearchOperator</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.gcp_vision_operator.CloudVisionDetectTextOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.vision.CloudVisionDetectTextOperator</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.gcp_vision_operator.CloudVisionProductCreateOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.vision.CloudVisionCreateProductOperator</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.gcp_vision_operator.CloudVisionProductDeleteOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.vision.CloudVisionDeleteProductOperator</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.gcp_vision_operator.CloudVisionProductGetOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.vision.CloudVisionGetProductOperator</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.gcp_vision_operator.CloudVisionProductSetCreateOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.vision.CloudVisionCreateProductSetOperator</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.gcp_vision_operator.CloudVisionProductSetDeleteOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.vision.CloudVisionDeleteProductSetOperator</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.gcp_vision_operator.CloudVisionProductSetGetOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.vision.CloudVisionGetProductSetOperator</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.gcp_vision_operator.CloudVisionProductSetUpdateOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.vision.CloudVisionUpdateProductSetOperator</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.gcp_vision_operator.CloudVisionProductUpdateOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.vision.CloudVisionUpdateProductOperator</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.gcp_vision_operator.CloudVisionReferenceImageCreateOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.vision.CloudVisionCreateReferenceImageOperator</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.gcp_vision_operator.CloudVisionRemoveProductFromProductSetOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.vision.CloudVisionRemoveProductFromProductSetOperator</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.gcs_acl_operator.GoogleCloudStorageBucketCreateAclEntryOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.gcs.GCSBucketCreateAclEntryOperator</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.gcs_acl_operator.GoogleCloudStorageObjectCreateAclEntryOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.gcs.GCSObjectCreateAclEntryOperator</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.gcs_delete_operator.GoogleCloudStorageDeleteOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.gcs.GCSDeleteObjectsOperator</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.gcs_download_operator.GoogleCloudStorageDownloadOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.gcs.GCSToLocalFilesystemOperator</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.gcs_list_operator.GoogleCloudStorageListOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.gcs.GCSListObjectsOperator</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.gcs_operator.GoogleCloudStorageCreateBucketOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.gcs.GCSCreateBucketOperator</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.gcs_to_bq.GoogleCloudStorageToBigQueryOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.operators.gcs_to_bq.GoogleCloudStorageToBigQueryOperator</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.gcs_to_gcs.GoogleCloudStorageToGoogleCloudStorageOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.operators.gcs_to_gcs.GoogleCloudStorageToGoogleCloudStorageOperator</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.gcs_to_s3.GoogleCloudStorageToS3Operator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.operators.gcs_to_s3.GCSToS3Operator</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.mlengine_operator.MLEngineBatchPredictionOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.mlengine.MLEngineStartBatchPredictionJobOperator</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.mlengine_operator.MLEngineModelOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.mlengine.MLEngineManageModelOperator</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.mlengine_operator.MLEngineTrainingOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.mlengine.MLEngineStartTrainingJobOperator</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.mlengine_operator.MLEngineVersionOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.mlengine.MLEngineManageVersionOperator</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.mssql_to_gcs.MsSqlToGoogleCloudStorageOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.operators.mssql_to_gcs.MsSqlToGoogleCloudStorageOperator</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.mysql_to_gcs.MySqlToGoogleCloudStorageOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.operators.mysql_to_gcs.MySqlToGoogleCloudStorageOperator</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.postgres_to_gcs_operator.PostgresToGoogleCloudStorageOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.operators.postgres_to_gcs.PostgresToGoogleCloudStorageOperator</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.pubsub_operator.PubSubPublishOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.pubsub.PubSubPublishMessageOperator</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.pubsub_operator.PubSubSubscriptionCreateOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.pubsub.PubSubCreateSubscriptionOperator</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.pubsub_operator.PubSubSubscriptionDeleteOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.pubsub.PubSubDeleteSubscriptionOperator</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.pubsub_operator.PubSubTopicCreateOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.pubsub.PubSubCreateTopicOperator</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.pubsub_operator.PubSubTopicDeleteOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.pubsub.PubSubDeleteTopicOperator</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.sql_to_gcs.BaseSQLToGoogleCloudStorageOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.operators.sql_to_gcs.BaseSQLToGoogleCloudStorageOperator</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.sensors.bigquery_sensor.BigQueryTableSensor</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.sensors.bigquery.BigQueryTableExistenceSensor</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.sensors.gcp_transfer_sensor.GCPTransferServiceWaitForJobStatusSensor</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.sensors.cloud_storage_transfer_service.DataTransferServiceJobStatusSensor</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.sensors.gcs_sensor.GoogleCloudStorageObjectSensor</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.sensors.gcs.GCSObjectExistenceSensor</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.sensors.gcs_sensor.GoogleCloudStorageObjectUpdatedSensor</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.sensors.gcs.GCSObjectUpdateSensor</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.sensors.gcs_sensor.GoogleCloudStoragePrefixSensor</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.sensors.gcs.GCSObjectsWithPrefixExistenceSensor</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.sensors.gcs_sensor.GoogleCloudStorageUploadSessionCompleteSensor</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.sensors.gcs.GCSUploadSessionCompleteSensor</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.sensors.pubsub_sensor.PubSubPullSensor</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.sensors.pubsub.PubSubPullSensor</span></code></p></td>
</tr>
</tbody>
</table>
</div>
<div class="section" id="unify-default-conn-id-for-google-cloud">
<h5>Unify default conn_id for Google Cloud<a class="headerlink" href="#unify-default-conn-id-for-google-cloud" title="Permalink to this heading"></a></h5>
<p>Previously not all hooks and operators related to Google Cloud use
<code class="docutils literal notranslate"><span class="pre">google_cloud_default</span></code> as a default conn_id. There is currently one default
variant. Values like <code class="docutils literal notranslate"><span class="pre">google_cloud_storage_default</span></code>, <code class="docutils literal notranslate"><span class="pre">bigquery_default</span></code>,
<code class="docutils literal notranslate"><span class="pre">google_cloud_datastore_default</span></code> have been deprecated. The configuration of
existing relevant connections in the database have been preserved. To use those
deprecated GCP conn_id, you need to explicitly pass their conn_id into
operators/hooks. Otherwise, <code class="docutils literal notranslate"><span class="pre">google_cloud_default</span></code> will be used as GCP’s conn_id
by default.</p>
</div>
<div class="section" id="airflow-providers-google-cloud-hooks-dataflow-dataflowhook">
<h5><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.hooks.dataflow.DataflowHook</span></code><a class="headerlink" href="#airflow-providers-google-cloud-hooks-dataflow-dataflowhook" title="Permalink to this heading"></a></h5>
</div>
<div class="section" id="airflow-providers-google-cloud-operators-dataflow-dataflowcreatejavajoboperator">
<h5><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.dataflow.DataflowCreateJavaJobOperator</span></code><a class="headerlink" href="#airflow-providers-google-cloud-operators-dataflow-dataflowcreatejavajoboperator" title="Permalink to this heading"></a></h5>
</div>
<div class="section" id="airflow-providers-google-cloud-operators-dataflow-dataflowtemplatedjobstartoperator">
<h5><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.dataflow.DataflowTemplatedJobStartOperator</span></code><a class="headerlink" href="#airflow-providers-google-cloud-operators-dataflow-dataflowtemplatedjobstartoperator" title="Permalink to this heading"></a></h5>
</div>
<div class="section" id="airflow-providers-google-cloud-operators-dataflow-dataflowcreatepythonjoboperator">
<h5><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.dataflow.DataflowCreatePythonJobOperator</span></code><a class="headerlink" href="#airflow-providers-google-cloud-operators-dataflow-dataflowcreatepythonjoboperator" title="Permalink to this heading"></a></h5>
<p>To use project_id argument consistently across GCP hooks and operators, we did the following changes:</p>
<ul class="simple">
<li><dl class="simple">
<dt>Changed order of arguments in DataflowHook.start_python_dataflow. Uses</dt><dd><p>with positional arguments may break.</p>
</dd>
</dl>
</li>
<li><dl class="simple">
<dt>Changed order of arguments in DataflowHook.is_job_dataflow_running. Uses</dt><dd><p>with positional arguments may break.</p>
</dd>
</dl>
</li>
<li><dl class="simple">
<dt>Changed order of arguments in DataflowHook.cancel_job. Uses</dt><dd><p>with positional arguments may break.</p>
</dd>
</dl>
</li>
<li><dl class="simple">
<dt>Added optional project_id argument to DataflowCreateJavaJobOperator</dt><dd><p>constructor.</p>
</dd>
</dl>
</li>
<li><dl class="simple">
<dt>Added optional project_id argument to DataflowTemplatedJobStartOperator</dt><dd><p>constructor.</p>
</dd>
</dl>
</li>
<li><dl class="simple">
<dt>Added optional project_id argument to DataflowCreatePythonJobOperator</dt><dd><p>constructor.</p>
</dd>
</dl>
</li>
</ul>
</div>
<div class="section" id="airflow-providers-google-cloud-sensors-gcs-gcsuploadsessioncompletesensor">
<h5><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.sensors.gcs.GCSUploadSessionCompleteSensor</span></code><a class="headerlink" href="#airflow-providers-google-cloud-sensors-gcs-gcsuploadsessioncompletesensor" title="Permalink to this heading"></a></h5>
<p>To provide more precise control in handling of changes to objects in
underlying GCS Bucket the constructor of this sensor now has changed.</p>
<ul class="simple">
<li><p>Old Behavior: This constructor used to optionally take <code class="docutils literal notranslate"><span class="pre">previous_num_objects:</span> <span class="pre">int</span></code>.</p></li>
<li><p>New replacement constructor kwarg: <code class="docutils literal notranslate"><span class="pre">previous_objects:</span> <span class="pre">Optional[Set[str]]</span></code>.</p></li>
</ul>
<p>Most users would not specify this argument because the bucket begins empty
and the user wants to treat any files as new.</p>
<p>Example of Updating usage of this sensor:
Users who used to call:</p>
<p><code class="docutils literal notranslate"><span class="pre">GCSUploadSessionCompleteSensor(bucket='my_bucket',</span> <span class="pre">prefix='my_prefix',</span> <span class="pre">previous_num_objects=1)</span></code></p>
<p>Will now call:</p>
<p><code class="docutils literal notranslate"><span class="pre">GCSUploadSessionCompleteSensor(bucket='my_bucket',</span> <span class="pre">prefix='my_prefix',</span> <span class="pre">previous_num_objects={'.keep'})</span></code></p>
<p>Where ‘.keep’ is a single file at your prefix that the sensor should not consider new.</p>
</div>
<div class="section" id="airflow-providers-google-cloud-hooks-bigquery-bigquerybasecursor">
<h5><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.hooks.bigquery.BigQueryBaseCursor</span></code><a class="headerlink" href="#airflow-providers-google-cloud-hooks-bigquery-bigquerybasecursor" title="Permalink to this heading"></a></h5>
</div>
<div class="section" id="airflow-providers-google-cloud-hooks-bigquery-bigqueryhook">
<h5><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.hooks.bigquery.BigQueryHook</span></code><a class="headerlink" href="#airflow-providers-google-cloud-hooks-bigquery-bigqueryhook" title="Permalink to this heading"></a></h5>
<p>To simplify BigQuery operators (no need of <code class="docutils literal notranslate"><span class="pre">Cursor</span></code>) and standardize usage of hooks within all GCP integration methods from <code class="docutils literal notranslate"><span class="pre">BiqQueryBaseCursor</span></code>
were moved to <code class="docutils literal notranslate"><span class="pre">BigQueryHook</span></code>. Using them by from <code class="docutils literal notranslate"><span class="pre">Cursor</span></code> object is still possible due to preserved backward compatibility but they will raise <code class="docutils literal notranslate"><span class="pre">DeprecationWarning</span></code>.
The following methods were moved:</p>
<table class="docutils align-default">
<colgroup>
<col style="width: 50%" />
<col style="width: 50%" />
</colgroup>
<thead>
<tr class="row-odd"><th class="head"><p>Old path</p></th>
<th class="head"><p>New path</p></th>
</tr>
</thead>
<tbody>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.hooks.bigquery.BigQueryBaseCursor.cancel_query</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.hooks.bigquery.BigQueryHook.cancel_query</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.hooks.bigquery.BigQueryBaseCursor.create_empty_dataset</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.hooks.bigquery.BigQueryHook.create_empty_dataset</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.hooks.bigquery.BigQueryBaseCursor.create_empty_table</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.hooks.bigquery.BigQueryHook.create_empty_table</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.hooks.bigquery.BigQueryBaseCursor.create_external_table</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.hooks.bigquery.BigQueryHook.create_external_table</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.hooks.bigquery.BigQueryBaseCursor.delete_dataset</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.hooks.bigquery.BigQueryHook.delete_dataset</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.hooks.bigquery.BigQueryBaseCursor.get_dataset</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.hooks.bigquery.BigQueryHook.get_dataset</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.hooks.bigquery.BigQueryBaseCursor.get_dataset_tables</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.hooks.bigquery.BigQueryHook.get_dataset_tables</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.hooks.bigquery.BigQueryBaseCursor.get_dataset_tables_list</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.hooks.bigquery.BigQueryHook.get_dataset_tables_list</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.hooks.bigquery.BigQueryBaseCursor.get_datasets_list</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.hooks.bigquery.BigQueryHook.get_datasets_list</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.hooks.bigquery.BigQueryBaseCursor.get_schema</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.hooks.bigquery.BigQueryHook.get_schema</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.hooks.bigquery.BigQueryBaseCursor.get_tabledata</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.hooks.bigquery.BigQueryHook.get_tabledata</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.hooks.bigquery.BigQueryBaseCursor.insert_all</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.hooks.bigquery.BigQueryHook.insert_all</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.hooks.bigquery.BigQueryBaseCursor.patch_dataset</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.hooks.bigquery.BigQueryHook.patch_dataset</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.hooks.bigquery.BigQueryBaseCursor.patch_table</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.hooks.bigquery.BigQueryHook.patch_table</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.hooks.bigquery.BigQueryBaseCursor.poll_job_complete</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.hooks.bigquery.BigQueryHook.poll_job_complete</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.hooks.bigquery.BigQueryBaseCursor.run_copy</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.hooks.bigquery.BigQueryHook.run_copy</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.hooks.bigquery.BigQueryBaseCursor.run_extract</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.hooks.bigquery.BigQueryHook.run_extract</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.hooks.bigquery.BigQueryBaseCursor.run_grant_dataset_view_access</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.hooks.bigquery.BigQueryHook.run_grant_dataset_view_access</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.hooks.bigquery.BigQueryBaseCursor.run_load</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.hooks.bigquery.BigQueryHook.run_load</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.hooks.bigquery.BigQueryBaseCursor.run_query</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.hooks.bigquery.BigQueryHook.run_query</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.hooks.bigquery.BigQueryBaseCursor.run_table_delete</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.hooks.bigquery.BigQueryHook.run_table_delete</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.hooks.bigquery.BigQueryBaseCursor.run_table_upsert</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.hooks.bigquery.BigQueryHook.run_table_upsert</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.hooks.bigquery.BigQueryBaseCursor.run_with_configuration</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.hooks.bigquery.BigQueryHook.run_with_configuration</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.hooks.bigquery.BigQueryBaseCursor.update_dataset</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.hooks.bigquery.BigQueryHook.update_dataset</span></code></p></td>
</tr>
</tbody>
</table>
</div>
<div class="section" id="id68">
<h5><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.hooks.bigquery.BigQueryBaseCursor</span></code><a class="headerlink" href="#id68" title="Permalink to this heading"></a></h5>
<p>Since BigQuery is the part of the GCP it was possible to simplify the code by handling the exceptions
by usage of the <code class="docutils literal notranslate"><span class="pre">airflow.providers.google.common.hooks.base.GoogleBaseHook.catch_http_exception</span></code> decorator however it changes
exceptions raised by the following methods:</p>
<ul class="simple">
<li><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.hooks.bigquery.BigQueryBaseCursor.run_table_delete</span></code> raises <code class="docutils literal notranslate"><span class="pre">AirflowException</span></code> instead of <code class="docutils literal notranslate"><span class="pre">Exception</span></code>.</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.hooks.bigquery.BigQueryBaseCursor.create_empty_dataset</span></code> raises <code class="docutils literal notranslate"><span class="pre">AirflowException</span></code> instead of <code class="docutils literal notranslate"><span class="pre">ValueError</span></code>.</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.hooks.bigquery.BigQueryBaseCursor.get_dataset</span></code> raises <code class="docutils literal notranslate"><span class="pre">AirflowException</span></code> instead of <code class="docutils literal notranslate"><span class="pre">ValueError</span></code>.</p></li>
</ul>
</div>
<div class="section" id="airflow-providers-google-cloud-operators-bigquery-bigquerycreateemptytableoperator">
<h5><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.bigquery.BigQueryCreateEmptyTableOperator</span></code><a class="headerlink" href="#airflow-providers-google-cloud-operators-bigquery-bigquerycreateemptytableoperator" title="Permalink to this heading"></a></h5>
</div>
<div class="section" id="airflow-providers-google-cloud-operators-bigquery-bigquerycreateemptydatasetoperator">
<h5><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.bigquery.BigQueryCreateEmptyDatasetOperator</span></code><a class="headerlink" href="#airflow-providers-google-cloud-operators-bigquery-bigquerycreateemptydatasetoperator" title="Permalink to this heading"></a></h5>
<p>Idempotency was added to <code class="docutils literal notranslate"><span class="pre">BigQueryCreateEmptyTableOperator</span></code> and <code class="docutils literal notranslate"><span class="pre">BigQueryCreateEmptyDatasetOperator</span></code>.
But to achieve that try / except clause was removed from <code class="docutils literal notranslate"><span class="pre">create_empty_dataset</span></code> and <code class="docutils literal notranslate"><span class="pre">create_empty_table</span></code>
methods of <code class="docutils literal notranslate"><span class="pre">BigQueryHook</span></code>.</p>
</div>
<div class="section" id="id69">
<h5><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.hooks.dataflow.DataflowHook</span></code><a class="headerlink" href="#id69" title="Permalink to this heading"></a></h5>
</div>
<div class="section" id="airflow-providers-google-cloud-hooks-mlengine-mlenginehook">
<h5><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.hooks.mlengine.MLEngineHook</span></code><a class="headerlink" href="#airflow-providers-google-cloud-hooks-mlengine-mlenginehook" title="Permalink to this heading"></a></h5>
</div>
<div class="section" id="airflow-providers-google-cloud-hooks-pubsub-pubsubhook">
<h5><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.hooks.pubsub.PubSubHook</span></code><a class="headerlink" href="#airflow-providers-google-cloud-hooks-pubsub-pubsubhook" title="Permalink to this heading"></a></h5>
<p>The change in GCP operators implies that GCP Hooks for those operators require now keyword parameters rather
than positional ones in all methods where <code class="docutils literal notranslate"><span class="pre">project_id</span></code> is used. The methods throw an explanatory exception
in case they are called using positional parameters.</p>
<p>Other GCP hooks are unaffected.</p>
</div>
<div class="section" id="id70">
<h5><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.hooks.pubsub.PubSubHook</span></code><a class="headerlink" href="#id70" title="Permalink to this heading"></a></h5>
</div>
<div class="section" id="airflow-providers-google-cloud-operators-pubsub-pubsubtopiccreateoperator">
<h5><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.pubsub.PubSubTopicCreateOperator</span></code><a class="headerlink" href="#airflow-providers-google-cloud-operators-pubsub-pubsubtopiccreateoperator" title="Permalink to this heading"></a></h5>
</div>
<div class="section" id="airflow-providers-google-cloud-operators-pubsub-pubsubsubscriptioncreateoperator">
<h5><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.pubsub.PubSubSubscriptionCreateOperator</span></code><a class="headerlink" href="#airflow-providers-google-cloud-operators-pubsub-pubsubsubscriptioncreateoperator" title="Permalink to this heading"></a></h5>
</div>
<div class="section" id="airflow-providers-google-cloud-operators-pubsub-pubsubtopicdeleteoperator">
<h5><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.pubsub.PubSubTopicDeleteOperator</span></code><a class="headerlink" href="#airflow-providers-google-cloud-operators-pubsub-pubsubtopicdeleteoperator" title="Permalink to this heading"></a></h5>
</div>
<div class="section" id="airflow-providers-google-cloud-operators-pubsub-pubsubsubscriptiondeleteoperator">
<h5><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.pubsub.PubSubSubscriptionDeleteOperator</span></code><a class="headerlink" href="#airflow-providers-google-cloud-operators-pubsub-pubsubsubscriptiondeleteoperator" title="Permalink to this heading"></a></h5>
</div>
<div class="section" id="airflow-providers-google-cloud-operators-pubsub-pubsubpublishoperator">
<h5><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.pubsub.PubSubPublishOperator</span></code><a class="headerlink" href="#airflow-providers-google-cloud-operators-pubsub-pubsubpublishoperator" title="Permalink to this heading"></a></h5>
</div>
<div class="section" id="airflow-providers-google-cloud-sensors-pubsub-pubsubpullsensor">
<h5><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.sensors.pubsub.PubSubPullSensor</span></code><a class="headerlink" href="#airflow-providers-google-cloud-sensors-pubsub-pubsubpullsensor" title="Permalink to this heading"></a></h5>
<p>In the <code class="docutils literal notranslate"><span class="pre">PubSubPublishOperator</span></code> and <code class="docutils literal notranslate"><span class="pre">PubSubHook.publsh</span></code> method the data field in a message should be bytestring (utf-8 encoded) rather than base64 encoded string.</p>
<p>Due to the normalization of the parameters within GCP operators and hooks a parameters like <code class="docutils literal notranslate"><span class="pre">project</span></code> or <code class="docutils literal notranslate"><span class="pre">topic_project</span></code>
are deprecated and will be substituted by parameter <code class="docutils literal notranslate"><span class="pre">project_id</span></code>.
In <code class="docutils literal notranslate"><span class="pre">PubSubHook.create_subscription</span></code> hook method in the parameter <code class="docutils literal notranslate"><span class="pre">subscription_project</span></code> is replaced by <code class="docutils literal notranslate"><span class="pre">subscription_project_id</span></code>.
Template fields are updated accordingly and old ones may not work.</p>
<p>It is required now to pass key-word only arguments to <code class="docutils literal notranslate"><span class="pre">PubSub</span></code> hook.</p>
<p>These changes are not backward compatible.</p>
</div>
<div class="section" id="airflow-providers-google-cloud-operators-kubernetes-engine-gkestartpodoperator">
<h5><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.kubernetes_engine.GKEStartPodOperator</span></code><a class="headerlink" href="#airflow-providers-google-cloud-operators-kubernetes-engine-gkestartpodoperator" title="Permalink to this heading"></a></h5>
<p>The gcp_conn_id parameter in GKEPodOperator is required. In previous versions, it was possible to pass
the <code class="docutils literal notranslate"><span class="pre">None</span></code> value to the <code class="docutils literal notranslate"><span class="pre">gcp_conn_id</span></code> in the GKEStartPodOperator
operator, which resulted in credentials being determined according to the
<a class="reference external" href="https://cloud.google.com/docs/authentication/production">Application Default Credentials</a> strategy.</p>
<p>Now this parameter requires a value. To restore the previous behavior, configure the connection without
specifying the service account.</p>
<p>Detailed information about connection management is available:
<a class="reference external" href="https://airflow.apache.org/howto/connection/gcp.html">Google Cloud Connection</a>.</p>
</div>
<div class="section" id="airflow-providers-google-cloud-hooks-gcs-gcshook">
<h5><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.hooks.gcs.GCSHook</span></code><a class="headerlink" href="#airflow-providers-google-cloud-hooks-gcs-gcshook" title="Permalink to this heading"></a></h5>
<ul class="simple">
<li><p>The following parameters have been replaced in all the methods in GCSHook:</p>
<ul>
<li><p><code class="docutils literal notranslate"><span class="pre">bucket</span></code> is changed to <code class="docutils literal notranslate"><span class="pre">bucket_name</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">object</span></code> is changed to <code class="docutils literal notranslate"><span class="pre">object_name</span></code></p></li>
</ul>
</li>
<li><p>The <code class="docutils literal notranslate"><span class="pre">maxResults</span></code> parameter in <code class="docutils literal notranslate"><span class="pre">GoogleCloudStorageHook.list</span></code> has been renamed to <code class="docutils literal notranslate"><span class="pre">max_results</span></code> for consistency.</p></li>
</ul>
</div>
<div class="section" id="airflow-providers-google-cloud-operators-dataproc-dataprocsubmitpigjoboperator">
<h5><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.dataproc.DataprocSubmitPigJobOperator</span></code><a class="headerlink" href="#airflow-providers-google-cloud-operators-dataproc-dataprocsubmitpigjoboperator" title="Permalink to this heading"></a></h5>
</div>
<div class="section" id="airflow-providers-google-cloud-operators-dataproc-dataprocsubmithivejoboperator">
<h5><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.dataproc.DataprocSubmitHiveJobOperator</span></code><a class="headerlink" href="#airflow-providers-google-cloud-operators-dataproc-dataprocsubmithivejoboperator" title="Permalink to this heading"></a></h5>
</div>
<div class="section" id="airflow-providers-google-cloud-operators-dataproc-dataprocsubmitsparksqljoboperator">
<h5><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.dataproc.DataprocSubmitSparkSqlJobOperator</span></code><a class="headerlink" href="#airflow-providers-google-cloud-operators-dataproc-dataprocsubmitsparksqljoboperator" title="Permalink to this heading"></a></h5>
</div>
<div class="section" id="airflow-providers-google-cloud-operators-dataproc-dataprocsubmitsparkjoboperator">
<h5><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.dataproc.DataprocSubmitSparkJobOperator</span></code><a class="headerlink" href="#airflow-providers-google-cloud-operators-dataproc-dataprocsubmitsparkjoboperator" title="Permalink to this heading"></a></h5>
</div>
<div class="section" id="airflow-providers-google-cloud-operators-dataproc-dataprocsubmithadoopjoboperator">
<h5><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.dataproc.DataprocSubmitHadoopJobOperator</span></code><a class="headerlink" href="#airflow-providers-google-cloud-operators-dataproc-dataprocsubmithadoopjoboperator" title="Permalink to this heading"></a></h5>
</div>
<div class="section" id="airflow-providers-google-cloud-operators-dataproc-dataprocsubmitpysparkjoboperator">
<h5><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.dataproc.DataprocSubmitPySparkJobOperator</span></code><a class="headerlink" href="#airflow-providers-google-cloud-operators-dataproc-dataprocsubmitpysparkjoboperator" title="Permalink to this heading"></a></h5>
<p>The ‘properties’ and ‘jars’ properties for the Dataproc related operators (<code class="docutils literal notranslate"><span class="pre">DataprocXXXOperator</span></code>) have been renamed from
<code class="docutils literal notranslate"><span class="pre">dataproc_xxxx_properties</span></code> and <code class="docutils literal notranslate"><span class="pre">dataproc_xxx_jars</span></code> to <code class="docutils literal notranslate"><span class="pre">dataproc_properties</span></code>
and <code class="docutils literal notranslate"><span class="pre">dataproc_jars</span></code>respectively.
Arguments for dataproc_properties dataproc_jars</p>
</div>
<div class="section" id="airflow-providers-google-cloud-operators-cloud-storage-transfer-service-clouddatatransferservicecreatejoboperator">
<h5><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.cloud_storage_transfer_service.CloudDataTransferServiceCreateJobOperator</span></code><a class="headerlink" href="#airflow-providers-google-cloud-operators-cloud-storage-transfer-service-clouddatatransferservicecreatejoboperator" title="Permalink to this heading"></a></h5>
<p>To obtain pylint compatibility the <code class="docutils literal notranslate"><span class="pre">filter</span></code> argument in <code class="docutils literal notranslate"><span class="pre">CloudDataTransferServiceCreateJobOperator</span></code>
has been renamed to <code class="docutils literal notranslate"><span class="pre">request_filter</span></code>.</p>
</div>
<div class="section" id="airflow-providers-google-cloud-hooks-cloud-storage-transfer-service-clouddatatransferservicehook">
<h5><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.hooks.cloud_storage_transfer_service.CloudDataTransferServiceHook</span></code><a class="headerlink" href="#airflow-providers-google-cloud-hooks-cloud-storage-transfer-service-clouddatatransferservicehook" title="Permalink to this heading"></a></h5>
<blockquote>
<div><p>To obtain pylint compatibility the <code class="docutils literal notranslate"><span class="pre">filter</span></code> argument in <code class="docutils literal notranslate"><span class="pre">CloudDataTransferServiceHook.list_transfer_job</span></code> and
<code class="docutils literal notranslate"><span class="pre">CloudDataTransferServiceHook.list_transfer_operations</span></code> has been renamed to <code class="docutils literal notranslate"><span class="pre">request_filter</span></code>.</p>
</div></blockquote>
</div>
<div class="section" id="id71">
<h5><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.hooks.bigquery.BigQueryHook</span></code><a class="headerlink" href="#id71" title="Permalink to this heading"></a></h5>
<p>In general all hook methods are decorated with <code class="docutils literal notranslate"><span class="pre">&#64;GoogleBaseHook.fallback_to_default_project_id</span></code> thus
parameters to hook can only be passed via keyword arguments.</p>
<ul class="simple">
<li><p><code class="docutils literal notranslate"><span class="pre">create_empty_table</span></code> method accepts now <code class="docutils literal notranslate"><span class="pre">table_resource</span></code> parameter. If provided all
other parameters are ignored.</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">create_empty_dataset</span></code> will now use values from <code class="docutils literal notranslate"><span class="pre">dataset_reference</span></code> instead of raising error
if parameters were passed in <code class="docutils literal notranslate"><span class="pre">dataset_reference</span></code> and as arguments to method. Additionally validation
of <code class="docutils literal notranslate"><span class="pre">dataset_reference</span></code> is done using <code class="docutils literal notranslate"><span class="pre">Dataset.from_api_repr</span></code>. Exception and log messages has been
changed.</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">update_dataset</span></code> requires now new <code class="docutils literal notranslate"><span class="pre">fields</span></code> argument (breaking change)</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">delete_dataset</span></code> has new signature (dataset_id, project_id, …)
previous one was (project_id, dataset_id, …) (breaking change)</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">get_tabledata</span></code> returns list of rows instead of API response in dict format. This method is deprecated in
favor of <code class="docutils literal notranslate"><span class="pre">list_rows</span></code>. (breaking change)</p></li>
</ul>
</div>
<div class="section" id="airflow-providers-google-cloud-hooks-cloud-build-cloudbuildhook">
<h5><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.hooks.cloud_build.CloudBuildHook</span></code><a class="headerlink" href="#airflow-providers-google-cloud-hooks-cloud-build-cloudbuildhook" title="Permalink to this heading"></a></h5>
</div>
<div class="section" id="airflow-providers-google-cloud-operators-cloud-build-cloudbuildcreatebuildoperator">
<h5><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.cloud_build.CloudBuildCreateBuildOperator</span></code><a class="headerlink" href="#airflow-providers-google-cloud-operators-cloud-build-cloudbuildcreatebuildoperator" title="Permalink to this heading"></a></h5>
<dl class="simple">
<dt>The <code class="docutils literal notranslate"><span class="pre">api_version</span></code> has been removed and will not be used since we migrate <code class="docutils literal notranslate"><span class="pre">CloudBuildHook</span></code> from using</dt><dd><p>Discovery API to native google-cloud-build python library.</p>
</dd>
<dt>The <code class="docutils literal notranslate"><span class="pre">body</span></code> parameter in <code class="docutils literal notranslate"><span class="pre">CloudBuildCreateBuildOperator</span></code> has been deprecated.</dt><dd><p>Instead, you should pass body using the <code class="docutils literal notranslate"><span class="pre">build</span></code> parameter.</p>
</dd>
</dl>
</div>
<div class="section" id="airflow-providers-google-cloud-hooks-dataflow-dataflowhook-start-python-dataflow">
<h5><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.hooks.dataflow.DataflowHook.start_python_dataflow</span></code><a class="headerlink" href="#airflow-providers-google-cloud-hooks-dataflow-dataflowhook-start-python-dataflow" title="Permalink to this heading"></a></h5>
</div>
<div class="section" id="id72">
<h5><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.hooks.dataflow.DataflowHook.start_python_dataflow</span></code><a class="headerlink" href="#id72" title="Permalink to this heading"></a></h5>
</div>
<div class="section" id="id73">
<h5><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.dataflow.DataflowCreatePythonJobOperator</span></code><a class="headerlink" href="#id73" title="Permalink to this heading"></a></h5>
<p>Change python3 as Dataflow Hooks/Operators default interpreter</p>
<p>Now the <code class="docutils literal notranslate"><span class="pre">py_interpreter</span></code> argument for DataFlow Hooks/Operators has been changed from python2 to python3.</p>
</div>
<div class="section" id="airflow-providers-google-common-hooks-base-google-googlebasehook">
<h5><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.common.hooks.base_google.GoogleBaseHook</span></code><a class="headerlink" href="#airflow-providers-google-common-hooks-base-google-googlebasehook" title="Permalink to this heading"></a></h5>
<p>To simplify the code, the decorator provide_gcp_credential_file has been moved from the inner-class.</p>
<p>Instead of <code class="docutils literal notranslate"><span class="pre">&#64;GoogleBaseHook._Decorators.provide_gcp_credential_file</span></code>,
you should write <code class="docutils literal notranslate"><span class="pre">&#64;GoogleBaseHook.provide_gcp_credential_file</span></code></p>
</div>
<div class="section" id="airflow-providers-google-cloud-operators-dataproc-dataproccreateclusteroperator">
<h5><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.dataproc.DataprocCreateClusterOperator</span></code><a class="headerlink" href="#airflow-providers-google-cloud-operators-dataproc-dataproccreateclusteroperator" title="Permalink to this heading"></a></h5>
<p>It is highly recommended to have 1TB+ disk size for Dataproc to have sufficient throughput:
<a class="reference external" href="https://cloud.google.com/compute/docs/disks/performance">https://cloud.google.com/compute/docs/disks/performance</a></p>
<p>Hence, the default value for <code class="docutils literal notranslate"><span class="pre">master_disk_size</span></code> in <code class="docutils literal notranslate"><span class="pre">DataprocCreateClusterOperator</span></code> has been changed from 500GB to 1TB.</p>
</div>
</div>
<div class="section" id="generating-cluster-config">
<h4>Generating Cluster Config<a class="headerlink" href="#generating-cluster-config" title="Permalink to this heading"></a></h4>
<p>If you are upgrading from Airflow 1.10.x and are not using <strong>CLUSTER_CONFIG</strong>,
You can easily generate config using <strong>make()</strong> of <code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.dataproc.ClusterGenerator</span></code></p>
<p>This has been proved specially useful if you are using <strong>metadata</strong> argument from older API, refer <a class="reference external" href="https://github.com/apache/airflow/issues/16911">AIRFLOW-16911</a> for details.</p>
<p>eg. your cluster creation may look like this in <strong>v1.10.x</strong></p>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">path</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot;gs://goog-dataproc-initialization-actions-us-central1/python/pip-install.sh&quot;</span>
<span class="n">create_cluster</span> <span class="o">=</span> <span class="n">DataprocClusterCreateOperator</span><span class="p">(</span>
<span class="n">task_id</span><span class="o">=</span><span class="s2">&quot;create_dataproc_cluster&quot;</span><span class="p">,</span>
<span class="n">cluster_name</span><span class="o">=</span><span class="s2">&quot;test&quot;</span><span class="p">,</span>
<span class="n">project_id</span><span class="o">=</span><span class="s2">&quot;test&quot;</span><span class="p">,</span>
<span class="n">zone</span><span class="o">=</span><span class="s2">&quot;us-central1-a&quot;</span><span class="p">,</span>
<span class="n">region</span><span class="o">=</span><span class="s2">&quot;us-central1&quot;</span><span class="p">,</span>
<span class="n">master_machine_type</span><span class="o">=</span><span class="s2">&quot;n1-standard-4&quot;</span><span class="p">,</span>
<span class="n">worker_machine_type</span><span class="o">=</span><span class="s2">&quot;n1-standard-4&quot;</span><span class="p">,</span>
<span class="n">num_workers</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span>
<span class="n">storage_bucket</span><span class="o">=</span><span class="s2">&quot;test_bucket&quot;</span><span class="p">,</span>
<span class="n">init_actions_uris</span><span class="o">=</span><span class="p">[</span><span class="n">path</span><span class="p">],</span>
<span class="n">metadata</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;PIP_PACKAGES&quot;</span><span class="p">:</span> <span class="s2">&quot;pyyaml requests pandas openpyxl&quot;</span><span class="p">},</span>
<span class="p">)</span>
</pre></div>
</div>
<p>After upgrading to <strong>v2.x.x</strong> and using <strong>CLUSTER_CONFIG</strong>, it will look like followed:</p>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">path</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot;gs://goog-dataproc-initialization-actions-us-central1/python/pip-install.sh&quot;</span>
<span class="n">CLUSTER_CONFIG</span> <span class="o">=</span> <span class="n">ClusterGenerator</span><span class="p">(</span>
<span class="n">project_id</span><span class="o">=</span><span class="s2">&quot;test&quot;</span><span class="p">,</span>
<span class="n">zone</span><span class="o">=</span><span class="s2">&quot;us-central1-a&quot;</span><span class="p">,</span>
<span class="n">master_machine_type</span><span class="o">=</span><span class="s2">&quot;n1-standard-4&quot;</span><span class="p">,</span>
<span class="n">worker_machine_type</span><span class="o">=</span><span class="s2">&quot;n1-standard-4&quot;</span><span class="p">,</span>
<span class="n">num_workers</span><span class="o">=</span><span class="mi">2</span><span class="p">,</span>
<span class="n">storage_bucket</span><span class="o">=</span><span class="s2">&quot;test&quot;</span><span class="p">,</span>
<span class="n">init_actions_uris</span><span class="o">=</span><span class="p">[</span><span class="n">path</span><span class="p">],</span>
<span class="n">metadata</span><span class="o">=</span><span class="p">{</span><span class="s2">&quot;PIP_PACKAGES&quot;</span><span class="p">:</span> <span class="s2">&quot;pyyaml requests pandas openpyxl&quot;</span><span class="p">},</span>
<span class="p">)</span><span class="o">.</span><span class="n">make</span><span class="p">()</span>
<span class="n">create_cluster_operator</span> <span class="o">=</span> <span class="n">DataprocClusterCreateOperator</span><span class="p">(</span>
<span class="n">task_id</span><span class="o">=</span><span class="s2">&quot;create_dataproc_cluster&quot;</span><span class="p">,</span>
<span class="n">cluster_name</span><span class="o">=</span><span class="s2">&quot;test&quot;</span><span class="p">,</span>
<span class="n">project_id</span><span class="o">=</span><span class="s2">&quot;test&quot;</span><span class="p">,</span>
<span class="n">region</span><span class="o">=</span><span class="s2">&quot;us-central1&quot;</span><span class="p">,</span>
<span class="n">cluster_config</span><span class="o">=</span><span class="n">CLUSTER_CONFIG</span><span class="p">,</span>
<span class="p">)</span>
</pre></div>
</div>
<div class="section" id="airflow-providers-google-cloud-operators-bigquery-bigquerygetdatasettablesoperator">
<h5><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.bigquery.BigQueryGetDatasetTablesOperator</span></code><a class="headerlink" href="#airflow-providers-google-cloud-operators-bigquery-bigquerygetdatasettablesoperator" title="Permalink to this heading"></a></h5>
<p>We changed signature of <code class="docutils literal notranslate"><span class="pre">BigQueryGetDatasetTablesOperator</span></code>.</p>
<p>Before:</p>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span>
<span class="n">dataset_id</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span>
<span class="n">dataset_resource</span><span class="p">:</span> <span class="nb">dict</span><span class="p">,</span>
<span class="c1"># ...</span>
<span class="p">):</span>
<span class="o">...</span>
</pre></div>
</div>
<p>After:</p>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span>
<span class="n">dataset_resource</span><span class="p">:</span> <span class="nb">dict</span><span class="p">,</span>
<span class="n">dataset_id</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
<span class="c1"># ...</span>
<span class="p">):</span>
<span class="o">...</span>
</pre></div>
</div>
</div>
</div>
<div class="section" id="changes-in-amazon-provider-package">
<h4>Changes in <code class="docutils literal notranslate"><span class="pre">amazon</span></code> provider package<a class="headerlink" href="#changes-in-amazon-provider-package" title="Permalink to this heading"></a></h4>
<p>We strive to ensure that there are no changes that may affect the end user, and your Python files, but this
release may contain changes that will require changes to your configuration, DAG Files or other integration
e.g. custom operators.</p>
<p>Only changes unique to this provider are described here. You should still pay attention to the changes that
have been made to the core (including core operators) as they can affect the integration behavior
of this provider.</p>
<p>This section describes the changes that have been made, and what you need to do to update your if
you use operators or hooks which integrate with Amazon services (including Amazon Web Service - AWS).</p>
<div class="section" id="migration-of-aws-components">
<h5>Migration of AWS components<a class="headerlink" href="#migration-of-aws-components" title="Permalink to this heading"></a></h5>
<p>All AWS components (hooks, operators, sensors, example DAGs) will be grouped together as decided in
<a class="reference external" href="https://cwiki.apache.org/confluence/display/AIRFLOW/AIP-21%3A+Changes+in+import+paths">AIP-21</a>. Migrated
components remain backwards compatible but raise a <code class="docutils literal notranslate"><span class="pre">DeprecationWarning</span></code> when imported from the old module.
Migrated are:</p>
<table class="docutils align-default">
<colgroup>
<col style="width: 50%" />
<col style="width: 50%" />
</colgroup>
<thead>
<tr class="row-odd"><th class="head"><p>Old path</p></th>
<th class="head"><p>New path</p></th>
</tr>
</thead>
<tbody>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.hooks.S3_hook.S3Hook</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.amazon.aws.hooks.s3.S3Hook</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.hooks.aws_athena_hook.AWSAthenaHook</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.amazon.aws.hooks.athena.AWSAthenaHook</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.hooks.aws_lambda_hook.AwsLambdaHook</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.amazon.aws.hooks.lambda_function.AwsLambdaHook</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.hooks.aws_sqs_hook.SQSHook</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.amazon.aws.hooks.sqs.SQSHook</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.hooks.aws_sns_hook.AwsSnsHook</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.amazon.aws.hooks.sns.AwsSnsHook</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.aws_athena_operator.AWSAthenaOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.amazon.aws.operators.athena.AWSAthenaOperator</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.awsbatch.AWSBatchOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.amazon.aws.operators.batch.AwsBatchOperator</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.awsbatch.BatchProtocol</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.amazon.aws.hooks.batch_client.AwsBatchProtocol</span></code></p></td>
</tr>
<tr class="row-even"><td><p>private attrs and methods on <code class="docutils literal notranslate"><span class="pre">AWSBatchOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.amazon.aws.hooks.batch_client.AwsBatchClient</span></code></p></td>
</tr>
<tr class="row-odd"><td><p>n/a</p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.amazon.aws.hooks.batch_waiters.AwsBatchWaiters</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.aws_sqs_publish_operator.SQSPublishOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.amazon.aws.operators.sqs.SQSPublishOperator</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.aws_sns_publish_operator.SnsPublishOperator</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.amazon.aws.operators.sns.SnsPublishOperator</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.sensors.aws_athena_sensor.AthenaSensor</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.amazon.aws.sensors.athena.AthenaSensor</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">airflow.contrib.sensors.aws_sqs_sensor.SQSSensor</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow.providers.amazon.aws.sensors.sqs.SQSSensor</span></code></p></td>
</tr>
</tbody>
</table>
</div>
<div class="section" id="airflow-providers-amazon-aws-hooks-emr-emrhook">
<h5><code class="docutils literal notranslate"><span class="pre">airflow.providers.amazon.aws.hooks.emr.EmrHook</span></code><a class="headerlink" href="#airflow-providers-amazon-aws-hooks-emr-emrhook" title="Permalink to this heading"></a></h5>
</div>
<div class="section" id="airflow-providers-amazon-aws-operators-emr-add-steps-emraddstepsoperator">
<h5><code class="docutils literal notranslate"><span class="pre">airflow.providers.amazon.aws.operators.emr_add_steps.EmrAddStepsOperator</span></code><a class="headerlink" href="#airflow-providers-amazon-aws-operators-emr-add-steps-emraddstepsoperator" title="Permalink to this heading"></a></h5>
</div>
<div class="section" id="airflow-providers-amazon-aws-operators-emr-create-job-flow-emrcreatejobflowoperator">
<h5><code class="docutils literal notranslate"><span class="pre">airflow.providers.amazon.aws.operators.emr_create_job_flow.EmrCreateJobFlowOperator</span></code><a class="headerlink" href="#airflow-providers-amazon-aws-operators-emr-create-job-flow-emrcreatejobflowoperator" title="Permalink to this heading"></a></h5>
</div>
<div class="section" id="airflow-providers-amazon-aws-operators-emr-terminate-job-flow-emrterminatejobflowoperator">
<h5><code class="docutils literal notranslate"><span class="pre">airflow.providers.amazon.aws.operators.emr_terminate_job_flow.EmrTerminateJobFlowOperator</span></code><a class="headerlink" href="#airflow-providers-amazon-aws-operators-emr-terminate-job-flow-emrterminatejobflowoperator" title="Permalink to this heading"></a></h5>
<p>The default value for the <a class="reference external" href="https://airflow.apache.org/howto/manage-connections.html#amazon-web-services">aws_conn_id</a> was accidentally set to ‘s3_default’ instead of ‘aws_default’ in some of the emr operators in previous
versions. This was leading to EmrStepSensor not being able to find their corresponding emr cluster. With the new
changes in the EmrAddStepsOperator, EmrTerminateJobFlowOperator and EmrCreateJobFlowOperator this issue is
solved.</p>
</div>
<div class="section" id="airflow-providers-amazon-aws-operators-batch-awsbatchoperator">
<h5><code class="docutils literal notranslate"><span class="pre">airflow.providers.amazon.aws.operators.batch.AwsBatchOperator</span></code><a class="headerlink" href="#airflow-providers-amazon-aws-operators-batch-awsbatchoperator" title="Permalink to this heading"></a></h5>
<p>The <code class="docutils literal notranslate"><span class="pre">AwsBatchOperator</span></code> was refactored to extract an <code class="docutils literal notranslate"><span class="pre">AwsBatchClient</span></code> (and inherit from it). The
changes are mostly backwards compatible and clarify the public API for these classes; some
private methods on <code class="docutils literal notranslate"><span class="pre">AwsBatchOperator</span></code> for polling a job status were relocated and renamed
to surface new public methods on <code class="docutils literal notranslate"><span class="pre">AwsBatchClient</span></code> (and via inheritance on <code class="docutils literal notranslate"><span class="pre">AwsBatchOperator</span></code>). A
couple of job attributes are renamed on an instance of <code class="docutils literal notranslate"><span class="pre">AwsBatchOperator</span></code>; these were mostly
used like private attributes but they were surfaced in the public API, so any use of them needs
to be updated as follows:</p>
<ul class="simple">
<li><p><code class="docutils literal notranslate"><span class="pre">AwsBatchOperator().jobId</span></code> -&gt; <code class="docutils literal notranslate"><span class="pre">AwsBatchOperator().job_id</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">AwsBatchOperator().jobName</span></code> -&gt; <code class="docutils literal notranslate"><span class="pre">AwsBatchOperator().job_name</span></code></p></li>
</ul>
<p>The <code class="docutils literal notranslate"><span class="pre">AwsBatchOperator</span></code> gets a new option to define a custom model for waiting on job status changes.
The <code class="docutils literal notranslate"><span class="pre">AwsBatchOperator</span></code> can use a new <code class="docutils literal notranslate"><span class="pre">waiters</span></code> parameter, an instance of <code class="docutils literal notranslate"><span class="pre">AwsBatchWaiters</span></code>, to
specify that custom job waiters will be used to monitor a batch job. See the latest API
documentation for details.</p>
</div>
<div class="section" id="airflow-providers-amazon-aws-sensors-athena-athenasensor">
<h5><code class="docutils literal notranslate"><span class="pre">airflow.providers.amazon.aws.sensors.athena.AthenaSensor</span></code><a class="headerlink" href="#airflow-providers-amazon-aws-sensors-athena-athenasensor" title="Permalink to this heading"></a></h5>
<p>Replace parameter <code class="docutils literal notranslate"><span class="pre">max_retires</span></code> with <code class="docutils literal notranslate"><span class="pre">max_retries</span></code> to fix typo.</p>
</div>
<div class="section" id="airflow-providers-amazon-aws-hooks-s3-s3hook">
<h5><code class="docutils literal notranslate"><span class="pre">airflow.providers.amazon.aws.hooks.s3.S3Hook</span></code><a class="headerlink" href="#airflow-providers-amazon-aws-hooks-s3-s3hook" title="Permalink to this heading"></a></h5>
<p>Note: The order of arguments has changed for <code class="docutils literal notranslate"><span class="pre">check_for_prefix</span></code>.
The <code class="docutils literal notranslate"><span class="pre">bucket_name</span></code> is now optional. It falls back to the <code class="docutils literal notranslate"><span class="pre">connection</span> <span class="pre">schema</span></code> attribute.
The <code class="docutils literal notranslate"><span class="pre">delete_objects</span></code> now returns <code class="docutils literal notranslate"><span class="pre">None</span></code> instead of a response, since the method now makes multiple api requests when the keys list length is &gt; 1000.</p>
</div>
</div>
<div class="section" id="changes-in-other-provider-packages">
<h4>Changes in other provider packages<a class="headerlink" href="#changes-in-other-provider-packages" title="Permalink to this heading"></a></h4>
<p>We strive to ensure that there are no changes that may affect the end user and your Python files, but this
release may contain changes that will require changes to your configuration, DAG Files or other integration
e.g. custom operators.</p>
<p>Only changes unique to providers are described here. You should still pay attention to the changes that
have been made to the core (including core operators) as they can affect the integration behavior
of this provider.</p>
<p>This section describes the changes that have been made, and what you need to do to update your if
you use any code located in <code class="docutils literal notranslate"><span class="pre">airflow.providers</span></code> package.</p>
<div class="section" id="changed-return-type-of-list-prefixes-and-list-keys-methods-in-s3hook">
<h5>Changed return type of <code class="docutils literal notranslate"><span class="pre">list_prefixes</span></code> and <code class="docutils literal notranslate"><span class="pre">list_keys</span></code> methods in <code class="docutils literal notranslate"><span class="pre">S3Hook</span></code><a class="headerlink" href="#changed-return-type-of-list-prefixes-and-list-keys-methods-in-s3hook" title="Permalink to this heading"></a></h5>
<p>Previously, the <code class="docutils literal notranslate"><span class="pre">list_prefixes</span></code> and <code class="docutils literal notranslate"><span class="pre">list_keys</span></code> methods returned <code class="docutils literal notranslate"><span class="pre">None</span></code> when there were no
results. The behavior has been changed to return an empty list instead of <code class="docutils literal notranslate"><span class="pre">None</span></code> in this
case.</p>
</div>
<div class="section" id="removed-hipchat-integration">
<h5>Removed HipChat integration<a class="headerlink" href="#removed-hipchat-integration" title="Permalink to this heading"></a></h5>
<p>HipChat has reached end of life and is no longer available.</p>
<p>For more information please see
<a class="reference external" href="https://community.atlassian.com/t5/Stride-articles/Stride-and-Hipchat-Cloud-have-reached-End-of-Life-updated/ba-p/940248">https://community.atlassian.com/t5/Stride-articles/Stride-and-Hipchat-Cloud-have-reached-End-of-Life-updated/ba-p/940248</a></p>
</div>
<div class="section" id="airflow-providers-salesforce-hooks-salesforce-salesforcehook">
<h5><code class="docutils literal notranslate"><span class="pre">airflow.providers.salesforce.hooks.salesforce.SalesforceHook</span></code><a class="headerlink" href="#airflow-providers-salesforce-hooks-salesforce-salesforcehook" title="Permalink to this heading"></a></h5>
<p>Replace parameter <code class="docutils literal notranslate"><span class="pre">sandbox</span></code> with <code class="docutils literal notranslate"><span class="pre">domain</span></code>. According to change in simple-salesforce package.</p>
<p>Rename <code class="docutils literal notranslate"><span class="pre">sign_in</span></code> function to <code class="docutils literal notranslate"><span class="pre">get_conn</span></code>.</p>
</div>
<div class="section" id="airflow-providers-apache-pinot-hooks-pinot-pinotadminhook-create-segment">
<h5><code class="docutils literal notranslate"><span class="pre">airflow.providers.apache.pinot.hooks.pinot.PinotAdminHook.create_segment</span></code><a class="headerlink" href="#airflow-providers-apache-pinot-hooks-pinot-pinotadminhook-create-segment" title="Permalink to this heading"></a></h5>
<p>Rename parameter name from <code class="docutils literal notranslate"><span class="pre">format</span></code> to <code class="docutils literal notranslate"><span class="pre">segment_format</span></code> in PinotAdminHook function create_segment for pylint compatible</p>
</div>
<div class="section" id="airflow-providers-apache-hive-hooks-hive-hivemetastorehook-get-partitions">
<h5><code class="docutils literal notranslate"><span class="pre">airflow.providers.apache.hive.hooks.hive.HiveMetastoreHook.get_partitions</span></code><a class="headerlink" href="#airflow-providers-apache-hive-hooks-hive-hivemetastorehook-get-partitions" title="Permalink to this heading"></a></h5>
<p>Rename parameter name from <code class="docutils literal notranslate"><span class="pre">filter</span></code> to <code class="docutils literal notranslate"><span class="pre">partition_filter</span></code> in HiveMetastoreHook function get_partitions for pylint compatible</p>
</div>
<div class="section" id="airflow-providers-ftp-hooks-ftp-ftphook-list-directory">
<h5><code class="docutils literal notranslate"><span class="pre">airflow.providers.ftp.hooks.ftp.FTPHook.list_directory</span></code><a class="headerlink" href="#airflow-providers-ftp-hooks-ftp-ftphook-list-directory" title="Permalink to this heading"></a></h5>
<p>Remove unnecessary parameter <code class="docutils literal notranslate"><span class="pre">nlst</span></code> in FTPHook function <code class="docutils literal notranslate"><span class="pre">list_directory</span></code> for pylint compatible</p>
</div>
<div class="section" id="airflow-providers-postgres-hooks-postgres-postgreshook-copy-expert">
<h5><code class="docutils literal notranslate"><span class="pre">airflow.providers.postgres.hooks.postgres.PostgresHook.copy_expert</span></code><a class="headerlink" href="#airflow-providers-postgres-hooks-postgres-postgreshook-copy-expert" title="Permalink to this heading"></a></h5>
<p>Remove unnecessary parameter <code class="docutils literal notranslate"><span class="pre">open</span></code> in PostgresHook function <code class="docutils literal notranslate"><span class="pre">copy_expert</span></code> for pylint compatible</p>
</div>
<div class="section" id="airflow-providers-opsgenie-operators-opsgenie-alert-opsgeniealertoperator">
<h5><code class="docutils literal notranslate"><span class="pre">airflow.providers.opsgenie.operators.opsgenie_alert.OpsgenieAlertOperator</span></code><a class="headerlink" href="#airflow-providers-opsgenie-operators-opsgenie-alert-opsgeniealertoperator" title="Permalink to this heading"></a></h5>
<p>Change parameter name from <code class="docutils literal notranslate"><span class="pre">visibleTo</span></code> to <code class="docutils literal notranslate"><span class="pre">visible_to</span></code> in OpsgenieAlertOperator for pylint compatible</p>
</div>
<div class="section" id="airflow-providers-imap-hooks-imap-imaphook">
<h5><code class="docutils literal notranslate"><span class="pre">airflow.providers.imap.hooks.imap.ImapHook</span></code><a class="headerlink" href="#airflow-providers-imap-hooks-imap-imaphook" title="Permalink to this heading"></a></h5>
</div>
<div class="section" id="airflow-providers-imap-sensors-imap-attachment-imapattachmentsensor">
<h5><code class="docutils literal notranslate"><span class="pre">airflow.providers.imap.sensors.imap_attachment.ImapAttachmentSensor</span></code><a class="headerlink" href="#airflow-providers-imap-sensors-imap-attachment-imapattachmentsensor" title="Permalink to this heading"></a></h5>
<p>ImapHook:</p>
<ul class="simple">
<li><p>The order of arguments has changed for <code class="docutils literal notranslate"><span class="pre">has_mail_attachment</span></code>,
<code class="docutils literal notranslate"><span class="pre">retrieve_mail_attachments</span></code> and <code class="docutils literal notranslate"><span class="pre">download_mail_attachments</span></code>.</p></li>
<li><p>A new <code class="docutils literal notranslate"><span class="pre">mail_filter</span></code> argument has been added to each of those.</p></li>
</ul>
</div>
<div class="section" id="airflow-providers-http-hooks-http-httphook">
<h5><code class="docutils literal notranslate"><span class="pre">airflow.providers.http.hooks.http.HttpHook</span></code><a class="headerlink" href="#airflow-providers-http-hooks-http-httphook" title="Permalink to this heading"></a></h5>
<p>The HTTPHook is now secured by default: <code class="docutils literal notranslate"><span class="pre">verify=True</span></code> (before: <code class="docutils literal notranslate"><span class="pre">verify=False</span></code>)
This can be overwritten by using the extra_options param as <code class="docutils literal notranslate"><span class="pre">{'verify':</span> <span class="pre">False}</span></code>.</p>
</div>
<div class="section" id="airflow-providers-cloudant-hooks-cloudant-cloudanthook">
<h5><code class="docutils literal notranslate"><span class="pre">airflow.providers.cloudant.hooks.cloudant.CloudantHook</span></code><a class="headerlink" href="#airflow-providers-cloudant-hooks-cloudant-cloudanthook" title="Permalink to this heading"></a></h5>
<ul class="simple">
<li><p>upgraded cloudant version from <code class="docutils literal notranslate"><span class="pre">&gt;=0.5.9,&lt;2.0</span></code> to <code class="docutils literal notranslate"><span class="pre">&gt;=2.0</span></code></p></li>
<li><p>removed the use of the <code class="docutils literal notranslate"><span class="pre">schema</span></code> attribute in the connection</p></li>
<li><p>removed <code class="docutils literal notranslate"><span class="pre">db</span></code> function since the database object can also be retrieved by calling <code class="docutils literal notranslate"><span class="pre">cloudant_session['database_name']</span></code></p></li>
</ul>
<p>For example:</p>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">airflow.providers.cloudant.hooks.cloudant</span> <span class="kn">import</span> <span class="n">CloudantHook</span>
<span class="k">with</span> <span class="n">CloudantHook</span><span class="p">()</span><span class="o">.</span><span class="n">get_conn</span><span class="p">()</span> <span class="k">as</span> <span class="n">cloudant_session</span><span class="p">:</span>
<span class="n">database</span> <span class="o">=</span> <span class="n">cloudant_session</span><span class="p">[</span><span class="s2">&quot;database_name&quot;</span><span class="p">]</span>
</pre></div>
</div>
<p>See the <a class="reference external" href="https://python-cloudant.readthedocs.io/en/latest/">docs</a> for more information on how to use the new cloudant version.</p>
</div>
<div class="section" id="airflow-providers-snowflake">
<h5><code class="docutils literal notranslate"><span class="pre">airflow.providers.snowflake</span></code><a class="headerlink" href="#airflow-providers-snowflake" title="Permalink to this heading"></a></h5>
<p>When initializing a Snowflake hook or operator, the value used for <code class="docutils literal notranslate"><span class="pre">snowflake_conn_id</span></code> was always <code class="docutils literal notranslate"><span class="pre">snowflake_conn_id</span></code>, regardless of whether or not you specified a value for it. The default <code class="docutils literal notranslate"><span class="pre">snowflake_conn_id</span></code> value is now switched to <code class="docutils literal notranslate"><span class="pre">snowflake_default</span></code> for consistency and will be properly overridden when specified.</p>
</div>
</div>
<div class="section" id="other-changes">
<h4>Other changes<a class="headerlink" href="#other-changes" title="Permalink to this heading"></a></h4>
<p>This release also includes changes that fall outside any of the sections above.</p>
<div class="section" id="standardized-extra-requirements">
<h5>Standardized “extra” requirements<a class="headerlink" href="#standardized-extra-requirements" title="Permalink to this heading"></a></h5>
<p>We standardized the Extras names and synchronized providers package names with the main airflow extras.</p>
<p>We deprecated a number of extras in 2.0.</p>
<table class="docutils align-default">
<colgroup>
<col style="width: 50%" />
<col style="width: 50%" />
</colgroup>
<thead>
<tr class="row-odd"><th class="head"><p>Deprecated extras</p></th>
<th class="head"><p>New extras</p></th>
</tr>
</thead>
<tbody>
<tr class="row-even"><td><p>atlas</p></td>
<td><p>apache.atlas</p></td>
</tr>
<tr class="row-odd"><td><p>aws</p></td>
<td><p>amazon</p></td>
</tr>
<tr class="row-even"><td><p>azure</p></td>
<td><p>microsoft.azure</p></td>
</tr>
<tr class="row-odd"><td><p>azure_blob_storage</p></td>
<td><p>microsoft.azure</p></td>
</tr>
<tr class="row-even"><td><p>azure_data_lake</p></td>
<td><p>microsoft.azure</p></td>
</tr>
<tr class="row-odd"><td><p>azure_cosmos</p></td>
<td><p>microsoft.azure</p></td>
</tr>
<tr class="row-even"><td><p>azure_container_instances</p></td>
<td><p>microsoft.azure</p></td>
</tr>
<tr class="row-odd"><td><p>cassandra</p></td>
<td><p>apache.cassandra</p></td>
</tr>
<tr class="row-even"><td><p>druid</p></td>
<td><p>apache.druid</p></td>
</tr>
<tr class="row-odd"><td><p>gcp</p></td>
<td><p>google</p></td>
</tr>
<tr class="row-even"><td><p>gcp_api</p></td>
<td><p>google</p></td>
</tr>
<tr class="row-odd"><td><p>hdfs</p></td>
<td><p>apache.hdfs</p></td>
</tr>
<tr class="row-even"><td><p>hive</p></td>
<td><p>apache.hive</p></td>
</tr>
<tr class="row-odd"><td><p>kubernetes</p></td>
<td><p>cncf.kubernetes</p></td>
</tr>
<tr class="row-even"><td><p>mssql</p></td>
<td><p>microsoft.mssql</p></td>
</tr>
<tr class="row-odd"><td><p>pinot</p></td>
<td><p>apache.pinot</p></td>
</tr>
<tr class="row-even"><td><p>webhdfs</p></td>
<td><p>apache.webhdfs</p></td>
</tr>
<tr class="row-odd"><td><p>winrm</p></td>
<td><p>apache.winrm</p></td>
</tr>
</tbody>
</table>
<p>For example:</p>
<p>If you want to install integration for Apache Atlas, then instead of <code class="docutils literal notranslate"><span class="pre">pip</span> <span class="pre">install</span> <span class="pre">apache-airflow[atlas]</span></code>
you should use <code class="docutils literal notranslate"><span class="pre">pip</span> <span class="pre">install</span> <span class="pre">apache-airflow[apache.atlas]</span></code>.</p>
<p>NOTE!</p>
<p>If you want to install integration for Microsoft Azure, then instead of</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">pip</span> <span class="n">install</span> <span class="s1">&#39;apache-airflow[azure_blob_storage,azure_data_lake,azure_cosmos,azure_container_instances]&#39;</span>
</pre></div>
</div>
<p>you should run <code class="docutils literal notranslate"><span class="pre">pip</span> <span class="pre">install</span> <span class="pre">'apache-airflow[microsoft.azure]'</span></code></p>
<p>If you want to install integration for Amazon Web Services, then instead of
<code class="docutils literal notranslate"><span class="pre">pip</span> <span class="pre">install</span> <span class="pre">'apache-airflow[s3,emr]'</span></code>, you should execute <code class="docutils literal notranslate"><span class="pre">pip</span> <span class="pre">install</span> <span class="pre">'apache-airflow[aws]'</span></code></p>
<p>The deprecated extras will be removed in 3.0.</p>
</div>
<div class="section" id="simplify-the-response-payload-of-endpoints-dag-stats-and-task-stats">
<h5>Simplify the response payload of endpoints /dag_stats and /task_stats<a class="headerlink" href="#simplify-the-response-payload-of-endpoints-dag-stats-and-task-stats" title="Permalink to this heading"></a></h5>
<p>The response of endpoints <code class="docutils literal notranslate"><span class="pre">/dag_stats</span></code> and <code class="docutils literal notranslate"><span class="pre">/task_stats</span></code> help UI fetch brief statistics about DAGs and Tasks. The format was like</p>
<div class="highlight-json notranslate"><div class="highlight"><pre><span></span><span class="p">{</span><span class="w"></span>
<span class="w"> </span><span class="nt">&quot;example_http_operator&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="w"></span>
<span class="w"> </span><span class="p">{</span><span class="w"></span>
<span class="w"> </span><span class="nt">&quot;state&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;success&quot;</span><span class="p">,</span><span class="w"></span>
<span class="w"> </span><span class="nt">&quot;count&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"></span>
<span class="w"> </span><span class="nt">&quot;dag_id&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;example_http_operator&quot;</span><span class="p">,</span><span class="w"></span>
<span class="w"> </span><span class="nt">&quot;color&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;green&quot;</span><span class="w"></span>
<span class="w"> </span><span class="p">},</span><span class="w"></span>
<span class="w"> </span><span class="p">{</span><span class="w"></span>
<span class="w"> </span><span class="nt">&quot;state&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;running&quot;</span><span class="p">,</span><span class="w"></span>
<span class="w"> </span><span class="nt">&quot;count&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"></span>
<span class="w"> </span><span class="nt">&quot;dag_id&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;example_http_operator&quot;</span><span class="p">,</span><span class="w"></span>
<span class="w"> </span><span class="nt">&quot;color&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;lime&quot;</span><span class="w"></span>
<span class="w"> </span><span class="p">}</span><span class="w"></span>
<span class="w"> </span><span class="p">]</span><span class="w"></span>
<span class="p">}</span><span class="w"></span>
</pre></div>
</div>
<p>The <code class="docutils literal notranslate"><span class="pre">dag_id</span></code> was repeated in the payload, which makes the response payload unnecessarily bigger.</p>
<p>Now the <code class="docutils literal notranslate"><span class="pre">dag_id</span></code> will not appear repeated in the payload, and the response format is like</p>
<div class="highlight-json notranslate"><div class="highlight"><pre><span></span><span class="p">{</span><span class="w"></span>
<span class="w"> </span><span class="nt">&quot;example_http_operator&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="w"></span>
<span class="w"> </span><span class="p">{</span><span class="w"></span>
<span class="w"> </span><span class="nt">&quot;state&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;success&quot;</span><span class="p">,</span><span class="w"></span>
<span class="w"> </span><span class="nt">&quot;count&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"></span>
<span class="w"> </span><span class="nt">&quot;color&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;green&quot;</span><span class="w"></span>
<span class="w"> </span><span class="p">},</span><span class="w"></span>
<span class="w"> </span><span class="p">{</span><span class="w"></span>
<span class="w"> </span><span class="nt">&quot;state&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;running&quot;</span><span class="p">,</span><span class="w"></span>
<span class="w"> </span><span class="nt">&quot;count&quot;</span><span class="p">:</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"></span>
<span class="w"> </span><span class="nt">&quot;color&quot;</span><span class="p">:</span><span class="w"> </span><span class="s2">&quot;lime&quot;</span><span class="w"></span>
<span class="w"> </span><span class="p">}</span><span class="w"></span>
<span class="w"> </span><span class="p">]</span><span class="w"></span>
<span class="p">}</span><span class="w"></span>
</pre></div>
</div>
</div>
</div>
</div>
</div>
<div class="section" id="airflow-1-10-15-2021-03-17">
<h2><a class="toc-backref" href="#id182">Airflow 1.10.15 (2021-03-17)</a><a class="headerlink" href="#airflow-1-10-15-2021-03-17" title="Permalink to this heading"></a></h2>
<div class="section" id="id75">
<h3>Significant Changes<a class="headerlink" href="#id75" title="Permalink to this heading"></a></h3>
<p>No significant changes.</p>
</div>
<div class="section" id="id76">
<h3>Bug Fixes<a class="headerlink" href="#id76" title="Permalink to this heading"></a></h3>
<ul class="simple">
<li><p>Fix <code class="docutils literal notranslate"><span class="pre">airflow</span> <span class="pre">db</span> <span class="pre">upgrade</span></code> to upgrade db as intended (#13267)</p></li>
<li><p>Moved boto3 limitation to snowflake (#13286)</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">KubernetesExecutor</span></code> should accept images from <code class="docutils literal notranslate"><span class="pre">executor_config</span></code> (#13074)</p></li>
<li><p>Scheduler should acknowledge active runs properly (#13803)</p></li>
<li><p>Include <code class="docutils literal notranslate"><span class="pre">airflow/contrib/executors</span></code> in the dist package</p></li>
<li><p>Pin Click version for Python 2.7 users</p></li>
<li><p>Ensure all StatsD timers use millisecond values. (#10633)</p></li>
<li><p>[<code class="docutils literal notranslate"><span class="pre">kubernetes_generate_dag_yaml</span></code>] - Fix dag yaml generate function (#13816)</p></li>
<li><p>Fix <code class="docutils literal notranslate"><span class="pre">airflow</span> <span class="pre">tasks</span> <span class="pre">clear</span></code> cli command with <code class="docutils literal notranslate"><span class="pre">--yes</span></code> (#14188)</p></li>
<li><p>Fix permission error on non-POSIX filesystem (#13121) (#14383)</p></li>
<li><p>Fixed deprecation message for “variables” command (#14457)</p></li>
<li><p>BugFix: fix the <code class="docutils literal notranslate"><span class="pre">delete_dag</span></code> function of json_client (#14441)</p></li>
<li><p>Fix merging of secrets and configmaps for <code class="docutils literal notranslate"><span class="pre">KubernetesExecutor</span></code> (#14090)</p></li>
<li><p>Fix webserver exiting when gunicorn master crashes (#13470)</p></li>
<li><p>Bump <code class="docutils literal notranslate"><span class="pre">ini</span></code> from 1.3.5 to 1.3.8 in <code class="docutils literal notranslate"><span class="pre">airflow/www_rbac</span></code></p></li>
<li><p>Bump <code class="docutils literal notranslate"><span class="pre">datatables.net</span></code> from 1.10.21 to 1.10.23 in <code class="docutils literal notranslate"><span class="pre">airflow/www_rbac</span></code></p></li>
<li><p>Webserver: Sanitize string passed to origin param (#14738)</p></li>
<li><p>Make <code class="docutils literal notranslate"><span class="pre">rbac_app</span></code>’s <code class="docutils literal notranslate"><span class="pre">db.session</span></code> use the same timezone with <code class="docutils literal notranslate"><span class="pre">&#64;provide_session</span></code> (#14025)</p></li>
</ul>
</div>
<div class="section" id="id77">
<h3>Improvements<a class="headerlink" href="#id77" title="Permalink to this heading"></a></h3>
<ul class="simple">
<li><p>Adds airflow as viable docker command in official image (#12878)</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">StreamLogWriter</span></code>: Provide (no-op) close method (#10885)</p></li>
<li><p>Add ‘airflow variables list’ command for 1.10.x transition version (#14462)</p></li>
</ul>
</div>
<div class="section" id="id78">
<h3>Doc only changes<a class="headerlink" href="#id78" title="Permalink to this heading"></a></h3>
<ul class="simple">
<li><p>Update URL for Airflow docs (#13561)</p></li>
<li><p>Clarifies version args for installing 1.10 in Docker (#12875)</p></li>
</ul>
</div>
</div>
<div class="section" id="airflow-1-10-14-2020-12-10">
<h2><a class="toc-backref" href="#id183">Airflow 1.10.14 (2020-12-10)</a><a class="headerlink" href="#airflow-1-10-14-2020-12-10" title="Permalink to this heading"></a></h2>
<div class="section" id="id79">
<h3>Significant Changes<a class="headerlink" href="#id79" title="Permalink to this heading"></a></h3>
<div class="section" id="scheduler-max-threads-config-has-been-renamed-to-scheduler-parsing-processes">
<h4><code class="docutils literal notranslate"><span class="pre">[scheduler]</span> <span class="pre">max_threads</span></code> config has been renamed to <code class="docutils literal notranslate"><span class="pre">[scheduler]</span> <span class="pre">parsing_processes</span></code><a class="headerlink" href="#scheduler-max-threads-config-has-been-renamed-to-scheduler-parsing-processes" title="Permalink to this heading"></a></h4>
<p>From Airflow 1.10.14, <code class="docutils literal notranslate"><span class="pre">max_threads</span></code> config under <code class="docutils literal notranslate"><span class="pre">[scheduler]</span></code> section has been renamed to <code class="docutils literal notranslate"><span class="pre">parsing_processes</span></code>.</p>
<p>This is to align the name with the actual code where the Scheduler launches the number of processes defined by
<code class="docutils literal notranslate"><span class="pre">[scheduler]</span> <span class="pre">parsing_processes</span></code> to parse the DAG files.</p>
</div>
<div class="section" id="airflow-cli-changes-in-line-with-2-0">
<h4>Airflow CLI changes in line with 2.0<a class="headerlink" href="#airflow-cli-changes-in-line-with-2-0" title="Permalink to this heading"></a></h4>
<p>The Airflow CLI has been organized so that related commands are grouped together as subcommands,
which means that if you use these commands in your scripts, they will now raise a DeprecationWarning and
you have to make changes to them before you upgrade to Airflow 2.0.</p>
<p>This section describes the changes that have been made, and what you need to do to update your script.</p>
<dl class="simple">
<dt>The ability to manipulate users from the command line has been changed. <code class="docutils literal notranslate"><span class="pre">airflow</span> <span class="pre">create_user</span></code>, <code class="docutils literal notranslate"><span class="pre">airflow</span> <span class="pre">delete_user</span></code></dt><dd><p>and <code class="docutils literal notranslate"><span class="pre">airflow</span> <span class="pre">list_users</span></code> has been grouped to a single command <code class="docutils literal notranslate"><span class="pre">airflow</span> <span class="pre">users</span></code> with optional flags <code class="docutils literal notranslate"><span class="pre">create</span></code>, <code class="docutils literal notranslate"><span class="pre">list</span></code> and <code class="docutils literal notranslate"><span class="pre">delete</span></code>.</p>
</dd>
</dl>
<p>The <code class="docutils literal notranslate"><span class="pre">airflow</span> <span class="pre">list_dags</span></code> command is now <code class="docutils literal notranslate"><span class="pre">airflow</span> <span class="pre">dags</span> <span class="pre">list</span></code>, <code class="docutils literal notranslate"><span class="pre">airflow</span> <span class="pre">pause</span></code> is <code class="docutils literal notranslate"><span class="pre">airflow</span> <span class="pre">dags</span> <span class="pre">pause</span></code>, etc.</p>
<p>In Airflow 1.10 and 2.0 there is an <code class="docutils literal notranslate"><span class="pre">airflow</span> <span class="pre">config</span></code> command but there is a difference in behavior. In Airflow 1.10,
it prints all config options while in Airflow 2.0, it’s a command group. <code class="docutils literal notranslate"><span class="pre">airflow</span> <span class="pre">config</span></code> is now <code class="docutils literal notranslate"><span class="pre">airflow</span> <span class="pre">config</span> <span class="pre">list</span></code>.
You can check other options by running the command <code class="docutils literal notranslate"><span class="pre">airflow</span> <span class="pre">config</span> <span class="pre">--help</span></code></p>
<p>Compatibility with the old CLI has been maintained, but they will no longer appear in the help</p>
<p>You can learn about the commands by running <code class="docutils literal notranslate"><span class="pre">airflow</span> <span class="pre">--help</span></code>. For example to get help about the <code class="docutils literal notranslate"><span class="pre">celery</span></code> group command,
you have to run the help command: <code class="docutils literal notranslate"><span class="pre">airflow</span> <span class="pre">celery</span> <span class="pre">--help</span></code>.</p>
<table class="docutils align-default">
<colgroup>
<col style="width: 33%" />
<col style="width: 33%" />
<col style="width: 33%" />
</colgroup>
<thead>
<tr class="row-odd"><th class="head"><p>Old command</p></th>
<th class="head"><p>New command</p></th>
<th class="head"><p>Group</p></th>
</tr>
</thead>
<tbody>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow</span> <span class="pre">worker</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow</span> <span class="pre">celery</span> <span class="pre">worker</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">celery</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">airflow</span> <span class="pre">flower</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow</span> <span class="pre">celery</span> <span class="pre">flower</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">celery</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow</span> <span class="pre">trigger_dag</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow</span> <span class="pre">dags</span> <span class="pre">trigger</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">dags</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">airflow</span> <span class="pre">delete_dag</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow</span> <span class="pre">dags</span> <span class="pre">delete</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">dags</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow</span> <span class="pre">show_dag</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow</span> <span class="pre">dags</span> <span class="pre">show</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">dags</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">airflow</span> <span class="pre">list_dag</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow</span> <span class="pre">dags</span> <span class="pre">list</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">dags</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow</span> <span class="pre">dag_status</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow</span> <span class="pre">dags</span> <span class="pre">status</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">dags</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">airflow</span> <span class="pre">backfill</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow</span> <span class="pre">dags</span> <span class="pre">backfill</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">dags</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow</span> <span class="pre">list_dag_runs</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow</span> <span class="pre">dags</span> <span class="pre">list-runs</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">dags</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">airflow</span> <span class="pre">pause</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow</span> <span class="pre">dags</span> <span class="pre">pause</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">dags</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow</span> <span class="pre">unpause</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow</span> <span class="pre">dags</span> <span class="pre">unpause</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">dags</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">airflow</span> <span class="pre">next_execution</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow</span> <span class="pre">dags</span> <span class="pre">next-execution</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">dags</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow</span> <span class="pre">test</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow</span> <span class="pre">tasks</span> <span class="pre">test</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">tasks</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">airflow</span> <span class="pre">clear</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow</span> <span class="pre">tasks</span> <span class="pre">clear</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">tasks</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow</span> <span class="pre">list_tasks</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow</span> <span class="pre">tasks</span> <span class="pre">list</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">tasks</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">airflow</span> <span class="pre">task_failed_deps</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow</span> <span class="pre">tasks</span> <span class="pre">failed-deps</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">tasks</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow</span> <span class="pre">task_state</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow</span> <span class="pre">tasks</span> <span class="pre">state</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">tasks</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">airflow</span> <span class="pre">run</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow</span> <span class="pre">tasks</span> <span class="pre">run</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">tasks</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow</span> <span class="pre">render</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow</span> <span class="pre">tasks</span> <span class="pre">render</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">tasks</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">airflow</span> <span class="pre">initdb</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow</span> <span class="pre">db</span> <span class="pre">init</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">db</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow</span> <span class="pre">resetdb</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow</span> <span class="pre">db</span> <span class="pre">reset</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">db</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">airflow</span> <span class="pre">upgradedb</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow</span> <span class="pre">db</span> <span class="pre">upgrade</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">db</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow</span> <span class="pre">checkdb</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow</span> <span class="pre">db</span> <span class="pre">check</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">db</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">airflow</span> <span class="pre">shell</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow</span> <span class="pre">db</span> <span class="pre">shell</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">db</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow</span> <span class="pre">pool</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow</span> <span class="pre">pools</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">pools</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">airflow</span> <span class="pre">create_user</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow</span> <span class="pre">users</span> <span class="pre">create</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">users</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow</span> <span class="pre">delete_user</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow</span> <span class="pre">users</span> <span class="pre">delete</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">users</span></code></p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">airflow</span> <span class="pre">list_users</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow</span> <span class="pre">users</span> <span class="pre">list</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">users</span></code></p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">airflow</span> <span class="pre">rotate_fernet_key</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow</span> <span class="pre">rotate-fernet-key</span></code></p></td>
<td></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">airflow</span> <span class="pre">sync_perm</span></code></p></td>
<td><p><code class="docutils literal notranslate"><span class="pre">airflow</span> <span class="pre">sync-perm</span></code></p></td>
<td></td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="section" id="id80">
<h3>Bug Fixes<a class="headerlink" href="#id80" title="Permalink to this heading"></a></h3>
<ul class="simple">
<li><p>BugFix: Tasks with <code class="docutils literal notranslate"><span class="pre">depends_on_past</span></code> or <code class="docutils literal notranslate"><span class="pre">task_concurrency</span></code> are stuck (#12663)</p></li>
<li><p>Fix issue with empty Resources in executor_config (#12633)</p></li>
<li><p>Fix: Deprecated config <code class="docutils literal notranslate"><span class="pre">force_log_out_after</span></code> was not used (#12661)</p></li>
<li><p>Fix empty asctime field in JSON formatted logs (#10515)</p></li>
<li><p>[AIRFLOW-2809] Fix security issue regarding Flask SECRET_KEY (#3651)</p></li>
<li><p>[AIRFLOW-2884] Fix Flask SECRET_KEY security issue in www_rbac (#3729)</p></li>
<li><p>[AIRFLOW-2886] Generate random Flask SECRET_KEY in default config (#3738)</p></li>
<li><p>Add missing comma in setup.py (#12790)</p></li>
<li><p>Bugfix: Unable to import Airflow plugins on Python 3.8 (#12859)</p></li>
<li><p>Fix setup.py missing comma in <code class="docutils literal notranslate"><span class="pre">setup_requires</span></code> (#12880)</p></li>
<li><p>Don’t emit first_task_scheduling_delay metric for only-once dags (#12835)</p></li>
</ul>
</div>
<div class="section" id="id81">
<h3>Improvements<a class="headerlink" href="#id81" title="Permalink to this heading"></a></h3>
<ul class="simple">
<li><p>Update setup.py to get non-conflicting set of dependencies (#12636)</p></li>
<li><p>Rename <code class="docutils literal notranslate"><span class="pre">[scheduler]</span> <span class="pre">max_threads</span></code> to <code class="docutils literal notranslate"><span class="pre">[scheduler]</span> <span class="pre">parsing_processes</span></code> (#12605)</p></li>
<li><p>Add metric for scheduling delay between first run task &amp; expected start time (#9544)</p></li>
<li><p>Add new-style 2.0 command names for Airflow 1.10.x (#12725)</p></li>
<li><p>Add Kubernetes cleanup-pods CLI command for Helm Chart (#11802)</p></li>
<li><p>Don’t let webserver run with dangerous config (#12747)</p></li>
<li><p>Replace pkg_resources with <code class="docutils literal notranslate"><span class="pre">importlib.metadata</span></code> to avoid VersionConflict errors (#12694)</p></li>
</ul>
</div>
<div class="section" id="id82">
<h3>Doc only changes<a class="headerlink" href="#id82" title="Permalink to this heading"></a></h3>
<ul class="simple">
<li><p>Clarified information about supported Databases</p></li>
</ul>
</div>
</div>
<div class="section" id="airflow-1-10-13-2020-11-25">
<h2><a class="toc-backref" href="#id184">Airflow 1.10.13 (2020-11-25)</a><a class="headerlink" href="#airflow-1-10-13-2020-11-25" title="Permalink to this heading"></a></h2>
<div class="section" id="id83">
<h3>Significant Changes<a class="headerlink" href="#id83" title="Permalink to this heading"></a></h3>
<div class="section" id="timesensor-is-now-timezone-aware">
<h4>TimeSensor is now timezone aware<a class="headerlink" href="#timesensor-is-now-timezone-aware" title="Permalink to this heading"></a></h4>
<p>Previously <code class="docutils literal notranslate"><span class="pre">TimeSensor</span></code> always compared the <code class="docutils literal notranslate"><span class="pre">target_time</span></code> with the current time in UTC.</p>
<p>Now it will compare <code class="docutils literal notranslate"><span class="pre">target_time</span></code> with the current time in the timezone of the DAG,
defaulting to the <code class="docutils literal notranslate"><span class="pre">default_timezone</span></code> in the global config.</p>
</div>
<div class="section" id="removed-kerberos-support-for-hdfs-hook">
<h4>Removed Kerberos support for HDFS hook<a class="headerlink" href="#removed-kerberos-support-for-hdfs-hook" title="Permalink to this heading"></a></h4>
<p>The HDFS hook’s Kerberos support has been removed due to removed <code class="docutils literal notranslate"><span class="pre">python-krbV</span></code> dependency from PyPI
and generally lack of support for SSL in Python3 (Snakebite-py3 we use as dependency has no
support for SSL connection to HDFS).</p>
<p>SSL support still works for WebHDFS hook.</p>
</div>
<div class="section" id="unify-user-session-lifetime-configuration">
<h4>Unify user session lifetime configuration<a class="headerlink" href="#unify-user-session-lifetime-configuration" title="Permalink to this heading"></a></h4>
<p>In previous version of Airflow user session lifetime could be configured by
<code class="docutils literal notranslate"><span class="pre">session_lifetime_days</span></code> and <code class="docutils literal notranslate"><span class="pre">force_log_out_after</span></code> options. In practice only <code class="docutils literal notranslate"><span class="pre">session_lifetime_days</span></code>
had impact on session lifetime, but it was limited to values in day.
We have removed mentioned options and introduced new <code class="docutils literal notranslate"><span class="pre">session_lifetime_minutes</span></code>
option which simplify session lifetime configuration.</p>
<p>Before</p>
<div class="highlight-ini notranslate"><div class="highlight"><pre><span></span><span class="k">[webserver]</span><span class="w"></span>
<span class="na">force_log_out_after</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">0</span><span class="w"></span>
<span class="na">session_lifetime_days</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">30</span><span class="w"></span>
</pre></div>
</div>
<p>After</p>
<div class="highlight-ini notranslate"><div class="highlight"><pre><span></span><span class="k">[webserver]</span><span class="w"></span>
<span class="na">session_lifetime_minutes</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">43200</span><span class="w"></span>
</pre></div>
</div>
</div>
<div class="section" id="adding-operators-hooks-and-sensors-via-airflow-plugins-is-deprecated">
<h4>Adding Operators, Hooks and Sensors via Airflow Plugins is deprecated<a class="headerlink" href="#adding-operators-hooks-and-sensors-via-airflow-plugins-is-deprecated" title="Permalink to this heading"></a></h4>
<p>The ability to import Operators, Hooks and Sensors via the plugin mechanism has been deprecated and will raise warnings
in Airflow 1.10.13 and will be removed completely in Airflow 2.0.</p>
<p>Check <a class="reference external" href="https://airflow.apache.org/docs/1.10.13/howto/custom-operator.html">https://airflow.apache.org/docs/1.10.13/howto/custom-operator.html</a> to see how you can create and import
Custom Hooks, Operators and Sensors.</p>
</div>
</div>
<div class="section" id="id84">
<h3>New Features<a class="headerlink" href="#id84" title="Permalink to this heading"></a></h3>
<ul class="simple">
<li><p>Add “already checked” to failed pods in K8sPodOperator (#11368)</p></li>
<li><p>Pass SQLAlchemy engine options to FAB based UI (#11395)</p></li>
<li><p>[AIRFLOW-4438] Add Gzip compression to S3_hook (#8571)</p></li>
<li><p>Add permission “extra_links” for Viewer role and above (#10719)</p></li>
<li><p>Add generate_yaml command to easily test KubernetesExecutor before deploying pods (#10677)</p></li>
<li><p>Add Secrets backend for Microsoft Azure Key Vault (#10898)</p></li>
</ul>
</div>
<div class="section" id="id85">
<h3>Bug Fixes<a class="headerlink" href="#id85" title="Permalink to this heading"></a></h3>
<ul class="simple">
<li><p>SkipMixin: Handle empty branches (#11120)</p></li>
<li><p>[AIRFLOW-5274] dag loading duration metric name too long (#5890)</p></li>
<li><p>Handle no Dagrun in DagrunIdDep (#8389) (#11343)</p></li>
<li><p>Fix Kubernetes Executor logs for long dag names (#10942)</p></li>
<li><p>Add on_kill support for the KubernetesPodOperator (#10666)</p></li>
<li><p>KubernetesPodOperator template fix (#10963)</p></li>
<li><p>Fix displaying of add serialized_dag table migration</p></li>
<li><p>Fix Start Date tooltip on DAGs page (#10637)</p></li>
<li><p>URL encode execution date in the Last Run link (#10595)</p></li>
<li><p>Fixes issue with affinity backcompat in Airflow 1.10</p></li>
<li><p>Fix KubernetesExecutor import in views.py</p></li>
<li><p>Fix issues with Gantt View (#12419)</p></li>
<li><p>Fix Entrypoint and _CMD config variables (#12411)</p></li>
<li><p>Fix operator field update for SerializedBaseOperator (#10924)</p></li>
<li><p>Limited cryptography to &lt; 3.2 for Python 2.7</p></li>
<li><p>Install cattr on Python 3.7 - Fix docs build on RTD (#12045)</p></li>
<li><p>Limit version of marshmallow-sqlalchemy</p></li>
<li><p>Pin <code class="docutils literal notranslate"><span class="pre">kubernetes</span></code> to a max version of 11.0.0 (#11974)</p></li>
<li><p>Use snakebite-py3 for HDFS dependency for Python3 (#12340)</p></li>
<li><p>Removes snakebite kerberos dependency (#10865)</p></li>
<li><p>Fix failing dependencies for FAB and Celery (#10828)</p></li>
<li><p>Fix pod_mutation_hook for 1.10.13 (#10850)</p></li>
<li><p>Fix formatting of Host information</p></li>
<li><p>Fix Logout Google Auth issue in Non-RBAC UI (#11890)</p></li>
<li><p>Add missing imports to app.py (#10650)</p></li>
<li><p>Show Generic Error for Charts &amp; Query View in old UI (#12495)</p></li>
<li><p>TimeSensor should respect the default_timezone config (#9699)</p></li>
<li><p>TimeSensor should respect DAG timezone (#9882)</p></li>
<li><p>Unify user session lifetime configuration (#11970)</p></li>
<li><p>Handle outdated webserver session timeout gracefully. (#12332)</p></li>
</ul>
</div>
<div class="section" id="id86">
<h3>Improvements<a class="headerlink" href="#id86" title="Permalink to this heading"></a></h3>
<ul class="simple">
<li><p>Add XCom.deserialize_value to Airflow 1.10.13 (#12328)</p></li>
<li><p>Mount airflow.cfg to pod_template_file (#12311)</p></li>
<li><p>All k8s object must comply with JSON Schema (#12003)</p></li>
<li><p>Validate Airflow chart values.yaml &amp; values.schema.json (#11990)</p></li>
<li><p>Pod template file uses custom custom env variable (#11480)</p></li>
<li><p>Bump attrs and cattrs dependencies (#11969)</p></li>
<li><p>Bump attrs to &gt; 20.0 (#11799)</p></li>
<li><p>[AIRFLOW-3607] Only query DB once per DAG run for TriggerRuleDep (#4751)</p></li>
<li><p>Rename task with duplicate task_id</p></li>
<li><p>Manage Flask AppBuilder Tables using Alembic Migrations (#12352)</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">airflow</span> <span class="pre">test</span></code> only works for tasks in 1.10, not whole dags (#11191)</p></li>
<li><p>Improve warning messaging for duplicate task_ids in a DAG (#11126)</p></li>
<li><p>Pins moto to 1.3.14 (#10986)</p></li>
<li><p>DbApiHook: Support kwargs in get_pandas_df (#9730)</p></li>
<li><p>Make grace_period_seconds option on K8sPodOperator (#10727)</p></li>
<li><p>Fix syntax error in Dockerfile ‘maintainer’ Label (#10899)</p></li>
<li><p>The entrypoints in Docker Image should be owned by Airflow (#10853)</p></li>
<li><p>Make dockerfiles Google Shell Guide Compliant (#10734)</p></li>
<li><p>clean-logs script for Dockerfile: trim logs before sleep (#10685)</p></li>
<li><p>When sending tasks to celery from a sub-process, reset signal handlers (#11278)</p></li>
<li><p>SkipMixin: Add missing session.commit() and test (#10421)</p></li>
<li><p>Webserver: Further Sanitize values passed to origin param (#12459)</p></li>
<li><p>Security upgrade lodash from 4.17.19 to 4.17.20 (#11095)</p></li>
<li><p>Log instead of raise an Error for unregistered OperatorLinks (#11959)</p></li>
<li><p>Mask Password in Log table when using the CLI (#11468)</p></li>
<li><p>[AIRFLOW-3607] Optimize dep checking when depends on past set and concurrency limit</p></li>
<li><p>Execute job cancel HTTPRequest in Dataproc Hook (#10361)</p></li>
<li><p>Use rst lexer to format Airflow upgrade check output (#11259)</p></li>
<li><p>Remove deprecation warning from contrib/kubernetes/pod.py</p></li>
<li><p>adding body as templated field for CloudSqlImportOperator (#10510)</p></li>
<li><p>Change log level for User’s session to DEBUG (#12414)</p></li>
</ul>
</div>
<div class="section" id="deprecations">
<h3>Deprecations<a class="headerlink" href="#deprecations" title="Permalink to this heading"></a></h3>
<ul class="simple">
<li><p>Deprecate importing Hooks from plugin-created module (#12133)</p></li>
<li><p>Deprecate adding Operators and Sensors via plugins (#12069)</p></li>
</ul>
</div>
<div class="section" id="id87">
<h3>Doc only changes<a class="headerlink" href="#id87" title="Permalink to this heading"></a></h3>
<ul class="simple">
<li><p>[Doc] Correct description for macro task_instance_key_str (#11062)</p></li>
<li><p>Checks if all the libraries in setup.py are listed in installation.rst file (#12023)</p></li>
<li><p>Revise “Project Focus” copy (#12011)</p></li>
<li><p>Move Project focus and Principles higher in the README (#11973)</p></li>
<li><p>Remove archived link from README.md (#11945)</p></li>
<li><p>Update download url for Airflow Version (#11800)</p></li>
<li><p>Add Project URLs for PyPI page (#11801)</p></li>
<li><p>Move Backport Providers docs to our docsite (#11136)</p></li>
<li><p>Refactor rebase copy (#11030)</p></li>
<li><p>Add missing images for kubernetes executor docs (#11083)</p></li>
<li><p>Fix indentation in executor_config example (#10467)</p></li>
<li><p>Enhanced the Kubernetes Executor doc (#10433)</p></li>
<li><p>Refactor content to a markdown table (#10863)</p></li>
<li><p>Rename “Beyond the Horizon” section and refactor content (#10802)</p></li>
<li><p>Refactor official source section to use bullets (#10801)</p></li>
<li><p>Add section for official source code (#10678)</p></li>
<li><p>Add redbubble link to Airflow merchandise (#10359)</p></li>
<li><p>README Doc: Link to Airflow directory in ASF Directory (#11137)</p></li>
<li><p>Fix the default value for VaultBackend’s config_path (#12518)</p></li>
</ul>
</div>
</div>
<div class="section" id="airflow-1-10-12-2020-08-25">
<h2><a class="toc-backref" href="#id185">Airflow 1.10.12 (2020-08-25)</a><a class="headerlink" href="#airflow-1-10-12-2020-08-25" title="Permalink to this heading"></a></h2>
<div class="section" id="id88">
<h3>Significant Changes<a class="headerlink" href="#id88" title="Permalink to this heading"></a></h3>
<div class="section" id="clearing-tasks-skipped-by-skipmixin-will-skip-them">
<h4>Clearing tasks skipped by SkipMixin will skip them<a class="headerlink" href="#clearing-tasks-skipped-by-skipmixin-will-skip-them" title="Permalink to this heading"></a></h4>
<p>Previously, when tasks skipped by SkipMixin (such as BranchPythonOperator, BaseBranchOperator and ShortCircuitOperator) are cleared, they execute. Since 1.10.12, when such skipped tasks are cleared,
they will be skipped again by the newly introduced NotPreviouslySkippedDep.</p>
</div>
<div class="section" id="the-pod-mutation-hook-function-will-now-accept-a-kubernetes-v1pod-object">
<h4>The pod_mutation_hook function will now accept a kubernetes V1Pod object<a class="headerlink" href="#the-pod-mutation-hook-function-will-now-accept-a-kubernetes-v1pod-object" title="Permalink to this heading"></a></h4>
<p>As of airflow 1.10.12, using the <code class="docutils literal notranslate"><span class="pre">airflow.contrib.kubernetes.Pod</span></code> class in the <code class="docutils literal notranslate"><span class="pre">pod_mutation_hook</span></code> is now deprecated. Instead we recommend that users
treat the <code class="docutils literal notranslate"><span class="pre">pod</span></code> parameter as a <code class="docutils literal notranslate"><span class="pre">kubernetes.client.models.V1Pod</span></code> object. This means that users now have access to the full Kubernetes API
when modifying airflow pods</p>
</div>
<div class="section" id="pod-template-file-option-now-available-in-the-kubernetespodoperator">
<h4>pod_template_file option now available in the KubernetesPodOperator<a class="headerlink" href="#pod-template-file-option-now-available-in-the-kubernetespodoperator" title="Permalink to this heading"></a></h4>
<p>Users can now offer a path to a yaml for the KubernetesPodOperator using the <code class="docutils literal notranslate"><span class="pre">pod_template_file</span></code> parameter.</p>
</div>
</div>
<div class="section" id="id89">
<h3>New Features<a class="headerlink" href="#id89" title="Permalink to this heading"></a></h3>
<ul class="simple">
<li><p>Add DateTimeSensor (#9697)</p></li>
<li><p>Add AirflowClusterPolicyViolation support to Airflow local settings (#10282)</p></li>
<li><p>Get Airflow configs with sensitive data from Secret Backends (#9645)</p></li>
<li><p>[AIRFLOW-4734] Upsert functionality for PostgresHook.insert_rows() (#8625)</p></li>
<li><p>Allow defining custom XCom class (#8560)</p></li>
</ul>
</div>
<div class="section" id="id90">
<h3>Bug Fixes<a class="headerlink" href="#id90" title="Permalink to this heading"></a></h3>
<ul class="simple">
<li><p>Add pre 1.10.11 Kubernetes Paths back with Deprecation Warning (#10067)</p></li>
<li><p>Fixes PodMutationHook for backwards compatibility (#9903)</p></li>
<li><p>Fix bug in executor_config when defining resources (#9935)</p></li>
<li><p>Respect DAG Serialization setting when running sync_perm (#10321)</p></li>
<li><p>Show correct duration on graph view for running task (#8311) (#8675)</p></li>
<li><p>Fix regression in SQLThresholdCheckOperator (#9312)</p></li>
<li><p>[AIRFLOW-6931] Fixed migrations to find all dependencies for MSSQL (#9891)</p></li>
<li><p>Avoid sharing session with RenderedTaskInstanceFields write and delete (#9993)</p></li>
<li><p>Fix clear future recursive when ExternalTaskMarker is used (#9515)</p></li>
<li><p>Handle IntegrityError while creating TIs (#10136)</p></li>
<li><p>Fix airflow-webserver startup errors when using Kerberos Auth (#10047)</p></li>
<li><p>Fixes treatment of open slots in scheduler (#9316) (#9505)</p></li>
<li><p>Fix KubernetesPodOperator reattachment (#10230)</p></li>
<li><p>Fix more PodMutationHook issues for backwards compatibility (#10084)</p></li>
<li><p>[AIRFLOW-5391] Do not re-run skipped tasks when they are cleared (#7276)</p></li>
<li><p>Fix task_instance_mutation_hook (#9910)</p></li>
<li><p>Fixes failing formatting of DAG file containing {} in docstring (#9779)</p></li>
<li><p>Fix is_terminal_support_colors function (#9734)</p></li>
<li><p>Fix PythonVirtualenvOperator when using <code class="docutils literal notranslate"><span class="pre">provide_context=True</span></code> (#8256)</p></li>
<li><p>Fix issue with mounting volumes from secrets (#10366)</p></li>
<li><p>BugFix: K8s Executor Multinamespace mode is evaluated to true by default (#10410)</p></li>
<li><p>Make KubernetesExecutor recognize kubernetes_labels (#10412)</p></li>
<li><p>Fix broken Kubernetes PodRuntimeInfoEnv (#10478)</p></li>
</ul>
</div>
<div class="section" id="id91">
<h3>Improvements<a class="headerlink" href="#id91" title="Permalink to this heading"></a></h3>
<ul class="simple">
<li><p>Use Hash of Serialized DAG to determine DAG is changed or not (#10227)</p></li>
<li><p>Update Serialized DAGs in Webserver when DAGs are Updated (#9851)</p></li>
<li><p>Do not Update Serialized DAGs in DB if DAG did not change (#9850)</p></li>
<li><p>Add __repr__ to SerializedDagModel (#9862)</p></li>
<li><p>Update JS packages to latest versions (#9811) (#9921)</p></li>
<li><p>UI Graph View: Focus upstream / downstream task dependencies on mouseover (#9303)</p></li>
<li><p>Allow <code class="docutils literal notranslate"><span class="pre">image</span></code> in <code class="docutils literal notranslate"><span class="pre">KubernetesPodOperator</span></code> to be templated (#10068)</p></li>
<li><p>[AIRFLOW-6843] Add delete_option_kwargs to delete_namespaced_pod (#7523)</p></li>
<li><p>Improve process terminating in scheduler_job (#8064)</p></li>
<li><p>Replace deprecated base classes used in bigquery_check_operator (#10272)</p></li>
<li><p>[AIRFLOW-5897] Allow setting -1 as pool slots value in webserver (#6550)</p></li>
<li><p>Limit all google-cloud api to &lt;2.0.0 (#10317)</p></li>
<li><p>[AIRFLOW-6706] Lazy load operator extra links (#7327) (#10318)</p></li>
<li><p>Add Snowflake support to SQL operator and sensor (#9843)</p></li>
<li><p>Makes multi-namespace mode optional (#9570)</p></li>
<li><p>Pin pyarrow &lt; 1.0</p></li>
<li><p>Pin pymongo version to &lt;3.11.0</p></li>
<li><p>Pin google-cloud-container to &lt;2 (#9901)</p></li>
<li><p>Dockerfile: Remove package.json and yarn.lock from the prod image (#9814)</p></li>
<li><p>Dockerfile: The group of embedded DAGs should be root to be OpenShift compatible (#9794)</p></li>
<li><p>Update upper limit of flask-swagger, gunicorn &amp; jinja2 (#9684)</p></li>
<li><p>Webserver: Sanitize values passed to origin param (#10334)</p></li>
<li><p>Sort connection type list in add/edit page alphabetically (#8692)</p></li>
</ul>
</div>
<div class="section" id="id92">
<h3>Doc only changes<a class="headerlink" href="#id92" title="Permalink to this heading"></a></h3>
<ul class="simple">
<li><p>Add new committers: Ry Walker &amp; Leah Cole to project.rst (#9892)</p></li>
<li><p>Add Qingping Hou to committers list (#9725)</p></li>
<li><p>Updated link to official documentation (#9629)</p></li>
<li><p>Create a short-link for Airflow Slack Invites (#10034)</p></li>
<li><p>Set language on code-block on docs/howto/email-config.rst (#10238)</p></li>
<li><p>Remove duplicate line from 1.10.10 CHANGELOG (#10289)</p></li>
<li><p>Improve heading on Email Configuration page (#10175)</p></li>
<li><p>Fix link for the Jinja Project in docs/tutorial.rst (#10245)</p></li>
<li><p>Create separate section for Cron Presets (#10247)</p></li>
<li><p>Add Syntax Highlights to code-blocks in docs/best-practices.rst (#10258)</p></li>
<li><p>Fix docstrings in BigQueryGetDataOperator (#10042)</p></li>
<li><p>Fix typo in Task Lifecycle section (#9867)</p></li>
<li><p>Make Secret Backend docs clearer about Variable &amp; Connection View (#8913)</p></li>
</ul>
</div>
</div>
<div class="section" id="airflow-1-10-11-2020-07-10">
<h2><a class="toc-backref" href="#id186">Airflow 1.10.11 (2020-07-10)</a><a class="headerlink" href="#airflow-1-10-11-2020-07-10" title="Permalink to this heading"></a></h2>
<div class="section" id="id93">
<h3>Significant Changes<a class="headerlink" href="#id93" title="Permalink to this heading"></a></h3>
<div class="section" id="use-null-as-default-value-for-dag-description">
<h4>Use NULL as default value for dag.description<a class="headerlink" href="#use-null-as-default-value-for-dag-description" title="Permalink to this heading"></a></h4>
<p>Now use NULL as default value for dag.description in dag table</p>
</div>
<div class="section" id="restrict-editing-dagrun-state-in-the-old-ui-flask-admin-based-ui">
<h4>Restrict editing DagRun State in the old UI (Flask-admin based UI)<a class="headerlink" href="#restrict-editing-dagrun-state-in-the-old-ui-flask-admin-based-ui" title="Permalink to this heading"></a></h4>
<dl class="simple">
<dt>Before 1.10.11 it was possible to edit DagRun State in the <code class="docutils literal notranslate"><span class="pre">/admin/dagrun/</span></code> page</dt><dd><p>to any text.</p>
</dd>
</dl>
<p>In Airflow 1.10.11+, the user can only choose the states from the list.</p>
</div>
<div class="section" id="experimental-api-will-deny-all-request-by-default">
<h4>Experimental API will deny all request by default.<a class="headerlink" href="#experimental-api-will-deny-all-request-by-default" title="Permalink to this heading"></a></h4>
<p>The previous default setting was to allow all API requests without authentication, but this poses security
risks to users who miss this fact. This changes the default for new installs to deny all requests by default.</p>
<p><strong>Note</strong>: This will not change the behavior for existing installs, please update check your airflow.cfg</p>
<p>If you wish to have the experimental API work, and aware of the risks of enabling this without authentication
(or if you have your own authentication layer in front of Airflow) you can get
the previous behaviour on a new install by setting this in your airflow.cfg:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="p">[</span><span class="n">api</span><span class="p">]</span>
<span class="n">auth_backend</span> <span class="o">=</span> <span class="n">airflow</span><span class="o">.</span><span class="n">api</span><span class="o">.</span><span class="n">auth</span><span class="o">.</span><span class="n">backend</span><span class="o">.</span><span class="n">default</span>
</pre></div>
</div>
</div>
<div class="section" id="xcom-values-can-no-longer-be-added-or-changed-from-the-webserver">
<h4>XCom Values can no longer be added or changed from the Webserver<a class="headerlink" href="#xcom-values-can-no-longer-be-added-or-changed-from-the-webserver" title="Permalink to this heading"></a></h4>
<p>Since XCom values can contain pickled data, we would no longer allow adding or
changing XCom values from the UI.</p>
</div>
<div class="section" id="default-for-run-as-user-configured-has-been-changed-to-50000-from-0">
<h4>Default for <code class="docutils literal notranslate"><span class="pre">run_as_user</span></code> configured has been changed to 50000 from 0<a class="headerlink" href="#default-for-run-as-user-configured-has-been-changed-to-50000-from-0" title="Permalink to this heading"></a></h4>
<p>The UID to run the first process of the Worker PODs when using has been changed to <code class="docutils literal notranslate"><span class="pre">50000</span></code>
from the previous default of <code class="docutils literal notranslate"><span class="pre">0</span></code>. The previous default was an empty string but the code used <code class="docutils literal notranslate"><span class="pre">0</span></code> if it was
empty string.</p>
<p><strong>Before</strong>:</p>
<div class="highlight-ini notranslate"><div class="highlight"><pre><span></span><span class="k">[kubernetes]</span><span class="w"></span>
<span class="na">run_as_user</span><span class="w"> </span><span class="o">=</span><span class="w"></span>
</pre></div>
</div>
<p><strong>After</strong>:</p>
<div class="highlight-ini notranslate"><div class="highlight"><pre><span></span><span class="k">[kubernetes]</span><span class="w"></span>
<span class="na">run_as_user</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">50000</span><span class="w"></span>
</pre></div>
</div>
<p>This is done to avoid running the container as <code class="docutils literal notranslate"><span class="pre">root</span></code> user.</p>
</div>
</div>
<div class="section" id="id94">
<h3>New Features<a class="headerlink" href="#id94" title="Permalink to this heading"></a></h3>
<ul class="simple">
<li><p>Add task instance mutation hook (#8852)</p></li>
<li><p>Allow changing Task States Colors (#9520)</p></li>
<li><p>Add support for AWS Secrets Manager as Secrets Backend (#8186)</p></li>
<li><p>Add Airflow info command to the CLI (#8704)</p></li>
<li><p>Add Local Filesystem Secret Backend (#8596)</p></li>
<li><p>Add Airflow config CLI command (#8694)</p></li>
<li><p>Add Support for Python 3.8 (#8836)(#8823)</p></li>
<li><p>Allow K8S worker pod to be configured from JSON/YAML file (#6230)</p></li>
<li><p>Add quarterly to crontab presets (#6873)</p></li>
<li><p>Add support for ephemeral storage on KubernetesPodOperator (#6337)</p></li>
<li><p>Add AirflowFailException to fail without any retry (#7133)</p></li>
<li><p>Add SQL Branch Operator (#8942)</p></li>
</ul>
</div>
<div class="section" id="id95">
<h3>Bug Fixes<a class="headerlink" href="#id95" title="Permalink to this heading"></a></h3>
<ul class="simple">
<li><p>Use NULL as dag.description default value (#7593)</p></li>
<li><p>BugFix: DAG trigger via UI error in RBAC UI (#8411)</p></li>
<li><p>Fix logging issue when running tasks (#9363)</p></li>
<li><p>Fix JSON encoding error in DockerOperator (#8287)</p></li>
<li><p>Fix alembic crash due to typing import (#6547)</p></li>
<li><p>Correctly restore upstream_task_ids when deserializing Operators (#8775)</p></li>
<li><p>Correctly store non-default Nones in serialized tasks/dags (#8772)</p></li>
<li><p>Correctly deserialize dagrun_timeout field on DAGs (#8735)</p></li>
<li><p>Fix tree view if config contains ” (#9250)</p></li>
<li><p>Fix Dag Run UI execution date with timezone cannot be saved issue (#8902)</p></li>
<li><p>Fix Migration for MSSQL (#8385)</p></li>
<li><p>RBAC ui: Fix missing Y-axis labels with units in plots (#8252)</p></li>
<li><p>RBAC ui: Fix missing task runs being rendered as circles instead (#8253)</p></li>
<li><p>Fix: DagRuns page renders the state column with artifacts in old UI (#9612)</p></li>
<li><p>Fix task and dag stats on home page (#8865)</p></li>
<li><p>Fix the trigger_dag api in the case of nested subdags (#8081)</p></li>
<li><p>UX Fix: Prevent undesired text selection with DAG title selection in Chrome (#8912)</p></li>
<li><p>Fix connection add/edit for spark (#8685)</p></li>
<li><p>Fix retries causing constraint violation on MySQL with DAG Serialization (#9336)</p></li>
<li><p>[AIRFLOW-4472] Use json.dumps/loads for templating lineage data (#5253)</p></li>
<li><p>Restrict google-cloud-texttospeech to &lt;v2 (#9137)</p></li>
<li><p>Fix pickling failure when spawning processes (#8671)</p></li>
<li><p>Pin Version of azure-cosmos to &lt;4 (#8956)</p></li>
<li><p>Azure storage 0.37.0 is not installable any more (#8833)</p></li>
<li><p>Fix modal_backdrop z-index in the UI (#7313)</p></li>
<li><p>Fix Extra Links in Gantt View (#8308)</p></li>
<li><p>Bug fix for EmrAddStepOperator init with cluster_name error (#9235)</p></li>
<li><p>Fix KubernetesPodOperator pod name length validation (#8829)</p></li>
<li><p>Fix non updating DAG code by checking against last modification time (#8266)</p></li>
<li><p>BugFix: Unpausing a DAG with catchup=False creates an extra DAG run (#8776)</p></li>
</ul>
</div>
<div class="section" id="id96">
<h3>Improvements<a class="headerlink" href="#id96" title="Permalink to this heading"></a></h3>
<ul class="simple">
<li><p>Improve add_dag_code_table migration (#8176)</p></li>
<li><p>Persistent display/filtering of DAG status (#8106)</p></li>
<li><p>Set unique logger names (#7330)</p></li>
<li><p>Update the version of cattrs from 0.9 to 1.0 to support Python 3.8 (#7100)</p></li>
<li><p>Reduce response payload size of /dag_stats and /task_stats (#8655)</p></li>
<li><p>Add authenticator parameter to snowflake_hook (#8642)</p></li>
<li><p>Show “Task Reschedule” table in Airflow Webserver (#9521)</p></li>
<li><p>Change worker_refresh_interval fallback to default of 30 (#9588)</p></li>
<li><p>Use pformat instead of str to render arguments in WebUI (#9587)</p></li>
<li><p>Simplify DagFileProcessorManager (#7521)</p></li>
<li><p>Reload gunicorn when plugins has been changed (#8997)</p></li>
<li><p>Fix the default value for store_dag_code (#9554)</p></li>
<li><p>Add support for fetching logs from running pods (#8626)</p></li>
<li><p>Persist start/end date and duration for DummyOperator Task Instance (#8663)</p></li>
<li><p>Ensure “started”/”ended” in tooltips are not shown if job not started (#8667)</p></li>
<li><p>Add context to execution_date_fn in ExternalTaskSensor (#8702)</p></li>
<li><p>Avoid color info in response of <code class="docutils literal notranslate"><span class="pre">/dag_stats</span></code> &amp; <code class="docutils literal notranslate"><span class="pre">/task_stats</span></code> (#8742)</p></li>
<li><p>Make loading plugins from entrypoint fault-tolerant (#8732)</p></li>
<li><p>Refactor Kubernetes worker config (#7114)</p></li>
<li><p>Add default <code class="docutils literal notranslate"><span class="pre">conf</span></code> parameter to Spark JDBC Hook (#8787)</p></li>
<li><p>Allow passing backend_kwargs to AWS SSM client (#8802)</p></li>
<li><p>Filter dags by clicking on tag (#8897)</p></li>
<li><p>Support k8s auth method in Vault Secrets provider (#8640)</p></li>
<li><p>Monitor pods by labels instead of names (#6377)</p></li>
<li><p>Optimize count query on /home (#8729)</p></li>
<li><p>Fix JSON string escape in tree view (#8551)</p></li>
<li><p>Add TaskInstance state to TI Tooltip to be colour-blind friendlier (#8910)</p></li>
<li><p>Add a tip to trigger DAG screen (#9049)</p></li>
<li><p>Use Markup for htmlcontent for landing_times (#9242)</p></li>
<li><p>Pinning max pandas version to 2.0 (lesser than) to allow pandas 1.0 (#7954)</p></li>
<li><p>Update example webserver_config.py to show correct CSRF config (#8944)</p></li>
<li><p>Fix displaying Executor Class Name in “Base Job” table (#8679)</p></li>
<li><p>Use existing DagBag for ‘dag_details’ &amp; ‘trigger’ Endpoints (#8501)</p></li>
<li><p>Flush pending Sentry exceptions before exiting (#7232)</p></li>
<li><p>Display DAG run conf in the list view (#6794)</p></li>
<li><p>Fix performance degradation when updating dagrun state (#8435)</p></li>
<li><p>Don’t use the <code class="docutils literal notranslate"><span class="pre">|safe</span></code> filter in code, it’s risky (#9180)</p></li>
<li><p>Validate only task commands are run by executors (#9178)</p></li>
<li><p>Show Deprecation warning on duplicate Task ids (#8728)</p></li>
<li><p>Move DAG._schedule_interval logic out of <code class="docutils literal notranslate"><span class="pre">DAG.__init__</span></code> (#8225)</p></li>
<li><p>Make retrieving Paused Dag ids a separate method (#7587)</p></li>
<li><p>Bulk fetch paused_dag_ids (#7476)</p></li>
<li><p>Add a configurable DAGs volume mount path for Kubernetes (#8147)</p></li>
<li><p>Add schedulername option for KubernetesPodOperator (#6088)</p></li>
<li><p>Support running git sync container as root (#6312)</p></li>
<li><p>Add extra options for Slack Webhook operator and Slack hook (#9409)</p></li>
<li><p>Monkey patch greenlet Celery pools (#8559)</p></li>
<li><p>Decrypt secrets from SystemsManagerParameterStoreBackend (#9214)</p></li>
<li><p>Prevent clickable sorting on non sortable columns in TI view (#8681)</p></li>
<li><p>Make hive macros py3 compatible (#8598)</p></li>
<li><p>Fix SVG tooltip positioning with custom scripting (#8269)</p></li>
<li><p>Avoid unnecessary sleep to maintain local task job heart rate (#6553)</p></li>
<li><p>Include some missing RBAC roles on User and Viewer roles (#9133)</p></li>
<li><p>Show Dag’s Markdown docs on Tree View (#9448)</p></li>
<li><p>Improved compatibility with Python 3.5+ - Convert signal.SIGTERM to int (#9207)</p></li>
<li><p>Add ‘main’ param to template_fields in DataprocSubmitPySparkJobOperator (#9154)</p></li>
<li><p>Make it possible to silence warnings from Airflow (#9208)</p></li>
<li><p>Remove redundant count query in BaseOperator.clear() (#9362)</p></li>
<li><p>Fix DB migration message (#8988)</p></li>
<li><p>Fix awkward log info in dbapi_hook (#8482)</p></li>
<li><p>Fix Celery default to no longer allow pickle (#7205)</p></li>
<li><p>Further validation that only task commands are run by executors (#9240)</p></li>
<li><p>Remove vendored nvd3 and slugify libraries (#9136)</p></li>
<li><p>Enable configurable git sync depth (#9094)</p></li>
<li><p>Reduce the required resources for the Kubernetes’s sidecar (#6062)</p></li>
<li><p>Refactor K8S codebase with k8s API models (#5481)</p></li>
<li><p>Move k8s executor out of contrib to closer match master (#8904)</p></li>
<li><p>Allow filtering using “event” and “owner” in “Log” view (#4881)</p></li>
<li><p>Add Yandex.Cloud custom connection to 1.10 (#8791)</p></li>
<li><p>Add table-hover css class to DAGs table (#5033)</p></li>
<li><p>Show un/pause errors in dags view. (#7669)</p></li>
<li><p>Restructure database queries on /home (#4872)</p></li>
<li><p>Add Cross Site Scripting defense (#6913)</p></li>
<li><p>Make Gantt tooltip the same as Tree and Graph view (#8220)</p></li>
<li><p>Add config to only delete worker pod on task failure (#7507)(#8312)</p></li>
<li><p>Remove duplicate error message on chart connection failure (#8476)</p></li>
<li><p>Remove default value spark_binary (#8508)</p></li>
<li><p>Expose Airflow Webserver Port in Production Docker Image (#8228)</p></li>
<li><p>Commit after each alembic migration (#4797)</p></li>
<li><p>KubernetesPodOperator fixes and test (#6524)</p></li>
<li><p>Docker Image: Add ADDITIONAL_AIRFLOW_EXTRAS (#9032)</p></li>
<li><p>Docker Image: Add ADDITIONAL_PYTHON_DEPS (#9031)</p></li>
<li><p>Remove httplib2 from Google requirements (#9194)</p></li>
<li><p>Merging multiple SQL operators (#9124)</p></li>
<li><p>Adds hive as extra in pyhive dependency (#9075)</p></li>
<li><p>Change default auth for experimental backend to deny_all (#9611)</p></li>
<li><p>Restrict changing XCom values from the Webserver (#9614)</p></li>
<li><p>Add __repr__ for DagTag so tags display properly in /dagmodel/show (#8719)</p></li>
<li><p>Functionality to shuffle HMS connections used by HiveMetastoreHook facilitating load balancing (#9280)</p></li>
<li><p>Expose SQLAlchemy’s connect_args and make it configurable (#6478)</p></li>
</ul>
</div>
<div class="section" id="id97">
<h3>Doc only changes<a class="headerlink" href="#id97" title="Permalink to this heading"></a></h3>
<ul class="simple">
<li><p>Add docs on using DAGRun.conf (#9578)</p></li>
<li><p>Enforce code-block directives in doc (#9443)</p></li>
<li><p>Carefully parse warning messages when building documentation (#8693)</p></li>
<li><p>Make KubernetesPodOperator clear in docs (#8444)</p></li>
<li><p>Improve language in Pod Mutation Hook docs (#8445)</p></li>
<li><p>Fix formatting of Pool docs in concepts.rst (#8443)</p></li>
<li><p>Make doc clearer about Airflow Variables using Environment Variables (#8427)</p></li>
<li><p>Fix pools doc for LocalExecutor (#7643)</p></li>
<li><p>Add Local and Sequential Executors to Doc (#8084)</p></li>
<li><p>Add documentation for CLI command Airflow dags test (#8251)</p></li>
<li><p>Fix typo in DAG Serialization documentation (#8317)</p></li>
<li><p>Add scheduler in production section (#7351)</p></li>
<li><p>Add a structural dag validation example (#6727)</p></li>
<li><p>Adding Task re-run documentation (#6295)</p></li>
<li><p>Fix outdated doc on settings.policy (#7532)</p></li>
<li><p>Add docs about reload_on_plugin_change option (#9575)</p></li>
<li><p>Add copy button to Code Blocks in Airflow Docs (#9450)</p></li>
<li><p>Update commands in docs for v1.10+ (#9585)</p></li>
<li><p>Add more info on dry-run CLI option (#9582)</p></li>
<li><p>Document default timeout value for SSHOperator (#8744)</p></li>
<li><p>Fix docs on creating CustomOperator (#8678)</p></li>
<li><p>Enhanced documentation around Cluster Policy (#8661)</p></li>
<li><p>Use sphinx syntax in concepts.rst (#7729)</p></li>
<li><p>Update README to remove Python 3.8 limitation for Master (#9451)</p></li>
<li><p>Add note about using dag_run.conf in BashOperator (#9143)</p></li>
<li><p>Improve tutorial - Include all imports statements (#8670)</p></li>
<li><p>Added more precise Python requirements to README.md (#8455)</p></li>
<li><p>Fix Airflow Stable version in README.md (#9360)</p></li>
<li><p>Update AWS connection example to show how to set from env var (#9191)</p></li>
<li><p>Fix list formatting of plugins doc. (#8873)</p></li>
<li><p>Add ‘Version Added’ on Secrets Backend docs (#8264)</p></li>
<li><p>Simplify language re roll-your-own secrets backend (#8257)</p></li>
<li><p>Add installation description for repeatable PyPi installation (#8513)</p></li>
<li><p>Add note extra links only render on when using RBAC webserver (#8788)</p></li>
<li><p>Remove unused Airflow import from docs (#9274)</p></li>
<li><p>Add PR/issue note in Contribution Workflow Example (#9177)</p></li>
<li><p>Use inclusive language - language matters (#9174)</p></li>
<li><p>Add docs to change Colors on the Webserver (#9607)</p></li>
<li><p>Change ‘initiate’ to ‘initialize’ in installation.rst (#9619)</p></li>
<li><p>Replace old Variables View Screenshot with new (#9620)</p></li>
<li><p>Replace old SubDag zoom screenshot with new (#9621)</p></li>
<li><p>Update docs about the change to default auth for experimental API (#9617)</p></li>
</ul>
</div>
</div>
<div class="section" id="airflow-1-10-10-2020-04-09">
<h2><a class="toc-backref" href="#id187">Airflow 1.10.10 (2020-04-09)</a><a class="headerlink" href="#airflow-1-10-10-2020-04-09" title="Permalink to this heading"></a></h2>
<div class="section" id="id98">
<h3>Significant Changes<a class="headerlink" href="#id98" title="Permalink to this heading"></a></h3>
<div class="section" id="setting-empty-string-to-a-airflow-variable-will-return-an-empty-string">
<h4>Setting Empty string to a Airflow Variable will return an empty string<a class="headerlink" href="#setting-empty-string-to-a-airflow-variable-will-return-an-empty-string" title="Permalink to this heading"></a></h4>
<p>Previously when you set an Airflow Variable with an empty string (<code class="docutils literal notranslate"><span class="pre">''</span></code>), the value you used to get
back was <code class="docutils literal notranslate"><span class="pre">None</span></code>. This will now return an empty string (<code class="docutils literal notranslate"><span class="pre">'''</span></code>)</p>
<p>Example:</p>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">Variable</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">&quot;test_key&quot;</span><span class="p">,</span> <span class="s2">&quot;&quot;</span><span class="p">)</span>
<span class="n">Variable</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;test_key&quot;</span><span class="p">)</span>
</pre></div>
</div>
<p>The above code returned <code class="docutils literal notranslate"><span class="pre">None</span></code> previously, now it will return <code class="docutils literal notranslate"><span class="pre">''</span></code>.</p>
</div>
<div class="section" id="make-behavior-of-none-failed-trigger-rule-consistent-with-documentation">
<h4>Make behavior of <code class="docutils literal notranslate"><span class="pre">none_failed</span></code> trigger rule consistent with documentation<a class="headerlink" href="#make-behavior-of-none-failed-trigger-rule-consistent-with-documentation" title="Permalink to this heading"></a></h4>
<dl class="simple">
<dt>The behavior of the <code class="docutils literal notranslate"><span class="pre">none_failed</span></code> trigger rule is documented as “all parents have not failed (<code class="docutils literal notranslate"><span class="pre">failed</span></code> or</dt><dd><p><code class="docutils literal notranslate"><span class="pre">upstream_failed</span></code>) i.e. all parents have succeeded or been skipped.” As previously implemented, the actual behavior
would skip if all parents of a task had also skipped.</p>
</dd>
</dl>
</div>
<div class="section" id="add-new-trigger-rule-none-failed-or-skipped">
<h4>Add new trigger rule <code class="docutils literal notranslate"><span class="pre">none_failed_or_skipped</span></code><a class="headerlink" href="#add-new-trigger-rule-none-failed-or-skipped" title="Permalink to this heading"></a></h4>
<dl class="simple">
<dt>The fix to <code class="docutils literal notranslate"><span class="pre">none_failed</span></code> trigger rule breaks workflows that depend on the previous behavior.</dt><dd><p>If you need the old behavior, you should change the tasks with <code class="docutils literal notranslate"><span class="pre">none_failed</span></code> trigger rule to <code class="docutils literal notranslate"><span class="pre">none_failed_or_skipped</span></code>.</p>
</dd>
</dl>
</div>
<div class="section" id="success-callback-will-be-called-when-a-task-in-marked-as-success-from-ui">
<h4>Success Callback will be called when a task in marked as success from UI<a class="headerlink" href="#success-callback-will-be-called-when-a-task-in-marked-as-success-from-ui" title="Permalink to this heading"></a></h4>
<p>When a task is marked as success by a user from Airflow UI - <code class="docutils literal notranslate"><span class="pre">on_success_callback</span></code> will be called</p>
</div>
</div>
<div class="section" id="id99">
<h3>New Features<a class="headerlink" href="#id99" title="Permalink to this heading"></a></h3>
<ul class="simple">
<li><p>[AIRFLOW-7048] Allow user to chose timezone to use in UI (#8046)</p></li>
<li><p>Add Production Docker image support (#7832)</p></li>
<li><p>Get Airflow Variables from Environment Variables (#7923)</p></li>
<li><p>Get Airflow Variables from Hashicorp Vault (#7944)</p></li>
<li><p>Get Airflow Variables from AWS Systems Manager Parameter Store (#7945)</p></li>
<li><p>Get Airflow Variables from GCP Secrets Manager (#7946)</p></li>
<li><p>[AIRFLOW-5705] Add secrets backend and support for AWS SSM / Get Airflow Connections from AWS Parameter Store(#6376)</p></li>
<li><p>[AIRFLOW-7104] Add Secret backend for GCP Secrets Manager / Get Airflow Connections from GCP Secrets Manager (#7795)</p></li>
<li><p>[AIRFLOW-7076] Add support for HashiCorp Vault as Secrets Backend / Get Airflow Connections from Hashicorp Vault (#7741)</p></li>
<li><p>[AIRFLOW-6685] Add ThresholdCheckOperator (#7353)</p></li>
<li><p>[AIRFLOW-7080] Add API endpoint to return a DAG’s paused state (#7737)</p></li>
</ul>
</div>
<div class="section" id="id100">
<h3>Bug Fixes<a class="headerlink" href="#id100" title="Permalink to this heading"></a></h3>
<ul class="simple">
<li><p>BugFix: Show task_id in the Graph View tooltip (#7859)</p></li>
<li><p>[AIRFLOW-6730] Use total_seconds instead of seconds (#7363)</p></li>
<li><p>[AIRFLOW-6167] Escape column name in create table in hive (#6741)</p></li>
<li><p>[AIRFLOW-6628] DAG auto-complete now suggests from all accessible DAGs (#7251)</p></li>
<li><p>[AIRFLOW-7113] Fix gantt render error (#7913)</p></li>
<li><p>[AIRFLOW-6399] Add _access control to validate deserialized DAGs (#7896)</p></li>
<li><p>[AIRFLOW-6399] Serialization: DAG access_control field should be decorated field in DAG serialization (#7879)</p></li>
<li><p>[AIRFLOW-4453] Make behavior of <code class="docutils literal notranslate"><span class="pre">none_failed</span></code> consistent with documentation (#7464)</p></li>
<li><p>[AIRFLOW-4363] Fix JSON encoding error (#7628)</p></li>
<li><p>[AIRFLOW-6683] Run REST API tests when DAGs are serialized (#7352)</p></li>
<li><p>[AIRFLOW-6704] Copy common TaskInstance attributes from Task (#7324)</p></li>
<li><p>[AIRFLOW-6734] Use configured base_template instead of hard-coding (#7367)</p></li>
<li><p>[AIRFLOW-7098] Simple salesforce release 1.0.0 breaks the build (#7775)</p></li>
<li><p>[AIRFLOW-6062] Executor would only delete workers in its own namespace (#7123)</p></li>
<li><p>[AIRFLOW-7074] Add Permissions to view SubDAGs (#7752)</p></li>
<li><p>[AIRFLOW-7025] Fix SparkSqlHook.run_query to handle its parameter properly (#7677)</p></li>
<li><p>[AIRFLOW-6855] Escape project_dataset_table in SQL query in gcs to bq operator (#7475)</p></li>
<li><p>[AIRFLOW-6949] Respect explicit conf to SparkSubmitOperator (#7575)</p></li>
<li><p>[AIRFLOW-6588] write_stdout and json_format are boolean (#7199)</p></li>
<li><p>[AIRFLOW-3439] Decode logs with ‘utf-8’ (#4474)</p></li>
<li><p>[AIRFLOW-6878] Fix misconfigured default value for kube_client_request_args</p></li>
<li><p>[AIRFLOW-5167] Update dependencies for GCP packages (#7116)</p></li>
<li><p>[AIRFLOW-6821] Success callback not called when task marked as success from UI (#7447)</p></li>
<li><p>[AIRFLOW-6740] Remove Undocumented, deprecated, dysfunctional PROXY_FIX_NUM_PROXIES (#7359)</p></li>
<li><p>[AIRFLOW-6728] Change various DAG info methods to POST (#7364)</p></li>
<li><p>[AIRFLOW-6997] Make sure worker pods initcontainers obtain env vars from config (#7663)</p></li>
<li><p>[AIRFLOW-7062] Fix pydruid release breaking the build (#7720)</p></li>
<li><p>[AIRFLOW-6040] ReadTimoutError in KubernetesExecutor should not raise exception (#7616)</p></li>
<li><p>[AIRFLOW-6943] Fix utf-8 encoded description in DAG in Python 2 (#7567)</p></li>
<li><p>[AIRFLOW-6892] Fix broken non-wheel releases (#7514)</p></li>
<li><p>[AIRFLOW-6789] BugFix: Fix Default Worker concurrency (#7494)</p></li>
<li><p>[AIRFLOW-6840] Bump up version of future (#7471)</p></li>
<li><p>[AIRFLOW-5705] Fix bugs in AWS SSM Secrets Backend (#7745)</p></li>
<li><p>[AIRFLOW-5705] Fix bug in Secrets Backend (#7742)</p></li>
<li><p>Fix CloudSecretsManagerBackend invalid connections_prefix (#7861)</p></li>
<li><p>[AIRFLOW-7045] BugFix: DebugExecutor fails to change task state. (#8073)</p></li>
<li><p>BugFix: Datetimepicker is stuck on the UI (#8092)</p></li>
<li><p>[AIRFLOW-5277] Gantt chart respects per-user the Timezone UI setting (#8096)</p></li>
<li><p>Fix timezones displayed in Task Instance tooltip (#8103)</p></li>
<li><p>BugFix: Fix writing &amp; deleting Dag Code for Serialized DAGs (#8151)</p></li>
<li><p>Make the default TI pool slots ‘1’ (#8153)</p></li>
<li><p>Fix 500 error in Security screens (#8165)</p></li>
<li><p>Fix Viewing Dag Code for Stateless Webserver (#8159)</p></li>
<li><p>Fix issue with sqlalchemy 1.3.16 (#8230)</p></li>
</ul>
</div>
<div class="section" id="id101">
<h3>Improvements<a class="headerlink" href="#id101" title="Permalink to this heading"></a></h3>
<ul class="simple">
<li><p>Use same tooltip for Graph and Tree views for TaskInstances (#8043)</p></li>
<li><p>Allow DateTimePicker in Webserver to actually pick times too (#8034)</p></li>
<li><p>[AIRFLOW-5590] Add run_id to trigger DAG run API response (#6256)</p></li>
<li><p>[AIRFLOW-6695] Can now pass dagrun conf when triggering dags via UI (#7312)</p></li>
<li><p>[AIRFLOW-5336] Add ability to make updating FAB perms on webserver in it optional (#5940)</p></li>
<li><p>[AIRFLOW-1467] Allow tasks to use more than one pool slot (#7160)</p></li>
<li><p>[AIRFLOW-6987] Avoid creating default connections (#7629)</p></li>
<li><p>[AIRFLOW-4175] S3Hook load_file should support ACL policy parameter (#7733)</p></li>
<li><p>[AIRFLOW-4438] Add Gzip compression to S3_hook (#7680)</p></li>
<li><p>Allow setting Airflow Variable values to empty string (#8021)</p></li>
<li><p>Dont schedule dummy tasks (#7880)</p></li>
<li><p>Prevent sequential scan of task instance table (#8014)</p></li>
<li><p>[AIRFLOW-7017] Respect default dag view in trigger dag origin (#7667)</p></li>
<li><p>[AIRFLOW-6837] Limit description length of a Dag on HomePage (#7457)</p></li>
<li><p>[AIRFLOW-6989] Display Rendered template_fields without accessing Dag files (#7633)</p></li>
<li><p>[AIRFLOW-5944] Rendering templated_fields without accessing DAG files (#6788)</p></li>
<li><p>[AIRFLOW-5946] DAG Serialization: Store source code in db (#7217)</p></li>
<li><p>[AIRFLOW-7079] Remove redundant code for storing template_fields (#7750)</p></li>
<li><p>[AIRFLOW-7024] Add the verbose parameter support to SparkSqlOperator (#7676)</p></li>
<li><p>[AIRFLOW-6733] Extend not replace template (#7366)</p></li>
<li><p>[AIRFLOW-7001] Further fix for the MySQL 5.7 UtcDateTime (#7655)</p></li>
<li><p>[AIRFLOW-6014] Handle pods which are preempted &amp; deleted by kubernetes but not restarted (#6606)</p></li>
<li><p>[AIRFLOW-6950] Remove refresh_executor_config from ti.refresh_from_db (#7577)</p></li>
<li><p>[AIRFLOW-7016] Sort dag tags in the UI (#7661)</p></li>
<li><p>[AIRFLOW-6762] Fix link to “Suggest changes on this page” (#7387)</p></li>
<li><p>[AIRFLOW-6948] Remove ASCII Airflow from version command (#7572)</p></li>
<li><p>[AIRFLOW-6767] Correct name for default Athena workgroup (#7394)</p></li>
<li><p>[AIRFLOW-6905] Update pin.svg with new pinwheel (#7524)</p></li>
<li><p>[AIRFLOW-6801] Make use of ImportError.timestamp (#7425)</p></li>
<li><p>[AIRFLOW-6830] Add Subject/MessageAttributes to SNS hook and operator (#7451)</p></li>
<li><p>[AIRFLOW-6630] Resolve handlebars advisory (#7284)</p></li>
<li><p>[AIRFLOW-6945] MySQL 5.7 is used in v1-10-test as an option</p></li>
<li><p>[AIRFLOW-6871] Optimize tree view for large DAGs (#7492)</p></li>
<li><p>[AIRFLOW-7063] Fix dag.clear() slowness caused by count (#7723)</p></li>
<li><p>[AIRFLOW-7023] Remove duplicated package definitions in setup.py (#7675)</p></li>
<li><p>[AIRFLOW-7001] Time zone removed from MySQL TIMSTAMP field inserts</p></li>
<li><p>[AIRFLOW-7105] Unify Secrets Backend method interfaces (#7830)</p></li>
<li><p>Make BaseSecretsBackend.build_path generic (#7948)</p></li>
<li><p>Allow hvac package installation using ‘hashicorp’ extra (#7915)</p></li>
<li><p>Standardize SecretBackend class names (#7846)</p></li>
<li><p>[AIRFLOW-5705] Make AwsSsmSecretsBackend consistent with VaultBackend (#7753)</p></li>
<li><p>[AIRFLOW-7045] Update SQL query to delete RenderedTaskInstanceFields (#8051)</p></li>
<li><p>Handle DST better in Task Instance tool tips (#8104)</p></li>
</ul>
</div>
<div class="section" id="id102">
<h3>Misc/Internal<a class="headerlink" href="#id102" title="Permalink to this heading"></a></h3>
<ul class="simple">
<li><p>Fix Flaky TriggerDAG UI test (#8022)</p></li>
<li><p>Remove unnecessary messages in CI (#7951)</p></li>
<li><p>Fixes too high parallelism in CI (#7947)</p></li>
<li><p>Install version is not persistent in breeze (#7914)</p></li>
<li><p>Fixed automated check for image rebuild (#7912)</p></li>
<li><p>Move Dockerfile to Dockerfile.ci (#7829)</p></li>
<li><p>Generate requirements are now sorted (#8040)</p></li>
<li><p>Change name of the common environment initialization function (#7805)</p></li>
<li><p>Requirements now depend on Python version (#7841)</p></li>
<li><p>Bring back reset db explicitly called at CI entry (#7798)</p></li>
<li><p>Fixes unclean installation of Airflow 1.10 (#7796)</p></li>
<li><p>[AIRFLOW-7029] Use separate docker image for running license check (#7678)</p></li>
<li><p>[AIRFLOW-5842] Switch to Debian buster image as a base (#7647)</p></li>
<li><p>[AIRFLOW-5828] Move build logic out from hooks/build (#7618)</p></li>
<li><p>[AIRFLOW-6839] Even more mypy speed improvements (#7460)</p></li>
<li><p>[AIRFLOW-6820] split breeze into functions (#7433)</p></li>
<li><p>[AIRFLOW-7097] Install gcloud beta components in CI image (#7772)</p></li>
<li><p>[AIRFLOW-7018] fixing travis’s job name escaping problem (#7668)</p></li>
<li><p>[AIRFLOW-7054] Breeze has an option now to reset db at entry (#7710)</p></li>
<li><p>[AIRFLOW-7005] Added exec command to Breeze (#7649)</p></li>
<li><p>[AIRFLOW-7015] Detect Dockerhub repo/user when building on Dockerhub (#7673)</p></li>
<li><p>[AIRFLOW-6727] Fix minor bugs in Release Management scripts (#7355)</p></li>
<li><p>[AIRFLOW-7013] Automated check if Breeze image needs to be pulled (#7656)</p></li>
<li><p>[AIRFLOW-7010] Skip in-container checks for Dockerhub builds (#7652)</p></li>
<li><p>[AIRFLOW-7011] Pin JPype release to allow to build 1.10 images</p></li>
<li><p>[AIRFLOW-7006] Fix missing +e in Breeze script (#7648)</p></li>
<li><p>[AIRFLOW-6979] Fix breeze test-target specific test param issue (#7614)</p></li>
<li><p>[AIRFLOW-6932] Add restart-environment command to Breeze</p></li>
<li><p>[AIRFLOW-6919] Make Breeze DAG-test friendly (#7539)</p></li>
<li><p>[AIRFLOW-6838] Introduce real subcommands for Breeze (#7515)</p></li>
<li><p>[AIRFLOW-6763] Make systems tests ready for backport tests (#7389)</p></li>
<li><p>[AIRFLOW-6866] Fix wrong export for Mac on Breeze (#7485)</p></li>
<li><p>[AIRFLOW-6842] Skip fixing ownership on Mac (#7469)</p></li>
<li><p>[AIRFLOW-6841] Fixed unbounded variable on Mac (#7465)</p></li>
<li><p>[AIRFLOW-7067] Pinned version of Apache Airflow (#7730)</p></li>
<li><p>[AIRFLOW-7058] Add support for different DB versions (#7717)</p></li>
<li><p>[AIRFLOW-7002] Get rid of yaml “parser” in bash (#7646)</p></li>
<li><p>[AIRFLOW-6972] Shorter frequently used commands in Breeze (#7608)</p></li>
</ul>
</div>
<div class="section" id="id103">
<h3>Doc only changes<a class="headerlink" href="#id103" title="Permalink to this heading"></a></h3>
<ul class="simple">
<li><p>Fix typo for store_serialized_dags config (#7952)</p></li>
<li><p>Fix broken link in README.md (#7893)</p></li>
<li><p>Separate supported Postgres versions with comma (#7892)</p></li>
<li><p>Fix grammar in setup.py (#7877)</p></li>
<li><p>Add Jiajie Zhong to committers list (#8047)</p></li>
<li><p>Update Security doc for 1.10.* for auth backends (#8072)</p></li>
<li><p>Fix Example in config_templates for Secrets Backend (#8074)</p></li>
<li><p>Add backticks in IMAGES.rst command description (#8075)</p></li>
<li><p>Change version_added for store_dag_code config (#8076)</p></li>
<li><p>[AIRFLOW-XXXX] Remove duplicate docs</p></li>
<li><p>[AIRFLOW-XXXX] Remove the defunct limitation of Dag Serialization (#7716)</p></li>
<li><p>[AIRFLOW-XXXX] Add prerequisite tasks for all GCP operators guide (#6049)</p></li>
<li><p>[AIRFLOW-XXXX] Simplify AWS/Azure/Databricks operators listing (#6047)</p></li>
<li><p>[AIRFLOW-XXXX] Add external reference to all GCP operator guide (#6048)</p></li>
<li><p>[AIRFLOW-XXXX] Simplify GCP operators listing</p></li>
<li><p>[AIRFLOW-XXXX] Simplify Qubole operators listing</p></li>
<li><p>[AIRFLOW-XXXX] Add autogenerated TOC (#6038)</p></li>
<li><p>[AIRFLOW-XXXX] Create “Using the CLI” page (#5823)</p></li>
<li><p>[AIRFLOW-XXXX] Group references in one section (#5776)</p></li>
<li><p>[AIRFLOW-XXXX] Fix analytics doc (#5885)</p></li>
<li><p>[AIRFLOW-XXXX] Add S3 Logging section (#6039)</p></li>
<li><p>[AIRFLOW-XXXX] Move Azure Logging section above operators (#6040)</p></li>
<li><p>[AIRFLOW-XXXX] Update temp link to a fixed link (#7715)</p></li>
<li><p>[AIRFLOW-XXXX] Add Updating.md section for 1.10.9 (#7385)</p></li>
<li><p>[AIRFLOW-XXXX] Remove duplication in BaseOperator docstring (#7321)</p></li>
<li><p>[AIRFLOW-XXXX] Update tests info in CONTRIBUTING.rst (#7466)</p></li>
<li><p>[AIRFLOW-XXXX] Small BREEZE.rst update (#7487)</p></li>
<li><p>[AIRFLOW-XXXX] Add instructions for logging to localstack S3 (#7461)</p></li>
<li><p>[AIRFLOW-XXXX] Remove travis config warnings (#7467)</p></li>
<li><p>[AIRFLOW-XXXX] Add communication chapter to contributing (#7204)</p></li>
<li><p>[AIRFLOW-XXXX] Add known issue - example_dags/__init__.py (#7444)</p></li>
<li><p>[AIRFLOW-XXXX] Fix breeze build-docs (#7445)</p></li>
<li><p>[AIRFLOW-XXXX] Less verbose docker builds</p></li>
<li><p>[AIRFLOW-XXXX] Speed up mypy runs (#7421)</p></li>
<li><p>[AIRFLOW-XXXX] Fix location of kubernetes tests (#7373)</p></li>
<li><p>[AIRFLOW-XXXX] Remove quotes from domains in Google Oauth (#4226)</p></li>
<li><p>[AIRFLOW-XXXX] Add explicit info about JIRAs for code-related PRs (#7318)</p></li>
<li><p>[AIRFLOW-XXXX] Fix typo in the word committer (#7392)</p></li>
<li><p>[AIRFLOW-XXXX] Remove duplicated paragraph in docs (#7662)</p></li>
<li><p>Fix reference to KubernetesPodOperator (#8100)</p></li>
</ul>
</div>
</div>
<div class="section" id="airflow-1-10-9-2020-02-07">
<h2><a class="toc-backref" href="#id188">Airflow 1.10.9 (2020-02-07)</a><a class="headerlink" href="#airflow-1-10-9-2020-02-07" title="Permalink to this heading"></a></h2>
<div class="section" id="id104">
<h3>Significant Changes<a class="headerlink" href="#id104" title="Permalink to this heading"></a></h3>
<p>No significant changes.</p>
</div>
<div class="section" id="id105">
<h3>Bug Fixes<a class="headerlink" href="#id105" title="Permalink to this heading"></a></h3>
<ul class="simple">
<li><p>[AIRFLOW-6751] Pin Werkzeug (dependency of a number of our dependencies) to &lt; 1.0.0 (#7377)</p></li>
</ul>
</div>
</div>
<div class="section" id="airflow-1-10-8-2020-02-07">
<h2><a class="toc-backref" href="#id189">Airflow 1.10.8 (2020-02-07)</a><a class="headerlink" href="#airflow-1-10-8-2020-02-07" title="Permalink to this heading"></a></h2>
<div class="section" id="id106">
<h3>Significant Changes<a class="headerlink" href="#id106" title="Permalink to this heading"></a></h3>
<div class="section" id="failure-callback-will-be-called-when-task-is-marked-failed">
<h4>Failure callback will be called when task is marked failed<a class="headerlink" href="#failure-callback-will-be-called-when-task-is-marked-failed" title="Permalink to this heading"></a></h4>
<p>When task is marked failed by user or task fails due to system failures - on failure call back will be called as part of clean up</p>
<p>See <a class="reference external" href="https://jira.apache.org/jira/browse/AIRFLOW-5621">AIRFLOW-5621</a> for details</p>
</div>
</div>
<div class="section" id="id107">
<h3>New Features<a class="headerlink" href="#id107" title="Permalink to this heading"></a></h3>
<ul class="simple">
<li><p>[AIRFLOW-4026] Add filter by DAG tags (#6489)</p></li>
<li><p>[AIRFLOW-6613] Center dag on graph view load (#7238)</p></li>
<li><p>[AIRFLOW-5843] Add conf option to Add DAG Run view (#7281)</p></li>
<li><p>[AIRFLOW-4495] Allow externally triggered dags to run for future exec dates (#7038)</p></li>
</ul>
</div>
<div class="section" id="id108">
<h3>Improvements<a class="headerlink" href="#id108" title="Permalink to this heading"></a></h3>
<ul class="simple">
<li><p>[AIRFLOW-6438] Filter DAGs returned by blocked (#7019)</p></li>
<li><p>[AIRFLOW-6666] Resolve js-yaml advisory (#7283)</p></li>
<li><p>[AIRFLOW-6632] Bump dagre-d3 to resolve lodash CVE advisory (#7280)</p></li>
<li><p>[AIRFLOW-6667] Resolve serialize-javascript advisory (#7282)</p></li>
<li><p>[AIRFLOW-6451] self._print_stat() in dag_processing.py should be skipable (#7134)</p></li>
<li><p>[AIRFLOW-6495] Load DAG only once when running a task using StandardTaskRunner (#7090)</p></li>
<li><p>[AIRFLOW-6319] Add support for AWS Athena workgroups (#6871)</p></li>
<li><p>[AIRFLOW-6677] Remove deprecation warning from SQLAlchmey (#7289)</p></li>
<li><p>[AIRFLOW-6428] Fix import path for airflow.utils.dates.days_ago in Example DAGs (#7007)</p></li>
<li><p>[AIRFLOW-6595] Use TaskNotFound exception instead of AirflowException (#7210)</p></li>
<li><p>[AIRFLOW-6620] Mock celery in worker cli test (#7243)</p></li>
<li><p>[AIRFLOW-6608] Change logging level for Bash &amp; PyOperator Env exports</p></li>
<li><p>[AIRFLOW-2279] Clear tasks across DAGs if marked by ExternalTaskMarker (#6633)</p></li>
<li><p>[AIRFLOW-6359] Make Spark status_poll_interval explicit (#6978)</p></li>
<li><p>[AIRFLOW-6359] spark_submit_hook.py status polling interval config (#6909)</p></li>
<li><p>[AIRFLOW-6316] Use exampleinclude directives in tutorial.rst (#6868)</p></li>
<li><p>[AIRFLOW-6519] Make TI logs constants in Webserver configurable (#7113)</p></li>
<li><p>[AIRFLOW-6327] http_hook: Accept json= parameter for payload (#6886)</p></li>
<li><p>[AIRFLOW-6261] flower_basic_auth eligible to _cmd (#6825)</p></li>
<li><p>[AIRFLOW-6238] Filter dags returned by dag_stats</p></li>
<li><p>[AIRFLOW-5616] Switch PrestoHook from pyhive to presto-python-client</p></li>
<li><p>[AIRFLOW-6611] Add proxy_fix configs to default_airflow.cfg (#7236)</p></li>
<li><p>[AIRFLOW-6557] Add test for newly added fields in BaseOperator (#7162)</p></li>
<li><p>[AIRFLOW-6584] Pin cassandra driver (#7194)</p></li>
<li><p>[AIRFLOW-6537] Fix backticks in RST files (#7140)</p></li>
<li><p>[AIRFLOW-4428] Error if exec_date before default_args.start_date in trigger_dag (#6948)</p></li>
<li><p>[AIRFLOW-6330] Show cli help when param blank or typo (#6883)</p></li>
<li><p>[AIRFLOW-4113] Unpin boto3 (#6884)</p></li>
<li><p>[AIRFLOW-6181] Add DebugExecutor (#6740)</p></li>
<li><p>[AIRFLOW-6504] Allow specifying configmap for Airflow Local Setting (#7097)</p></li>
<li><p>[AIRFLOW-6436] Cleanup for Airflow configs doc generator code (#7036)</p></li>
<li><p>[AIRFLOW-6436] Add x_frame_enabled config in config.yml (#7024)</p></li>
<li><p>[AIRFLOW-6436] Create &amp; Automate docs on Airflow Configs (#7015)</p></li>
<li><p>[AIRFLOW-6527] Make send_task_to_executor timeout configurable (#7143)</p></li>
<li><p>[AIRFLOW-6272] Switch from npm to yarnpkg for managing front-end dependencies (#6844)</p></li>
<li><p>[AIRFLOW-6350] Security - spark submit operator logging+exceptions should mask passwords</p></li>
<li><p>[AIRFLOW-6358] Log details of failed task (#6908)</p></li>
<li><p>[AIRFLOW-5149] Skip SLA checks config (#6923)</p></li>
<li><p>[AIRFLOW-6057] Update template_fields of the PythonSensor (#6656)</p></li>
<li><p>[AIRFLOW-4445] Mushroom cloud errors too verbose (#6952)</p></li>
<li><p>[AIRFLOW-6394] Simplify github PR template (#6955)</p></li>
<li><p>[AIRFLOW-5385] spark hook does not work on spark 2.3/2.4 (#6976)</p></li>
</ul>
</div>
<div class="section" id="id109">
<h3>Bug Fixes<a class="headerlink" href="#id109" title="Permalink to this heading"></a></h3>
<ul class="simple">
<li><p>[AIRFLOW-6345] Ensure arguments to ProxyFix are integers (#6901)</p></li>
<li><p>[AIRFLOW-6576] Fix scheduler crash caused by deleted task with sla misses (#7187)</p></li>
<li><p>[AIRFLOW-6686] Fix syntax error constructing list of process ids (#7298)</p></li>
<li><p>[AIRFLOW-6683] REST API respects store_serialized_dag setting (#7296)</p></li>
<li><p>[AIRFLOW-6553] Add upstream_failed in instance state filter to WebUI (#7159)</p></li>
<li><p>[AIRFLOW-6357] Highlight nodes in Graph UI if task id contains dots (#6904)</p></li>
<li><p>[AIRFLOW-3349] Use None instead of False as value for encoding in StreamLogWriter (#7329)</p></li>
<li><p>[AIRFLOW-6627] Email with incorrect DAG not delivered (#7250)</p></li>
<li><p>[AIRFLOW-6637] Fix Airflow test command in 1.10.x</p></li>
<li><p>[AIRFLOW-6636] Avoid exceptions when printing task instance</p></li>
<li><p>[AIRFLOW-6522] Clear task log file before starting to fix duplication in S3TaskHandler (#7120)</p></li>
<li><p>[AIRFLOW-5501] Make default <code class="docutils literal notranslate"><span class="pre">in_cluster</span></code> value in KubernetesPodOperator respect config (#6124)</p></li>
<li><p>[AIRFLOW-6514] Use RUNNING_DEPS to check run from UI (#6367)</p></li>
<li><p>[AIRFLOW-6381] Remove styling based on DAG id from DAGs page (#6985)</p></li>
<li><p>[AIRFLOW-6434] Add return statement back to DockerOperator.execute (#7013)</p></li>
<li><p>[AIRFLOW-2516] Fix mysql deadlocks (#6988)</p></li>
<li><p>[AIRFLOW-6528] Disable flake8 W503 line break before binary operator (#7124)</p></li>
<li><p>[AIRFLOW-6517] Make merge_dicts function recursive (#7111)</p></li>
<li><p>[AIRFLOW-5621] Failure callback is not triggered when marked Failed on UI (#7025)</p></li>
<li><p>[AIRFLOW-6353] Security - ui - add click jacking defense (#6995)</p></li>
<li><p>[AIRFLOW-6348] Security - cli.py is currently printing logs with password (#6915)</p></li>
<li><p>[AIRFLOW-6323] Remove non-ascii letters from default config (#6878)</p></li>
<li><p>[AIRFLOW-6506] Fix do_xcom_push defaulting to True in KubernetesPodOperator (#7122)</p></li>
<li><p>[AIRFLOW-6516] BugFix: airflow.cfg does not exist in Volume Mounts (#7109)</p></li>
<li><p>[AIRFLOW-6427] Fix broken example_qubole_operator dag (#7005)</p></li>
<li><p>[AIRFLOW-6385] BugFix: SlackAPIPostOperator fails when blocks not set (#7022)</p></li>
<li><p>[AIRFLOW-6347] BugFix: Can’t get task logs when serialization is enabled (#7092)</p></li>
<li><p>[AIRFLOW-XXXX] Fix downgrade of db migration 0e2a74e0fc9f (#6859)</p></li>
<li><p>[AIRFLOW-6366] Fix migrations for MS SQL Server (#6920)</p></li>
<li><p>[AIRFLOW-5406] Allow spark without kubernetes (#6921)</p></li>
<li><p>[AIRFLOW-6229] SparkSubmitOperator polls forever if status JSON can’t… (#6918)</p></li>
<li><p>[AIRFLOW-6352] Security - ui - add login timeout (#6912)</p></li>
<li><p>[AIRFLOW-6397] Ensure sub_process attribute exists before trying to kill it (#6958)</p></li>
<li><p>[AIRFLOW-6400] Fix pytest not working on Windows (#6964)</p></li>
<li><p>[AIRFLOW-6418] Remove SystemTest.skip decorator (#6991)</p></li>
<li><p>[AIRFLOW-6425] Serialization: Add missing DAG parameters to JSON Schema (#7002)</p></li>
</ul>
</div>
<div class="section" id="id110">
<h3>Misc/Internal<a class="headerlink" href="#id110" title="Permalink to this heading"></a></h3>
<ul class="simple">
<li><p>[AIRFLOW-6467] Use self.dag i/o creating a new one (#7067)</p></li>
<li><p>[AIRFLOW-6490] Improve time delta comparison in local task job tests (#7083)</p></li>
<li><p>[AIRFLOW-5814] Implementing Presto hook tests (#6491)</p></li>
<li><p>[AIRFLOW-5704] Improve Kind Kubernetes scripts for local testing (#6516)</p></li>
<li><p>[AIRFLOW-XXXX] Move airflow-config-yaml pre-commit before pylint (#7108)</p></li>
<li><p>[AIRFLOW-XXXX] Improve clarity of confirm message (#7110)</p></li>
<li><p>[AIRFLOW-6662] install dumb init (#7300)</p></li>
<li><p>[AIRFLOW-6705] One less chatty message at breeze initialisation (#7326)</p></li>
<li><p>[AIRFLOW-6705] Less chatty integration/backend checks (#7325)</p></li>
<li><p>[AIRFLOW-6662] Switch to –init docker flag for signal propagation (#7278)</p></li>
<li><p>[AIRFLOW-6661] Fail after 50 failing tests (#7277)</p></li>
<li><p>[AIRFLOW-6607] Get rid of old local scripts for Breeze (#7225)</p></li>
<li><p>[AIRFLOW-6589] BAT tests run in pre-commit on bash script changes (#7203)</p></li>
<li><p>[AIRFLOW-6592] Doc build is moved to test phase (#7208)</p></li>
<li><p>[AIRFLOW-6641] Better diagnostics for kubernetes flaky tests (#7261)</p></li>
<li><p>[AIRFLOW-6642] Make local task job test less flaky (#7262)</p></li>
<li><p>[AIRFLOW-6643] Fix flakiness of kerberos tests</p></li>
<li><p>[AIRFLOW-6638] Remove flakiness test from test_serialized_db remove</p></li>
<li><p>[AIRFLOW-6701] Rat is downloaded from stable backup/mirrors (#7323)</p></li>
<li><p>[AIRFLOW-6702] Dumping kind logs to file.io. (#7319)</p></li>
<li><p>[AIRFLOW-6491] Improve handling of Breeze parameters (#7084)</p></li>
<li><p>[AIRFLOW-6470] Avoid pipe to file when do curl (#7063)</p></li>
<li><p>[AIRFLOW-6471] Add pytest-instafail plugin (#7064)</p></li>
<li><p>[AIRFLOW-6462] Limit exported variables in Dockerfile/Breeze (#7057)</p></li>
<li><p>[AIRFLOW-6465] Add bash autocomplete for Airflow in Breeze (#7060)</p></li>
<li><p>[AIRFLOW-6464] Add cloud providers CLI tools in Breeze (#7059)</p></li>
<li><p>[AIRFLOW-6461] Remove silent flags in Dockerfile (#7052)</p></li>
<li><p>[AIRFLOW-6459] Increase verbosity of pytest (#7049)</p></li>
<li><p>[AIRFLOW-6370] Skip Cassandra tests if cluster is not up (#6926)</p></li>
<li><p>[AIRFLOW-6511] Remove BATS docker containers (#7103)</p></li>
<li><p>[AIRFLOW-6475] Remove duplication of volume mount specs in Breeze.. (#7065)</p></li>
<li><p>[AIRFLOW-6489] Add BATS support for Bash unit testing (#7081)</p></li>
<li><p>[AIRFLOW-6387] print details of success/skipped task (#6956)</p></li>
<li><p>[AIRFLOW-6568] Add Emacs related files to .gitignore (#7175)</p></li>
<li><p>[AIRFLOW-6575] Entropy source for CI tests is changed to unblocking (#7185)</p></li>
<li><p>[AIRFLOW-6496] Separate integrations in tests (#7091)</p></li>
<li><p>[AIRFLOW-6634] Set PYTHONPATH in interactive Breeze</p></li>
<li><p>[AIRFLOW-6564] Additional diagnostics information on CI check failure (#7172)</p></li>
<li><p>[AIRFLOW-6383] Add no trailing-whitespace pre-commit hook (#6941)</p></li>
</ul>
</div>
<div class="section" id="id111">
<h3>Doc only changes<a class="headerlink" href="#id111" title="Permalink to this heading"></a></h3>
<ul class="simple">
<li><p>[AIRFLOW-XXXX] Consistency fixes in new documentation (#7207)</p></li>
<li><p>[AIRFLOW-XXXX] Improve grammar and structure in FAQ doc (#7291)</p></li>
<li><p>[AIRFLOW-XXXX] Fix email configuration link in CONTRIBUTING.rst (#7311)</p></li>
<li><p>[AIRFLOW-XXXX] Update docs with new BranchPythonOperator behaviour (#4682)</p></li>
<li><p>[AIRFLOW-XXXX] Fix Typo in scripts/ci/ci_run_airflow_testing.sh (#7235)</p></li>
<li><p>[AIRFLOW-XXXX] Screenshot showing disk space configuration for OSX (#7226)</p></li>
<li><p>[AIRFLOW-XXXX] Add mentoring information to contributing docs (#7202)</p></li>
<li><p>[AIRFLOW-XXXX] Add rebase info to contributing (#7201)</p></li>
<li><p>[AIRFLOW-XXXX] Increase verbosity of static checks in CI (#7200)</p></li>
<li><p>[AIRFLOW-XXXX] Adds branching strategy to documentation (#7193)</p></li>
<li><p>[AIRFLOW-XXXX] Move email configuration from the concept page (#7189)</p></li>
<li><p>[AIRFLOW-XXXX] Update task lifecycle diagram (#7161)</p></li>
<li><p>[AIRFLOW-XXXX] Fix reference in concepts doc (#7135)</p></li>
<li><p>[AIRFLOW-XXXX] Clear debug docs (#7104)</p></li>
<li><p>[AIRFLOW-XXXX] Fix typos and broken links in development docs (#7086)</p></li>
<li><p>[AIRFLOW-XXXX] Clarify wait_for_downstream and execution_date (#6999)</p></li>
<li><p>[AIRFLOW-XXXX] Add <code class="docutils literal notranslate"><span class="pre">airflow</span> <span class="pre">dags</span> <span class="pre">show</span></code> command guide (#7014)</p></li>
<li><p>[AIRFLOW-XXXX] Update operation chaining documentation (#7018)</p></li>
<li><p>[AIRFLOW-XXXX] Add <code class="docutils literal notranslate"><span class="pre">.autoenv_leave.zsh</span></code> to .gitignore (#6986)</p></li>
<li><p>[AIRFLOW-XXXX] Fix development packages installation instructions (#6942)</p></li>
<li><p>[AIRFLOW-XXXX] Update committers list (#7212)</p></li>
<li><p>[AIRFLOW-XXXX] Move UPDATING changes into correct versions (#7166)</p></li>
<li><p>[AIRFLOW-XXXX] Add Documentation for check_slas flag (#6974)</p></li>
<li><p>[AIRFLOW-XXXX] Fix gcp keyfile_dict typo (#6962)</p></li>
<li><p>[AIRFLOW-XXXX] Add tips for writing a note in UPDATIND.md (#6960)</p></li>
<li><p>[AIRFLOW-XXXX] Add note warning that bash&gt;4.0 is required for docs build script (#6947)</p></li>
<li><p>[AIRFLOW-XXXX] Add autoenv to gitignore (#6946)</p></li>
<li><p>[AIRFLOW-XXXX] Fix GCSTaskHandler Comment Typo (#6928)</p></li>
<li><p>[AIRFLOW-XXXX] Fix broken DAG Serialization Link (#6891)</p></li>
<li><p>[AIRFLOW-XXXX] Add versions_added field to configs</p></li>
</ul>
</div>
</div>
<div class="section" id="airflow-1-10-7-2019-12-24">
<h2><a class="toc-backref" href="#id190">Airflow 1.10.7 (2019-12-24)</a><a class="headerlink" href="#airflow-1-10-7-2019-12-24" title="Permalink to this heading"></a></h2>
<div class="section" id="id112">
<h3>Significant Changes<a class="headerlink" href="#id112" title="Permalink to this heading"></a></h3>
<div class="section" id="changes-in-experimental-api-execution-date-microseconds-replacement">
<h4>Changes in experimental API execution_date microseconds replacement<a class="headerlink" href="#changes-in-experimental-api-execution-date-microseconds-replacement" title="Permalink to this heading"></a></h4>
<p>The default behavior was to strip the microseconds (and milliseconds, etc) off of all dag runs triggered by
by the experimental REST API. The default behavior will change when an explicit execution_date is
passed in the request body. It will also now be possible to have the execution_date generated, but
keep the microseconds by sending <code class="docutils literal notranslate"><span class="pre">replace_microseconds=false</span></code> in the request body. The default
behavior can be overridden by sending <code class="docutils literal notranslate"><span class="pre">replace_microseconds=true</span></code> along with an explicit execution_date</p>
</div>
<div class="section" id="infinite-pool-size-and-pool-size-query-optimization">
<h4>Infinite pool size and pool size query optimization<a class="headerlink" href="#infinite-pool-size-and-pool-size-query-optimization" title="Permalink to this heading"></a></h4>
<p>Pool size can now be set to -1 to indicate infinite size (it also includes
optimization of pool query which lead to poor task n^2 performance of task
pool queries in MySQL).</p>
</div>
<div class="section" id="viewer-won-t-have-edit-permissions-on-dag-view">
<h4>Viewer won’t have edit permissions on DAG view.<a class="headerlink" href="#viewer-won-t-have-edit-permissions-on-dag-view" title="Permalink to this heading"></a></h4>
</div>
<div class="section" id="google-cloud-storage-hook">
<h4>Google Cloud Storage Hook<a class="headerlink" href="#google-cloud-storage-hook" title="Permalink to this heading"></a></h4>
<p>The <code class="docutils literal notranslate"><span class="pre">GoogleCloudStorageDownloadOperator</span></code> can either write to a supplied <code class="docutils literal notranslate"><span class="pre">filename</span></code> or
return the content of a file via xcom through <code class="docutils literal notranslate"><span class="pre">store_to_xcom_key</span></code> - both options are mutually exclusive.</p>
</div>
</div>
<div class="section" id="id113">
<h3>New Features<a class="headerlink" href="#id113" title="Permalink to this heading"></a></h3>
<ul class="simple">
<li><p>[AIRFLOW-5088][AIP-24] Persisting serialized DAG in DB for webserver scalability (#5992)</p></li>
<li><p>[AIRFLOW-6083] Adding ability to pass custom configuration to AWS Lambda client. (#6678)</p></li>
<li><p>[AIRFLOW-5117] Automatically refresh EKS API tokens when needed (#5731)</p></li>
<li><p>[AIRFLOW-5118] Add ability to specify optional components in DataprocClusterCreateOperator (#5821)</p></li>
<li><p>[AIRFLOW-5681] Allow specification of a tag or hash for the git_sync init container (#6350)</p></li>
<li><p>[AIRFLOW-6025] Add label to uniquely identify creator of Pod (#6621)</p></li>
<li><p>[AIRFLOW-4843] Allow orchestration via Docker Swarm (SwarmOperator) (#5489)</p></li>
<li><p>[AIRFLOW-5751] add get_uri method to Connection (#6426)</p></li>
<li><p>[AIRFLOW-6056] Allow EmrAddStepsOperator to accept job_flow_name as alternative to job_flow_id (#6655)</p></li>
<li><p>[AIRFLOW-2694] Declare permissions in DAG definition (#4642)</p></li>
<li><p>[AIRFLOW-4940] Add DynamoDB to S3 operator (#5663)</p></li>
<li><p>[AIRFLOW-4161] BigQuery to MySQL Operator (#5711)</p></li>
<li><p>[AIRFLOW-6041] Add user agent to the Discovery API client (#6636)</p></li>
<li><p>[AIRFLOW-6089] Reorder setup.py dependencies and add ci (#6681)</p></li>
<li><p>[AIRFLOW-5921] Add bulk_load_custom to MySqlHook (#6575)</p></li>
<li><p>[AIRFLOW-5854] Add support for <code class="docutils literal notranslate"><span class="pre">tty</span></code> parameter in Docker related operators (#6542)</p></li>
<li><p>[AIRFLOW-4758] Add GcsToGDriveOperator operator (#5822)</p></li>
</ul>
</div>
<div class="section" id="id114">
<h3>Improvements<a class="headerlink" href="#id114" title="Permalink to this heading"></a></h3>
<ul class="simple">
<li><p>[AIRFLOW-3656] Show doc link for the current installed version (#6690)</p></li>
<li><p>[AIRFLOW-5665] Add path_exists method to SFTPHook (#6344)</p></li>
<li><p>[AIRFLOW-5729] Make InputDataConfig optional in Sagemaker’s training config (#6398)</p></li>
<li><p>[AIRFLOW-5045] Add ability to create Google Dataproc cluster with custom image from a different project (#5752)</p></li>
<li><p>[AIRFLOW-6132] Allow to pass in tags for the AzureContainerInstancesOperator (#6694)</p></li>
<li><p>[AIRFLOW-5945] Make inbuilt OperatorLinks work when using Serialization (#6715)</p></li>
<li><p>[AIRFLOW-5947] Make the JSON backend pluggable for DAG Serialization (#6630)</p></li>
<li><p>[AIRFLOW-6239] Filter dags return by last_dagruns (to only select visible dags, not all dags) (#6804)</p></li>
<li><p>[AIRFLOW-6095] Filter dags returned by task_stats (to only select visible dags, not all dags) (#6684)</p></li>
<li><p>[AIRFLOW-4482] Add execution_date to “trigger DagRun” API response (#5260)</p></li>
<li><p>[AIRFLOW-1076] Add get method for template variable accessor (#6793)</p></li>
<li><p>[AIRFLOW-5194] Add error handler to action log (#5883)</p></li>
<li><p>[AIRFLOW-5936] Allow explicit get_pty in SSHOperator (#6586)</p></li>
<li><p>[AIRFLOW-5474] Add Basic auth to Druid hook (#6095)</p></li>
<li><p>[AIRFLOW-5726] Allow custom filename in RedshiftToS3Transfer (#6396)</p></li>
<li><p>[AIRFLOW-5834] Option to skip serve_logs process with <code class="docutils literal notranslate"><span class="pre">airflow</span> <span class="pre">worker</span></code> (#6709)</p></li>
<li><p>[AIRFLOW-5583] Extend the ‘DAG Details’ page to display the start_date / end_date (#6235)</p></li>
<li><p>[AIRFLOW-6250] Ensure on_failure_callback always has a populated context (#6812)</p></li>
<li><p>[AIRFLOW-6222] http hook logs response body for any failure (#6779)</p></li>
<li><p>[AIRFLOW-6260] Drive _cmd config option by env var (<code class="docutils literal notranslate"><span class="pre">AIRFLOW__DATABASE__SQL_ALCHEMY_CONN_CMD</span></code> for example) (#6801)</p></li>
<li><p>[AIRFLOW-6168] Allow proxy_fix middleware of webserver to be configurable (#6723)</p></li>
<li><p>[AIRFLOW-5931] Use os.fork when appropriate to speed up task execution. (#6627)</p></li>
<li><p>[AIRFLOW-4145] Allow RBAC roles permissions, ViewMenu to be over-rideable (#4960)</p></li>
<li><p>[AIRFLOW-5928] Hive hooks load_file short circuit (#6582)</p></li>
<li><p>[AIRFLOW-5313] Add params support for awsbatch_operator (#5900)</p></li>
<li><p>[AIRFLOW-2227] Add delete method to Variable class (#4963)</p></li>
<li><p>[AIRFLOW-5082] Add subject in AwsSnsHook (#5694)</p></li>
<li><p>[AIRFLOW-5715] Make email, owner context available (#6385)</p></li>
<li><p>[AIRFLOW-5345] Allow SqlSensor’s hook to be customized by subclasses (#5946)</p></li>
<li><p>[AIRFLOW-5417] Fix DB disconnects during webserver startup (#6023)</p></li>
<li><p>[AIRFLOW-5730] Enable get_pandas_df on PinotDbApiHook (#6399)</p></li>
<li><p>[AIRFLOW-3235] Add list function in AzureDataLakeHook (#4070)</p></li>
<li><p>[AIRFLOW-5442] implementing get_pandas_df method for druid broker hook (#6057)</p></li>
<li><p>[AIRFLOW-5883] Improve count() queries in a few places (#6532)</p></li>
<li><p>[AIRFLOW-5811] Add metric for externally killed task count (#6466)</p></li>
<li><p>[AIRFLOW-5758] Support the custom cursor classes for the PostgreSQL hook (#6432)</p></li>
<li><p>[AIRFLOW-5766] Use httpbin.org in http_default (#6438)</p></li>
<li><p>[AIRFLOW-5798] Set default ExternalTaskSensor.external_task_id (#6431)</p></li>
<li><p>[AIRFLOW-5643] Reduce duplicated logic in S3Hook (#6313)</p></li>
<li><p>[AIRFLOW-5562] Skip grant single DAG permissions for Admin role. (#6199)</p></li>
<li><p>[AIRFLOW-6192] Stop creating Hook from SFTPSensor.__init__ (#6748)</p></li>
<li><p>[AIRFLOW-5749][AIRFLOW-4162] Support the “blocks” component for the Slack operators (#6418)</p></li>
<li><p>[AIRFLOW-5693] Support the “blocks” component for the Slack messages (#6364)</p></li>
<li><p>[AIRFLOW-5714] Collect SLA miss emails only from tasks missed SLA (#6384)</p></li>
<li><p>[AIRFLOW-5049] Add validation for src_fmt_configs in bigquery hook (#5671)</p></li>
<li><p>[AIRFLOW-6177] Log DAG processors timeout event at error level, not info (#6731)</p></li>
<li><p>[AIRFLOW-6180] Improve kerberos init in pytest conftest (#6735)</p></li>
<li><p>[AIRFLOW-6159] Change logging level of the heartbeat message to DEBUG (#6716)</p></li>
<li><p>[AIRFLOW-6144] Improve the log message of Airflow scheduler (#6710)</p></li>
<li><p>[AIRFLOW-6045] Error on failed execution of compile_assets (#6640)</p></li>
<li><p>[AIRFLOW-5144] Add confirmation on delete button click (#6745)</p></li>
<li><p>[AIRFLOW-6099] Add host name to task runner log (#6688)</p></li>
<li><p>[AIRFLOW-5915] Add support for the new documentation theme (#6563)</p></li>
<li><p>[AIRFLOW-5897] Allow setting -1 as pool slots value in webserver (#6550)</p></li>
<li><p>[AIRFLOW-5888] Use psycopg2-binary for postgres operations (#6533)</p></li>
<li><p>[AIRFLOW-5870] Allow -1 for pool size and optimise pool query (#6520)</p></li>
</ul>
</div>
<div class="section" id="id115">
<h3>Bug Fixes<a class="headerlink" href="#id115" title="Permalink to this heading"></a></h3>
<ul class="simple">
<li><p>[AIRFLOW-XXX] Bump Jira version to fix issue with async</p></li>
<li><p>[AIRFLOW-XXX] Add encoding to fix Cyrillic output when reading back task logs (#6631)</p></li>
<li><p>[AIRFLOW-5304] Fix extra links in BigQueryOperator with multiple queries (#5906)</p></li>
<li><p>[AIRFLOW-6268] Prevent (expensive) ajax calls on home page when no dags visible (#6839)</p></li>
<li><p>[AIRFLOW-6259] Reset page to 1 with each new search for dags (#6828)</p></li>
<li><p>[AIRFLOW-6185] SQLAlchemy Connection model schema not aligned with Alembic schema (#6754)</p></li>
<li><p>[AIRFLOW-3632] Only replace microseconds if execution_date is None in trigger_dag REST API (#6380)</p></li>
<li><p>[AIRFLOW-5458] Bump Flask-AppBuilder to 2.2.0 (for Python &gt;= 3.6) (#6607)</p></li>
<li><p>[AIRFLOW-5072] gcs_hook should download files once (#5685)</p></li>
<li><p>[AIRFLOW-5744] Environment variables not correctly set in Spark submit operator (#6796)</p></li>
<li><p>[AIRFLOW-3189] Remove schema from DbHook.get_uri response if None (#6833)</p></li>
<li><p>[AIRFLOW-6195] Fixed TaskInstance attrs not correct on UI (#6758)</p></li>
<li><p>[AIRFLOW-5889] Make polling for AWS Batch job status more resilient (#6765)</p></li>
<li><p>[AIRFLOW-6043] Fix bug in UI when “filtering by root” to display section of dag (#6638)</p></li>
<li><p>[AIRFLOW-6033] Fix UI Crash at “Landing Times” when task_id is changed (#6635)</p></li>
<li><p>[AIRFLOW-3745] Fix viewer not able to view dag details (#4569)</p></li>
<li><p>[AIRFLOW-6175] Fixes bug when tasks get stuck in “scheduled” state (#6732)</p></li>
<li><p>[AIRFLOW-5463] Make Variable.set when replacing an atomic operation (#6807)</p></li>
<li><p>[AIRFLOW-5582] Add get_autocommit to JdbcHook (#6232)</p></li>
<li><p>[AIRFLOW-5867] Fix webserver unit_test_mode data type (#6517)</p></li>
<li><p>[AIRFLOW-5819] Update AWSBatchOperator default value (#6473)</p></li>
<li><p>[AIRFLOW-5709] Fix regression in setting custom operator resources. (#6331)</p></li>
<li><p>[AIRFLOW-5658] Fix broken navigation links (#6374)</p></li>
<li><p>[AIRFLOW-5727] SqoopHook: Build –connect parameter only if port/schema are defined (#6397)</p></li>
<li><p>[AIRFLOW-5695] use RUNNING_DEPS to check run from UI (#6367)</p></li>
<li><p>[AIRFLOW-6254] obscure conn extra in logs (#6817)</p></li>
<li><p>[AIRFLOW-4824] Add charset handling for SqlAlchemy engine for MySqlHook (#6816)</p></li>
<li><p>[AIRFLOW-6091] Add flushing in execute method for BigQueryCursor (#6683)</p></li>
<li><p>[AIRFLOW-6256] Ensure Jobs table is cleared when resetting DB (#6818)</p></li>
<li><p>[AIRFLOW-5224] Add encoding parameter to GoogleCloudStorageToBigQuery (#6297)</p></li>
<li><p>[AIRFLOW-5179] Remove top level __init__.py (#5818)</p></li>
<li><p>[AIRFLOW-5660] Attempt to find the task in DB from Kubernetes pod labels (#6340)</p></li>
<li><p>[AIRFLOW-6241] Fix typo in airflow/gcp/operator/dataflow.py (#6806)</p></li>
<li><p>[AIRFLOW-6171] Apply .airflowignore to correct subdirectories (#6784)</p></li>
<li><p>[AIRFLOW-6018] Display task instance in table during backfilling (#6612)</p></li>
<li><p>[AIRFLOW-6189] Reduce the maximum test duration to 8 minutes (#6744)</p></li>
<li><p>[AIRFLOW-6141] Remove ReadyToRescheduleDep if sensor mode == poke (#6704)</p></li>
<li><p>[AIRFLOW-6054] Add a command that starts the database consoles (#6653)</p></li>
<li><p>[AIRFLOW-6047] Simplify the logging configuration template (#6644)</p></li>
<li><p>[AIRFLOW-6017] Exclude PULL_REQUEST_TEMPLATE.md from RAT check (#6611)</p></li>
<li><p>[AIRFLOW-4560] Fix Tez queue parameter name in mapred_queue (#5315)</p></li>
<li><p>[AIRFLOW-2143] Fix TaskTries graph counts off-by-1 (#6526)</p></li>
<li><p>[AIRFLOW-5873] KubernetesPodOperator fixes and test (#6523)</p></li>
<li><p>[AIRFLOW-5869] BugFix: Some Deserialized tasks have no start_date (#6519)</p></li>
<li><p>[AIRFLOW-4020] Remove DAG edit permissions from Viewer role (#4845)</p></li>
<li><p>[AIRFLOW-6263] Fix broken WinRM integration (#6832)</p></li>
<li><p>[AIRFLOW-5836] Pin azure-storage-blob version to &lt;12 (#6486)</p></li>
<li><p>[AIRFLOW-4488] Fix typo for non-RBAC UI in max_active_runs_per_dag (#6778)</p></li>
<li><p>[AIRFLOW-5942] Pin PyMSSQL to &lt;3.0 (#6592)</p></li>
<li><p>[AIRFLOW-5451] SparkSubmitHook don’t set default namespace (#6072)</p></li>
<li><p>[AIRFLOW-6271] Printing log files read during load_test_config (#6842)</p></li>
<li><p>[AIRFLOW-6308] Unpin Kombu for Python 3</p></li>
</ul>
</div>
<div class="section" id="id116">
<h3>Misc/Internal<a class="headerlink" href="#id116" title="Permalink to this heading"></a></h3>
<ul class="simple">
<li><p>[AIRFLOW-6009] Switch off travis_wait for regular tests (#6600)</p></li>
<li><p>[AIRFLOW-6226] Always reset warnings in tests</p></li>
<li><p>[AIRFLOW-XXX] Remove cyclic imports and pylint hacks in Serialization (#6601)</p></li>
<li><p>[AIRFLOW-XXX] Bump npm from 6.4.1 to 6.13.4 in /airflow/www (#6815)</p></li>
<li><p>[AIRFLOW-XXX] Remove executable permission from file</p></li>
<li><p>[AIRFLOW-XXX] Group AWS &amp; Azure dependencies (old <code class="docutils literal notranslate"><span class="pre">[emr]</span></code> etc. extra still work)</p></li>
<li><p>[AIRFLOW-5487] Fix unused warning var (#6111)</p></li>
<li><p>[AIRFLOW-5925] Relax <code class="docutils literal notranslate"><span class="pre">funcsigs</span></code> and psutil version requirements (#6580)</p></li>
<li><p>[AIRFLOW-5740] Fix Transient failure in Slack test (#6407)</p></li>
<li><p>[AIRFLOW-6058] Running tests with pytest (#6472)</p></li>
<li><p>[AIRFLOW-6066] Added pre-commit checks for accidental debug stmts (#6662)</p></li>
<li><p>[AIRFLOW-6060] Improve conf_vars context manager (#6658)</p></li>
<li><p>[AIRFLOW-6044] Standardize the Code Structure in kube_pod_operator.py (#6639)</p></li>
<li><p>[AIRFLOW-4940] Simplify tests of DynamoDBToS3Operator (#6836)</p></li>
<li><p>[AIRFLOW-XXX] Update airflow-jira release management script (#6772)</p></li>
<li><p>[AIRFLOW-XXX] Add simple guidelines to unit test writing (#6846)</p></li>
<li><p>[AIRFLOW-6309] Fix stable build on Travis</p></li>
</ul>
</div>
<div class="section" id="id117">
<h3>Doc only changes<a class="headerlink" href="#id117" title="Permalink to this heading"></a></h3>
<ul class="simple">
<li><p>[AIRFLOW-6211] Doc how to use conda for local virtualenv (#6766)</p></li>
<li><p>[AIRFLOW-5855] Fix broken reference in custom operator doc (#6508)</p></li>
<li><p>[AIRFLOW-5875] Fix typo in example_qubole_operator.py (#6525)</p></li>
<li><p>[AIRFLOW-5702] Fix common docstring issues (#6372)</p></li>
<li><p>[AIRFLOW-5640] Document and test <code class="docutils literal notranslate"><span class="pre">email</span></code> parameters of BaseOperator (#6315)</p></li>
<li><p>[AIRFLOW-XXX] Improve description OpenFaaS Hook (#6187)</p></li>
<li><p>[AIRFLOW-XXX] GSoD: How to make DAGs production ready (#6515)</p></li>
<li><p>[AIRFLOW-XXX] Use full command in examples (#5973)</p></li>
<li><p>[AIRFLOW-XXX] Update docs to accurately describe the precedence of remote and local logs (#5607)</p></li>
<li><p>[AIRFLOW-XXX] Fix example “extras” field in mysql connect doc (#5285)</p></li>
<li><p>[AIRFLOW-XXX] Fix wrong inline code highlighting in docs (#5309)</p></li>
<li><p>[AIRFLOW-XXX] Group executors in one section (#5834)</p></li>
<li><p>[AIRFLOW-XXX] Add task lifecycle diagram to documentation (#6762)</p></li>
<li><p>[AIRFLOW-XXX] Highlight code blocks (#6243)</p></li>
<li><p>[AIRFLOW-XXX] Documents about task_concurrency and pool (#5262)</p></li>
<li><p>[AIRFLOW-XXX] Fix incorrect docstring parameter (#6649)</p></li>
<li><p>[AIRFLOW-XXX] Add link to XCom section in concepts.rst (#6791)</p></li>
<li><p>[AIRFLOW-XXX] Update kubernetes doc with correct path (#6774)</p></li>
<li><p>[AIRFLOW-XXX] Add information how to configure pytest runner (#6736)</p></li>
<li><p>[AIRFLOW-XXX] More GSOD improvements (#6585)</p></li>
<li><p>[AIRFLOW-XXX] Clarified a grammatically incorrect sentence (#6667)</p></li>
<li><p>[AIRFLOW-XXX] Add notice for Mesos Executor deprecation in docs (#6712)</p></li>
<li><p>[AIRFLOW-XXX] Update list of pre-commits (#6603)</p></li>
<li><p>[AIRFLOW-XXX] Updates to Breeze documentation from GSOD (#6285)</p></li>
<li><p>[AIRFLOW-XXX] Clarify daylight savings time behavior (#6324)</p></li>
<li><p>[AIRFLOW-XXX] GSoD: Adding ‘Create a custom operator’ doc (#6348)</p></li>
<li><p>[AIRFLOW-XXX] Add resources &amp; links to CONTRIBUTING.rst (#6405)</p></li>
<li><p>[AIRFLOW-XXX] Update chat channel details from gitter to slack (#4149)</p></li>
<li><p>[AIRFLOW-XXX] Add logo info to readme (#6349)</p></li>
<li><p>[AIRFLOW-XXX] Fixed case problem with CONTRIBUTING.rst (#6329)</p></li>
<li><p>[AIRFLOW-XXX] Google Season of Docs updates to CONTRIBUTING doc (#6283)</p></li>
</ul>
</div>
</div>
<div class="section" id="airflow-1-10-6-2019-10-28">
<h2><a class="toc-backref" href="#id191">Airflow 1.10.6 (2019-10-28)</a><a class="headerlink" href="#airflow-1-10-6-2019-10-28" title="Permalink to this heading"></a></h2>
<div class="section" id="id118">
<h3>Significant Changes<a class="headerlink" href="#id118" title="Permalink to this heading"></a></h3>
<div class="section" id="baseoperator-render-template-function-signature-changed">
<h4>BaseOperator::render_template function signature changed<a class="headerlink" href="#baseoperator-render-template-function-signature-changed" title="Permalink to this heading"></a></h4>
<p>Previous versions of the <code class="docutils literal notranslate"><span class="pre">BaseOperator::render_template</span></code> function required an <code class="docutils literal notranslate"><span class="pre">attr</span></code> argument as the first
positional argument, along with <code class="docutils literal notranslate"><span class="pre">content</span></code> and <code class="docutils literal notranslate"><span class="pre">context</span></code>. This function signature was changed in 1.10.6 and
the <code class="docutils literal notranslate"><span class="pre">attr</span></code> argument is no longer required (or accepted).</p>
<p>In order to use this function in subclasses of the <code class="docutils literal notranslate"><span class="pre">BaseOperator</span></code>, the <code class="docutils literal notranslate"><span class="pre">attr</span></code> argument must be removed:</p>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">result</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">render_template</span><span class="p">(</span><span class="s2">&quot;myattr&quot;</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">myattr</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span> <span class="c1"># Pre-1.10.6 call</span>
<span class="c1"># ...</span>
<span class="n">result</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">render_template</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">myattr</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span> <span class="c1"># Post-1.10.6 call</span>
</pre></div>
</div>
</div>
<div class="section" id="changes-to-aws-default-connection-s-default-region">
<h4>Changes to <code class="docutils literal notranslate"><span class="pre">aws_default</span></code> Connection’s default region<a class="headerlink" href="#changes-to-aws-default-connection-s-default-region" title="Permalink to this heading"></a></h4>
<p>The region of Airflow’s default connection to AWS (<code class="docutils literal notranslate"><span class="pre">aws_default</span></code>) was previously
set to <code class="docutils literal notranslate"><span class="pre">us-east-1</span></code> during installation.</p>
<p>The region now needs to be set manually, either in the connection screens in
Airflow, via the <code class="docutils literal notranslate"><span class="pre">~/.aws</span></code> config files, or via the <code class="docutils literal notranslate"><span class="pre">AWS_DEFAULT_REGION</span></code> environment
variable.</p>
</div>
<div class="section" id="some-dag-processing-metrics-have-been-renamed">
<h4>Some DAG Processing metrics have been renamed<a class="headerlink" href="#some-dag-processing-metrics-have-been-renamed" title="Permalink to this heading"></a></h4>
<p>The following metrics are deprecated and won’t be emitted in Airflow 2.0:</p>
<ul class="simple">
<li><p><code class="docutils literal notranslate"><span class="pre">scheduler.dagbag.errors</span></code> and <code class="docutils literal notranslate"><span class="pre">dagbag_import_errors</span></code> – use <code class="docutils literal notranslate"><span class="pre">dag_processing.import_errors</span></code> instead</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">dag_file_processor_timeouts</span></code> – use <code class="docutils literal notranslate"><span class="pre">dag_processing.processor_timeouts</span></code> instead</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">collect_dags</span></code> – use <code class="docutils literal notranslate"><span class="pre">dag_processing.total_parse_time</span></code> instead</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">dag.loading-duration.&lt;basename&gt;</span></code> – use <code class="docutils literal notranslate"><span class="pre">dag_processing.last_duration.&lt;basename&gt;</span></code> instead</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">dag_processing.last_runtime.&lt;basename&gt;</span></code> – use <code class="docutils literal notranslate"><span class="pre">dag_processing.last_duration.&lt;basename&gt;</span></code> instead</p></li>
</ul>
</div>
</div>
<div class="section" id="id119">
<h3>New Features<a class="headerlink" href="#id119" title="Permalink to this heading"></a></h3>
<ul class="simple">
<li><p>[AIRFLOW-4908] Implement BigQuery Hooks/Operators for update_dataset, patch_dataset and get_dataset (#5546)</p></li>
<li><p>[AIRFLOW-4741] Optionally report task errors to Sentry (#5407)</p></li>
<li><p>[AIRFLOW-4939] Add default_task_retries config (#5570)</p></li>
<li><p>[AIRFLOW-5508] Add config setting to limit which StatsD metrics are emitted (#6130)</p></li>
<li><p>[AIRFLOW-4222] Add cli autocomplete for bash &amp; zsh (#5789)</p></li>
<li><p>[AIRFLOW-3871] Operators template fields can now render fields inside objects (#4743)</p></li>
</ul>
</div>
<div class="section" id="id120">
<h3>Improvements<a class="headerlink" href="#id120" title="Permalink to this heading"></a></h3>
<ul class="simple">
<li><p>[AIRFLOW-5127] Gzip support for CassandraToGoogleCloudStorageOperator (#5738)</p></li>
<li><p>[AIRFLOW-5125] Add gzip support for AdlsToGoogleCloudStorageOperator (#5737)</p></li>
<li><p>[AIRFLOW-5124] Add gzip support for S3ToGoogleCloudStorageOperator (#5736)</p></li>
<li><p>[AIRFLOW-5653] Log AirflowSkipException in task instance log to make it clearer why tasks might be skipped (#6330)</p></li>
<li><p>[AIRFLOW-5343] Remove legacy SQLAlchmey pessimistic pool disconnect handling (#6034)</p></li>
<li><p>[AIRFLOW-5561] Relax httplib2 version required for gcp extra (#6194)</p></li>
<li><p>[AIRFLOW-5657] Update the upper bound for dill dependency (#6334)</p></li>
<li><p>[AIRFLOW-5292] Allow ECSOperator to tag tasks (#5891)</p></li>
<li><p>[AIRFLOW-4939] Simplify Code for Default Task Retries (#6233)</p></li>
<li><p>[AIRFLOW-5126] Read <code class="docutils literal notranslate"><span class="pre">aws_session_token</span></code> in extra_config of the aws hook (#6303)</p></li>
<li><p>[AIRFLOW-5636] Allow adding or overriding existing Operator Links (#6302)</p></li>
<li><p>[AIRFLOW-4965] Handle quote exceptions in GCP AI operators (v1.10) (#6304)</p></li>
<li><p>[AIRFLOW-3783] Speed up Redshift to S3 unload with HEADERs (#6309)</p></li>
<li><p>[AIRFLOW-3388] Add support to Array Jobs for AWS Batch Operator (#6153)</p></li>
<li><p>[AIRFLOW-4574] add option to provide private_key in SSHHook (#6104) (#6163)</p></li>
<li><p>[AIRFLOW-5530] Fix typo in AWS SQS sensors (#6012)</p></li>
<li><p>[AIRFLOW-5445] Reduce the required resources for the Kubernetes’s sidecar (#6062)</p></li>
<li><p>[AIRFLOW-5443] Use alpine image in Kubernetes’s sidecar (#6059)</p></li>
<li><p>[AIRFLOW-5344] Add –proxy-user parameter to SparkSubmitOperator (#5948)</p></li>
<li><p>[AIRFLOW-3888] HA for Hive metastore connection (#4708)</p></li>
<li><p>[AIRFLOW-5269] Reuse session in Scheduler Job from health endpoint (#5873)</p></li>
<li><p>[AIRFLOW-5153] Option to force delete non-empty BQ datasets (#5768)</p></li>
<li><p>[AIRFLOW-4443] Document LatestOnly behavior for external trigger (#5214)</p></li>
<li><p>[AIRFLOW-2891] Make DockerOperator container_name be templateable (#5696)</p></li>
<li><p>[AIRFLOW-2891] allow configurable docker_operator container name (#5689)</p></li>
<li><p>[AIRFLOW-4285] Update task dependency context definition and usage (#5079)</p></li>
<li><p>[AIRFLOW-5142] Fixed flaky Cassandra test (#5758)</p></li>
<li><p>[AIRFLOW-5218] Less polling of AWS Batch job status (#5825)</p></li>
<li><p>[AIRFLOW-4956] Fix LocalTaskJob heartbeat log spamming (#5589)</p></li>
<li><p>[AIRFLOW-3160] Load latest_dagruns asynchronously on home page (#5339)</p></li>
<li><p>[AIRFLOW-5560] Allow no confirmation on reset dags in <code class="docutils literal notranslate"><span class="pre">airflow</span> <span class="pre">backfill</span></code> command (#6195)</p></li>
<li><p>[AIRFLOW-5280] conn: Remove aws_default’s default region name (#5879)</p></li>
<li><p>[AIRFLOW-5528] end_of_log_mark should not be a log record (#6159)</p></li>
<li><p>[AIRFLOW-5526] Update docs configuration due to migration of GCP docs (#6154)</p></li>
<li><p>[AIRFLOW-4835] Refactor operator render_template (#5461)</p></li>
</ul>
</div>
<div class="section" id="id121">
<h3>Bug Fixes<a class="headerlink" href="#id121" title="Permalink to this heading"></a></h3>
<ul class="simple">
<li><p>[AIRFLOW-5459] Use a dynamic tmp location in Dataflow operator (#6078)</p></li>
<li><p>[Airflow 4923] Fix Databricks hook leaks API secret in logs (#5635)</p></li>
<li><p>[AIRFLOW-5133] Keep original env state in provide_gcp_credential_file (#5747)</p></li>
<li><p>[AIRFLOW-5497] Update docstring in <code class="docutils literal notranslate"><span class="pre">airflow/utils/dag_processing.py</span></code> (#6314)</p></li>
<li><p>Revert/and then rework “[AIRFLOW-4797] Improve performance and behaviour of zombie detection (#5511)” to improve performance (#5908)</p></li>
<li><p>[AIRFLOW-5634] Don’t allow editing of DagModelView (#6308)</p></li>
<li><p>[AIRFLOW-4309] Remove Broken Dag error after Dag is deleted (#6102)</p></li>
<li><p>[AIRFLOW-5387] Fix “show paused” pagination bug (#6100)</p></li>
<li><p>[AIRFLOW-5489] Remove unneeded assignment of variable (#6106)</p></li>
<li><p>[AIRFLOW-5491] mark_tasks pydoc is incorrect (#6108)</p></li>
<li><p>[AIRFLOW-5492] added missing docstrings (#6107)</p></li>
<li><p>[AIRFLOW-5503] Fix tree view layout on HDPI screen (#6125)</p></li>
<li><p>[AIRFLOW-5481] Allow Deleting Renamed DAGs (#6101)</p></li>
<li><p>[AIRFLOW-3857] spark_submit_hook cannot kill driver pod in Kubernetes (#4678)</p></li>
<li><p>[AIRFLOW-4391] Fix tooltip for None-State Tasks in ‘Recent Tasks’ (#5909)</p></li>
<li><p>[AIRFLOW-5554] Require StatsD 3.3.0 minimum (#6185)</p></li>
<li><p>[AIRFLOW-5306] Fix the display of links when they contain special characters (#5904)</p></li>
<li><p>[AIRFLOW-3705] Fix PostgresHook get_conn to use conn_name_attr (#5841)</p></li>
<li><p>[AIRFLOW-5581] Cleanly shutdown KubernetesJobWatcher for safe Scheduler shutdown on SIGTERM (#6237)</p></li>
<li><p>[AIRFLOW-5634] Don’t allow disabled fields to be edited in DagModelView (#6307)</p></li>
<li><p>[AIRFLOW-4833] Allow to set Jinja env options in DAG declaration (#5943)</p></li>
<li><p>[AIRFLOW-5408] Fix env variable name in Kubernetes template (#6016)</p></li>
<li><p>[AIRFLOW-5102] Worker jobs should terminate themselves if they can’t heartbeat (#6284)</p></li>
<li><p>[AIRFLOW-5572] Clear task reschedules when clearing task instances (#6217)</p></li>
<li><p>[AIRFLOW-5543] Fix tooltip disappears in tree and graph view (RBAC UI) (#6174)</p></li>
<li><p>[AIRFLOW-5444] Fix action_logging so that request.form for POST is logged (#6064)</p></li>
<li><p>[AIRFLOW-5484] fix PigCliHook has incorrect named parameter (#6112)</p></li>
<li><p>[AIRFLOW-5342] Fix MSSQL breaking task_instance db migration (#6014)</p></li>
<li><p>[AIRFLOW-5556] Add separate config for timeout from scheduler dag processing (#6186)</p></li>
<li><p>[AIRFLOW-4858] Deprecate “Historical convenience functions” in airflow.configuration (#5495) (#6144)</p></li>
<li><p>[AIRFLOW-774] Fix long-broken DAG parsing StatsD metrics (#6157)</p></li>
<li><p>[AIRFLOW-5419] Use <code class="docutils literal notranslate"><span class="pre">sudo</span></code> to kill cleared tasks when running with impersonation (#6026) (#6176)</p></li>
<li><p>[AIRFLOW-5537] Yamllint is not needed as dependency on host</p></li>
<li><p>[AIRFLOW-5536] Better handling of temporary output files</p></li>
<li><p>[AIRFLOW-5535] Fix name of VERBOSE parameter</p></li>
<li><p>[AIRFLOW-5519] Fix sql_to_gcs operator missing multi-level default args by adding apply_defaults decorator (#6146)</p></li>
<li><p>[AIRFLOW-5210] Make finding template files more efficient (#5815)</p></li>
<li><p>[AIRFLOW-5447] Scheduler stalls because second watcher thread in default args (#6129)</p></li>
</ul>
</div>
<div class="section" id="id122">
<h3>Doc-only changes<a class="headerlink" href="#id122" title="Permalink to this heading"></a></h3>
<ul class="simple">
<li><p>[AIRFLOW-5574] Fix Google Analytics script loading (#6218)</p></li>
<li><p>[AIRFLOW-5588] Add Celery’s architecture diagram (#6247)</p></li>
<li><p>[AIRFLOW-5521] Fix link to GCP documentation (#6150)</p></li>
<li><p>[AIRFLOW-5398] Update contrib example DAGs to context manager (#5998)</p></li>
<li><p>[AIRFLOW-5268] Apply same DAG naming conventions as in literature (#5874)</p></li>
<li><p>[AIRFLOW-5101] Fix inconsistent owner value in examples (#5712)</p></li>
<li><p>[AIRFLOW-XXX] Fix typo - AWS DynamoDB Hook (#6319)</p></li>
<li><p>[AIRFLOW-XXX] Fix Documentation for adding extra Operator Links (#6301)</p></li>
<li><p>[AIRFLOW-XXX] Add section on task lifecycle &amp; correct casing in docs (#4681)</p></li>
<li><p>[AIRFLOW-XXX] Make it clear that 1.10.5 was not accidentally omitted from UPDATING.md (#6240)</p></li>
<li><p>[AIRFLOW-XXX] Improve format in code-block directives (#6242)</p></li>
<li><p>[AIRFLOW-XXX] Format Sendgrid docs (#6245)</p></li>
<li><p>[AIRFLOW-XXX] Update to new logo (#6066)</p></li>
<li><p>[AIRFLOW-XXX] Typo in FAQ - schedule_interval (#6291)</p></li>
<li><p>[AIRFLOW-XXX] Add message about breaking change in DAG#get_task_instances in 1.10.4 (#6226)</p></li>
<li><p>[AIRFLOW-XXX] Fix incorrect units in docs for metrics using Timers (#6152)</p></li>
<li><p>[AIRFLOW-XXX] Fix backtick issues in .rst files &amp; Add Precommit hook (#6162)</p></li>
<li><p>[AIRFLOW-XXX] Update documentation about variables forcing answer (#6158)</p></li>
<li><p>[AIRFLOW-XXX] Add a third way to configure authorization (#6134)</p></li>
<li><p>[AIRFLOW-XXX] Add example of running pre-commit hooks on single file (#6143)</p></li>
<li><p>[AIRFLOW-XXX] Add information about default pool to docs (#6019)</p></li>
<li><p>[AIRFLOW-XXX] Make Breeze The default integration test environment (#6001)</p></li>
</ul>
</div>
<div class="section" id="id123">
<h3>Misc/Internal<a class="headerlink" href="#id123" title="Permalink to this heading"></a></h3>
<ul class="simple">
<li><p>[AIRFLOW-5687] Upgrade pip to 19.0.2 in CI build pipeline (#6358) (#6361)</p></li>
<li><p>[AIRFLOW-5533] Fixed failing CRON build (#6167)</p></li>
<li><p>[AIRFLOW-5130] Use GOOGLE_APPLICATION_CREDENTIALS constant from library (#5744)</p></li>
<li><p>[AIRFLOW-5369] Adds interactivity to pre-commits (#5976)</p></li>
<li><p>[AIRFLOW-5531] Replace deprecated log.warn() with log.warning() (#6165)</p></li>
<li><p>[AIRFLOW-4686] Make dags Pylint compatible (#5753)</p></li>
<li><p>[AIRFLOW-4864] Remove calls to load_test_config (#5502)</p></li>
<li><p>[AIRFLOW-XXX] Pin version of mypy so we are stable over time (#6198)</p></li>
<li><p>[AIRFLOW-XXX] Add tests that got missed from #5127</p></li>
<li><p>[AIRFLOW-4928] Move config parses to class properties inside DagBag (#5557)</p></li>
<li><p>[AIRFLOW-5003] Making AWS Hooks pylint compatible (#5627)</p></li>
<li><p>[AIRFLOW-5580] Add base class for system test (#6229)</p></li>
</ul>
</div>
</div>
<div class="section" id="airflow-1-10-5-2019-09-04">
<h2><a class="toc-backref" href="#id192">Airflow 1.10.5 (2019-09-04)</a><a class="headerlink" href="#airflow-1-10-5-2019-09-04" title="Permalink to this heading"></a></h2>
<div class="section" id="id124">
<h3>Significant Changes<a class="headerlink" href="#id124" title="Permalink to this heading"></a></h3>
<p>No significant changes.</p>
</div>
<div class="section" id="id125">
<h3>New Features<a class="headerlink" href="#id125" title="Permalink to this heading"></a></h3>
<ul class="simple">
<li><p>[AIRFLOW-1498] Add feature for users to add Google Analytics to Airflow UI (#5850)</p></li>
<li><p>[AIRFLOW-4074] Add option to add labels to Dataproc jobs (#5606)</p></li>
<li><p>[AIRFLOW-4846] Allow specification of an existing secret containing git credentials for init containers (#5475)</p></li>
</ul>
</div>
<div class="section" id="id126">
<h3>Improvements<a class="headerlink" href="#id126" title="Permalink to this heading"></a></h3>
<ul class="simple">
<li><p>[AIRFLOW-5335] Update GCSHook methods so they need min IAM perms (#5939)</p></li>
<li><p>[AIRFLOW-2692] Allow AWS Batch Operator to use templates in job_name parameter (#3557)</p></li>
<li><p>[AIRFLOW-4768] Add Timeout parameter in example_gcp_video_intelligence (#5862)</p></li>
<li><p>[AIRFLOW-5165] Make Dataproc highly available (#5781)</p></li>
<li><p>[AIRFLOW-5139] Allow custom ES configs (#5760)</p></li>
<li><p>[AIRFLOW-5340] Fix GCP DLP example (#594)</p></li>
<li><p>[AIRFLOW-5211] Add pass_value to template_fields BigQueryValueCheckOperator (#5816)</p></li>
<li><p>[AIRFLOW-5113] Support icon url in slack web hook (#5724)</p></li>
<li><p>[AIRFLOW-4230] bigquery schema update options should be a list (#5766)</p></li>
<li><p>[AIRFLOW-1523] Clicking on Graph View should display related DAG run (#5866)</p></li>
<li><p>[AIRFLOW-5027] Generalized CloudWatch log grabbing for ECS and SageMaker operators (#5645)</p></li>
<li><p>[AIRFLOW-5244] Add all possible themes to default_webserver_config.py (#5849)</p></li>
<li><p>[AIRFLOW-5245] Add more metrics around the scheduler (#5853)</p></li>
<li><p>[AIRFLOW-5048] Improve display of Kubernetes resources (#5665)</p></li>
<li><p>[AIRFLOW-5284] Replace deprecated log.warn by log.warning (#5881)</p></li>
<li><p>[AIRFLOW-5276] Remove unused helpers from airflow.utils.helpers (#5878)</p></li>
<li><p>[AIRFLOW-4316] Support setting kubernetes_environment_variables config section from env var (#5668)</p></li>
</ul>
</div>
<div class="section" id="id127">
<h3>Bug fixes<a class="headerlink" href="#id127" title="Permalink to this heading"></a></h3>
<ul class="simple">
<li><p>[AIRFLOW-5168] Fix Dataproc operators that failed in 1.10.4 (#5928)</p></li>
<li><p>[AIRFLOW-5136] Fix Bug with Incorrect template_fields in DataProc{*} Operators (#5751)</p></li>
<li><p>[AIRFLOW-5169] Pass GCP Project ID explicitly to StorageClient in GCSHook (#5783)</p></li>
<li><p>[AIRFLOW-5302] Fix bug in none_skipped Trigger Rule (#5902)</p></li>
<li><p>[AIRFLOW-5350] Fix bug in the num_retires field in BigQueryHook (#5955)</p></li>
<li><p>[AIRFLOW-5145] Fix rbac ui presents false choice to encrypt or not encrypt variable values (#5761)</p></li>
<li><p>[AIRFLOW-5104] Set default schedule for GCP Transfer operators (#5726)</p></li>
<li><p>[AIRFLOW-4462] Use datetime2 column types when using MSSQL backend (#5707)</p></li>
<li><p>[AIRFLOW-5282] Add default timeout on kubeclient &amp; catch HTTPError (#5880)</p></li>
<li><p>[AIRFLOW-5315] TaskInstance not updating from DB when user changes executor_config (#5926)</p></li>
<li><p>[AIRFLOW-4013] Mark success/failed is picking all execution date (#5616)</p></li>
<li><p>[AIRFLOW-5152] Fix autodetect default value in GoogleCloudStorageToBigQueryOperator(#5771)</p></li>
<li><p>[AIRFLOW-5100] Airflow scheduler does not respect safe mode setting (#5757)</p></li>
<li><p>[AIRFLOW-4763] Allow list in DockerOperator.command (#5408)</p></li>
<li><p>[AIRFLOW-5260] Allow empty uri arguments in connection strings (#5855)</p></li>
<li><p>[AIRFLOW-5257] Fix ElasticSearch log handler errors when attempting to close logs (#5863)</p></li>
<li><p>[AIRFLOW-1772] Google Updated Sensor doesn’t work with CRON expressions (#5730)</p></li>
<li><p>[AIRFLOW-5085] When you run kubernetes git-sync test from TAG, it fails (#5699)</p></li>
<li><p>[AIRFLOW-5258] ElasticSearch log handler, has 2 times of hours (%H and %I) in _clean_execution_dat (#5864)</p></li>
<li><p>[AIRFLOW-5348] Escape Label in deprecated chart view when set via JS (#5952)</p></li>
<li><p>[AIRFLOW-5357] Fix Content-Type for exported variables.json file (#5963)</p></li>
<li><p>[AIRFLOW-5109] Fix process races when killing processes (#5721)</p></li>
<li><p>[AIRFLOW-5240] Latest version of Kombu is breaking Airflow for py2</p></li>
</ul>
</div>
<div class="section" id="id128">
<h3>Misc/Internal<a class="headerlink" href="#id128" title="Permalink to this heading"></a></h3>
<ul class="simple">
<li><p>[AIRFLOW-5111] Remove apt-get upgrade from the Dockerfile (#5722)</p></li>
<li><p>[AIRFLOW-5209] Fix Documentation build (#5814)</p></li>
<li><p>[AIRFLOW-5083] Check licence image building can be faster and moved to before-install (#5695)</p></li>
<li><p>[AIRFLOW-5119] Cron job should always rebuild everything from scratch (#5733)</p></li>
<li><p>[AIRFLOW-5108] In the CI local environment long-running kerberos might fail sometimes (#5719)</p></li>
<li><p>[AIRFLOW-5092] Latest Python image should be pulled locally in force_pull_and_build (#5705)</p></li>
<li><p>[AIRFLOW-5225] Consistent licences can be added automatically for all JS files (#5827)</p></li>
<li><p>[AIRFLOW-5229] Add licence to all other file types (#5831)</p></li>
<li><p>[AIRFLOW-5227] Consistent licences for all .sql files (#5829)</p></li>
<li><p>[AIRFLOW-5161] Add pre-commit hooks to run static checks for only changed files (#5777)</p></li>
<li><p>[AIRFLOW-5159] Optimise checklicence image build (do not build if not needed) (#5774)</p></li>
<li><p>[AIRFLOW-5263] Show diff on failure of pre-commit checks (#5869)</p></li>
<li><p>[AIRFLOW-5204] Shell files should be checked with shellcheck and have identical licence (#5807)</p></li>
<li><p>[AIRFLOW-5233] Check for consistency in whitespace (tabs/eols) and common problems (#5835)</p></li>
<li><p>[AIRFLOW-5247] Getting all dependencies from NPM can be moved up in Dockerfile (#5870)</p></li>
<li><p>[AIRFLOW-5143] Corrupted rat.jar became part of the Docker image (#5759)</p></li>
<li><p>[AIRFLOW-5226] Consistent licences for all html JINJA templates (#5828)</p></li>
<li><p>[AIRFLOW-5051] Coverage is not properly reported in the new CI system (#5732)</p></li>
<li><p>[AIRFLOW-5239] Small typo and incorrect tests in CONTRIBUTING.md (#5844)</p></li>
<li><p>[AIRFLOW-5287] Checklicence base image is not pulled (#5886)</p></li>
<li><p>[AIRFLOW-5301] Some not-yet-available files from breeze are committed to master (#5901)</p></li>
<li><p>[AIRFLOW-5285] Pre-commit pylint runs over todo files (#5884)</p></li>
<li><p>[AIRFLOW-5288] Temporary container for static checks should be auto-removed (#5887)</p></li>
<li><p>[AIRFLOW-5206] All .md files should have all common licence, TOC (where applicable) (#5809)</p></li>
<li><p>[AIRFLOW-5329] Easy way to add local files to docker (#5933)</p></li>
<li><p>[AIRFLOW-4027] Make experimental api tests more stateless (#4854)</p></li>
</ul>
</div>
<div class="section" id="id129">
<h3>Doc-only changes<a class="headerlink" href="#id129" title="Permalink to this heading"></a></h3>
<ul class="simple">
<li><p>[AIRFLOW-XXX] Fixed Azkaban link (#5865)</p></li>
<li><p>[AIRFLOW-XXX] Remove duplicate lines from CONTRIBUTING.md (#5830)</p></li>
<li><p>[AIRFLOW-XXX] Fix incorrect docstring parameter in SchedulerJob (#5729)</p></li>
</ul>
</div>
</div>
<div class="section" id="airflow-1-10-4-2019-08-06">
<h2><a class="toc-backref" href="#id193">Airflow 1.10.4 (2019-08-06)</a><a class="headerlink" href="#airflow-1-10-4-2019-08-06" title="Permalink to this heading"></a></h2>
<div class="section" id="id130">
<h3>Significant Changes<a class="headerlink" href="#id130" title="Permalink to this heading"></a></h3>
<div class="section" id="export-mysql-timestamps-as-utc">
<h4>Export MySQL timestamps as UTC<a class="headerlink" href="#export-mysql-timestamps-as-utc" title="Permalink to this heading"></a></h4>
<p><code class="docutils literal notranslate"><span class="pre">MySqlToGoogleCloudStorageOperator</span></code> now exports TIMESTAMP columns as UTC
by default, rather than using the default timezone of the MySQL server.
This is the correct behavior for use with BigQuery, since BigQuery
assumes that TIMESTAMP columns without time zones are in UTC. To
preserve the previous behavior, set <code class="docutils literal notranslate"><span class="pre">ensure_utc</span></code> to <code class="docutils literal notranslate"><span class="pre">False.</span></code></p>
</div>
<div class="section" id="changes-to-datastorehook">
<h4>Changes to DatastoreHook<a class="headerlink" href="#changes-to-datastorehook" title="Permalink to this heading"></a></h4>
<ul class="simple">
<li><p>removed argument <code class="docutils literal notranslate"><span class="pre">version</span></code> from <code class="docutils literal notranslate"><span class="pre">get_conn</span></code> function and added it to the hook’s <code class="docutils literal notranslate"><span class="pre">__init__</span></code> function instead and renamed it to <code class="docutils literal notranslate"><span class="pre">api_version</span></code></p></li>
<li><p>renamed the <code class="docutils literal notranslate"><span class="pre">partialKeys</span></code> argument of function <code class="docutils literal notranslate"><span class="pre">allocate_ids</span></code> to <code class="docutils literal notranslate"><span class="pre">partial_keys</span></code></p></li>
</ul>
</div>
<div class="section" id="changes-to-googlecloudstoragehook">
<h4>Changes to GoogleCloudStorageHook<a class="headerlink" href="#changes-to-googlecloudstoragehook" title="Permalink to this heading"></a></h4>
<ul>
<li><p>the discovery-based api (<code class="docutils literal notranslate"><span class="pre">googleapiclient.discovery</span></code>) used in <code class="docutils literal notranslate"><span class="pre">GoogleCloudStorageHook</span></code> is now replaced by the recommended client based api (<code class="docutils literal notranslate"><span class="pre">google-cloud-storage</span></code>). To know the difference between both the libraries, read <a class="reference external" href="https://cloud.google.com/apis/docs/client-libraries-explained">https://cloud.google.com/apis/docs/client-libraries-explained</a>. PR: <a class="reference external" href="https://github.com/apache/airflow/pull/5054">#5054</a></p></li>
<li><p>as a part of this replacement, the <code class="docutils literal notranslate"><span class="pre">multipart</span></code> &amp; <code class="docutils literal notranslate"><span class="pre">num_retries</span></code> parameters for <code class="docutils literal notranslate"><span class="pre">GoogleCloudStorageHook.upload</span></code> method have been deprecated.</p>
<p>The client library uses multipart upload automatically if the object/blob size is more than 8 MB - <a class="reference external" href="https://github.com/googleapis/google-cloud-python/blob/11c543ce7dd1d804688163bc7895cf592feb445f/storage/google/cloud/storage/blob.py#L989-L997">source code</a>. The client also handles retries automatically</p>
</li>
<li><p>the <code class="docutils literal notranslate"><span class="pre">generation</span></code> parameter is deprecated in <code class="docutils literal notranslate"><span class="pre">GoogleCloudStorageHook.delete</span></code> and <code class="docutils literal notranslate"><span class="pre">GoogleCloudStorageHook.insert_object_acl</span></code>.</p></li>
</ul>
<p>Updating to <code class="docutils literal notranslate"><span class="pre">google-cloud-storage</span> <span class="pre">&gt;=</span> <span class="pre">1.16</span></code> changes the signature of the upstream <code class="docutils literal notranslate"><span class="pre">client.get_bucket()</span></code> method from <code class="docutils literal notranslate"><span class="pre">get_bucket(bucket_name:</span> <span class="pre">str)</span></code> to <code class="docutils literal notranslate"><span class="pre">get_bucket(bucket_or_name:</span> <span class="pre">Union[str,</span> <span class="pre">Bucket])</span></code>. This method is not directly exposed by the airflow hook, but any code accessing the connection directly (<code class="docutils literal notranslate"><span class="pre">GoogleCloudStorageHook().get_conn().get_bucket(...)</span></code> or similar) will need to be updated.</p>
</div>
<div class="section" id="changes-in-writing-logs-to-elasticsearch">
<h4>Changes in writing Logs to Elasticsearch<a class="headerlink" href="#changes-in-writing-logs-to-elasticsearch" title="Permalink to this heading"></a></h4>
<p>The <code class="docutils literal notranslate"><span class="pre">elasticsearch_</span></code> prefix has been removed from all config items under the <code class="docutils literal notranslate"><span class="pre">[elasticsearch]</span></code> section. For example <code class="docutils literal notranslate"><span class="pre">elasticsearch_host</span></code> is now just <code class="docutils literal notranslate"><span class="pre">host</span></code>.</p>
</div>
<div class="section" id="removal-of-non-pooled-task-slot-count-and-non-pooled-backfill-task-slot-count">
<h4>Removal of <code class="docutils literal notranslate"><span class="pre">non_pooled_task_slot_count</span></code> and <code class="docutils literal notranslate"><span class="pre">non_pooled_backfill_task_slot_count</span></code><a class="headerlink" href="#removal-of-non-pooled-task-slot-count-and-non-pooled-backfill-task-slot-count" title="Permalink to this heading"></a></h4>
<p><code class="docutils literal notranslate"><span class="pre">non_pooled_task_slot_count</span></code> and <code class="docutils literal notranslate"><span class="pre">non_pooled_backfill_task_slot_count</span></code>
are removed in favor of a real pool, e.g. <code class="docutils literal notranslate"><span class="pre">default_pool</span></code>.</p>
<p>By default tasks are running in <code class="docutils literal notranslate"><span class="pre">default_pool</span></code>.
<code class="docutils literal notranslate"><span class="pre">default_pool</span></code> is initialized with 128 slots and user can change the
number of slots through UI/CLI. <code class="docutils literal notranslate"><span class="pre">default_pool</span></code> cannot be removed.</p>
</div>
<div class="section" id="pool-config-option-in-celery-section-to-support-different-celery-pool-implementation">
<h4><code class="docutils literal notranslate"><span class="pre">pool</span></code> config option in Celery section to support different Celery pool implementation<a class="headerlink" href="#pool-config-option-in-celery-section-to-support-different-celery-pool-implementation" title="Permalink to this heading"></a></h4>
<p>The new <code class="docutils literal notranslate"><span class="pre">pool</span></code> config option allows users to choose different pool
implementation. Default value is “prefork”, while choices include “prefork” (default),
“eventlet”, “gevent” or “solo”. This may help users achieve better concurrency performance
in different scenarios.</p>
<p>For more details about Celery pool implementation, please refer to:</p>
<ul class="simple">
<li><p><a class="reference external" href="https://docs.celeryproject.org/en/latest/userguide/workers.html#concurrency">https://docs.celeryproject.org/en/latest/userguide/workers.html#concurrency</a></p></li>
<li><p><a class="reference external" href="https://docs.celeryproject.org/en/latest/userguide/concurrency/eventlet.html">https://docs.celeryproject.org/en/latest/userguide/concurrency/eventlet.html</a></p></li>
</ul>
</div>
<div class="section" id="change-to-method-signature-in-baseoperator-and-dag-classes">
<h4>Change to method signature in <code class="docutils literal notranslate"><span class="pre">BaseOperator</span></code> and <code class="docutils literal notranslate"><span class="pre">DAG</span></code> classes<a class="headerlink" href="#change-to-method-signature-in-baseoperator-and-dag-classes" title="Permalink to this heading"></a></h4>
<p>The signature of the <code class="docutils literal notranslate"><span class="pre">get_task_instances</span></code> method in the <code class="docutils literal notranslate"><span class="pre">BaseOperator</span></code> and <code class="docutils literal notranslate"><span class="pre">DAG</span></code> classes has changed. The change does not change the behavior of the method in either case.</p>
<div class="section" id="for-baseoperator">
<h5>For <code class="docutils literal notranslate"><span class="pre">BaseOperator</span></code><a class="headerlink" href="#for-baseoperator" title="Permalink to this heading"></a></h5>
<p>Old signature:</p>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="k">def</span> <span class="nf">get_task_instances</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">session</span><span class="p">,</span> <span class="n">start_date</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">end_date</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
<span class="o">...</span>
</pre></div>
</div>
<p>New signature:</p>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="nd">@provide_session</span>
<span class="k">def</span> <span class="nf">get_task_instances</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">start_date</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">end_date</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">session</span><span class="o">=</span><span class="kc">None</span><span class=