blob: 48b6639b6a9de452afdbf949bff0fc08a0d81a47 [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">
<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.0</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-0-2022-04-30">Airflow 2.3.0 (2022-04-30)</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="#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="#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-2-5-2022-04-04">Airflow 2.2.5, (2022-04-04)</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id1">Significant Changes</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#id2">Bug Fixes</a></li>
<li class="toctree-l4"><a class="reference internal" href="#id3">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="#id4">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="#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</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="#id8">Significant Changes</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>
</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="#id11">Significant Changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id12">Bug Fixes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id13">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="#id14">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="#id15">Bug Fixes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id16">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="#id17">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="#id20">New Features</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id21">Improvements</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id22">Bug Fixes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id23">Doc only changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id24">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="#id25">Significant Changes</a></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-1-3-2021-08-23">Airflow 2.1.3 (2021-08-23)</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id28">Significant Changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id29">Bug Fixes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id30">Improvements</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id31">Doc only changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id32">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="#id33">Significant Changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id34">Bug Fixes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id35">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="#id36">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="#id38">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="#id39">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="#id40">New Features</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">Bug Fixes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id43">Doc only changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id44">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="#id45">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="#id46">Bug Fixes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id47">Improvements</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id48">Doc only changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id49">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="#id50">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="#id51">Bug Fixes</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">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="#id54">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="#id57"><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="#id58"><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="#id59"><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="#id60"><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="#id61"><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="#id62"><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="#id64">Significant Changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id65">Bug Fixes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id66">Improvements</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id67">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="#id68">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="#id69">Bug Fixes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id70">Improvements</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id71">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="#id72">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="#id73">New Features</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id74">Bug Fixes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id75">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="#id76">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="#id77">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="#id78">New Features</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id79">Bug Fixes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id80">Improvements</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id81">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="#id82">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="#id83">New Features</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id84">Bug Fixes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id85">Improvements</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id86">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="#id87">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="#id88">New Features</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id89">Bug Fixes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id90">Improvements</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id91">Misc/Internal</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-9-2020-02-07">Airflow 1.10.9 (2020-02-07)</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id93">Significant Changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id94">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="#id95">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="#id96">New Features</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id97">Improvements</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id98">Bug Fixes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id99">Misc/Internal</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id100">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="#id101">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="#id102">New Features</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id103">Improvements</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id104">Bug Fixes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id105">Misc/Internal</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id106">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="#id107">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="#id108">New Features</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id109">Improvements</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id110">Bug Fixes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id111">Doc-only changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id112">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="#id113">Significant Changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id114">New Features</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id115">Improvements</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id116">Bug fixes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id117">Misc/Internal</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id118">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="#id119">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="#id121">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="#id122">Bug fixes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id123">Misc/Internal</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id124">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="#id125">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="#id126">Improvement</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-2-2019-01-19">Airflow 1.10.2 (2019-01-19)</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="#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="#id131">New features</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id132">Improvements</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">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="#id135">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="#id136">New features</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id137">Improvements</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id138">Doc-only changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id139">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="#id140">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="#id141">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="#id142">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="#id143">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="#id144">Significant Changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id145">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="#id146">Significant Changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id147">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="#id148">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="#id149">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="#id150">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="#id151">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="#id152">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.0</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-0-2022-04-30">Airflow 2.3.0 (2022-04-30)</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="#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="#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-2-5-2022-04-04">Airflow 2.2.5, (2022-04-04)</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id1">Significant Changes</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#id2">Bug Fixes</a></li>
<li class="toctree-l4"><a class="reference internal" href="#id3">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="#id4">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="#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</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="#id8">Significant Changes</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>
</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="#id11">Significant Changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id12">Bug Fixes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id13">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="#id14">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="#id15">Bug Fixes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id16">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="#id17">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="#id20">New Features</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id21">Improvements</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id22">Bug Fixes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id23">Doc only changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id24">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="#id25">Significant Changes</a></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-1-3-2021-08-23">Airflow 2.1.3 (2021-08-23)</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id28">Significant Changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id29">Bug Fixes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id30">Improvements</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id31">Doc only changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id32">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="#id33">Significant Changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id34">Bug Fixes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id35">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="#id36">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="#id38">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="#id39">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="#id40">New Features</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">Bug Fixes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id43">Doc only changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id44">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="#id45">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="#id46">Bug Fixes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id47">Improvements</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id48">Doc only changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id49">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="#id50">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="#id51">Bug Fixes</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">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="#id54">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="#id57"><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="#id58"><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="#id59"><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="#id60"><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="#id61"><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="#id62"><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="#id64">Significant Changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id65">Bug Fixes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id66">Improvements</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id67">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="#id68">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="#id69">Bug Fixes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id70">Improvements</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id71">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="#id72">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="#id73">New Features</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id74">Bug Fixes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id75">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="#id76">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="#id77">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="#id78">New Features</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id79">Bug Fixes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id80">Improvements</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id81">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="#id82">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="#id83">New Features</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id84">Bug Fixes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id85">Improvements</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id86">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="#id87">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="#id88">New Features</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id89">Bug Fixes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id90">Improvements</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id91">Misc/Internal</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-9-2020-02-07">Airflow 1.10.9 (2020-02-07)</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id93">Significant Changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id94">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="#id95">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="#id96">New Features</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id97">Improvements</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id98">Bug Fixes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id99">Misc/Internal</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id100">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="#id101">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="#id102">New Features</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id103">Improvements</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id104">Bug Fixes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id105">Misc/Internal</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id106">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="#id107">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="#id108">New Features</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id109">Improvements</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id110">Bug Fixes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id111">Doc-only changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id112">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="#id113">Significant Changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id114">New Features</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id115">Improvements</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id116">Bug fixes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id117">Misc/Internal</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id118">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="#id119">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="#id121">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="#id122">Bug fixes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id123">Misc/Internal</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id124">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="#id125">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="#id126">Improvement</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-2-2019-01-19">Airflow 1.10.2 (2019-01-19)</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="#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="#id131">New features</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id132">Improvements</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">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="#id135">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="#id136">New features</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id137">Improvements</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id138">Doc-only changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id139">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="#id140">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="#id141">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="#id142">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="#id143">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="#id144">Significant Changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id145">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="#id146">Significant Changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id147">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="#id148">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="#id149">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="#id150">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="#id151">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="#id152">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 headline"></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-0-2022-04-30" id="id153">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="id154">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="id155">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="id156">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="id157">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="id158">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="id159">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="id160">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="id161">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="id162">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="id163">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="id164">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="id165">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="id166">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="id167">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="id168">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="id169">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="id170">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="id171">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="id172">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="id173">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="id174">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="id175">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="id176">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="id177">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="id178">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="id179">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="id180">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="id181">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="id182">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="id183">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="id184">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="id185">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="id186">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="id187">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="id188">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="id189">Airflow 1.7.1 (2016-05-19)</a></p></li>
</ul>
</div>
<div class="section" id="airflow-2-3-0-2022-04-30">
<h2><a class="toc-backref" href="#id153">Airflow 2.3.0 (2022-04-30)</a><a class="headerlink" href="#airflow-2-3-0-2022-04-30" title="Permalink to this headline"></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="significant-changes">
<h3>Significant Changes<a class="headerlink" href="#significant-changes" title="Permalink to this headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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>
</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 headline"></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 headline"></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 headline"></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 headline"></a></h4>
<div class="section" id="tldr">
<h5>TLDR<a class="headerlink" href="#tldr" title="Permalink to this headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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="bug-fixes">
<h3>Bug Fixes<a class="headerlink" href="#bug-fixes" title="Permalink to this headline"></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="doc-only-changes">
<h3>Doc only changes<a class="headerlink" href="#doc-only-changes" title="Permalink to this headline"></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="misc-internal">
<h3>Misc/Internal<a class="headerlink" href="#misc-internal" title="Permalink to this headline"></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="#id154">Airflow 2.2.5, (2022-04-04)</a><a class="headerlink" href="#airflow-2-2-5-2022-04-04" title="Permalink to this headline"></a></h2>
<div class="section" id="id1">
<h3>Significant Changes<a class="headerlink" href="#id1" title="Permalink to this headline"></a></h3>
<p>No significant changes.</p>
<div class="section" id="id2">
<h4>Bug Fixes<a class="headerlink" href="#id2" title="Permalink to this headline"></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="id3">
<h4>Doc only changes<a class="headerlink" href="#id3" title="Permalink to this headline"></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 headline"></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="#id155">Airflow 2.2.4, (2022-02-22)</a><a class="headerlink" href="#airflow-2-2-4-2022-02-22" title="Permalink to this headline"></a></h2>
<div class="section" id="id4">
<h3>Significant Changes<a class="headerlink" href="#id4" title="Permalink to this headline"></a></h3>
<div class="section" id="smart-sensors-deprecated">
<h4>Smart sensors deprecated<a class="headerlink" href="#smart-sensors-deprecated" title="Permalink to this headline"></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="id5">
<h3>Bug Fixes<a class="headerlink" href="#id5" title="Permalink to this headline"></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="id6">
<h3>Doc only changes<a class="headerlink" href="#id6" title="Permalink to this headline"></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="id7">
<h3>Misc<a class="headerlink" href="#id7" title="Permalink to this headline"></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="#id156">Airflow 2.2.3, (2021-12-21)</a><a class="headerlink" href="#airflow-2-2-3-2021-12-21" title="Permalink to this headline"></a></h2>
<div class="section" id="id8">
<h3>Significant Changes<a class="headerlink" href="#id8" title="Permalink to this headline"></a></h3>
<p>No significant changes.</p>
</div>
<div class="section" id="id9">
<h3>Bug Fixes<a class="headerlink" href="#id9" title="Permalink to this headline"></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="id10">
<h3>Doc only changes<a class="headerlink" href="#id10" title="Permalink to this headline"></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="#id157">Airflow 2.2.2 (2021-11-15)</a><a class="headerlink" href="#airflow-2-2-2-2021-11-15" title="Permalink to this headline"></a></h2>
<div class="section" id="id11">
<h3>Significant Changes<a class="headerlink" href="#id11" title="Permalink to this headline"></a></h3>
<p>No significant changes.</p>
</div>
<div class="section" id="id12">
<h3>Bug Fixes<a class="headerlink" href="#id12" title="Permalink to this headline"></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="id13">
<h3>Doc only changes<a class="headerlink" href="#id13" title="Permalink to this headline"></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="#id158">Airflow 2.2.1 (2021-10-29)</a><a class="headerlink" href="#airflow-2-2-1-2021-10-29" title="Permalink to this headline"></a></h2>
<div class="section" id="id14">
<h3>Significant Changes<a class="headerlink" href="#id14" title="Permalink to this headline"></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 headline"></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 headline"></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="id15">
<h3>Bug Fixes<a class="headerlink" href="#id15" title="Permalink to this headline"></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="id16">
<h3>Doc only changes<a class="headerlink" href="#id16" title="Permalink to this headline"></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="#id159">Airflow 2.2.0 (2021-10-11)</a><a class="headerlink" href="#airflow-2-2-0-2021-10-11" title="Permalink to this headline"></a></h2>
<div class="section" id="id17">
<h3>Significant Changes<a class="headerlink" href="#id17" title="Permalink to this headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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="id20">
<h3>New Features<a class="headerlink" href="#id20" title="Permalink to this headline"></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="id21">
<h3>Improvements<a class="headerlink" href="#id21" title="Permalink to this headline"></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="id22">
<h3>Bug Fixes<a class="headerlink" href="#id22" title="Permalink to this headline"></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="id23">
<h3>Doc only changes<a class="headerlink" href="#id23" title="Permalink to this headline"></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="id24">
<h3>Misc/Internal<a class="headerlink" href="#id24" title="Permalink to this headline"></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="#id160">Airflow 2.1.4 (2021-09-18)</a><a class="headerlink" href="#airflow-2-1-4-2021-09-18" title="Permalink to this headline"></a></h2>
<div class="section" id="id25">
<h3>Significant Changes<a class="headerlink" href="#id25" title="Permalink to this headline"></a></h3>
<p>No significant changes.</p>
</div>
<div class="section" id="id26">
<h3>Bug Fixes<a class="headerlink" href="#id26" title="Permalink to this headline"></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="id27">
<h3>Doc only changes<a class="headerlink" href="#id27" title="Permalink to this headline"></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="#id161">Airflow 2.1.3 (2021-08-23)</a><a class="headerlink" href="#airflow-2-1-3-2021-08-23" title="Permalink to this headline"></a></h2>
<div class="section" id="id28">
<h3>Significant Changes<a class="headerlink" href="#id28" title="Permalink to this headline"></a></h3>
<p>No significant changes.</p>
</div>
<div class="section" id="id29">
<h3>Bug Fixes<a class="headerlink" href="#id29" title="Permalink to this headline"></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="id30">
<h3>Improvements<a class="headerlink" href="#id30" title="Permalink to this headline"></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="id31">
<h3>Doc only changes<a class="headerlink" href="#id31" title="Permalink to this headline"></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="id32">
<h3>Misc<a class="headerlink" href="#id32" title="Permalink to this headline"></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="#id162">Airflow 2.1.2 (2021-07-14)</a><a class="headerlink" href="#airflow-2-1-2-2021-07-14" title="Permalink to this headline"></a></h2>
<div class="section" id="id33">
<h3>Significant Changes<a class="headerlink" href="#id33" title="Permalink to this headline"></a></h3>
<p>No significant changes.</p>
</div>
<div class="section" id="id34">
<h3>Bug Fixes<a class="headerlink" href="#id34" title="Permalink to this headline"></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="id35">
<h3>Misc<a class="headerlink" href="#id35" title="Permalink to this headline"></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="#id163">Airflow 2.1.1 (2021-07-02)</a><a class="headerlink" href="#airflow-2-1-1-2021-07-02" title="Permalink to this headline"></a></h2>
<div class="section" id="id36">
<h3>Significant Changes<a class="headerlink" href="#id36" title="Permalink to this headline"></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 headline"></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 headline"></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="id38">
<h3>Bug Fixes<a class="headerlink" href="#id38" title="Permalink to this headline"></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="#id164">Airflow 2.1.0 (2021-05-21)</a><a class="headerlink" href="#airflow-2-1-0-2021-05-21" title="Permalink to this headline"></a></h2>
<div class="section" id="id39">
<h3>Significant Changes<a class="headerlink" href="#id39" title="Permalink to this headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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="id40">
<h3>New Features<a class="headerlink" href="#id40" title="Permalink to this headline"></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="id41">
<h3>Improvements<a class="headerlink" href="#id41" title="Permalink to this headline"></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="id42">
<h3>Bug Fixes<a class="headerlink" href="#id42" title="Permalink to this headline"></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="id43">
<h3>Doc only changes<a class="headerlink" href="#id43" title="Permalink to this headline"></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="id44">
<h3>Misc/Internal<a class="headerlink" href="#id44" title="Permalink to this headline"></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="#id165">Airflow 2.0.2 (2021-04-19)</a><a class="headerlink" href="#airflow-2-0-2-2021-04-19" title="Permalink to this headline"></a></h2>
<div class="section" id="id45">
<h3>Significant Changes<a class="headerlink" href="#id45" title="Permalink to this headline"></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 headline"></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 headline"></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="id46">
<h3>Bug Fixes<a class="headerlink" href="#id46" title="Permalink to this headline"></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="id47">
<h3>Improvements<a class="headerlink" href="#id47" title="Permalink to this headline"></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="id48">
<h3>Doc only changes<a class="headerlink" href="#id48" title="Permalink to this headline"></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="id49">
<h3>Misc/Internal<a class="headerlink" href="#id49" title="Permalink to this headline"></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="#id166">Airflow 2.0.1 (2021-02-08)</a><a class="headerlink" href="#airflow-2-0-1-2021-02-08" title="Permalink to this headline"></a></h2>
<div class="section" id="id50">
<h3>Significant Changes<a class="headerlink" href="#id50" title="Permalink to this headline"></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 headline"></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 headline"></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 headline"></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="id51">
<h3>Bug Fixes<a class="headerlink" href="#id51" title="Permalink to this headline"></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="id52">
<h3>Improvements<a class="headerlink" href="#id52" title="Permalink to this headline"></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="id53">
<h3>Doc only changes<a class="headerlink" href="#id53" title="Permalink to this headline"></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="#id167">Airflow 2.0.0 (2020-12-18)</a><a class="headerlink" href="#airflow-2-0-0-2020-12-18" title="Permalink to this headline"></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="id54">
<h3>Significant Changes<a class="headerlink" href="#id54" title="Permalink to this headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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="id57">
<h5><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.hooks.bigquery.BigQueryBaseCursor</span></code><a class="headerlink" href="#id57" title="Permalink to this headline"></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 headline"></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 headline"></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="id58">
<h5><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.hooks.dataflow.DataflowHook</span></code><a class="headerlink" href="#id58" title="Permalink to this headline"></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 headline"></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 headline"></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="id59">
<h5><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.hooks.pubsub.PubSubHook</span></code><a class="headerlink" href="#id59" title="Permalink to this headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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="id60">
<h5><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.hooks.bigquery.BigQueryHook</span></code><a class="headerlink" href="#id60" title="Permalink to this headline"></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 headline"></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 headline"></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 headline"></a></h5>
</div>
<div class="section" id="id61">
<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="#id61" title="Permalink to this headline"></a></h5>
</div>
<div class="section" id="id62">
<h5><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.dataflow.DataflowCreatePythonJobOperator</span></code><a class="headerlink" href="#id62" title="Permalink to this headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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="#id168">Airflow 1.10.15 (2021-03-17)</a><a class="headerlink" href="#airflow-1-10-15-2021-03-17" title="Permalink to this headline"></a></h2>
<div class="section" id="id64">
<h3>Significant Changes<a class="headerlink" href="#id64" title="Permalink to this headline"></a></h3>
<p>No significant changes.</p>
</div>
<div class="section" id="id65">
<h3>Bug Fixes<a class="headerlink" href="#id65" title="Permalink to this headline"></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="id66">
<h3>Improvements<a class="headerlink" href="#id66" title="Permalink to this headline"></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="id67">
<h3>Doc only changes<a class="headerlink" href="#id67" title="Permalink to this headline"></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="#id169">Airflow 1.10.14 (2020-12-10)</a><a class="headerlink" href="#airflow-1-10-14-2020-12-10" title="Permalink to this headline"></a></h2>
<div class="section" id="id68">
<h3>Significant Changes<a class="headerlink" href="#id68" title="Permalink to this headline"></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 headline"></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 headline"></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="id69">
<h3>Bug Fixes<a class="headerlink" href="#id69" title="Permalink to this headline"></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="id70">
<h3>Improvements<a class="headerlink" href="#id70" title="Permalink to this headline"></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="id71">
<h3>Doc only changes<a class="headerlink" href="#id71" title="Permalink to this headline"></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="#id170">Airflow 1.10.13 (2020-11-25)</a><a class="headerlink" href="#airflow-1-10-13-2020-11-25" title="Permalink to this headline"></a></h2>
<div class="section" id="id72">
<h3>Significant Changes<a class="headerlink" href="#id72" title="Permalink to this headline"></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 headline"></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 headline"></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 headline"></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 headline"></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="id73">
<h3>New Features<a class="headerlink" href="#id73" title="Permalink to this headline"></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="id74">
<h3>Bug Fixes<a class="headerlink" href="#id74" title="Permalink to this headline"></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="id75">
<h3>Improvements<a class="headerlink" href="#id75" title="Permalink to this headline"></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 headline"></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="id76">
<h3>Doc only changes<a class="headerlink" href="#id76" title="Permalink to this headline"></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="#id171">Airflow 1.10.12 (2020-08-25)</a><a class="headerlink" href="#airflow-1-10-12-2020-08-25" title="Permalink to this headline"></a></h2>
<div class="section" id="id77">
<h3>Significant Changes<a class="headerlink" href="#id77" title="Permalink to this headline"></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 headline"></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 headline"></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 headline"></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="id78">
<h3>New Features<a class="headerlink" href="#id78" title="Permalink to this headline"></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="id79">
<h3>Bug Fixes<a class="headerlink" href="#id79" title="Permalink to this headline"></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="id80">
<h3>Improvements<a class="headerlink" href="#id80" title="Permalink to this headline"></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="id81">
<h3>Doc only changes<a class="headerlink" href="#id81" title="Permalink to this headline"></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="#id172">Airflow 1.10.11 (2020-07-10)</a><a class="headerlink" href="#airflow-1-10-11-2020-07-10" title="Permalink to this headline"></a></h2>
<div class="section" id="id82">
<h3>Significant Changes<a class="headerlink" href="#id82" title="Permalink to this headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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="id83">
<h3>New Features<a class="headerlink" href="#id83" title="Permalink to this headline"></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="id84">
<h3>Bug Fixes<a class="headerlink" href="#id84" title="Permalink to this headline"></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="id85">
<h3>Improvements<a class="headerlink" href="#id85" title="Permalink to this headline"></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="id86">
<h3>Doc only changes<a class="headerlink" href="#id86" title="Permalink to this headline"></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="#id173">Airflow 1.10.10 (2020-04-09)</a><a class="headerlink" href="#airflow-1-10-10-2020-04-09" title="Permalink to this headline"></a></h2>
<div class="section" id="id87">
<h3>Significant Changes<a class="headerlink" href="#id87" title="Permalink to this headline"></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 headline"></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 headline"></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 headline"></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 headline"></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="id88">
<h3>New Features<a class="headerlink" href="#id88" title="Permalink to this headline"></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="id89">
<h3>Bug Fixes<a class="headerlink" href="#id89" title="Permalink to this headline"></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="id90">
<h3>Improvements<a class="headerlink" href="#id90" title="Permalink to this headline"></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="id91">
<h3>Misc/Internal<a class="headerlink" href="#id91" title="Permalink to this headline"></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="id92">
<h3>Doc only changes<a class="headerlink" href="#id92" title="Permalink to this headline"></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="#id174">Airflow 1.10.9 (2020-02-07)</a><a class="headerlink" href="#airflow-1-10-9-2020-02-07" title="Permalink to this headline"></a></h2>
<div class="section" id="id93">
<h3>Significant Changes<a class="headerlink" href="#id93" title="Permalink to this headline"></a></h3>
<p>No significant changes.</p>
</div>
<div class="section" id="id94">
<h3>Bug Fixes<a class="headerlink" href="#id94" title="Permalink to this headline"></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="#id175">Airflow 1.10.8 (2020-02-07)</a><a class="headerlink" href="#airflow-1-10-8-2020-02-07" title="Permalink to this headline"></a></h2>
<div class="section" id="id95">
<h3>Significant Changes<a class="headerlink" href="#id95" title="Permalink to this headline"></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 headline"></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="id96">
<h3>New Features<a class="headerlink" href="#id96" title="Permalink to this headline"></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="id97">
<h3>Improvements<a class="headerlink" href="#id97" title="Permalink to this headline"></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="id98">
<h3>Bug Fixes<a class="headerlink" href="#id98" title="Permalink to this headline"></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="id99">
<h3>Misc/Internal<a class="headerlink" href="#id99" title="Permalink to this headline"></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="id100">
<h3>Doc only changes<a class="headerlink" href="#id100" title="Permalink to this headline"></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="#id176">Airflow 1.10.7 (2019-12-24)</a><a class="headerlink" href="#airflow-1-10-7-2019-12-24" title="Permalink to this headline"></a></h2>
<div class="section" id="id101">
<h3>Significant Changes<a class="headerlink" href="#id101" title="Permalink to this headline"></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 headline"></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 headline"></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 headline"></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 headline"></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="id102">
<h3>New Features<a class="headerlink" href="#id102" title="Permalink to this headline"></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="id103">
<h3>Improvements<a class="headerlink" href="#id103" title="Permalink to this headline"></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="id104">
<h3>Bug Fixes<a class="headerlink" href="#id104" title="Permalink to this headline"></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="id105">
<h3>Misc/Internal<a class="headerlink" href="#id105" title="Permalink to this headline"></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="id106">
<h3>Doc only changes<a class="headerlink" href="#id106" title="Permalink to this headline"></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="#id177">Airflow 1.10.6 (2019-10-28)</a><a class="headerlink" href="#airflow-1-10-6-2019-10-28" title="Permalink to this headline"></a></h2>
<div class="section" id="id107">
<h3>Significant Changes<a class="headerlink" href="#id107" title="Permalink to this headline"></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 headline"></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 headline"></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 headline"></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="id108">
<h3>New Features<a class="headerlink" href="#id108" title="Permalink to this headline"></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="id109">
<h3>Improvements<a class="headerlink" href="#id109" title="Permalink to this headline"></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="id110">
<h3>Bug Fixes<a class="headerlink" href="#id110" title="Permalink to this headline"></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="id111">
<h3>Doc-only changes<a class="headerlink" href="#id111" title="Permalink to this headline"></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="id112">
<h3>Misc/Internal<a class="headerlink" href="#id112" title="Permalink to this headline"></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="#id178">Airflow 1.10.5 (2019-09-04)</a><a class="headerlink" href="#airflow-1-10-5-2019-09-04" title="Permalink to this headline"></a></h2>
<div class="section" id="id113">
<h3>Significant Changes<a class="headerlink" href="#id113" title="Permalink to this headline"></a></h3>
<p>No significant changes.</p>
</div>
<div class="section" id="id114">
<h3>New Features<a class="headerlink" href="#id114" title="Permalink to this headline"></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="id115">
<h3>Improvements<a class="headerlink" href="#id115" title="Permalink to this headline"></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="id116">
<h3>Bug fixes<a class="headerlink" href="#id116" title="Permalink to this headline"></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="id117">
<h3>Misc/Internal<a class="headerlink" href="#id117" title="Permalink to this headline"></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="id118">
<h3>Doc-only changes<a class="headerlink" href="#id118" title="Permalink to this headline"></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="#id179">Airflow 1.10.4 (2019-08-06)</a><a class="headerlink" href="#airflow-1-10-4-2019-08-06" title="Permalink to this headline"></a></h2>
<div class="section" id="id119">
<h3>Significant Changes<a class="headerlink" href="#id119" title="Permalink to this headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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 headline"></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="p">):</span>
<span class="o">...</span>
</pre></div>
</div>
</div>
<div class="section" id="for-dag">
<h5>For <code class="docutils literal notranslate"><span class="pre">DAG</span></code><a class="headerlink" href="#for-dag" title="Permalink to this headline"></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="n">state</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">state</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="o">...</span>
</pre></div>
</div>
<p>In either case, it is necessary to rewrite calls to the <code class="docutils literal notranslate"><span class="pre">get_task_instances</span></code> method that currently provide the <code class="docutils literal notranslate"><span class="pre">session</span></code> positional argument. New calls to this method look like:</p>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="c1"># if you can rely on @provide_session</span>
<span class="n">dag</span><span class="o">.</span><span class="n">get_task_instances</span><span class="p">()</span>
<span class="c1"># if you need to provide the session</span>
<span class="n">dag</span><span class="o">.</span><span class="n">get_task_instances</span><span class="p">(</span><span class="n">session</span><span class="o">=</span><span class="n">your_session</span><span class="p">)</span>
</pre></div>
</div>
</div>
</div>
</div>
<div class="section" id="id121">
<h3>New Features<a class="headerlink" href="#id121" title="Permalink to this headline"></a></h3>
<ul class="simple">
<li><p>[AIRFLOW-4811] Implement GCP Data Loss Prevention Hook and Operators (#5539)</p></li>
<li><p>[AIRFLOW-5035] Replace multiprocessing.Manager with a golang-“channel” style (#5615)</p></li>
<li><p>[AIRFLOW-4883] Kill hung file process managers (#5605)</p></li>
<li><p>[AIRFLOW-4929] Pretty print JSON Variables in UI (#5573)</p></li>
<li><p>[AIRFLOW-4884] Roll up import_errors in RBAC UI (#5516)</p></li>
<li><p>[AIRFLOW-4871] Allow creating DagRuns via RBAC UI (#5507)</p></li>
<li><p>[AIRFLOW-4591] Make default_pool a real pool (#5349)</p></li>
<li><p>[AIRFLOW-4844] Add optional is_paused_upon_creation argument to DAG (#5473)</p></li>
<li><p>[AIRFLOW-4456] Add sub-classable BaseBranchOperator (#5231)</p></li>
<li><p>[AIRFLOW-4343] Show warning in UI if scheduler is not running (#5127)</p></li>
<li><p>[AIRFLOW-4739] Add ability to arbitrarily define kubernetes worker pod labels (#5376)</p></li>
<li><p>[AIRFLOW-4348] Add GCP console link in BigQueryOperator (#5195)</p></li>
<li><p>[AIRFLOW-4306] Global operator extra links (#5094)</p></li>
<li><p>[AIRFLOW-4812] Add batch images annotation (#5433)</p></li>
<li><p>[AIRFLOW-4135] Add Google Cloud Build operator and hook (#5251)</p></li>
<li><p>[AIRFLOW-4781] Add the ability to specify ports in KubernetesPodOperator (#5410)</p></li>
<li><p>[AIRFLOW-4521] Pause dag also pause its subdags (#5283)</p></li>
<li><p>[AIRFLOW-4738] Enforce exampleinclude for example DAGs (#5375)</p></li>
<li><p>[AIRFLOW-4326] Airflow AWS SQS Operator (#5110)</p></li>
<li><p>[AIRFLOW-3729] Support <code class="docutils literal notranslate"><span class="pre">DownwardAPI</span></code> in env variables for KubernetesPodOperator (#4554)</p></li>
<li><p>[AIRFLOW-4585] Implement Kubernetes Pod Mutation Hook (#5359)</p></li>
<li><p>[AIRFLOW-161] New redirect route and extra links (#5059)</p></li>
<li><p>[AIRFLOW-4420] Backfill respects task_concurrency (#5221)</p></li>
<li><p>[AIRFLOW-4147] Add Operator to publish event to Redis (#4967)</p></li>
<li><p>[AIRFLOW-3359] Add option to pass customer encryption keys to Dataproc (#4200)</p></li>
<li><p>[AIRFLOW-4318] Create Google Cloud Translate Speech Operator (#5102)</p></li>
<li><p>[AIRFLOW-3960] Adds Google Cloud Speech operators (#4780)</p></li>
<li><p>[AIRFLOW-1501] Add GoogleCloudStorageDeleteOperator (#5230)</p></li>
<li><p>[AIRFLOW-3672] Add support for Mongo DB DNS Seedlist Connection Format (#4481)</p></li>
<li><p>[AIRFLOW-4397] add integrations docs manually for gcs sensors (#5204)</p></li>
<li><p>[AIRFLOW-4251] Instrument DagRun schedule delay (#5050)</p></li>
<li><p>[AIRFLOW-4118] instrument DagRun duration (#4946)</p></li>
<li><p>[AIRFLOW-4361] Fix flaky test_integration_run_dag_with_scheduler_failure (#5182)</p></li>
<li><p>[AIRFLOW-4361] Fix flaky test_integration_run_dag_with_scheduler_failure (#5140)</p></li>
<li><p>[AIRFLOW-4168] Create Google Cloud Video Intelligence Operators (#4985)</p></li>
<li><p>[AIRFLOW-4397] Add GCSUploadSessionCompleteSensor (#5166)</p></li>
<li><p>[AIRFLOW-4335] Add default num_retries to GCP connection (#5117)</p></li>
<li><p>[AIRFLOW-3808] Add cluster_fields to BigQueryHook’s create_empty_table (#4654)</p></li>
<li><p>[AIRFLOW-4362] Fix test_execution_limited_parallelism (#5141)</p></li>
<li><p>[AIRFLOW-4307] Backfill respects concurrency limit (#5128)</p></li>
<li><p>[AIRFLOW-4268] Add MsSqlToGoogleCloudStorageOperator (#5077)</p></li>
<li><p>[AIRFLOW-4169] Add Google Cloud Vision Detect Operators (#4986)</p></li>
<li><p>[AIRFLOW-XXX] Fix WS-2019-0032 (#5384)</p></li>
<li><p>[AIRFLOW-XXX] Fix CVE-2019-11358 (#5197)</p></li>
<li><p>[AIRFLOW-XXX] Change allowed version of Jinja2 to fix CVE-2019-10906 (#5075)</p></li>
</ul>
</div>
<div class="section" id="improvement">
<h3>Improvement<a class="headerlink" href="#improvement" title="Permalink to this headline"></a></h3>
<ul class="simple">
<li><p>[AIRFLOW-5022] Fix DockerHook for registries with port numbers (#5644)</p></li>
<li><p>[AIRFLOW-4961] Insert TaskFail.duration as int match DB schema column type (#5593)</p></li>
<li><p>[AIRFLOW-5038] skip pod deleted log message when pod deletion is disabled (#5656)</p></li>
<li><p>[AIRFLOW-5067] Update pagination symbols (#5682)</p></li>
<li><p>[AIRFLOW-4981][AIRFLOW-4788] Always use pendulum DateTimes in task instance context (#5654)</p></li>
<li><p>[AIRFLOW-4880] Add success, failure and fail_on_empty params to SqlSensor (#5488)</p></li>
<li><p>[AIRFLOW-3617] Add gpu limits option in configurations for Kube executor and pod (#5643)</p></li>
<li><p>[AIRFLOW-4998] Run multiple queries in BigQueryOperator (#5619)</p></li>
<li><p>[AIRFLOW-4929] Improve display of JSON Variables in UI (#5641)</p></li>
<li><p>[AIRFLOW-4959] Add .hql support for the DataProcHiveOperator (#5591)</p></li>
<li><p>[AIRFLOW-4962] Fix Werkzeug v0.15 deprecation notice for DispatcherMiddleware import (#5595)</p></li>
<li><p>[AIRFLOW-4797] Improve performance and behaviour of zombie detection (#5511)</p></li>
<li><p>[AIRFLOW-4911] Silence the FORBIDDEN errors from the KubernetesExecutor (#5547)</p></li>
<li><p>[AIRFLOW-3495] Validate one of query and query_uri passed to DataProcSparkSqlOperator (#5510)</p></li>
<li><p>[AIRFLOW-4925] Improve css style for Variables Import file field (#5552)</p></li>
<li><p>[AIRFLOW-4906] Improve debugging for the SparkSubmitHook (#5542)</p></li>
<li><p>[AIRFLOW-4904] unittest.cfg name and path can be overridden by setting $AIRFLOW_TEST_CONFIG (#5540)</p></li>
<li><p>[AIRFLOW-4920] Use html.escape instead of cgi.escape to fix DeprecationWarning (#5551)</p></li>
<li><p>[AIRFLOW-4919] DataProcJobBaseOperator dataproc_*_properties templated (#5555)</p></li>
<li><p>[AIRFLOW-4478] Lazily instantiate default resources objects. (#5259)</p></li>
<li><p>[AIRFLOW-4564] AzureContainerInstance bugfixes and improvements (#5319)</p></li>
<li><p>[AIRFLOW-4237] Including Try Number of Task in Gantt Chart (#5037)</p></li>
<li><p>[AIRFLOW-4862] Allow directly using IP address as hostname for webserver logs (#5501)</p></li>
<li><p>[AIRFLOW-4857] Add templated fields to SlackWebhookOperator (#5490)</p></li>
<li><p>[AIRFLOW-3502] Add Celery config option for setting “pool” (#4308)</p></li>
<li><p>[AIRFLOW-3217] Button to toggle line wrapping in log and code views (#4277)</p></li>
<li><p>[AIRFLOW-4491] Add a “Jump to end” button for logs (#5266)</p></li>
<li><p>[AIRFLOW-4422] Pool utilization stats (#5453)</p></li>
<li><p>[AIRFLOW-4805] Add py_file as templated field in DataflowPythonOperator (#5451)</p></li>
<li><p>[AIRFLOW-4838] Surface Athena errors in AWSAthenaOperator (#5467)</p></li>
<li><p>[AIRFLOW-4831] conf.has_option no longer throws if section is missing. (#5455)</p></li>
<li><p>[AIRFLOW-4829] More descriptive exceptions for EMR sensors (#5452)</p></li>
<li><p>[AIRFLOW-4414] AWSAthenaOperator: Push QueryExecutionID to XCom (#5276)</p></li>
<li><p>[AIRFLOW-4791] add “schema” keyword arg to SnowflakeOperator (#5415)</p></li>
<li><p>[AIRFLOW-4759] Don’t error when marking successful run as failed (#5435)</p></li>
<li><p>[AIRFLOW-4716] Instrument dag loading time duration (#5350)</p></li>
<li><p>[AIRFLOW-3958] Support list tasks as upstream in chain (#4779)</p></li>
<li><p>[AIRFLOW-4409] Prevent task duration break by null value (#5178)</p></li>
<li><p>[AIRFLOW-4418] Add “failed only” option to task modal (#5193)</p></li>
<li><p>[AIRFLOW-4740] Accept string <code class="docutils literal notranslate"><span class="pre">end_date</span></code> in DAG default_args (#5381)</p></li>
<li><p>[AIRFLOW-4423] Improve date handling in mysql to gcs operator. (#5196)</p></li>
<li><p>[AIRFLOW-4447] Display task duration as human friendly format in UI (#5218)</p></li>
<li><p>[AIRFLOW-4377] Remove needless object conversion in DAG.owner() (#5144)</p></li>
<li><p>[AIRFLOW-4766] Add autoscaling option for DataprocClusterCreateOperator (#5425)</p></li>
<li><p>[AIRFLOW-4795] Upgrade alembic to latest release. (#5411)</p></li>
<li><p>[AIRFLOW-4793] Add signature_name to mlengine operator (#5417)</p></li>
<li><p>[AIRFLOW-3211] Reattach to GCP Dataproc jobs upon Airflow restart (#4083)</p></li>
<li><p>[AIRFLOW-4750] Log identified zombie task instances (#5389)</p></li>
<li><p>[AIRFLOW-3870] STFPOperator: Update log level and return value (#4355)</p></li>
<li><p>[AIRFLOW-4759] Batch queries in set_state API. (#5403)</p></li>
<li><p>[AIRFLOW-2737] Restore original license header to airflow.api.auth.backend.kerberos_auth</p></li>
<li><p>[AIRFLOW-3635] Fix incorrect logic in delete_dag (introduced in PR#4406) (#4445)</p></li>
<li><p>[AIRFLOW-3599] Removed Dagbag from delete dag (#4406)</p></li>
<li><p>[AIRFLOW-4737] Increase and document celery queue name limit (#5383)</p></li>
<li><p>[AIRFLOW-4505] Correct Tag ALL for PY3 (#5275)</p></li>
<li><p>[AIRFLOW-4743] Add environment variables support to SSHOperator (#5385)</p></li>
<li><p>[AIRFLOW-4725] Fix setup.py PEP440 &amp; Sphinx-PyPI-upload dependency (#5363)</p></li>
<li><p>[AIRFLOW-3370] Add stdout output options to Elasticsearch task log handler (#5048)</p></li>
<li><p>[AIRFLOW-4396] Provide a link to external Elasticsearch logs in UI. (#5164)</p></li>
<li><p>[AIRFLOW-1381] Allow setting host temporary directory in DockerOperator (#5369)</p></li>
<li><p>[AIRFLOW-4598] Task retries are not exhausted for K8s executor (#5347)</p></li>
<li><p>[AIRFLOW-4218] Support to Provide http args to K8executor while calling k8 Python client lib apis (#5060)</p></li>
<li><p>[AIRFLOW-4159] Add support for additional static pod labels for K8sExecutor (#5134)</p></li>
<li><p>[AIRFLOW-4720] Allow comments in .airflowignore files. (#5355)</p></li>
<li><p>[AIRFLOW-4486] Add AWS IAM authentication in MySqlHook (#5334)</p></li>
<li><p>[AIRFLOW-4417] Add AWS IAM authentication for PostgresHook (#5223)</p></li>
<li><p>[AIRFLOW-3990] Compile regular expressions. (#4813)</p></li>
<li><p>[AIRFLOW-4572] Rename prepare_classpath() to prepare_syspath() (#5328)</p></li>
<li><p>[AIRFLOW-3869] Raise consistent exception in AirflowConfigParser.getboolean (#4692)</p></li>
<li><p>[AIRFLOW-4571] Add headers to templated field for SimpleHttpOperator (#5326)</p></li>
<li><p>[AIRFLOW-3867] Rename GCP’s subpackage (#4690)</p></li>
<li><p>[AIRFLOW-3725] Add private_key to bigquery_hook get_pandas_df (#4549)</p></li>
<li><p>[AIRFLOW-4546] Upgrade google-cloud-bigtable. (#5307)</p></li>
<li><p>[AIRFLOW-4519] Optimise operator classname sorting in views (#5282)</p></li>
<li><p>[AIRFLOW-4503] Support fully pig options (#5271)</p></li>
<li><p>[AIRFLOW-4468] add sql_alchemy_max_overflow parameter (#5249)</p></li>
<li><p>[AIRFLOW-4467] Add dataproc_jars to templated fields in Dataproc oper… (#5248)</p></li>
<li><p>[AIRFLOW-4381] Use get_direct_relative_ids get task relatives (#5147)</p></li>
<li><p>[AIRFLOW-3624] Add masterType parameter to MLEngineTrainingOperator (#4428)</p></li>
<li><p>[AIRFLOW-3143] Support Auto-Zone in DataprocClusterCreateOperator (#5169)</p></li>
<li><p>[AIRFLOW-3874] Improve BigQueryHook.run_with_configuration’s location support (#4695)</p></li>
<li><p>[AIRFLOW-4399] Avoid duplicated os.path.isfile() check in models.dagbag (#5165)</p></li>
<li><p>[AIRFLOW-4031] Allow for key pair auth in snowflake hook (#4875)</p></li>
<li><p>[AIRFLOW-3901] add role as optional config parameter for SnowflakeHook (#4721)</p></li>
<li><p>[AIRFLOW-3455] add region in snowflake connector (#4285)</p></li>
<li><p>[AIRFLOW-4073] add template_ext for AWS Athena operator (#4907)</p></li>
<li><p>[AIRFLOW-4093] AWSAthenaOperator: Throw exception if job failed/cancelled/reach max retries (#4919)</p></li>
<li><p>[AIRFLOW-4356] Add extra RuntimeEnvironment keys to DataFlowHook (#5149)</p></li>
<li><p>[AIRFLOW-4337] Fix docker-compose deprecation warning in CI (#5119)</p></li>
<li><p>[AIRFLOW-3603] QuboleOperator: Remove SQLCommand from SparkCmd documentation (#4411)</p></li>
<li><p>[AIRFLOW-4328] Fix link to task instances from Pool page (#5124)</p></li>
<li><p>[AIRFLOW-4255] Make GCS Hook Backwards compatible (#5089)</p></li>
<li><p>[AIRFLOW-4103] Allow uppercase letters in dataflow job names (#4925)</p></li>
<li><p>[AIRFLOW-4255] Replace Discovery based api with client based for GCS (#5054)</p></li>
<li><p>[AIRFLOW-4311] Remove sleep in localexecutor (#5096)</p></li>
<li><p>[AIRFLOW-2836] Minor improvement-contrib.sensors.FileSensor (#3674)</p></li>
<li><p>[AIRFLOW-4104] Add type annotations to common classes. (#4926)</p></li>
<li><p>[AIRFLOW-3910] Raise exception explicitly in Connection.get_hook() (#4728)</p></li>
<li><p>[AIRFLOW-3322] Update QuboleHook to fetch args dynamically from qds_sdk (#4165)</p></li>
<li><p>[AIRFLOW-4565] instrument celery executor (#5321)</p></li>
<li><p>[AIRFLOW-4573] Import airflow_local_settings after prepare_classpath (#5330)</p></li>
<li><p>[AIRFLOW-4448] Don’t bake ENV and _cmd into tmp config for non-sudo (#4050)</p></li>
<li><p>[AIRFLOW-4295] Make <code class="docutils literal notranslate"><span class="pre">method</span></code> attribute case insensitive in HttpHook (#5313)</p></li>
<li><p>[AIRFLOW-3703] Add dnsPolicy option for KubernetesPodOperator (#4520)</p></li>
<li><p>[AIRFLOW-3057] add prev_*_date_success to template context (#5372)</p></li>
<li><p>[AIRFLOW-4336] Stop showing entire GCS files bytes in log for gcs_download_operator (#5151)</p></li>
<li><p>[AIRFLOW-4528] Cancel DataProc task on timeout (#5293)</p></li>
</ul>
</div>
<div class="section" id="id122">
<h3>Bug fixes<a class="headerlink" href="#id122" title="Permalink to this headline"></a></h3>
<ul class="simple">
<li><p>[AIRFLOW-5089] Change version requirement on google-cloud-spanner to work around version incompatibility (#5703)</p></li>
<li><p>[AIRFLOW-4289] fix spark_binary argument being ignored in SparkSubmitHook (#5564)</p></li>
<li><p>[AIRFLOW-5075] Let HttpHook handle connections with empty host fields (#5686)</p></li>
<li><p>[AIRFLOW-4822] Fix bug where parent-dag task instances are wrongly cleared when using subdags (#5444)</p></li>
<li><p>[AIRFLOW-5050] Correctly delete FAB permission m2m objects in <code class="docutils literal notranslate"><span class="pre">airflow</span> <span class="pre">sync_perms</span></code> (#5679)</p></li>
<li><p>[AIRFLOW-5030] fix env var expansion for config key contains __ (#5650)</p></li>
<li><p>[AIRFLOW-4590] changing log level to be proper library to suppress warning in WinRM (#5337)</p></li>
<li><p>[AIRFLOW-4451] Allow named tuples to be templated (#5673)</p></li>
<li><p>[AIRFLOW-XXX] Fix bug where Kube pod limits were not applied (requests were, but not limits) (#5657)</p></li>
<li><p>[AIRFLOW-4775] Fix incorrect parameter order in GceHook (#5613)</p></li>
<li><p>[AIRFLOW-4995] Fix DB initialisation on MySQL &gt;=8.0.16 (#5614)</p></li>
<li><p>[AIRFLOW-4934] Fix ProxyFix due to Werkzeug upgrade (#5563) (#5571)</p></li>
<li><p>[AIRFLOW-4136] fix key_file of hook is overwritten by SSHHook connection (#5558)</p></li>
<li><p>[AIRFLOW-4587] Replace self.conn with self.get_conn() in AWSAthenaHook (#5545)</p></li>
<li><p>[AIRFLOW-1740] Fix xcom creation and update via UI (#5530) (#5531)</p></li>
<li><p>[AIRFLOW-4900] Resolve incompatible version of Werkzeug (#5535)</p></li>
<li><p>[AIRFLOW-4510] Don’t mutate default_args during DAG initialization (#5277)</p></li>
<li><p>[AIRFLOW-3360] Make the DAGs search respect other querystring parameters with url-search-params-polyfill for IE support (#5503)</p></li>
<li><p>[AIRFLOW-4896] Make KubernetesExecutorConfig’s default args immutable (#5534)</p></li>
<li><p>[AIRFLOW-4494] Remove <code class="docutils literal notranslate"><span class="pre">shell=True</span></code> in DaskExecutor (#5273)</p></li>
<li><p>[AIRFLOW-4890] Fix Log link in TaskInstance’s View for Non-RBAC (#5525)</p></li>
<li><p>[AIRFLOW-4892] Fix connection creation via UIs (#5527)</p></li>
<li><p>[AIRFLOW-4406] Fix a method name typo: NullFernet.decrpyt to decrypt (#5509)</p></li>
<li><p>[AIRFLOW-4849] Add gcp_conn_id to cloudsqldatabehook class to use correctly CloudSqlProxyRunner class (#5478)</p></li>
<li><p>[AIRFLOW-4769] Pass gcp_conn_id to BigtableHook (#5445)</p></li>
<li><p>[AIRFLOW-4524] Fix incorrect field names in view for Mark Success/Failure (#5486)</p></li>
<li><p>[AIRFLOW-3671] Remove arg <code class="docutils literal notranslate"><span class="pre">replace</span></code> of MongoToS3Operator from <code class="docutils literal notranslate"><span class="pre">kwargs</span></code> (#4480)</p></li>
<li><p>[AIRFLOW-4845] Fix bug where runAsUser 0 doesn’t get set in k8s security context (#5474)</p></li>
<li><p>[AIRFLOW-4354] Fix exception in “between” date filter in classic UI (#5480)</p></li>
<li><p>[AIRFLOW-4587] Replace self.conn with self.get_conn() in AWSAthenaHook (#5462)</p></li>
<li><p>[AIRFLOW-4516] K8s runAsUser and fsGroup cannot be strings (#5429)</p></li>
<li><p>[AIRFLOW-4298] Stop Scheduler repeatedly warning “connection invalidated” (#5470)</p></li>
<li><p>[AIRFLOW-4559] JenkinsJobTriggerOperator bugfix (#5318)</p></li>
<li><p>[AIRFLOW-4841] Pin Sphinx AutoApi to 1.0.0 (#5468)</p></li>
<li><p>[AIRFLOW-4479] Include s3_overwrite kwarg in load_bytes method (#5312)</p></li>
<li><p>[AIRFLOW-3746] Fix DockerOperator missing container exit (#4583)</p></li>
<li><p>[AIRFLOW-4233] Remove Template Extension from Bq to GCS Operator (#5456)</p></li>
<li><p>[AIRFLOW-2141][AIRFLOW-3157][AIRFLOW-4170] Serialize non-str value by JSON when importing Variables (#4991)</p></li>
<li><p>[AIRFLOW-4826] Remove warning from <code class="docutils literal notranslate"><span class="pre">airflow</span> <span class="pre">resetdb</span></code> command (#5447)</p></li>
<li><p>[AIRFLOW-4148] Fix editing DagRuns when clicking state column (#5436)</p></li>
<li><p>[AIRFLOW-4455] dag_details broken for subdags in RBAC UI (#5234)</p></li>
<li><p>[AIRFLOW-2955] Fix kubernetes pod operator to set requests and limits on task pods (#4551)</p></li>
<li><p>[AIRFLOW-4459] Fix wrong DAG count in /home page when DAG count is zero (#5235)</p></li>
<li><p>[AIRFLOW-3876] AttributeError: module <code class="docutils literal notranslate"><span class="pre">distutils</span></code> has no attribute ‘util’</p></li>
<li><p>[AIRFLOW-4146] Fix CgroupTaskRunner errors (#5224)</p></li>
<li><p>[AIRFLOW-4524] Fix bug with “Ignore *” toggles in RBAC mode (#5378)</p></li>
<li><p>[AIRFLOW-4765] Fix DataProcPigOperator execute method (#5426)</p></li>
<li><p>[AIRFLOW-4798] Obviate interdependencies for dagbag and TI tests (#5422)</p></li>
<li><p>[AIRFLOW-4800] Fix GKEClusterHook ctor calls (#5424)</p></li>
<li><p>[AIRFLOW-4799] Don’t mutate self.env in BashOperator execute method (#5421)</p></li>
<li><p>[AIRFLOW-4393] Add retry logic when fetching pod status and/or logs in KubernetesPodOperator (#5284)</p></li>
<li><p>[AIRFLOW-4174] Fix HttpHook run with backoff (#5213)</p></li>
<li><p>[AIRFLOW-4463] Handle divide-by-zero errors in short retry intervals (#5243)</p></li>
<li><p>[AIRFLOW-2614] Speed up trigger_dag API call when lots of DAGs in system</p></li>
<li><p>[AIRFLOW-4756] add ti.state to ti.start_date as criteria for gantt (#5399)</p></li>
<li><p>[AIRFLOW-4760] Fix zip-packaged DAGs disappearing from DagBag when reloaded (#5404)</p></li>
<li><p>[AIRFLOW-4731] Fix GCS hook with google-storage-client 1.16 (#5368)</p></li>
<li><p>[AIRFLOW-3506] use match_phrase to query log_id in elasticsearch (#4342)</p></li>
<li><p>[AIRFLOW-4084] fix ElasticSearch log download (#5177)</p></li>
<li><p>[AIRFLOW-4501] Register pendulum datetime converter for sqla+pymysql (#5190)</p></li>
<li><p>[AIRFLOW-986] HiveCliHook ignores ‘proxy_user’ value in a connection’s extra parameter (#5305)</p></li>
<li><p>[AIRFLOW-4442] fix hive_tblproperties in HiveToDruidTransfer (#5211)</p></li>
<li><p>[AIRFLOW-4557] Add gcp_conn_id parameter to get_sqlproxy_runner() of CloudSqlDatabaseHook (#5314)</p></li>
<li><p>[AIRFLOW-4545] Upgrade FAB to latest version (#4955)</p></li>
<li><p>[AIRFLOW-4492] Change Dataproc Cluster operators to poll Operations (#5269)</p></li>
<li><p>[AIRFLOW-4452] Webserver and Scheduler keep crashing because of slackclient update (#5225)</p></li>
<li><p>[AIRFLOW-4450] Fix request arguments in has_dag_access (#5220)</p></li>
<li><p>[AIRFLOW-4434] Support Impala with the HiveServer2Hook (#5206)</p></li>
<li><p>[AIRFLOW-3449] Write local dag parsing logs when remote logging enabled. (#5175)</p></li>
<li><p>[AIRFLOW-4300] Fix graph modal call when DAG has not yet run (#5185)</p></li>
<li><p>[AIRFLOW-4401] Use managers for Queue synchronization (#5200)</p></li>
<li><p>[AIRFLOW-3626] Fixed triggering DAGs contained within zip files (#4439)</p></li>
<li><p>[AIRFLOW-3720] Fix mismatch while comparing GCS and S3 files (#4766)</p></li>
<li><p>[AIRFLOW-4403] search by <code class="docutils literal notranslate"><span class="pre">dag_id</span></code> or <code class="docutils literal notranslate"><span class="pre">owners</span></code> in UI (#5184)</p></li>
<li><p>[AIRFLOW-4308] Fix TZ-loop around DST on Python 3.6+ (#5095)</p></li>
<li><p>[AIRFLOW-4324] fix DAG fuzzy search in RBAC UI (#5131)</p></li>
<li><p>[AIRFLOW-4297] Temporary hot fix on manage_slas() for 1.10.4 release (#5150)</p></li>
<li><p>[AIRFLOW-4299] Upgrade to Celery 4.3.0 to fix crashing workers (#5116)</p></li>
<li><p>[AIRFLOW-4291] Correctly render doc_md in DAG graph page (#5121)</p></li>
<li><p>[AIRFLOW-4310] Fix incorrect link on Dag Details page (#5122)</p></li>
<li><p>[AIRFLOW-4331] Correct filter for Null-state runs from Dag Detail page (#5123)</p></li>
<li><p>[AIRFLOW-4294] Fix missing dag &amp; task runs in UI dag_id contains a dot (#5111)</p></li>
<li><p>[AIRFLOW-4332] Upgrade sqlalchemy to remove security Vulnerability (#5113)</p></li>
<li><p>[AIRFLOW-4312] Add template_fields &amp; template_ext to BigQueryCheckO… (#5097)</p></li>
<li><p>[AIRFLOW-4293] Fix downgrade in d4ecb8fbee3_add_schedule_interval_to_dag.py (#5086)</p></li>
<li><p>[AIRFLOW-4267] Fix TI duration in Graph View (#5071)</p></li>
<li><p>[AIRFLOW-4163] IntervalCheckOperator supports relative diff and not ignore 0 (#4983)</p></li>
<li><p>[AIRFLOW-3938] QuboleOperator Fixes and Support for SqlCommand (#4832)</p></li>
<li><p>[AIRFLOW-2903] Change default owner to <code class="docutils literal notranslate"><span class="pre">airflow</span></code> (#4151)</p></li>
<li><p>[AIRFLOW-4136] Fix overwrite of key_file by constructor (#5155)</p></li>
<li><p>[AIRFLOW-3241] Remove Invalid template ext in GCS Sensors (#4076)</p></li>
</ul>
</div>
<div class="section" id="id123">
<h3>Misc/Internal<a class="headerlink" href="#id123" title="Permalink to this headline"></a></h3>
<ul class="simple">
<li><p>[AIRFLOW-4338] Change k8s pod_request_factory to use yaml safe_load (#5120)</p></li>
<li><p>[AIRFLOW-4869] Reorganize sql to gcs operators. (#5504)</p></li>
<li><p>[AIRFLOW-5021] move gitpython into setup_requires (#5640)</p></li>
<li><p>[AIRFLOW-4583] Fixes type error in GKEPodOperator (#5612)</p></li>
<li><p>[AIRFLOW-4116] Dockerfile now supports CI image build on DockerHub (#4937)</p></li>
<li><p>[AIRFLOW-4115] Multi-staging Airflow Docker image (#4936)</p></li>
<li><p>[AIRFLOW-4963] Avoid recreating task context (#5596)</p></li>
<li><p>[AIRFLOW-4865] Add context manager to set temporary config values in tests. (#5569)</p></li>
<li><p>[AIRFLOW-4937] Fix lodash security issue with version below 4.17.13 (#5572) (used only in build-pipeline, not runtime)</p></li>
<li><p>[AIRFLOW-4868] Fix typo in kubernetes/docker/build.sh (#5505)</p></li>
<li><p>[AIRFLOW-4211] Add tests for WebHDFSHook (#5015)</p></li>
<li><p>[AIRFLOW-4320] Add tests for SegmentTrackEventOperator (#5104)</p></li>
<li><p>[AIRFLOW-4319] Add tests for Bigquery related Operators (#5101)</p></li>
<li><p>[AIRFLOW-4014] Change DatastoreHook and add tests (#4842)</p></li>
<li><p>[AIRFLOW-4322] Add test for VerticaOperator (#5107)</p></li>
<li><p>[AIRFLOW-4323] Add 2 tests for WinRMOperator (#5108)</p></li>
<li><p>[AIRFLOW-3677] Improve CheckOperator test coverage (#4756)</p></li>
<li><p>[AIRFLOW-4659] Fix pylint problems for api module (#5398)</p></li>
<li><p>[AIRFLOW-4358] Speed up test_jobs by not running tasks (#5162)</p></li>
<li><p>[AIRFLOW-4394] Don’t test behaviour of BackfillJob from CLI tests (#5160)</p></li>
<li><p>[AIRFLOW-3471] Move XCom out of models.py (#4629)</p></li>
<li><p>[AIRFLOW-4379] Remove duplicate code &amp; Add validation in gcs_to_gcs.py (#5145)</p></li>
<li><p>[AIRFLOW-4259] Move models out of models.py (#5056)</p></li>
<li><p>[AIRFLOW-XXX] Speed up building of Cassanda module on Travis (#5233)</p></li>
<li><p>[AIRFLOW-4535] Break jobs.py into multiple files (#5303)</p></li>
<li><p>[AIRFLOW-1464] Batch update task_instance state (#5323)</p></li>
<li><p>[AIRFLOW-4554] Test for sudo command, add some other test docs (#5310)</p></li>
<li><p>[AIRFLOW-4419] Refine concurrency check in scheduler (#5194)</p></li>
<li><p>[AIRFLOW-4269] Minor acceleration of jobs._process_task_instances() (#5076)</p></li>
<li><p>[AIRFLOW-4341] Remove <code class="docutils literal notranslate"><span class="pre">View.render()</span></code> already exists in fab.BaseView (#5125)</p></li>
<li><p>[AIRFLOW-4342] Use &#64;cached_property instead of re-implementing it each time (#5126)</p></li>
<li><p>[AIRFLOW-4256] Remove noqa from migrations (#5055)</p></li>
<li><p>[AIRFLOW-4034] Remove unnecessary string formatting with <code class="docutils literal notranslate"><span class="pre">**locals()</span></code> (#4861)</p></li>
<li><p>[AIRFLOW-3944] Remove code smells (#4762)</p></li>
</ul>
</div>
<div class="section" id="id124">
<h3>Doc-only changes<a class="headerlink" href="#id124" title="Permalink to this headline"></a></h3>
<ul class="simple">
<li><p>[AIRFLOW-XXX] Add missing doc for annotations param of KubernetesPodOperator (#5666)</p></li>
<li><p>[AIRFLOW-XXX] Fix typos in CONTRIBUTING.md (#5626)</p></li>
<li><p>[AIRFLOW-XXX] Correct BaseSensorOperator docs (#5562)</p></li>
<li><p>[AIRFLOW-4926] Fix example dags where its start_date is datetime.utcnow() (#5553)</p></li>
<li><p>[AIRFLOW-4860] Remove Redundant Information in Example Dags (#5497)</p></li>
<li><p>[AIRFLOW-4767] Fix errors in the documentation of Dataproc Operator (#5487)</p></li>
<li><p>[AIRFLOW-1684] Branching based on XCom variable (Docs) (#4365)</p></li>
<li><p>[AIRFLOW-3341] FAQ return DAG object example (#4605)</p></li>
<li><p>[AIRFLOW-4433] Add missing type in DockerOperator doc string (#5205)</p></li>
<li><p>[AIRFLOW-4321] Replace incorrect info of Max Size limit of GCS Object Size (#5106)</p></li>
<li><p>[AIRFLOW-XXX] Add information about user list (#5341)</p></li>
<li><p>[AIRFLOW-XXX] Clarify documentation related to autodetect parameter in GCS_to_BQ Op (#5294)</p></li>
<li><p>[AIRFLOW-XXX] Remove mention of pytz compatibility from timezone documentation (#5316)</p></li>
<li><p>[AIRFLOW-XXX] Add missing docs for GoogleCloudStorageDeleteOperator (#5274)</p></li>
<li><p>[AIRFLOW-XXX] Remove incorrect note about Scopes of GCP connection (#5242)</p></li>
<li><p>[AIRFLOW-XXX] Fix mistakes in docs of Dataproc operators (#5192)</p></li>
<li><p>[AIRFLOW-XXX] Link to correct class for timedelta in macros.rst (#5226)</p></li>
<li><p>[AIRFLOW-XXX] Add Kamil as committer (#5216)</p></li>
<li><p>[AIRFLOW-XXX] Add Joshua and Kevin as committer (#5207)</p></li>
<li><p>[AIRFLOW-XXX] Reduce log spam in tests (#5174)</p></li>
<li><p>[AIRFLOW-XXX] Speed up tests for PythonSensor (#5158)</p></li>
<li><p>[AIRFLOW-XXX] Add Bas Harenslak to committer list (#5157)</p></li>
<li><p>[AIRFLOW-XXX] Add Jarek Potiuk to committer list (#5132)</p></li>
<li><p>[AIRFLOW-XXX] Update docstring for SchedulerJob (#5105)</p></li>
<li><p>[AIRFLOW-XXX] Fix docstrings for CassandraToGoogleCloudStorageOperator (#5103)</p></li>
<li><p>[AIRFLOW-XXX] update SlackWebhookHook and SlackWebhookOperator docstring (#5074)</p></li>
<li><p>[AIRFLOW-XXX] Ignore Python files under node_modules in docs (#5063)</p></li>
<li><p>[AIRFLOW-XXX] Build a universal wheel with LICNESE files (#5052)</p></li>
<li><p>[AIRFLOW-XXX] Fix docstrings of SQSHook (#5099)</p></li>
<li><p>[AIRFLOW-XXX] Use Py3.7 on readthedocs</p></li>
<li><p>[AIRFLOW-4446] Fix typos (#5217)</p></li>
</ul>
</div>
</div>
<div class="section" id="airflow-1-10-3-2019-04-09">
<h2><a class="toc-backref" href="#id180">Airflow 1.10.3 (2019-04-09)</a><a class="headerlink" href="#airflow-1-10-3-2019-04-09" title="Permalink to this headline"></a></h2>
<div class="section" id="id125">
<h3>Significant Changes<a class="headerlink" href="#id125" title="Permalink to this headline"></a></h3>
<div class="section" id="new-dag-discovery-safe-mode-config-option">
<h4>New <code class="docutils literal notranslate"><span class="pre">dag_discovery_safe_mode</span></code> config option<a class="headerlink" href="#new-dag-discovery-safe-mode-config-option" title="Permalink to this headline"></a></h4>
<p>If <code class="docutils literal notranslate"><span class="pre">dag_discovery_safe_mode</span></code> is enabled, only check files for DAGs if
they contain the strings “airflow” and “DAG”. For backwards
compatibility, this option is enabled by default.</p>
</div>
<div class="section" id="redispy-dependency-updated-to-v3-series">
<h4>RedisPy dependency updated to v3 series<a class="headerlink" href="#redispy-dependency-updated-to-v3-series" title="Permalink to this headline"></a></h4>
<p>If you are using the Redis Sensor or Hook you may have to update your code. See
<a class="reference external" href="https://github.com/andymccurdy/redis-py/tree/3.2.0#upgrading-from-redis-py-2x-to-30">redis-py porting instructions</a> to check if your code might be affected (MSET,
MSETNX, ZADD, and ZINCRBY all were, but read the full doc).</p>
</div>
<div class="section" id="slugify-uses-text-unidecode-or-airflow-gpl-unidecode-no-longer-required">
<h4>SLUGIFY_USES_TEXT_UNIDECODE or AIRFLOW_GPL_UNIDECODE no longer required<a class="headerlink" href="#slugify-uses-text-unidecode-or-airflow-gpl-unidecode-no-longer-required" title="Permalink to this headline"></a></h4>
<p>It is no longer required to set one of the environment variables to avoid
a GPL dependency. Airflow will now always use <code class="docutils literal notranslate"><span class="pre">text-unidecode</span></code> if <code class="docutils literal notranslate"><span class="pre">unidecode</span></code>
was not installed before.</p>
</div>
<div class="section" id="new-sync-parallelism-config-option-in-celery-section">
<h4>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 class="headerlink" href="#new-sync-parallelism-config-option-in-celery-section" title="Permalink to this headline"></a></h4>
<p>The new <code class="docutils literal notranslate"><span class="pre">sync_parallelism</span></code> config option will control how many processes CeleryExecutor will use to
fetch celery task state in parallel. Default value is max(1, number of cores - 1)</p>
</div>
<div class="section" id="rename-of-bashtaskrunner-to-standardtaskrunner">
<h4>Rename of BashTaskRunner to StandardTaskRunner<a class="headerlink" href="#rename-of-bashtaskrunner-to-standardtaskrunner" title="Permalink to this headline"></a></h4>
<p>BashTaskRunner has been renamed to StandardTaskRunner. It is the default task runner
so you might need to update your config.</p>
<p><code class="docutils literal notranslate"><span class="pre">task_runner</span> <span class="pre">=</span> <span class="pre">StandardTaskRunner</span></code></p>
</div>
<div class="section" id="modification-to-config-file-discovery">
<h4>Modification to config file discovery<a class="headerlink" href="#modification-to-config-file-discovery" title="Permalink to this headline"></a></h4>
<p>If the <code class="docutils literal notranslate"><span class="pre">AIRFLOW_CONFIG</span></code> environment variable was not set and the
<code class="docutils literal notranslate"><span class="pre">~/airflow/airflow.cfg</span></code> file existed, airflow previously used
<code class="docutils literal notranslate"><span class="pre">~/airflow/airflow.cfg</span></code> instead of <code class="docutils literal notranslate"><span class="pre">$AIRFLOW_HOME/airflow.cfg</span></code>. Now airflow
will discover its config file using the <code class="docutils literal notranslate"><span class="pre">$AIRFLOW_CONFIG</span></code> and <code class="docutils literal notranslate"><span class="pre">$AIRFLOW_HOME</span></code>
environment variables rather than checking for the presence of a file.</p>
</div>
<div class="section" id="changes-in-google-cloud-related-operators">
<h4>Changes in Google Cloud related operators<a class="headerlink" href="#changes-in-google-cloud-related-operators" title="Permalink to this headline"></a></h4>
<p>Most GCP-related operators have now optional <code class="docutils literal notranslate"><span class="pre">PROJECT_ID</span></code> parameter. In case you do not specify it,
the project id configured in
<a class="reference external" href="https://airflow.apache.org/howto/manage-connections.html#connection-type-gcp">GCP Connection</a> is used.
There will be an <code class="docutils literal notranslate"><span class="pre">AirflowException</span></code> thrown in case <code class="docutils literal notranslate"><span class="pre">PROJECT_ID</span></code> parameter is not specified and the
connection used has no project id defined. This change should be backwards compatible as earlier version
of the operators had <code class="docutils literal notranslate"><span class="pre">PROJECT_ID</span></code> mandatory.</p>
<p>Operators involved:</p>
<ul class="simple">
<li><p>GCP Compute Operators</p>
<ul>
<li><p>GceInstanceStartOperator</p></li>
<li><p>GceInstanceStopOperator</p></li>
<li><p>GceSetMachineTypeOperator</p></li>
</ul>
</li>
<li><p>GCP Function Operators</p>
<ul>
<li><p>GcfFunctionDeployOperator</p></li>
</ul>
</li>
<li><p>GCP Cloud SQL Operators</p>
<ul>
<li><p>CloudSqlInstanceCreateOperator</p></li>
<li><p>CloudSqlInstancePatchOperator</p></li>
<li><p>CloudSqlInstanceDeleteOperator</p></li>
<li><p>CloudSqlInstanceDatabaseCreateOperator</p></li>
<li><p>CloudSqlInstanceDatabasePatchOperator</p></li>
<li><p>CloudSqlInstanceDatabaseDeleteOperator</p></li>
</ul>
</li>
</ul>
<p>Other GCP operators are unaffected.</p>
</div>
<div class="section" id="changes-in-google-cloud-related-hooks">
<h4>Changes in Google Cloud related hooks<a class="headerlink" href="#changes-in-google-cloud-related-hooks" title="Permalink to this headline"></a></h4>
<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>Hooks involved:</p>
<ul class="simple">
<li><p>GceHook</p></li>
<li><p>GcfHook</p></li>
<li><p>CloudSqlHook</p></li>
</ul>
<p>Other GCP hooks are unaffected.</p>
</div>
<div class="section" id="changed-behaviour-of-using-default-value-when-accessing-variables">
<h4>Changed behaviour of using default value when accessing variables<a class="headerlink" href="#changed-behaviour-of-using-default-value-when-accessing-variables" title="Permalink to this headline"></a></h4>
<p>It’s now possible to use <code class="docutils literal notranslate"><span class="pre">None</span></code> as a default value with the <code class="docutils literal notranslate"><span class="pre">default_var</span></code> parameter when getting a variable, e.g.</p>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">foo</span> <span class="o">=</span> <span class="n">Variable</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;foo&quot;</span><span class="p">,</span> <span class="n">default_var</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span>
<span class="k">if</span> <span class="n">foo</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
<span class="n">handle_missing_foo</span><span class="p">()</span>
</pre></div>
</div>
<p>(Note: there is already <code class="docutils literal notranslate"><span class="pre">Variable.setdefault()</span></code> which me be helpful in some cases.)</p>
<p>This changes the behaviour if you previously explicitly provided <code class="docutils literal notranslate"><span class="pre">None</span></code> as a default value. If your code expects a <code class="docutils literal notranslate"><span class="pre">KeyError</span></code> to be thrown, then don’t pass the <code class="docutils literal notranslate"><span class="pre">default_var</span></code> argument.</p>
</div>
<div class="section" id="removal-of-airflow-home-config-setting">
<h4>Removal of <code class="docutils literal notranslate"><span class="pre">airflow_home</span></code> config setting<a class="headerlink" href="#removal-of-airflow-home-config-setting" title="Permalink to this headline"></a></h4>
<p>There were previously two ways of specifying the Airflow “home” directory
(<code class="docutils literal notranslate"><span class="pre">~/airflow</span></code> by default): the <code class="docutils literal notranslate"><span class="pre">AIRFLOW_HOME</span></code> environment variable, and the
<code class="docutils literal notranslate"><span class="pre">airflow_home</span></code> config setting in the <code class="docutils literal notranslate"><span class="pre">[core]</span></code> section.</p>
<p>If they had two different values different parts of the code base would end up
with different values. The config setting has been deprecated, and you should
remove the value from the config file and set <code class="docutils literal notranslate"><span class="pre">AIRFLOW_HOME</span></code> environment
variable if you need to use a non default value for this.</p>
<p>(Since this setting is used to calculate what config file to load, it is not
possible to keep just the config option)</p>
</div>
<div class="section" id="change-of-two-methods-signatures-in-gcptransferservicehook">
<h4>Change of two methods signatures in <code class="docutils literal notranslate"><span class="pre">GCPTransferServiceHook</span></code><a class="headerlink" href="#change-of-two-methods-signatures-in-gcptransferservicehook" title="Permalink to this headline"></a></h4>
<p>The signature of the <code class="docutils literal notranslate"><span class="pre">create_transfer_job</span></code> method in <code class="docutils literal notranslate"><span class="pre">GCPTransferServiceHook</span></code>
class has changed. The change does not change the behavior of the method.</p>
<p>Old signature:</p>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="k">def</span> <span class="nf">create_transfer_job</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">description</span><span class="p">,</span> <span class="n">schedule</span><span class="p">,</span> <span class="n">transfer_spec</span><span class="p">,</span> <span class="n">project_id</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="k">def</span> <span class="nf">create_transfer_job</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">body</span><span class="p">):</span>
<span class="o">...</span>
</pre></div>
</div>
<p>It is necessary to rewrite calls to method. The new call looks like this:</p>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">body</span> <span class="o">=</span> <span class="p">{</span>
<span class="s2">&quot;status&quot;</span><span class="p">:</span> <span class="s2">&quot;ENABLED&quot;</span><span class="p">,</span>
<span class="s2">&quot;projectId&quot;</span><span class="p">:</span> <span class="n">project_id</span><span class="p">,</span>
<span class="s2">&quot;description&quot;</span><span class="p">:</span> <span class="n">description</span><span class="p">,</span>
<span class="s2">&quot;transferSpec&quot;</span><span class="p">:</span> <span class="n">transfer_spec</span><span class="p">,</span>
<span class="s2">&quot;schedule&quot;</span><span class="p">:</span> <span class="n">schedule</span><span class="p">,</span>
<span class="p">}</span>
<span class="n">gct_hook</span><span class="o">.</span><span class="n">create_transfer_job</span><span class="p">(</span><span class="n">body</span><span class="p">)</span>
</pre></div>
</div>
<p>The change results from the unification of all hooks and adjust to
<a class="reference external" href="https://lists.apache.org/thread.html/e8534d82be611ae7bcb21ba371546a4278aad117d5e50361fd8f14fe&#64;%3Cdev.airflow.apache.org%3E">the official recommendations</a>
for the Google Cloud.</p>
<p>The signature of <code class="docutils literal notranslate"><span class="pre">wait_for_transfer_job</span></code> method in <code class="docutils literal notranslate"><span class="pre">GCPTransferServiceHook</span></code> has changed.</p>
<p>Old signature:</p>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="k">def</span> <span class="nf">wait_for_transfer_job</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">job</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="k">def</span> <span class="nf">wait_for_transfer_job</span><span class="p">(</span>
<span class="bp">self</span><span class="p">,</span> <span class="n">job</span><span class="p">,</span> <span class="n">expected_statuses</span><span class="o">=</span><span class="p">(</span><span class="n">GcpTransferOperationStatus</span><span class="o">.</span><span class="n">SUCCESS</span><span class="p">,)</span>
<span class="p">):</span>
<span class="o">...</span>
</pre></div>
</div>
<p>The behavior of <code class="docutils literal notranslate"><span class="pre">wait_for_transfer_job</span></code> has changed:</p>
<p>Old behavior:</p>
<p><code class="docutils literal notranslate"><span class="pre">wait_for_transfer_job</span></code> would wait for the SUCCESS status in specified jobs operations.</p>
<p>New behavior:</p>
<p>You can now specify an array of expected statuses. <code class="docutils literal notranslate"><span class="pre">wait_for_transfer_job</span></code> now waits for any of them.</p>
<p>The default value of <code class="docutils literal notranslate"><span class="pre">expected_statuses</span></code> is SUCCESS so that change is backwards compatible.</p>
</div>
<div class="section" id="moved-two-classes-to-different-modules">
<h4>Moved two classes to different modules<a class="headerlink" href="#moved-two-classes-to-different-modules" title="Permalink to this headline"></a></h4>
<p>The class <code class="docutils literal notranslate"><span class="pre">GoogleCloudStorageToGoogleCloudStorageTransferOperator</span></code> has been moved from
<code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.gcs_to_gcs_transfer_operator</span></code> to <code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.gcp_transfer_operator</span></code></p>
<p>the class <code class="docutils literal notranslate"><span class="pre">S3ToGoogleCloudStorageTransferOperator</span></code> has been moved from
<code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.s3_to_gcs_transfer_operator</span></code> to <code class="docutils literal notranslate"><span class="pre">airflow.contrib.operators.gcp_transfer_operator</span></code></p>
<p>The change was made to keep all the operators related to GCS Transfer Services in one file.</p>
<p>The previous imports will continue to work until Airflow 2.0</p>
</div>
<div class="section" id="fixed-typo-in-driver-class-path-in-sparksubmithook">
<h4>Fixed typo in –driver-class-path in SparkSubmitHook<a class="headerlink" href="#fixed-typo-in-driver-class-path-in-sparksubmithook" title="Permalink to this headline"></a></h4>
<p>The <code class="docutils literal notranslate"><span class="pre">driver_classapth</span></code> argument to SparkSubmit Hook and Operator was
generating <code class="docutils literal notranslate"><span class="pre">--driver-classpath</span></code> on the spark command line, but this isn’t a
valid option to spark.</p>
<p>The argument has been renamed to <code class="docutils literal notranslate"><span class="pre">driver_class_path</span></code> and the option it
generates has been fixed.</p>
</div>
</div>
<div class="section" id="new-feature">
<h3>New Feature<a class="headerlink" href="#new-feature" title="Permalink to this headline"></a></h3>
<ul class="simple">
<li><p>[AIRFLOW-4232] Add <code class="docutils literal notranslate"><span class="pre">none_skipped</span></code> trigger rule (#5032)</p></li>
<li><p>[AIRFLOW-3971] Add Google Cloud Natural Language operators (#4980)</p></li>
<li><p>[AIRFLOW-4069] Add Opsgenie Alert Hook and Operator (#4903)</p></li>
<li><p>[AIRFLOW-3552] Fix encoding issue in ImapAttachmentToS3Operator (#5040)</p></li>
<li><p>[AIRFLOW-3552] Add ImapAttachmentToS3Operator (#4476)</p></li>
<li><p>[AIRFLOW-1526] Add dingding hook and operator (#4895)</p></li>
<li><p>[AIRFLOW-3490] Add BigQueryHook’s Ability to Patch Table/View (#4299)</p></li>
<li><p>[AIRFLOW-3918] Add SSH private-key support to git-sync for KubernetesExecutor (#4777)</p></li>
<li><p>[AIRFLOW-3659] Create Google Cloud Transfer Service Operators (#4792)</p></li>
<li><p>[AIRFLOW-3939] Add Google Cloud Translate operator (#4755)</p></li>
<li><p>[AIRFLOW-3541] Add Avro logical type conversion to bigquery hook (#4553)</p></li>
<li><p>[AIRFLOW-4106] instrument staving tasks in pool (#4927)</p></li>
<li><p>[AIRFLOW-2568] Azure Container Instances operator (#4121)</p></li>
<li><p>[AIRFLOW-4107] instrument executor (#4928)</p></li>
<li><p>[AIRFLOW-4033] record stats of task duration (#4858)</p></li>
<li><p>[AIRFLOW-3892] Create Redis pub sub sensor (#4712)</p></li>
<li><p>[AIRFLOW-4124] add get_table and get_table_location in aws_glue_hook and tests (#4942)</p></li>
<li><p>[AIRFLOW-1262] Adds missing docs for email configuration (#4557)</p></li>
<li><p>[AIRFLOW-3701] Add Google Cloud Vision Product Search operators (#4665)</p></li>
<li><p>[AIRFLOW-3766] Add support for kubernetes annotations (#4589)</p></li>
<li><p>[AIRFLOW-3741] Add extra config to Oracle hook (#4584)</p></li>
<li><p>[AIRFLOW-1262] Allow configuration of email alert subject and body (#2338)</p></li>
<li><p>[AIRFLOW-2985] Operators for S3 object copying/deleting (#3823)</p></li>
<li><p>[AIRFLOW-2993] s3_to_sftp and sftp_to_s3 operators (#3828)</p></li>
<li><p>[AIRFLOW-3799] Add compose method to GoogleCloudStorageHook (#4641)</p></li>
<li><p>[AIRFLOW-3218] add support for poking a whole DAG (#4058)</p></li>
<li><p>[AIRFLOW-3315] Add ImapAttachmentSensor (#4161)</p></li>
<li><p>[AIRFLOW-3556] Add cross join set dependency function (#4356)</p></li>
</ul>
</div>
<div class="section" id="id126">
<h3>Improvement<a class="headerlink" href="#id126" title="Permalink to this headline"></a></h3>
<ul class="simple">
<li><p>[AIRFLOW-3823] Exclude branch’s downstream tasks from the tasks to skip (#4666)</p></li>
<li><p>[AIRFLOW-3274] Add run_as_user and fs_group options for Kubernetes (#4648)</p></li>
<li><p>[AIRFLOW-4247] Template Region on the DataprocOperators (#5046)</p></li>
<li><p>[AIRFLOW-4008] Add envFrom for Kubernetes Executor (#4952)</p></li>
<li><p>[AIRFLOW-3947] Flash msg for no DAG-level access error (#4767)</p></li>
<li><p>[AIRFLOW-3287] Moving database clean-up code into the CoreTest.tearDown() (#4122)</p></li>
<li><p>[AIRFLOW-4058] Name models test file to get automatically picked up (#4901)</p></li>
<li><p>[AIRFLOW-3830] Remove DagBag from /dag_details (#4831)</p></li>
<li><p>[AIRFLOW-3596] Clean up undefined template variables. (#4401)</p></li>
<li><p>[AIRFLOW-3573] Remove DagStat table (#4378)</p></li>
<li><p>[AIRFLOW-3623] Fix bugs in Download task logs (#5005)</p></li>
<li><p>[AIRFLOW-4173] Improve SchedulerJob.process_file() (#4993)</p></li>
<li><p>[AIRFLOW-3540] Warn if old airflow.cfg file is found (#5006)</p></li>
<li><p>[AIRFLOW-4000] Return response when no file (#4822)</p></li>
<li><p>[AIRFLOW-3383] Rotate fernet keys. (#4225)</p></li>
<li><p>[AIRFLOW-3003] Pull the krb5 image instead of building (#3844)</p></li>
<li><p>[AIRFLOW-3862] Check types with mypy. (#4685)</p></li>
<li><p>[AIRFLOW-251] Add option SQL_ALCHEMY_SCHEMA parameter to specify schema for metadata (#4199)</p></li>
<li><p>[AIRFLOW-1814] Temple PythonOperator {op_args,op_kwargs} fields (#4691)</p></li>
<li><p>[AIRFLOW-3730] Standarization use of logs mechanisms (#4556)</p></li>
<li><p>[AIRFLOW-3770] Validation of documentation on CI] (#4593)</p></li>
<li><p>[AIRFLOW-3866] Run docker-compose pull silently in CI (#4688)</p></li>
<li><p>[AIRFLOW-3685] Move licence header check (#4497)</p></li>
<li><p>[AIRFLOW-3670] Add stages to Travis build (#4477)</p></li>
<li><p>[AIRFLOW-3937] KubernetesPodOperator support for envFrom configMapRef and secretRef (#4772)</p></li>
<li><p>[AIRFLOW-3408] Remove outdated info from Systemd Instructions (#4269)</p></li>
<li><p>[AIRFLOW-3202] add missing documentation for AWS hooks/operator (#4048)</p></li>
<li><p>[AIRFLOW-3908] Add more Google Cloud Vision operators (#4791)</p></li>
<li><p>[AIRFLOW-2915] Add example DAG for GoogleCloudStorageToBigQueryOperator (#3763)</p></li>
<li><p>[AIRFLOW-3062] Add Qubole in integration docs (#3946)</p></li>
<li><p>[AIRFLOW-3288] Add SNS integration (#4123)</p></li>
<li><p>[AIRFLOW-3148] Remove unnecessary arg “parameters” in RedshiftToS3Transfer (#3995)</p></li>
<li><p>[AIRFLOW-3049] Add extra operations for Mongo hook (#3890)</p></li>
<li><p>[AIRFLOW-3559] Add missing options to DatadogHook. (#4362)</p></li>
<li><p>[AIRFLOW-1191] Simplify override of spark submit command. (#4360)</p></li>
<li><p>[AIRFLOW-3155] Add ability to filter by a last modified time in GCS Operator (#4008)</p></li>
<li><p>[AIRFLOW-2864] Fix docstrings for SubDagOperator (#3712)</p></li>
<li><p>[AIRFLOW-4062] Improve docs on install extra package commands (#4966)</p></li>
<li><p>[AIRFLOW-3743] Unify different methods of working out AIRFLOW_HOME (#4705)</p></li>
<li><p>[AIRFLOW-4002] Option to open debugger on errors in <code class="docutils literal notranslate"><span class="pre">airflow</span> <span class="pre">test</span></code>. (#4828)</p></li>
<li><p>[AIRFLOW-3997] Extend Variable.get so it can return None when var not found (#4819)</p></li>
<li><p>[AIRFLOW-4009] Fix docstring issue in GCSToBQOperator (#4836)</p></li>
<li><p>[AIRFLOW-3980] Unify logger (#4804)</p></li>
<li><p>[AIRFLOW-4076] Correct port type of beeline_default in init_db (#4908)</p></li>
<li><p>[AIRFLOW-4046] Add validations for poke_interval &amp; timeout for Sensor (#4878)</p></li>
<li><p>[AIRFLOW-3744] Abandon the use of obsolete aliases of methods (#4568)</p></li>
<li><p>[AIRFLOW-3865] Add API endpoint to get Python code of dag by id (#4687)</p></li>
<li><p>[AIRFLOW-3516] Support to create k8 worker pods in batches (#4434)</p></li>
<li><p>[AIRFLOW-2843] Add flag in ExternalTaskSensor to check if external DAG/task exists (#4547)</p></li>
<li><p>[AIRFLOW-2224] Add support CSV files in MySqlToGoogleCloudStorageOperator (#4738)</p></li>
<li><p>[AIRFLOW-3895] GoogleCloudStorageHook/Op create_bucket takes optional resource params (#4717)</p></li>
<li><p>[AIRFLOW-3950] Improve AirflowSecurityManager.update_admin_perm_view (#4774)</p></li>
<li><p>[AIRFLOW-4006] Make better use of Set in AirflowSecurityManager (#4833)</p></li>
<li><p>[AIRFLOW-3917] Specify alternate kube config file/context when running out of cluster (#4859)</p></li>
<li><p>[AIRFLOW-3911] Change Harvesting DAG parsing results to DEBUG log level (#4729)</p></li>
<li><p>[AIRFLOW-3584] Use ORM DAGs for index view. (#4390)</p></li>
<li><p>[AIRFLOW-2821] Refine Doc “Plugins” (#3664)</p></li>
<li><p>[AIRFLOW-3561] Improve queries (#4368)</p></li>
<li><p>[AIRFLOW-3600] Remove dagbag from trigger (#4407)</p></li>
<li><p>[AIRFLOW-3713] Updated documentation for GCP optional project_id (#4541)</p></li>
<li><p>[AIRFLOW-2767] Upgrade gunicorn to 19.5.0 to avoid moderate-severity CVE (#4795)</p></li>
<li><p>[AIRFLOW-3795] provide_context param is now used (#4735)</p></li>
<li><p>[AIRFLOW-4012] Upgrade tabulate to 0.8.3 (#4838)</p></li>
<li><p>[AIRFLOW-3623] Support download logs by attempts from UI (#4425)</p></li>
<li><p>[AIRFLOW-2715] Use region setting when launching Dataflow templates (#4139)</p></li>
<li><p>[AIRFLOW-3932] Update unit tests and documentation for safe mode flag. (#4760)</p></li>
<li><p>[AIRFLOW-3932] Optionally skip dag discovery heuristic. (#4746)</p></li>
<li><p>[AIRFLOW-3258] K8S executor environment variables section. (#4627)</p></li>
<li><p>[AIRFLOW-3931] set network, subnetwork when launching dataflow template (#4744)</p></li>
<li><p>[AIRFLOW-4095] Add template_fields for S3CopyObjectOperator &amp; S3DeleteObjectsOperator (#4920)</p></li>
<li><p>[AIRFLOW-2798] Remove needless code from models.py</p></li>
<li><p>[AIRFLOW-3731] Constrain mysqlclient to &lt;1.4 (#4558)</p></li>
<li><p>[AIRFLOW-3139] include parameters into log.info in SQL operators, if any (#3986)</p></li>
<li><p>[AIRFLOW-3174] Refine Docstring for SQL Operators &amp; Hooks (#4043)</p></li>
<li><p>[AIRFLOW-3933] Fix various typos (#4747)</p></li>
<li><p>[AIRFLOW-3905] Allow using “parameters” in SqlSensor (#4723)</p></li>
<li><p>[AIRFLOW-2761] Parallelize enqueue in celery executor (#4234)</p></li>
<li><p>[AIRFLOW-3540] Respect environment config when looking up config file. (#4340)</p></li>
<li><p>[AIRFLOW-2156] Parallelize Celery Executor task state fetching (#3830)</p></li>
<li><p>[AIRFLOW-3702] Add backfill option to run backwards (#4676)</p></li>
<li><p>[AIRFLOW-3821] Add replicas logic to GCP SQL example DAG (#4662)</p></li>
<li><p>[AIRFLOW-3547] Fixed Jinja templating in SparkSubmitOperator (#4347)</p></li>
<li><p>[AIRFLOW-3647] Add archives config option to SparkSubmitOperator (#4467)</p></li>
<li><p>[AIRFLOW-3802] Updated documentation for HiveServer2Hook (#4647)</p></li>
<li><p>[AIRFLOW-3817] Corrected task ids returned by BranchPythonOperator to match the dummy operator ids (#4659)</p></li>
<li><p>[AIRFLOW-3782] Clarify docs around celery worker_autoscale in default_airflow.cfg (#4609)</p></li>
<li><p>[AIRFLOW-1945] Add Autoscale config for Celery workers (#3989)</p></li>
<li><p>[AIRFLOW-3590] Change log message of executor exit status (#4616)</p></li>
<li><p>[AIRFLOW-3591] Fix start date, end date, duration for rescheduled tasks (#4502)</p></li>
<li><p>[AIRFLOW-3709] Validate <code class="docutils literal notranslate"><span class="pre">allowed_states</span></code> for ExternalTaskSensor (#4536)</p></li>
<li><p>[AIRFLOW-3522] Add support for sending Slack attachments (#4332)</p></li>
<li><p>[AIRFLOW-3569] Add “Trigger DAG” button in DAG page (#4373)</p></li>
<li><p>[AIRFLOW-3044] Dataflow operators accept templated job_name param (#3887)</p></li>
<li><p>[AIRFLOW-3023] Fix docstring datatypes</p></li>
<li><p>[AIRFLOW-2928] Use uuid4 instead of uuid1 (#3779)</p></li>
<li><p>[AIRFLOW-2988] Run specifically python2 for dataflow (#3826)</p></li>
<li><p>[AIRFLOW-3697] Vendorize nvd3 and slugify (#4513)</p></li>
<li><p>[AIRFLOW-3692] Remove ENV variables to avoid GPL (#4506)</p></li>
<li><p>[AIRFLOW-3907] Upgrade flask and set cookie security flags. (#4725)</p></li>
<li><p>[AIRFLOW-3698] Add documentation for AWS Connection (#4514)</p></li>
<li><p>[AIRFLOW-3616][AIRFLOW-1215] Add aliases for schema with underscore (#4523)</p></li>
<li><p>[AIRFLOW-3375] Support returning multiple tasks with BranchPythonOperator (#4215)</p></li>
<li><p>[AIRFLOW-3742] Fix handling of “fallback” for AirflowConfigParsxer.getint/boolean (#4674)</p></li>
<li><p>[AIRFLOW-3742] Respect the <code class="docutils literal notranslate"><span class="pre">fallback</span></code> arg in airflow.configuration.get (#4567)</p></li>
<li><p>[AIRFLOW-3789] Fix flake8 3.7 errors. (#4617)</p></li>
<li><p>[AIRFLOW-3602] Improve ImapHook handling of retrieving no attachments (#4475)</p></li>
<li><p>[AIRFLOW-3631] Update flake8 and fix lint. (#4436)</p></li>
</ul>
</div>
<div class="section" id="id127">
<h3>Bug fixes<a class="headerlink" href="#id127" title="Permalink to this headline"></a></h3>
<ul class="simple">
<li><p>[AIRFLOW-4248] Fix <code class="docutils literal notranslate"><span class="pre">FileExistsError</span></code> makedirs race in file_processor_handler (#5047)</p></li>
<li><p>[AIRFLOW-4240] State-changing actions should be POST requests (#5039)</p></li>
<li><p>[AIRFLOW-4246] Flask-Oauthlib needs downstream dependencies pinning due to breaking changes (#5045)</p></li>
<li><p>[AIRFLOW-3887] Downgrade dagre-d3 to 0.4.18 (#4713)</p></li>
<li><p>[AIRFLOW-3419] Fix S3Hook.select_key on Python3 (#4970)</p></li>
<li><p>[AIRFLOW-4127] Correct AzureContainerInstanceHook._get_instance_view’s return (#4945)</p></li>
<li><p>[AIRFLOW-4172] Fix changes for driver class path option in Spark Submit (#4992)</p></li>
<li><p>[AIRFLOW-3615] Preserve case of UNIX socket paths in Connections (#4591)</p></li>
<li><p>[AIRFLOW-3417] ECSOperator: pass platformVersion only for FARGATE launch type (#4256)</p></li>
<li><p>[AIRFLOW-3884] Fixing doc checker, no warnings allowed anymore and fixed the current… (#4702)</p></li>
<li><p>[AIRFLOW-2652] implement / enhance baseOperator deepcopy</p></li>
<li><p>[AIRFLOW-4001] Update docs about how to run tests (#4826)</p></li>
<li><p>[AIRFLOW-3699] Speed up Flake8 (#4515)</p></li>
<li><p>[AIRFLOW-4160] Fix redirecting of ‘Trigger Dag’ Button in DAG Page (#4982)</p></li>
<li><p>[AIRFLOW-3650] Skip running on mysql for the flaky test (#4457)</p></li>
<li><p>[AIRFLOW-3423] Fix mongo hook to work with anonymous access (#4258)</p></li>
<li><p>[AIRFLOW-3982] Fix race condition in CI test (#4968)</p></li>
<li><p>[AIRFLOW-3982] Update DagRun state based on its own tasks (#4808)</p></li>
<li><p>[AIRFLOW-3737] Kubernetes executor cannot handle long dag/task names (#4636)</p></li>
<li><p>[AIRFLOW-3945] Stop inserting row when permission views unchanged (#4764)</p></li>
<li><p>[AIRFLOW-4123] Add Exception handling for _change_state method in K8 Executor (#4941)</p></li>
<li><p>[AIRFLOW-3771] Minor refactor securityManager (#4594)</p></li>
<li><p>[AIRFLOW-987] Pass kerberos cli args keytab and principal to kerberos.run() (#4238)</p></li>
<li><p>[AIRFLOW-3736] Allow int value in SqoopOperator.extra_import_options(#4906)</p></li>
<li><p>[AIRFLOW-4063] Fix exception string in BigQueryHook [2/2] (#4902)</p></li>
<li><p>[AIRFLOW-4063] Fix exception string in BigQueryHook (#4899)</p></li>
<li><p>[AIRFLOW-4037] Log response in SimpleHttpOperator even if the response check fails</p></li>
<li><p>[AIRFLOW-4044] The documentation of <code class="docutils literal notranslate"><span class="pre">query_params</span></code> in <code class="docutils literal notranslate"><span class="pre">BigQueryOperator</span></code> is wrong. (#4876)</p></li>
<li><p>[AIRFLOW-4015] Make missing API endpoints available in classic mode</p></li>
<li><p>[AIRFLOW-3153] Send DAG processing stats to StatsD (#4748)</p></li>
<li><p>[AIRFLOW-2966] Catch ApiException in the Kubernetes Executor (#4209)</p></li>
<li><p>[AIRFLOW-4129] Escape HTML in generated tooltips (#4950)</p></li>
<li><p>[AIRFLOW-4070] AirflowException -&gt; log.warning for duplicate task dependencies (#4904)</p></li>
<li><p>[AIRFLOW-4054] Fix assertEqualIgnoreMultipleSpaces util &amp; add tests (#4886)</p></li>
<li><p>[AIRFLOW-3239] Fix test recovery further (#4074)</p></li>
<li><p>[AIRFLOW-4053] Fix KubePodOperator Xcom on Kube 1.13.0 (#4883)</p></li>
<li><p>[AIRFLOW-2961] Refactor tests.BackfillJobTest.test_backfill_examples test (#3811)</p></li>
<li><p>[AIRFLOW-3606] Fix Flake8 test &amp; fix the Flake8 errors introduced since Flake8 test was broken (#4415)</p></li>
<li><p>[AIRFLOW-3543] Fix deletion of DAG with rescheduled tasks (#4646)</p></li>
<li><p>[AIRFLOW-2548] Output plugin import errors to web UI (#3930)</p></li>
<li><p>[AIRFLOW-4019] Fix AWS Athena Sensor object has no attribute ‘mode’ (#4844)</p></li>
<li><p>[AIRFLOW-3758] Fix circular import in WasbTaskHandler (#4601)</p></li>
<li><p>[AIRFLOW-3706] Fix tooltip max-width by correcting ordering of CSS files (#4947)</p></li>
<li><p>[AIRFLOW-4100] Correctly JSON escape data for tree/graph views (#4921)</p></li>
<li><p>[AIRFLOW-3636] Fix a test introduced in #4425 (#4446)</p></li>
<li><p>[AIRFLOW-3977] Add examples of trigger rules in doc (#4805)</p></li>
<li><p>[AIRFLOW-2511] Fix improper failed session commit handling causing deadlocks (#4769)</p></li>
<li><p>[AIRFLOW-3962] Added graceful handling for creation of dag_run of a dag which doesn’t have any task (#4781)</p></li>
<li><p>[AIRFLOW-3881] Correct to_csv row number (#4699)</p></li>
<li><p>[AIRFLOW-3875] Simplify SlackWebhookHook code and change docstring (#4696)</p></li>
<li><p>[AIRFLOW-3733] Don’t raise NameError in HQL hook to_csv when no rows returned (#4560)</p></li>
<li><p>[AIRFLOW-3734] Fix hql not run when partition is None (#4561)</p></li>
<li><p>[AIRFLOW-3767] Correct bulk insert function (#4773)</p></li>
<li><p>[AIRFLOW-4087] remove sudo in basetaskrunner on_finish (#4916)</p></li>
<li><p>[AIRFLOW-3768] Escape search parameter in pagination controls (#4911)</p></li>
<li><p>[AIRFLOW-4045] Fix hard-coded URLs in FAB-based UI (#4914)</p></li>
<li><p>[AIRFLOW-3123] Use a stack for DAG context management (#3956)</p></li>
<li><p>[AIRFLOW-3060] DAG context manager fails to exit properly in certain circumstances</p></li>
<li><p>[AIRFLOW-3924] Fix try number in alert emails (#4741)</p></li>
<li><p>[AIRFLOW-4083] Add tests for link generation utils (#4912)</p></li>
<li><p>[AIRFLOW-2190] Send correct HTTP status for base_url not found (#4910)</p></li>
<li><p>[AIRFLOW-4015] Add get_dag_runs GET endpoint to “classic” API (#4884)</p></li>
<li><p>[AIRFLOW-3239] Enable existing CI tests (#4131)</p></li>
<li><p>[AIRFLOW-1390] Update Alembic to 0.9 (#3935)</p></li>
<li><p>[AIRFLOW-3885] Fix race condition in scheduler test (#4737)</p></li>
<li><p>[AIRFLOW-3885] ~10x speed-up of SchedulerJobTest suite (#4730)</p></li>
<li><p>[AIRFLOW-3780] Fix some incorrect when base_url is used (#4643)</p></li>
<li><p>[AIRFLOW-3807] Fix Graph View Highlighting of Tasks (#4653)</p></li>
<li><p>[AIRFLOW-3009] Import Hashable from collection.abc to fix Python 3.7 deprecation warning (#3849)</p></li>
<li><p>[AIRFLOW-2231] Fix relativedelta DAG schedule_interval (#3174)</p></li>
<li><p>[AIRFLOW-2641] Fix MySqlToHiveTransfer to handle MySQL DECIMAL correctly</p></li>
<li><p>[AIRFLOW-3751] Option to allow malformed schemas for LDAP authentication (#4574)</p></li>
<li><p>[AIRFLOW-2888] Add deprecation path for task_runner config change (#4851)</p></li>
<li><p>[AIRFLOW-2930] Fix celery executor scheduler crash (#3784)</p></li>
<li><p>[AIRFLOW-2888] Remove shell=True and bash from task launch (#3740)</p></li>
<li><p>[AIRFLOW-3885] ~2.5x speed-up for backfill tests (#4731)</p></li>
<li><p>[AIRFLOW-3885] ~20x speed-up of slowest unit test (#4726)</p></li>
<li><p>[AIRFLOW-2508] Handle non string types in Operators templatized fields (#4292)</p></li>
<li><p>[AIRFLOW-3792] Fix validation in BQ for useLegacySQL &amp; queryParameters (#4626)</p></li>
<li><p>[AIRFLOW-3749] Fix Edit Dag Run page when using RBAC (#4613)</p></li>
<li><p>[AIRFLOW-3801] Fix DagBag collect dags invocation to prevent examples to be loaded (#4677)</p></li>
<li><p>[AIRFLOW-3774] Register blueprints with RBAC web app (#4598)</p></li>
<li><p>[AIRFLOW-3719] Handle StopIteration in CloudWatch logs retrieval (#4516)</p></li>
<li><p>[AIRFLOW-3108] Define get_autocommit method for MsSqlHook (#4525)</p></li>
<li><p>[AIRFLOW-3074] Add relevant ECS options to ECS operator. (#3908)</p></li>
<li><p>[AIRFLOW-3353] Upgrade Redis client (#4834)</p></li>
<li><p>[AIRFLOW-3250] Fix for Redis Hook for not authorised connection calls (#4090)</p></li>
<li><p>[AIRFLOW-2009] Fix dataflow hook connection-id (#4563)</p></li>
<li><p>[AIRFLOW-2190] Fix TypeError when returning 404 (#4596)</p></li>
<li><p>[AIRFLOW-2876] Update Tenacity to 4.12 (#3723)</p></li>
<li><p>[AIRFLOW-3923] Update flask-admin dependency to 1.5.3 to resolve security vulnerabilities from safety (#4739)</p></li>
<li><p>[AIRFLOW-3683] Fix formatting of error message for invalid TriggerRule (#4490)</p></li>
<li><p>[AIRFLOW-2787] Allow is_backfill to handle NULL DagRun.run_id (#3629)</p></li>
<li><p>[AIRFLOW-3639] Fix request creation in Jenkins Operator (#4450)</p></li>
<li><p>[AIRFLOW-3779] Don’t install enum34 backport when not needed (#4620)</p></li>
<li><p>[AIRFLOW-3079] Improve migration scripts to support MSSQL Server (#3964)</p></li>
<li><p>[AIRFLOW-2735] Use equality, not identity, check for detecting AWS Batch failures[]</p></li>
<li><p>[AIRFLOW-2706] AWS Batch Operator should use top-level job state to determine status</p></li>
<li><p>[AIRFLOW-XXX] Fix typo in http_operator.py</p></li>
<li><p>[AIRFLOW-XXX] Solve lodash security warning (#4820)</p></li>
<li><p>[AIRFLOW-XXX] Pin version of tornado pulled in by celery. (#4815)</p></li>
<li><p>[AIRFLOW-XXX] Upgrade FAB to 1.12.3 (#4694)</p></li>
<li><p>[AIRFLOW-XXX] Pin pinodb dependency (#4704)</p></li>
<li><p>[AIRFLOW-XXX] Pin version of Pip in tests to work around pypa/pip#6163 (#4576)</p></li>
<li><p>[AIRFLOW-XXX] Fix spark submit hook KeyError (#4578)</p></li>
<li><p>[AIRFLOW-XXX] Pin psycopg2 due to breaking change (#5036)</p></li>
<li><p>[AIRFLOW-XXX] Pin Sendgrid dep. (#5031)</p></li>
<li><p>[AIRFLOW-XXX] Fix flaky test - test_execution_unlimited_parallelism (#4988)</p></li>
</ul>
</div>
<div class="section" id="id128">
<h3>Misc/Internal<a class="headerlink" href="#id128" title="Permalink to this headline"></a></h3>
<ul class="simple">
<li><p>[AIRFLOW-4144] Add description of is_delete_operator_pod (#4943)</p></li>
<li><p>[AIRFLOW-3476][AIRFLOW-3477] Move Kube classes out of models.py (#4443)</p></li>
<li><p>[AIRFLOW-3464] Move SkipMixin out of models.py (#4386)</p></li>
<li><p>[AIRFLOW-3463] Move Log out of models.py (#4639)</p></li>
<li><p>[AIRFLOW-3458] Move connection tests (#4680)</p></li>
<li><p>[AIRFLOW-3461] Move TaskFail out of models.py (#4630)</p></li>
<li><p>[AIRFLOW-3462] Move TaskReschedule out of models.py (#4618)</p></li>
<li><p>[AIRFLOW-3474] Move SlaMiss out of models.py (#4608)</p></li>
<li><p>[AIRFLOW-3475] Move ImportError out of models.py (#4383)</p></li>
<li><p>[AIRFLOW-3459] Move DagPickle to separate file (#4374)</p></li>
<li><p>[AIRFLOW-3925] Don’t pull docker-images on pretest (#4740)</p></li>
<li><p>[AIRFLOW-4154] Correct string formatting in jobs.py (#4972)</p></li>
<li><p>[AIRFLOW-3458] Deprecation path for moving models.Connection</p></li>
<li><p>[AIRFLOW-3458] Move models.Connection into separate file (#4335)</p></li>
<li><p>[AIRFLOW-XXX] Remove old/non-test files that nose ignores (#4930)</p></li>
</ul>
</div>
<div class="section" id="id129">
<h3>Doc-only changes<a class="headerlink" href="#id129" title="Permalink to this headline"></a></h3>
<ul class="simple">
<li><p>[AIRFLOW-3996] Add view source link to included fragments</p></li>
<li><p>[AIRFLOW-3811] Automatic generation of API Reference in docs (#4788)</p></li>
<li><p>[AIRFLOW-3810] Remove duplicate autoclass directive (#4656)</p></li>
<li><p>[AIRFLOW-XXX] Mention that StatsD must be installed to gather metrics (#5038)</p></li>
<li><p>[AIRFLOW-XXX] Add contents to cli (#4825)</p></li>
<li><p>[AIRFLOW-XXX] fix check docs failure on CI (#4998)</p></li>
<li><p>[AIRFLOW-XXX] Fix syntax docs errors (#4789)</p></li>
<li><p>[AIRFLOW-XXX] Docs rendering improvement (#4684)</p></li>
<li><p>[AIRFLOW-XXX] Automatically link Jira/GH on doc’s changelog page (#4587)</p></li>
<li><p>[AIRFLOW-XXX] Mention Oracle in the Extra Packages documentation (#4987)</p></li>
<li><p>[AIRFLOW-XXX] Drop deprecated sudo option; use default docker compose on Travis. (#4732)</p></li>
<li><p>[AIRFLOW-XXX] Update kubernetes.rst docs (#3875)</p></li>
<li><p>[AIRFLOW-XXX] Improvements to formatted content in documentation (#4835)</p></li>
<li><p>[AIRFLOW-XXX] Add Daniel to committer list (#4961)</p></li>
<li><p>[AIRFLOW-XXX] Add Xiaodong Deng to committers list</p></li>
<li><p>[AIRFLOW-XXX] Add history become ASF top level project (#4757)</p></li>
<li><p>[AIRFLOW-XXX] Move out the examples from integration.rst (#4672)</p></li>
<li><p>[AIRFLOW-XXX] Extract reverse proxy info to a separate file (#4657)</p></li>
<li><p>[AIRFLOW-XXX] Reduction of the number of warnings in the documentation (#4585)</p></li>
<li><p>[AIRFLOW-XXX] Fix GCS Operator docstrings (#4054)</p></li>
<li><p>[AIRFLOW-XXX] Fix Docstrings in Hooks, Sensors &amp; Operators (#4137)</p></li>
<li><p>[AIRFLOW-XXX] Split guide for operators to multiple files (#4814)</p></li>
<li><p>[AIRFLOW-XXX] Split connection guide to multiple files (#4824)</p></li>
<li><p>[AIRFLOW-XXX] Remove almost all warnings from building docs (#4588)</p></li>
<li><p>[AIRFLOW-XXX] Add backreference in docs between operator and integration (#4671)</p></li>
<li><p>[AIRFLOW-XXX] Improve linking to classes (#4655)</p></li>
<li><p>[AIRFLOW-XXX] Mock optional modules when building docs (#4586)</p></li>
<li><p>[AIRFLOW-XXX] Update plugin macros documentation (#4971)</p></li>
<li><p>[AIRFLOW-XXX] Add missing docstring for ‘autodetect’ in GCS to BQ Operator (#4979)</p></li>
<li><p>[AIRFLOW-XXX] Add missing GCP operators to Docs (#4260)</p></li>
<li><p>[AIRFLOW-XXX] Fixing the issue in Documentation (#3756)</p></li>
<li><p>[AIRFLOW-XXX] Add Hint at user defined macros (#4885)</p></li>
<li><p>[AIRFLOW-XXX] Correct schedule_interval in Scheduler docs (#4157)</p></li>
<li><p>[AIRFLOW-XXX] Improve airflow-jira script to make RelManager’s life easier (#4857)</p></li>
<li><p>[AIRFLOW-XXX] Add missing class references to docs (#4644)</p></li>
<li><p>[AIRFLOW-XXX] Fix typo (#4564)</p></li>
<li><p>[AIRFLOW-XXX] Add a doc about fab security (#4595)</p></li>
<li><p>[AIRFLOW-XXX] Speed up DagBagTest cases (#3974)</p></li>
</ul>
</div>
</div>
<div class="section" id="airflow-1-10-2-2019-01-19">
<h2><a class="toc-backref" href="#id181">Airflow 1.10.2 (2019-01-19)</a><a class="headerlink" href="#airflow-1-10-2-2019-01-19" title="Permalink to this headline"></a></h2>
<div class="section" id="id130">
<h3>Significant Changes<a class="headerlink" href="#id130" title="Permalink to this headline"></a></h3>
<div class="section" id="new-dag-processor-manager-log-location-config-option">
<h4>New <code class="docutils literal notranslate"><span class="pre">dag_processor_manager_log_location</span></code> config option<a class="headerlink" href="#new-dag-processor-manager-log-location-config-option" title="Permalink to this headline"></a></h4>
<p>The DAG parsing manager log now by default will be log into a file, where its location is
controlled by the new <code class="docutils literal notranslate"><span class="pre">dag_processor_manager_log_location</span></code> config option in core section.</p>
</div>
<div class="section" id="dag-level-access-control-for-new-rbac-ui">
<h4>DAG level Access Control for new RBAC UI<a class="headerlink" href="#dag-level-access-control-for-new-rbac-ui" title="Permalink to this headline"></a></h4>
<p>Extend and enhance new Airflow RBAC UI to support DAG level ACL. Each dag now has two permissions(one for write, one for read) associated(‘can_dag_edit’, ‘can_dag_read’).
The admin will create new role, associate the dag permission with the target dag and assign that role to users. That user can only access / view the certain dags on the UI
that he has permissions on. If a new role wants to access all the dags, the admin could associate dag permissions on an artificial view(<code class="docutils literal notranslate"><span class="pre">all_dags</span></code>) with that role.</p>
<p>We also provide a new cli command(<code class="docutils literal notranslate"><span class="pre">sync_perm</span></code>) to allow admin to auto sync permissions.</p>
</div>
<div class="section" id="modification-to-ts-nodash-macro">
<h4>Modification to <code class="docutils literal notranslate"><span class="pre">ts_nodash</span></code> macro<a class="headerlink" href="#modification-to-ts-nodash-macro" title="Permalink to this headline"></a></h4>
<p><code class="docutils literal notranslate"><span class="pre">ts_nodash</span></code> previously contained TimeZone information along with execution date. For Example: <code class="docutils literal notranslate"><span class="pre">20150101T000000+0000</span></code>. This is not user-friendly for file or folder names which was a popular use case for <code class="docutils literal notranslate"><span class="pre">ts_nodash</span></code>. Hence this behavior has been changed and using <code class="docutils literal notranslate"><span class="pre">ts_nodash</span></code> will no longer contain TimeZone information, restoring the pre-1.10 behavior of this macro. And a new macro <code class="docutils literal notranslate"><span class="pre">ts_nodash_with_tz</span></code> has been added which can be used to get a string with execution date and timezone info without dashes.</p>
<p>Examples:</p>
<ul class="simple">
<li><p><code class="docutils literal notranslate"><span class="pre">ts_nodash</span></code>: <code class="docutils literal notranslate"><span class="pre">20150101T000000</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">ts_nodash_with_tz</span></code>: <code class="docutils literal notranslate"><span class="pre">20150101T000000+0000</span></code></p></li>
</ul>
</div>
<div class="section" id="semantics-of-next-ds-prev-ds-changed-for-manually-triggered-runs">
<h4>Semantics of next_ds/prev_ds changed for manually triggered runs<a class="headerlink" href="#semantics-of-next-ds-prev-ds-changed-for-manually-triggered-runs" title="Permalink to this headline"></a></h4>
<p>next_ds/prev_ds now map to execution_date instead of the next/previous schedule-aligned execution date for DAGs triggered in the UI.</p>
</div>
<div class="section" id="user-model-changes">
<h4>User model changes<a class="headerlink" href="#user-model-changes" title="Permalink to this headline"></a></h4>
<p>This patch changes the <code class="docutils literal notranslate"><span class="pre">User.superuser</span></code> field from a hard-coded boolean to a <code class="docutils literal notranslate"><span class="pre">Boolean()</span></code> database column. <code class="docutils literal notranslate"><span class="pre">User.superuser</span></code> will default to <code class="docutils literal notranslate"><span class="pre">False</span></code>, which means that this privilege will have to be granted manually to any users that may require it.</p>
<p>For example, open a Python shell and</p>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">airflow</span> <span class="kn">import</span> <span class="n">models</span><span class="p">,</span> <span class="n">settings</span>
<span class="n">session</span> <span class="o">=</span> <span class="n">settings</span><span class="o">.</span><span class="n">Session</span><span class="p">()</span>
<span class="n">users</span> <span class="o">=</span> <span class="n">session</span><span class="o">.</span><span class="n">query</span><span class="p">(</span><span class="n">models</span><span class="o">.</span><span class="n">User</span><span class="p">)</span><span class="o">.</span><span class="n">all</span><span class="p">()</span> <span class="c1"># [admin, regular_user]</span>
<span class="n">users</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">superuser</span> <span class="c1"># False</span>
<span class="n">admin</span> <span class="o">=</span> <span class="n">users</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
<span class="n">admin</span><span class="o">.</span><span class="n">superuser</span> <span class="o">=</span> <span class="kc">True</span>
<span class="n">session</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">admin</span><span class="p">)</span>
<span class="n">session</span><span class="o">.</span><span class="n">commit</span><span class="p">()</span>
</pre></div>
</div>
</div>
<div class="section" id="custom-auth-backends-interface-change">
<h4>Custom auth backends interface change<a class="headerlink" href="#custom-auth-backends-interface-change" title="Permalink to this headline"></a></h4>
<p>We have updated the version of flask-login we depend upon, and as a result any
custom auth backends might need a small change: <code class="docutils literal notranslate"><span class="pre">is_active</span></code>,
<code class="docutils literal notranslate"><span class="pre">is_authenticated</span></code>, and <code class="docutils literal notranslate"><span class="pre">is_anonymous</span></code> should now be properties. What this means is if
previously you had this in your user class</p>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="k">def</span> <span class="nf">is_active</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">active</span>
</pre></div>
</div>
<p>then you need to change it like this</p>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="nd">@property</span>
<span class="k">def</span> <span class="nf">is_active</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">active</span>
</pre></div>
</div>
</div>
<div class="section" id="support-autodetected-schemas-to-googlecloudstoragetobigqueryoperator">
<h4>Support autodetected schemas to GoogleCloudStorageToBigQueryOperator<a class="headerlink" href="#support-autodetected-schemas-to-googlecloudstoragetobigqueryoperator" title="Permalink to this headline"></a></h4>
<p>GoogleCloudStorageToBigQueryOperator is now support schema auto-detection is available when you load data into BigQuery. Unfortunately, changes can be required.</p>
<p>If BigQuery tables are created outside of airflow and the schema is not defined in the task, multiple options are available:</p>
<p>define a schema_fields:</p>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">gcs_to_bq</span><span class="o">.</span><span class="n">GoogleCloudStorageToBigQueryOperator</span><span class="p">(</span>
<span class="c1"># ...</span>
<span class="n">schema_fields</span><span class="o">=</span><span class="p">{</span><span class="o">...</span><span class="p">}</span>
<span class="p">)</span>
</pre></div>
</div>
<p>or define a schema_object:</p>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">gcs_to_bq</span><span class="o">.</span><span class="n">GoogleCloudStorageToBigQueryOperator</span><span class="p">(</span>
<span class="c1"># ...</span>
<span class="n">schema_object</span><span class="o">=</span><span class="s2">&quot;path/to/schema/object&quot;</span>
<span class="p">)</span>
</pre></div>
</div>
<p>or enabled autodetect of schema:</p>
<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">gcs_to_bq</span><span class="o">.</span><span class="n">GoogleCloudStorageToBigQueryOperator</span><span class="p">(</span>
<span class="c1"># ...</span>
<span class="n">autodetect</span><span class="o">=</span><span class="kc">True</span>
<span class="p">)</span>
</pre></div>
</div>
</div>
</div>
<div class="section" id="id131">
<h3>New features<a class="headerlink" href="#id131" title="Permalink to this headline"></a></h3>
<ul class="simple">
<li><p>[AIRFLOW-2658] Add GCP specific k8s pod operator (#3532)</p></li>
<li><p>[AIRFLOW-2440] Google Cloud SQL import/export operator (#4251)</p></li>
<li><p>[AIRFLOW-3212] Add AwsGlueCatalogPartitionSensor (#4112)</p></li>
<li><p>[AIRFLOW-2750] Add subcommands to delete and list users</p></li>
<li><p>[AIRFLOW-3480] Add GCP Spanner Database Operators (#4353)</p></li>
<li><p>[AIRFLOW-3560] Add DayOfWeek Sensor (#4363)</p></li>
<li><p>[AIRFLOW-3371] BigQueryHook’s Ability to Create View (#4213)</p></li>
<li><p>[AIRFLOW-3332] Add method to allow inserting rows into BQ table (#4179)</p></li>
<li><p>[AIRFLOW-3055] add get_dataset and get_datasets_list to bigquery_hook (#3894)</p></li>
<li><p>[AIRFLOW-2887] Added BigQueryCreateEmptyDatasetOperator and create_empty_dataset to bigquery_hook (#3876)</p></li>
<li><p>[AIRFLOW-2758] Add a sensor for MongoDB</p></li>
<li><p>[AIRFLOW-2640] Add Cassandra table sensor</p></li>
<li><p>[AIRFLOW-3398] Google Cloud Spanner instance database query operator (#4314)</p></li>
<li><p>[AIRFLOW-3310] Google Cloud Spanner deploy / delete operators (#4286)</p></li>
<li><p>[AIRFLOW-3406] Implement an Azure CosmosDB operator (#4265)</p></li>
<li><p>[AIRFLOW-3434] Allows creating intermediate dirs in SFTPOperator (#4270)</p></li>
<li><p>[AIRFLOW-3345] Add Google Cloud Storage (GCS) operators for ACL (#4192)</p></li>
<li><p>[AIRFLOW-3266] Add AWS Athena Hook and Operator (#4111)</p></li>
<li><p>[AIRFLOW-3346] Add hook and operator for GCP transfer service (#4189)</p></li>
<li><p>[AIRFLOW-2983] Add prev_ds_nodash and next_ds_nodash macro (#3821)</p></li>
<li><p>[AIRFLOW-3403] Add AWS Athena Sensor (#4244)</p></li>
<li><p>[AIRFLOW-3323] Support HTTP basic authentication for Airflow Flower (#4166)</p></li>
<li><p>[AIRFLOW-3410] Add feature to allow Host Key Change for SSH Op (#4249)</p></li>
<li><p>[AIRFLOW-3275] Add Google Cloud SQL Query operator (#4170)</p></li>
<li><p>[AIRFLOW-2691] Manage JS dependencies via npm</p></li>
<li><p>[AIRFLOW-2795] Oracle to Oracle Transfer Operator (#3639)</p></li>
<li><p>[AIRFLOW-2596] Add Oracle to Azure Datalake Transfer Operator</p></li>
<li><p>[AIRFLOW-3220] Add Instance Group Manager Operators for GCE (#4167)</p></li>
<li><p>[AIRFLOW-2882] Add import and export for pool cli using JSON</p></li>
<li><p>[AIRFLOW-2965] CLI tool to show the next execution datetime (#3834)</p></li>
<li><p>[AIRFLOW-2874] Enables FAB’s theme support (#3719)</p></li>
<li><p>[AIRFLOW-3336] Add new TriggerRule for 0 upstream failures (#4182)</p></li>
</ul>
</div>
<div class="section" id="id132">
<h3>Improvements<a class="headerlink" href="#id132" title="Permalink to this headline"></a></h3>
<ul class="simple">
<li><p>[AIRFLOW-3680] Consistency update in tests for All GCP-related operators (#4493)</p></li>
<li><p>[AIRFLOW-3675] Use googleapiclient for google apis (#4484)</p></li>
<li><p>[AIRFLOW-3205] Support multipart uploads to GCS (#4084)</p></li>
<li><p>[AIRFLOW-2826] Add GoogleCloudKMSHook (#3677)</p></li>
<li><p>[AIRFLOW-3676] Add required permission to CloudSQL export/import example (#4489)</p></li>
<li><p>[AIRFLOW-3679] Added Google Cloud Base Hook to documentation (#4487)</p></li>
<li><p>[AIRFLOW-3594] Unify different License Header</p></li>
<li><p>[AIRFLOW-3197] Remove invalid parameter KeepJobFlowAliveWhenNoSteps in example DAG (#4404)</p></li>
<li><p>[AIRFLOW-3504] Refine the functionality of “/health” endpoint (#4309)</p></li>
<li><p>[AIRFLOW-3103][AIRFLOW-3147] Update flask-appbuilder (#3937)</p></li>
<li><p>[AIRFLOW-3168] More resilient database use in CI (#4014)</p></li>
<li><p>[AIRFLOW-3076] Remove preloading of MySQL testdata (#3911)</p></li>
<li><p>[AIRFLOW-3035] Allow custom ‘job_error_states’ in dataproc ops (#3884)</p></li>
<li><p>[AIRFLOW-3246] Make hmsclient optional in airflow.hooks.hive_hooks (#4080)</p></li>
<li><p>[AIRFLOW-3059] Log how many rows are read from Postgres (#3905)</p></li>
<li><p>[AIRFLOW-2463] Make task instance context available for hive queries</p></li>
<li><p>[AIRFLOW-3190] Make flake8 compliant (#4035)</p></li>
<li><p>[AIRFLOW-1998] Implemented DatabricksRunNowOperator for jobs/run-now … (#3813)</p></li>
<li><p>[AIRFLOW-2267] Airflow DAG level access (#3197)</p></li>
<li><p>[AIRFLOW-2359] Add set failed for DagRun and task in tree view (#3255)</p></li>
<li><p>[AIRFLOW-3008] Move Kubernetes example DAGs to contrib</p></li>
<li><p>[AIRFLOW-3402] Support global k8s affinity and toleration configs (#4247)</p></li>
<li><p>[AIRFLOW-3610] Add region param for EMR jobflow creation (#4418)</p></li>
<li><p>[AIRFLOW-3531] Fix test for GCS to GCS Transfer Hook (#4452)</p></li>
<li><p>[AIRFLOW-3531] Add gcs to gcs transfer operator. (#4331)</p></li>
<li><p>[AIRFLOW-3034] Readme updates : Add Slack &amp; Twitter, remove Gitter</p></li>
<li><p>[AIRFLOW-3028] Update Text &amp; Images in Readme.md</p></li>
<li><p>[AIRFLOW-208] Add badge to show supported Python versions (#3839)</p></li>
<li><p>[AIRFLOW-2238] Update PR tool to push directly to GitHub</p></li>
<li><p>[AIRFLOW-2238] Flake8 fixes on dev/airflow-pr</p></li>
<li><p>[AIRFLOW-2238] Update PR tool to remove outdated info (#3978)</p></li>
<li><p>[AIRFLOW-3005] Replace ‘Airbnb Airflow’ with ‘Apache Airflow’ (#3845)</p></li>
<li><p>[AIRFLOW-3150] Make execution_date templated in TriggerDagRunOperator (#4359)</p></li>
<li><p>[AIRFLOW-1196][AIRFLOW-2399] Add templated field in TriggerDagRunOperator (#4228)</p></li>
<li><p>[AIRFLOW-3340] Placeholder support in connections form (#4185)</p></li>
<li><p>[AIRFLOW-3446] Add Google Cloud BigTable operators (#4354)</p></li>
<li><p>[AIRFLOW-1921] Add support for https and user auth (#2879)</p></li>
<li><p>[AIRFLOW-2770] Read <code class="docutils literal notranslate"><span class="pre">dags_in_image</span></code> config value as a boolean (#4319)</p></li>
<li><p>[AIRFLOW-3022] Add volume mount to KubernetesExecutorConfig (#3855)</p></li>
<li><p>[AIRFLOW-2917] Set AIRFLOW__CORE__SQL_ALCHEMY_CONN only when needed (#3766)</p></li>
<li><p>[AIRFLOW-2712] Pass annotations to KubernetesExecutorConfig</p></li>
<li><p>[AIRFLOW-461] Support autodetected schemas in BigQuery run_load (#3880)</p></li>
<li><p>[AIRFLOW-2997] Support cluster fields in bigquery (#3838)</p></li>
<li><p>[AIRFLOW-2916] Arg <code class="docutils literal notranslate"><span class="pre">verify</span></code> for AwsHook() &amp; S3 sensors/operators (#3764)</p></li>
<li><p>[AIRFLOW-491] Add feature to pass extra api configs to BQ Hook (#3733)</p></li>
<li><p>[AIRFLOW-2889] Fix typos detected by github.com/client9/misspell (#3732)</p></li>
<li><p>[AIRFLOW-850] Add a PythonSensor (#4349)</p></li>
<li><p>[AIRFLOW-2747] Explicit re-schedule of sensors (#3596)</p></li>
<li><p>[AIRFLOW-3392] Add index on dag_id in sla_miss table (#4235)</p></li>
<li><p>[AIRFLOW-3001] Add index ‘ti_dag_date’ to taskinstance (#3885)</p></li>
<li><p>[AIRFLOW-2861] Add index on log table (#3709)</p></li>
<li><p>[AIRFLOW-3518] Performance fixes for topological_sort of Tasks (#4322)</p></li>
<li><p>[AIRFLOW-3521] Fetch more than 50 items in <code class="docutils literal notranslate"><span class="pre">airflow-jira</span> <span class="pre">compare</span></code> script (#4300)</p></li>
<li><p>[AIRFLOW-1919] Add option to query for DAG runs given a DAG ID</p></li>
<li><p>[AIRFLOW-3444] Explicitly set transfer operator description. (#4279)</p></li>
<li><p>[AIRFLOW-3411] Add OpenFaaS hook (#4267)</p></li>
<li><p>[AIRFLOW-2785] Add context manager entry points to mongoHook</p></li>
<li><p>[AIRFLOW-2524] Add SageMaker doc to AWS integration section (#4278)</p></li>
<li><p>[AIRFLOW-3479] Keeps records in Log Table when DAG is deleted (#4287)</p></li>
<li><p>[AIRFLOW-2948] Arg check &amp; better doc - SSHOperator &amp; SFTPOperator (#3793)</p></li>
<li><p>[AIRFLOW-2245] Add remote_host of SSH/SFTP operator as templated field (#3765)</p></li>
<li><p>[AIRFLOW-2670] Update SSH Operator’s Hook to respect timeout (#3666)</p></li>
<li><p>[AIRFLOW-3380] Add metrics documentation (#4219)</p></li>
<li><p>[AIRFLOW-3361] Log the task_id in the PendingDeprecationWarning from BaseOperator (#4030)</p></li>
<li><p>[AIRFLOW-3213] Create ADLS to GCS operator (#4134)</p></li>
<li><p>[AIRFLOW-3395] added the REST API endpoints to the doc (#4236)</p></li>
<li><p>[AIRFLOW-3294] Update connections form and integration docs (#4129)</p></li>
<li><p>[AIRFLOW-3236] Create AzureDataLakeStorageListOperator (#4094)</p></li>
<li><p>[AIRFLOW-3062] Add Qubole in integration docs (#3946)</p></li>
<li><p>[AIRFLOW-3306] Disable flask-sqlalchemy modification tracking. (#4146)</p></li>
<li><p>[AIRFLOW-2867] Refactor Code to conform standards (#3714)</p></li>
<li><p>[AIRFLOW-2753] Add dataproc_job_id instance var holding actual DP jobId</p></li>
<li><p>[AIRFLOW-3132] Enable specifying auto_remove option for DockerOperator (#3977)</p></li>
<li><p>[AIRFLOW-2731] Raise psutil restriction to &lt;6.0.0</p></li>
<li><p>[AIRFLOW-3384] Allow higher versions of Sqlalchemy and Jinja2 (#4227)</p></li>
<li><p>[Airflow-2760] Decouple DAG parsing loop from scheduler loop (#3873)</p></li>
<li><p>[AIRFLOW-3004] Add config disabling scheduler cron (#3899)</p></li>
<li><p>[AIRFLOW-3175] Fix docstring format in airflow/jobs.py (#4025)</p></li>
<li><p>[AIRFLOW-3589] Visualize reschedule state in all views (#4408)</p></li>
<li><p>[AIRFLOW-2698] Simplify Kerberos code (#3563)</p></li>
<li><p>[AIRFLOW-2499] Dockerise CI pipeline (#3393)</p></li>
<li><p>[AIRFLOW-3432] Add test for feature “Delete DAG in UI” (#4266)</p></li>
<li><p>[AIRFLOW-3301] Update DockerOperator CI test for PR #3977 (#4138)</p></li>
<li><p>[AIRFLOW-3478] Make sure that the session is closed</p></li>
<li><p>[AIRFLOW-3687] Add missing &#64;apply_defaults decorators (#4498)</p></li>
<li><p>[AIRFLOW-3691] Update notice to 2019 (#4503)</p></li>
<li><p>[AIRFLOW-3689] Update pop-up message when deleting DAG in RBAC UI (#4505)</p></li>
<li><p>[AIRFLOW-2801] Skip test_mark_success_no_kill in PostgreSQL on CI (#3642)</p></li>
<li><p>[AIRFLOW-3693] Replace psycopg2-binary by psycopg2 (#4508)</p></li>
<li><p>[AIRFLOW-3700] Change the lowest allowed version of “requests” (#4517)</p></li>
<li><p>[AIRFLOW-3704] Support SSL Protection When Redis is Used as Broker for CeleryExecutor (#4521)</p></li>
<li><p>[AIRFLOW-3681] All GCP operators have now optional GCP Project ID (#4500)</p></li>
<li><p>[Airflow 2782] Upgrades Dagre D3 version to latest possible</p></li>
<li><p>[Airflow 2783] Implement eslint for JS code check (#3641)</p></li>
<li><p>[AIRFLOW-2805] Display multiple timezones on UI (#3687)</p></li>
<li><p>[AIRFLOW-3302] Small CSS fixes (#4140)</p></li>
<li><p>[Airflow-2766] Respect shared datetime across tabs</p></li>
<li><p>[AIRFLOW-2776] Compress tree view JSON</p></li>
<li><p>[AIRFLOW-2407] Use feature detection for reload() (#3298)</p></li>
<li><p>[AIRFLOW-3452] Removed an unused/dangerous display-none (#4295)</p></li>
<li><p>[AIRFLOW-3348] Update run statistics on dag refresh (#4197)</p></li>
<li><p>[AIRFLOW-3125] Monitor Task Instances creation rates (#3966)</p></li>
</ul>
</div>
<div class="section" id="id133">
<h3>Bug fixes<a class="headerlink" href="#id133" title="Permalink to this headline"></a></h3>
<ul class="simple">
<li><p>[AIRFLOW-3191] Fix not being able to specify execution_date when creating dagrun (#4037)</p></li>
<li><p>[AIRFLOW-3657] Fix zendesk integration (#4466)</p></li>
<li><p>[AIRFLOW-3605] Load plugins from entry_points (#4412)</p></li>
<li><p>[AIRFLOW-3646] Rename plugins_manager.py to test_xx to trigger tests (#4464)</p></li>
<li><p>[AIRFLOW-3655] Escape links generated in model views (#4463)</p></li>
<li><p>[AIRFLOW-3662] Add dependency for Enum (#4468)</p></li>
<li><p>[AIRFLOW-3630] Cleanup of GCP Cloud SQL Connection (#4451)</p></li>
<li><p>[AIRFLOW-1837] Respect task start_date when different from dag’s (#4010)</p></li>
<li><p>[AIRFLOW-2829] Brush up the CI script for minikube</p></li>
<li><p>[AIRFLOW-3519] Fix example http operator (#4455)</p></li>
<li><p>[AIRFLOW-2811] Fix scheduler_ops_metrics.py to work (#3653)</p></li>
<li><p>[AIRFLOW-2751] add job properties update in hive to druid operator.</p></li>
<li><p>[AIRFLOW-2918] Remove unused imports</p></li>
<li><p>[AIRFLOW-2918] Fix Flake8 violations (#3931)</p></li>
<li><p>[AIRFLOW-2771] Add except type to broad S3Hook try catch clauses</p></li>
<li><p>[AIRFLOW-2918] Fix Flake8 violations (#3772)</p></li>
<li><p>[AIRFLOW-2099] Handle getsource() calls gracefully</p></li>
<li><p>[AIRFLOW-3397] Fix integrity error in rbac AirflowSecurityManager (#4305)</p></li>
<li><p>[AIRFLOW-3281] Fix Kubernetes operator with git-sync (#3770)</p></li>
<li><p>[AIRFLOW-2615] Limit DAGs parsing to once only</p></li>
<li><p>[AIRFLOW-2952] Fix Kubernetes CI (#3922)</p></li>
<li><p>[AIRFLOW-2933] Enable Codecov on Docker-CI Build (#3780)</p></li>
<li><p>[AIRFLOW-2082] Resolve a bug in adding password_auth to api as auth method (#4343)</p></li>
<li><p>[AIRFLOW-3612] Remove incubation/incubator mention (#4419)</p></li>
<li><p>[AIRFLOW-3581] Fix next_ds/prev_ds semantics for manual runs (#4385)</p></li>
<li><p>[AIRFLOW-3527] Update Cloud SQL Proxy to have shorter path for UNIX socket (#4350)</p></li>
<li><p>[AIRFLOW-3316] For gcs_to_bq: add missing init of schema_fields var (#4430)</p></li>
<li><p>[AIRFLOW-3583] Fix AirflowException import (#4389)</p></li>
<li><p>[AIRFLOW-3578] Fix Type Error for BigQueryOperator (#4384)</p></li>
<li><p>[AIRFLOW-2755] Added <code class="docutils literal notranslate"><span class="pre">kubernetes.worker_dags_folder</span></code> configuration (#3612)</p></li>
<li><p>[AIRFLOW-2655] Fix inconsistency of default config of kubernetes worker</p></li>
<li><p>[AIRFLOW-2645][AIRFLOW-2617] Add worker_container_image_pull_policy</p></li>
<li><p>[AIRFLOW-2661] fix config dags_volume_subpath and logs_volume_subpath</p></li>
<li><p>[AIRFLOW-3550] Standardize GKE hook (#4364)</p></li>
<li><p>[AIRFLOW-2863] Fix GKEClusterHook catching wrong exception (#3711)</p></li>
<li><p>[AIRFLOW-2939][AIRFLOW-3568] Fix TypeError in GCSToS3Op &amp; S3ToGCSOp (#4371)</p></li>
<li><p>[AIRFLOW-3327] Add support for location in BigQueryHook (#4324)</p></li>
<li><p>[AIRFLOW-3438] Fix default values in BigQuery Hook &amp; BigQueryOperator (…</p></li>
<li><p>[AIRFLOW-3355] Fix BigQueryCursor.execute to work with Python3 (#4198)</p></li>
<li><p>[AIRFLOW-3447] Add 2 options for ts_nodash Macro (#4323)</p></li>
<li><p>[AIRFLOW-1552] Airflow Filter_by_owner not working with password_auth (#4276)</p></li>
<li><p>[AIRFLOW-3484] Fix Over-logging in the k8s executor (#4296)</p></li>
<li><p>[AIRFLOW-3309] Add MongoDB connection (#4154)</p></li>
<li><p>[AIRFLOW-3414] Fix reload_module in DagFileProcessorAgent (#4253)</p></li>
<li><p>[AIRFLOW-1252] API accept JSON when invoking a trigger dag (#2334)</p></li>
<li><p>[AIRFLOW-3425] Fix setting default scope in hook (#4261)</p></li>
<li><p>[AIRFLOW-3416] Fixes Python 3 compatibility with CloudSqlQueryOperator (#4254)</p></li>
<li><p>[AIRFLOW-3263] Ignore exception when ‘run’ kills already killed job (#4108)</p></li>
<li><p>[AIRFLOW-3264] URL decoding when parsing URI for connection (#4109)</p></li>
<li><p>[AIRFLOW-3365][AIRFLOW-3366] Allow celery_broker_transport_options to be set with environment variables (#4211)</p></li>
<li><p>[AIRFLOW-2642] fix wrong value git-sync initcontainer env GIT_SYNC_ROOT (#3519)</p></li>
<li><p>[AIRFLOW-3353] Pin redis version (#4195)</p></li>
<li><p>[AIRFLOW-3251] KubernetesPodOperator now uses ‘image_pull_secrets’ argument when creating Pods (#4188)</p></li>
<li><p>[AIRFLOW-2705] Move class-level moto decorator to method-level</p></li>
<li><p>[AIRFLOW-3233] Fix deletion of DAGs in the UI (#4069)</p></li>
<li><p>[AIRFLOW-2908] Allow retries with KubernetesExecutor. (#3758)</p></li>
<li><p>[AIRFLOW-1561] Fix scheduler to pick up example DAGs without other DAGs (#2635)</p></li>
<li><p>[AIRFLOW-3352] Fix expose_config not honoured on RBAC UI (#4194)</p></li>
<li><p>[AIRFLOW-3592] Fix logs when task is in rescheduled state (#4492)</p></li>
<li><p>[AIRFLOW-3634] Fix GCP Spanner Test (#4440)</p></li>
<li><p>[AIRFLOW-XXX] Fix PythonVirtualenvOperator tests (#3968)</p></li>
<li><p>[AIRFLOW-3239] Fix/refine tests for api/common/experimental/ (#4255)</p></li>
<li><p>[AIRFLOW-2951] Update dag_run table end_date when state change (#3798)</p></li>
<li><p>[AIRFLOW-2756] Fix bug in set DAG run state workflow (#3606)</p></li>
<li><p>[AIRFLOW-3690] Fix bug to set state of a task for manually-triggered DAGs (#4504)</p></li>
<li><p>[AIRFLOW-3319] KubernetsExecutor: Need in try_number in labels if getting them later (#4163)</p></li>
<li><p>[AIRFLOW-3724] Fix the broken refresh button on Graph View in RBAC UI</p></li>
<li><p>[AIRFLOW-3732] Fix issue when trying to edit connection in RBAC UI</p></li>
<li><p>[AIRFLOW-2866] Fix missing CSRF token head when using RBAC UI (#3804)</p></li>
<li><p>[AIRFLOW-3259] Fix internal server error when displaying charts (#4114)</p></li>
<li><p>[AIRFLOW-3271] Fix issue with persistence of RBAC Permissions modified via UI (#4118)</p></li>
<li><p>[AIRFLOW-3141] Handle duration View for missing dag (#3984)</p></li>
<li><p>[AIRFLOW-2766] Respect shared datetime across tabs</p></li>
<li><p>[AIRFLOW-1413] Fix FTPSensor failing on error message with unexpected (#2450)</p></li>
<li><p>[AIRFLOW-3378] KubernetesPodOperator does not delete on timeout failure (#4218)</p></li>
<li><p>[AIRFLOW-3245] Fix list processing in resolve_template_files (#4086)</p></li>
<li><p>[AIRFLOW-2703] Catch transient DB exceptions from scheduler’s heartbeat it does not crash (#3650)</p></li>
<li><p>[AIRFLOW-1298] Clear UPSTREAM_FAILED using the clean cli (#3886)</p></li>
</ul>
</div>
<div class="section" id="id134">
<h3>Doc-only changes<a class="headerlink" href="#id134" title="Permalink to this headline"></a></h3>
<ul class="simple">
<li><p>[AIRFLOW-XXX] GCP operators documentation clarifications (#4273)</p></li>
<li><p>[AIRFLOW-XXX] Docs: Fix paths to GCS transfer operator (#4479)</p></li>
<li><p>[AIRFLOW-XXX] Add missing GCP operators to Docs (#4260)</p></li>
<li><p>[AIRFLOW-XXX] Fix Docstrings for Operators (#3820)</p></li>
<li><p>[AIRFLOW-XXX] Fix inconsistent comment in example_python_operator.py (#4337)</p></li>
<li><p>[AIRFLOW-XXX] Fix incorrect parameter in SFTPOperator example (#4344)</p></li>
<li><p>[AIRFLOW-XXX] Add missing remote logging field (#4333)</p></li>
<li><p>[AIRFLOW-XXX] Revise template variables documentation (#4172)</p></li>
<li><p>[AIRFLOW-XXX] Fix typo in docstring of gcs_to_bq (#3833)</p></li>
<li><p>[AIRFLOW-XXX] Fix display of SageMaker operators/hook docs (#4263)</p></li>
<li><p>[AIRFLOW-XXX] Better instructions for Airflow flower (#4214)</p></li>
<li><p>[AIRFLOW-XXX] Make pip install commands consistent (#3752)</p></li>
<li><p>[AIRFLOW-XXX] Add <code class="docutils literal notranslate"><span class="pre">BigQueryGetDataOperator</span></code> to Integration Docs (#4063)</p></li>
<li><p>[AIRFLOW-XXX] Don’t spam test logs with “bad cron expression” messages (#3973)</p></li>
<li><p>[AIRFLOW-XXX] Update committer list based on latest TLP discussion (#4427)</p></li>
<li><p>[AIRFLOW-XXX] Fix incorrect statement in contributing guide (#4104)</p></li>
<li><p>[AIRFLOW-XXX] Fix Broken Link in CONTRIBUTING.md</p></li>
<li><p>[AIRFLOW-XXX] Update Contributing Guide - Git Hooks (#4120)</p></li>
<li><p>[AIRFLOW-3426] Correct Python Version Documentation Reference (#4259)</p></li>
<li><p>[AIRFLOW-2663] Add instructions to install SSH dependencies</p></li>
<li><p>[AIRFLOW-XXX] Clean up installation extra packages table (#3750)</p></li>
<li><p>[AIRFLOW-XXX] Remove redundant space in Kerberos (#3866)</p></li>
<li><p>[AIRFLOW-3086] Add extras group for google auth to setup.py (#3917)</p></li>
<li><p>[AIRFLOW-XXX] Add Kubernetes Dependency in Extra Packages Doc (#4281)</p></li>
<li><p>[AIRFLOW-3696] Add Version info to Airflow Documentation (#4512)</p></li>
<li><p>[AIRFLOW-XXX] Correct Typo in sensor’s exception (#4545)</p></li>
<li><p>[AIRFLOW-XXX] Fix a typo of config (#4544)</p></li>
<li><p>[AIRFLOW-XXX] Fix BashOperator Docstring (#4052)</p></li>
<li><p>[AIRFLOW-3018] Fix Minor issues in Documentation</p></li>
<li><p>[AIRFLOW-XXX] Fix Minor issues with Azure Cosmos Operator (#4289)</p></li>
<li><p>[AIRFLOW-3382] Fix incorrect docstring in DatastoreHook (#4222)</p></li>
<li><p>[AIRFLOW-XXX] Fix copy&amp;paste mistake (#4212)</p></li>
<li><p>[AIRFLOW-3260] Correct misleading BigQuery error (#4098)</p></li>
<li><p>[AIRFLOW-XXX] Fix Typo in SFTPOperator docstring (#4016)</p></li>
<li><p>[AIRFLOW-XXX] Fixing the issue in Documentation (#3998)</p></li>
<li><p>[AIRFLOW-XXX] Fix undocumented params in S3_hook</p></li>
<li><p>[AIRFLOW-XXX] Fix SlackWebhookOperator execute method comment (#3963)</p></li>
<li><p>[AIRFLOW-3070] Refine web UI authentication-related docs (#3863)</p></li>
</ul>
</div>
</div>
<div class="section" id="airflow-1-10-1-2018-11-13">
<h2><a class="toc-backref" href="#id182">Airflow 1.10.1 (2018-11-13)</a><a class="headerlink" href="#airflow-1-10-1-2018-11-13" title="Permalink to this headline"></a></h2>
<div class="section" id="id135">
<h3>Significant Changes<a class="headerlink" href="#id135" title="Permalink to this headline"></a></h3>
<div class="section" id="min-file-parsing-loop-time-config-option-temporarily-disabled">
<h4>min_file_parsing_loop_time config option temporarily disabled<a class="headerlink" href="#min-file-parsing-loop-time-config-option-temporarily-disabled" title="Permalink to this headline"></a></h4>
<p>The scheduler.min_file_parsing_loop_time config option has been temporarily removed due to
some bugs.</p>
</div>
<div class="section" id="statsd-metrics">
<h4>StatsD Metrics<a class="headerlink" href="#statsd-metrics" title="Permalink to this headline"></a></h4>
<p>The <code class="docutils literal notranslate"><span class="pre">scheduler_heartbeat</span></code> metric has been changed from a gauge to a counter. Each loop of the scheduler will increment the counter by 1. This provides a higher degree of visibility and allows for better integration with Prometheus using the <a class="reference external" href="https://github.com/prometheus/statsd_exporter">StatsD Exporter</a>. The scheduler’s activity status can be determined by graphing and alerting using a rate of change of the counter. If the scheduler goes down, the rate will drop to 0.</p>
</div>
<div class="section" id="emrhook-now-passes-all-of-connection-s-extra-to-createjobflow-api">
<h4>EMRHook now passes all of connection’s extra to CreateJobFlow API<a class="headerlink" href="#emrhook-now-passes-all-of-connection-s-extra-to-createjobflow-api" title="Permalink to this headline"></a></h4>
<p>EMRHook.create_job_flow has been changed to pass all keys to the create_job_flow API, rather than
just specific known keys for greater flexibility.</p>
<p>However prior to this release the “emr_default” sample connection that was created had invalid
configuration, so creating EMR clusters might fail until your connection is updated. (Ec2KeyName,
Ec2SubnetId, TerminationProtection and KeepJobFlowAliveWhenNoSteps were all top-level keys when they
should be inside the “Instances” dict)</p>
</div>
<div class="section" id="ldap-auth-backend-now-requires-tls">
<h4>LDAP Auth Backend now requires TLS<a class="headerlink" href="#ldap-auth-backend-now-requires-tls" title="Permalink to this headline"></a></h4>
<p>Connecting to an LDAP server over plain text is not supported anymore. The
certificate presented by the LDAP server must be signed by a trusted
certificate, or you must provide the <code class="docutils literal notranslate"><span class="pre">cacert</span></code> option under <code class="docutils literal notranslate"><span class="pre">[ldap]</span></code> in the
config file.</p>
<p>If you want to use LDAP auth backend without TLS then you will have to create a
custom-auth backend based on
<a class="reference external" href="https://github.com/apache/airflow/blob/1.10.0/airflow/contrib/auth/backends/ldap_auth.py">https://github.com/apache/airflow/blob/1.10.0/airflow/contrib/auth/backends/ldap_auth.py</a></p>
</div>
</div>
<div class="section" id="id136">
<h3>New features<a class="headerlink" href="#id136" title="Permalink to this headline"></a></h3>
<ul class="simple">
<li><p>[AIRFLOW-2524] Airflow integration with AWS Sagemaker</p></li>
<li><p>[AIRFLOW-2657] Add ability to delete DAG from web ui</p></li>
<li><p>[AIRFLOW-2780] Adds IMAP Hook to interact with a mail server</p></li>
<li><p>[AIRFLOW-2794] Add delete support for Azure blob</p></li>
<li><p>[AIRFLOW-2912] Add operators for Google Cloud Functions</p></li>
<li><p>[AIRFLOW-2974] Add Start/Restart/Terminate methods Databricks Hook</p></li>
<li><p>[AIRFLOW-2989] No Parameter to change bootDiskType for DataprocClusterCreateOperator</p></li>
<li><p>[AIRFLOW-3078] Basic operators for Google Compute Engine</p></li>
<li><p>[AIRFLOW-3147] Update Flask-AppBuilder version</p></li>
<li><p>[AIRFLOW-3231] Basic operators for Google Cloud SQL (deploy / patch / delete)</p></li>
<li><p>[AIRFLOW-3276] Google Cloud SQL database create / patch / delete operators</p></li>
</ul>
</div>
<div class="section" id="id137">
<h3>Improvements<a class="headerlink" href="#id137" title="Permalink to this headline"></a></h3>
<ul class="simple">
<li><p>[AIRFLOW-393] Add progress callbacks for FTP downloads</p></li>
<li><p>[AIRFLOW-520] Show Airflow version on web page</p></li>
<li><p>[AIRFLOW-843] Exceptions now available in context during on_failure_callback</p></li>
<li><p>[AIRFLOW-2476] Update tabulate dependency to v0.8.2</p></li>
<li><p>[AIRFLOW-2592] Bump Bleach dependency</p></li>
<li><p>[AIRFLOW-2622] Add “confirm=False” option to SFTPOperator</p></li>
<li><p>[AIRFLOW-2662] support affinity &amp; nodeSelector policies for kubernetes executor/operator</p></li>
<li><p>[AIRFLOW-2709] Improve error handling in Databricks hook</p></li>
<li><p>[AIRFLOW-2723] Update lxml dependency to &gt;= 4.0.</p></li>
<li><p>[AIRFLOW-2763] No precheck mechanism in place during worker initialisation for the connection to metadata database</p></li>
<li><p>[AIRFLOW-2789] Add ability to create single node cluster to DataprocClusterCreateOperator</p></li>
<li><p>[AIRFLOW-2797] Add ability to create Google Dataproc cluster with custom image</p></li>
<li><p>[AIRFLOW-2854] kubernetes_pod_operator add more configuration items</p></li>
<li><p>[AIRFLOW-2855] Need to Check Validity of Cron Expression When Process DAG File/Zip File</p></li>
<li><p>[AIRFLOW-2904] Clean an unnecessary line in airflow/executors/celery_executor.py</p></li>
<li><p>[AIRFLOW-2921] A trivial incorrectness in CeleryExecutor()</p></li>
<li><p>[AIRFLOW-2922] Potential deal-lock bug in CeleryExecutor()</p></li>
<li><p>[AIRFLOW-2932] GoogleCloudStorageHook - allow compression of file</p></li>
<li><p>[AIRFLOW-2949] Syntax Highlight for Single Quote</p></li>
<li><p>[AIRFLOW-2951] dag_run end_date Null after a dag is finished</p></li>
<li><p>[AIRFLOW-2956] Kubernetes tolerations for pod operator</p></li>
<li><p>[AIRFLOW-2997] Support for clustered tables in Bigquery hooks/operators</p></li>
<li><p>[AIRFLOW-3006] Fix error when schedule_interval=”None”</p></li>
<li><p>[AIRFLOW-3008] Move Kubernetes related example DAGs to contrib/example_dags</p></li>
<li><p>[AIRFLOW-3025] Allow to specify dns and dns-search parameters for DockerOperator</p></li>
<li><p>[AIRFLOW-3067] (www_rbac) Flask flash messages are not displayed properly (no background color)</p></li>
<li><p>[AIRFLOW-3069] Decode output of S3 file transform operator</p></li>
<li><p>[AIRFLOW-3072] Assign permission get_logs_with_metadata to viewer role</p></li>
<li><p>[AIRFLOW-3090] INFO logs are too verbose</p></li>
<li><p>[AIRFLOW-3103] Update flask-login</p></li>
<li><p>[AIRFLOW-3112] Align SFTP hook with SSH hook</p></li>
<li><p>[AIRFLOW-3119] Enable loglevel on celery worker and inherit from airflow.cfg</p></li>
<li><p>[AIRFLOW-3137] Make ProxyFix middleware optional</p></li>
<li><p>[AIRFLOW-3173] Add _cmd options for more password config options</p></li>
<li><p>[AIRFLOW-3177] Change scheduler_heartbeat metric from gauge to counter</p></li>
<li><p>[AIRFLOW-3193] Pin docker requirement version to v3</p></li>
<li><p>[AIRFLOW-3195] Druid Hook: Log ingestion spec and task id</p></li>
<li><p>[AIRFLOW-3197] EMR Hook is missing some parameters to valid on the AWS API</p></li>
<li><p>[AIRFLOW-3232] Make documentation for GCF Functions operator more readable</p></li>
<li><p>[AIRFLOW-3262] Can’t get log containing Response when using SimpleHttpOperator</p></li>
<li><p>[AIRFLOW-3265] Add support for “unix_socket” in connection extra for Mysql Hook</p></li>
</ul>
</div>
<div class="section" id="id138">
<h3>Doc-only changes<a class="headerlink" href="#id138" title="Permalink to this headline"></a></h3>
<ul class="simple">
<li><p>[AIRFLOW-1441] Tutorial Inconsistencies Between Example Pipeline Definition and Recap</p></li>
<li><p>[AIRFLOW-2682] Add how-to guide(s) for how to use basic operators like BashOperator and PythonOperator</p></li>
<li><p>[AIRFLOW-3104] .airflowignore feature is not mentioned at all in documentation</p></li>
<li><p>[AIRFLOW-3237] Refactor example DAGs</p></li>
<li><p>[AIRFLOW-3187] Update Airflow.gif file with a slower version</p></li>
<li><p>[AIRFLOW-3159] Update Airflow documentation on GCP Logging</p></li>
<li><p>[AIRFLOW-3030] Command Line docs incorrect subdir</p></li>
<li><p>[AIRFLOW-2990] Docstrings for Hooks/Operators are in incorrect format</p></li>
<li><p>[AIRFLOW-3127] Celery SSL Documentation is out-dated</p></li>
<li><p>[AIRFLOW-2779] Add license headers to doc files</p></li>
<li><p>[AIRFLOW-2779] Add project version to license</p></li>
</ul>
</div>
<div class="section" id="id139">
<h3>Bug fixes<a class="headerlink" href="#id139" title="Permalink to this headline"></a></h3>
<ul class="simple">
<li><p>[AIRFLOW-839] docker_operator.py attempts to log status key without first checking existence</p></li>
<li><p>[AIRFLOW-1104] Concurrency check in scheduler should count queued tasks as well as running</p></li>
<li><p>[AIRFLOW-1163] Add support for x-forwarded-* headers to support access behind AWS ELB</p></li>
<li><p>[AIRFLOW-1195] Cleared tasks in SubDagOperator do not trigger Parent dag_runs</p></li>
<li><p>[AIRFLOW-1508] Skipped state not part of State.task_states</p></li>
<li><p>[AIRFLOW-1762] Use key_file in SSHHook.create_tunnel()</p></li>
<li><p>[AIRFLOW-1837] Differing start_dates on tasks not respected by scheduler.</p></li>
<li><p>[AIRFLOW-1874] Support standard SQL in Check, ValueCheck and IntervalCheck BigQuery operators</p></li>
<li><p>[AIRFLOW-1917] print() from Python operators end up with extra new line</p></li>
<li><p>[AIRFLOW-1970] Database cannot be initialized if an invalid fernet key is provided</p></li>
<li><p>[AIRFLOW-2145] Deadlock after clearing a running task</p></li>
<li><p>[AIRFLOW-2216] Cannot specify a profile for AWS Hook to load with s3 config file</p></li>
<li><p>[AIRFLOW-2574] initdb fails when mysql password contains percent sign</p></li>
<li><p>[AIRFLOW-2707] Error accessing log files from web UI</p></li>
<li><p>[AIRFLOW-2716] Replace new Python 3.7 keywords</p></li>
<li><p>[AIRFLOW-2744] RBAC app doesn’t integrate plugins (blueprints etc)</p></li>
<li><p>[AIRFLOW-2772] BigQuery hook does not allow specifying both the partition field name and table name at the same time</p></li>
<li><p>[AIRFLOW-2778] Bad Import in collect_dag in DagBag</p></li>
<li><p>[AIRFLOW-2786] Variables view fails to render if a variable has an empty key</p></li>
<li><p>[AIRFLOW-2799] Filtering UI objects by datetime is broken</p></li>
<li><p>[AIRFLOW-2800] Remove airflow/ low-hanging linting errors</p></li>
<li><p>[AIRFLOW-2825] S3ToHiveTransfer operator may not may able to handle GZIP file with uppercase ext in S3</p></li>
<li><p>[AIRFLOW-2848] dag_id is missing in metadata table “job” for LocalTaskJob</p></li>
<li><p>[AIRFLOW-2860] DruidHook: time variable is not updated correctly when checking for timeout</p></li>
<li><p>[AIRFLOW-2865] Race condition between on_success_callback and LocalTaskJob’s cleanup</p></li>
<li><p>[AIRFLOW-2893] Stuck dataflow job due to jobName mismatch.</p></li>
<li><p>[AIRFLOW-2895] Prevent scheduler from spamming heartbeats/logs</p></li>
<li><p>[AIRFLOW-2900] Code not visible for Packaged DAGs</p></li>
<li><p>[AIRFLOW-2905] Switch to regional dataflow job service.</p></li>
<li><p>[AIRFLOW-2907] Sendgrid - Attachments - ERROR - Object of type ‘bytes’ is not JSON serializable</p></li>
<li><p>[AIRFLOW-2938] Invalid ‘extra’ field in connection can raise an AttributeError when attempting to edit</p></li>
<li><p>[AIRFLOW-2979] Deprecated Celery Option not in Options list</p></li>
<li><p>[AIRFLOW-2981] TypeError in dataflow operators when using GCS jar or py_file</p></li>
<li><p>[AIRFLOW-2984] Cannot convert naive_datetime when task has a naive start_date/end_date</p></li>
<li><p>[AIRFLOW-2994] flatten_results in BigQueryOperator/BigQueryHook should default to None</p></li>
<li><p>[AIRFLOW-3002] ValueError in dataflow operators when using GCS jar or py_file</p></li>
<li><p>[AIRFLOW-3012] Email on sla miss is send only to first address on the list</p></li>
<li><p>[AIRFLOW-3046] ECS Operator mistakenly reports success when task is killed due to EC2 host termination</p></li>
<li><p>[AIRFLOW-3064] No output from <code class="docutils literal notranslate"><span class="pre">airflow</span> <span class="pre">test</span></code> due to default logging config</p></li>
<li><p>[AIRFLOW-3072] Only admin can view logs in RBAC UI</p></li>
<li><p>[AIRFLOW-3079] Improve initdb to support MSSQL Server</p></li>
<li><p>[AIRFLOW-3089] Google auth doesn’t work under http</p></li>
<li><p>[AIRFLOW-3099] Errors raised when some blocks are missing in airflow.cfg</p></li>
<li><p>[AIRFLOW-3109] Default user permission should contain ‘can_clear’</p></li>
<li><p>[AIRFLOW-3111] Confusing comments and instructions for log templates in UPDATING.md and default_airflow.cfg</p></li>
<li><p>[AIRFLOW-3124] Broken webserver debug mode (RBAC)</p></li>
<li><p>[AIRFLOW-3136] Scheduler Failing the Task retries run while processing Executor Events</p></li>
<li><p>[AIRFLOW-3138] Migration cc1e65623dc7 creates issues with postgres</p></li>
<li><p>[AIRFLOW-3161] Log Url link does not link to task instance logs in RBAC UI</p></li>
<li><p>[AIRFLOW-3162] HttpHook fails to parse URL when port is specified</p></li>
<li><p>[AIRFLOW-3183] Potential Bug in utils/dag_processing/DagFileProcessorManager.max_runs_reached()</p></li>
<li><p>[AIRFLOW-3203] Bugs in DockerOperator &amp; Some operator test scripts were named incorrectly</p></li>
<li><p>[AIRFLOW-3238] Dags, removed from the filesystem, are not deactivated on initdb</p></li>
<li><p>[AIRFLOW-3268] Cannot pass SSL dictionary to mysql connection via URL</p></li>
<li><p>[AIRFLOW-3277] Invalid timezone transition handling for cron schedules</p></li>
<li><p>[AIRFLOW-3295] Require encryption in DaskExecutor when certificates are configured.</p></li>
<li><p>[AIRFLOW-3297] EmrStepSensor marks cancelled step as successful</p></li>
</ul>
</div>
</div>
<div class="section" id="airflow-1-10-0-2018-08-03">
<h2><a class="toc-backref" href="#id183">Airflow 1.10.0 (2018-08-03)</a><a class="headerlink" href="#airflow-1-10-0-2018-08-03" title="Permalink to this headline"></a></h2>
<div class="section" id="id140">
<h3>Significant Changes<a class="headerlink" href="#id140" title="Permalink to this headline"></a></h3>
<p>Installation and upgrading requires setting <code class="docutils literal notranslate"><span class="pre">SLUGIFY_USES_TEXT_UNIDECODE=yes</span></code> in your environment or
<code class="docutils literal notranslate"><span class="pre">AIRFLOW_GPL_UNIDECODE=yes</span></code>. In case of the latter a GPL runtime dependency will be installed due to a
dependency <code class="docutils literal notranslate"><span class="pre">(python-nvd3</span> <span class="pre">-&gt;</span> <span class="pre">python-slugify</span> <span class="pre">-&gt;</span> <span class="pre">unidecode)</span></code>.</p>
<div class="section" id="replace-dataprochook-await-calls-to-dataprochook-wait">
<h4>Replace DataProcHook.await calls to DataProcHook.wait<a class="headerlink" href="#replace-dataprochook-await-calls-to-dataprochook-wait" title="Permalink to this headline"></a></h4>
<p>The method name was changed to be compatible with the Python 3.7 async/await keywords</p>
</div>
<div class="section" id="setting-utf-8-as-default-mime-charset-in-email-utils">
<h4>Setting UTF-8 as default mime_charset in email utils<a class="headerlink" href="#setting-utf-8-as-default-mime-charset-in-email-utils" title="Permalink to this headline"></a></h4>
</div>
<div class="section" id="add-a-configuration-variable-default-dag-run-display-number-to-control-numbers-of-dag-run-for-display">
<h4>Add a configuration variable(default_dag_run_display_number) to control numbers of dag run for display<a class="headerlink" href="#add-a-configuration-variable-default-dag-run-display-number-to-control-numbers-of-dag-run-for-display" title="Permalink to this headline"></a></h4>
<p>Add a configuration variable(default_dag_run_display_number) under webserver section to control the number of dag runs to show in UI.</p>
</div>
<div class="section" id="default-executor-for-subdagoperator-is-changed-to-sequentialexecutor">
<h4>Default executor for SubDagOperator is changed to SequentialExecutor<a class="headerlink" href="#default-executor-for-subdagoperator-is-changed-to-sequentialexecutor" title="Permalink to this headline"></a></h4>
</div>
<div class="section" id="new-webserver-ui-with-role-based-access-control">
<h4>New Webserver UI with Role-Based Access Control<a class="headerlink" href="#new-webserver-ui-with-role-based-access-control" title="Permalink to this headline"></a></h4>
<p>The current webserver UI uses the Flask-Admin extension. The new webserver UI uses the <a class="reference external" href="https://github.com/dpgaspar/Flask-AppBuilder">Flask-AppBuilder (FAB)</a> extension. FAB has built-in authentication support and Role-Based Access Control (RBAC), which provides configurable roles and permissions for individual users.</p>
<p>To turn on this feature, in your airflow.cfg file (under [webserver]), set the configuration variable <code class="docutils literal notranslate"><span class="pre">rbac</span> <span class="pre">=</span> <span class="pre">True</span></code>, and then run <code class="docutils literal notranslate"><span class="pre">airflow</span></code> command, which will generate the <code class="docutils literal notranslate"><span class="pre">webserver_config.py</span></code> file in your $AIRFLOW_HOME.</p>
<div class="section" id="setting-up-authentication">
<h5>Setting up Authentication<a class="headerlink" href="#setting-up-authentication" title="Permalink to this headline"></a></h5>
<p>FAB has built-in authentication support for DB, OAuth, OpenID, LDAP, and REMOTE_USER. The default auth type is <code class="docutils literal notranslate"><span class="pre">AUTH_DB</span></code>.</p>
<p>For any other authentication type (OAuth, OpenID, LDAP, REMOTE_USER), see the <a class="reference external" href="http://flask-appbuilder.readthedocs.io/en/latest/security.html#authentication-methods">Authentication section of FAB docs</a> for how to configure variables in webserver_config.py file.</p>
<p>Once you modify your config file, run <code class="docutils literal notranslate"><span class="pre">airflow</span> <span class="pre">db</span> <span class="pre">init</span></code> to generate new tables for RBAC support (these tables will have the prefix <code class="docutils literal notranslate"><span class="pre">ab_</span></code>).</p>
</div>
<div class="section" id="creating-an-admin-account">
<h5>Creating an Admin Account<a class="headerlink" href="#creating-an-admin-account" title="Permalink to this headline"></a></h5>
<p>Once configuration settings have been updated and new tables have been generated, create an admin account with <code class="docutils literal notranslate"><span class="pre">airflow</span> <span class="pre">create_user</span></code> command.</p>
</div>
<div class="section" id="using-your-new-ui">
<h5>Using your new UI<a class="headerlink" href="#using-your-new-ui" title="Permalink to this headline"></a></h5>
<p>Run <code class="docutils literal notranslate"><span class="pre">airflow</span> <span class="pre">webserver</span></code> to start the new UI. This will bring up a log in page, enter the recently created admin username and password.</p>
<p>There are five roles created for Airflow by default: Admin, User, Op, Viewer, and Public. To configure roles/permissions, go to the <code class="docutils literal notranslate"><span class="pre">Security</span></code> tab and click <code class="docutils literal notranslate"><span class="pre">List</span> <span class="pre">Roles</span></code> in the new UI.</p>
</div>
<div class="section" id="breaking-changes">
<h5>Breaking changes<a class="headerlink" href="#breaking-changes" title="Permalink to this headline"></a></h5>
<ul class="simple">
<li><p>AWS Batch Operator renamed property queue to job_queue to prevent conflict with the internal queue from CeleryExecutor - AIRFLOW-2542</p></li>
<li><p>Users created and stored in the old users table will not be migrated automatically. FAB’s built-in authentication support must be reconfigured.</p></li>
<li><p>Airflow dag home page is now <code class="docutils literal notranslate"><span class="pre">/home</span></code> (instead of <code class="docutils literal notranslate"><span class="pre">/admin</span></code>).</p></li>
<li><p>All ModelViews in Flask-AppBuilder follow a different pattern from Flask-Admin. The <code class="docutils literal notranslate"><span class="pre">/admin</span></code> part of the URL path will no longer exist. For example: <code class="docutils literal notranslate"><span class="pre">/admin/connection</span></code> becomes <code class="docutils literal notranslate"><span class="pre">/connection/list</span></code>, <code class="docutils literal notranslate"><span class="pre">/admin/connection/new</span></code> becomes <code class="docutils literal notranslate"><span class="pre">/connection/add</span></code>, <code class="docutils literal notranslate"><span class="pre">/admin/connection/edit</span></code> becomes <code class="docutils literal notranslate"><span class="pre">/connection/edit</span></code>, etc.</p></li>
<li><p>Due to security concerns, the new webserver will no longer support the features in the <code class="docutils literal notranslate"><span class="pre">Data</span> <span class="pre">Profiling</span></code> menu of old UI, including <code class="docutils literal notranslate"><span class="pre">Ad</span> <span class="pre">Hoc</span> <span class="pre">Query</span></code>, <code class="docutils literal notranslate"><span class="pre">Charts</span></code>, and <code class="docutils literal notranslate"><span class="pre">Known</span> <span class="pre">Events</span></code>.</p></li>
<li><p>HiveServer2Hook.get_results() always returns a list of tuples, even when a single column is queried, as per Python API 2.</p></li>
<li><p><strong>UTC is now the default timezone</strong>: Either reconfigure your workflows scheduling in UTC or set <code class="docutils literal notranslate"><span class="pre">default_timezone</span></code> as explained in <a class="reference external" href="https://airflow.apache.org/timezone.html#default-time-zone">https://airflow.apache.org/timezone.html#default-time-zone</a></p></li>
</ul>
</div>
</div>
<div class="section" id="airflow-contrib-sensors-hdfs-sensors-renamed-to-airflow-contrib-sensors-hdfs-sensor">
<h4>airflow.contrib.sensors.hdfs_sensors renamed to airflow.contrib.sensors.hdfs_sensor<a class="headerlink" href="#airflow-contrib-sensors-hdfs-sensors-renamed-to-airflow-contrib-sensors-hdfs-sensor" title="Permalink to this headline"></a></h4>
<p>We now rename airflow.contrib.sensors.hdfs_sensors to airflow.contrib.sensors.hdfs_sensor for consistency purpose.</p>
</div>
<div class="section" id="mysql-setting-required">
<h4>MySQL setting required<a class="headerlink" href="#mysql-setting-required" title="Permalink to this headline"></a></h4>
<p>We now rely on more strict ANSI SQL settings for MySQL in order to have sane defaults. Make sure
to have specified <code class="docutils literal notranslate"><span class="pre">explicit_defaults_for_timestamp=1</span></code> in your my.cnf under <code class="docutils literal notranslate"><span class="pre">[mysqld]</span></code></p>
</div>
<div class="section" id="celery-config">
<h4>Celery config<a class="headerlink" href="#celery-config" title="Permalink to this headline"></a></h4>
<p>To make the config of Airflow compatible with Celery, some properties have been renamed:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">celeryd_concurrency</span> <span class="o">-&gt;</span> <span class="n">worker_concurrency</span>
<span class="n">celery_result_backend</span> <span class="o">-&gt;</span> <span class="n">result_backend</span>
<span class="n">celery_ssl_active</span> <span class="o">-&gt;</span> <span class="n">ssl_active</span>
<span class="n">celery_ssl_cert</span> <span class="o">-&gt;</span> <span class="n">ssl_cert</span>
<span class="n">celery_ssl_key</span> <span class="o">-&gt;</span> <span class="n">ssl_key</span>
</pre></div>
</div>
<p>Resulting in the same config parameters as Celery 4, with more transparency.</p>
</div>
<div class="section" id="gcp-dataflow-operators">
<h4>GCP Dataflow Operators<a class="headerlink" href="#gcp-dataflow-operators" title="Permalink to this headline"></a></h4>
<p>Dataflow job labeling is now supported in Dataflow{Java,Python}Operator with a default
“airflow-version” label, please upgrade your google-cloud-dataflow or apache-beam version
to 2.2.0 or greater.</p>
</div>
<div class="section" id="bigquery-hooks-and-operator">
<h4>BigQuery Hooks and Operator<a class="headerlink" href="#bigquery-hooks-and-operator" title="Permalink to this headline"></a></h4>
<p>The <code class="docutils literal notranslate"><span class="pre">bql</span></code> parameter passed to <code class="docutils literal notranslate"><span class="pre">BigQueryOperator</span></code> and <code class="docutils literal notranslate"><span class="pre">BigQueryBaseCursor.run_query</span></code> has been deprecated and renamed to <code class="docutils literal notranslate"><span class="pre">sql</span></code> for consistency purposes. Using <code class="docutils literal notranslate"><span class="pre">bql</span></code> will still work (and raise a <code class="docutils literal notranslate"><span class="pre">DeprecationWarning</span></code>), but is no longer
supported and will be removed entirely in Airflow 2.0</p>
</div>
<div class="section" id="redshift-to-s3-operator">
<h4>Redshift to S3 Operator<a class="headerlink" href="#redshift-to-s3-operator" title="Permalink to this headline"></a></h4>
<p>With Airflow 1.9 or lower, Unload operation always included header row. In order to include header row,
we need to turn off parallel unload. It is preferred to perform unload operation using all nodes so that it is
faster for larger tables. So, parameter called <code class="docutils literal notranslate"><span class="pre">include_header</span></code> is added and default is set to False.
Header row will be added only if this parameter is set True and also in that case parallel will be automatically turned off (<code class="docutils literal notranslate"><span class="pre">PARALLEL</span> <span class="pre">OFF</span></code>)</p>
</div>
<div class="section" id="google-cloud-connection-string">
<h4>Google cloud connection string<a class="headerlink" href="#google-cloud-connection-string" title="Permalink to this headline"></a></h4>
<p>With Airflow 1.9 or lower, there were two connection strings for the Google Cloud operators, both <code class="docutils literal notranslate"><span class="pre">google_cloud_storage_default</span></code> and <code class="docutils literal notranslate"><span class="pre">google_cloud_default</span></code>. This can be confusing and therefore the <code class="docutils literal notranslate"><span class="pre">google_cloud_storage_default</span></code> connection id has been replaced with <code class="docutils literal notranslate"><span class="pre">google_cloud_default</span></code> to make the connection id consistent across Airflow.</p>
</div>
<div class="section" id="logging-configuration">
<h4>Logging Configuration<a class="headerlink" href="#logging-configuration" title="Permalink to this headline"></a></h4>
<p>With Airflow 1.9 or lower, <code class="docutils literal notranslate"><span class="pre">FILENAME_TEMPLATE</span></code>, <code class="docutils literal notranslate"><span class="pre">PROCESSOR_FILENAME_TEMPLATE</span></code>, <code class="docutils literal notranslate"><span class="pre">LOG_ID_TEMPLATE</span></code>, <code class="docutils literal notranslate"><span class="pre">END_OF_LOG_MARK</span></code> were configured in <code class="docutils literal notranslate"><span class="pre">airflow_local_settings.py</span></code>. These have been moved into the configuration file, and hence if you were using a custom configuration file the following defaults need to be added.</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="p">[</span><span class="n">core</span><span class="p">]</span>
<span class="n">fab_logging_level</span> <span class="o">=</span> <span class="n">WARN</span>
<span class="n">log_filename_template</span> <span class="o">=</span> <span class="p">{{{{</span> <span class="n">ti</span><span class="o">.</span><span class="n">dag_id</span> <span class="p">}}}}</span><span class="o">/</span><span class="p">{{{{</span> <span class="n">ti</span><span class="o">.</span><span class="n">task_id</span> <span class="p">}}}}</span><span class="o">/</span><span class="p">{{{{</span> <span class="n">ts</span> <span class="p">}}}}</span><span class="o">/</span><span class="p">{{{{</span> <span class="n">try_number</span> <span class="p">}}}}</span><span class="o">.</span><span class="n">log</span>
<span class="n">log_processor_filename_template</span> <span class="o">=</span> <span class="p">{{{{</span> <span class="n">filename</span> <span class="p">}}}}</span><span class="o">.</span><span class="n">log</span>
<span class="p">[</span><span class="n">elasticsearch</span><span class="p">]</span>
<span class="n">elasticsearch_log_id_template</span> <span class="o">=</span> <span class="p">{{</span><span class="n">dag_id</span><span class="p">}}</span><span class="o">-</span><span class="p">{{</span><span class="n">task_id</span><span class="p">}}</span><span class="o">-</span><span class="p">{{</span><span class="n">execution_date</span><span class="p">}}</span><span class="o">-</span><span class="p">{{</span><span class="n">try_number</span><span class="p">}}</span>
<span class="n">elasticsearch_end_of_log_mark</span> <span class="o">=</span> <span class="n">end_of_log</span>
</pre></div>
</div>
<p>The previous setting of <code class="docutils literal notranslate"><span class="pre">log_task_reader</span></code> is not needed in many cases now when using the default logging config with remote storage. (Previously it needed to be set to <code class="docutils literal notranslate"><span class="pre">s3.task</span></code> or similar. This is not needed with the default config anymore)</p>
<div class="section" id="change-of-per-task-log-path">
<h5>Change of per-task log path<a class="headerlink" href="#change-of-per-task-log-path" title="Permalink to this headline"></a></h5>
<p>With the change to Airflow core to be timezone aware the default log path for task instances will now include timezone information. This will by default mean all previous task logs won’t be found. You can get the old behaviour back by setting the following config options:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="p">[</span><span class="n">core</span><span class="p">]</span>
<span class="n">log_filename_template</span> <span class="o">=</span> <span class="p">{{</span> <span class="n">ti</span><span class="o">.</span><span class="n">dag_id</span> <span class="p">}}</span><span class="o">/</span><span class="p">{{</span> <span class="n">ti</span><span class="o">.</span><span class="n">task_id</span> <span class="p">}}</span><span class="o">/</span><span class="p">{{</span> <span class="n">execution_date</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s2">&quot;</span><span class="si">%%</span><span class="s2">Y-</span><span class="si">%%</span><span class="s2">m-</span><span class="si">%%</span><span class="s2">dT</span><span class="si">%%</span><span class="s2">H:</span><span class="si">%%</span><span class="s2">M:</span><span class="si">%%</span><span class="s2">S&quot;</span><span class="p">)</span> <span class="p">}}</span><span class="o">/</span><span class="p">{{</span> <span class="n">try_number</span> <span class="p">}}</span><span class="o">.</span><span class="n">log</span>
</pre></div>
</div>
</div>
</div>
</div>
<div class="section" id="changelog">
<h3>Changelog<a class="headerlink" href="#changelog" title="Permalink to this headline"></a></h3>
<ul class="simple">
<li><p>[AIRFLOW-2870] Use abstract TaskInstance for migration</p></li>
<li><p>[AIRFLOW-2859] Implement own UtcDateTime (#3708)</p></li>
<li><p>[AIRFLOW-2140] Don’t require kubernetes for the SparkSubmit hook</p></li>
<li><p>[AIRFLOW-2869] Remove smart quote from default config</p></li>
<li><p>[AIRFLOW-2857] Fix Read the Docs env</p></li>
<li><p>[AIRFLOW-2817] Force explicit choice on GPL dependency</p></li>
<li><p>[AIRFLOW-2716] Replace async and await py3.7 keywords</p></li>
<li><p>[AIRFLOW-2810] Fix typo in Xcom model timestamp</p></li>
<li><p>[AIRFLOW-2710] Clarify fernet key value in documentation</p></li>
<li><p>[AIRFLOW-2606] Fix DB schema and SQLAlchemy model</p></li>
<li><p>[AIRFLOW-2646] Fix setup.py not to install snakebite on Python3</p></li>
<li><p>[AIRFLOW-2604] Add index to task_fail</p></li>
<li><p>[AIRFLOW-2650] Mark SchedulerJob as succeed when hitting Ctrl-c</p></li>
<li><p>[AIRFLOW-2678] Fix db schema unit test to remove checking fab models</p></li>
<li><p>[AIRFLOW-2624] Fix webserver login as anonymous</p></li>
<li><p>[AIRFLOW-2654] Fix incorrect URL on refresh in Graph View of FAB UI</p></li>
<li><p>[AIRFLOW-2668] Handle missing optional cryptography dependency</p></li>
<li><p>[AIRFLOW-2681] Include last dag run of externally triggered DAGs in UI.</p></li>
<li><p>[AIRFLOW-1840] Support back-compat on old celery config</p></li>
<li><p>[AIRFLOW-2612][AIRFLOW-2534] Clean up Hive-related tests</p></li>
<li><p>[AIRFLOW-2608] Implements/Standardize custom exceptions for experimental APIs</p></li>
<li><p>[AIRFLOW-2607] Fix failing TestLocalClient</p></li>
<li><p>[AIRFLOW-2638] dbapi_hook: support REPLACE INTO</p></li>
<li><p>[AIRFLOW-2542][AIRFLOW-1790] Rename AWS Batch Operator queue to job_queue</p></li>
<li><p>[AIRFLOW-2567] Extract result from the kubernetes pod as Xcom</p></li>
<li><p>[AIRFLOW-XXX] Adding REA Group to readme</p></li>
<li><p>[AIRFLOW-2601] Allow user to specify k8s config</p></li>
<li><p>[AIRFLOW-2559] Azure Fileshare hook</p></li>
<li><p>[AIRFLOW-1786] Enforce correct behavior for soft-fail sensors</p></li>
<li><p>[AIRFLOW-2355] Airflow trigger tag parameters in subdag</p></li>
<li><p>[AIRFLOW-2613] Fix Airflow searching .zip bug</p></li>
<li><p>[AIRFLOW-2627] Add a sensor for Cassandra</p></li>
<li><p>[AIRFLOW-2634][AIRFLOW-2534] Remove dependency for impyla</p></li>
<li><p>[AIRFLOW-2611] Fix wrong dag volume mount path for kubernetes executor</p></li>
<li><p>[AIRFLOW-2562] Add Google Kubernetes Engine Operators</p></li>
<li><p>[AIRFLOW-2630] Fix classname in test_sql_sensor.py</p></li>
<li><p>[AIRFLOW-2534] Fix bug in HiveServer2Hook</p></li>
<li><p>[AIRFLOW-2586] Stop getting AIRFLOW_HOME value from config file in bash operator</p></li>
<li><p>[AIRFLOW-2605] Fix autocommit for MySqlHook</p></li>
<li><p>[AIRFLOW-2539][AIRFLOW-2359] Move remaining log config to configuration file</p></li>
<li><p>[AIRFLOW-1656] Tree view dags query changed</p></li>
<li><p>[AIRFLOW-2617] add imagePullPolicy config for kubernetes executor</p></li>
<li><p>[AIRFLOW-2429] Fix security/task/sensors/ti_deps folders flake8 error</p></li>
<li><p>[AIRFLOW-2550] Implements API endpoint to list DAG runs</p></li>
<li><p>[AIRFLOW-2512][AIRFLOW-2522] Use google-auth instead of oauth2client</p></li>
<li><p>[AIRFLOW-2429] Fix operators folder flake8 error</p></li>
<li><p>[AIRFLOW-2585] Fix several bugs in CassandraHook and CassandraToGCSOperator</p></li>
<li><p>[AIRFLOW-2597] Restore original dbapi.run() behavior</p></li>
<li><p>[AIRFLOW-2590] Fix commit in DbApiHook.run() for no-autocommit DB</p></li>
<li><p>[AIRFLOW-1115] fix github oauth api URL</p></li>
<li><p>[AIRFLOW-2587] Add TIMESTAMP type mapping to MySqlToHiveTransfer</p></li>
<li><p>[AIRFLOW-2591][AIRFLOW-2581] Set default value of autocommit to False in DbApiHook.run()</p></li>
<li><p>[AIRFLOW-59] Implement bulk_dump and bulk_load for the Postgres hook</p></li>
<li><p>[AIRFLOW-2533] Fix path to DAG’s on kubernetes executor workers</p></li>
<li><p>[AIRFLOW-2581] RFLOW-2581] Fix DbApiHook autocommit</p></li>
<li><p>[AIRFLOW-2578] Add option to use proxies in JiraHook</p></li>
<li><p>[AIRFLOW-2575] Make gcs to gcs operator work with large files</p></li>
<li><p>[AIRFLOW-437] Send TI context in kill zombies</p></li>
<li><p>[AIRFLOW-2566] Change backfill to rerun failed tasks</p></li>
<li><p>[AIRFLOW-1021] Fix double login for new users with LDAP</p></li>
<li><p>[AIRFLOW-XXX] Typo fix</p></li>
<li><p>[AIRFLOW-2561] Fix typo in EmailOperator</p></li>
<li><p>[AIRFLOW-2573] Cast BigQuery TIMESTAMP field to float</p></li>
<li><p>[AIRFLOW-2560] Adding support for internalIpOnly to DataprocClusterCreateOperator</p></li>
<li><p>[AIRFLOW-2565] templatize cluster_label</p></li>
<li><p>[AIRFLOW-83] add mongo hook and operator</p></li>
<li><p>[AIRFLOW-2558] Clear task/dag is clearing all executions</p></li>
<li><p>[AIRFLOW-XXX] Fix doc typos</p></li>
<li><p>[AIRFLOW-2513] Change <code class="docutils literal notranslate"><span class="pre">bql</span></code> to <code class="docutils literal notranslate"><span class="pre">sql</span></code> for BigQuery Hooks &amp; Ops</p></li>
<li><p>[AIRFLOW-2557] Fix pagination for s3</p></li>
<li><p>[AIRFLOW-2545] Eliminate DeprecationWarning</p></li>
<li><p>[AIRFLOW-2500] Fix MySqlToHiveTransfer to transfer unsigned type properly</p></li>
<li><p>[AIRFLOW-2462] Change PasswordUser setter to correct syntax</p></li>
<li><p>[AIRFLOW-2525] Fix a bug introduced by commit <code class="docutils literal notranslate"><span class="pre">dabf1b9</span></code></p></li>
<li><p>[AIRFLOW-2553] Add webserver.pid to .gitignore</p></li>
<li><p>[AIRFLOW-1863][AIRFLOW-2529] Add dag run selection widgets to gantt view</p></li>
<li><p>[AIRFLOW-2504] Log username correctly and add extra to search columns</p></li>
<li><p>[AIRFLOW-2551] Encode binary data with base64 standard rather than base64 url</p></li>
<li><p>[AIRFLOW-2537] Add reset-dagrun option to backfill command</p></li>
<li><p>[AIRFLOW-2526] dag_run.conf can override params</p></li>
<li><p>[AIRFLOW-2544][AIRFLOW-1967] Guard against next major release of Celery, Flower</p></li>
<li><p>[AIRFLOW-XXX] Add Yieldr to who is using airflow</p></li>
<li><p>[AIRFLOW-2547] Describe how to run tests using Docker</p></li>
<li><p>[AIRFLOW-2538] Update faq doc on how to reduce Airflow scheduler latency</p></li>
<li><p>[AIRFLOW-2529] Improve graph view performance and usability</p></li>
<li><p>[AIRFLOW-2517] backfill support passing key values through CLI</p></li>
<li><p>[AIRFLOW-2532] Support logs_volume_subpath for KubernetesExecutor</p></li>
<li><p>[AIRFLOW-2466] consider task_id in _change_state_for_tis_without_dagrun</p></li>
<li><p>[AIRFLOW-2519] Fix CeleryExecutor with SQLAlchemy</p></li>
<li><p>[AIRFLOW-2402] Fix RBAC task log</p></li>
<li><p>[AIRFLOW-XXX] Add M4U to user list</p></li>
<li><p>[AIRFLOW-2536] docs about how to deal with Airflow initdb failure</p></li>
<li><p>[AIRFLOW-2530] KubernetesOperator supports multiple clusters</p></li>
<li><p>[AIRFLOW-1499] Eliminate duplicate and unneeded code</p></li>
<li><p>[AIRFLOW-2521] backfill - make variable name and logging messages more accurate</p></li>
<li><p>[AIRFLOW-2429] Fix hook, macros folder flake8 error</p></li>
<li><p>[Airflow-XXX] add Prime to company list</p></li>
<li><p>[AIRFLOW-2525] Fix PostgresHook.copy_expert to work with “COPY FROM”</p></li>
<li><p>[AIRFLOW-2515] Add dependency on thrift_sasl to hive extra</p></li>
<li><p>[AIRFLOW-2523] Add how-to for managing GCP connections</p></li>
<li><p>[AIRFLOW-2510] Introduce new macros: prev_ds and next_ds</p></li>
<li><p>[AIRFLOW-1730] Unpickle value of XCom queried from DB</p></li>
<li><p>[AIRFLOW-2518] Fix broken ToC links in integration.rst</p></li>
<li><p>[AIRFLOW-1472] Fix SLA misses triggering on skipped tasks.</p></li>
<li><p>[AIRFLOW-2520] CLI - make backfill less verbose</p></li>
<li><p>[AIRFLOW-2107] add time_partitioning to run_query on BigQueryBaseCursor</p></li>
<li><p>[AIRFLOW-1057][AIRFLOW-1380][AIRFLOW-2362][2362] AIRFLOW Update DockerOperator to new API</p></li>
<li><p>[AIRFLOW-2415] Make Airflow DAG templating render numbers</p></li>
<li><p>[AIRFLOW-2473] Fix wrong skip condition for TransferTests</p></li>
<li><p>[AIRFLOW-2472] Implement MySqlHook.bulk_dump</p></li>
<li><p>[AIRFLOW-2419] Use default view for subdag operator</p></li>
<li><p>[AIRFLOW-2498] Fix Unexpected argument in SFTP Sensor</p></li>
<li><p>[AIRFLOW-2509] Separate config docs into how-to guides</p></li>
<li><p>[AIRFLOW-2429] Add BaseExecutor back</p></li>
<li><p>[AIRFLOW-2429] Fix dag, example_dags, executors flake8 error</p></li>
<li><p>[AIRFLOW-2502] Change Single triple quotes to double for docstrings</p></li>
<li><p>[AIRFLOW-2503] Fix broken links in CONTRIBUTING.md</p></li>
<li><p>[AIRFLOW-2501] Refer to devel instructions in docs contrib guide</p></li>
<li><p>[AIRFLOW-2429] Fix contrib folder’s flake8 errors</p></li>
<li><p>[AIRFLOW-2471] Fix HiveCliHook.load_df to use unused parameters</p></li>
<li><p>[AIRFLOW-2495] Update celery to 4.1.1</p></li>
<li><p>[AIRFLOW-2429] Fix api, bin, config_templates folders flake8 error</p></li>
<li><p>[AIRFLOW-2493] Mark template_fields of all Operators in the API document as “templated”</p></li>
<li><p>[AIRFLOW-2489] Update FlaskAppBuilder to 1.11.1</p></li>
<li><p>[AIRFLOW-2448] Enhance HiveCliHook.load_df to work with datetime</p></li>
<li><p>[AIRFLOW-2487] Enhance druid ingestion hook</p></li>
<li><p>[AIRFLOW-2397] Support affinity policies for Kubernetes executor/operator</p></li>
<li><p>[AIRFLOW-2482] Add test for rewrite method in GCS Hook</p></li>
<li><p>[AIRFLOW-2481] Fix flaky Kubernetes test</p></li>
<li><p>[AIRFLOW-2479] Improve doc FAQ section</p></li>
<li><p>[AIRFLOW-2485] Fix Incorrect logging for Qubole Sensor</p></li>
<li><p>[AIRFLOW-2486] Remove unnecessary slash after port</p></li>
<li><p>[AIRFLOW-2429] Make Airflow flake8 compliant</p></li>
<li><p>[AIRFLOW-2491] Resolve flask version conflict</p></li>
<li><p>[AIRFLOW-2484] Remove duplicate key in MySQL to GCS Op</p></li>
<li><p>[AIRFLOW-2458] Add cassandra-to-gcs operator</p></li>
<li><p>[AIRFLOW-2477] Improve time units for task duration and landing times charts for RBAC UI</p></li>
<li><p>[AIRFLOW-2474] Only import snakebite if using py2</p></li>
<li><p>[AIRFLOW-48] Parse connection uri querystring</p></li>
<li><p>[AIRFLOW-2467][AIRFLOW-2] Update import direct warn message to use the module name</p></li>
<li><p>[AIRFLOW-XXX] Fix order of companies</p></li>
<li><p>[AIRFLOW-2452] Document field_dict must be OrderedDict</p></li>
<li><p>[AIRFLOW-2420] Azure Data Lake Hook</p></li>
<li><p>[AIRFLOW-2213] Add Qubole check operator</p></li>
<li><p>[AIRFLOW-2465] Fix wrong module names in the doc</p></li>
<li><p>[AIRFLOW-1929] Modifying TriggerDagRunOperator to accept execution_date</p></li>
<li><p>[AIRFLOW-2460] Users can now use volume mounts and volumes</p></li>
<li><p>[AIRFLOW-2110][AIRFLOW-2122] Enhance Http Hook</p></li>
<li><p>[AIRFLOW-XXX] Updated contributors list</p></li>
<li><p>[AIRFLOW-2435] Add launch_type to ECSOperator to allow FARGATE</p></li>
<li><p>[AIRFLOW-2451] Remove extra slash (‘/’) char when using wildcard in gcs_to_gcs operator</p></li>
<li><p>[AIRFLOW-2461] Add support for cluster scaling on dataproc operator</p></li>
<li><p>[AIRFLOW-2376] Fix no hive section error</p></li>
<li><p>[AIRFLOW-2425] Add lineage support</p></li>
<li><p>[AIRFLOW-2430] Extend query batching to additional slow queries</p></li>
<li><p>[AIRFLOW-2453] Add default nil value for kubernetes/git_subpath</p></li>
<li><p>[AIRFLOW-2396] Add support for resources in kubernetes operator</p></li>
<li><p>[AIRFLOW-2169] Encode binary data with base64 before importing to BigQuery</p></li>
<li><p>[AIRFLOW-XXX] Add spotahome in user list</p></li>
<li><p>[AIRFLOW-2457] Update FAB version requirement</p></li>
<li><p>[AIRFLOW-2454][Airflow 2454] Support imagePullPolicy for k8s</p></li>
<li><p>[AIRFLOW-2450] update supported k8s versions to 1.9 and 1.10</p></li>
<li><p>[AIRFLOW-2333] Add Segment Hook and TrackEventOperator</p></li>
<li><p>[AIRFLOW-2442][AIRFLOW-2] Airflow run command leaves database connections open</p></li>
<li><p>[AIRFLOW-2016] assign template_fields for Dataproc Workflow Template sub-classes, not base class</p></li>
<li><p>[AIRFLOW-2446] Add S3ToRedshiftTransfer into the “Integration” doc</p></li>
<li><p>[AIRFLOW-2449] Fix operators.py to run all test cases</p></li>
<li><p>[AIRFLOW-2424] Add dagrun status endpoint and increased k8s test coverage</p></li>
<li><p>[AIRFLOW-2441] Fix bugs in HiveCliHook.load_df</p></li>
<li><p>[AIRFLOW-2358][AIRFLOW-201804] Make the Kubernetes example optional</p></li>
<li><p>[AIRFLOW-2436] Remove cli_logger in initdb</p></li>
<li><p>[AIRFLOW-2444] Remove unused option(include_adhoc) in cli backfill command</p></li>
<li><p>[AIRFLOW-2447] Fix TestHiveMetastoreHook to run all cases</p></li>
<li><p>[AIRFLOW-2445] Allow templating in kubernetes operator</p></li>
<li><p>[AIRFLOW-2086][AIRFLOW-2393] Customize default dagrun number in tree view</p></li>
<li><p>[AIRFLOW-2437] Add PubNub to list of current Airflow users</p></li>
<li><p>[AIRFLOW-XXX] Add Quantopian to list of Airflow users</p></li>
<li><p>[AIRFLOW-1978] Add WinRM windows operator and hook</p></li>
<li><p>[AIRFLOW-2427] Add tests to named hive sensor</p></li>
<li><p>[AIRFLOW-2412] Fix HiveCliHook.load_file to address HIVE-10541</p></li>
<li><p>[AIRFLOW-2431] Add the navigation bar color parameter for RBAC UI</p></li>
<li><p>[AIRFLOW-2407] Resolve Python undefined names</p></li>
<li><p>[AIRFLOW-1952] Add the navigation bar color parameter</p></li>
<li><p>[AIRFLOW-2222] Implement GoogleCloudStorageHook.rewrite</p></li>
<li><p>[AIRFLOW-2426] Add Google Cloud Storage Hook tests</p></li>
<li><p>[AIRFLOW-2418] Bump Flask-WTF</p></li>
<li><p>[AIRFLOW-2417] Wait for pod is not running to end task</p></li>
<li><p>[AIRFLOW-1914] Add other charset support to email utils</p></li>
<li><p>[AIRFLOW-XXX] Update README.md with <a class="reference external" href="mailto:Craig&#37;&#52;&#48;Work">Craig<span>&#64;</span>Work</a></p></li>
<li><p>[AIRFLOW-1899] Fix Kubernetes tests</p></li>
<li><p>[AIRFLOW-1812] Update logging example</p></li>
<li><p>[AIRFLOW-2313] Add TTL parameters for Dataproc</p></li>
<li><p>[AIRFLOW-2411] add dataproc_jars to templated_fields</p></li>
<li><p>[AIRFLOW-XXX] Add Reddit to Airflow users</p></li>
<li><p>[AIRFLOW-XXX] Fix wrong table header in scheduler.rst</p></li>
<li><p>[AIRFLOW-2409] Supply password as a parameter</p></li>
<li><p>[AIRFLOW-2410][AIRFLOW-75] Set the timezone in the RBAC Web UI</p></li>
<li><p>[AIRFLOW-2394] default cmds and arguments in kubernetes operator</p></li>
<li><p>[AIRFLOW-2406] Add Apache2 License Shield to Readme</p></li>
<li><p>[AIRFLOW-2404] Add additional documentation for unqueued task</p></li>
<li><p>[AIRFLOW-2400] Add Ability to set Environment Variables for K8s</p></li>
<li><p>[AIRFLOW-XXX] Add Twine Labs as an Airflow user</p></li>
<li><p>[AIRFLOW-1853] Show only the desired number of runs in tree view</p></li>
<li><p>[AIRFLOW-2401] Document the use of variables in Jinja template</p></li>
<li><p>[AIRFLOW-2403] Fix License Headers</p></li>
<li><p>[AIRFLOW-1313] Fix license header</p></li>
<li><p>[AIRFLOW-2398] Add BounceX to list of current Airflow users</p></li>
<li><p>[AIRFLOW-2363] Fix return type bug in TaskHandler</p></li>
<li><p>[AIRFLOW-2389] Create a pinot db api hook</p></li>
<li><p>[AIRFLOW-2390] Resolve FlaskWTFDeprecationWarning</p></li>
<li><p>[AIRFLOW-1933] Fix some typos</p></li>
<li><p>[AIRFLOW-1960] Add support for secrets in kubernetes operator</p></li>
<li><p>[AIRFLOW-1313] Add vertica_to_mysql operator</p></li>
<li><p>[AIRFLOW-1575] Add AWS Kinesis Firehose Hook for inserting batch records</p></li>
<li><p>[AIRFLOW-2266][AIRFLOW-2343] Remove google-cloud-dataflow dependency</p></li>
<li><p>[AIRFLOW-2370] Implement –use_random_password in create_user</p></li>
<li><p>[AIRFLOW-2348] Strip path prefix from the destination_object when source_object contains a wildcard[]</p></li>
<li><p>[AIRFLOW-2391] Fix to Flask 0.12.2</p></li>
<li><p>[AIRFLOW-2381] Fix the flaky ApiPasswordTests test</p></li>
<li><p>[AIRFLOW-2378] Add Groupon to list of current users</p></li>
<li><p>[AIRFLOW-2382] Fix wrong description for delimiter</p></li>
<li><p>[AIRFLOW-2380] Add support for environment variables in Spark submit operator.</p></li>
<li><p>[AIRFLOW-2377] Improve Sendgrid sender support</p></li>
<li><p>[AIRFLOW-2331] Support init action timeout on dataproc cluster create</p></li>
<li><p>[AIRFLOW-1835] Update docs: Variable file is json</p></li>
<li><p>[AIRFLOW-1781] Make search case-insensitive in LDAP group</p></li>
<li><p>[AIRFLOW-2042] Fix browser menu appearing over the autocomplete menu</p></li>
<li><p>[AIRFLOW-XXX] Remove wheelhouse files from travis not owned by travis</p></li>
<li><p>[AIRFLOW-2336] Use hmsclient in hive_hook</p></li>
<li><p>[AIRFLOW-2041] Correct Syntax in Python examples</p></li>
<li><p>[AIRFLOW-74] SubdagOperators can consume all celeryd worker processes</p></li>
<li><p>[AIRFLOW-2369] Fix gcs tests</p></li>
<li><p>[AIRFLOW-2365] Fix autocommit attribute check</p></li>
<li><p>[AIRFLOW-2068] MesosExecutor allows optional Docker image</p></li>
<li><p>[AIRFLOW-1652] Push DatabricksRunSubmitOperator metadata into XCOM</p></li>
<li><p>[AIRFLOW-2234] Enable insert_rows for PrestoHook</p></li>
<li><p>[AIRFLOW-2208][Airflow-22208] Link to same DagRun graph from TaskInstance view</p></li>
<li><p>[AIRFLOW-1153] Allow HiveOperators to take hiveconfs</p></li>
<li><p>[AIRFLOW-775] Fix autocommit settings with Jdbc hook</p></li>
<li><p>[AIRFLOW-2364] Warn when setting autocommit on a connection which does not support it</p></li>
<li><p>[AIRFLOW-2357] Add persistent volume for the logs</p></li>
<li><p>[AIRFLOW-766] Skip conn.commit() when in Auto-commit</p></li>
<li><p>[AIRFLOW-2351] Check for valid default_args start_date</p></li>
<li><p>[AIRFLOW-1433] Set default rbac to initdb</p></li>
<li><p>[AIRFLOW-2270] Handle removed tasks in backfill</p></li>
<li><p>[AIRFLOW-2344] Fix <code class="docutils literal notranslate"><span class="pre">connections</span> <span class="pre">-l</span></code> to work with pipe/redirect</p></li>
<li><p>[AIRFLOW-2300] Add S3 Select functionality to S3ToHiveTransfer</p></li>
<li><p>[AIRFLOW-1314] Cleanup the config</p></li>
<li><p>[AIRFLOW-1314] Polish some of the Kubernetes docs/config</p></li>
<li><p>[AIRFLOW-1314] Improve error handling</p></li>
<li><p>[AIRFLOW-1999] Add per-task GCP service account support</p></li>
<li><p>[AIRFLOW-1314] Rebasing against master</p></li>
<li><p>[AIRFLOW-1314] Small cleanup to address PR comments (#24)</p></li>
<li><p>[AIRFLOW-1314] Add executor_config and tests</p></li>
<li><p>[AIRFLOW-1314] Improve k8s support</p></li>
<li><p>[AIRFLOW-1314] Use VolumeClaim for transporting DAGs</p></li>
<li><p>[AIRFLOW-1314] Create integration testing environment</p></li>
<li><p>[AIRFLOW-1314] Git Mode to pull in DAGs for Kubernetes Executor</p></li>
<li><p>[AIRFLOW-1314] Add support for volume mounts &amp; Secrets in Kubernetes Executor</p></li>
<li><p>[AIRFLOW=1314] Basic Kubernetes Mode</p></li>
<li><p>[AIRFLOW-2326][AIRFLOW-2222] remove contrib.gcs_copy_operator</p></li>
<li><p>[AIRFLOW-2328] Fix empty GCS blob in S3ToGoogleCloudStorageOperator</p></li>
<li><p>[AIRFLOW-2350] Fix grammar in UPDATING.md</p></li>
<li><p>[AIRFLOW-2302] Fix documentation</p></li>
<li><p>[AIRFLOW-2345] pip is not used in this setup.py</p></li>
<li><p>[AIRFLOW-2347] Add Banco de Formaturas to Readme</p></li>
<li><p>[AIRFLOW-2346] Add Investorise as official user of Airflow</p></li>
<li><p>[AIRFLOW-2330] Do not append destination prefix if not given</p></li>
<li><p>[AIRFLOW-2240][DASK] Added TLS/SSL support for the dask-distributed scheduler.</p></li>
<li><p>[AIRFLOW-2309] Fix duration calculation on TaskFail</p></li>
<li><p>[AIRFLOW-2335] fix issue with jdk8 download for ci</p></li>
<li><p>[AIRFLOW-2184] Add druid_checker_operator</p></li>
<li><p>[AIRFLOW-2299] Add S3 Select functionality to S3FileTransformOperator</p></li>
<li><p>[AIRFLOW-2254] Put header as first row in unload</p></li>
<li><p>[AIRFLOW-610] Respect _cmd option in config before defaults</p></li>
<li><p>[AIRFLOW-2287] Fix incorrect ASF headers</p></li>
<li><p>[AIRFLOW-XXX] Add Zego as an Apache Airflow user</p></li>
<li><p>[AIRFLOW-952] fix save empty extra field in UI</p></li>
<li><p>[AIRFLOW-1325] Add ElasticSearch log handler and reader</p></li>
<li><p>[AIRFLOW-2301] Sync files of an S3 key with a GCS path</p></li>
<li><p>[AIRFLOW-2293] Fix S3FileTransformOperator to work with boto3</p></li>
<li><p>[AIRFLOW-3212][AIRFLOW-2314] Remove only leading slash in GCS path</p></li>
<li><p>[AIRFLOW-1509][AIRFLOW-442] SFTP Sensor</p></li>
<li><p>[AIRFLOW-2291] Add optional params to ML Engine</p></li>
<li><p>[AIRFLOW-1774] Allow consistent templating of arguments in MLEngineBatchPredictionOperator</p></li>
<li><p>[AIRFLOW-2302] Add missing operators and hooks</p></li>
<li><p>[AIRFLOW-2312] Docs Typo Correction: Corresponding</p></li>
<li><p>[AIRFLOW-1623] Trigger on_kill method in operators</p></li>
<li><p>[AIRFLOW-2162] When impersonating another user, pass env variables to sudo</p></li>
<li><p>[AIRFLOW-2304] Update quickstart doc to mention scheduler part</p></li>
<li><p>[AIRFLOW-1633] docker_operator needs a way to set shm_size</p></li>
<li><p>[AIRFLOW-1340] Add S3 to Redshift transfer operator</p></li>
<li><p>[AIRFLOW-2303] Lists the keys inside an S3 bucket</p></li>
<li><p>[AIRFLOW-2209] restore flask_login imports</p></li>
<li><p>[AIRFLOW-2306] Add Bonnier Broadcasting to list of current users</p></li>
<li><p>[AIRFLOW-2305][AIRFLOW-2027] Fix CI failure caused by []</p></li>
<li><p>[AIRFLOW-2281] Add support for Sendgrid categories</p></li>
<li><p>[AIRFLOW-2027] Only trigger sleep in scheduler after all files have parsed</p></li>
<li><p>[AIRFLOW-2256] SparkOperator: Add Client Standalone mode and retry mechanism</p></li>
<li><p>[AIRFLOW-2284] GCS to S3 operator</p></li>
<li><p>[AIRFLOW-2287] Update license notices</p></li>
<li><p>[AIRFLOW-2296] Add Cinimex DataLab to Readme</p></li>
<li><p>[AIRFLOW-2298] Add Kalibrr to who uses Airflow</p></li>
<li><p>[AIRFLOW-2292] Fix docstring for S3Hook.get_wildcard_key</p></li>
<li><p>[AIRFLOW-XXX] Update PR template</p></li>
<li><p>[AIRFLOW-XXX] Remove outdated migrations.sql</p></li>
<li><p>[AIRFLOW-2287] Add license header to docs/Makefile</p></li>
<li><p>[AIRFLOW-2286] Add tokopedia to the readme</p></li>
<li><p>[AIRFLOW-2273] Add Discord webhook operator/hook</p></li>
<li><p>[AIRFLOW-2282] Fix grammar in UPDATING.md</p></li>
<li><p>[AIRFLOW-2200] Add snowflake operator with tests</p></li>
<li><p>[AIRFLOW-2178] Add handling on SLA miss errors</p></li>
<li><p>[AIRFLOW-2169] Fix type ‘bytes’ is not JSON serializable in python3</p></li>
<li><p>[AIRFLOW-2215] Pass environment to subprocess.Popen in base_task_runner</p></li>
<li><p>[AIRFLOW-2253] Add Airflow CLI instrumentation</p></li>
<li><p>[AIRFLOW-2274] Fix Dataflow tests</p></li>
<li><p>[AIRFLOW-2269] Add Custom Ink as an Airflow user</p></li>
<li><p>[AIRFLOW-2259] Dataflow Hook Index out of range</p></li>
<li><p>[AIRFLOW-2233] Update updating.md to include the info of hdfs_sensors renaming</p></li>
<li><p>[AIRFLOW-2217] Add Slack webhook operator</p></li>
<li><p>[AIRFLOW-1729] improve DagBag time</p></li>
<li><p>[AIRFLOW-2264] Improve create_user cli help message</p></li>
<li><p>[AIRFLOW-2260][AIRFLOW-2260] SSHOperator add command template .sh files</p></li>
<li><p>[AIRFLOW-2261] Check config/env for remote base log folder</p></li>
<li><p>[AIRFLOW-2258] Allow import of Parquet-format files into BigQuery</p></li>
<li><p>[AIRFLOW-1430] Include INSTALL instructions to avoid GPL</p></li>
<li><p>[AIRFLOW-1430] Solve GPL dependency</p></li>
<li><p>[AIRFLOW-2251] Add Thinknear as an Airflow user</p></li>
<li><p>[AIRFLOW-2244] bugfix: remove legacy LongText code from models.py</p></li>
<li><p>[AIRFLOW-2247] Fix RedshiftToS3Transfer not to fail with ValueError</p></li>
<li><p>[AIRFLOW-2249] Add side-loading support for Zendesk Hook</p></li>
<li><p>[AIRFLOW-XXX] Add Qplum to Airflow users</p></li>
<li><p>[AIRFLOW-2228] Enhancements in ValueCheckOperator</p></li>
<li><p>[AIRFLOW-1206] Typos</p></li>
<li><p>[AIRFLOW-2060] Update pendulum version to 1.4.4</p></li>
<li><p>[AIRFLOW-2248] Fix wrong param name in RedshiftToS3Transfer doc</p></li>
<li><p>[AIRFLOW-1433][AIRFLOW-85] New Airflow Webserver UI with RBAC support</p></li>
<li><p>[AIRFLOW-1235] Fix webserver’s odd behaviour</p></li>
<li><p>[AIRFLOW-1460] Allow restoration of REMOVED TI’s</p></li>
<li><p>[AIRFLOW-2235] Fix wrong docstrings in two operators</p></li>
<li><p>[AIRFLOW-XXX] Fix chronological order for companies using Airflow</p></li>
<li><p>[AIRFLOW-2124] Upload Python file to a bucket for Dataproc</p></li>
<li><p>[AIRFLOW-2212] Fix ungenerated sensor API reference</p></li>
<li><p>[AIRFLOW-2226] Rename google_cloud_storage_default to google_cloud_default</p></li>
<li><p>[AIRFLOW-2211] Rename hdfs_sensors.py to hdfs_sensor.py for consistency</p></li>
<li><p>[AIRFLOW-2225] Update document to include DruidDbApiHook</p></li>
<li><p>[Airflow-2202] Add filter support in HiveMetastoreHook().max_partition()</p></li>
<li><p>[AIRFLOW-2220] Remove duplicate numeric list entry in security.rst</p></li>
<li><p>[AIRFLOW-XXX] Update tutorial documentation</p></li>
<li><p>[AIRFLOW-2215] Update celery task to preserve environment variables and improve logging on exception</p></li>
<li><p>[AIRFLOW-2185] Use state instead of query param</p></li>
<li><p>[AIRFLOW-2183] Refactor DruidHook to enable sql</p></li>
<li><p>[AIRFLOW-2203] Defer cycle detection</p></li>
<li><p>[AIRFLOW-2203] Remove Useless Commands.</p></li>
<li><p>[AIRFLOW-2203] Cache signature in apply_defaults</p></li>
<li><p>[AIRFLOW-2203] Speed up Operator Resources</p></li>
<li><p>[AIRFLOW-2203] Cache static rules (trigger/weight)</p></li>
<li><p>[AIRFLOW-2203] Store task ids as sets not lists</p></li>
<li><p>[AIRFLOW-2205] Remove unsupported args from JdbcHook doc</p></li>
<li><p>[AIRFLOW-2207] Fix flaky test that uses app.cached_app()</p></li>
<li><p>[AIRFLOW-2206] Remove unsupported args from JdbcOperator doc</p></li>
<li><p>[AIRFLOW-2140] Add Kubernetes scheduler to SparkSubmitOperator</p></li>
<li><p>[AIRFLOW-XXX] Add Xero to list of users</p></li>
<li><p>[AIRFLOW-2204] Fix webserver debug mode</p></li>
<li><p>[AIRFLOW-102] Fix test_complex_template always succeeds</p></li>
<li><p>[AIRFLOW-442] Add SFTPHook</p></li>
<li><p>[AIRFLOW-2169] Add schema to MySqlToGoogleCloudStorageOperator</p></li>
<li><p>[AIRFLOW-2184][AIRFLOW-2138] Google Cloud Storage allow wildcards</p></li>
<li><p>[AIRFLOW-1588] Cast Variable value to string</p></li>
<li><p>[AIRFLOW-2199] Fix invalid reference to logger</p></li>
<li><p>[AIRFLOW-2191] Change scheduler heartbeat logs from info to debug</p></li>
<li><p>[AIRFLOW-2106] SalesForce hook sandbox option</p></li>
<li><p>[AIRFLOW-2197] Silence hostname_callable config error message</p></li>
<li><p>[AIRFLOW-2150] Use lighter call in HiveMetastoreHook().max_partition()</p></li>
<li><p>[AIRFLOW-2186] Change the way logging is carried out in few ops</p></li>
<li><p>[AIRFLOW-2181] Convert password_auth and test_password_endpoints from DOS to UNIX</p></li>
<li><p>[AIRFLOW-2187] Fix Broken Travis CI due to AIRFLOW-2123</p></li>
<li><p>[AIRFLOW-2175] Check that filepath is not None</p></li>
<li><p>[AIRFLOW-2173] Don’t check task IDs for concurrency reached check</p></li>
<li><p>[AIRFLOW-2168] Remote logging for Azure Blob Storage</p></li>
<li><p>[AIRFLOW-XXX] Add DocuTAP to list of users</p></li>
<li><p>[AIRFLOW-2176] Change the way logging is carried out in BQ Get Data Operator</p></li>
<li><p>[AIRFLOW-2177] Add mock test for GCS Download op</p></li>
<li><p>[AIRFLOW-2123] Install CI dependencies from setup.py</p></li>
<li><p>[AIRFLOW-2129] Presto hook calls _parse_exception_message but defines _get_pretty_exception_message</p></li>
<li><p>[AIRFLOW-2174] Fix typos and wrongly rendered documents</p></li>
<li><p>[AIRFLOW-2171] Store delegated credentials</p></li>
<li><p>[AIRFLOW-2166] Restore BQ run_query dialect param</p></li>
<li><p>[AIRFLOW-2163] Add HBC Digital to users of Airflow</p></li>
<li><p>[AIRFLOW-2065] Fix race-conditions when creating loggers</p></li>
<li><p>[AIRFLOW-2147] Plugin manager: added ‘sensors’ attribute</p></li>
<li><p>[AIRFLOW-2059] taskinstance query is awful, un-indexed, and does not scale</p></li>
<li><p>[AIRFLOW-2159] Fix a few typos in salesforce_hook</p></li>
<li><p>[AIRFLOW-2132] Add step to initialize database</p></li>
<li><p>[AIRFLOW-2160] Fix bad rowid deserialization</p></li>
<li><p>[AIRFLOW-2161] Add Vevo to list of companies using Airflow</p></li>
<li><p>[AIRFLOW-2149] Add link to apache Beam documentation to create self executing Jar</p></li>
<li><p>[AIRFLOW-2151] Allow getting the session from AwsHook</p></li>
<li><p>[AIRFLOW-2097] tz referenced before assignment</p></li>
<li><p>[AIRFLOW-2152] Add Multiply to list of companies using Airflow</p></li>
<li><p>[AIRFLOW-1551] Add operator to trigger Jenkins job</p></li>
<li><p>[AIRFLOW-2034] Fix mixup between %s and {} when using str.format</p></li>
<li><p>[AIRFLOW-2102] Add custom_args to Sendgrid personalizations</p></li>
<li><p>[AIRFLOW-1035][AIRFLOW-1053] import unicode_literals to parse Unicode in HQL</p></li>
<li><p>[AIRFLOW-2127] Keep loggers during DB migrations</p></li>
<li><p>[AIRFLOW-2146] Resolve issues with BQ using DbApiHook methods</p></li>
<li><p>[AIRFLOW-2087] Scheduler Report shows incorrect Total task number</p></li>
<li><p>[AIRFLOW-2139] Remove unnecessary boilerplate to get DataFrame using pandas_gbq</p></li>
<li><p>[AIRFLOW-2125] Using binary package psycopg2-binary</p></li>
<li><p>[AIRFLOW-2142] Include message on mkdir failure</p></li>
<li><p>[AIRFLOW-1615] SSHHook: use port specified by Connection</p></li>
<li><p>[AIRFLOW-2122] Handle boolean values in sshHook</p></li>
<li><p>[AIRFLOW-XXX] Add Tile to the list of users</p></li>
<li><p>[AIRFLOW-2130] Add missing Operators to API Reference docs</p></li>
<li><p>[AIRFLOW-XXX] Add timeout units (seconds)</p></li>
<li><p>[AIRFLOW-2134] Add Alan to the list of companies that use Airflow</p></li>
<li><p>[AIRFLOW-2133] Remove references to GitHub issues in CONTRIBUTING</p></li>
<li><p>[AIRFLOW-2131] Remove confusing AirflowImport docs</p></li>
<li><p>[AIRFLOW-1852] Allow hostname to be overridable.</p></li>
<li><p>[AIRFLOW-2126] Add Bluecore to active users</p></li>
<li><p>[AIRFLOW-1618] Add feature to create GCS bucket</p></li>
<li><p>[AIRFLOW-2108] Fix log indentation in BashOperator</p></li>
<li><p>[AIRFLOW-2115] Fix doc links to PythonHosted</p></li>
<li><p>[AIRFLOW-XXX] Add contributor from Easy company</p></li>
<li><p>[AIRFLOW-1882] Add ignoreUnknownValues option to gcs_to_bq operator</p></li>
<li><p>[AIRFLOW-2089] Add on kill for SparkSubmit in Standalone Cluster</p></li>
<li><p>[AIRFLOW-2113] Address missing DagRun callbacks Given that the handle_callback method belongs to the DAG object, we are able to get the list of task directly with get_task and reduce the communication with the database, making Airflow more lightweight.</p></li>
<li><p>[AIRFLOW-2112] Fix svg width for Recent Tasks on UI.</p></li>
<li><p>[AIRFLOW-2116] Set CI Cloudant version to &lt;2.0</p></li>
<li><p>[AIRFLOW-XXX] Add PMC to list of companies using Airflow</p></li>
<li><p>[AIRFLOW-2100] Fix Broken Documentation Links</p></li>
<li><p>[AIRFLOW-1404] Add ‘flatten_results’ &amp; ‘maximum_bytes_billed’ to BQ Operator</p></li>
<li><p>[AIRFLOW-800] Initialize valid Google BigQuery Connection</p></li>
<li><p>[AIRFLOW-1319] Fix misleading SparkSubmitOperator and SparkSubmitHook docstring</p></li>
<li><p>[AIRFLOW-1983] Parse environment parameter as template</p></li>
<li><p>[AIRFLOW-2095] Add operator to create External BigQuery Table</p></li>
<li><p>[AIRFLOW-2085] Add SparkJdbc operator</p></li>
<li><p>[AIRFLOW-1002] Add ability to clean all dependencies of removed DAG</p></li>
<li><p>[AIRFLOW-2094] Jinjafied project_id, region &amp; zone in DataProc{*} Operators</p></li>
<li><p>[AIRFLOW-2092] Fixed incorrect parameter in docstring for FTPHook</p></li>
<li><p>[AIRFLOW-XXX] Add SocialCops to Airflow users</p></li>
<li><p>[AIRFLOW-2088] Fix duplicate keys in MySQL to GCS Helper function</p></li>
<li><p>[AIRFLOW-2091] Fix incorrect docstring parameter in BigQuery Hook</p></li>
<li><p>[AIRFLOW-2090] Fix typo in DataStore Hook</p></li>
<li><p>[AIRFLOW-1157] Fix missing pools crashing the scheduler</p></li>
<li><p>[AIRFLOW-713] Jinjafy {EmrCreateJobFlow,EmrAddSteps}Operator attributes</p></li>
<li><p>[AIRFLOW-2083] Docs: Use “its” instead of “it’s” where appropriate</p></li>
<li><p>[AIRFLOW-2066] Add operator to create empty BQ table</p></li>
<li><p>[AIRFLOW-XXX] add Karmic to list of companies</p></li>
<li><p>[AIRFLOW-2073] Make FileSensor fail when the file doesn’t exist</p></li>
<li><p>[AIRFLOW-2078] Improve task_stats and dag_stats performance</p></li>
<li><p>[AIRFLOW-2080] Use a log-out icon instead of a power button</p></li>
<li><p>[AIRFLOW-2077] Fetch all pages of list_objects_v2 response</p></li>
<li><p>[AIRFLOW-XXX] Add TM to list of companies</p></li>
<li><p>[AIRFLOW-1985] Impersonation fixes for using <code class="docutils literal notranslate"><span class="pre">run_as_user</span></code></p></li>
<li><p>[AIRFLOW-2018][AIRFLOW-2] Make Sensors backward compatible</p></li>
<li><p>[AIRFLOW-XXX] Fix typo in concepts doc (dag_md)</p></li>
<li><p>[AIRFLOW-2069] Allow Bytes to be uploaded to S3</p></li>
<li><p>[AIRFLOW-2074] Fix log var name in GHE auth</p></li>
<li><p>[AIRFLOW-1927] Convert naive datetimes for TaskInstances</p></li>
<li><p>[AIRFLOW-1760] Password auth for experimental API</p></li>
<li><p>[AIRFLOW-2038] Add missing kubernetes dependency for dev</p></li>
<li><p>[AIRFLOW-2040] Escape special chars in task instance logs URL</p></li>
<li><p>[AIRFLOW-1968][AIRFLOW-1520] Add role_arn and aws_account_id/aws_iam_role support back to aws hook</p></li>
<li><p>[AIRFLOW-2048] Fix task instance failure string formatting</p></li>
<li><p>[AIRFLOW-2046] Fix kerberos error to work with Python 3.x</p></li>
<li><p>[AIRFLOW-2063] Add missing docs for GCP</p></li>
<li><p>[AIRFLOW-XXX] Fix typo in docs</p></li>
<li><p>[AIRFLOW-1793] Use docker_url instead of invalid base_url</p></li>
<li><p>[AIRFLOW-2055] Elaborate on slightly ambiguous documentation</p></li>
<li><p>[AIRFLOW-2039] BigQueryOperator supports priority property</p></li>
<li><p>[AIRFLOW-2053] Fix quote character bug in BQ hook</p></li>
<li><p>[AIRFLOW-2057] Add Overstock to list of companies</p></li>
<li><p>[AIRFLOW-XXX] Add Plaid to Airflow users</p></li>
<li><p>[AIRFLOW-2044] Add SparkSubmitOperator to documentation</p></li>
<li><p>[AIRFLOW-2037] Add methods to get Hash values of a GCS object</p></li>
<li><p>[AIRFLOW-2050] Fix Travis permission problem</p></li>
<li><p>[AIRFLOW-2043] Add Intercom to list of companies</p></li>
<li><p>[AIRFLOW-2023] Add debug logging around number of queued files</p></li>
<li><p>[AIRFLOW-XXX] Add Pernod-ricard as an Airflow user</p></li>
<li><p>[AIRFLOW-1453] Add ‘steps’ into template_fields in EmrAddSteps</p></li>
<li><p>[AIRFLOW-2015] Add flag for interactive runs</p></li>
<li><p>[AIRFLOW-1895] Fix primary key integrity for mysql</p></li>
<li><p>[AIRFLOW-2030] Fix <code class="docutils literal notranslate"><span class="pre">KeyError:</span> <span class="pre">'i'</span></code> in DbApiHook for insert</p></li>
<li><p>[AIRFLOW-1943] Add External BigQuery Table feature</p></li>
<li><p>[AIRFLOW-2033] Add Google Cloud Storage List Operator</p></li>
<li><p>[AIRFLOW-2006] Add local log catching to kubernetes operator</p></li>
<li><p>[AIRFLOW-2031] Add missing gcp_conn_id in the example in DataFlow docstrings</p></li>
<li><p>[AIRFLOW-2029] Fix AttributeError in BigQueryPandasConnector</p></li>
<li><p>[AIRFLOW-2028] Add JobTeaser to official users list</p></li>
<li><p>[AIRFLOW-2016] Add support for Dataproc Workflow Templates</p></li>
<li><p>[AIRFLOW-2025] Reduced Logging verbosity</p></li>
<li><p>[AIRFLOW-1267][AIRFLOW-1874] Add dialect parameter to BigQueryHook</p></li>
<li><p>[AIRFLOW-XXX] Fixed a typo</p></li>
<li><p>[AIRFLOW-XXX] Typo node to nodes</p></li>
<li><p>[AIRFLOW-2019] Update DataflowHook for updating Streaming type job</p></li>
<li><p>[AIRFLOW-2017][Airflow 2017] adding query output to PostgresOperator</p></li>
<li><p>[AIRFLOW-1889] Split sensors into separate files</p></li>
<li><p>[AIRFLOW-1950] Optionally pass xcom_pull task_ids</p></li>
<li><p>[AIRFLOW-1755] Allow mount below root</p></li>
<li><p>[AIRFLOW-511][Airflow 511] add success/failure callbacks on dag level</p></li>
<li><p>[AIRFLOW-192] Add weight_rule param to BaseOperator</p></li>
<li><p>[AIRFLOW-2008] Use callable for Python column defaults</p></li>
<li><p>[AIRFLOW-1984] Fix to AWS Batch operator</p></li>
<li><p>[AIRFLOW-2000] Support non-main dataflow job class</p></li>
<li><p>[AIRFLOW-2003] Use flask-caching instead of flask-cache</p></li>
<li><p>[AIRFLOW-2002] Do not swallow exception on logging import</p></li>
<li><p>[AIRFLOW-2004] Import flash from flask not flask.login</p></li>
<li><p>[AIRFLOW-1997] Fix GCP operator doc strings</p></li>
<li><p>[AIRFLOW-1996] Update DataflowHook wait_for_done for Streaming type job</p></li>
<li><p>[AIRFLOW-1995][Airflow 1995] add on_kill method to SqoopOperator</p></li>
<li><p>[AIRFLOW-1770] Allow HiveOperator to take in a file</p></li>
<li><p>[AIRFLOW-1994] Change background color of Scheduled state Task Instances</p></li>
<li><p>[AIRFLOW-1436][AIRFLOW-1475] EmrJobFlowSensor considers Cancelled step as Successful</p></li>
<li><p>[AIRFLOW-1517] Kubernetes operator PR fixes</p></li>
<li><p>[AIRFLOW-1517] Addressed PR comments</p></li>
<li><p>[AIRFLOW-1517] Started documentation of k8s operator</p></li>
<li><p>[AIRFLOW-1517] Restore authorship of resources</p></li>
<li><p>[AIRFLOW-1517] Remove authorship of resources</p></li>
<li><p>[AIRFLOW-1517] Add minikube for kubernetes integration tests</p></li>
<li><p>[AIRFLOW-1517] Restore authorship of resources</p></li>
<li><p>[AIRFLOW-1517] fixed license issues</p></li>
<li><p>[AIRFLOW-1517] Created more accurate failures for kube cluster issues</p></li>
<li><p>[AIRFLOW-1517] Remove authorship of resources</p></li>
<li><p>[AIRFLOW-1517] Add minikube for kubernetes integration tests</p></li>
<li><p>[AIRFLOW-1988] Change BG color of None state TIs</p></li>
<li><p>[AIRFLOW-790] Clean up TaskInstances without DagRuns</p></li>
<li><p>[AIRFLOW-1949] Fix var upload, str() produces “b’…’” which is not json</p></li>
<li><p>[AIRFLOW-1930] Convert func.now() to timezone.utcnow()</p></li>
<li><p>[AIRFLOW-1688] Support load.time_partitioning in bigquery_hook</p></li>
<li><p>[AIRFLOW-1975] Make TriggerDagRunOperator callback optional</p></li>
<li><p>[AIRFLOW-1480] Render template attributes for ExternalTaskSensor fields</p></li>
<li><p>[AIRFLOW-1958] Add kwargs to send_email</p></li>
<li><p>[AIRFLOW-1976] Fix for missing log/logger attribute FileProcessHandler</p></li>
<li><p>[AIRFLOW-1982] Fix Executor event log formatting</p></li>
<li><p>[AIRFLOW-1971] Propagate hive config on impersonation</p></li>
<li><p>[AIRFLOW-1969] Always use HTTPS URIs for Google OAuth2</p></li>
<li><p>[AIRFLOW-1954] Add DataFlowTemplateOperator</p></li>
<li><p>[AIRFLOW-1963] Add config for HiveOperator mapred_queue</p></li>
<li><p>[AIRFLOW-1946][AIRFLOW-1855] Create a BigQuery Get Data Operator</p></li>
<li><p>[AIRFLOW-1953] Add labels to dataflow operators</p></li>
<li><p>[AIRFLOW-1967] Update celery to 4.0.2</p></li>
<li><p>[AIRFLOW-1964] Add Upsight to list of Airflow users</p></li>
<li><p>[AIRFLOW-XXX] Changelog for 1.9.0</p></li>
<li><p>[AIRFLOW-1470] Implement BashSensor operator</p></li>
<li><p>[AIRFLOW-XXX] Pin sqlalchemy dependency</p></li>
<li><p>[AIRFLOW-1955] Do not reference unassigned variable</p></li>
<li><p>[AIRFLOW-1957] Add contributor to BalanceHero in Readme</p></li>
<li><p>[AIRFLOW-1517] Restore authorship of secrets and init container</p></li>
<li><p>[AIRFLOW-1517] Remove authorship of secrets and init container</p></li>
<li><p>[AIRFLOW-1935] Add BalanceHero to readme</p></li>
<li><p>[AIRFLOW-1939] add astronomer contributors</p></li>
<li><p>[AIRFLOW-1517] Kubernetes Operator</p></li>
<li><p>[AIRFLOW-1928] Fix &#64;once with catchup=False</p></li>
<li><p>[AIRFLOW-1937] Speed up scheduling by committing in batch</p></li>
<li><p>[AIRFLOW-1821] Enhance default logging config by removing extra loggers</p></li>
<li><p>[AIRFLOW-1904] Correct DAG fileloc to the right filepath</p></li>
<li><p>[AIRFLOW-1909] Update docs with supported versions of MySQL server</p></li>
<li><p>[AIRFLOW-1915] Relax flask-wtf dependency specification</p></li>
<li><p>[AIRFLOW-1920] Update CONTRIBUTING.md to reflect enforced linting rules</p></li>
<li><p>[AIRFLOW-1942] Update Sphinx docs to remove deprecated import structure</p></li>
<li><p>[AIRFLOW-1846][AIRFLOW-1697] Hide Ad Hoc Query behind secure_mode config</p></li>
<li><p>[AIRFLOW-1948] Include details for on_kill failure</p></li>
<li><p>[AIRFLOW-1938] Clean up unused exception</p></li>
<li><p>[AIRFLOW-1932] Add GCP Pub/Sub Pull and Ack</p></li>
<li><p>[AIRFLOW-XXX] Purge coveralls</p></li>
<li><p>[AIRFLOW-XXX] Remove unused coveralls token</p></li>
<li><p>[AIRFLOW-1938] Remove tag version check in setup.py</p></li>
<li><p>[AIRFLOW-1916] Don’t upload logs to remote from <code class="docutils literal notranslate"><span class="pre">run</span> <span class="pre">--raw</span></code></p></li>
<li><p>[AIRFLOW-XXX] Fix failing PubSub tests on Python3</p></li>
<li><p>[AIRFLOW-XXX] Upgrade to Python 3.5 and disable dask tests</p></li>
<li><p>[AIRFLOW-1913] Add new GCP PubSub operators</p></li>
<li><p>[AIRFLOW-1525] Fix minor LICENSE and NOTICE issues</p></li>
<li><p>[AIRFLOW-1687] fix fernet error without encryption</p></li>
<li><p>[AIRFLOW-1912] airflow.processor should not propagate logging</p></li>
<li><p>[AIRFLOW-1911] Rename celeryd_concurrency</p></li>
<li><p>[AIRFLOW-1885] Fix IndexError in ready_prefix_on_cmdline</p></li>
<li><p>[AIRFLOW-1854] Improve Spark Submit operator for standalone cluster mode</p></li>
<li><p>[AIRFLOW-1908] Fix celery broker options config load</p></li>
<li><p>[AIRFLOW-1907] Pass max_ingestion_time to Druid hook</p></li>
<li><p>[AIRFLOW-1909] Add away to list of users</p></li>
<li><p>[AIRFLOW-1893][AIRFLOW-1901] Propagate PYTHONPATH when using impersonation</p></li>
<li><p>[AIRFLOW-1892] Modify BQ hook to extract data filtered by column</p></li>
<li><p>[AIRFLOW-1829] Support for schema updates in query jobs</p></li>
<li><p>[AIRFLOW-1840] Make celery configuration congruent with Celery 4</p></li>
<li><p>[AIRFLOW-1878] Fix stderr/stdout redirection for tasks</p></li>
<li><p>[AIRFLOW-1897][AIRFLOW-1873] Task Logs for running instance not visible in WebUI</p></li>
<li><p>[AIRFLOW-1896] FIX bleach &lt;&gt; html5lib incompatibility</p></li>
<li><p>[AIRFLOW-1884][AIRFLOW-1059] Reset orphaned task state for external dagruns</p></li>
<li><p>[AIRFLOW-XXX] Fix typo in comment</p></li>
<li><p>[AIRFLOW-1869] Do not emit spurious warning on missing logs</p></li>
<li><p>[AIRFLOW-1888] Add AWS Redshift Cluster Sensor</p></li>
<li><p>[AIRFLOW-1887] Renamed endpoint url variable</p></li>
<li><p>[AIRFLOW-1873] Set TI.try_number to right value depending TI state</p></li>
<li><p>[AIRFLOW-1891] Fix non-ascii typo in default configuration template</p></li>
<li><p>[AIRFLOW-1879] Handle ti log entirely within ti</p></li>
<li><p>[AIRFLOW-1869] Write more error messages into gcs and file logs</p></li>
<li><p>[AIRFLOW-1876] Write subtask id to task log header</p></li>
<li><p>[AIRFLOW-1554] Fix wrong DagFileProcessor termination method call</p></li>
<li><p>[AIRFLOW-342] Do not use amqp, rpc as result backend</p></li>
<li><p>[AIRFLOW-966] Make celery broker_transport_options configurable</p></li>
<li><p>[AIRFLOW-1881] Make operator log in task log</p></li>
<li><p>[AIRFLOW-XXX] Added DataReply to the list of Airflow Users</p></li>
<li><p>[AIRFLOW-1883] Get File Size for objects in Google Cloud Storage</p></li>
<li><p>[AIRFLOW-1872] Set context for all handlers including parents</p></li>
<li><p>[AIRFLOW-1855][AIRFLOW-1866] Add GCS Copy Operator to copy multiple files</p></li>
<li><p>[AIRFLOW-1870] Enable flake8 tests</p></li>
<li><p>[AIRFLOW-1785] Enable Python 3 tests</p></li>
<li><p>[AIRFLOW-1850] Copy cmd before masking</p></li>
<li><p>[AIRFLOW-1665] Reconnect on database errors</p></li>
<li><p>[AIRFLOW-1559] Dispose SQLAlchemy engines on exit</p></li>
<li><p>[AIRFLOW-1559] Close file handles in subprocesses</p></li>
<li><p>[AIRFLOW-1559] Make database pooling optional</p></li>
<li><p>[AIRFLOW-1848][Airflow-1848] Fix DataFlowPythonOperator py_file extension doc comment</p></li>
<li><p>[AIRFLOW-1843] Add Google Cloud Storage Sensor with prefix</p></li>
<li><p>[AIRFLOW-1803] Time zone documentation</p></li>
<li><p>[AIRFLOW-1826] Update views to use timezone aware objects</p></li>
<li><p>[AIRFLOW-1827] Fix api endpoint date parsing</p></li>
<li><p>[AIRFLOW-1806] Use naive datetime when using cron</p></li>
<li><p>[AIRFLOW-1809] Update tests to use timezone aware objects</p></li>
<li><p>[AIRFLOW-1806] Use naive datetime for cron scheduling</p></li>
<li><p>[AIRFLOW-1807] Force use of time zone aware db fields</p></li>
<li><p>[AIRFLOW-1808] Convert all utcnow() to time zone aware</p></li>
<li><p>[AIRFLOW-1804] Add time zone configuration options</p></li>
<li><p>[AIRFLOW-1802] Convert database fields to timezone aware</p></li>
<li><p>[AIRFLOW-XXX] Add dask lock files to excludes</p></li>
<li><p>[AIRFLOW-1790] Add support for AWS Batch operator</p></li>
<li><p>[AIRFLOW-XXX] Update README.md</p></li>
<li><p>[AIRFLOW-1820] Remove timestamp from metric name</p></li>
<li><p>[AIRFLOW-1810] Remove unused mysql import in migrations.</p></li>
<li><p>[AIRFLOW-1838] Properly log collect_dags exception</p></li>
<li><p>[AIRFLOW-1842] Fixed Super class name for the gcs to gcs copy operator</p></li>
<li><p>[AIRFLOW-1845] Modal background now covers long or tall pages</p></li>
<li><p>[AIRFLOW-1229] Add link to Run Id, incl execution_date</p></li>
<li><p>[AIRFLOW-1842] Add gcs to gcs copy operator with renaming if required</p></li>
<li><p>[AIRFLOW-1841] change False to None in operator and hook</p></li>
<li><p>[AIRFLOW-1839] Fix more bugs in S3Hook boto -&gt; boto3 migration</p></li>
<li><p>[AIRFLOW-1830] Support multiple domains in Google authentication backend</p></li>
<li><p>[AIRFLOW-1831] Add driver-classpath spark submit</p></li>
<li><p>[AIRFLOW-1795] Correctly call S3Hook after migration to boto3</p></li>
<li><p>[AIRFLOW-1811] Fix render Druid operator</p></li>
<li><p>[AIRFLOW-1819] Fix slack operator unittest bug</p></li>
<li><p>[AIRFLOW-1805] Allow Slack token to be passed through connection</p></li>
<li><p>[AIRFLOW-1816] Add region param to Dataproc operators</p></li>
<li><p>[AIRFLOW-868] Add postgres_to_gcs operator and unittests</p></li>
<li><p>[AIRFLOW-1613] make mysql_to_gcs_operator py3 compatible</p></li>
<li><p>[AIRFLOW-1817] use boto3 for s3 dependency</p></li>
<li><p>[AIRFLOW-1813] Bug SSH Operator empty buffer</p></li>
<li><p>[AIRFLOW-1801][AIRFLOW-288] Url encode execution dates</p></li>
<li><p>[AIRFLOW-1563] Catch OSError while symlinking the latest log directory</p></li>
<li><p>[AIRFLOW-1794] Remove uses of Exception.message for Python 3</p></li>
<li><p>[AIRFLOW-1799] Fix logging line which raises errors</p></li>
<li><p>[AIRFLOW-1102] Upgrade gunicorn &gt;=19.4.0</p></li>
<li><p>[AIRFLOW-1756] Fix S3TaskHandler to work with Boto3-based S3Hook</p></li>
<li><p>[AIRFLOW-1797] S3Hook.load_string did not work on Python3</p></li>
<li><p>[AIRFLOW-646] Add docutils to setup_requires</p></li>
<li><p>[AIRFLOW-1792] Missing intervals DruidOperator</p></li>
<li><p>[AIRFLOW-1789][AIRFLOW-1712] Log SSHOperator stderr to log.warning</p></li>
<li><p>[AIRFLOW-1787] Fix task instance batch clear and set state bugs</p></li>
<li><p>[AIRFLOW-1780] Fix long output lines with unicode from hanging parent</p></li>
<li><p>[AIRFLOW-387] Close SQLAlchemy sessions properly</p></li>
<li><p>[AIRFLOW-1779] Add keepalive packets to ssh hook</p></li>
<li><p>[AIRFLOW-1669] Fix Docker and pin moto to 1.1.19</p></li>
<li><p>[AIRFLOW-71] Add support for private Docker images</p></li>
<li><p>[AIRFLOW-XXX] Give a clue what the ‘ds’ variable is</p></li>
<li><p>[AIRFLOW-XXX] Correct typos in the faq docs page</p></li>
<li><p>[AIRFLOW-1571] Add AWS Lambda Hook</p></li>
<li><p>[AIRFLOW-1675] Fix docstrings for API docs</p></li>
<li><p>[AIRFLOW-1712][AIRFLOW-756][AIRFLOW-751] Log SSHOperator output</p></li>
<li><p>[AIRFLOW-1776] Capture stdout and stderr for logging</p></li>
<li><p>[AIRFLOW-1765] Make experimental API securable without needing Kerberos.</p></li>
<li><p>[AIRFLOW-1764] The web interface should not use the experimental API</p></li>
<li><p>[AIRFLOW-1771] Rename heartbeat to avoid confusion</p></li>
<li><p>[AIRFLOW-1769] Add support for templates in VirtualenvOperator</p></li>
<li><p>[AIRFLOW-1763] Fix S3TaskHandler unit tests</p></li>
<li><p>[AIRFLOW-1315] Add Qubole File &amp; Partition Sensors</p></li>
<li><p>[AIRFLOW-1018] Make processor use logging framework</p></li>
<li><p>[AIRFLOW-1695] Add RedshiftHook using boto3</p></li>
<li><p>[AIRFLOW-1706] Fix query error for MSSQL backend</p></li>
<li><p>[AIRFLOW-1711] Use ldap3 dict for group membership</p></li>
<li><p>[AIRFLOW-1723] Make sendgrid a plugin</p></li>
<li><p>[AIRFLOW-1757] Add missing options to SparkSubmitOperator</p></li>
<li><p>[AIRFLOW-1734][Airflow 1734] Sqoop hook/operator enhancements</p></li>
<li><p>[AIRFLOW-1761] Fix type in scheduler.rst</p></li>
<li><p>[AIRFLOW-1731] Set pythonpath for logging</p></li>
<li><p>[AIRFLOW-1641] Handle executor events in the scheduler</p></li>
<li><p>[AIRFLOW-1744] Make sure max_tries can be set</p></li>
<li><p>[AIRFLOW-1732] Improve dataflow hook logging</p></li>
<li><p>[AIRFLOW-1736] Add HotelQuickly to Who Uses Airflow</p></li>
<li><p>[AIRFLOW-1657] Handle failing qubole operator</p></li>
<li><p>[AIRFLOW-1677] Fix typo in example_qubole_operator</p></li>
<li><p>[AIRFLOW-926] Fix JDBC Hook</p></li>
<li><p>[AIRFLOW-1520] Boto3 S3Hook, S3Log</p></li>
<li><p>[AIRFLOW-1716] Fix multiple __init__ def in SimpleDag</p></li>
<li><p>[AIRFLOW-XXX] Fix DateTime in Tree View</p></li>
<li><p>[AIRFLOW-1719] Fix small typo</p></li>
<li><p>[AIRFLOW-1432] Charts label for Y axis not visible</p></li>
<li><p>[AIRFLOW-1743] Verify ldap filters correctly</p></li>
<li><p>[AIRFLOW-1745] Restore default signal disposition</p></li>
<li><p>[AIRFLOW-1741] Correctly hide second chart on task duration page</p></li>
<li><p>[AIRFLOW-1728] Add networkUri, subnet, tags to Dataproc operator</p></li>
<li><p>[AIRFLOW-1726] Add copy_expert psycopg2 method to PostgresHook</p></li>
<li><p>[AIRFLOW-1330] Add conn_type argument to CLI when adding connection</p></li>
<li><p>[AIRFLOW-1698] Remove SCHEDULER_RUNS env var in systemd</p></li>
<li><p>[AIRFLOW-1694] Stop using itertools.izip</p></li>
<li><p>[AIRFLOW-1692] Change test_views filename to support Windows</p></li>
<li><p>[AIRFLOW-1722] Fix typo in scheduler autorestart output filename</p></li>
<li><p>[AIRFLOW-1723] Support sendgrid in email backend</p></li>
<li><p>[AIRFLOW-1718] Set num_retries on Dataproc job request execution</p></li>
<li><p>[AIRFLOW-1727] Add unit tests for DataProcHook</p></li>
<li><p>[AIRFLOW-1631] Fix timing issue in unit test</p></li>
<li><p>[AIRFLOW-1631] Fix local executor unbound parallelism</p></li>
<li><p>[AIRFLOW-1724] Add Fundera to Who uses Airflow?</p></li>
<li><p>[AIRFLOW-1683] Cancel BigQuery job on timeout.</p></li>
<li><p>[AIRFLOW-1714] Fix misspelling: s/separate/separate/</p></li>
<li><p>[AIRFLOW-1681] Add batch clear in task instance view</p></li>
<li><p>[AIRFLOW-1696] Fix dataproc version label error</p></li>
<li><p>[AIRFLOW-1613] Handle binary field in MySqlToGoogleCloudStorageOperator</p></li>
<li><p>[AIRFLOW-1697] Mode to disable charts endpoint</p></li>
<li><p>[AIRFLOW-1691] Add better Google cloud logging documentation</p></li>
<li><p>[AIRFLOW-1690] Add detail to gcs error messages</p></li>
<li><p>[AIRFLOW-1682] Make S3TaskHandler write to S3 on close</p></li>
<li><p>[AIRFLOW-1634] Adds task_concurrency feature</p></li>
<li><p>[AIRFLOW-1676] Make GCSTaskHandler write to GCS on close</p></li>
<li><p>[AIRFLOW-1678] Fix erroneously repeated word in function docstrings</p></li>
<li><p>[AIRFLOW-1323] Made Dataproc operator parameter names consistent</p></li>
<li><p>[AIRFLOW-1590] fix unused module and variable</p></li>
<li><p>[AIRFLOW-1671] Add &#64;apply_defaults back to gcs download operator</p></li>
<li><p>[AIRFLOW-988] Fix repeating SLA miss callbacks</p></li>
<li><p>[AIRFLOW-1611] Customize logging</p></li>
<li><p>[AIRFLOW-1668] Expose keepalives_idle for Postgres connections</p></li>
<li><p>[AIRFLOW-1658] Kill Druid task on timeout</p></li>
<li><p>[AIRFLOW-1669][AIRFLOW-1368] Fix Docker import</p></li>
<li><p>[AIRFLOW-891] Make webserver clock include date</p></li>
<li><p>[AIRFLOW-1560] Add AWS DynamoDB hook and operator for inserting batch items</p></li>
<li><p>[AIRFLOW-1654] Show tooltips for link icons in DAGs view</p></li>
<li><p>[AIRFLOW-1660] Change webpage width to full-width</p></li>
<li><p>[AIRFLOW-1664] write file as binary instead of str</p></li>
<li><p>[AIRFLOW-1659] Fix invalid obj attribute bug in file_task_handler.py</p></li>
<li><p>[AIRFLOW-1635] Allow creating GCP connection without requiring a JSON file</p></li>
<li><p>[AIRFLOW-1650] Fix custom celery config loading</p></li>
<li><p>[AIRFLOW-1647] Fix Spark-sql hook</p></li>
<li><p>[AIRFLOW-1587] Fix CeleryExecutor import error</p></li>
<li><p>[Airflow-1640][AIRFLOW-1640] Add qubole default connection</p></li>
<li><p>[AIRFLOW-1576] Added region param to Dataproc{*}Operators</p></li>
<li><p>[AIRFLOW-1643] Add healthjump to officially using list</p></li>
<li><p>[AIRFLOW-1626] Add Azri Solutions to Airflow users</p></li>
<li><p>[AIRFLOW-1636] Add AWS and EMR connection type</p></li>
<li><p>[AIRFLOW-1527] Refactor celery config</p></li>
<li><p>[AIRFLOW-1639] Fix Fernet error handling</p></li>
<li><p>[AIRFLOW-1637] Fix Travis CI build status link</p></li>
<li><p>[AIRFLOW-1628] Fix docstring of sqlsensor</p></li>
<li><p>[AIRFLOW-1331] add SparkSubmitOperator option</p></li>
<li><p>[AIRFLOW-1627] Only query pool in SubDAG init when necessary</p></li>
<li><p>[AIRFLOW-1629] Make extra a textarea in edit connections form</p></li>
<li><p>[AIRFLOW-1368] Automatically remove Docker container on exit</p></li>
<li><p>[AIRFLOW-289] Make Airflow timezone independent</p></li>
<li><p>[AIRFLOW-1356] Add <code class="docutils literal notranslate"><span class="pre">--celery_hostname</span></code> to <code class="docutils literal notranslate"><span class="pre">airflow</span> <span class="pre">worker</span></code></p></li>
<li><p>[AIRFLOW-1247] Fix ignore_all_dependencies argument ignored</p></li>
<li><p>[AIRFLOW-1621] Add tests for server side paging</p></li>
<li><p>[AIRFLOW-1591] Avoid attribute error when rendering logging filename</p></li>
<li><p>[AIRFLOW-1031] Replace hard-code to DagRun.ID_PREFIX</p></li>
<li><p>[AIRFLOW-1604] Rename logger to log</p></li>
<li><p>[AIRFLOW-1512] Add PythonVirtualenvOperator</p></li>
<li><p>[AIRFLOW-1617] Fix XSS vulnerability in Variable endpoint</p></li>
<li><p>[AIRFLOW-1497] Reset hidden fields when changing connection type</p></li>
<li><p>[AIRFLOW-1619] Add poll_sleep parameter to GCP dataflow operator</p></li>
<li><p>[AIRFLOW-XXX] Remove landscape.io config</p></li>
<li><p>[AIRFLOW-XXX] Remove non working service badges</p></li>
<li><p>[AIRFLOW-1177] Fix Variable.setdefault w/existing JSON</p></li>
<li><p>[AIRFLOW-1600] Fix exception handling in get_fernet</p></li>
<li><p>[AIRFLOW-1614] Replace inspect.stack() with sys._getframe()</p></li>
<li><p>[AIRFLOW-1519] Add server side paging in DAGs list</p></li>
<li><p>[AIRFLOW-1309] Allow hive_to_druid to take tblproperties</p></li>
<li><p>[AIRFLOW-1613] Make MySqlToGoogleCloudStorageOperator compatible with python3</p></li>
<li><p>[AIRFLOW-1603] add PAYMILL to companies list</p></li>
<li><p>[AIRFLOW-1609] Fix gitignore to ignore all venvs</p></li>
<li><p>[AIRFLOW-1601] Add configurable task cleanup time</p></li>
</ul>
</div>
</div>
<div class="section" id="airflow-1-9-0-2018-01-02">
<h2><a class="toc-backref" href="#id184">Airflow 1.9.0 (2018-01-02)</a><a class="headerlink" href="#airflow-1-9-0-2018-01-02" title="Permalink to this headline"></a></h2>
<div class="section" id="id141">
<h3>Significant Changes<a class="headerlink" href="#id141" title="Permalink to this headline"></a></h3>
<div class="section" id="ssh-hook-updates-along-with-new-ssh-operator-sftp-operator">
<h4>SSH Hook updates, along with new SSH Operator &amp; SFTP Operator<a class="headerlink" href="#ssh-hook-updates-along-with-new-ssh-operator-sftp-operator" title="Permalink to this headline"></a></h4>
<p>SSH Hook now uses the Paramiko library to create an ssh client connection, instead of the sub-process based ssh command execution previously (&lt;1.9.0), so this is backward incompatible.</p>
<ul class="simple">
<li><p>update SSHHook constructor</p></li>
<li><p>use SSHOperator class in place of SSHExecuteOperator which is removed now. Refer to test_ssh_operator.py for usage info.</p></li>
<li><p>SFTPOperator is added to perform secure file transfer from server A to server B. Refer to test_sftp_operator.py for usage info.</p></li>
<li><p>No updates are required if you are using <code class="docutils literal notranslate"><span class="pre">ftpHook</span></code>, it will continue to work as is.</p></li>
</ul>
</div>
<div class="section" id="s3hook-switched-to-use-boto3">
<h4>S3Hook switched to use Boto3<a class="headerlink" href="#s3hook-switched-to-use-boto3" title="Permalink to this headline"></a></h4>
<p>The airflow.hooks.S3_hook.S3Hook has been switched to use boto3 instead of the older boto (a.k.a. boto2). This results in a few backwards incompatible changes to the following classes: S3Hook:</p>
<ul class="simple">
<li><p>the constructors no longer accepts <code class="docutils literal notranslate"><span class="pre">s3_conn_id</span></code>. It is now called <code class="docutils literal notranslate"><span class="pre">aws_conn_id</span></code>.</p></li>
<li><p>the default connection is now “aws_default” instead of “s3_default”</p></li>
<li><p>the return type of objects returned by <code class="docutils literal notranslate"><span class="pre">get_bucket</span></code> is now boto3.s3.Bucket</p></li>
<li><p>the return type of <code class="docutils literal notranslate"><span class="pre">get_key</span></code>, and <code class="docutils literal notranslate"><span class="pre">get_wildcard_key</span></code> is now an boto3.S3.Object.</p></li>
</ul>
<p>If you are using any of these in your DAGs and specify a connection ID you will need to update the parameter name for the connection to “aws_conn_id”: S3ToHiveTransfer, S3PrefixSensor, S3KeySensor, RedshiftToS3Transfer.</p>
</div>
<div class="section" id="logging-update">
<h4>Logging update<a class="headerlink" href="#logging-update" title="Permalink to this headline"></a></h4>
<p>The logging structure of Airflow has been rewritten to make configuration easier and the logging system more transparent.</p>
<div class="section" id="a-quick-recap-about-logging">
<h5>A quick recap about logging<a class="headerlink" href="#a-quick-recap-about-logging" title="Permalink to this headline"></a></h5>
<p>A logger is the entry point into the logging system. Each logger is a named bucket to which messages can be written for processing. A logger is configured to have a log level. This log level describes the severity of the messages that the logger will handle. Python defines the following log levels: DEBUG, INFO, WARNING, ERROR or CRITICAL.</p>
<p>Each message that is written to the logger is a Log Record. Each log record contains a log level indicating the severity of that specific message. A log record can also contain useful metadata that describes the event that is being logged. This can include details such as a stack trace or an error code.</p>
<p>When a message is given to the logger, the log level of the message is compared to the log level of the logger. If the log level of the message meets or exceeds the log level of the logger itself, the message will undergo further processing. If it doesn’t, the message will be ignored.</p>
<p>Once a logger has determined that a message needs to be processed, it is passed to a Handler. This configuration is now more flexible and can be easily be maintained in a single file.</p>
</div>
<div class="section" id="changes-in-airflow-logging">
<h5>Changes in Airflow Logging<a class="headerlink" href="#changes-in-airflow-logging" title="Permalink to this headline"></a></h5>
<p>Airflow’s logging mechanism has been refactored to use Python’s built-in <code class="docutils literal notranslate"><span class="pre">logging</span></code> module to perform logging of the application. By extending classes with the existing <code class="docutils literal notranslate"><span class="pre">LoggingMixin</span></code>, all the logging will go through a central logger. Also the <code class="docutils literal notranslate"><span class="pre">BaseHook</span></code> and <code class="docutils literal notranslate"><span class="pre">BaseOperator</span></code> already extend this class, so it is easily available to do logging.</p>
<p>The main benefit is easier configuration of the logging by setting a single centralized python file. Disclaimer; there is still some inline configuration, but this will be removed eventually. The new logging class is defined by setting the dotted classpath in your <code class="docutils literal notranslate"><span class="pre">~/airflow/airflow.cfg</span></code> file:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="c1"># Logging class</span>
<span class="c1"># Specify the class that will specify the logging configuration</span>
<span class="c1"># This class has to be on the python classpath</span>
<span class="n">logging_config_class</span> <span class="o">=</span> <span class="n">my</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">default_local_settings</span><span class="o">.</span><span class="n">LOGGING_CONFIG</span>
</pre></div>
</div>
<p>The logging configuration file needs to be on the <code class="docutils literal notranslate"><span class="pre">PYTHONPATH</span></code>, for example <code class="docutils literal notranslate"><span class="pre">$AIRFLOW_HOME/config</span></code>. This directory is loaded by default. Any directory may be added to the <code class="docutils literal notranslate"><span class="pre">PYTHONPATH</span></code>, this might be handy when the config is in another directory or a volume is mounted in case of Docker.</p>
<p>The config can be taken from <code class="docutils literal notranslate"><span class="pre">airflow/config_templates/airflow_local_settings.py</span></code> as a starting point. Copy the contents to <code class="docutils literal notranslate"><span class="pre">${AIRFLOW_HOME}/config/airflow_local_settings.py</span></code>, and alter the config as is preferred.</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="c1">#</span>
<span class="c1"># Licensed to the Apache Software Foundation (ASF) under one</span>
<span class="c1"># or more contributor license agreements. See the NOTICE file</span>
<span class="c1"># distributed with this work for additional information</span>
<span class="c1"># regarding copyright ownership. The ASF licenses this file</span>
<span class="c1"># to you under the Apache License, Version 2.0 (the</span>
<span class="c1"># &quot;License&quot;); you may not use this file except in compliance</span>
<span class="c1"># with the License. You may obtain a copy of the License at</span>
<span class="c1">#</span>
<span class="c1"># http://www.apache.org/licenses/LICENSE-2.0</span>
<span class="c1">#</span>
<span class="c1"># Unless required by applicable law or agreed to in writing,</span>
<span class="c1"># software distributed under the License is distributed on an</span>
<span class="c1"># &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</span>
<span class="c1"># KIND, either express or implied. See the License for the</span>
<span class="c1"># specific language governing permissions and limitations</span>
<span class="c1"># under the License.</span>
<span class="kn">import</span> <span class="nn">os</span>
<span class="kn">from</span> <span class="nn">airflow</span> <span class="kn">import</span> <span class="n">configuration</span> <span class="k">as</span> <span class="n">conf</span>
<span class="c1"># TODO: Logging format and level should be configured</span>
<span class="c1"># in this file instead of from airflow.cfg. Currently</span>
<span class="c1"># there are other log format and level configurations in</span>
<span class="c1"># settings.py and cli.py. Please see AIRFLOW-1455.</span>
<span class="n">LOG_LEVEL</span> <span class="o">=</span> <span class="n">conf</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">&#39;core&#39;</span><span class="p">,</span> <span class="s1">&#39;LOGGING_LEVEL&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span>
<span class="n">LOG_FORMAT</span> <span class="o">=</span> <span class="n">conf</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">&#39;core&#39;</span><span class="p">,</span> <span class="s1">&#39;log_format&#39;</span><span class="p">)</span>
<span class="n">BASE_LOG_FOLDER</span> <span class="o">=</span> <span class="n">conf</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">&#39;core&#39;</span><span class="p">,</span> <span class="s1">&#39;BASE_LOG_FOLDER&#39;</span><span class="p">)</span>
<span class="n">PROCESSOR_LOG_FOLDER</span> <span class="o">=</span> <span class="n">conf</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">&#39;scheduler&#39;</span><span class="p">,</span> <span class="s1">&#39;child_process_log_directory&#39;</span><span class="p">)</span>
<span class="n">FILENAME_TEMPLATE</span> <span class="o">=</span> <span class="s1">&#39;{{ ti.dag_id }}/{{ ti.task_id }}/{{ ts }}/{{ try_number }}.log&#39;</span>
<span class="n">PROCESSOR_FILENAME_TEMPLATE</span> <span class="o">=</span> <span class="s1">&#39;{{ filename }}.log&#39;</span>
<span class="n">DEFAULT_LOGGING_CONFIG</span> <span class="o">=</span> <span class="p">{</span>
<span class="s1">&#39;version&#39;</span><span class="p">:</span> <span class="mi">1</span><span class="p">,</span>
<span class="s1">&#39;disable_existing_loggers&#39;</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span>
<span class="s1">&#39;formatters&#39;</span><span class="p">:</span> <span class="p">{</span>
<span class="s1">&#39;airflow.task&#39;</span><span class="p">:</span> <span class="p">{</span>
<span class="s1">&#39;format&#39;</span><span class="p">:</span> <span class="n">LOG_FORMAT</span><span class="p">,</span>
<span class="p">},</span>
<span class="s1">&#39;airflow.processor&#39;</span><span class="p">:</span> <span class="p">{</span>
<span class="s1">&#39;format&#39;</span><span class="p">:</span> <span class="n">LOG_FORMAT</span><span class="p">,</span>
<span class="p">},</span>
<span class="p">},</span>
<span class="s1">&#39;handlers&#39;</span><span class="p">:</span> <span class="p">{</span>
<span class="s1">&#39;console&#39;</span><span class="p">:</span> <span class="p">{</span>
<span class="s1">&#39;class&#39;</span><span class="p">:</span> <span class="s1">&#39;logging.StreamHandler&#39;</span><span class="p">,</span>
<span class="s1">&#39;formatter&#39;</span><span class="p">:</span> <span class="s1">&#39;airflow.task&#39;</span><span class="p">,</span>
<span class="s1">&#39;stream&#39;</span><span class="p">:</span> <span class="s1">&#39;ext://sys.stdout&#39;</span>
<span class="p">},</span>
<span class="s1">&#39;file.task&#39;</span><span class="p">:</span> <span class="p">{</span>
<span class="s1">&#39;class&#39;</span><span class="p">:</span> <span class="s1">&#39;airflow.utils.log.file_task_handler.FileTaskHandler&#39;</span><span class="p">,</span>
<span class="s1">&#39;formatter&#39;</span><span class="p">:</span> <span class="s1">&#39;airflow.task&#39;</span><span class="p">,</span>
<span class="s1">&#39;base_log_folder&#39;</span><span class="p">:</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">expanduser</span><span class="p">(</span><span class="n">BASE_LOG_FOLDER</span><span class="p">),</span>
<span class="s1">&#39;filename_template&#39;</span><span class="p">:</span> <span class="n">FILENAME_TEMPLATE</span><span class="p">,</span>
<span class="p">},</span>
<span class="s1">&#39;file.processor&#39;</span><span class="p">:</span> <span class="p">{</span>
<span class="s1">&#39;class&#39;</span><span class="p">:</span> <span class="s1">&#39;airflow.utils.log.file_processor_handler.FileProcessorHandler&#39;</span><span class="p">,</span>
<span class="s1">&#39;formatter&#39;</span><span class="p">:</span> <span class="s1">&#39;airflow.processor&#39;</span><span class="p">,</span>
<span class="s1">&#39;base_log_folder&#39;</span><span class="p">:</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">expanduser</span><span class="p">(</span><span class="n">PROCESSOR_LOG_FOLDER</span><span class="p">),</span>
<span class="s1">&#39;filename_template&#39;</span><span class="p">:</span> <span class="n">PROCESSOR_FILENAME_TEMPLATE</span><span class="p">,</span>
<span class="p">}</span>
<span class="c1"># When using s3 or gcs, provide a customized LOGGING_CONFIG</span>
<span class="c1"># in airflow_local_settings within your PYTHONPATH, see UPDATING.md</span>
<span class="c1"># for details</span>
<span class="c1"># &#39;s3.task&#39;: {</span>
<span class="c1"># &#39;class&#39;: &#39;airflow.utils.log.s3_task_handler.S3TaskHandler&#39;,</span>
<span class="c1"># &#39;formatter&#39;: &#39;airflow.task&#39;,</span>
<span class="c1"># &#39;base_log_folder&#39;: os.path.expanduser(BASE_LOG_FOLDER),</span>
<span class="c1"># &#39;s3_log_folder&#39;: S3_LOG_FOLDER,</span>
<span class="c1"># &#39;filename_template&#39;: FILENAME_TEMPLATE,</span>
<span class="c1"># },</span>
<span class="c1"># &#39;gcs.task&#39;: {</span>
<span class="c1"># &#39;class&#39;: &#39;airflow.utils.log.gcs_task_handler.GCSTaskHandler&#39;,</span>
<span class="c1"># &#39;formatter&#39;: &#39;airflow.task&#39;,</span>
<span class="c1"># &#39;base_log_folder&#39;: os.path.expanduser(BASE_LOG_FOLDER),</span>
<span class="c1"># &#39;gcs_log_folder&#39;: GCS_LOG_FOLDER,</span>
<span class="c1"># &#39;filename_template&#39;: FILENAME_TEMPLATE,</span>
<span class="c1"># },</span>
<span class="p">},</span>
<span class="s1">&#39;loggers&#39;</span><span class="p">:</span> <span class="p">{</span>
<span class="s1">&#39;&#39;</span><span class="p">:</span> <span class="p">{</span>
<span class="s1">&#39;handlers&#39;</span><span class="p">:</span> <span class="p">[</span><span class="s1">&#39;console&#39;</span><span class="p">],</span>
<span class="s1">&#39;level&#39;</span><span class="p">:</span> <span class="n">LOG_LEVEL</span>
<span class="p">},</span>
<span class="s1">&#39;airflow&#39;</span><span class="p">:</span> <span class="p">{</span>
<span class="s1">&#39;handlers&#39;</span><span class="p">:</span> <span class="p">[</span><span class="s1">&#39;console&#39;</span><span class="p">],</span>
<span class="s1">&#39;level&#39;</span><span class="p">:</span> <span class="n">LOG_LEVEL</span><span class="p">,</span>
<span class="s1">&#39;propagate&#39;</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span>
<span class="p">},</span>
<span class="s1">&#39;airflow.processor&#39;</span><span class="p">:</span> <span class="p">{</span>
<span class="s1">&#39;handlers&#39;</span><span class="p">:</span> <span class="p">[</span><span class="s1">&#39;file.processor&#39;</span><span class="p">],</span>
<span class="s1">&#39;level&#39;</span><span class="p">:</span> <span class="n">LOG_LEVEL</span><span class="p">,</span>
<span class="s1">&#39;propagate&#39;</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span>
<span class="p">},</span>
<span class="s1">&#39;airflow.task&#39;</span><span class="p">:</span> <span class="p">{</span>
<span class="s1">&#39;handlers&#39;</span><span class="p">:</span> <span class="p">[</span><span class="s1">&#39;file.task&#39;</span><span class="p">],</span>
<span class="s1">&#39;level&#39;</span><span class="p">:</span> <span class="n">LOG_LEVEL</span><span class="p">,</span>
<span class="s1">&#39;propagate&#39;</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span>
<span class="p">},</span>
<span class="s1">&#39;airflow.task_runner&#39;</span><span class="p">:</span> <span class="p">{</span>
<span class="s1">&#39;handlers&#39;</span><span class="p">:</span> <span class="p">[</span><span class="s1">&#39;file.task&#39;</span><span class="p">],</span>
<span class="s1">&#39;level&#39;</span><span class="p">:</span> <span class="n">LOG_LEVEL</span><span class="p">,</span>
<span class="s1">&#39;propagate&#39;</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span>
<span class="p">},</span>
<span class="p">}</span>
<span class="p">}</span>
</pre></div>
</div>
<p>To customize the logging (for example, use logging rotate), define one or more of the logging handles that <a class="reference external" href="https://docs.python.org/3/library/logging.handlers.html">Python has to offer</a>. For more details about the Python logging, please refer to the <a class="reference external" href="https://docs.python.org/3/library/logging.html">official logging documentation</a>.</p>
<p>Furthermore, this change also simplifies logging within the DAG itself:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">root</span><span class="nd">@ae1bc863e815</span><span class="p">:</span><span class="o">/</span><span class="n">airflow</span><span class="c1"># python</span>
<span class="n">Python</span> <span class="mf">3.6.2</span> <span class="p">(</span><span class="n">default</span><span class="p">,</span> <span class="n">Sep</span> <span class="mi">13</span> <span class="mi">2017</span><span class="p">,</span> <span class="mi">14</span><span class="p">:</span><span class="mi">26</span><span class="p">:</span><span class="mi">54</span><span class="p">)</span>
<span class="p">[</span><span class="n">GCC</span> <span class="mf">4.9.2</span><span class="p">]</span> <span class="n">on</span> <span class="n">linux</span>
<span class="n">Type</span> <span class="s2">&quot;help&quot;</span><span class="p">,</span> <span class="s2">&quot;copyright&quot;</span><span class="p">,</span> <span class="s2">&quot;credits&quot;</span> <span class="ow">or</span> <span class="s2">&quot;license&quot;</span> <span class="k">for</span> <span class="n">more</span> <span class="n">information</span><span class="o">.</span>
<span class="o">&gt;&gt;&gt;</span> <span class="kn">from</span> <span class="nn">airflow.settings</span> <span class="kn">import</span> <span class="o">*</span>
<span class="o">&gt;&gt;&gt;</span>
<span class="o">&gt;&gt;&gt;</span> <span class="kn">from</span> <span class="nn">datetime</span> <span class="kn">import</span> <span class="n">datetime</span>
<span class="o">&gt;&gt;&gt;</span> <span class="kn">from</span> <span class="nn">airflow.models.dag</span> <span class="kn">import</span> <span class="n">DAG</span>
<span class="o">&gt;&gt;&gt;</span> <span class="kn">from</span> <span class="nn">airflow.operators.dummy</span> <span class="kn">import</span> <span class="n">DummyOperator</span>
<span class="o">&gt;&gt;&gt;</span>
<span class="o">&gt;&gt;&gt;</span> <span class="n">dag</span> <span class="o">=</span> <span class="n">DAG</span><span class="p">(</span><span class="s1">&#39;simple_dag&#39;</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">2017</span><span class="p">,</span> <span class="mi">9</span><span class="p">,</span> <span class="mi">1</span><span class="p">))</span>
<span class="o">&gt;&gt;&gt;</span>
<span class="o">&gt;&gt;&gt;</span> <span class="n">task</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="s1">&#39;task_1&#39;</span><span class="p">,</span> <span class="n">dag</span><span class="o">=</span><span class="n">dag</span><span class="p">)</span>
<span class="o">&gt;&gt;&gt;</span>
<span class="o">&gt;&gt;&gt;</span> <span class="n">task</span><span class="o">.</span><span class="n">log</span><span class="o">.</span><span class="n">error</span><span class="p">(</span><span class="s1">&#39;I want to say something..&#39;</span><span class="p">)</span>
<span class="p">[</span><span class="mi">2017</span><span class="o">-</span><span class="mi">09</span><span class="o">-</span><span class="mi">25</span> <span class="mi">20</span><span class="p">:</span><span class="mi">17</span><span class="p">:</span><span class="mi">04</span><span class="p">,</span><span class="mi">927</span><span class="p">]</span> <span class="p">{</span><span class="o">&lt;</span><span class="n">stdin</span><span class="o">&gt;</span><span class="p">:</span><span class="mi">1</span><span class="p">}</span> <span class="n">ERROR</span> <span class="o">-</span> <span class="n">I</span> <span class="n">want</span> <span class="n">to</span> <span class="n">say</span> <span class="n">something</span><span class="o">..</span>
</pre></div>
</div>
</div>
<div class="section" id="template-path-of-the-file-task-handler">
<h5>Template path of the file_task_handler<a class="headerlink" href="#template-path-of-the-file-task-handler" title="Permalink to this headline"></a></h5>
<p>The <code class="docutils literal notranslate"><span class="pre">file_task_handler</span></code> logger has been made more flexible. The default format can be changed, <code class="docutils literal notranslate"><span class="pre">{dag_id}/{task_id}/{execution_date}/{try_number}.log</span></code> by supplying Jinja templating in the <code class="docutils literal notranslate"><span class="pre">FILENAME_TEMPLATE</span></code> configuration variable. See the <code class="docutils literal notranslate"><span class="pre">file_task_handler</span></code> for more information.</p>
</div>
<div class="section" id="i-m-using-s3log-or-gcslogs-what-do-i-do">
<h5>I’m using S3Log or GCSLogs, what do I do!?<a class="headerlink" href="#i-m-using-s3log-or-gcslogs-what-do-i-do" title="Permalink to this headline"></a></h5>
<p>If you are logging to Google cloud storage, please see the <a class="reference external" href="https://airflow.apache.org/integration.html#gcp-google-cloud-platform">Google cloud platform documentation</a> for logging instructions.</p>
<p>If you are using S3, the instructions should be largely the same as the Google cloud platform instructions above. You will need a custom logging config. The <code class="docutils literal notranslate"><span class="pre">REMOTE_BASE_LOG_FOLDER</span></code> configuration key in your airflow config has been removed, therefore you will need to take the following steps:</p>
<ul class="simple">
<li><p>Copy the logging configuration from <a class="reference external" href="https://github.com/apache/airflow/blob/main/airflow/config_templates/airflow_local_settings.py">airflow/config_templates/airflow_logging_settings.py</a>.</p></li>
<li><p>Place it in a directory inside the Python import path <code class="docutils literal notranslate"><span class="pre">PYTHONPATH</span></code>. If you are using Python 2.7, ensuring that any <code class="docutils literal notranslate"><span class="pre">__init__.py</span></code> files exist so that it is importable.</p></li>
<li><p>Update the config by setting the path of <code class="docutils literal notranslate"><span class="pre">REMOTE_BASE_LOG_FOLDER</span></code> explicitly in the config. The <code class="docutils literal notranslate"><span class="pre">REMOTE_BASE_LOG_FOLDER</span></code> key is not used anymore.</p></li>
<li><p>Set the <code class="docutils literal notranslate"><span class="pre">logging_config_class</span></code> to the filename and dict. For example, if you place <code class="docutils literal notranslate"><span class="pre">custom_logging_config.py</span></code> on the base of your <code class="docutils literal notranslate"><span class="pre">PYTHONPATH</span></code>, you will need to set <code class="docutils literal notranslate"><span class="pre">logging_config_class</span> <span class="pre">=</span> <span class="pre">custom_logging_config.LOGGING_CONFIG</span></code> in your config as Airflow 1.8.</p></li>
</ul>
</div>
</div>
<div class="section" id="id142">
<h4>New Features<a class="headerlink" href="#id142" title="Permalink to this headline"></a></h4>
<div class="section" id="dask-executor">
<h5>Dask Executor<a class="headerlink" href="#dask-executor" title="Permalink to this headline"></a></h5>
<p>A new DaskExecutor allows Airflow tasks to be run in Dask Distributed clusters.</p>
</div>
</div>
<div class="section" id="deprecated-features">
<h4>Deprecated Features<a class="headerlink" href="#deprecated-features" title="Permalink to this headline"></a></h4>
<p>These features are marked for deprecation. They may still work (and raise a <code class="docutils literal notranslate"><span class="pre">DeprecationWarning</span></code>), but are no longer
supported and will be removed entirely in Airflow 2.0</p>
<ul>
<li><p>If you’re using the <code class="docutils literal notranslate"><span class="pre">google_cloud_conn_id</span></code> or <code class="docutils literal notranslate"><span class="pre">dataproc_cluster</span></code> argument names explicitly in <code class="docutils literal notranslate"><span class="pre">contrib.operators.Dataproc{*}Operator</span></code>(s), be sure to rename them to <code class="docutils literal notranslate"><span class="pre">gcp_conn_id</span></code> or <code class="docutils literal notranslate"><span class="pre">cluster_name</span></code>, respectively. We’ve renamed these arguments for consistency. (AIRFLOW-1323)</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">post_execute()</span></code> hooks now take two arguments, <code class="docutils literal notranslate"><span class="pre">context</span></code> and <code class="docutils literal notranslate"><span class="pre">result</span></code>
(AIRFLOW-886)</p>
<p>Previously, post_execute() only took one argument, <code class="docutils literal notranslate"><span class="pre">context</span></code>.</p>
</li>
<li><p><code class="docutils literal notranslate"><span class="pre">contrib.hooks.gcp_dataflow_hook.DataFlowHook</span></code> starts to use <code class="docutils literal notranslate"><span class="pre">--runner=DataflowRunner</span></code> instead of <code class="docutils literal notranslate"><span class="pre">DataflowPipelineRunner</span></code>, which is removed from the package <code class="docutils literal notranslate"><span class="pre">google-cloud-dataflow-0.6.0</span></code>.</p></li>
<li><p>The pickle type for XCom messages has been replaced by json to prevent RCE attacks.
Note that JSON serialization is stricter than pickling, so if you want to e.g. pass
raw bytes through XCom you must encode them using an encoding like base64.
By default pickling is still enabled until Airflow 2.0. To disable it
set enable_xcom_pickling = False in your Airflow config.</p></li>
</ul>
</div>
</div>
<div class="section" id="id143">
<h3>Changelog<a class="headerlink" href="#id143" title="Permalink to this headline"></a></h3>
<ul class="simple">
<li><p>[AIRFLOW-1525] Fix minor LICENSE and NOTICE issues</p></li>
<li><p>[AIRFLOW-XXX] Bump version to 1.9.0</p></li>
<li><p>[AIRFLOW-1897][AIRFLOW-1873] Task Logs for running instance not visible in WebUI</p></li>
<li><p>[AIRFLOW-XXX] Make sure session is committed</p></li>
<li><p>[AIRFLOW-1896] FIX bleach &lt;&gt; html5lib incompatibility</p></li>
<li><p>[AIRFLOW-XXX] Fix log handler test</p></li>
<li><p>[AIRFLOW-1873] Set TI.try_number to right value depending TI state</p></li>
<li><p>[AIRFLOW-1554] Fix wrong DagFileProcessor termination method call</p></li>
<li><p>[AIRFLOW-1872] Set context for all handlers including parents</p></li>
<li><p>[AIRFLOW-XXX] Add dask lock files to excludes</p></li>
<li><p>[AIRFLOW-1839] Fix more bugs in S3Hook boto -&gt; boto3 migration</p></li>
<li><p>[AIRFLOW-1795] Correctly call S3Hook after migration to boto3</p></li>
<li><p>[AIRFLOW-1813] Bug SSH Operator empty buffer</p></li>
<li><p>[AIRFLOW-1794] Remove uses of Exception.message for Python 3</p></li>
<li><p>[AIRFLOW-1799] Fix logging line which raises errors</p></li>
<li><p>[AIRFLOW-1102] Upgrade gunicorn &gt;=19.4.0</p></li>
<li><p>[AIRFLOW-1756] Fix S3TaskHandler to work with Boto3-based S3Hook</p></li>
<li><p>[AIRFLOW-1797] S3Hook.load_string did not work on Python3</p></li>
<li><p>[AIRFLOW-1792] Missing intervals DruidOperator</p></li>
<li><p>[AIRFLOW-1789][AIRFLOW-1712] Log SSHOperator stderr to log.warning</p></li>
<li><p>[AIRFLOW-1669] Fix Docker and pin Moto to 1.1.19</p></li>
<li><p>[AIRFLOW-71] Add support for private Docker images</p></li>
<li><p>[AIRFLOW-1779] Add keepalive packets to ssh hook</p></li>
<li><p>[AIRFLOW-XXX] Give a clue what the ‘ds’ variable is</p></li>
<li><p>[AIRFLOW-XXX] Correct typos in the faq docs page</p></li>
<li><p>[AIRFLOW-1571] Add AWS Lambda Hook</p></li>
<li><p>[AIRFLOW-1675] Fix docstrings for API docs</p></li>
<li><p>[AIRFLOW-1712][AIRFLOW-756][AIRFLOW-751] Log SSHOperator output</p></li>
<li><p>[AIRFLOW-1776] Capture stdout and stderr for logging</p></li>
<li><p>[AIRFLOW-1765] Make experimental API securable without needing Kerberos.</p></li>
<li><p>[AIRFLOW-1764] The web interface should not use the experimental API</p></li>
<li><p>[AIRFLOW-1634] Adds task_concurrency feature</p></li>
<li><p>[AIRFLOW-1018] Make processor use logging framework</p></li>
<li><p>[AIRFLOW-1695] Add RedshiftHook using boto3</p></li>
<li><p>[AIRFLOW-1706] Fix query error for MSSQL backend</p></li>
<li><p>[AIRFLOW-1711] Use ldap3 dict for group membership</p></li>
<li><p>[AIRFLOW-1757] Add missing options to SparkSubmitOperator</p></li>
<li><p>[AIRFLOW-1734][Airflow 1734] Sqoop hook/operator enhancements</p></li>
<li><p>[AIRFLOW-1731] Set pythonpath for logging</p></li>
<li><p>[AIRFLOW-1641] Handle executor events in the scheduler</p></li>
<li><p>[AIRFLOW-1744] Make sure max_tries can be set</p></li>
<li><p>[AIRFLOW-1330] Add conn_type argument to CLI when adding connection</p></li>
<li><p>[AIRFLOW-926] Fix JDBC Hook</p></li>
<li><p>[AIRFLOW-1520] Boto3 S3Hook, S3Log</p></li>
<li><p>[AIRFLOW-XXX] Fix DateTime in Tree View</p></li>
<li><p>[AIRFLOW-1432] Charts label for Y axis not visible</p></li>
<li><p>[AIRFLOW-1743] Verify ldap filters correctly</p></li>
<li><p>[AIRFLOW-1745] Restore default signal disposition</p></li>
<li><p>[AIRFLOW-1741] Correctly hide second chart on task duration page</p></li>
<li><p>[AIRFLOW-1726] Add copy_expert psycopg2 method to PostgresHook</p></li>
<li><p>[AIRFLOW-1698] Remove SCHEDULER_RUNS env var in systemd</p></li>
<li><p>[AIRFLOW-1694] Stop using itertools.izip</p></li>
<li><p>[AIRFLOW-1692] Change test_views filename to support Windows</p></li>
<li><p>[AIRFLOW-1722] Fix typo in scheduler autorestart output filename</p></li>
<li><p>[AIRFLOW-1691] Add better Google Cloud logging documentation</p></li>
<li><p>[AIRFLOW-1690] Add detail to gcs error messages</p></li>
<li><p>[AIRFLOW-1682] Make S3TaskHandler write to S3 on close</p></li>
<li><p>[AIRFLOW-1676] Make GCSTaskHandler write to GCS on close</p></li>
<li><p>[AIRFLOW-1635] Allow creating GCP connection without requiring a JSON file</p></li>
<li><p>[AIRFLOW-1323] Made Dataproc operator parameter names consistent</p></li>
<li><p>[AIRFLOW-1590] fix unused module and variable</p></li>
<li><p>[AIRFLOW-988] Fix repeating SLA miss callbacks</p></li>
<li><p>[AIRFLOW-1611] Customize logging</p></li>
<li><p>[AIRFLOW-1668] Expose keepalives_idle for Postgres connections</p></li>
<li><p>[AIRFLOW-1658] Kill Druid task on timeout</p></li>
<li><p>[AIRFLOW-1669][AIRFLOW-1368] Fix Docker import</p></li>
<li><p>[AIRFLOW-1560] Add AWS DynamoDB hook and operator for inserting batch items</p></li>
<li><p>[AIRFLOW-1654] Show tooltips for link icons in DAGs view</p></li>
<li><p>[AIRFLOW-1660] Change webpage width to full-width</p></li>
<li><p>[AIRFLOW-1664] write file as binary instead of str</p></li>
<li><p>[AIRFLOW-1659] Fix invalid obj attribute bug in file_task_handler.py</p></li>
<li><p>[AIRFLOW-1650] Fix custom celery config loading</p></li>
<li><p>[AIRFLOW-1647] Fix Spark-sql hook</p></li>
<li><p>[AIRFLOW-1587] Fix CeleryExecutor import error</p></li>
<li><p>[AIRFLOW-1636] Add AWS and EMR connection type</p></li>
<li><p>[AIRFLOW-1527] Refactor celery config</p></li>
<li><p>[AIRFLOW-1639] Fix Fernet error handling</p></li>
<li><p>[AIRFLOW-1628] Fix docstring of sqlsensor</p></li>
<li><p>[AIRFLOW-1331] add SparkSubmitOperator option</p></li>
<li><p>[AIRFLOW-1627] Only query pool in SubDAG init when necessary</p></li>
<li><p>[AIRFLOW-1629] Make extra a textarea in edit connections form</p></li>
<li><p>[AIRFLOW-1621] Add tests for server side paging</p></li>
<li><p>[AIRFLOW-1519] Add server side paging in DAGs list</p></li>
<li><p>[AIRFLOW-289] Make Airflow timezone independent</p></li>
<li><p>[AIRFLOW-1356] Add <code class="docutils literal notranslate"><span class="pre">--celery_hostname</span></code> to <code class="docutils literal notranslate"><span class="pre">airflow</span> <span class="pre">worker</span></code></p></li>
<li><p>[AIRFLOW-1591] Avoid attribute error when rendering logging filename</p></li>
<li><p>[AIRFLOW-1031] Replace hard-code to DagRun.ID_PREFIX</p></li>
<li><p>[AIRFLOW-1604] Rename logger to log</p></li>
<li><p>[AIRFLOW-1512] Add PythonVirtualenvOperator</p></li>
<li><p>[AIRFLOW-1617] Fix XSS vulnerability in Variable endpoint</p></li>
<li><p>[AIRFLOW-1497] Reset hidden fields when changing connection type</p></li>
<li><p>[AIRFLOW-1177] Fix Variable.setdefault w/existing JSON</p></li>
<li><p>[AIRFLOW-1600] Fix exception handling in get_fernet</p></li>
<li><p>[AIRFLOW-1614] Replace inspect.stack() with sys._getframe()</p></li>
<li><p>[AIRFLOW-1613] Make MySqlToGoogleCloudStorageOperator compatible with python3</p></li>
<li><p>[AIRFLOW-1609] Fix gitignore to ignore all venvs</p></li>
<li><p>[AIRFLOW-1601] Add configurable task cleanup time</p></li>
<li><p>[AIRFLOW-XXX] Bumping airflow 1.9.0alpha0 version</p></li>
<li><p>[AIRFLOW-1608] Handle pending job state in GCP Dataflow hook</p></li>
<li><p>[AIRFLOW-1606] Use non static DAG.sync_to_db</p></li>
<li><p>[AIRFLOW-1606][Airflow-1606][AIRFLOW-1605][AIRFLOW-160] DAG.sync_to_db is now a normal method</p></li>
<li><p>[AIRFLOW-1602] LoggingMixin in DAG class</p></li>
<li><p>[AIRFLOW-1593] expose load_string in WasbHook</p></li>
<li><p>[AIRFLOW-1597] Add GameWisp as Airflow user</p></li>
<li><p>[AIRFLOW-1594] Don’t install test packages into Python root.[]</p></li>
<li><p>[AIRFLOW-1582] Improve logging within Airflow</p></li>
<li><p>[AIRFLOW-1476] add INSTALL instruction for source releases</p></li>
<li><p>[AIRFLOW-XXX] Save username and password in airflow-pr</p></li>
<li><p>[AIRFLOW-1522] Increase text size for var field in variables for MySQL</p></li>
<li><p>[AIRFLOW-950] Missing AWS integrations on documentation::integrations</p></li>
<li><p>[AIRFLOW-XXX] 1.8.2 release notes</p></li>
<li><p>[AIRFLOW-1573] Remove <code class="docutils literal notranslate"><span class="pre">thrift</span> <span class="pre">&lt;</span> <span class="pre">0.10.0</span></code> requirement</p></li>
<li><p>[AIRFLOW-1584] Remove insecure /headers endpoint</p></li>
<li><p>[AIRFLOW-1586] Add mapping for date type to mysql_to_gcs operator</p></li>
<li><p>[AIRFLOW-1579] Adds support for jagged rows in Bigquery hook for BQ load jobs</p></li>
<li><p>[AIRFLOW-1577] Add token support to DatabricksHook</p></li>
<li><p>[AIRFLOW-1580] Error in string formatting</p></li>
<li><p>[AIRFLOW-1567] Updated docs for Google ML Engine operators/hooks</p></li>
<li><p>[AIRFLOW-1574] add ‘to’ attribute to templated vars of email operator</p></li>
<li><p>[AIRFLOW-1572] add carbonite to company list</p></li>
<li><p>[AIRFLOW-1568] Fix typo in BigQueryHook</p></li>
<li><p>[AIRFLOW-1493][AIRFLOW-XXXX][WIP] fixed dumb thing</p></li>
<li><p>[AIRFLOW-1567][Airflow-1567] Renamed cloudml hook and operator to mlengine</p></li>
<li><p>[AIRFLOW-1568] Add datastore export/import operators</p></li>
<li><p>[AIRFLOW-1564] Use Jinja2 to render logging filename</p></li>
<li><p>[AIRFLOW-1562] Spark-sql logging contains deadlock</p></li>
<li><p>[AIRFLOW-1556][Airflow 1556] Add support for SQL parameters in BigQueryBaseCursor</p></li>
<li><p>[AIRFLOW-108] Add CreditCards.com to companies list</p></li>
<li><p>[AIRFLOW-1541] Add channel to template fields of slack_operator</p></li>
<li><p>[AIRFLOW-1535] Add service account/scopes in dataproc</p></li>
<li><p>[AIRFLOW-1384] Add to README.md CaDC/ARGO</p></li>
<li><p>[AIRFLOW-1546] add Zymergen 80to org list in README</p></li>
<li><p>[AIRFLOW-1545] Add Nextdoor to companies list</p></li>
<li><p>[AIRFLOW-1544] Add DataFox to companies list</p></li>
<li><p>[AIRFLOW-1529] Add logic supporting quoted newlines in Google BigQuery load jobs</p></li>
<li><p>[AIRFLOW-1521] Fix template rendering for BigqueryTableDeleteOperator</p></li>
<li><p>[AIRFLOW-1324] Generalize Druid operator and hook</p></li>
<li><p>[AIRFLOW-1516] Fix error handling getting fernet</p></li>
<li><p>[AIRFLOW-1420][AIRFLOW-1473] Fix deadlock check</p></li>
<li><p>[AIRFLOW-1495] Fix migration on index on job_id</p></li>
<li><p>[AIRFLOW-1483] Making page size consistent in list</p></li>
<li><p>[AIRFLOW-1495] Add TaskInstance index on job_id</p></li>
<li><p>[AIRFLOW-855] Replace PickleType with LargeBinary in XCom</p></li>
<li><p>[AIRFLOW-1505] Document when Jinja substitution occurs</p></li>
<li><p>[AIRFLOW-1504] Log dataproc cluster name</p></li>
<li><p>[AIRFLOW-1239] Fix unicode error for logs in base_task_runner</p></li>
<li><p>[AIRFLOW-1280] Fix Gantt chart height</p></li>
<li><p>[AIRFLOW-1507] Template parameters in file_to_gcs operator</p></li>
<li><p>[AIRFLOW-1452] workaround lock on method</p></li>
<li><p>[AIRFLOW-1385] Make Airflow task logging configurable</p></li>
<li><p>[AIRFLOW-940] Handle error on variable decrypt</p></li>
<li><p>[AIRFLOW-1492] Add gauge for task successes/failures</p></li>
<li><p>[AIRFLOW-1443] Update Airflow configuration documentation</p></li>
<li><p>[AIRFLOW-1486] Unexpected S3 writing log error</p></li>
<li><p>[AIRFLOW-1487] Added links to all companies officially using Airflow</p></li>
<li><p>[AIRFLOW-1489] Fix typo in BigQueryCheckOperator</p></li>
<li><p>[AIRFLOW-1349] Fix backfill to respect limits</p></li>
<li><p>[AIRFLOW-1478] Chart owner column should be sortable</p></li>
<li><p>[AIRFLOW-1397][AIRFLOW-1] No Last Run column data displayed in airflow UI 1.8.1</p></li>
<li><p>[AIRFLOW-1474] Add dag_id regex feature for <code class="docutils literal notranslate"><span class="pre">airflow</span> <span class="pre">clear</span></code> command</p></li>
<li><p>[AIRFLOW-1445] Changing HivePartitionSensor UI color to lighter shade</p></li>
<li><p>[AIRFLOW-1359] Use default_args in Cloud ML eval</p></li>
<li><p>[AIRFLOW-1389] Support createDisposition in BigQueryOperator</p></li>
<li><p>[AIRFLOW-1349] Refactor BackfillJob _execute</p></li>
<li><p>[AIRFLOW-1459] Fixed broken integration .rst formatting</p></li>
<li><p>[AIRFLOW-1448] Revert “Fix cli reading logfile in memory”</p></li>
<li><p>[AIRFLOW-1398] Allow ExternalTaskSensor to wait on multiple runs of a task</p></li>
<li><p>[AIRFLOW-1399] Fix cli reading logfile in memory</p></li>
<li><p>[AIRFLOW-1442] Remove extra space from ignore_all_deps generated command</p></li>
<li><p>[AIRFLOW-1438] Change batch size per query in scheduler</p></li>
<li><p>[AIRFLOW-1439] Add max billing tier for the BQ Hook and Operator</p></li>
<li><p>[AIRFLOW-1437] Modify BigQueryTableDeleteOperator</p></li>
<li><p>[Airflow 1332] Split logs based on try number</p></li>
<li><p>[AIRFLOW-1385] Create abstraction for Airflow task logging</p></li>
<li><p>[AIRFLOW-756][AIRFLOW-751] Replace ssh hook, operator &amp; sftp operator with paramiko based</p></li>
<li><p>[AIRFLOW-1393][[AIRFLOW-1393] Enable Py3 tests in contrib/spark_submit_hook[</p></li>
<li><p>[AIRFLOW-1345] Dont expire TIs on each scheduler loop</p></li>
<li><p>[AIRFLOW-1059] Reset orphaned tasks in batch for scheduler</p></li>
<li><p>[AIRFLOW-1255] Fix SparkSubmitHook output deadlock</p></li>
<li><p>[AIRFLOW-1359] Add Google CloudML utils for model evaluation</p></li>
<li><p>[AIRFLOW-1247] Fix ignore all dependencies argument ignored</p></li>
<li><p>[AIRFLOW-1401] Standardize cloud ml operator arguments</p></li>
<li><p>[AIRFLOW-1394] Add quote_character param to GCS hook and operator</p></li>
<li><p>[AIRFLOW-1402] Cleanup SafeConfigParser DeprecationWarning</p></li>
<li><p>[AIRFLOW-1326][[AIRFLOW-1326][AIRFLOW-1184] Don’t split argument array – it’s already an array.[</p></li>
<li><p>[AIRFLOW-1384] Add ARGO/CaDC as a Airflow user</p></li>
<li><p>[AIRFLOW-1357] Fix scheduler zip file support</p></li>
<li><p>[AIRFLOW-1382] Add working dir option to DockerOperator</p></li>
<li><p>[AIRFLOW-1388] Add Cloud ML Engine operators to integration doc</p></li>
<li><p>[AIRFLOW-1387] Add unicode string prefix</p></li>
<li><p>[AIRFLOW-1366] Add max_tries to task instance</p></li>
<li><p>[AIRFLOW-1300] Enable table creation with TBLPROPERTIES</p></li>
<li><p>[AIRFLOW-1271] Add Google CloudML Training Operator</p></li>
<li><p>[AIRFLOW-300] Add Google Pubsub hook and operator</p></li>
<li><p>[AIRFLOW-1343] Fix dataproc label format</p></li>
<li><p>[AIRFLOW-1367] Pass Content-ID To reference inline images in an email, we need to be able to add &lt;img src=”cid:{}”/&gt; to the HTML. However currently the Content-ID (cid) is not passed, so we need to add it</p></li>
<li><p>[AIRFLOW-1265] Fix celery executor parsing CELERY_SSL_ACTIVE</p></li>
<li><p>[AIRFLOW-1272] Google Cloud ML Batch Prediction Operator</p></li>
<li><p>[AIRFLOW-1352][AIRFLOW-1335] Revert MemoryHandler change ()[]</p></li>
<li><p>[AIRFLOW-1350] Add query_uri param to Hive/SparkSQL DataProc operator</p></li>
<li><p>[AIRFLOW-1334] Check if tasks are backfill on scheduler in a join</p></li>
<li><p>[AIRFLOW-1343] Add Airflow default label to the dataproc operator</p></li>
<li><p>[AIRFLOW-1273] Add Google Cloud ML version and model operators</p></li>
<li><p>[AIRFLOW-1273]AIRFLOW-1273] Add Google Cloud ML version and model operators</p></li>
<li><p>[AIRFLOW-1321] Fix hidden field key to ignore case</p></li>
<li><p>[AIRFLOW-1337] Make log_format key names lowercase</p></li>
<li><p>[AIRFLOW-1338][AIRFLOW-782] Add GCP dataflow hook runner change to UPDATING.md</p></li>
<li><p>[AIRFLOW-801] Remove outdated docstring on BaseOperator</p></li>
<li><p>[AIRFLOW-1344] Fix text encoding bug when reading logs for Python 3.5</p></li>
<li><p>[AIRFLOW-1338] Fix incompatible GCP dataflow hook</p></li>
<li><p>[AIRFLOW-1333] Enable copy function for Google Cloud Storage Hook</p></li>
<li><p>[AIRFLOW-1337] Allow log format customization via airflow.cfg</p></li>
<li><p>[AIRFLOW-1320] Update LetsBonus users in README</p></li>
<li><p>[AIRFLOW-1335] Use MemoryHandler for buffered logging</p></li>
<li><p>[AIRFLOW-1339] Add Drivy to the list of users</p></li>
<li><p>[AIRFLOW-1275] Put ‘airflow pool’ into API</p></li>
<li><p>[AIRFLOW-1296] Propagate SKIPPED to all downstream tasks</p></li>
<li><p>[AIRFLOW-1317] Fix minor issues in API reference</p></li>
<li><p>[AIRFLOW-1308] Disable nanny usage for Dask</p></li>
<li><p>[AIRFLOW-1172] Support nth weekday of the month cron expression</p></li>
<li><p>[AIRFLOW-936] Add clear/mark success for DAG in the UI</p></li>
<li><p>[AIRFLOW-1294] Backfills can loose tasks to execute</p></li>
<li><p>[AIRFLOW-1299] Support imageVersion in Google Dataproc cluster</p></li>
<li><p>[AIRFLOW-1291] Update NOTICE and LICENSE files to match ASF requirements</p></li>
<li><p>[AIRFLOW-1301] Add New Relic to list of companies</p></li>
<li><p>[AIRFLOW-1289] Removes restriction on number of scheduler threads</p></li>
<li><p>[AIRFLOW-1024] Ignore celery executor errors (#49)</p></li>
<li><p>[AIRFLOW-1265] Fix exception while loading celery configurations</p></li>
<li><p>[AIRFLOW-1290] set docs author to ‘Apache Airflow’</p></li>
<li><p>[AIRFLOW-1242] Allowing project_id to have a colon in it.</p></li>
<li><p>[AIRFLOW-1282] Fix known event column sorting</p></li>
<li><p>[AIRFLOW-1166] Speed up _change_state_for_tis_without_dagrun</p></li>
<li><p>[AIRFLOW-1208] Speed-up cli tests</p></li>
<li><p>[AIRFLOW-1192] Some enhancements to qubole_operator</p></li>
<li><p>[AIRFLOW-1281] Sort variables by key field by default</p></li>
<li><p>[AIRFLOW-1277] Forbid KE creation with empty fields</p></li>
<li><p>[AIRFLOW-1276] Forbid event creation with end_data earlier than start_date</p></li>
<li><p>[AIRFLOW-1263] Dynamic height for charts</p></li>
<li><p>[AIRFLOW-1266] Increase width of gantt y axis</p></li>
<li><p>[AIRFLOW-1244] Forbid creation of a pool with empty name</p></li>
<li><p>[AIRFLOW-1274][HTTPSENSOR] Rename parameter params to data</p></li>
<li><p>[AIRFLOW-654] Add SSL Config Option for CeleryExecutor w/ RabbitMQ - Add BROKER_USE_SSL config to give option to send AMQP messages over SSL - Can be set using usual Airflow options (e.g. airflow.cfg, env vars, etc.)</p></li>
<li><p>[AIRFLOW-1256] Add United Airlines to readme</p></li>
<li><p>[AIRFLOW-1251] Add eRevalue to Airflow users</p></li>
<li><p>[AIRFLOW-908] Print hostname at the start of cli run</p></li>
<li><p>[AIRFLOW-1237] Fix IN-predicate sqlalchemy warning</p></li>
<li><p>[AIRFLOW-1243] DAGs table has no default entries to show</p></li>
<li><p>[AIRFLOW-1245] Fix random failure in test_trigger_dag_for_date</p></li>
<li><p>[AIRFLOW-1248] Fix wrong conf name for worker timeout</p></li>
<li><p>[AIRFLOW-1197] : SparkSubmitHook on_kill error</p></li>
<li><p>[AIRFLOW-1191] : SparkSubmitHook custom cmd</p></li>
<li><p>[AIRFLOW-1234] Cover utils.operator_helpers with UTs</p></li>
<li><p>[AIRFLOW-1217] Enable Sqoop logging</p></li>
<li><p>[AIRFLOW-645] Support HTTPS connections in HttpHook</p></li>
<li><p>[AIRFLOW-1231] Use flask_wtf.CSRFProtect</p></li>
<li><p>[AIRFLOW-1232] Remove deprecated readfp warning</p></li>
<li><p>[AIRFLOW-1233] Cover utils.json with unit tests</p></li>
<li><p>[AIRFLOW-1227] Remove empty column on the Logs view</p></li>
<li><p>[AIRFLOW-1226] Remove empty column on the Jobs view</p></li>
<li><p>[AIRFLOW-1221] Fix templating bug with DatabricksSubmitRunOperator</p></li>
<li><p>[AIRFLOW-1210] Enable DbApiHook unit tests</p></li>
<li><p>[AIRFLOW-1199] Fix create modal</p></li>
<li><p>[AIRFLOW-1200] Forbid creation of a variable with an empty key</p></li>
<li><p>[AIRFLOW-1207] Enable utils.helpers unit tests</p></li>
<li><p>[AIRFLOW-1213] Add hcatalog parameters to sqoop</p></li>
<li><p>[AIRFLOW-1201] Update deprecated ‘nose-parameterized’</p></li>
<li><p>[AIRFLOW-1186] Sort dag.get_task_instances by execution_date</p></li>
<li><p>[AIRFLOW-1203] Pin Google API client version to fix OAuth issue</p></li>
<li><p>[AIRFLOW-1145] Fix closest_date_partition function with before set to True If we’re looking for the closest date before, we should take the latest date in the list of date before.</p></li>
<li><p>[AIRFLOW-1180] Fix flask-wtf version for test_csrf_rejection</p></li>
<li><p>[AIRFLOW-993] Update date inference logic</p></li>
<li><p>[AIRFLOW-1170] DbApiHook insert_rows inserts parameters separately</p></li>
<li><p>[AIRFLOW-1041] Do not shadow xcom_push method[]</p></li>
<li><p>[AIRFLOW-860][AIRFLOW-935] Fix plugin executor import cycle and executor selection</p></li>
<li><p>[AIRFLOW-1189] Fix get a DataFrame using BigQueryHook failing</p></li>
<li><p>[AIRFLOW-1184] SparkSubmitHook does not split args</p></li>
<li><p>[AIRFLOW-1182] SparkSubmitOperator template field</p></li>
<li><p>[AIRFLOW-823] Allow specifying execution date in task_info API</p></li>
<li><p>[AIRFLOW-1175] Add Pronto Tools to Airflow user list</p></li>
<li><p>[AIRFLOW-1150] Fix scripts execution in sparksql hook[]</p></li>
<li><p>[AIRFLOW-1141] remove crawl_for_tasks</p></li>
<li><p>[AIRFLOW-1193] Add Checkr to company using Airflow</p></li>
<li><p>[AIRFLOW-1168] Add closing() to all connections and cursors</p></li>
<li><p>[AIRFLOW-1188] Add max_bad_records param to GoogleCloudStorageToBigQueryOperator</p></li>
<li><p>[AIRFLOW-1187][AIRFLOW-1185] Fix PyPi package names in documents</p></li>
<li><p>[AIRFLOW-1185] Fix PyPi URL in templates</p></li>
<li><p>[AIRFLOW-XXX] Updating CHANGELOG, README, and UPDATING after 1.8.1 release</p></li>
<li><p>[AIRFLOW-1181] Add delete and list functionality to gcs_hook</p></li>
<li><p>[AIRFLOW-1179] Fix Pandas 0.2x breaking Google BigQuery change</p></li>
<li><p>[AIRFLOW-1167] Support microseconds in FTPHook modification time</p></li>
<li><p>[AIRFLOW-1173] Add Robinhood to who uses Airflow</p></li>
<li><p>[AIRFLOW-945][AIRFLOW-941] Remove psycopg2 connection workaround</p></li>
<li><p>[AIRFLOW-1140] DatabricksSubmitRunOperator should template the “json” field.</p></li>
<li><p>[AIRFLOW-1160] Update Spark parameters for Mesos</p></li>
<li><p>[AIRFLOW 1149][AIRFLOW-1149] Allow for custom filters in Jinja2 templates</p></li>
<li><p>[AIRFLOW-1036] Randomize exponential backoff</p></li>
<li><p>[AIRFLOW-1155] Add Tails.com to community</p></li>
<li><p>[AIRFLOW-1142] Do not reset orphaned state for backfills</p></li>
<li><p>[AIRFLOW-492] Make sure stat updates cannot fail a task</p></li>
<li><p>[AIRFLOW-1119] Fix unload query so headers are on first row[]</p></li>
<li><p>[AIRFLOW-1089] Add Spark application arguments</p></li>
<li><p>[AIRFLOW-1125] Document encrypted connections</p></li>
<li><p>[AIRFLOW-1122] Increase stroke width in UI</p></li>
<li><p>[AIRFLOW-1138] Add missing licenses to files in scripts directory</p></li>
<li><p>[AIRFLOW-11-38][AIRFLOW-1136] Capture invalid arguments for Sqoop</p></li>
<li><p>[AIRFLOW-1127] Move license notices to LICENSE</p></li>
<li><p>[AIRFLOW-1118] Add evo.company to Airflow users</p></li>
<li><p>[AIRFLOW-1121][AIRFLOW-1004] Fix <code class="docutils literal notranslate"><span class="pre">airflow</span> <span class="pre">webserver</span> <span class="pre">--pid</span></code> to write out pid file</p></li>
<li><p>[AIRFLOW-1124] Do not set all tasks to scheduled in backfill</p></li>
<li><p>[AIRFLOW-1120] Update version view to include Apache prefix</p></li>
<li><p>[AIRFLOW-1091] Add script that can compare Jira target against merges</p></li>
<li><p>[AIRFLOW-1107] Add support for ftps non-default port</p></li>
<li><p>[AIRFLOW-1000] Rebrand distribution to Apache Airflow</p></li>
<li><p>[AIRFLOW-1094] Run unit tests under contrib in Travis</p></li>
<li><p>[AIRFLOW-1112] Log which pool when pool is full in scheduler</p></li>
<li><p>[AIRFLOW-1106] Add Groupalia/Letsbonus to the ReadMe</p></li>
<li><p>[AIRFLOW-1109] Use kill signal to kill processes and log results</p></li>
<li><p>[AIRFLOW-1074] Don’t count queued tasks for concurrency limits</p></li>
<li><p>[AIRFLOW-1095] Make ldap_auth memberOf come from configuration</p></li>
<li><p>[AIRFLOW-1090] Add HBO</p></li>
<li><p>[AIRFLOW-1035] Use binary exponential backoff</p></li>
<li><p>[AIRFLOW-1081] Improve performance of duration chart</p></li>
<li><p>[AIRFLOW-1078] Fix latest_runs endpoint for old flask versions</p></li>
<li><p>[AIRFLOW-1085] Enhance the SparkSubmitOperator</p></li>
<li><p>[AIRFLOW-1050] Do not count up_for_retry as not ready</p></li>
<li><p>[AIRFLOW-1028] Databricks Operator for Airflow</p></li>
<li><p>[AIRFLOW-1075] Security docs cleanup</p></li>
<li><p>[AIRFLOW-1033][AIFRLOW-1033] Fix ti_deps for no schedule dags</p></li>
<li><p>[AIRFLOW-1016] Allow HTTP HEAD request method on HTTPSensor</p></li>
<li><p>[AIRFLOW-970] Load latest_runs on homepage async</p></li>
<li><p>[AIRFLOW-111] Include queued tasks in scheduler concurrency check</p></li>
<li><p>[AIRFLOW-1001] Fix landing times if there is no following schedule</p></li>
<li><p>[AIRFLOW-1065] Add functionality for Azure Blob Storage over wasb://</p></li>
<li><p>[AIRFLOW-947] Improve exceptions for unavailable Presto cluster</p></li>
<li><p>[AIRFLOW-1067] use example.com in examples</p></li>
<li><p>[AIRFLOW-1064] Change default sort to job_id for TaskInstanceModelView</p></li>
<li><p>[AIRFLOW-1030][AIRFLOW-1] Fix hook import for HttpSensor</p></li>
<li><p>[AIRFLOW-1051] Add a test for resetdb to CliTests</p></li>
<li><p>[AIRFLOW-1004][AIRFLOW-276] Fix <code class="docutils literal notranslate"><span class="pre">airflow</span> <span class="pre">webserver</span> <span class="pre">-D</span></code> to run in background</p></li>
<li><p>[AIRFLOW-1062] Fix DagRun#find to return correct result</p></li>
<li><p>[AIRFLOW-1011] Fix bug in BackfillJob._execute() for SubDAGs</p></li>
<li><p>[AIRFLOW-1038] Specify celery serialization options explicitly</p></li>
<li><p>[AIRFLOW-1054] Fix broken import in test_dag</p></li>
<li><p>[AIRFLOW-1007] Use Jinja sandbox for chart_data endpoint</p></li>
<li><p>[AIRFLOW-719] Fix race condition in ShortCircuit, Branch and LatestOnly</p></li>
<li><p>[AIRFLOW-1043] Fix doc strings of operators</p></li>
<li><p>[AIRFLOW-840] Make ticket renewer python3 compatible</p></li>
<li><p>[AIRFLOW-985] Extend the sqoop operator and hook</p></li>
<li><p>[AIRFLOW-1034] Make it possible to connect to S3 in sigv4 regions</p></li>
<li><p>[AIRFLOW-1045] Make log level configurable via airflow.cfg</p></li>
<li><p>[AIRFLOW-1047] Sanitize strings passed to Markup</p></li>
<li><p>[AIRFLOW-1040] Fix some small typos in comments and docstrings</p></li>
<li><p>[AIRFLOW-1017] get_task_instance should not throw exception when no TI</p></li>
<li><p>[AIRFLOW-1006] Add config_templates to MANIFEST</p></li>
<li><p>[AIRFLOW-999] Add support for Redis database</p></li>
<li><p>[AIRFLOW-1009] Remove SQLOperator from Concepts page</p></li>
<li><p>[AIRFLOW-1006] Move config templates to separate files</p></li>
<li><p>[AIRFLOW-1005] Improve Airflow startup time</p></li>
<li><p>[AIRFLOW-1010] Add convenience script for signing releases</p></li>
<li><p>[AIRFLOW-995] Remove reference to actual Airflow issue</p></li>
<li><p>[AIRFLOW-681] homepage doc link should pointing to apache repo not airbnb repo</p></li>
<li><p>[AIRFLOW-705][AIRFLOW-706] Fix run_command bugs</p></li>
<li><p>[AIRFLOW-990] Fix Py27 unicode logging in DockerOperator</p></li>
<li><p>[AIRFLOW-963] Fix non-rendered code examples</p></li>
<li><p>[AIRFLOW-969] Catch bad python_callable argument</p></li>
<li><p>[AIRFLOW-984] Enable subclassing of SubDagOperator</p></li>
<li><p>[AIRFLOW-997] Update setup.cfg to point to Apache</p></li>
<li><p>[AIRFLOW-994] Add MiNODES to the official Airflow user list</p></li>
<li><p>[AIRFLOW-995][AIRFLOW-1] Update GitHub PR Template</p></li>
<li><p>[AIRFLOW-989] Do not mark dag run successful if unfinished tasks</p></li>
<li><p>[AIRFLOW-903] New configuration setting for the default dag view</p></li>
<li><p>[AIRFLOW-979] Add GovTech GDS</p></li>
<li><p>[AIRFLOW-933] Replace eval with literal_eval to prevent RCE</p></li>
<li><p>[AIRFLOW-974] Fix mkdirs race condition</p></li>
<li><p>[AIRFLOW-917] Fix formatting of error message</p></li>
<li><p>[AIRFLOW-770] Refactor BaseHook so env vars are always read</p></li>
<li><p>[AIRFLOW-900] Double trigger should not kill original task instance</p></li>
<li><p>[AIRFLOW-900] Fixes bugs in LocalTaskJob for double run protection</p></li>
<li><p>[AIRFLOW-932][AIRFLOW-932][AIRFLOW-921][AIRFLOW-910] Do not mark tasks removed when backfilling</p></li>
<li><p>[AIRFLOW-961] run onkill when SIGTERMed</p></li>
<li><p>[AIRFLOW-910] Use parallel task execution for backfills</p></li>
<li><p>[AIRFLOW-967] Wrap strings in native for py2 ldap compatibility</p></li>
<li><p>[AIRFLOW-958] Improve tooltip readability</p></li>
<li><p>AIRFLOW-959 Cleanup and reorganize .gitignore</p></li>
<li><p>AIRFLOW-960 Add .editorconfig file</p></li>
<li><p>[AIRFLOW-931] Do not set QUEUED in TaskInstances</p></li>
<li><p>[AIRFLOW-956] Get docs working on readthedocs.org</p></li>
<li><p>[AIRFLOW-954] Fix configparser ImportError</p></li>
<li><p>[AIRFLOW-941] Use defined parameters for psycopg2</p></li>
<li><p>[AIRFLOW-943] Update Digital First Media in users list</p></li>
<li><p>[AIRFLOW-942] Add mytaxi to Airflow users</p></li>
<li><p>[AIRFLOW-939] add .swp to gitignore</p></li>
<li><p>[AIRFLOW-719] Prevent DAGs from ending prematurely</p></li>
<li><p>[AIRFLOW-938] Use test for True in task_stats queries</p></li>
<li><p>[AIRFLOW-937] Improve performance of task_stats</p></li>
<li><p>[AIRFLOW-933] use ast.literal_eval rather eval because ast.literal_eval does not execute input.</p></li>
<li><p>[AIRFLOW-925] Revert airflow.hooks change that cherry-pick picked</p></li>
<li><p>[AIRFLOW-919] Running tasks with no start date should not break a DAGs UI</p></li>
<li><p>[AIRFLOW-802][AIRFLOW-1] Add spark-submit operator/hook</p></li>
<li><p>[AIRFLOW-725] Use keyring to store credentials for JIRA</p></li>
<li><p>[AIRFLOW-916] Remove deprecated readfp function</p></li>
<li><p>[AIRFLOW-911] Add coloring and timing to tests</p></li>
<li><p>[AIRFLOW-906] Update Code icon from lightning bolt to file</p></li>
<li><p>[AIRFLOW-897] Prevent dagruns from failing with unfinished tasks</p></li>
<li><p>[AIRFLOW-896] Remove unicode to 8-bit conversion in BigQueryOperator</p></li>
<li><p>[AIRFLOW-899] Tasks in SCHEDULED state should be white in the UI instead of black</p></li>
<li><p>[AIRFLOW-895] Address Apache release incompliancies</p></li>
<li><p>[AIRFLOW-893][AIRFLOW-510] Fix crashing webservers when a dagrun has no start date</p></li>
<li><p>[AIRFLOW-880] Make webserver serve logs in a sane way for remote logs</p></li>
<li><p>[AIRFLOW-889] Fix minor error in the docstrings for BaseOperator</p></li>
<li><p>[AIRFLOW-809][AIRFLOW-1] Use __eq__ ColumnOperator When Testing Booleans</p></li>
<li><p>[AIRFLOW-875] Add template to HttpSensor params</p></li>
<li><p>[AIRFLOW-866] Add FTPSensor</p></li>
<li><p>[AIRFLOW-881] Check if SubDagOperator is in DAG context manager</p></li>
<li><p>[AIRFLOW-885] Add change.org to the users list</p></li>
<li><p>[AIRFLOW-836] Use POST and CSRF for state changing endpoints</p></li>
<li><p>[AIRFLOW-862] Fix Unit Tests for DaskExecutor</p></li>
<li><p>[AIRFLOW-887] Support future v0.16</p></li>
<li><p>[AIRFLOW-886] Pass result to post_execute() hook</p></li>
<li><p>[AIRFLOW-871] change logging.warn() into warning()</p></li>
<li><p>[AIRFLOW-882] Remove unnecessary dag&gt;&gt;op assignment in docs</p></li>
<li><p>[AIRFLOW-861] Make pickle_info endpoint be login_required</p></li>
<li><p>[AIRFLOW-869] Refactor mark success functionality</p></li>
<li><p>[AIRFLOW-877] Remove .sql template extension from GCS download operator</p></li>
<li><p>[AIRFLOW-826] Add Zendesk hook</p></li>
<li><p>[AIRFLOW-842] Do not query the DB with an empty IN clause</p></li>
<li><p>[AIRFLOW-834] Change raise StopIteration into return</p></li>
<li><p>[AIRFLOW-832] Let debug server run without SSL</p></li>
<li><p>[AIRFLOW-862] Add DaskExecutor</p></li>
<li><p>[AIRFLOW-858] Configurable database name for DB operators</p></li>
<li><p>[AIRFLOW-863] Example DAGs should have recent start dates</p></li>
<li><p>[AIRFLOW-853] Use utf8 encoding for stdout line decode</p></li>
<li><p>[AIRFLOW-857] Use library assert statements instead of conditionals</p></li>
<li><p>[AIRFLOW-856] Make sure execution date is set for local client</p></li>
<li><p>[AIRFLOW-854] Add OKI as Airflow user</p></li>
<li><p>[AIRFLOW-830][AIRFLOW-829][AIRFLOW-88] Reduce Travis log verbosity</p></li>
<li><p>[AIRFLOW-814] Fix Presto*CheckOperator.__init__</p></li>
<li><p>[AIRFLOW-793] Enable compressed loading in S3ToHiveTransfer</p></li>
<li><p>[AIRFLOW-844] Fix cgroups directory creation</p></li>
<li><p>[AIRFLOW-831] Restore import to fix broken tests</p></li>
<li><p>[AIRFLOW-794] Access DAGS_FOLDER and SQL_ALCHEMY_CONN exclusively from settings</p></li>
<li><p>[AIRFLOW-694] Fix config behaviour for empty envvar</p></li>
<li><p>[AIRFLOW-365] Set dag.fileloc explicitly and use for Code view</p></li>
<li><p>[AIRFLOW-781] Allow DataFlowOperators to accept jobs stored in GCS</p></li>
</ul>
</div>
</div>
<div class="section" id="airflow-1-8-2-2017-09-04">
<h2><a class="toc-backref" href="#id185">Airflow 1.8.2 (2017-09-04)</a><a class="headerlink" href="#airflow-1-8-2-2017-09-04" title="Permalink to this headline"></a></h2>
<div class="section" id="id144">
<h3>Significant Changes<a class="headerlink" href="#id144" title="Permalink to this headline"></a></h3>
<p>No significant changes.</p>
</div>
<div class="section" id="id145">
<h3>Changelog<a class="headerlink" href="#id145" title="Permalink to this headline"></a></h3>
<ul class="simple">
<li><p>[AIRFLOW-809][AIRFLOW-1] Use __eq__ ColumnOperator When Testing Booleans</p></li>
<li><p>[AIRFLOW-1296] Propagate SKIPPED to all downstream tasks</p></li>
<li><p>Re-enable caching for hadoop components</p></li>
<li><p>Pin Hive and Hadoop to a specific version and create writable warehouse dir</p></li>
<li><p>[AIRFLOW-1308] Disable nanny usage for Dask</p></li>
<li><p>Updating CHANGELOG for 1.8.2rc1</p></li>
<li><p>[AIRFLOW-1294] Backfills can loose tasks to execute</p></li>
<li><p>[AIRFLOW-1291] Update NOTICE and LICENSE files to match ASF requirements</p></li>
<li><p>[AIRFLOW-XXX] Set version to 1.8.2rc1</p></li>
<li><p>[AIRFLOW-1160] Update Spark parameters for Mesos</p></li>
<li><p>[AIRFLOW 1149][AIRFLOW-1149] Allow for custom filters in Jinja2 templates</p></li>
<li><p>[AIRFLOW-1119] Fix unload query so headers are on first row[]</p></li>
<li><p>[AIRFLOW-1089] Add Spark application arguments</p></li>
<li><p>[AIRFLOW-1078] Fix latest_runs endpoint for old flask versions</p></li>
<li><p>[AIRFLOW-1074] Don’t count queued tasks for concurrency limits</p></li>
<li><p>[AIRFLOW-1064] Change default sort to job_id for TaskInstanceModelView</p></li>
<li><p>[AIRFLOW-1038] Specify celery serialization options explicitly</p></li>
<li><p>[AIRFLOW-1036] Randomize exponential backoff</p></li>
<li><p>[AIRFLOW-993] Update date inference logic</p></li>
<li><p>[AIRFLOW-1167] Support microseconds in FTPHook modification time</p></li>
<li><p>[AIRFLOW-1179] Fix pandas 0.2x breaking Google BigQuery change</p></li>
<li><p>[AIRFLOW-1263] Dynamic height for charts</p></li>
<li><p>[AIRFLOW-1266] Increase width of gantt y axis</p></li>
<li><p>[AIRFLOW-1290] set docs author to ‘Apache Airflow’</p></li>
<li><p>[AIRFLOW-1282] Fix known event column sorting</p></li>
<li><p>[AIRFLOW-1166] Speed up _change_state_for_tis_without_dagrun</p></li>
<li><p>[AIRFLOW-1192] Some enhancements to qubole_operator</p></li>
<li><p>[AIRFLOW-1281] Sort variables by key field by default</p></li>
<li><p>[AIRFLOW-1244] Forbid creation of a pool with empty name</p></li>
<li><p>[AIRFLOW-1243] DAGs table has no default entries to show</p></li>
<li><p>[AIRFLOW-1227] Remove empty column on the Logs view</p></li>
<li><p>[AIRFLOW-1226] Remove empty column on the Jobs view</p></li>
<li><p>[AIRFLOW-1199] Fix create modal</p></li>
<li><p>[AIRFLOW-1200] Forbid creation of a variable with an empty key</p></li>
<li><p>[AIRFLOW-1186] Sort dag.get_task_instances by execution_date</p></li>
<li><p>[AIRFLOW-1145] Fix closest_date_partition function with before set to True If we’re looking for the closest date before, we should take the latest date in the list of date before.</p></li>
<li><p>[AIRFLOW-1180] Fix flask-wtf version for test_csrf_rejection</p></li>
<li><p>[AIRFLOW-1170] DbApiHook insert_rows inserts parameters separately</p></li>
<li><p>[AIRFLOW-1150] Fix scripts execution in sparksql hook[]</p></li>
<li><p>[AIRFLOW-1168] Add closing() to all connections and cursors</p></li>
<li><p>[AIRFLOW-XXX] Updating CHANGELOG, README, and UPDATING after 1.8.1 release</p></li>
</ul>
</div>
</div>
<div class="section" id="airflow-1-8-1-2017-05-09">
<h2><a class="toc-backref" href="#id186">Airflow 1.8.1 (2017-05-09)</a><a class="headerlink" href="#airflow-1-8-1-2017-05-09" title="Permalink to this headline"></a></h2>
<div class="section" id="id146">
<h3>Significant Changes<a class="headerlink" href="#id146" title="Permalink to this headline"></a></h3>
<p>The Airflow package name was changed from <code class="docutils literal notranslate"><span class="pre">airflow</span></code> to <code class="docutils literal notranslate"><span class="pre">apache-airflow</span></code> during this release. You must uninstall
a previously installed version of Airflow before installing 1.8.1.</p>
</div>
<div class="section" id="id147">
<h3>Changelog<a class="headerlink" href="#id147" title="Permalink to this headline"></a></h3>
<ul class="simple">
<li><p>[AIRFLOW-1142] SubDAG Tasks Not Executed Even Though All Dependencies Met</p></li>
<li><p>[AIRFLOW-1138] Add licenses to files in scripts directory</p></li>
<li><p>[AIRFLOW-1127] Move license notices to LICENSE instead of NOTICE</p></li>
<li><p>[AIRFLOW-1124] Do not set all task instances to scheduled on backfill</p></li>
<li><p>[AIRFLOW-1120] Update version view to include Apache prefix</p></li>
<li><p>[AIRFLOW-1062] DagRun#find returns wrong result if external_trigger=False is specified</p></li>
<li><p>[AIRFLOW-1054] Fix broken import on test_dag</p></li>
<li><p>[AIRFLOW-1050] Retries ignored - regression</p></li>
<li><p>[AIRFLOW-1033] TypeError: can’t compare datetime.datetime to None</p></li>
<li><p>[AIRFLOW-1017] get_task_instance should return None instead of throw an exception for non-existent TIs</p></li>
<li><p>[AIRFLOW-1011] Fix bug in BackfillJob._execute() for SubDAGs</p></li>
<li><p>[AIRFLOW-1004] <code class="docutils literal notranslate"><span class="pre">airflow</span> <span class="pre">webserver</span> <span class="pre">-D</span></code> runs in foreground</p></li>
<li><p>[AIRFLOW-1001] Landing Time shows <code class="docutils literal notranslate"><span class="pre">unsupported</span> <span class="pre">operand</span> <span class="pre">type(s)</span> <span class="pre">for</span> <span class="pre">-:</span> <span class="pre">'datetime.datetime'</span> <span class="pre">and</span> <span class="pre">'NoneType'</span></code> on example_subdag_operator</p></li>
<li><p>[AIRFLOW-1000] Rebrand to Apache Airflow instead of Airflow</p></li>
<li><p>[AIRFLOW-989] Clear Task Regression</p></li>
<li><p>[AIRFLOW-974] airflow.util.file mkdir has a race condition</p></li>
<li><p>[AIRFLOW-906] Update Code icon from lightning bolt to file</p></li>
<li><p>[AIRFLOW-858] Configurable database name for DB operators</p></li>
<li><p>[AIRFLOW-853] ssh_execute_operator.py stdout decode default to ASCII</p></li>
<li><p>[AIRFLOW-832] Fix debug server</p></li>
<li><p>[AIRFLOW-817] Trigger dag fails when using CLI + API</p></li>
<li><p>[AIRFLOW-816] Make sure to pull nvd3 from local resources</p></li>
<li><p>[AIRFLOW-815] Add previous/next execution dates to available default variables.</p></li>
<li><p>[AIRFLOW-813] Fix unterminated unit tests in tests.job (tests/job.py)</p></li>
<li><p>[AIRFLOW-812] Scheduler job terminates when there is no dag file</p></li>
<li><p>[AIRFLOW-806] UI should properly ignore DAG doc when it is None</p></li>
<li><p>[AIRFLOW-794] Consistent access to DAGS_FOLDER and SQL_ALCHEMY_CONN</p></li>
<li><p>[AIRFLOW-785] ImportError if cgroupspy is not installed</p></li>
<li><p>[AIRFLOW-784] Cannot install with <code class="docutils literal notranslate"><span class="pre">funcsigs</span></code> &gt; 1.0.0</p></li>
<li><p>[AIRFLOW-780] The UI no longer shows broken DAGs</p></li>
<li><p>[AIRFLOW-777] dag_is_running is initialized to True instead of False</p></li>
<li><p>[AIRFLOW-719] Skipped operations make DAG finish prematurely</p></li>
<li><p>[AIRFLOW-694] Empty env vars do not overwrite non-empty config values</p></li>
<li><p>[AIRFLOW-492] Insert into dag_stats table results into failed task while task itself succeeded</p></li>
<li><p>[AIRFLOW-139] Executing VACUUM with PostgresOperator</p></li>
<li><p>[AIRFLOW-111] DAG concurrency is not honored</p></li>
<li><p>[AIRFLOW-88] Improve clarity Travis CI reports</p></li>
</ul>
</div>
</div>
<div class="section" id="airflow-1-8-0-2017-03-12">
<h2><a class="toc-backref" href="#id187">Airflow 1.8.0 (2017-03-12)</a><a class="headerlink" href="#airflow-1-8-0-2017-03-12" title="Permalink to this headline"></a></h2>
<div class="section" id="id148">
<h3>Significant Changes<a class="headerlink" href="#id148" title="Permalink to this headline"></a></h3>
<div class="section" id="database">
<h4>Database<a class="headerlink" href="#database" title="Permalink to this headline"></a></h4>
<p>The database schema needs to be upgraded. Make sure to shutdown Airflow and make a backup of your database. To
upgrade the schema issue <code class="docutils literal notranslate"><span class="pre">airflow</span> <span class="pre">upgradedb</span></code>.</p>
</div>
<div class="section" id="upgrade-systemd-unit-files">
<h4>Upgrade systemd unit files<a class="headerlink" href="#upgrade-systemd-unit-files" title="Permalink to this headline"></a></h4>
<p>Systemd unit files have been updated. If you use systemd please make sure to update these.</p>
<blockquote>
<div><p>Please note that the webserver does not detach properly, this will be fixed in a future version.</p>
</div></blockquote>
</div>
<div class="section" id="tasks-not-starting-although-dependencies-are-met-due-to-stricter-pool-checking">
<h4>Tasks not starting although dependencies are met due to stricter pool checking<a class="headerlink" href="#tasks-not-starting-although-dependencies-are-met-due-to-stricter-pool-checking" title="Permalink to this headline"></a></h4>
<p>Airflow 1.7.1 has issues with being able to over subscribe to a pool, ie. more slots could be used than were
available. This is fixed in Airflow 1.8.0, but due to past issue jobs may fail to start although their
dependencies are met after an upgrade. To workaround either temporarily increase the amount of slots above
the amount of queued tasks or use a new pool.</p>
</div>
<div class="section" id="less-forgiving-scheduler-on-dynamic-start-date">
<h4>Less forgiving scheduler on dynamic start_date<a class="headerlink" href="#less-forgiving-scheduler-on-dynamic-start-date" title="Permalink to this headline"></a></h4>
<p>Using a dynamic start_date (e.g. <code class="docutils literal notranslate"><span class="pre">start_date</span> <span class="pre">=</span> <span class="pre">datetime.now()</span></code>) is not considered a best practice. The 1.8.0 scheduler
is less forgiving in this area. If you encounter DAGs not being scheduled you can try using a fixed start_date and
renaming your DAG. The last step is required to make sure you start with a clean slate, otherwise the old schedule can
interfere.</p>
</div>
<div class="section" id="new-and-updated-scheduler-options">
<h4>New and updated scheduler options<a class="headerlink" href="#new-and-updated-scheduler-options" title="Permalink to this headline"></a></h4>
<p>Please read through the new scheduler options, defaults have changed since 1.7.1.</p>
<div class="section" id="child-process-log-directory">
<h5>child_process_log_directory<a class="headerlink" href="#child-process-log-directory" title="Permalink to this headline"></a></h5>
<p>In order to increase the robustness of the scheduler, DAGs are now processed in their own process. Therefore each
DAG has its own log file for the scheduler. These log files are placed in <code class="docutils literal notranslate"><span class="pre">child_process_log_directory</span></code> which defaults to
<code class="docutils literal notranslate"><span class="pre">&lt;AIRFLOW_HOME&gt;/scheduler/latest</span></code>. You will need to make sure these log files are removed.</p>
<blockquote>
<div><p>DAG logs or processor logs ignore and command line settings for log file locations.</p>
</div></blockquote>
</div>
<div class="section" id="run-duration">
<h5>run_duration<a class="headerlink" href="#run-duration" title="Permalink to this headline"></a></h5>
<p>Previously the command line option <code class="docutils literal notranslate"><span class="pre">num_runs</span></code> was used to let the scheduler terminate after a certain amount of
loops. This is now time bound and defaults to <code class="docutils literal notranslate"><span class="pre">-1</span></code>, which means run continuously. See also num_runs.</p>
</div>
<div class="section" id="num-runs">
<h5>num_runs<a class="headerlink" href="#num-runs" title="Permalink to this headline"></a></h5>
<p>Previously <code class="docutils literal notranslate"><span class="pre">num_runs</span></code> was used to let the scheduler terminate after a certain amount of loops. Now num_runs specifies
the number of times to try to schedule each DAG file within <code class="docutils literal notranslate"><span class="pre">run_duration</span></code> time. Defaults to <code class="docutils literal notranslate"><span class="pre">-1</span></code>, which means try
indefinitely. This is only available on the command line.</p>
</div>
<div class="section" id="min-file-process-interval">
<h5>min_file_process_interval<a class="headerlink" href="#min-file-process-interval" title="Permalink to this headline"></a></h5>
<p>After how much time should an updated DAG be picked up from the filesystem.</p>
</div>
<div class="section" id="min-file-parsing-loop-time">
<h5>min_file_parsing_loop_time<a class="headerlink" href="#min-file-parsing-loop-time" title="Permalink to this headline"></a></h5>
<p>CURRENTLY DISABLED DUE TO A BUG
How many seconds to wait between file-parsing loops to prevent the logs from being spammed.</p>
</div>
<div class="section" id="dag-dir-list-interval">
<h5>dag_dir_list_interval<a class="headerlink" href="#dag-dir-list-interval" title="Permalink to this headline"></a></h5>
<p>The frequency with which the scheduler should relist the contents of the DAG directory. If while developing +dags, they are not being picked up, have a look at this number and decrease it when necessary.</p>
</div>
<div class="section" id="catchup-by-default">
<h5>catchup_by_default<a class="headerlink" href="#catchup-by-default" title="Permalink to this headline"></a></h5>
<p>By default the scheduler will fill any missing interval DAG Runs between the last execution date and the current date.
This setting changes that behavior to only execute the latest interval. This can also be specified per DAG as
<code class="docutils literal notranslate"><span class="pre">catchup</span> <span class="pre">=</span> <span class="pre">False</span> <span class="pre">/</span> <span class="pre">True</span></code>. Command line backfills will still work.</p>
</div>
</div>
<div class="section" id="faulty-dags-do-not-show-an-error-in-the-web-ui">
<h4>Faulty DAGs do not show an error in the Web UI<a class="headerlink" href="#faulty-dags-do-not-show-an-error-in-the-web-ui" title="Permalink to this headline"></a></h4>
<p>Due to changes in the way Airflow processes DAGs the Web UI does not show an error when processing a faulty DAG. To
find processing errors go the <code class="docutils literal notranslate"><span class="pre">child_process_log_directory</span></code> which defaults to <code class="docutils literal notranslate"><span class="pre">&lt;AIRFLOW_HOME&gt;/scheduler/latest</span></code>.</p>
</div>
<div class="section" id="new-dags-are-paused-by-default">
<h4>New DAGs are paused by default<a class="headerlink" href="#new-dags-are-paused-by-default" title="Permalink to this headline"></a></h4>
<p>Previously, new DAGs would be scheduled immediately. To retain the old behavior, add this to airflow.cfg:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="p">[</span><span class="n">core</span><span class="p">]</span>
<span class="n">dags_are_paused_at_creation</span> <span class="o">=</span> <span class="kc">False</span>
</pre></div>
</div>
</div>
<div class="section" id="airflow-context-variable-are-passed-to-hive-config-if-conf-is-specified">
<h4>Airflow Context variable are passed to Hive config if conf is specified<a class="headerlink" href="#airflow-context-variable-are-passed-to-hive-config-if-conf-is-specified" title="Permalink to this headline"></a></h4>
<p>If you specify a hive conf to the run_cli command of the HiveHook, Airflow add some
convenience variables to the config. In case you run a secure Hadoop setup it might be
required to allow these variables by adjusting you hive configuration to add <code class="docutils literal notranslate"><span class="pre">airflow\.ctx\..*</span></code> to the regex
of user-editable configuration properties. See
<a class="reference external" href="https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=82903061#ConfigurationProperties-SQLStandardBasedAuthorization.1">the Hive docs on Configuration Properties</a> for more info.</p>
</div>
<div class="section" id="google-cloud-operator-and-hook-alignment">
<h4>Google Cloud Operator and Hook alignment<a class="headerlink" href="#google-cloud-operator-and-hook-alignment" title="Permalink to this headline"></a></h4>
<p>All Google Cloud Operators and Hooks are aligned and use the same client library. Now you have a single connection
type for all kinds of Google Cloud Operators.</p>
<p>If you experience problems connecting with your operator make sure you set the connection type “Google Cloud”.</p>
<p>Also the old P12 key file type is not supported anymore and only the new JSON key files are supported as a service
account.</p>
</div>
<div class="section" id="id149">
<h4>Deprecated Features<a class="headerlink" href="#id149" title="Permalink to this headline"></a></h4>
<p>These features are marked for deprecation. They may still work (and raise a <code class="docutils literal notranslate"><span class="pre">DeprecationWarning</span></code>), but are no longer
supported and will be removed entirely in Airflow 2.0</p>
<ul>
<li><p>Hooks and operators must be imported from their respective submodules</p>
<p><code class="docutils literal notranslate"><span class="pre">airflow.operators.PigOperator</span></code> is no longer supported; <code class="docutils literal notranslate"><span class="pre">from</span> <span class="pre">airflow.operators.pig_operator</span> <span class="pre">import</span> <span class="pre">PigOperator</span></code> is.
(AIRFLOW-31, AIRFLOW-200)</p>
</li>
<li><p>Operators no longer accept arbitrary arguments</p>
<p>Previously, <code class="docutils literal notranslate"><span class="pre">Operator.__init__()</span></code> accepted any arguments (either positional <code class="docutils literal notranslate"><span class="pre">*args</span></code> or keyword <code class="docutils literal notranslate"><span class="pre">**kwargs</span></code>) without
complaint. Now, invalid arguments will be rejected. (<a class="reference external" href="https://github.com/apache/airflow/pull/1285">https://github.com/apache/airflow/pull/1285</a>)</p>
</li>
<li><p>The config value secure_mode will default to True which will disable some insecure endpoints/features</p></li>
</ul>
</div>
<div class="section" id="known-issues">
<h4>Known Issues<a class="headerlink" href="#known-issues" title="Permalink to this headline"></a></h4>
<p>There is a report that the default of “-1” for num_runs creates an issue where errors are reported while parsing tasks.
It was not confirmed, but a workaround was found by changing the default back to <code class="docutils literal notranslate"><span class="pre">None</span></code>.</p>
<p>To do this edit <code class="docutils literal notranslate"><span class="pre">cli.py</span></code>, find the following:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="s1">&#39;num_runs&#39;</span><span class="p">:</span> <span class="n">Arg</span><span class="p">(</span>
<span class="p">(</span><span class="s2">&quot;-n&quot;</span><span class="p">,</span> <span class="s2">&quot;--num_runs&quot;</span><span class="p">),</span>
<span class="n">default</span><span class="o">=-</span><span class="mi">1</span><span class="p">,</span> <span class="nb">type</span><span class="o">=</span><span class="nb">int</span><span class="p">,</span>
<span class="n">help</span><span class="o">=</span><span class="s2">&quot;Set the number of runs to execute before exiting&quot;</span><span class="p">),</span>
</pre></div>
</div>
<p>and change <code class="docutils literal notranslate"><span class="pre">default=-1</span></code> to <code class="docutils literal notranslate"><span class="pre">default=None</span></code>. If you have this issue please report it on the mailing list.</p>
</div>
</div>
<div class="section" id="id150">
<h3>Changelog<a class="headerlink" href="#id150" title="Permalink to this headline"></a></h3>
<ul class="simple">
<li><p>[AIRFLOW-900] Double trigger should not kill original task instance</p></li>
<li><p>[AIRFLOW-900] Fixes bugs in LocalTaskJob for double run protection</p></li>
<li><p>[AIRFLOW-932] Do not mark tasks removed when backfilling</p></li>
<li><p>[AIRFLOW-961] run onkill when SIGTERMed</p></li>
<li><p>[AIRFLOW-910] Use parallel task execution for backfills</p></li>
<li><p>[AIRFLOW-967] Wrap strings in native for py2 ldap compatibility</p></li>
<li><p>[AIRFLOW-941] Use defined parameters for psycopg2</p></li>
<li><p>[AIRFLOW-719] Prevent DAGs from ending prematurely</p></li>
<li><p>[AIRFLOW-938] Use test for True in task_stats queries</p></li>
<li><p>[AIRFLOW-937] Improve performance of task_stats</p></li>
<li><p>[AIRFLOW-933] use ast.literal_eval rather eval because ast.literal_eval does not execute input.</p></li>
<li><p>[AIRFLOW-925] Revert airflow.hooks change that cherry-pick picked</p></li>
<li><p>[AIRFLOW-919] Running tasks with no start date should not break a DAGs UI</p></li>
<li><p>[AIRFLOW-802] Add spark-submit operator/hook</p></li>
<li><p>[AIRFLOW-897] Prevent dagruns from failing with unfinished tasks</p></li>
<li><p>[AIRFLOW-861] make pickle_info endpoint be login_required</p></li>
<li><p>[AIRFLOW-853] use utf8 encoding for stdout line decode</p></li>
<li><p>[AIRFLOW-856] Make sure execution date is set for local client</p></li>
<li><p>[AIRFLOW-830][AIRFLOW-829][AIRFLOW-88] Reduce Travis log verbosity</p></li>
<li><p>[AIRFLOW-831] Restore import to fix broken tests</p></li>
<li><p>[AIRFLOW-794] Access DAGS_FOLDER and SQL_ALCHEMY_CONN exclusively from settings</p></li>
<li><p>[AIRFLOW-694] Fix config behaviour for empty envvar</p></li>
<li><p>[AIRFLOW-365] Set dag.fileloc explicitly and use for Code view</p></li>
<li><p>[AIRFLOW-931] Do not set QUEUED in TaskInstances</p></li>
<li><p>[AIRFLOW-899] Tasks in SCHEDULED state should be white in the UI instead of black</p></li>
<li><p>[AIRFLOW-895] Address Apache release incompliancies</p></li>
<li><p>[AIRFLOW-893][AIRFLOW-510] Fix crashing webservers when a dagrun has no start date</p></li>
<li><p>[AIRFLOW-793] Enable compressed loading in S3ToHiveTransfer</p></li>
<li><p>[AIRFLOW-863] Example DAGs should have recent start dates</p></li>
<li><p>[AIRFLOW-869] Refactor mark success functionality</p></li>
<li><p>[AIRFLOW-856] Make sure execution date is set for local client</p></li>
<li><p>[AIRFLOW-814] Fix Presto*CheckOperator.__init__</p></li>
<li><p>[AIRFLOW-844] Fix cgroups directory creation</p></li>
<li><p>[AIRFLOW-816] Use static nvd3 and d3</p></li>
<li><p>[AIRFLOW-821] Fix py3 compatibility</p></li>
<li><p>[AIRFLOW-817] Check for None value of execution_date in endpoint</p></li>
<li><p>[AIRFLOW-822] Close db before exception</p></li>
<li><p>[AIRFLOW-815] Add prev/next execution dates to template variables</p></li>
<li><p>[AIRFLOW-813] Fix unterminated unit tests in SchedulerJobTest</p></li>
<li><p>[AIRFLOW-813] Fix unterminated scheduler unit tests</p></li>
<li><p>[AIRFLOW-806] UI should properly ignore DAG doc when it is None</p></li>
<li><p>[AIRFLOW-812] Fix the scheduler termination bug.</p></li>
<li><p>[AIRFLOW-780] Fix dag import errors no longer working</p></li>
<li><p>[AIRFLOW-783] Fix py3 incompatibility in BaseTaskRunner</p></li>
<li><p>[AIRFLOW-810] Correct down_revision dag_id/state index creation</p></li>
<li><p>[AIRFLOW-807] Improve scheduler performance for large DAGs</p></li>
<li><p>[AIRFLOW-798] Check return_code before forcing termination</p></li>
<li><p>[AIRFLOW-139] Let psycopg2 handle autocommit for PostgresHook</p></li>
<li><p>[AIRFLOW-776] Add missing cgroups devel dependency</p></li>
<li><p>[AIRFLOW-777] Fix expression to check if a DagRun is in running state</p></li>
<li><p>[AIRFLOW-785] Don’t import CgroupTaskRunner at global scope</p></li>
<li><p>[AIRFLOW-784] Pin <code class="docutils literal notranslate"><span class="pre">funcsigs</span></code> to 1.0.0</p></li>
<li><p>[AIRFLOW-624] Fix setup.py to not import airflow.version as version</p></li>
<li><p>[AIRFLOW-779] Task should fail with specific message when deleted</p></li>
<li><p>[AIRFLOW-778] Fix completely broken MetastorePartitionSensor</p></li>
<li><p>[AIRFLOW-739] Set pickle_info log to debug</p></li>
<li><p>[AIRFLOW-771] Make S3 logs append instead of clobber</p></li>
<li><p>[AIRFLOW-773] Fix flaky datetime addition in api test</p></li>
<li><p>[AIRFLOW-219][AIRFLOW-398] Cgroups + impersonation</p></li>
<li><p>[AIRFLOW-683] Add Jira hook, operator and sensor</p></li>
<li><p>[AIRFLOW-762] Add Google DataProc delete operator</p></li>
<li><p>[AIRFLOW-760] Update systemd config</p></li>
<li><p>[AIRFLOW-759] Use previous dag_run to verify depend_on_past</p></li>
<li><p>[AIRFLOW-757] Set child_process_log_directory default more sensible</p></li>
<li><p>[AIRFLOW-692] Open XCom page to super-admins only</p></li>
<li><p>[AIRFLOW-737] Fix HDFS Sensor directory.</p></li>
<li><p>[AIRFLOW-747] Fix retry_delay not honoured</p></li>
<li><p>[AIRFLOW-558] Add Support for dag.catchup=(True|False) Option</p></li>
<li><p>[AIRFLOW-489] Allow specifying execution date in trigger_dag API</p></li>
<li><p>[AIRFLOW-738] Commit deleted xcom items before insert</p></li>
<li><p>[AIRFLOW-729] Add Google Cloud Dataproc cluster creation operator</p></li>
<li><p>[AIRFLOW-728] Add Google BigQuery table sensor</p></li>
<li><p>[AIRFLOW-741] Log to debug instead of info for app.py</p></li>
<li><p>[AIRFLOW-731] Fix period bug for NamedHivePartitionSensor</p></li>
<li><p>[AIRFLOW-740] Pin jinja2 to &lt; 2.9.0</p></li>
<li><p>[AIRFLOW-663] Improve time units for task performance charts</p></li>
<li><p>[AIRFLOW-665] Fix email attachments</p></li>
<li><p>[AIRFLOW-734] Fix SMTP auth regression when not using user/pass</p></li>
<li><p>[AIRFLOW-702] Fix LDAP Regex Bug</p></li>
<li><p>[AIRFLOW-717] Add Cloud Storage updated sensor</p></li>
<li><p>[AIRFLOW-695] Retries do not execute because dagrun is in FAILED state</p></li>
<li><p>[AIRFLOW-673] Add operational metrics test for SchedulerJob</p></li>
<li><p>[AIRFLOW-727] try_number is not increased</p></li>
<li><p>[AIRFLOW-715] A more efficient HDFS Sensor:</p></li>
<li><p>[AIRFLOW-716] Allow AVRO BigQuery load-job without schema</p></li>
<li><p>[AIRFLOW-718] Allow the query URI for DataProc Pig</p></li>
<li><p>Log needs to be part of try/catch block</p></li>
<li><p>[AIRFLOW-721] Descendant process can disappear before termination</p></li>
<li><p>[AIRFLOW-403] Bash operator’s kill method leaves underlying processes running</p></li>
<li><p>[AIRFLOW-657] Add AutoCommit Parameter for MSSQL</p></li>
<li><p>[AIRFLOW-641] Improve pull request instructions</p></li>
<li><p>[AIRFLOW-685] Add test for MySqlHook.bulk_load()</p></li>
<li><p>[AIRFLOW-686] Match auth backend config section</p></li>
<li><p>[AIRFLOW-691] Add SSH KeepAlive option to SSH_hook</p></li>
<li><p>[AIRFLOW-709] Use same engine for migrations and reflection</p></li>
<li><p>[AIRFLOW-700] Update to reference to web authentication documentation</p></li>
<li><p>[AIRFLOW-649] Support non-sched DAGs in LatestOnlyOp</p></li>
<li><p>[AIRFLOW-712] Fix AIRFLOW-667 to use proper HTTP error properties</p></li>
<li><p>[AIRFLOW-710] Add OneFineStay as official user</p></li>
<li><p>[AIRFLOW-703][AIRFLOW-1] Stop Xcom being cleared too early</p></li>
<li><p>[AIRFLOW-679] Stop concurrent task instances from running</p></li>
<li><p>[AIRFLOW-704][AIRFLOW-1] Fix invalid syntax in BQ hook</p></li>
<li><p>[AIRFLOW-667] Handle BigQuery 503 error</p></li>
<li><p>[AIRFLOW-680] Disable connection pool for commands</p></li>
<li><p>[AIRFLOW-678] Prevent scheduler from double triggering TIs</p></li>
<li><p>[AIRFLOW-677] Kill task if it fails to heartbeat</p></li>
<li><p>[AIRFLOW-674] Ability to add descriptions for DAGs</p></li>
<li><p>[AIRFLOW-682] Bump MAX_PERIODS to make mark_success work for large DAGs</p></li>
<li><p>Use jdk selector to set required jdk</p></li>
<li><p>[AIRFLOW-647] Restore dag.get_active_runs</p></li>
<li><p>[AIRFLOW-662] Change seasons to months in project description</p></li>
<li><p>[AIRFLOW-656] Add dag/task/date index to xcom table</p></li>
<li><p>[AIRFLOW-658] Improve schema_update_options in GCP</p></li>
<li><p>[AIRFLOW-41] Fix pool oversubscription</p></li>
<li><p>[AIRFLOW-489] Add API Framework</p></li>
<li><p>[AIRFLOW-653] Add some missing endpoint tests</p></li>
<li><p>[AIRFLOW-652] Remove obsolete endpoint</p></li>
<li><p>[AIRFLOW-345] Add contrib ECSOperator</p></li>
<li><p>[AIRFLOW-650] Adding Celect to user list</p></li>
<li><p>[AIRFLOW-510] Filter Paused Dags, show Last Run &amp; Trigger Dag</p></li>
<li><p>[AIRFLOW-643] Improve date handling for sf_hook</p></li>
<li><p>[AIRFLOW-638] Add schema_update_options to GCP ops</p></li>
<li><p>[AIRFLOW-640] Install and enable nose-ignore-docstring</p></li>
<li><p>[AIRFLOW-639]AIRFLOW-639] Alphasort package names</p></li>
<li><p>[AIRFLOW-375] Fix pylint errors</p></li>
<li><p>[AIRFLOW-347] Show empty DAG runs in tree view</p></li>
<li><p>[AIRFLOW-628] Adding SalesforceHook to contrib/hooks</p></li>
<li><p>[AIRFLOW-514] hive hook loads data from pandas DataFrame into hive and infers types</p></li>
<li><p>[AIRFLOW-565] Fixes DockerOperator on Python3.x</p></li>
<li><p>[AIRFLOW-635] Encryption option for S3 hook</p></li>
<li><p>[AIRFLOW-137] Fix max_active_runs on clearing tasks</p></li>
<li><p>[AIRFLOW-343] Fix schema plumbing in HiveServer2Hook</p></li>
<li><p>[AIRFLOW-130] Fix ssh operator macosx</p></li>
<li><p>[AIRFLOW-633] Show TI attributes in TI view</p></li>
<li><p>[AIRFLOW-626][AIRFLOW-1] HTML Content does not show up when sending email with attachment</p></li>
<li><p>[AIRFLOW-533] Set autocommit via set_autocommit</p></li>
<li><p>[AIRFLOW-629] stop pinning lxml</p></li>
<li><p>[AIRFLOW-464] Add setdefault method to Variable</p></li>
<li><p>[AIRFLOW-626][AIRFLOW-1] HTML Content does not show up when sending email with attachment</p></li>
<li><p>[AIRFLOW-591] Add datadog hook &amp; sensor</p></li>
<li><p>[AIRFLOW-561] Add RedshiftToS3Transfer operator</p></li>
<li><p>[AIRFLOW-570] Pass root to date form on gantt</p></li>
<li><p>[AIRFLOW-504] Store fractional seconds in MySQL tables</p></li>
<li><p>[AIRFLOW-623] LDAP attributes not always a list</p></li>
<li><p>[AIRFLOW-611] source_format in BigQueryBaseCursor</p></li>
<li><p>[AIRFLOW-619] Fix exception in Gantt chart</p></li>
<li><p>[AIRFLOW-618] Cast DateTimes to avoid sqlite errors</p></li>
<li><p>[AIRFLOW-422] Add JSON endpoint for task info</p></li>
<li><p>[AIRFLOW-616][AIRFLOW-617] Minor fixes to PR tool UX</p></li>
<li><p>[AIRFLOW-179] Fix DbApiHook with non-ASCII chars</p></li>
<li><p>[AIRFLOW-566] Add timeout while fetching logs</p></li>
<li><p>[AIRFLOW-615] Set graph glyphicon first</p></li>
<li><p>[AIRFLOW-609] Add application_name to PostgresHook</p></li>
<li><p>[AIRFLOW-604] Revert .first() to .one()</p></li>
<li><p>[AIRFLOW-370] Create AirflowConfigException in exceptions.py</p></li>
<li><p>[AIRFLOW-582] Fixes TI.get_dagrun filter (removes start_date)</p></li>
<li><p>[AIRFLOW-568] Fix double task_stats count if a DagRun is active</p></li>
<li><p>[AIRFLOW-585] Fix race condition in backfill execution loop</p></li>
<li><p>[AIRFLOW-580] Prevent landscape warning on .format</p></li>
<li><p>[AIRFLOW-597] Check if content is None, not false-equivalent</p></li>
<li><p>[AIRFLOW-586] test_dag_v1 fails from 0 to 3 a.m.</p></li>
<li><p>[AIRFLOW-453] Add XCom Admin Page</p></li>
<li><p>[AIRFLOW-588] Add Google Cloud Storage Object sensor[]</p></li>
<li><p>[AIRFLOW-592] example_xcom import Error</p></li>
<li><p>[AIRFLOW-587] Fix incorrect scope for Google Auth[]</p></li>
<li><p>[AIRFLOW-589] Add templatable job_name[]</p></li>
<li><p>[AIRFLOW-227] Show running config in config view</p></li>
<li><p>[AIRFLOW-319]AIRFLOW-319] xcom push response in HTTP Operator</p></li>
<li><p>[AIRFLOW-385] Add symlink to latest scheduler log directory</p></li>
<li><p>[AIRFLOW-583] Fix decode error in gcs_to_bq</p></li>
<li><p>[AIRFLOW-96] s3_conn_id using environment variable</p></li>
<li><p>[AIRFLOW-575] Clarify tutorial and FAQ about <code class="docutils literal notranslate"><span class="pre">schedule_interval</span></code> always inheriting from DAG object</p></li>
<li><p>[AIRFLOW-577] Output BigQuery job for improved debugging</p></li>
<li><p>[AIRFLOW-560] Get URI &amp; SQLA engine from Connection</p></li>
<li><p>[AIRFLOW-518] Require DataProfilingMixin for Variables CRUD</p></li>
<li><p>[AIRFLOW-553] Fix load path for filters.js</p></li>
<li><p>[AIRFLOW-554] Add Jinja support to Spark-sql</p></li>
<li><p>[AIRFLOW-550] Make ssl config check empty string safe</p></li>
<li><p>[AIRFLOW-500] Use id for github allowed teams</p></li>
<li><p>[AIRFLOW-556] Add UI PR guidelines</p></li>
<li><p>[AIRFLOW-358][AIRFLOW-430] Add <code class="docutils literal notranslate"><span class="pre">connections</span></code> cli</p></li>
<li><p>[AIRFLOW-548] Load DAGs immediately &amp; continually</p></li>
<li><p>[AIRFLOW-539] Updated BQ hook and BQ operator to support Standard SQL.</p></li>
<li><p>[AIRFLOW-378] Add string casting to params of spark-sql operator</p></li>
<li><p>[AIRFLOW-544] Add Pause/Resume toggle button</p></li>
<li><p>[AIRFLOW-333][AIRFLOW-258] Fix non-module plugin components</p></li>
<li><p>[AIRFLOW-542] Add tooltip to DAGs links icons</p></li>
<li><p>[AIRFLOW-530] Update docs to reflect connection environment var has to be in uppercase</p></li>
<li><p>[AIRFLOW-525] Update template_fields in Qubole Op</p></li>
<li><p>[AIRFLOW-480] Support binary file download from GCS</p></li>
<li><p>[AIRFLOW-198] Implement latest_only_operator</p></li>
<li><p>[AIRFLOW-91] Add SSL config option for the webserver</p></li>
<li><p>[AIRFLOW-191] Fix connection leak with PostgreSQL backend</p></li>
<li><p>[AIRFLOW-512] Fix ‘bellow’ typo in docs &amp; comments</p></li>
<li><p>[AIRFLOW-509][AIRFLOW-1] Create operator to delete tables in BigQuery</p></li>
<li><p>[AIRFLOW-498] Remove hard-coded gcp project id</p></li>
<li><p>[AIRFLOW-505] Support unicode characters in authors’ names</p></li>
<li><p>[AIRFLOW-494] Add per-operator success/failure metrics</p></li>
<li><p>[AIRFLOW-488] Fix test_simple fail</p></li>
<li><p>[AIRFLOW-468] Update panda requirement to 0.17.1</p></li>
<li><p>[AIRFLOW-159] Add cloud integration section + GCP documentation</p></li>
<li><p>[AIRFLOW-477][AIRFLOW-478] Restructure security section for clarity</p></li>
<li><p>[AIRFLOW-467] Allow defining of project_id in BigQueryHook</p></li>
<li><p>[AIRFLOW-483] Change print to logging statement</p></li>
<li><p>[AIRFLOW-475] make the segment granularity in Druid hook configurable</p></li>
</ul>
</div>
</div>
<div class="section" id="airflow-1-7-1-2-2016-05-20">
<h2><a class="toc-backref" href="#id188">Airflow 1.7.1.2 (2016-05-20)</a><a class="headerlink" href="#airflow-1-7-1-2-2016-05-20" title="Permalink to this headline"></a></h2>
<div class="section" id="id151">
<h3>Significant Changes<a class="headerlink" href="#id151" title="Permalink to this headline"></a></h3>
<div class="section" id="changes-to-configuration">
<h4>Changes to Configuration<a class="headerlink" href="#changes-to-configuration" title="Permalink to this headline"></a></h4>
<div class="section" id="email-configuration-change">
<h5>Email configuration change<a class="headerlink" href="#email-configuration-change" title="Permalink to this headline"></a></h5>
<p>To continue using the default smtp email backend, change the email_backend line in your config file from:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="p">[</span><span class="n">email</span><span class="p">]</span>
<span class="n">email_backend</span> <span class="o">=</span> <span class="n">airflow</span><span class="o">.</span><span class="n">utils</span><span class="o">.</span><span class="n">send_email_smtp</span>
</pre></div>
</div>
<p>to:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="p">[</span><span class="n">email</span><span class="p">]</span>
<span class="n">email_backend</span> <span class="o">=</span> <span class="n">airflow</span><span class="o">.</span><span class="n">utils</span><span class="o">.</span><span class="n">email</span><span class="o">.</span><span class="n">send_email_smtp</span>
</pre></div>
</div>
</div>
<div class="section" id="s3-configuration-change">
<h5>S3 configuration change<a class="headerlink" href="#s3-configuration-change" title="Permalink to this headline"></a></h5>
<p>To continue using S3 logging, update your config file so:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">s3_log_folder</span> <span class="o">=</span> <span class="n">s3</span><span class="p">:</span><span class="o">//</span><span class="n">my</span><span class="o">-</span><span class="n">airflow</span><span class="o">-</span><span class="n">log</span><span class="o">-</span><span class="n">bucket</span><span class="o">/</span><span class="n">logs</span>
</pre></div>
</div>
<p>becomes:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">remote_base_log_folder</span> <span class="o">=</span> <span class="n">s3</span><span class="p">:</span><span class="o">//</span><span class="n">my</span><span class="o">-</span><span class="n">airflow</span><span class="o">-</span><span class="n">log</span><span class="o">-</span><span class="n">bucket</span><span class="o">/</span><span class="n">logs</span>
<span class="n">remote_log_conn_id</span> <span class="o">=</span> <span class="o">&lt;</span><span class="n">your</span> <span class="n">desired</span> <span class="n">s3</span> <span class="n">connection</span><span class="o">&gt;</span>
</pre></div>
</div>
</div>
</div>
</div>
<div class="section" id="id152">
<h3>Changelog<a class="headerlink" href="#id152" title="Permalink to this headline"></a></h3>
<ul class="simple">
<li><p>[AIRFLOW-463] Link Airflow icon to landing page</p></li>
<li><p>[AIRFLOW-149] Task Dependency Engine + Why Isn’t My Task Running View</p></li>
<li><p>[AIRFLOW-361] Add default failure handler for the Qubole Operator</p></li>
<li><p>[AIRFLOW-353] Fix dag run status update failure</p></li>
<li><p>[AIRFLOW-447] Store source URIs in Python 3 compatible list</p></li>
<li><p>[AIRFLOW-443] Make module names unique when importing</p></li>
<li><p>[AIRFLOW-444] Add Google authentication backend</p></li>
<li><p>[AIRFLOW-446][AIRFLOW-445] Adds missing dataproc submit options</p></li>
<li><p>[AIRFLOW-431] Add CLI for CRUD operations on pools</p></li>
<li><p>[AIRFLOW-329] Update Dag Overview Page with Better Status Columns</p></li>
<li><p>[AIRFLOW-360] Fix style warnings in models.py</p></li>
<li><p>[AIRFLOW-425] Add white fill for null state tasks in tree view.</p></li>
<li><p>[AIRFLOW-69] Use dag runs in backfill jobs</p></li>
<li><p>[AIRFLOW-415] Make dag_id not found error clearer</p></li>
<li><p>[AIRFLOW-416] Use ordinals in README’s company list</p></li>
<li><p>[AIRFLOW-369] Allow setting default DAG orientation</p></li>
<li><p>[AIRFLOW-410] Add 2 Q/A to the FAQ in the docs</p></li>
<li><p>[AIRFLOW-407] Add different colors for some sensors</p></li>
<li><p>[AIRFLOW-414] Improve error message for missing FERNET_KEY</p></li>
<li><p>[AIRFLOW-406] Sphinx/rst fixes</p></li>
<li><p>[AIRFLOW-412] Fix lxml dependency</p></li>
<li><p>[AIRFLOW-413] Fix unset path bug when backfilling via pickle</p></li>
<li><p>[AIRFLOW-78] Airflow clear leaves dag_runs</p></li>
<li><p>[AIRFLOW-402] Remove NamedHivePartitionSensor static check, add docs</p></li>
<li><p>[AIRFLOW-394] Add an option to the Task Duration graph to show cumulative times</p></li>
<li><p>[AIRFLOW-404] Retry download if unpacking fails for hive</p></li>
<li><p>[AIRFLOW-276] Gunicorn rolling restart</p></li>
<li><p>[AIRFLOW-399] Remove dags/testdruid.py</p></li>
<li><p>[AIRFLOW-400] models.py/DAG.set_dag_runs_state() does not correctly set state</p></li>
<li><p>[AIRFLOW-395] Fix colon/equal signs typo for resources in default config</p></li>
<li><p>[AIRFLOW-397] Documentation: Fix typo in the word “instantiating”</p></li>
<li><p>[AIRFLOW-395] Remove trailing commas from resources in config</p></li>
<li><p>[AIRFLOW-388] Add a new chart for Task_Tries for each DAG</p></li>
<li><p>[AIRFLOW-322] Fix typo in FAQ section</p></li>
<li><p>[AIRFLOW-375] Pylint fixes</p></li>
<li><p>limit scope to user email only AIRFLOW-386</p></li>
<li><p>[AIRFLOW-383] Cleanup example qubole operator dag</p></li>
<li><p>[AIRFLOW-160] Parse DAG files through child processes</p></li>
<li><p>[AIRFLOW-381] Manual UI Dag Run creation: require dag_id field</p></li>
<li><p>[AIRFLOW-373] Enhance CLI variables functionality</p></li>
<li><p>[AIRFLOW-379] Enhance Variables page functionality: import/export variables</p></li>
<li><p>[AIRFLOW-331] modify the LDAP authentication config lines in ‘Security’ sample codes</p></li>
<li><p>[AIRFLOW-356][AIRFLOW-355][AIRFLOW-354] Replace nobr, enable DAG only exists locally message, change edit DAG icon</p></li>
<li><p>[AIRFLOW-362] Import __future__ division</p></li>
<li><p>[AIRFLOW-359] Pin flask-login to 0.2.11</p></li>
<li><p>[AIRFLOW-261] Add bcc and cc fields to EmailOperator</p></li>
<li><p>[AIRFLOW-348] Fix code style warnings</p></li>
<li><p>[AIRFLOW-349] Add metric for number of zombies killed</p></li>
<li><p>[AIRFLOW-340] Remove unused dependency on Babel</p></li>
<li><p>[AIRFLOW-339]: Ability to pass a flower conf file</p></li>
<li><p>[AIRFLOW-341][operators] Add resource requirement attributes to operators</p></li>
<li><p>[AIRFLOW-335] Fix simple style errors/warnings</p></li>
<li><p>[AIRFLOW-337] Add __repr__ to VariableAccessor and VariableJsonAccessor</p></li>
<li><p>[AIRFLOW-334] Fix using undefined variable</p></li>
<li><p>[AIRFLOW-315] Fix blank lines code style warnings</p></li>
<li><p>[AIRFLOW-306] Add Spark-sql Hook and Operator</p></li>
<li><p>[AIRFLOW-327] Add rename method to the FTPHook</p></li>
<li><p>[AIRFLOW-321] Fix a wrong code example about tests/dags</p></li>
<li><p>[AIRFLOW-316] Always check DB state for Backfill Job execution</p></li>
<li><p>[AIRFLOW-264] Adding workload management for Hive</p></li>
<li><p>[AIRFLOW-297] support exponential backoff option for retry delay</p></li>
<li><p>[AIRFLOW-31][AIRFLOW-200] Add note to updating.md</p></li>
<li><p>[AIRFLOW-307] There is no __neq__ Python magic method.</p></li>
<li><p>[AIRFLOW-309] Add requirements of develop dependencies to docs</p></li>
<li><p>[AIRFLOW-307] Rename __neq__ to __ne__ Python magic method.</p></li>
<li><p>[AIRFLOW-313] Fix code style for sqoop_hook.py</p></li>
<li><p>[AIRFLOW-311] Fix wrong path in CONTRIBUTING.md</p></li>
<li><p>[AIRFLOW-24] DataFlow Java Operator</p></li>
<li><p>[AIRFLOW-308] Add link to refresh DAG within DAG view header</p></li>
<li><p>[AIRFLOW-314] Fix BigQuery cursor run_table_upsert method</p></li>
<li><p>[AIRFLOW-298] fix incubator disclaimer in docs</p></li>
<li><p>[AIRFLOW-284] HiveServer2Hook fix for cursor scope for get_results</p></li>
<li><p>[AIRFLOW-260] More graceful exit when issues can’t be closed</p></li>
<li><p>[AIRFLOW-260] Handle case when no version is found</p></li>
<li><p>[AIRFLOW-228] Handle empty version list in PR tool</p></li>
<li><p>[AIRFLOW-302] Improve default squash commit message</p></li>
<li><p>[AIRFLOW-187] Improve prompt styling</p></li>
<li><p>[AIRFLOW-187] Fix typo in argument name</p></li>
<li><p>[AIRFLOW-187] Move “Close XXX” message to end of squash commit</p></li>
<li><p>[AIRFLOW-247] Add EMR hook, operators and sensors. Add AWS base hook</p></li>
<li><p>[AIRFLOW-301] Fix broken unit test</p></li>
<li><p>[AIRFLOW-100] Add execution_date_fn to ExternalTaskSensor</p></li>
<li><p>[AIRFLOW-282] Remove PR Tool logic that depends on version formatting</p></li>
<li><p>[AIRFLOW-291] Add index for state in TI table</p></li>
<li><p>[AIRFLOW-269] Add some unit tests for PostgreSQL</p></li>
<li><p>[AIRFLOW-296] template_ext is being treated as a string rather than a tuple in qubole operator</p></li>
<li><p>[AIRFLOW-286] Improve FTPHook to implement context manager interface</p></li>
<li><p>[AIRFLOW-243] Create NamedHivePartitionSensor</p></li>
<li><p>[AIRFLOW-246] Improve dag_stats endpoint query</p></li>
<li><p>[AIRFLOW-189] Highlighting of Parent/Child nodes in Graphs</p></li>
<li><p>[ARFLOW-255] Check dagrun timeout when comparing active runs</p></li>
<li><p>[AIRFLOW-281] Add port to mssql_hook</p></li>
<li><p>[AIRFLOW-285] Use Airflow 2.0 style imports for all remaining hooks/operators</p></li>
<li><p>[AIRFLOW-40] Add LDAP group filtering feature.</p></li>
<li><p>[AIRFLOW-277] Multiple deletions does not work in Task Instances view if using SQLite backend</p></li>
<li><p>[AIRFLOW-200] Make hook/operator imports lazy, and print proper exceptions</p></li>
<li><p>[AIRFLOW-283] Make store_to_xcom_key a templated field in GoogleCloudStorageDownloadOperator</p></li>
<li><p>[AIRFLOW-278] Support utf-8 encoding for SQL</p></li>
<li><p>[AIRFLOW-280] clean up tmp druid table no matter if an ingestion job succeeds or not</p></li>
<li><p>[AIRFLOW-274] Add XCom functionality to GoogleCloudStorageDownloadOperator</p></li>
<li><p>[AIRFLOW-273] Create an svg version of the Airflow logo.</p></li>
<li><p>[AIRFLOW-275] Update contributing guidelines</p></li>
<li><p>[AIRFLOW-244] Modify hive operator to inject analysis data</p></li>
<li><p>[AIRFLOW-162] Allow variable to be accessible into templates</p></li>
<li><p>[AIRFLOW-248] Add Apache license header to all files</p></li>
<li><p>[AIRFLOW-263] Remove temp backtick file</p></li>
<li><p>[AIRFLOW-252] Raise Sqlite exceptions when deleting tasks instance in WebUI</p></li>
<li><p>[AIRFLOW-180] Fix timeout behavior for sensors</p></li>
<li><p>[AIRFLOW-262] Simplify commands in MANIFEST.in</p></li>
<li><p>[AIRFLOW-31] Add zope dependency</p></li>
<li><p>[AIRFLOW-6] Remove dependency on Highcharts</p></li>
<li><p>[AIRFLOW-234] make task that are not <code class="docutils literal notranslate"><span class="pre">running</span></code> self-terminate</p></li>
<li><p>[AIRFLOW-256] Fix test_scheduler_reschedule heartrate</p></li>
<li><p>Add Python 3 compatibility fix</p></li>
<li><p>[AIRFLOW-31] Use standard imports for hooks/operators</p></li>
<li><p>[AIRFLOW-173] Initial implementation of FileSensor</p></li>
<li><p>[AIRFLOW-224] Collect orphaned tasks and reschedule them</p></li>
<li><p>[AIRFLOW-239] Fix tests indentation</p></li>
<li><p>[AIRFLOW-225] Better units for task duration graph</p></li>
<li><p>[AIRFLOW-241] Add testing done section to PR template</p></li>
<li><p>[AIRFLOW-222] Show duration of task instances in ui</p></li>
<li><p>[AIRFLOW-231] Do not eval user input in PrestoHook</p></li>
<li><p>[AIRFLOW-216] Add Sqoop Hook and Operator</p></li>
<li><p>[AIRFLOW-171] Add upgrade notes on email and S3 to 1.7.1.2</p></li>
<li><p>[AIRFLOW-238] Make compatible with flask-admin 1.4.1</p></li>
<li><p>[AIRFLOW-230][HiveServer2Hook] adding multi statements support</p></li>
<li><p>[AIRFLOW-142] setup_env.sh doesn’t download hive tarball if hdp is specified as distro</p></li>
<li><p>[AIRFLOW-223] Make parametable the IP on which Flower binds to</p></li>
<li><p>[AIRFLOW-218] Added option to enable webserver gunicorn access/err logs</p></li>
<li><p>[AIRFLOW-213] Add “Closes #X” phrase to commit messages</p></li>
<li><p>[AIRFLOW-68] Align start_date with the schedule_interval</p></li>
<li><p>[AIRFLOW-9] Improving docs to meet Apache’s standards</p></li>
<li><p>[AIRFLOW-131] Make XCom.clear more selective</p></li>
<li><p>[AIRFLOW-214] Fix occasion of detached taskinstance</p></li>
<li><p>[AIRFLOW-206] Add commit to close PR</p></li>
<li><p>[AIRFLOW-206] Always load local log files if they exist</p></li>
<li><p>[AIRFLOW-211] Fix JIRA “resolve” vs “close” behavior</p></li>
<li><p>[AIRFLOW-64] Add note about relative DAGS_FOLDER</p></li>
<li><p>[AIRFLOW-114] Sort plugins dropdown</p></li>
<li><p>[AIRFLOW-209] Add scheduler tests and improve lineage handling</p></li>
<li><p>[AIRFLOW-207] Improve JIRA auth workflow</p></li>
<li><p>[AIRFLOW-187] Improve PR tool UX</p></li>
<li><p>[AIRFLOW-155] Documentation of Qubole Operator</p></li>
<li><p>Optimize and refactor process_dag</p></li>
<li><p>[AIRFLOW-185] Handle empty versions list</p></li>
<li><p>[AIRFLOW-201] Fix for HiveMetastoreHook + kerberos</p></li>
<li><p>[AIRFLOW-202]: Fixes stray print line</p></li>
<li><p>[AIRFLOW-196] Fix bug that exception is not handled in HttpSensor</p></li>
<li><p>[AIRFLOW-195] : Add toggle support to subdag clearing in the CLI</p></li>
<li><p>[AIRFLOW-23] Support for Google Cloud DataProc</p></li>
<li><p>[AIRFLOW-25] Configuration for Celery always required</p></li>
<li><p>[AIRFLOW-190] Add codecov and remove download count</p></li>
<li><p>[AIRFLOW-168] Correct evaluation of &#64;once schedule</p></li>
<li><p>[AIRFLOW-183] Fetch log from remote when worker returns 4xx/5xx response</p></li>
<li><p>[AIRFLOW-181] Fix failing unpacking of hadoop by redownloading</p></li>
<li><p>[AIRFLOW-176] remove unused formatting key</p></li>
<li><p>[AIRFLOW-167]: Add dag_state option in cli</p></li>
<li><p>[AIRFLOW-178] Fix bug so that zip file is detected in DAG folder</p></li>
<li><p>[AIRFLOW-176] Improve PR Tool JIRA workflow</p></li>
<li><p>AIRFLOW-45: Support Hidden Airflow Variables</p></li>
<li><p>[AIRFLOW-175] Run git-reset before checkout in PR tool</p></li>
<li><p>[AIRFLOW-157] Make PR tool Py3-compat; add JIRA command</p></li>
<li><p>[AIRFLOW-170] Add missing &#64;apply_defaults</p></li>
</ul>
</div>
</div>
<div class="section" id="airflow-1-7-1-2016-05-19">
<h2><a class="toc-backref" href="#id189">Airflow 1.7.1 (2016-05-19)</a><a class="headerlink" href="#airflow-1-7-1-2016-05-19" title="Permalink to this headline"></a></h2>
<ul class="simple">
<li><p>Fix : Don’t treat premature tasks as could_not_run tasks</p></li>
<li><p>AIRFLOW-92 Avoid unneeded upstream_failed session closes apache/airflow#1485</p></li>
<li><p>Add logic to lock DB and avoid race condition</p></li>
<li><p>Handle queued tasks from multiple jobs/executors</p></li>
<li><p>AIRFLOW-52 Warn about overwriting tasks in a DAG</p></li>
<li><p>Fix corner case with joining processes/queues (#1473)</p></li>
<li><p>[AIRFLOW-52] Fix bottlenecks when working with many tasks</p></li>
<li><p>Add columns to toggle extra detail in the connection list view.</p></li>
<li><p>Log the number of errors when importing DAGs</p></li>
<li><p>Log dagbag metrics duplicate messages in queue into StatsD (#1406)</p></li>
<li><p>Clean up issue template (#1419)</p></li>
<li><p>correct missed arg.foreground to arg.daemon in cli</p></li>
<li><p>Reinstate imports for github enterprise auth</p></li>
<li><p>Use os.execvp instead of subprocess.Popen for the webserver</p></li>
<li><p>Revert from using “–foreground” to “–daemon”</p></li>
<li><p>Implement a Cloudant hook</p></li>
<li><p>Add missing args to <code class="docutils literal notranslate"><span class="pre">airflow</span> <span class="pre">clear</span></code></p></li>
<li><p>Fixed a bug in the scheduler: num_runs used where runs intended</p></li>
<li><p>Add multiprocessing support to the scheduler</p></li>
<li><p>Partial fix to make sure next_run_date cannot be None</p></li>
<li><p>Support list/get/set variables in the CLI</p></li>
<li><p>Properly handle BigQuery booleans in BigQuery hook.</p></li>
<li><p>Added the ability to view XCom variables in webserver</p></li>
<li><p>Change DAG.tasks from a list to a dict</p></li>
<li><p>Add support for zipped dags</p></li>
<li><p>Stop creating hook on instantiating of S3 operator</p></li>
<li><p>User subquery in views to find running DAGs</p></li>
<li><p>Prevent DAGs from being reloaded on every scheduler iteration</p></li>
<li><p>Add a missing word to docs</p></li>
<li><p>Document the parameters of <code class="docutils literal notranslate"><span class="pre">DbApiHook</span></code></p></li>
<li><p>added oracle operator with existing oracle hook</p></li>
<li><p>Add PyOpenSSL to Google Cloud gcp_api.</p></li>
<li><p>Remove executor error unit test</p></li>
<li><p>Add DAG inference, deferral, and context manager</p></li>
<li><p>Don’t return error when writing files to Google cloud storage.</p></li>
<li><p>Fix GCS logging for gcp_api.</p></li>
<li><p>Ensure attr is in scope for error message</p></li>
<li><p>Fixing misnamed PULL_REQUEST_TEMPLATE</p></li>
<li><p>Extract non_pooled_task_slot_count into a configuration param</p></li>
<li><p>Update plugins.rst for clarity on the example (#1309)</p></li>
<li><p>Fix s3 logging issue</p></li>
<li><p>Add twitter feed example dag</p></li>
<li><p>GitHub ISSUE_TEMPLATE &amp; PR_TEMPLATE cleanup</p></li>
<li><p>Reduce logger verbosity</p></li>
<li><p>Adding a PR Template</p></li>
<li><p>Add Lucid to list of users</p></li>
<li><p>Fix usage of asciiart</p></li>
<li><p>Use session instead of outdated main_session for are_dependencies_met</p></li>
<li><p>Fix celery flower port allocation</p></li>
<li><p>Fix for missing edit actions due to flask-admin upgrade</p></li>
<li><p>Fix typo in comment in prioritize_queued method</p></li>
<li><p>Add HipchatOperator</p></li>
<li><p>Include all example dags in backfill unit test</p></li>
<li><p>Make sure skipped jobs are actually skipped</p></li>
<li><p>Fixing a broken example dag, example_skip_dag.py</p></li>
<li><p>Add consistent and thorough signal handling and logging</p></li>
<li><p>Allow Operators to specify SKIPPED status internally</p></li>
<li><p>Update docstring for executor trap unit test</p></li>
<li><p>Doc: explain the usage of Jinja templating for templated params</p></li>
<li><p>Don’t schedule runs before the DAG’s start_date</p></li>
<li><p>Fix infinite retries with pools, with test</p></li>
<li><p>Fix handling of deadlocked jobs</p></li>
<li><p>Show only Airflow’s deprecation warnings</p></li>
<li><p>Set DAG_FOLDER for unit tests</p></li>
<li><p>Missing comma in setup.py</p></li>
<li><p>Deprecate args and kwargs in BaseOperator</p></li>
<li><p>Raise deep scheduler exceptions to force a process restart.</p></li>
<li><p>Change inconsistent example DAG owners</p></li>
<li><p>Fix module path of send_email_smtp in configuration</p></li>
<li><p>added Gentner Lab to list of users</p></li>
<li><p>Increase timeout time for unit test</p></li>
<li><p>Fix reading strings from conf</p></li>
<li><p>CHORE - Remove Trailing Spaces</p></li>
<li><p>Fix SSHExecuteOperator crash when using a custom ssh port</p></li>
<li><p>Add note about Airflow components to template</p></li>
<li><p>Rewrite BackfillJob logic for clarity</p></li>
<li><p>Add unit tests</p></li>
<li><p>Fix miscellaneous bugs and clean up code</p></li>
<li><p>Fix logic for determining DagRun states</p></li>
<li><p>Make SchedulerJob not run EVERY queued task</p></li>
<li><p>Improve BackfillJob handling of queued/deadlocked tasks</p></li>
<li><p>Introduce ignore_depends_on_past parameters</p></li>
<li><p>Use Popen with CeleryExecutor</p></li>
<li><p>Rename user table to users to avoid conflict with postgres</p></li>
<li><p>Beware of negative pool slots.</p></li>
<li><p>Add support for calling_format from boto to S3_Hook</p></li>
<li><p>Add PyPI meta data and sync version number</p></li>
<li><p>Set dags_are_paused_at_creation’s default value to True</p></li>
<li><p>Resurface S3Log class eaten by rebase/push -f</p></li>
<li><p>Add missing session.commit() at end of initdb</p></li>
<li><p>Validate that subdag tasks have pool slots available, and test</p></li>
<li><p>Use urlparse for remote GCS logs, and add unit tests</p></li>
<li><p>Make webserver worker timeout configurable</p></li>
<li><p>Fixed scheduling for &#64;once interval</p></li>
<li><p>Use psycopg2’s API for serializing postgres cell values</p></li>
<li><p>Make the provide_session decorator more robust</p></li>
<li><p>update link to Lyft’s website</p></li>
<li><p>use num_shards instead of partitions to be consistent with batch ingestion</p></li>
<li><p>Add documentation links to README</p></li>
<li><p>Update docs with separate configuration section</p></li>
<li><p>Fix airflow.utils deprecation warning code being Python 3 incompatible</p></li>
<li><p>Extract dbapi cell serialization into its own method</p></li>
<li><p>Set Postgres autocommit as supported only if server version is &lt; 7.4</p></li>
<li><p>Use refactored utils module in unit test imports</p></li>
<li><p>Add changelog for 1.7.0</p></li>
<li><p>Use LocalExecutor on Travis if possible</p></li>
<li><p>remove unused logging,errno, MiniHiveCluster imports</p></li>
<li><p>remove extra import of logging lib</p></li>
<li><p>Fix required gcloud version</p></li>
<li><p>Refactoring utils into smaller submodules</p></li>
<li><p>Properly measure number of task retry attempts</p></li>
<li><p>Add function to get configuration as dict, plus unit tests</p></li>
<li><p>Merge branch ‘master’ into hivemeta_sasl</p></li>
<li><p>Add wiki link to README.md</p></li>
<li><p>[hotfix] make email.Utils &gt; email.utils for py3</p></li>
<li><p>Add the missing “Date” header to the warning e-mails</p></li>
<li><p>Add the missing “Date” header to the warning e-mails</p></li>
<li><p>Check name of SubDag class instead of class itself</p></li>
<li><p>[hotfix] removing repo_token from .coveralls.yml</p></li>
<li><p>Set the service_name in coverals.yml</p></li>
<li><p>Fixes #1223</p></li>
<li><p>Update Airflow docs for remote logging</p></li>
<li><p>Add unit tests for trapping Executor errors</p></li>
<li><p>Make sure Executors properly trap errors</p></li>
<li><p>Fix HttpOpSensorTest to use fake request session</p></li>
<li><p>Linting</p></li>
<li><p>Add an example on pool usage in the documentation</p></li>
<li><p>Add two methods to bigquery hook’s base cursor: run_table_upsert, which adds a table or updates an existing table; and run_grant_dataset_view_access, which grants view access to a given dataset for a given table.</p></li>
<li><p>Tasks references upstream and downstream tasks using strings instead of references</p></li>
<li><p>Fix typos in models.py</p></li>
<li><p>Fix broken links in documentation</p></li>
<li><p>[hotfix] fixing the Scheduler CLI to make dag_id optional</p></li>
<li><p>Update link to Common Pitfalls wiki page in README</p></li>
<li><p>Allow disabling periodic committing when inserting rows with DbApiHook</p></li>
<li><p>added Glassdoor to “who uses airflow”</p></li>
<li><p>Fix typo preventing from launching webserver</p></li>
<li><p>Documentation badge</p></li>
<li><p>Fixing ISSUE_TEMPLATE name to include .md suffix</p></li>
<li><p>Adding an ISSUE_TEMPLATE to ensure that issues are adequately defined</p></li>
<li><p>Linting &amp; debugging</p></li>
<li><p>Refactoring the CLI to be data-driven</p></li>
<li><p>Updating the Bug Reporting protocol in the Contributing.md file</p></li>
<li><p>Fixing the docs</p></li>
<li><p>Clean up references to old session</p></li>
<li><p>remove session reference</p></li>
<li><p>resolve conflict</p></li>
<li><p>clear xcom data when task instance starts</p></li>
<li><p>replace main_session with &#64;provide_session</p></li>
<li><p>Add extras to installation.rst</p></li>
<li><p>Changes to Contributing to reflect more closely the current state of development.</p></li>
<li><p>Modifying README to link to the wiki committer list</p></li>
<li><p>docs: fixes a spelling mistake in default config</p></li>
<li><p>Set killMode to ‘control-group’ for webservice.service</p></li>
<li><p>Set KillMode to ‘control-group’ for worker.service</p></li>
<li><p>Linting</p></li>
<li><p>Fix WebHdfsSensor</p></li>
<li><p>Adding more licenses to pass checks</p></li>
<li><p>fixing landscape’s config</p></li>
<li><p>[hotfix] typo that made it in master</p></li>
<li><p>[hotfix] fixing landscape requirement detection</p></li>
<li><p>Make testing on hive conditional</p></li>
<li><p>Merge remote-tracking branch ‘upstream/master’ into minicluster</p></li>
<li><p>Update README.md</p></li>
<li><p>Throwing in a few license to pass the build</p></li>
<li><p>Adding a reqs.txt for landscape.io</p></li>
<li><p>Pointing to a reqs file</p></li>
<li><p>Some linting</p></li>
<li><p>Adding a .landscape.yml file</p></li>
<li><p>badge for PyPI version</p></li>
<li><p>Add license and ignore for sql and csv</p></li>
<li><p>Use correct connection id</p></li>
<li><p>Use correct table name</p></li>
<li><p>Provide data for ci tests</p></li>
<li><p>New badge for showing staleness of reqs</p></li>
<li><p>Removing requirements.txt as it is uni-dimensional</p></li>
<li><p>Make it work on py3</p></li>
<li><p>Remove decode for logging</p></li>
<li><p>Also keep py2 compatible</p></li>
<li><p>More py3 fixes</p></li>
<li><p>Convert to bytes for py3 compat</p></li>
<li><p>Make sure to be py3 compatible</p></li>
<li><p>Use unicodecsv to make it py3 compatible</p></li>
<li><p>Replace tab with spaces Remove unused import</p></li>
<li><p>Merge remote-tracking branch ‘upstream/master’</p></li>
<li><p>Support decimal types in MySQL to GCS</p></li>
<li><p>Make sure to write binary as string can be unicode</p></li>
<li><p>Ignore metastore</p></li>
<li><p>More impyla fixes</p></li>
<li><p>Test HivemetaStore if Python 2</p></li>
<li><p>Allow users to set hdfs_namenode_principal in HDFSHook config</p></li>
<li><p>Add tests for Hiveserver2 and fix some issues from impyla</p></li>
<li><p>Merge branch ‘impyla’ into minicluster</p></li>
<li><p>This patch allows for testing of hive operators and hooks. Sasl is used (NoSasl in connection string is not possible). Tests have been adjusted.</p></li>
<li><p>Treat SKIPPED and SUCCESS the same way when evaluating depends_on_past=True</p></li>
<li><p>fix bigquery hook</p></li>
<li><p>Version cap for gcp_api</p></li>
<li><p>Fix typo when returning VerticaHook</p></li>
<li><p>Adding fernet key to use it as part of stdout commands</p></li>
<li><p>Adding support for ssl parameters. (picking up from jthomas123)</p></li>
<li><p>More detail in error message.</p></li>
<li><p>Make sure paths don’t conflict bc of trailing /</p></li>
<li><p>Change gcs_hook to self.hook</p></li>
<li><p>Refactor remote log read/write and add GCS support</p></li>
<li><p>Only use multipart upload in S3Hook if file is large enough</p></li>
<li><p>Merge branch ‘airbnb/master’</p></li>
<li><p>Add GSSAPI SASL to HiveMetaStoreHook.</p></li>
<li><p>Add warning for deprecated setting</p></li>
<li><p>Use kerberos_service_name = ‘hive’ as standard instead of ‘impala’.</p></li>
<li><p>Use GSSAPI instead of KERBEROS and provide backwards compatibility</p></li>
<li><p>ISSUE-1123 Use impyla instead of pyhs2</p></li>
<li><p>Set celery_executor to use queue name as exchange</p></li>
</ul>
</div>
</div>
<div class="pager" role="navigation" aria-label="related navigation">
<a rel="prev" title="Airflow’s release process and version policy" href="release-process.html" >
<button class="btn-hollow btn-blue bodytext__medium--cerulean-blue" accesskey="p">Previous</button>
</a>
<a rel="next" title="Best Practices" href="best-practices.html" >
<button class="btn-hollow btn-blue bodytext__medium--cerulean-blue" accesskey="n">Next</button>
</a>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="rating-container">
<p class="bodytext__medium--greyish-brown font-weight-500">Was this entry helpful?</p>
<div class="rating">
<div id="rate-star-5" class="rate-star">
<svg xmlns="http://www.w3.org/2000/svg" width="21.05" height="20.02" viewBox="0 0 21.05 20.02">
<g id="Group_806" data-name="Group 806" transform="translate(-774.404 -13.178)">
<path id="Path_715" d="M791.434 33.2l-6.5-3.42-6.5 3.42 1.242-7.243-5.262-5.13 7.273-1.057 3.252-6.59 3.252 6.59 7.273 1.057-5.262 5.13z" fill="#017cee" data-name="Path 715"></path>
</g>
</svg>
</div>
<div id="rate-star-4" class="rate-star">
<svg xmlns="http://www.w3.org/2000/svg" width="21.05" height="20.02" viewBox="0 0 21.05 20.02">
<g id="Group_806" data-name="Group 806" transform="translate(-774.404 -13.178)">
<path id="Path_715" d="M791.434 33.2l-6.5-3.42-6.5 3.42 1.242-7.243-5.262-5.13 7.273-1.057 3.252-6.59 3.252 6.59 7.273 1.057-5.262 5.13z" fill="#017cee" data-name="Path 715"></path>
</g>
</svg>
</div>
<div id="rate-star-3" class="rate-star">
<svg xmlns="http://www.w3.org/2000/svg" width="21.05" height="20.02" viewBox="0 0 21.05 20.02">
<g id="Group_806" data-name="Group 806" transform="translate(-774.404 -13.178)">
<path id="Path_715" d="M791.434 33.2l-6.5-3.42-6.5 3.42 1.242-7.243-5.262-5.13 7.273-1.057 3.252-6.59 3.252 6.59 7.273 1.057-5.262 5.13z" fill="#017cee" data-name="Path 715"></path>
</g>
</svg>
</div>
<div id="rate-star-2" class="rate-star">
<svg xmlns="http://www.w3.org/2000/svg" width="21.05" height="20.02" viewBox="0 0 21.05 20.02">
<g id="Group_806" data-name="Group 806" transform="translate(-774.404 -13.178)">
<path id="Path_715" d="M791.434 33.2l-6.5-3.42-6.5 3.42 1.242-7.243-5.262-5.13 7.273-1.057 3.252-6.59 3.252 6.59 7.273 1.057-5.262 5.13z" fill="#017cee" data-name="Path 715"></path>
</g>
</svg>
</div>
<div id="rate-star-1" class="rate-star">
<svg xmlns="http://www.w3.org/2000/svg" width="21.05" height="20.02" viewBox="0 0 21.05 20.02">
<g id="Group_806" data-name="Group 806" transform="translate(-774.404 -13.178)">
<path id="Path_715" d="M791.434 33.2l-6.5-3.42-6.5 3.42 1.242-7.243-5.262-5.13 7.273-1.057 3.252-6.59 3.252 6.59 7.273 1.057-5.262 5.13z" fill="#017cee" data-name="Path 715"></path>
</g>
</svg>
</div>
</div>
</div>
</main>
<nav class="wy-nav-side-toc">
<div class="wy-menu-vertical">
<ul>
<li><a class="reference internal" href="#">Release Notes</a><ul>
<li><a class="reference internal" href="#airflow-2-3-0-2022-04-30">Airflow 2.3.0 (2022-04-30)</a><ul>
<li><a class="reference internal" href="#significant-changes">Significant Changes</a><ul>
<li><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><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><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><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><a class="reference internal" href="#non-json-serializable-params-deprecated-21135">Non-JSON-serializable params deprecated (#21135).</a></li>
<li><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><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><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><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><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><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><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><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><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><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><a class="reference internal" href="#tldr">TLDR</a></li>
<li><a class="reference internal" href="#what-why-and-when">What, why, and when?</a></li>
<li><a class="reference internal" href="#how-will-i-be-affected">How will I be affected?</a></li>
</ul>
</li>
<li><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><a class="reference internal" href="#database-configuration-moved-to-new-section-22284">Database configuration moved to new section (#22284)</a></li>
<li><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><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><a class="reference internal" href="#new-features">New Features</a></li>
<li><a class="reference internal" href="#improvements">Improvements</a></li>
<li><a class="reference internal" href="#bug-fixes">Bug Fixes</a></li>
<li><a class="reference internal" href="#doc-only-changes">Doc only changes</a></li>
<li><a class="reference internal" href="#misc-internal">Misc/Internal</a></li>
</ul>
</li>
<li><a class="reference internal" href="#airflow-2-2-5-2022-04-04">Airflow 2.2.5, (2022-04-04)</a><ul>
<li><a class="reference internal" href="#id1">Significant Changes</a><ul>
<li><a class="reference internal" href="#id2">Bug Fixes</a></li>
<li><a class="reference internal" href="#id3">Doc only changes</a></li>
<li><a class="reference internal" href="#misc">Misc</a></li>
</ul>
</li>
</ul>
</li>
<li><a class="reference internal" href="#airflow-2-2-4-2022-02-22">Airflow 2.2.4, (2022-02-22)</a><ul>
<li><a class="reference internal" href="#id4">Significant Changes</a><ul>
<li><a class="reference internal" href="#smart-sensors-deprecated">Smart sensors deprecated</a></li>
</ul>
</li>
<li><a class="reference internal" href="#id5">Bug Fixes</a></li>
<li><a class="reference internal" href="#id6">Doc only changes</a></li>
<li><a class="reference internal" href="#id7">Misc</a></li>
</ul>
</li>
<li><a class="reference internal" href="#airflow-2-2-3-2021-12-21">Airflow 2.2.3, (2021-12-21)</a><ul>
<li><a class="reference internal" href="#id8">Significant Changes</a></li>
<li><a class="reference internal" href="#id9">Bug Fixes</a></li>
<li><a class="reference internal" href="#id10">Doc only changes</a></li>
</ul>
</li>
<li><a class="reference internal" href="#airflow-2-2-2-2021-11-15">Airflow 2.2.2 (2021-11-15)</a><ul>
<li><a class="reference internal" href="#id11">Significant Changes</a></li>
<li><a class="reference internal" href="#id12">Bug Fixes</a></li>
<li><a class="reference internal" href="#id13">Doc only changes</a></li>
</ul>
</li>
<li><a class="reference internal" href="#airflow-2-2-1-2021-10-29">Airflow 2.2.1 (2021-10-29)</a><ul>
<li><a class="reference internal" href="#id14">Significant Changes</a><ul>
<li><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><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><a class="reference internal" href="#id15">Bug Fixes</a></li>
<li><a class="reference internal" href="#id16">Doc only changes</a></li>
</ul>
</li>
<li><a class="reference internal" href="#airflow-2-2-0-2021-10-11">Airflow 2.2.0 (2021-10-11)</a><ul>
<li><a class="reference internal" href="#id17">Significant Changes</a><ul>
<li><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><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><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><a class="reference internal" href="#dummy-trigger-rule-has-been-deprecated">Dummy trigger rule has been deprecated</a></li>
<li><a class="reference internal" href="#dag-concurrency-settings-have-been-renamed">DAG concurrency settings have been renamed</a></li>
<li><a class="reference internal" href="#task-concurrency-parameter-has-been-renamed">Task concurrency parameter has been renamed</a></li>
<li><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><a class="reference internal" href="#marking-success-failed-automatically-clears-failed-downstream-tasks">Marking success/failed automatically clears failed downstream tasks</a></li>
<li><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><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><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><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><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><a class="reference internal" href="#webserver-dag-refresh-buttons-removed">Webserver DAG refresh buttons removed</a></li>
<li><a class="reference internal" href="#taskinstances-now-require-a-dagrun">TaskInstances now <em>require</em> a DagRun</a></li>
<li><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><a class="reference internal" href="#daskexecutor-dask-worker-resources-and-queues">DaskExecutor - Dask Worker Resources and queues</a></li>
</ul>
</li>
<li><a class="reference internal" href="#id20">New Features</a></li>
<li><a class="reference internal" href="#id21">Improvements</a></li>
<li><a class="reference internal" href="#id22">Bug Fixes</a></li>
<li><a class="reference internal" href="#id23">Doc only changes</a></li>
<li><a class="reference internal" href="#id24">Misc/Internal</a></li>
</ul>
</li>
<li><a class="reference internal" href="#airflow-2-1-4-2021-09-18">Airflow 2.1.4 (2021-09-18)</a><ul>
<li><a class="reference internal" href="#id25">Significant Changes</a></li>
<li><a class="reference internal" href="#id26">Bug Fixes</a></li>
<li><a class="reference internal" href="#id27">Doc only changes</a></li>
</ul>
</li>
<li><a class="reference internal" href="#airflow-2-1-3-2021-08-23">Airflow 2.1.3 (2021-08-23)</a><ul>
<li><a class="reference internal" href="#id28">Significant Changes</a></li>
<li><a class="reference internal" href="#id29">Bug Fixes</a></li>
<li><a class="reference internal" href="#id30">Improvements</a></li>
<li><a class="reference internal" href="#id31">Doc only changes</a></li>
<li><a class="reference internal" href="#id32">Misc</a></li>
</ul>
</li>
<li><a class="reference internal" href="#airflow-2-1-2-2021-07-14">Airflow 2.1.2 (2021-07-14)</a><ul>
<li><a class="reference internal" href="#id33">Significant Changes</a></li>
<li><a class="reference internal" href="#id34">Bug Fixes</a></li>
<li><a class="reference internal" href="#id35">Misc</a></li>
</ul>
</li>
<li><a class="reference internal" href="#airflow-2-1-1-2021-07-02">Airflow 2.1.1 (2021-07-02)</a><ul>
<li><a class="reference internal" href="#id36">Significant Changes</a><ul>
<li><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><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><a class="reference internal" href="#id38">Bug Fixes</a></li>
</ul>
</li>
<li><a class="reference internal" href="#airflow-2-1-0-2021-05-21">Airflow 2.1.0 (2021-05-21)</a><ul>
<li><a class="reference internal" href="#id39">Significant Changes</a><ul>
<li><a class="reference internal" href="#new-deprecated-api-extra">New “deprecated_api” extra</a></li>
<li><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><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><a class="reference internal" href="#change-the-configuration-options-for-field-masking">Change the configuration options for field masking</a></li>
<li><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><a class="reference internal" href="#removed-pod-launcher-from-core-airflow">Removed pod_launcher from core airflow</a></li>
<li><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><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><a class="reference internal" href="#id40">New Features</a></li>
<li><a class="reference internal" href="#id41">Improvements</a></li>
<li><a class="reference internal" href="#id42">Bug Fixes</a></li>
<li><a class="reference internal" href="#id43">Doc only changes</a></li>
<li><a class="reference internal" href="#id44">Misc/Internal</a></li>
</ul>
</li>
<li><a class="reference internal" href="#airflow-2-0-2-2021-04-19">Airflow 2.0.2 (2021-04-19)</a><ul>
<li><a class="reference internal" href="#id45">Significant Changes</a><ul>
<li><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><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><a class="reference internal" href="#id46">Bug Fixes</a></li>
<li><a class="reference internal" href="#id47">Improvements</a></li>
<li><a class="reference internal" href="#id48">Doc only changes</a></li>
<li><a class="reference internal" href="#id49">Misc/Internal</a></li>
</ul>
</li>
<li><a class="reference internal" href="#airflow-2-0-1-2021-02-08">Airflow 2.0.1 (2021-02-08)</a><ul>
<li><a class="reference internal" href="#id50">Significant Changes</a><ul>
<li><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><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><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><a class="reference internal" href="#id51">Bug Fixes</a></li>
<li><a class="reference internal" href="#id52">Improvements</a></li>
<li><a class="reference internal" href="#id53">Doc only changes</a></li>
</ul>
</li>
<li><a class="reference internal" href="#airflow-2-0-0-2020-12-18">Airflow 2.0.0 (2020-12-18)</a><ul>
<li><a class="reference internal" href="#id54">Significant Changes</a><ul>
<li><a class="reference internal" href="#major-changes">Major changes</a></li>
<li><a class="reference internal" href="#the-experimental-rest-api-is-disabled-by-default">The experimental REST API is disabled by default</a></li>
<li><a class="reference internal" href="#sparkjdbchook-default-connection">SparkJDBCHook default connection</a></li>
<li><a class="reference internal" href="#changes-to-output-argument-in-commands">Changes to output argument in commands</a></li>
<li><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><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><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><a class="reference internal" href="#rename-policy-to-task-policy">Rename policy to task_policy</a></li>
<li><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><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><a class="reference internal" href="#importing-hooks-via-plugins-is-no-longer-supported">Importing Hooks via plugins is no longer supported</a></li>
<li><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><a class="reference internal" href="#airflowignore-of-base-path">Airflowignore of base path</a></li>
<li><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><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><a class="reference internal" href="#changes-to-import-paths">Changes to import paths</a></li>
</ul>
</li>
<li><a class="reference internal" href="#database-schema-changes">Database schema changes</a><ul>
<li><a class="reference internal" href="#unique-conn-id-in-connection-table">Unique conn_id in connection table</a></li>
<li><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><a class="reference internal" href="#configuration-changes">Configuration changes</a><ul>
<li><a class="reference internal" href="#airflow-contrib-utils-log-has-been-moved">airflow.contrib.utils.log has been moved</a></li>
<li><a class="reference internal" href="#sendgrid-emailer-has-been-moved">SendGrid emailer has been moved</a></li>
<li><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><a class="reference internal" href="#custom-executors-is-loaded-using-full-import-path">Custom executors is loaded using full import path</a></li>
<li><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><a class="reference internal" href="#drop-plugin-support-for-stat-name-handler">Drop plugin support for stat_name_handler</a></li>
<li><a class="reference internal" href="#logging-configuration-has-been-moved-to-new-section">Logging configuration has been moved to new section</a></li>
<li><a class="reference internal" href="#metrics-configuration-has-been-moved-to-new-section">Metrics configuration has been moved to new section</a></li>
<li><a class="reference internal" href="#changes-to-elasticsearch-logging-provider">Changes to Elasticsearch logging provider</a></li>
<li><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><a class="reference internal" href="#fernet-is-enabled-by-default">Fernet is enabled by default</a></li>
<li><a class="reference internal" href="#changes-to-propagating-kubernetes-worker-annotations">Changes to propagating Kubernetes worker annotations</a></li>
<li><a class="reference internal" href="#remove-run-duration">Remove run_duration</a></li>
<li><a class="reference internal" href="#rename-pool-statsd-metrics">Rename pool statsd metrics</a></li>
<li><a class="reference internal" href="#removal-of-mesos-executor">Removal of Mesos Executor</a></li>
<li><a class="reference internal" href="#change-dag-loading-duration-metric-name">Change dag loading duration metric name</a></li>
<li><a class="reference internal" href="#sentry-is-disabled-by-default">Sentry is disabled by default</a></li>
<li><a class="reference internal" href="#simplified-gcstaskhandler-configuration">Simplified GCSTaskHandler configuration</a></li>
</ul>
</li>
<li><a class="reference internal" href="#changes-to-the-core-operators-hooks">Changes to the core operators/hooks</a><ul>
<li><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><a class="reference internal" href="#baseoperator-uses-metaclass">BaseOperator uses metaclass</a></li>
<li><a class="reference internal" href="#remove-sql-support-in-basehook">Remove SQL support in BaseHook</a></li>
<li><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><a class="reference internal" href="#removed-deprecated-import-mechanism">Removed deprecated import mechanism</a></li>
<li><a class="reference internal" href="#changes-to-sensor-imports">Changes to sensor imports</a></li>
<li><a class="reference internal" href="#skipped-tasks-can-satisfy-wait-for-downstream">Skipped tasks can satisfy wait_for_downstream</a></li>
<li><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><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><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><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><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><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><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><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><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><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><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><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><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><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><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><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><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><a class="reference internal" href="#changes-to-the-core-python-api">Changes to the core Python API</a><ul>
<li><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><a class="reference internal" href="#variables-removed-from-the-task-instance-context">Variables removed from the task instance context</a></li>
<li><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><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><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><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><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><a class="reference internal" href="#airflow-airflowmacroplugin"><code class="docutils literal notranslate"><span class="pre">airflow.AirflowMacroPlugin</span></code></a></li>
<li><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><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><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><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><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><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><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><a class="reference internal" href="#normalize-gcp-conn-id-for-google-cloud">Normalize gcp_conn_id for Google Cloud</a></li>
<li><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><a class="reference internal" href="#unify-default-conn-id-for-google-cloud">Unify default conn_id for Google Cloud</a></li>
<li><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><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><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><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><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><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><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><a class="reference internal" href="#id57"><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.hooks.bigquery.BigQueryBaseCursor</span></code></a></li>
<li><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><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><a class="reference internal" href="#id58"><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.hooks.dataflow.DataflowHook</span></code></a></li>
<li><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><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><a class="reference internal" href="#id59"><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.hooks.pubsub.PubSubHook</span></code></a></li>
<li><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><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><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><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><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><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><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><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><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><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><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><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><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><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><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><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><a class="reference internal" href="#id60"><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.hooks.bigquery.BigQueryHook</span></code></a></li>
<li><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><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><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><a class="reference internal" href="#id61"><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.hooks.dataflow.DataflowHook.start_python_dataflow</span></code></a></li>
<li><a class="reference internal" href="#id62"><code class="docutils literal notranslate"><span class="pre">airflow.providers.google.cloud.operators.dataflow.DataflowCreatePythonJobOperator</span></code></a></li>
<li><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><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><a class="reference internal" href="#generating-cluster-config">Generating Cluster Config</a><ul>
<li><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><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><a class="reference internal" href="#migration-of-aws-components">Migration of AWS components</a></li>
<li><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><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><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><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><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><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><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><a class="reference internal" href="#changes-in-other-provider-packages">Changes in other provider packages</a><ul>
<li><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><a class="reference internal" href="#removed-hipchat-integration">Removed HipChat integration</a></li>
<li><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><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><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><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><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><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><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><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><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><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><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><a class="reference internal" href="#other-changes">Other changes</a><ul>
<li><a class="reference internal" href="#standardized-extra-requirements">Standardized “extra” requirements</a></li>
<li><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><a class="reference internal" href="#airflow-1-10-15-2021-03-17">Airflow 1.10.15 (2021-03-17)</a><ul>
<li><a class="reference internal" href="#id64">Significant Changes</a></li>
<li><a class="reference internal" href="#id65">Bug Fixes</a></li>
<li><a class="reference internal" href="#id66">Improvements</a></li>
<li><a class="reference internal" href="#id67">Doc only changes</a></li>
</ul>
</li>
<li><a class="reference internal" href="#airflow-1-10-14-2020-12-10">Airflow 1.10.14 (2020-12-10)</a><ul>
<li><a class="reference internal" href="#id68">Significant Changes</a><ul>
<li><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><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><a class="reference internal" href="#id69">Bug Fixes</a></li>
<li><a class="reference internal" href="#id70">Improvements</a></li>
<li><a class="reference internal" href="#id71">Doc only changes</a></li>
</ul>
</li>
<li><a class="reference internal" href="#airflow-1-10-13-2020-11-25">Airflow 1.10.13 (2020-11-25)</a><ul>
<li><a class="reference internal" href="#id72">Significant Changes</a><ul>
<li><a class="reference internal" href="#timesensor-is-now-timezone-aware">TimeSensor is now timezone aware</a></li>
<li><a class="reference internal" href="#removed-kerberos-support-for-hdfs-hook">Removed Kerberos support for HDFS hook</a></li>
<li><a class="reference internal" href="#unify-user-session-lifetime-configuration">Unify user session lifetime configuration</a></li>
<li><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><a class="reference internal" href="#id73">New Features</a></li>
<li><a class="reference internal" href="#id74">Bug Fixes</a></li>
<li><a class="reference internal" href="#id75">Improvements</a></li>
<li><a class="reference internal" href="#deprecations">Deprecations</a></li>
<li><a class="reference internal" href="#id76">Doc only changes</a></li>
</ul>
</li>
<li><a class="reference internal" href="#airflow-1-10-12-2020-08-25">Airflow 1.10.12 (2020-08-25)</a><ul>
<li><a class="reference internal" href="#id77">Significant Changes</a><ul>
<li><a class="reference internal" href="#clearing-tasks-skipped-by-skipmixin-will-skip-them">Clearing tasks skipped by SkipMixin will skip them</a></li>
<li><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><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><a class="reference internal" href="#id78">New Features</a></li>
<li><a class="reference internal" href="#id79">Bug Fixes</a></li>
<li><a class="reference internal" href="#id80">Improvements</a></li>
<li><a class="reference internal" href="#id81">Doc only changes</a></li>
</ul>
</li>
<li><a class="reference internal" href="#airflow-1-10-11-2020-07-10">Airflow 1.10.11 (2020-07-10)</a><ul>
<li><a class="reference internal" href="#id82">Significant Changes</a><ul>
<li><a class="reference internal" href="#use-null-as-default-value-for-dag-description">Use NULL as default value for dag.description</a></li>
<li><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><a class="reference internal" href="#experimental-api-will-deny-all-request-by-default">Experimental API will deny all request by default.</a></li>
<li><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><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><a class="reference internal" href="#id83">New Features</a></li>
<li><a class="reference internal" href="#id84">Bug Fixes</a></li>
<li><a class="reference internal" href="#id85">Improvements</a></li>
<li><a class="reference internal" href="#id86">Doc only changes</a></li>
</ul>
</li>
<li><a class="reference internal" href="#airflow-1-10-10-2020-04-09">Airflow 1.10.10 (2020-04-09)</a><ul>
<li><a class="reference internal" href="#id87">Significant Changes</a><ul>
<li><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><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><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><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><a class="reference internal" href="#id88">New Features</a></li>
<li><a class="reference internal" href="#id89">Bug Fixes</a></li>
<li><a class="reference internal" href="#id90">Improvements</a></li>
<li><a class="reference internal" href="#id91">Misc/Internal</a></li>
<li><a class="reference internal" href="#id92">Doc only changes</a></li>
</ul>
</li>
<li><a class="reference internal" href="#airflow-1-10-9-2020-02-07">Airflow 1.10.9 (2020-02-07)</a><ul>
<li><a class="reference internal" href="#id93">Significant Changes</a></li>
<li><a class="reference internal" href="#id94">Bug Fixes</a></li>
</ul>
</li>
<li><a class="reference internal" href="#airflow-1-10-8-2020-02-07">Airflow 1.10.8 (2020-02-07)</a><ul>
<li><a class="reference internal" href="#id95">Significant Changes</a><ul>
<li><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><a class="reference internal" href="#id96">New Features</a></li>
<li><a class="reference internal" href="#id97">Improvements</a></li>
<li><a class="reference internal" href="#id98">Bug Fixes</a></li>
<li><a class="reference internal" href="#id99">Misc/Internal</a></li>
<li><a class="reference internal" href="#id100">Doc only changes</a></li>
</ul>
</li>
<li><a class="reference internal" href="#airflow-1-10-7-2019-12-24">Airflow 1.10.7 (2019-12-24)</a><ul>
<li><a class="reference internal" href="#id101">Significant Changes</a><ul>
<li><a class="reference internal" href="#changes-in-experimental-api-execution-date-microseconds-replacement">Changes in experimental API execution_date microseconds replacement</a></li>
<li><a class="reference internal" href="#infinite-pool-size-and-pool-size-query-optimization">Infinite pool size and pool size query optimization</a></li>
<li><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><a class="reference internal" href="#google-cloud-storage-hook">Google Cloud Storage Hook</a></li>
</ul>
</li>
<li><a class="reference internal" href="#id102">New Features</a></li>
<li><a class="reference internal" href="#id103">Improvements</a></li>
<li><a class="reference internal" href="#id104">Bug Fixes</a></li>
<li><a class="reference internal" href="#id105">Misc/Internal</a></li>
<li><a class="reference internal" href="#id106">Doc only changes</a></li>
</ul>
</li>
<li><a class="reference internal" href="#airflow-1-10-6-2019-10-28">Airflow 1.10.6 (2019-10-28)</a><ul>
<li><a class="reference internal" href="#id107">Significant Changes</a><ul>
<li><a class="reference internal" href="#baseoperator-render-template-function-signature-changed">BaseOperator::render_template function signature changed</a></li>
<li><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><a class="reference internal" href="#some-dag-processing-metrics-have-been-renamed">Some DAG Processing metrics have been renamed</a></li>
</ul>
</li>
<li><a class="reference internal" href="#id108">New Features</a></li>
<li><a class="reference internal" href="#id109">Improvements</a></li>
<li><a class="reference internal" href="#id110">Bug Fixes</a></li>
<li><a class="reference internal" href="#id111">Doc-only changes</a></li>
<li><a class="reference internal" href="#id112">Misc/Internal</a></li>
</ul>
</li>
<li><a class="reference internal" href="#airflow-1-10-5-2019-09-04">Airflow 1.10.5 (2019-09-04)</a><ul>
<li><a class="reference internal" href="#id113">Significant Changes</a></li>
<li><a class="reference internal" href="#id114">New Features</a></li>
<li><a class="reference internal" href="#id115">Improvements</a></li>
<li><a class="reference internal" href="#id116">Bug fixes</a></li>
<li><a class="reference internal" href="#id117">Misc/Internal</a></li>
<li><a class="reference internal" href="#id118">Doc-only changes</a></li>
</ul>
</li>
<li><a class="reference internal" href="#airflow-1-10-4-2019-08-06">Airflow 1.10.4 (2019-08-06)</a><ul>
<li><a class="reference internal" href="#id119">Significant Changes</a><ul>
<li><a class="reference internal" href="#export-mysql-timestamps-as-utc">Export MySQL timestamps as UTC</a></li>
<li><a class="reference internal" href="#changes-to-datastorehook">Changes to DatastoreHook</a></li>
<li><a class="reference internal" href="#changes-to-googlecloudstoragehook">Changes to GoogleCloudStorageHook</a></li>
<li><a class="reference internal" href="#changes-in-writing-logs-to-elasticsearch">Changes in writing Logs to Elasticsearch</a></li>
<li><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><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><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><a class="reference internal" href="#for-baseoperator">For <code class="docutils literal notranslate"><span class="pre">BaseOperator</span></code></a></li>
<li><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><a class="reference internal" href="#id121">New Features</a></li>
<li><a class="reference internal" href="#improvement">Improvement</a></li>
<li><a class="reference internal" href="#id122">Bug fixes</a></li>
<li><a class="reference internal" href="#id123">Misc/Internal</a></li>
<li><a class="reference internal" href="#id124">Doc-only changes</a></li>
</ul>
</li>
<li><a class="reference internal" href="#airflow-1-10-3-2019-04-09">Airflow 1.10.3 (2019-04-09)</a><ul>
<li><a class="reference internal" href="#id125">Significant Changes</a><ul>
<li><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><a class="reference internal" href="#redispy-dependency-updated-to-v3-series">RedisPy dependency updated to v3 series</a></li>
<li><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><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><a class="reference internal" href="#rename-of-bashtaskrunner-to-standardtaskrunner">Rename of BashTaskRunner to StandardTaskRunner</a></li>
<li><a class="reference internal" href="#modification-to-config-file-discovery">Modification to config file discovery</a></li>
<li><a class="reference internal" href="#changes-in-google-cloud-related-operators">Changes in Google Cloud related operators</a></li>
<li><a class="reference internal" href="#changes-in-google-cloud-related-hooks">Changes in Google Cloud related hooks</a></li>
<li><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><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><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><a class="reference internal" href="#moved-two-classes-to-different-modules">Moved two classes to different modules</a></li>
<li><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><a class="reference internal" href="#new-feature">New Feature</a></li>
<li><a class="reference internal" href="#id126">Improvement</a></li>
<li><a class="reference internal" href="#id127">Bug fixes</a></li>
<li><a class="reference internal" href="#id128">Misc/Internal</a></li>
<li><a class="reference internal" href="#id129">Doc-only changes</a></li>
</ul>
</li>
<li><a class="reference internal" href="#airflow-1-10-2-2019-01-19">Airflow 1.10.2 (2019-01-19)</a><ul>
<li><a class="reference internal" href="#id130">Significant Changes</a><ul>
<li><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><a class="reference internal" href="#dag-level-access-control-for-new-rbac-ui">DAG level Access Control for new RBAC UI</a></li>
<li><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><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><a class="reference internal" href="#user-model-changes">User model changes</a></li>
<li><a class="reference internal" href="#custom-auth-backends-interface-change">Custom auth backends interface change</a></li>
<li><a class="reference internal" href="#support-autodetected-schemas-to-googlecloudstoragetobigqueryoperator">Support autodetected schemas to GoogleCloudStorageToBigQueryOperator</a></li>
</ul>
</li>
<li><a class="reference internal" href="#id131">New features</a></li>
<li><a class="reference internal" href="#id132">Improvements</a></li>
<li><a class="reference internal" href="#id133">Bug fixes</a></li>
<li><a class="reference internal" href="#id134">Doc-only changes</a></li>
</ul>
</li>
<li><a class="reference internal" href="#airflow-1-10-1-2018-11-13">Airflow 1.10.1 (2018-11-13)</a><ul>
<li><a class="reference internal" href="#id135">Significant Changes</a><ul>
<li><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><a class="reference internal" href="#statsd-metrics">StatsD Metrics</a></li>
<li><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><a class="reference internal" href="#ldap-auth-backend-now-requires-tls">LDAP Auth Backend now requires TLS</a></li>
</ul>
</li>
<li><a class="reference internal" href="#id136">New features</a></li>
<li><a class="reference internal" href="#id137">Improvements</a></li>
<li><a class="reference internal" href="#id138">Doc-only changes</a></li>
<li><a class="reference internal" href="#id139">Bug fixes</a></li>
</ul>
</li>
<li><a class="reference internal" href="#airflow-1-10-0-2018-08-03">Airflow 1.10.0 (2018-08-03)</a><ul>
<li><a class="reference internal" href="#id140">Significant Changes</a><ul>
<li><a class="reference internal" href="#replace-dataprochook-await-calls-to-dataprochook-wait">Replace DataProcHook.await calls to DataProcHook.wait</a></li>
<li><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><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><a class="reference internal" href="#default-executor-for-subdagoperator-is-changed-to-sequentialexecutor">Default executor for SubDagOperator is changed to SequentialExecutor</a></li>
<li><a class="reference internal" href="#new-webserver-ui-with-role-based-access-control">New Webserver UI with Role-Based Access Control</a><ul>
<li><a class="reference internal" href="#setting-up-authentication">Setting up Authentication</a></li>
<li><a class="reference internal" href="#creating-an-admin-account">Creating an Admin Account</a></li>
<li><a class="reference internal" href="#using-your-new-ui">Using your new UI</a></li>
<li><a class="reference internal" href="#breaking-changes">Breaking changes</a></li>
</ul>
</li>
<li><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><a class="reference internal" href="#mysql-setting-required">MySQL setting required</a></li>
<li><a class="reference internal" href="#celery-config">Celery config</a></li>
<li><a class="reference internal" href="#gcp-dataflow-operators">GCP Dataflow Operators</a></li>
<li><a class="reference internal" href="#bigquery-hooks-and-operator">BigQuery Hooks and Operator</a></li>
<li><a class="reference internal" href="#redshift-to-s3-operator">Redshift to S3 Operator</a></li>
<li><a class="reference internal" href="#google-cloud-connection-string">Google cloud connection string</a></li>
<li><a class="reference internal" href="#logging-configuration">Logging Configuration</a><ul>
<li><a class="reference internal" href="#change-of-per-task-log-path">Change of per-task log path</a></li>
</ul>
</li>
</ul>
</li>
<li><a class="reference internal" href="#changelog">Changelog</a></li>
</ul>
</li>
<li><a class="reference internal" href="#airflow-1-9-0-2018-01-02">Airflow 1.9.0 (2018-01-02)</a><ul>
<li><a class="reference internal" href="#id141">Significant Changes</a><ul>
<li><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><a class="reference internal" href="#s3hook-switched-to-use-boto3">S3Hook switched to use Boto3</a></li>
<li><a class="reference internal" href="#logging-update">Logging update</a><ul>
<li><a class="reference internal" href="#a-quick-recap-about-logging">A quick recap about logging</a></li>
<li><a class="reference internal" href="#changes-in-airflow-logging">Changes in Airflow Logging</a></li>
<li><a class="reference internal" href="#template-path-of-the-file-task-handler">Template path of the file_task_handler</a></li>
<li><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><a class="reference internal" href="#id142">New Features</a><ul>
<li><a class="reference internal" href="#dask-executor">Dask Executor</a></li>
</ul>
</li>
<li><a class="reference internal" href="#deprecated-features">Deprecated Features</a></li>
</ul>
</li>
<li><a class="reference internal" href="#id143">Changelog</a></li>
</ul>
</li>
<li><a class="reference internal" href="#airflow-1-8-2-2017-09-04">Airflow 1.8.2 (2017-09-04)</a><ul>
<li><a class="reference internal" href="#id144">Significant Changes</a></li>
<li><a class="reference internal" href="#id145">Changelog</a></li>
</ul>
</li>
<li><a class="reference internal" href="#airflow-1-8-1-2017-05-09">Airflow 1.8.1 (2017-05-09)</a><ul>
<li><a class="reference internal" href="#id146">Significant Changes</a></li>
<li><a class="reference internal" href="#id147">Changelog</a></li>
</ul>
</li>
<li><a class="reference internal" href="#airflow-1-8-0-2017-03-12">Airflow 1.8.0 (2017-03-12)</a><ul>
<li><a class="reference internal" href="#id148">Significant Changes</a><ul>
<li><a class="reference internal" href="#database">Database</a></li>
<li><a class="reference internal" href="#upgrade-systemd-unit-files">Upgrade systemd unit files</a></li>
<li><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><a class="reference internal" href="#less-forgiving-scheduler-on-dynamic-start-date">Less forgiving scheduler on dynamic start_date</a></li>
<li><a class="reference internal" href="#new-and-updated-scheduler-options">New and updated scheduler options</a><ul>
<li><a class="reference internal" href="#child-process-log-directory">child_process_log_directory</a></li>
<li><a class="reference internal" href="#run-duration">run_duration</a></li>
<li><a class="reference internal" href="#num-runs">num_runs</a></li>
<li><a class="reference internal" href="#min-file-process-interval">min_file_process_interval</a></li>
<li><a class="reference internal" href="#min-file-parsing-loop-time">min_file_parsing_loop_time</a></li>
<li><a class="reference internal" href="#dag-dir-list-interval">dag_dir_list_interval</a></li>
<li><a class="reference internal" href="#catchup-by-default">catchup_by_default</a></li>
</ul>
</li>
<li><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><a class="reference internal" href="#new-dags-are-paused-by-default">New DAGs are paused by default</a></li>
<li><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><a class="reference internal" href="#google-cloud-operator-and-hook-alignment">Google Cloud Operator and Hook alignment</a></li>
<li><a class="reference internal" href="#id149">Deprecated Features</a></li>
<li><a class="reference internal" href="#known-issues">Known Issues</a></li>
</ul>
</li>
<li><a class="reference internal" href="#id150">Changelog</a></li>
</ul>
</li>
<li><a class="reference internal" href="#airflow-1-7-1-2-2016-05-20">Airflow 1.7.1.2 (2016-05-20)</a><ul>
<li><a class="reference internal" href="#id151">Significant Changes</a><ul>
<li><a class="reference internal" href="#changes-to-configuration">Changes to Configuration</a><ul>
<li><a class="reference internal" href="#email-configuration-change">Email configuration change</a></li>
<li><a class="reference internal" href="#s3-configuration-change">S3 configuration change</a></li>
</ul>
</li>
</ul>
</li>
<li><a class="reference internal" href="#id152">Changelog</a></li>
</ul>
</li>
<li><a class="reference internal" href="#airflow-1-7-1-2016-05-19">Airflow 1.7.1 (2016-05-19)</a></li>
</ul>
</li>
</ul>
</div>
</nav>
</div>
<div class="base-layout--button">
<a href="https://github.com/apache/airflow/edit/main/docs/apache-airflow/release_notes.rst" rel="nofollow">
<button class="btn-hollow btn-brown btn-with-icon with-box-shadow button-fixed">
<svg xmlns="http://www.w3.org/2000/svg" width="30.76" height="30">
<path d="M15.379 0a15.381 15.381 0 00-4.86 29.974c.769.141 1.05-.334 1.05-.741 0-.365-.013-1.332-.021-2.616-4.278.929-5.181-2.062-5.181-2.062a4.071 4.071 0 00-1.708-2.25c-1.4-.954.106-.935.106-.935a3.231 3.231 0 012.356 1.585 3.274 3.274 0 004.476 1.278 3.287 3.287 0 01.976-2.056c-3.415-.388-7.005-1.707-7.005-7.6a5.947 5.947 0 011.583-4.127 5.53 5.53 0 01.151-4.07s1.291-.413 4.229 1.577a14.577 14.577 0 017.7 0c2.936-1.99 4.225-1.577 4.225-1.577a5.523 5.523 0 01.153 4.07 5.937 5.937 0 011.581 4.127c0 5.909-3.6 7.209-7.022 7.589a3.672 3.672 0 011.044 2.848c0 2.056-.019 3.715-.019 4.219 0 .411.277.89 1.057.74A15.382 15.382 0 0015.378.001z" data-name="Path 224" fill="#51504f" fill-rule="evenodd"></path>
</svg>
<span class="bodytext__medium--brownish-grey">Suggest a change on this page</span>
</button>
</a>
</div>
</div>
<footer>
<div class="footer-section footer-section__media-section">
<div class="d-flex align-items-center">
<a class="footer-section__media-section--link" target="_blank" href="https://github.com/apache/airflow">
<svg xmlns="http://www.w3.org/2000/svg" width="46.14" height="45" viewBox="0 0 46.14 45">
<path id="Path_207" d="M228.962 1078.578a23.072 23.072 0 0 0-7.29 44.96c1.154.212 1.574-.5 1.574-1.112 0-.548-.02-2-.031-3.924-6.417 1.394-7.771-3.093-7.771-3.093a6.109 6.109 0 0 0-2.562-3.375c-2.095-1.431.159-1.4.159-1.4a4.846 4.846 0 0 1 3.533 2.377c2.058 3.525 5.4 2.507 6.714 1.917a4.926 4.926 0 0 1 1.464-3.084c-5.123-.582-10.508-2.562-10.508-11.4a8.919 8.919 0 0 1 2.374-6.191 8.3 8.3 0 0 1 .226-6.105s1.937-.62 6.344 2.365a21.857 21.857 0 0 1 11.551 0c4.4-2.985 6.338-2.365 6.338-2.365a8.284 8.284 0 0 1 .23 6.105 8.9 8.9 0 0 1 2.371 6.191c0 8.862-5.393 10.812-10.533 11.384a5.506 5.506 0 0 1 1.566 4.272c0 3.084-.028 5.572-.028 6.329 0 .617.415 1.334 1.586 1.109a23.073 23.073 0 0 0-7.308-44.958z" fill="#fff" fill-rule="evenodd" data-name="Path 207" transform="translate(-205.894 -1078.578)"></path>
</svg>
</a>
<a class="footer-section__media-section--link" target="_blank" href="https://github.com/apache/airflow/issues">
<svg xmlns="http://www.w3.org/2000/svg" width="45" height="45" viewBox="0 0 45 45">
<g id="Group_210" data-name="Group 210" transform="translate(-339.789 -1315.282)">
<path id="Path_218" d="M394.82 1315.282h-21.671a9.784 9.784 0 0 0 9.784 9.778h3.986v3.857a9.784 9.784 0 0 0 9.784 9.771v-21.523a1.884 1.884 0 0 0-1.883-1.883z" fill="#fff" data-name="Path 218" transform="translate(-11.914)"></path>
<path id="Path_219" d="M378.14 1332.072h-21.671a9.778 9.778 0 0 0 9.778 9.778h4.018v3.857a9.784 9.784 0 0 0 9.752 9.778v-21.536a1.877 1.877 0 0 0-1.877-1.877z" fill="#fff" data-name="Path 219" transform="translate(-5.957 -5.996)"></path>
<path id="Path_220" d="M361.46 1348.862h-21.671a9.778 9.778 0 0 0 9.778 9.778h3.992v3.857a9.778 9.778 0 0 0 9.778 9.778v-21.529a1.883 1.883 0 0 0-1.877-1.884z" fill="#fff" data-name="Path 220" transform="translate(0 -11.993)"></path>
</g>
</svg>
</a>
<a class="footer-section__media-section--link" target="_blank" href="https://s.apache.org/airflow-slack">
<svg xmlns="http://www.w3.org/2000/svg" width="45.073" height="45.073" viewBox="0 0 45.073 45.073">
<g id="Group_208" data-name="Group 208" transform="translate(-661.145 -806.287)">
<g id="Group_204" data-name="Group 204" transform="translate(661.145 830.01)">
<path id="Path_208" d="M670.634 856.859a4.744 4.744 0 1 1-4.744-4.744h4.744z" fill="#fff" data-name="Path 208" transform="translate(-661.145 -852.115)"></path>
<path id="Path_209" d="M684.059 856.859a4.744 4.744 0 0 1 9.489 0v11.861a4.744 4.744 0 1 1-9.489 0z" fill="#fff" data-name="Path 209" transform="translate(-672.198 -852.115)"></path>
</g>
<g id="Group_205" data-name="Group 205" transform="translate(661.145 806.287)">
<path id="Path_210" d="M688.8 815.776a4.744 4.744 0 1 1 4.744-4.745v4.745z" fill="#fff" data-name="Path 210" transform="translate(-672.198 -806.287)"></path>
<path id="Path_211" d="M677.751 829.2a4.744 4.744 0 0 1 0 9.489H665.89a4.744 4.744 0 1 1 0-9.489z" fill="#fff" data-name="Path 211" transform="translate(-661.145 -817.34)"></path>
</g>
<g id="Group_206" data-name="Group 206" transform="translate(684.868 806.287)">
<path id="Path_212" d="M729.887 833.945a4.744 4.744 0 1 1 4.745 4.745h-4.745z" fill="#fff" data-name="Path 212" transform="translate(-718.026 -817.34)"></path>
<path id="Path_213" d="M716.462 822.893a4.744 4.744 0 1 1-9.489 0v-11.862a4.744 4.744 0 0 1 9.489 0z" fill="#fff" data-name="Path 213" transform="translate(-706.973 -806.287)"></path>
</g>
<g id="Group_207" data-name="Group 207" transform="translate(684.868 830.01)">
<path id="Path_214" d="M711.718 875.029a4.744 4.744 0 1 1-4.745 4.744v-4.744z" fill="#fff" data-name="Path 214" transform="translate(-706.973 -863.168)"></path>
<path id="Path_215" d="M711.718 861.6a4.744 4.744 0 1 1 0-9.489h11.861a4.744 4.744 0 0 1 0 9.489z" fill="#fff" data-name="Path 215" transform="translate(-706.973 -852.115)"></path>
</g>
</g>
</svg>
</a>
<a class="footer-section__media-section--link" target="_blank" href="https://stackoverflow.com/questions/tagged/airflow">
<svg xmlns="http://www.w3.org/2000/svg" width="37.647" height="44.6" viewBox="0 0 37.647 44.6">
<g id="Group_209" data-name="Group 209" transform="translate(-645.2 -975.455)">
<path id="Path_216" d="M677.028 1043.1v-11.948h3.966v15.914H645.2v-15.914h3.966v11.948z" fill="#fff" data-name="Path 216" transform="translate(0 -27.014)"></path>
<path id="Path_217" d="M661.012 1003.008l19.467 4.069.824-3.914-19.467-4.069zm2.575-9.27l18.025 8.395 1.648-3.605-18.025-8.446zm5-8.858l15.3 12.721 2.524-3.039-15.3-12.721zm9.888-9.425l-3.193 2.369 11.845 15.965 3.193-2.369zm-17.875 36.617h19.879v-3.966H660.6z" fill="#fff" data-name="Path 217" transform="translate(-7.469)"></path>
</g>
</svg>
</a>
<a class="footer-section__media-section--link" target="_blank" href="https://twitter.com/ApacheAirflow">
<svg xmlns="http://www.w3.org/2000/svg" width="44.355" height="44.355" viewBox="0 0 44.355 44.355">
<g id="Group_211" data-name="Group 211" transform="translate(-503 -1382.2)">
<path id="Path_221" d="M541.811 1382.2h-33.267a5.546 5.546 0 0 0-5.544 5.544v33.266a5.547 5.547 0 0 0 5.544 5.545h33.267a5.546 5.546 0 0 0 5.544-5.545v-33.266a5.546 5.546 0 0 0-5.544-5.544zm-5.611 16.533c.011.244.011.488.011.732 0 7.507-5.722 16.178-16.179 16.178a16.173 16.173 0 0 1-8.7-2.539 10.92 10.92 0 0 0 1.353.078 11.4 11.4 0 0 0 7.064-2.44 5.685 5.685 0 0 1-5.311-3.947 5.725 5.725 0 0 0 2.561-.1 5.7 5.7 0 0 1-4.557-5.578v-.078a5.752 5.752 0 0 0 2.572.71 5.709 5.709 0 0 1-1.763-7.6 16.146 16.146 0 0 0 11.721 5.944 6.282 6.282 0 0 1-.144-1.3 5.688 5.688 0 0 1 9.836-3.892 11.3 11.3 0 0 0 3.615-1.375 5.721 5.721 0 0 1-2.506 3.149 11.538 11.538 0 0 0 3.271-.9 11.585 11.585 0 0 1-2.844 2.958z" fill="#fff" data-name="Path 221"></path>
</g>
</svg>
</a>
<a class="footer-section__media-section--link" target="_blank" href="https://www.youtube.com/channel/UCSXwxpWZQ7XZ1WL3wqevChA">
<svg xmlns="http://www.w3.org/2000/svg" width="49.594" height="34.941" viewBox="0 0 49.594 34.941">
<path id="Path_223" d="M1124.557 1230a6.232 6.232 0 0 0-4.385-4.413c-3.867-1.043-19.376-1.043-19.376-1.043s-15.508 0-19.376 1.043a6.232 6.232 0 0 0-4.385 4.413c-1.036 3.893-1.036 12.014-1.036 12.014s0 8.122 1.036 12.015a6.232 6.232 0 0 0 4.385 4.413c3.867 1.043 19.376 1.043 19.376 1.043s15.509 0 19.376-1.043a6.232 6.232 0 0 0 4.385-4.413c1.036-3.893 1.036-12.015 1.036-12.015s.001-8.123-1.036-12.014zm-28.833 19.388v-14.748l12.962 7.374z" fill="#fff" data-name="Path 223" transform="translate(-1076 -1224.542)"></path>
</svg>
</a>
</div>
<div class="footer-section__media-section--button-with-text">
<span class="footer-section__media-section--text">Want to be a part of Apache Airflow?</span>
<a href="/community">
<button id="" class="btn-filled bodytext__medium--white ">Join community</button>
</a>
</div>
</div>
<div class="footer-section footer-section__policies-section">
<div class="footer-section">
<span>© The Apache Software Foundation <script>document.write(new Date().getFullYear())</script></span>
<div class="footer-section__policies-section--policies">
<a href="https://www.apache.org/licenses/" class="footer-section__policies-section--policy-item">
<span>License</span>
</a>
<a href="https://www.apache.org/foundation/sponsorship.html" class="footer-section__policies-section--policy-item">
<span>Donate</span>
</a>
<a href="https://www.apache.org/foundation/thanks.html" class="footer-section__policies-section--policy-item">
<span>Thanks</span>
</a>
<a href="https://www.apache.org/security/" class="footer-section__policies-section--policy-item">
<span>Security</span>
</a>
</div>
</div>
<span class="footer-section__policies-section--disclaimer">
Apache Airflow, Apache, Airflow, the Airflow logo, and the Apache feather logo are either registered trademarks or trademarks of The Apache Software Foundation.
All other products or name brands are trademarks of their respective holders, including The Apache Software Foundation.
</span>
</div>
</footer>
<script type="text/javascript" src="_static/_gen/js/docs.js"></script>
<script type="text/javascript" id="documentation_options" data-url_root="./" src="_static/documentation_options.js"></script>
<script src="https://code.jquery.com/jquery-3.4.1.min.js" integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js" integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js" integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy" crossorigin="anonymous"></script>
<script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script>
<script src="_static/jquery.js"></script>
<script src="_static/underscore.js"></script>
<script src="_static/doctools.js"></script>
<script src="_static/clipboard.min.js"></script>
<script src="_static/copybutton.js"></script>
<script src="_static/gh-jira-links.js"></script>
</body>
</html>