http://git-wip-us.apache.org/repos/asf/incubator-airflow-site/blob/1f06fa0e/_modules/airflow/models.html ---------------------------------------------------------------------- diff --git a/_modules/airflow/models.html b/_modules/airflow/models.html index 6860ce6..49046b8 100644 --- a/_modules/airflow/models.html +++ b/_modules/airflow/models.html @@ -202,6 +202,7 @@ <span class="kn">import</span> <span class="nn">logging</span> <span class="kn">import</span> <span class="nn">numbers</span> <span class="kn">import</span> <span class="nn">os</span> +<span class="kn">import</span> <span class="nn">pendulum</span> <span class="kn">import</span> <span class="nn">pickle</span> <span class="kn">import</span> <span class="nn">re</span> <span class="kn">import</span> <span class="nn">signal</span> @@ -222,7 +223,9 @@ <span class="kn">from</span> <span class="nn">sqlalchemy.ext.declarative</span> <span class="k">import</span> <span class="n">declarative_base</span><span class="p">,</span> <span class="n">declared_attr</span> <span class="kn">from</span> <span class="nn">sqlalchemy.orm</span> <span class="k">import</span> <span class="n">reconstructor</span><span class="p">,</span> <span class="n">relationship</span><span class="p">,</span> <span class="n">synonym</span> -<span class="kn">from</span> <span class="nn">croniter</span> <span class="k">import</span> <span class="n">croniter</span> +<span class="kn">from</span> <span class="nn">croniter</span> <span class="k">import</span> <span class="p">(</span> + <span class="n">croniter</span><span class="p">,</span> <span class="n">CroniterBadCronError</span><span class="p">,</span> <span class="n">CroniterBadDateError</span><span class="p">,</span> <span class="n">CroniterNotAlphaError</span> +<span class="p">)</span> <span class="kn">import</span> <span class="nn">six</span> <span class="kn">from</span> <span class="nn">airflow</span> <span class="k">import</span> <span class="n">settings</span><span class="p">,</span> <span class="n">utils</span> @@ -302,6 +305,8 @@ <span class="sd"> :raises: AirflowException if there's a problem trying to load Fernet</span> <span class="sd"> """</span> <span class="k">global</span> <span class="n">_fernet</span> + <span class="n">log</span> <span class="o">=</span> <span class="n">LoggingMixin</span><span class="p">()</span><span class="o">.</span><span class="n">log</span> + <span class="k">if</span> <span class="n">_fernet</span><span class="p">:</span> <span class="k">return</span> <span class="n">_fernet</span> <span class="k">try</span><span class="p">:</span> @@ -310,18 +315,26 @@ <span class="n">InvalidFernetToken</span> <span class="o">=</span> <span class="n">InvalidToken</span> <span class="k">except</span> <span class="n">BuiltinImportError</span><span class="p">:</span> - <span class="n">LoggingMixin</span><span class="p">()</span><span class="o">.</span><span class="n">log</span><span class="o">.</span><span class="n">warn</span><span class="p">(</span><span class="s2">"cryptography not found - values will not be stored "</span> - <span class="s2">"encrypted."</span><span class="p">,</span> - <span class="n">exc_info</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span> + <span class="n">log</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span> + <span class="s2">"cryptography not found - values will not be stored encrypted."</span> + <span class="p">)</span> <span class="n">_fernet</span> <span class="o">=</span> <span class="n">NullFernet</span><span class="p">()</span> <span class="k">return</span> <span class="n">_fernet</span> <span class="k">try</span><span class="p">:</span> - <span class="n">_fernet</span> <span class="o">=</span> <span class="n">Fernet</span><span class="p">(</span><span class="n">configuration</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">'core'</span><span class="p">,</span> <span class="s1">'FERNET_KEY'</span><span class="p">)</span><span class="o">.</span><span class="n">encode</span><span class="p">(</span><span class="s1">'utf-8'</span><span class="p">))</span> - <span class="n">_fernet</span><span class="o">.</span><span class="n">is_encrypted</span> <span class="o">=</span> <span class="kc">True</span> - <span class="k">return</span> <span class="n">_fernet</span> + <span class="n">fernet_key</span> <span class="o">=</span> <span class="n">configuration</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">'core'</span><span class="p">,</span> <span class="s1">'FERNET_KEY'</span><span class="p">)</span> + <span class="k">if</span> <span class="ow">not</span> <span class="n">fernet_key</span><span class="p">:</span> + <span class="n">log</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span> + <span class="s2">"empty cryptography key - values will not be stored encrypted."</span> + <span class="p">)</span> + <span class="n">_fernet</span> <span class="o">=</span> <span class="n">NullFernet</span><span class="p">()</span> + <span class="k">else</span><span class="p">:</span> + <span class="n">_fernet</span> <span class="o">=</span> <span class="n">Fernet</span><span class="p">(</span><span class="n">fernet_key</span><span class="o">.</span><span class="n">encode</span><span class="p">(</span><span class="s1">'utf-8'</span><span class="p">))</span> + <span class="n">_fernet</span><span class="o">.</span><span class="n">is_encrypted</span> <span class="o">=</span> <span class="kc">True</span> <span class="k">except</span> <span class="p">(</span><span class="ne">ValueError</span><span class="p">,</span> <span class="ne">TypeError</span><span class="p">)</span> <span class="k">as</span> <span class="n">ve</span><span class="p">:</span> - <span class="k">raise</span> <span class="n">AirflowException</span><span class="p">(</span><span class="s2">"Could not create Fernet object: </span><span class="si">{}</span><span class="s2">"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">ve</span><span class="p">))</span></div> + <span class="k">raise</span> <span class="n">AirflowException</span><span class="p">(</span><span class="s2">"Could not create Fernet object: </span><span class="si">{}</span><span class="s2">"</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">ve</span><span class="p">))</span> + + <span class="k">return</span> <span class="n">_fernet</span></div> <span class="c1"># Used by DAG context_managers</span> @@ -496,7 +509,8 @@ <span class="k">return</span> <span class="n">found_dags</span> <span class="n">mods</span> <span class="o">=</span> <span class="p">[]</span> - <span class="k">if</span> <span class="ow">not</span> <span class="n">zipfile</span><span class="o">.</span><span class="n">is_zipfile</span><span class="p">(</span><span class="n">filepath</span><span class="p">):</span> + <span class="n">is_zipfile</span> <span class="o">=</span> <span class="n">zipfile</span><span class="o">.</span><span class="n">is_zipfile</span><span class="p">(</span><span class="n">filepath</span><span class="p">)</span> + <span class="k">if</span> <span class="ow">not</span> <span class="n">is_zipfile</span><span class="p">:</span> <span class="k">if</span> <span class="n">safe_mode</span> <span class="ow">and</span> <span class="n">os</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">isfile</span><span class="p">(</span><span class="n">filepath</span><span class="p">):</span> <span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="n">filepath</span><span class="p">,</span> <span class="s1">'rb'</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span> <span class="n">content</span> <span class="o">=</span> <span class="n">f</span><span class="o">.</span><span class="n">read</span><span class="p">()</span> @@ -568,13 +582,23 @@ <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">dag</span><span class="p">,</span> <span class="n">DAG</span><span class="p">):</span> <span class="k">if</span> <span class="ow">not</span> <span class="n">dag</span><span class="o">.</span><span class="n">full_filepath</span><span class="p">:</span> <span class="n">dag</span><span class="o">.</span><span class="n">full_filepath</span> <span class="o">=</span> <span class="n">filepath</span> - <span class="k">if</span> <span class="n">dag</span><span class="o">.</span><span class="n">fileloc</span> <span class="o">!=</span> <span class="n">filepath</span><span class="p">:</span> + <span class="k">if</span> <span class="n">dag</span><span class="o">.</span><span class="n">fileloc</span> <span class="o">!=</span> <span class="n">filepath</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">is_zipfile</span><span class="p">:</span> <span class="n">dag</span><span class="o">.</span><span class="n">fileloc</span> <span class="o">=</span> <span class="n">filepath</span> <span class="k">try</span><span class="p">:</span> <span class="n">dag</span><span class="o">.</span><span class="n">is_subdag</span> <span class="o">=</span> <span class="kc">False</span> <span class="bp">self</span><span class="o">.</span><span class="n">bag_dag</span><span class="p">(</span><span class="n">dag</span><span class="p">,</span> <span class="n">parent_dag</span><span class="o">=</span><span class="n">dag</span><span class="p">,</span> <span class="n">root_dag</span><span class="o">=</span><span class="n">dag</span><span class="p">)</span> + <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">dag</span><span class="o">.</span><span class="n">_schedule_interval</span><span class="p">,</span> <span class="n">six</span><span class="o">.</span><span class="n">string_types</span><span class="p">):</span> + <span class="n">croniter</span><span class="p">(</span><span class="n">dag</span><span class="o">.</span><span class="n">_schedule_interval</span><span class="p">)</span> <span class="n">found_dags</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">dag</span><span class="p">)</span> <span class="n">found_dags</span> <span class="o">+=</span> <span class="n">dag</span><span class="o">.</span><span class="n">subdags</span> + <span class="k">except</span> <span class="p">(</span><span class="n">CroniterBadCronError</span><span class="p">,</span> + <span class="n">CroniterBadDateError</span><span class="p">,</span> + <span class="n">CroniterNotAlphaError</span><span class="p">)</span> <span class="k">as</span> <span class="n">cron_e</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">log</span><span class="o">.</span><span class="n">exception</span><span class="p">(</span><span class="s2">"Failed to bag_dag: </span><span class="si">%s</span><span class="s2">"</span><span class="p">,</span> <span class="n">dag</span><span class="o">.</span><span class="n">full_filepath</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">import_errors</span><span class="p">[</span><span class="n">dag</span><span class="o">.</span><span class="n">full_filepath</span><span class="p">]</span> <span class="o">=</span> \ + <span class="s2">"Invalid Cron expression: "</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">cron_e</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">file_last_changed</span><span class="p">[</span><span class="n">dag</span><span class="o">.</span><span class="n">full_filepath</span><span class="p">]</span> <span class="o">=</span> \ + <span class="n">file_last_changed_on_disk</span> <span class="k">except</span> <span class="n">AirflowDagCycleException</span> <span class="k">as</span> <span class="n">cycle_exception</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">log</span><span class="o">.</span><span class="n">exception</span><span class="p">(</span><span class="s2">"Failed to bag_dag: </span><span class="si">%s</span><span class="s2">"</span><span class="p">,</span> <span class="n">dag</span><span class="o">.</span><span class="n">full_filepath</span><span class="p">)</span> <span class="bp">self</span><span class="o">.</span><span class="n">import_errors</span><span class="p">[</span><span class="n">dag</span><span class="o">.</span><span class="n">full_filepath</span><span class="p">]</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">cycle_exception</span><span class="p">)</span> @@ -669,10 +693,12 @@ <span class="sd"> Given a file path or a folder, this method looks for python modules,</span> <span class="sd"> imports them and adds them to the dagbag collection.</span> -<span class="sd"> Note that if a .airflowignore file is found while processing,</span> -<span class="sd"> the directory, it will behaves much like a .gitignore does,</span> +<span class="sd"> Note that if a ``.airflowignore`` file is found while processing</span> +<span class="sd"> the directory, it will behave much like a ``.gitignore``,</span> <span class="sd"> ignoring files that match any of the regex patterns specified</span> -<span class="sd"> in the file. **Note**: The patterns in .airflowignore are treated as</span> +<span class="sd"> in the file.</span> + +<span class="sd"> **Note**: The patterns in .airflowignore are treated as</span> <span class="sd"> un-anchored regexes, not shell-like glob patterns.</span> <span class="sd"> """</span> <span class="n">start_dttm</span> <span class="o">=</span> <span class="n">timezone</span><span class="o">.</span><span class="n">utcnow</span><span class="p">()</span> @@ -1268,10 +1294,10 @@ <span class="n">BASE_URL</span> <span class="o">=</span> <span class="n">configuration</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">'webserver'</span><span class="p">,</span> <span class="s1">'BASE_URL'</span><span class="p">)</span> <span class="k">if</span> <span class="n">settings</span><span class="o">.</span><span class="n">RBAC</span><span class="p">:</span> <span class="k">return</span> <span class="n">BASE_URL</span> <span class="o">+</span> <span class="p">(</span> - <span class="s2">"/log/list/"</span> - <span class="s2">"?_flt_3_dag_id=</span><span class="si">{self.dag_id}</span><span class="s2">"</span> - <span class="s2">"&_flt_3_task_id=</span><span class="si">{self.task_id}</span><span class="s2">"</span> - <span class="s2">"&_flt_3_execution_date=</span><span class="si">{iso}</span><span class="s2">"</span> + <span class="s2">"/log?"</span> + <span class="s2">"execution_date=</span><span class="si">{iso}</span><span class="s2">"</span> + <span class="s2">"&task_id=</span><span class="si">{self.task_id}</span><span class="s2">"</span> + <span class="s2">"&dag_id=</span><span class="si">{self.dag_id}</span><span class="s2">"</span> <span class="p">)</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="o">**</span><span class="nb">locals</span><span class="p">())</span> <span class="k">else</span><span class="p">:</span> <span class="k">return</span> <span class="n">BASE_URL</span> <span class="o">+</span> <span class="p">(</span> @@ -1384,7 +1410,7 @@ <span class="sd">"""</span> <span class="sd"> Returns a tuple that identifies the task instance uniquely</span> <span class="sd"> """</span> - <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">dag_id</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">task_id</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">execution_date</span> + <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">dag_id</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">task_id</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">execution_date</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">try_number</span> <span class="nd">@provide_session</span> <span class="k">def</span> <span class="nf">set_state</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">session</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span> @@ -1834,14 +1860,6 @@ <span class="bp">self</span><span class="o">.</span><span class="n">handle_failure</span><span class="p">(</span><span class="n">e</span><span class="p">,</span> <span class="n">test_mode</span><span class="p">,</span> <span class="n">context</span><span class="p">)</span> <span class="k">raise</span> - <span class="c1"># Recording SUCCESS</span> - <span class="bp">self</span><span class="o">.</span><span class="n">end_date</span> <span class="o">=</span> <span class="n">timezone</span><span class="o">.</span><span class="n">utcnow</span><span class="p">()</span> - <span class="bp">self</span><span class="o">.</span><span class="n">set_duration</span><span class="p">()</span> - <span class="k">if</span> <span class="ow">not</span> <span class="n">test_mode</span><span class="p">:</span> - <span class="n">session</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">Log</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">state</span><span class="p">,</span> <span class="bp">self</span><span class="p">))</span> - <span class="n">session</span><span class="o">.</span><span class="n">merge</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> - <span class="n">session</span><span class="o">.</span><span class="n">commit</span><span class="p">()</span> - <span class="c1"># Success callback</span> <span class="k">try</span><span class="p">:</span> <span class="k">if</span> <span class="n">task</span><span class="o">.</span><span class="n">on_success_callback</span><span class="p">:</span> @@ -1850,6 +1868,12 @@ <span class="bp">self</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="s2">"Failed when executing success callback"</span><span class="p">)</span> <span class="bp">self</span><span class="o">.</span><span class="n">log</span><span class="o">.</span><span class="n">exception</span><span class="p">(</span><span class="n">e3</span><span class="p">)</span> + <span class="c1"># Recording SUCCESS</span> + <span class="bp">self</span><span class="o">.</span><span class="n">end_date</span> <span class="o">=</span> <span class="n">timezone</span><span class="o">.</span><span class="n">utcnow</span><span class="p">()</span> + <span class="bp">self</span><span class="o">.</span><span class="n">set_duration</span><span class="p">()</span> + <span class="k">if</span> <span class="ow">not</span> <span class="n">test_mode</span><span class="p">:</span> + <span class="n">session</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">Log</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">state</span><span class="p">,</span> <span class="bp">self</span><span class="p">))</span> + <span class="n">session</span><span class="o">.</span><span class="n">merge</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="n">session</span><span class="o">.</span><span class="n">commit</span><span class="p">()</span> <span class="nd">@provide_session</span> @@ -1906,6 +1930,9 @@ <span class="c1"># Log failure duration</span> <span class="n">session</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">TaskFail</span><span class="p">(</span><span class="n">task</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">execution_date</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">start_date</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">end_date</span><span class="p">))</span> + <span class="k">if</span> <span class="n">context</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> + <span class="n">context</span><span class="p">[</span><span class="s1">'exception'</span><span class="p">]</span> <span class="o">=</span> <span class="n">error</span> + <span class="c1"># Let's go deeper</span> <span class="k">try</span><span class="p">:</span> <span class="c1"># Since this function is called only when the TI state is running,</span> @@ -2283,8 +2310,8 @@ <span class="bp">self</span><span class="o">.</span><span class="n">owner</span> <span class="o">=</span> <span class="n">owner</span> <span class="ow">or</span> <span class="n">task_owner</span></div> -<span class="k">class</span> <span class="nc">SkipMixin</span><span class="p">(</span><span class="n">LoggingMixin</span><span class="p">):</span> - <span class="nd">@provide_session</span> +<div class="viewcode-block" id="SkipMixin"><a class="viewcode-back" href="../../code.html#airflow.models.SkipMixin">[docs]</a><span class="k">class</span> <span class="nc">SkipMixin</span><span class="p">(</span><span class="n">LoggingMixin</span><span class="p">):</span> +<div class="viewcode-block" id="SkipMixin.skip"><a class="viewcode-back" href="../../code.html#airflow.models.SkipMixin.skip">[docs]</a> <span class="nd">@provide_session</span> <span class="k">def</span> <span class="nf">skip</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">dag_run</span><span class="p">,</span> <span class="n">execution_date</span><span class="p">,</span> <span class="n">tasks</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="sd">"""</span> <span class="sd"> Sets tasks instances to skipped from the same dag run.</span> @@ -2322,7 +2349,7 @@ <span class="n">ti</span><span class="o">.</span><span class="n">end_date</span> <span class="o">=</span> <span class="n">now</span> <span class="n">session</span><span class="o">.</span><span class="n">merge</span><span class="p">(</span><span class="n">ti</span><span class="p">)</span> - <span class="n">session</span><span class="o">.</span><span class="n">commit</span><span class="p">()</span> + <span class="n">session</span><span class="o">.</span><span class="n">commit</span><span class="p">()</span></div></div> <div class="viewcode-block" id="BaseOperator"><a class="viewcode-back" href="../../code.html#airflow.models.BaseOperator">[docs]</a><span class="nd">@functools</span><span class="o">.</span><span class="n">total_ordering</span> @@ -2450,6 +2477,7 @@ <span class="sd"> :type on_failure_callback: callable</span> <span class="sd"> :param on_retry_callback: much like the ``on_failure_callback`` except</span> <span class="sd"> that it is executed when retries occur.</span> +<span class="sd"> :type on_retry_callback: callable</span> <span class="sd"> :param on_success_callback: much like the ``on_failure_callback`` except</span> <span class="sd"> that it is executed when the task succeeds.</span> <span class="sd"> :type on_success_callback: callable</span> @@ -2472,14 +2500,17 @@ <span class="sd"> :param executor_config: Additional task-level configuration parameters that are</span> <span class="sd"> interpreted by a specific executor. Parameters are namespaced by the name of</span> <span class="sd"> executor.</span> -<span class="sd"> ``example: to run this task in a specific docker container through</span> -<span class="sd"> the KubernetesExecutor</span> -<span class="sd"> MyOperator(...,</span> -<span class="sd"> executor_config={</span> -<span class="sd"> "KubernetesExecutor":</span> -<span class="sd"> {"image": "myCustomDockerImage"}</span> -<span class="sd"> }</span> -<span class="sd"> )``</span> + +<span class="sd"> **Example**: to run this task in a specific docker container through</span> +<span class="sd"> the KubernetesExecutor ::</span> + +<span class="sd"> MyOperator(...,</span> +<span class="sd"> executor_config={</span> +<span class="sd"> "KubernetesExecutor":</span> +<span class="sd"> {"image": "myCustomDockerImage"}</span> +<span class="sd"> }</span> +<span class="sd"> )</span> + <span class="sd"> :type executor_config: dict</span> <span class="sd"> """</span> @@ -2548,10 +2579,17 @@ <span class="bp">self</span><span class="o">.</span><span class="n">email</span> <span class="o">=</span> <span class="n">email</span> <span class="bp">self</span><span class="o">.</span><span class="n">email_on_retry</span> <span class="o">=</span> <span class="n">email_on_retry</span> <span class="bp">self</span><span class="o">.</span><span class="n">email_on_failure</span> <span class="o">=</span> <span class="n">email_on_failure</span> + <span class="bp">self</span><span class="o">.</span><span class="n">start_date</span> <span class="o">=</span> <span class="n">start_date</span> <span class="k">if</span> <span class="n">start_date</span> <span class="ow">and</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">start_date</span><span class="p">,</span> <span class="n">datetime</span><span class="p">):</span> <span class="bp">self</span><span class="o">.</span><span class="n">log</span><span class="o">.</span><span class="n">warning</span><span class="p">(</span><span class="s2">"start_date for </span><span class="si">%s</span><span class="s2"> isn't datetime.datetime"</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span> + <span class="k">elif</span> <span class="n">start_date</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">start_date</span> <span class="o">=</span> <span class="n">timezone</span><span class="o">.</span><span class="n">convert_to_utc</span><span class="p">(</span><span class="n">start_date</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">end_date</span> <span class="o">=</span> <span class="n">end_date</span> + <span class="k">if</span> <span class="n">end_date</span><span class="p">:</span> + <span class="bp">self</span><span class="o">.</span><span class="n">end_date</span> <span class="o">=</span> <span class="n">timezone</span><span class="o">.</span><span class="n">convert_to_utc</span><span class="p">(</span><span class="n">end_date</span><span class="p">)</span> + <span class="k">if</span> <span class="ow">not</span> <span class="n">TriggerRule</span><span class="o">.</span><span class="n">is_valid</span><span class="p">(</span><span class="n">trigger_rule</span><span class="p">):</span> <span class="k">raise</span> <span class="n">AirflowException</span><span class="p">(</span> <span class="s2">"The trigger_rule must be one of </span><span class="si">{all_triggers}</span><span class="s2">,"</span> @@ -3372,7 +3410,8 @@ <span class="n">timezone</span><span class="o">.</span><span class="n">parse</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">default_args</span><span class="p">[</span><span class="s1">'start_date'</span><span class="p">])</span> <span class="p">)</span> <span class="bp">self</span><span class="o">.</span><span class="n">timezone</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">default_args</span><span class="p">[</span><span class="s1">'start_date'</span><span class="p">]</span><span class="o">.</span><span class="n">tzinfo</span> - <span class="k">else</span><span class="p">:</span> + + <span class="k">if</span> <span class="ow">not</span> <span class="nb">hasattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="s1">'timezone'</span><span class="p">)</span> <span class="ow">or</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">timezone</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">timezone</span> <span class="o">=</span> <span class="n">settings</span><span class="o">.</span><span class="n">TIMEZONE</span> <span class="bp">self</span><span class="o">.</span><span class="n">start_date</span> <span class="o">=</span> <span class="n">timezone</span><span class="o">.</span><span class="n">convert_to_utc</span><span class="p">(</span><span class="n">start_date</span><span class="p">)</span> @@ -3477,34 +3516,77 @@ <span class="n">start_date</span><span class="o">=</span><span class="n">start_date</span><span class="p">,</span> <span class="n">end_date</span><span class="o">=</span><span class="n">end_date</span><span class="p">,</span> <span class="n">num</span><span class="o">=</span><span class="n">num</span><span class="p">,</span> <span class="n">delta</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">_schedule_interval</span><span class="p">)</span> +<div class="viewcode-block" id="DAG.is_fixed_time_schedule"><a class="viewcode-back" href="../../code.html#airflow.models.DAG.is_fixed_time_schedule">[docs]</a> <span class="k">def</span> <span class="nf">is_fixed_time_schedule</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> + <span class="sd">"""</span> +<span class="sd"> Figures out if the DAG schedule has a fixed time (e.g. 3 AM).</span> + +<span class="sd"> :return: True if the schedule has a fixed time, False if not.</span> +<span class="sd"> """</span> + <span class="n">now</span> <span class="o">=</span> <span class="n">datetime</span><span class="o">.</span><span class="n">now</span><span class="p">()</span> + <span class="n">cron</span> <span class="o">=</span> <span class="n">croniter</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_schedule_interval</span><span class="p">,</span> <span class="n">now</span><span class="p">)</span> + + <span class="n">start</span> <span class="o">=</span> <span class="n">cron</span><span class="o">.</span><span class="n">get_next</span><span class="p">(</span><span class="n">datetime</span><span class="p">)</span> + <span class="n">cron_next</span> <span class="o">=</span> <span class="n">cron</span><span class="o">.</span><span class="n">get_next</span><span class="p">(</span><span class="n">datetime</span><span class="p">)</span> + + <span class="k">if</span> <span class="n">cron_next</span><span class="o">.</span><span class="n">minute</span> <span class="o">==</span> <span class="n">start</span><span class="o">.</span><span class="n">minute</span> <span class="ow">and</span> <span class="n">cron_next</span><span class="o">.</span><span class="n">hour</span> <span class="o">==</span> <span class="n">start</span><span class="o">.</span><span class="n">hour</span><span class="p">:</span> + <span class="k">return</span> <span class="kc">True</span> + + <span class="k">return</span> <span class="kc">False</span></div> + <div class="viewcode-block" id="DAG.following_schedule"><a class="viewcode-back" href="../../code.html#airflow.models.DAG.following_schedule">[docs]</a> <span class="k">def</span> <span class="nf">following_schedule</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">dttm</span><span class="p">):</span> <span class="sd">"""</span> -<span class="sd"> Calculates the following schedule for this dag in local time</span> +<span class="sd"> Calculates the following schedule for this dag in UTC.</span> <span class="sd"> :param dttm: utc datetime</span> <span class="sd"> :return: utc datetime</span> <span class="sd"> """</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_schedule_interval</span><span class="p">,</span> <span class="n">six</span><span class="o">.</span><span class="n">string_types</span><span class="p">):</span> - <span class="n">dttm</span> <span class="o">=</span> <span class="n">timezone</span><span class="o">.</span><span class="n">make_naive</span><span class="p">(</span><span class="n">dttm</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">timezone</span><span class="p">)</span> - <span class="n">cron</span> <span class="o">=</span> <span class="n">croniter</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_schedule_interval</span><span class="p">,</span> <span class="n">dttm</span><span class="p">)</span> - <span class="n">following</span> <span class="o">=</span> <span class="n">timezone</span><span class="o">.</span><span class="n">make_aware</span><span class="p">(</span><span class="n">cron</span><span class="o">.</span><span class="n">get_next</span><span class="p">(</span><span class="n">datetime</span><span class="p">),</span> <span class="bp">self</span><span class="o">.</span><span class="n">timezone</span><span class="p">)</span> + <span class="c1"># we don't want to rely on the transitions created by</span> + <span class="c1"># croniter as they are not always correct</span> + <span class="n">dttm</span> <span class="o">=</span> <span class="n">pendulum</span><span class="o">.</span><span class="n">instance</span><span class="p">(</span><span class="n">dttm</span><span class="p">)</span> + <span class="n">naive</span> <span class="o">=</span> <span class="n">timezone</span><span class="o">.</span><span class="n">make_naive</span><span class="p">(</span><span class="n">dttm</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">timezone</span><span class="p">)</span> + <span class="n">cron</span> <span class="o">=</span> <span class="n">croniter</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_schedule_interval</span><span class="p">,</span> <span class="n">naive</span><span class="p">)</span> + + <span class="c1"># We assume that DST transitions happen on the minute/hour</span> + <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_fixed_time_schedule</span><span class="p">():</span> + <span class="c1"># relative offset (eg. every 5 minutes)</span> + <span class="n">delta</span> <span class="o">=</span> <span class="n">cron</span><span class="o">.</span><span class="n">get_next</span><span class="p">(</span><span class="n">datetime</span><span class="p">)</span> <span class="o">-</span> <span class="n">naive</span> + <span class="n">following</span> <span class="o">=</span> <span class="n">dttm</span><span class="o">.</span><span class="n">in_timezone</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">timezone</span><span class="p">)</span><span class="o">.</span><span class="n">add_timedelta</span><span class="p">(</span><span class="n">delta</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="c1"># absolute (e.g. 3 AM)</span> + <span class="n">naive</span> <span class="o">=</span> <span class="n">cron</span><span class="o">.</span><span class="n">get_next</span><span class="p">(</span><span class="n">datetime</span><span class="p">)</span> + <span class="n">tz</span> <span class="o">=</span> <span class="n">pendulum</span><span class="o">.</span><span class="n">timezone</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">timezone</span><span class="o">.</span><span class="n">name</span><span class="p">)</span> + <span class="n">following</span> <span class="o">=</span> <span class="n">timezone</span><span class="o">.</span><span class="n">make_aware</span><span class="p">(</span><span class="n">naive</span><span class="p">,</span> <span class="n">tz</span><span class="p">)</span> <span class="k">return</span> <span class="n">timezone</span><span class="o">.</span><span class="n">convert_to_utc</span><span class="p">(</span><span class="n">following</span><span class="p">)</span> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_schedule_interval</span><span class="p">,</span> <span class="n">timedelta</span><span class="p">):</span> <span class="k">return</span> <span class="n">dttm</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">_schedule_interval</span></div> <div class="viewcode-block" id="DAG.previous_schedule"><a class="viewcode-back" href="../../code.html#airflow.models.DAG.previous_schedule">[docs]</a> <span class="k">def</span> <span class="nf">previous_schedule</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">dttm</span><span class="p">):</span> <span class="sd">"""</span> -<span class="sd"> Calculates the previous schedule for this dag in local time</span> +<span class="sd"> Calculates the previous schedule for this dag in UTC</span> <span class="sd"> :param dttm: utc datetime</span> <span class="sd"> :return: utc datetime</span> <span class="sd"> """</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_schedule_interval</span><span class="p">,</span> <span class="n">six</span><span class="o">.</span><span class="n">string_types</span><span class="p">):</span> - <span class="n">dttm</span> <span class="o">=</span> <span class="n">timezone</span><span class="o">.</span><span class="n">make_naive</span><span class="p">(</span><span class="n">dttm</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">timezone</span><span class="p">)</span> - <span class="n">cron</span> <span class="o">=</span> <span class="n">croniter</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_schedule_interval</span><span class="p">,</span> <span class="n">dttm</span><span class="p">)</span> - <span class="n">prev</span> <span class="o">=</span> <span class="n">timezone</span><span class="o">.</span><span class="n">make_aware</span><span class="p">(</span><span class="n">cron</span><span class="o">.</span><span class="n">get_prev</span><span class="p">(</span><span class="n">datetime</span><span class="p">),</span> <span class="bp">self</span><span class="o">.</span><span class="n">timezone</span><span class="p">)</span> - <span class="k">return</span> <span class="n">timezone</span><span class="o">.</span><span class="n">convert_to_utc</span><span class="p">(</span><span class="n">prev</span><span class="p">)</span> - <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_schedule_interval</span><span class="p">,</span> <span class="n">timedelta</span><span class="p">):</span> + <span class="c1"># we don't want to rely on the transitions created by</span> + <span class="c1"># croniter as they are not always correct</span> + <span class="n">dttm</span> <span class="o">=</span> <span class="n">pendulum</span><span class="o">.</span><span class="n">instance</span><span class="p">(</span><span class="n">dttm</span><span class="p">)</span> + <span class="n">naive</span> <span class="o">=</span> <span class="n">timezone</span><span class="o">.</span><span class="n">make_naive</span><span class="p">(</span><span class="n">dttm</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">timezone</span><span class="p">)</span> + <span class="n">cron</span> <span class="o">=</span> <span class="n">croniter</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_schedule_interval</span><span class="p">,</span> <span class="n">naive</span><span class="p">)</span> + + <span class="c1"># We assume that DST transitions happen on the minute/hour</span> + <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_fixed_time_schedule</span><span class="p">():</span> + <span class="c1"># relative offset (eg. every 5 minutes)</span> + <span class="n">delta</span> <span class="o">=</span> <span class="n">naive</span> <span class="o">-</span> <span class="n">cron</span><span class="o">.</span><span class="n">get_prev</span><span class="p">(</span><span class="n">datetime</span><span class="p">)</span> + <span class="n">previous</span> <span class="o">=</span> <span class="n">dttm</span><span class="o">.</span><span class="n">in_timezone</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">timezone</span><span class="p">)</span><span class="o">.</span><span class="n">subtract_timedelta</span><span class="p">(</span><span class="n">delta</span><span class="p">)</span> + <span class="k">else</span><span class="p">:</span> + <span class="c1"># absolute (e.g. 3 AM)</span> + <span class="n">naive</span> <span class="o">=</span> <span class="n">cron</span><span class="o">.</span><span class="n">get_prev</span><span class="p">(</span><span class="n">datetime</span><span class="p">)</span> + <span class="n">tz</span> <span class="o">=</span> <span class="n">pendulum</span><span class="o">.</span><span class="n">timezone</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">timezone</span><span class="o">.</span><span class="n">name</span><span class="p">)</span> + <span class="n">previous</span> <span class="o">=</span> <span class="n">timezone</span><span class="o">.</span><span class="n">make_aware</span><span class="p">(</span><span class="n">naive</span><span class="p">,</span> <span class="n">tz</span><span class="p">)</span> + <span class="k">return</span> <span class="n">timezone</span><span class="o">.</span><span class="n">convert_to_utc</span><span class="p">(</span><span class="n">previous</span><span class="p">)</span> + <span class="k">elif</span> <span class="bp">self</span><span class="o">.</span><span class="n">_schedule_interval</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> <span class="k">return</span> <span class="n">dttm</span> <span class="o">-</span> <span class="bp">self</span><span class="o">.</span><span class="n">_schedule_interval</span></div> <div class="viewcode-block" id="DAG.get_run_dates"><a class="viewcode-back" href="../../code.html#airflow.models.DAG.get_run_dates">[docs]</a> <span class="k">def</span> <span class="nf">get_run_dates</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">start_date</span><span class="p">,</span> <span class="n">end_date</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span> @@ -3915,9 +3997,11 @@ <span class="n">only_running</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">confirm_prompt</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">include_subdags</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> + <span class="n">include_parentdag</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">reset_dag_runs</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">dry_run</span><span class="o">=</span><span class="kc">False</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="n">get_tis</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="p">):</span> <span class="sd">"""</span> <span class="sd"> Clears a set of task instances associated with the current dag for</span> @@ -3938,6 +4022,25 @@ <span class="n">tis</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">TI</span><span class="p">)</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">TI</span><span class="o">.</span><span class="n">dag_id</span> <span class="o">==</span> <span class="bp">self</span><span class="o">.</span><span class="n">dag_id</span><span class="p">)</span> <span class="n">tis</span> <span class="o">=</span> <span class="n">tis</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">TI</span><span class="o">.</span><span class="n">task_id</span><span class="o">.</span><span class="n">in_</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">task_ids</span><span class="p">))</span> + <span class="k">if</span> <span class="n">include_parentdag</span> <span class="ow">and</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_subdag</span><span class="p">:</span> + + <span class="n">p_dag</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">parent_dag</span><span class="o">.</span><span class="n">sub_dag</span><span class="p">(</span> + <span class="n">task_regex</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">dag_id</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s1">'.'</span><span class="p">)[</span><span class="mi">1</span><span class="p">],</span> + <span class="n">include_upstream</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> + <span class="n">include_downstream</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> + + <span class="n">tis</span> <span class="o">=</span> <span class="n">tis</span><span class="o">.</span><span class="n">union</span><span class="p">(</span><span class="n">p_dag</span><span class="o">.</span><span class="n">clear</span><span class="p">(</span> + <span class="n">start_date</span><span class="o">=</span><span class="n">start_date</span><span class="p">,</span> <span class="n">end_date</span><span class="o">=</span><span class="n">end_date</span><span class="p">,</span> + <span class="n">only_failed</span><span class="o">=</span><span class="n">only_failed</span><span class="p">,</span> + <span class="n">only_running</span><span class="o">=</span><span class="n">only_running</span><span class="p">,</span> + <span class="n">confirm_prompt</span><span class="o">=</span><span class="n">confirm_prompt</span><span class="p">,</span> + <span class="n">include_subdags</span><span class="o">=</span><span class="n">include_subdags</span><span class="p">,</span> + <span class="n">include_parentdag</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> + <span class="n">reset_dag_runs</span><span class="o">=</span><span class="n">reset_dag_runs</span><span class="p">,</span> + <span class="n">get_tis</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> + <span class="n">session</span><span class="o">=</span><span class="n">session</span><span class="p">,</span> + <span class="p">))</span> + <span class="k">if</span> <span class="n">start_date</span><span class="p">:</span> <span class="n">tis</span> <span class="o">=</span> <span class="n">tis</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">TI</span><span class="o">.</span><span class="n">execution_date</span> <span class="o">>=</span> <span class="n">start_date</span><span class="p">)</span> <span class="k">if</span> <span class="n">end_date</span><span class="p">:</span> @@ -3947,6 +4050,9 @@ <span class="k">if</span> <span class="n">only_running</span><span class="p">:</span> <span class="n">tis</span> <span class="o">=</span> <span class="n">tis</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">TI</span><span class="o">.</span><span class="n">state</span> <span class="o">==</span> <span class="n">State</span><span class="o">.</span><span class="n">RUNNING</span><span class="p">)</span> + <span class="k">if</span> <span class="n">get_tis</span><span class="p">:</span> + <span class="k">return</span> <span class="n">tis</span> + <span class="k">if</span> <span class="n">dry_run</span><span class="p">:</span> <span class="n">tis</span> <span class="o">=</span> <span class="n">tis</span><span class="o">.</span><span class="n">all</span><span class="p">()</span> <span class="n">session</span><span class="o">.</span><span class="n">expunge_all</span><span class="p">()</span> @@ -3990,6 +4096,7 @@ <span class="n">only_running</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">confirm_prompt</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">include_subdags</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> + <span class="n">include_parentdag</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">reset_dag_runs</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">dry_run</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="p">):</span> @@ -4002,6 +4109,7 @@ <span class="n">only_running</span><span class="o">=</span><span class="n">only_running</span><span class="p">,</span> <span class="n">confirm_prompt</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">include_subdags</span><span class="o">=</span><span class="n">include_subdags</span><span class="p">,</span> + <span class="n">include_parentdag</span><span class="o">=</span><span class="n">include_parentdag</span><span class="p">,</span> <span class="n">reset_dag_runs</span><span class="o">=</span><span class="n">reset_dag_runs</span><span class="p">,</span> <span class="n">dry_run</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> <span class="n">all_tis</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="n">tis</span><span class="p">)</span> @@ -4378,7 +4486,8 @@ <span class="k">for</span> <span class="n">dag</span> <span class="ow">in</span> <span class="n">session</span><span class="o">.</span><span class="n">query</span><span class="p">(</span> <span class="n">DagModel</span><span class="p">)</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="o">~</span><span class="n">DagModel</span><span class="o">.</span><span class="n">dag_id</span><span class="o">.</span><span class="n">in_</span><span class="p">(</span><span class="n">active_dag_ids</span><span class="p">))</span><span class="o">.</span><span class="n">all</span><span class="p">():</span> <span class="n">dag</span><span class="o">.</span><span class="n">is_active</span> <span class="o">=</span> <span class="kc">False</span> - <span class="n">session</span><span class="o">.</span><span class="n">merge</span><span class="p">(</span><span class="n">dag</span><span class="p">)</span></div> + <span class="n">session</span><span class="o">.</span><span class="n">merge</span><span class="p">(</span><span class="n">dag</span><span class="p">)</span> + <span class="n">session</span><span class="o">.</span><span class="n">commit</span><span class="p">()</span></div> <div class="viewcode-block" id="DAG.deactivate_stale_dags"><a class="viewcode-back" href="../../code.html#airflow.models.DAG.deactivate_stale_dags">[docs]</a> <span class="nd">@staticmethod</span> <span class="nd">@provide_session</span> @@ -4915,7 +5024,7 @@ <span class="sd"> """</span> <span class="c1"># unfortunately sqlalchemy does not know upsert</span> <span class="n">qry</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">DagStat</span><span class="p">)</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">DagStat</span><span class="o">.</span><span class="n">dag_id</span> <span class="o">==</span> <span class="n">dag_id</span><span class="p">)</span><span class="o">.</span><span class="n">all</span><span class="p">()</span> - <span class="n">states</span> <span class="o">=</span> <span class="p">[</span><span class="n">dag_stat</span><span class="o">.</span><span class="n">state</span> <span class="k">for</span> <span class="n">dag_stat</span> <span class="ow">in</span> <span class="n">qry</span><span class="p">]</span> + <span class="n">states</span> <span class="o">=</span> <span class="p">{</span><span class="n">dag_stat</span><span class="o">.</span><span class="n">state</span> <span class="k">for</span> <span class="n">dag_stat</span> <span class="ow">in</span> <span class="n">qry</span><span class="p">}</span> <span class="k">for</span> <span class="n">state</span> <span class="ow">in</span> <span class="n">State</span><span class="o">.</span><span class="n">dag_states</span><span class="p">:</span> <span class="k">if</span> <span class="n">state</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">states</span><span class="p">:</span> <span class="k">try</span><span class="p">:</span> @@ -4972,6 +5081,8 @@ <span class="k">def</span> <span class="nf">set_state</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="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_state</span> <span class="o">!=</span> <span class="n">state</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_state</span> <span class="o">=</span> <span class="n">state</span> + <span class="bp">self</span><span class="o">.</span><span class="n">end_date</span> <span class="o">=</span> <span class="n">timezone</span><span class="o">.</span><span class="n">utcnow</span><span class="p">()</span> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_state</span> <span class="ow">in</span> <span class="n">State</span><span class="o">.</span><span class="n">finished</span><span class="p">()</span> <span class="k">else</span> <span class="kc">None</span> + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">dag_id</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span> <span class="c1"># FIXME: Due to the scoped_session factor we we don't get a clean</span> <span class="c1"># session here, so something really weird goes on:</span> @@ -5195,7 +5306,7 @@ <span class="k">if</span> <span class="p">(</span><span class="ow">not</span> <span class="n">unfinished_tasks</span> <span class="ow">and</span> <span class="nb">any</span><span class="p">(</span><span class="n">r</span><span class="o">.</span><span class="n">state</span> <span class="ow">in</span> <span class="p">(</span><span class="n">State</span><span class="o">.</span><span class="n">FAILED</span><span class="p">,</span> <span class="n">State</span><span class="o">.</span><span class="n">UPSTREAM_FAILED</span><span class="p">)</span> <span class="k">for</span> <span class="n">r</span> <span class="ow">in</span> <span class="n">roots</span><span class="p">)):</span> <span class="bp">self</span><span class="o">.</span><span class="n">log</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s1">'Marking run </span><span class="si">%s</span><span class="s1"> failed'</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span> - <span class="bp">self</span><span class="o">.</span><span class="n">state</span> <span class="o">=</span> <span class="n">State</span><span class="o">.</span><span class="n">FAILED</span> + <span class="bp">self</span><span class="o">.</span><span class="n">set_state</span><span class="p">(</span><span class="n">State</span><span class="o">.</span><span class="n">FAILED</span><span class="p">)</span> <span class="n">dag</span><span class="o">.</span><span class="n">handle_callback</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">success</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">reason</span><span class="o">=</span><span class="s1">'task_failure'</span><span class="p">,</span> <span class="n">session</span><span class="o">=</span><span class="n">session</span><span class="p">)</span> @@ -5203,20 +5314,20 @@ <span class="k">elif</span> <span class="ow">not</span> <span class="n">unfinished_tasks</span> <span class="ow">and</span> <span class="nb">all</span><span class="p">(</span><span class="n">r</span><span class="o">.</span><span class="n">state</span> <span class="ow">in</span> <span class="p">(</span><span class="n">State</span><span class="o">.</span><span class="n">SUCCESS</span><span class="p">,</span> <span class="n">State</span><span class="o">.</span><span class="n">SKIPPED</span><span class="p">)</span> <span class="k">for</span> <span class="n">r</span> <span class="ow">in</span> <span class="n">roots</span><span class="p">):</span> <span class="bp">self</span><span class="o">.</span><span class="n">log</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s1">'Marking run </span><span class="si">%s</span><span class="s1"> successful'</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span> - <span class="bp">self</span><span class="o">.</span><span class="n">state</span> <span class="o">=</span> <span class="n">State</span><span class="o">.</span><span class="n">SUCCESS</span> + <span class="bp">self</span><span class="o">.</span><span class="n">set_state</span><span class="p">(</span><span class="n">State</span><span class="o">.</span><span class="n">SUCCESS</span><span class="p">)</span> <span class="n">dag</span><span class="o">.</span><span class="n">handle_callback</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">success</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">reason</span><span class="o">=</span><span class="s1">'success'</span><span class="p">,</span> <span class="n">session</span><span class="o">=</span><span class="n">session</span><span class="p">)</span> <span class="c1"># if *all tasks* are deadlocked, the run failed</span> <span class="k">elif</span> <span class="p">(</span><span class="n">unfinished_tasks</span> <span class="ow">and</span> <span class="n">none_depends_on_past</span> <span class="ow">and</span> <span class="n">none_task_concurrency</span> <span class="ow">and</span> <span class="n">no_dependencies_met</span><span class="p">):</span> <span class="bp">self</span><span class="o">.</span><span class="n">log</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s1">'Deadlock; marking run </span><span class="si">%s</span><span class="s1"> failed'</span><span class="p">,</span> <span class="bp">self</span><span class="p">)</span> - <span class="bp">self</span><span class="o">.</span><span class="n">state</span> <span class="o">=</span> <span class="n">State</span><span class="o">.</span><span class="n">FAILED</span> + <span class="bp">self</span><span class="o">.</span><span class="n">set_state</span><span class="p">(</span><span class="n">State</span><span class="o">.</span><span class="n">FAILED</span><span class="p">)</span> <span class="n">dag</span><span class="o">.</span><span class="n">handle_callback</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">success</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span> <span class="n">reason</span><span class="o">=</span><span class="s1">'all_tasks_deadlocked'</span><span class="p">,</span> <span class="n">session</span><span class="o">=</span><span class="n">session</span><span class="p">)</span> <span class="c1"># finally, if the roots aren't done, the dag is still running</span> <span class="k">else</span><span class="p">:</span> - <span class="bp">self</span><span class="o">.</span><span class="n">state</span> <span class="o">=</span> <span class="n">State</span><span class="o">.</span><span class="n">RUNNING</span> + <span class="bp">self</span><span class="o">.</span><span class="n">set_state</span><span class="p">(</span><span class="n">State</span><span class="o">.</span><span class="n">RUNNING</span><span class="p">)</span> <span class="c1"># todo: determine we want to use with_for_update to make sure to lock the run</span> <span class="n">session</span><span class="o">.</span><span class="n">merge</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> @@ -5262,6 +5373,8 @@ <span class="k">for</span> <span class="n">task</span> <span class="ow">in</span> <span class="n">six</span><span class="o">.</span><span class="n">itervalues</span><span class="p">(</span><span class="n">dag</span><span class="o">.</span><span class="n">task_dict</span><span class="p">):</span> <span class="k">if</span> <span class="n">task</span><span class="o">.</span><span class="n">adhoc</span><span class="p">:</span> <span class="k">continue</span> + <span class="k">if</span> <span class="n">task</span><span class="o">.</span><span class="n">start_date</span> <span class="o">></span> <span class="bp">self</span><span class="o">.</span><span class="n">execution_date</span> <span class="ow">and</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">is_backfill</span><span class="p">:</span> + <span class="k">continue</span> <span class="k">if</span> <span class="n">task</span><span class="o">.</span><span class="n">task_id</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">task_ids</span><span class="p">:</span> <span class="n">ti</span> <span class="o">=</span> <span class="n">TaskInstance</span><span class="p">(</span><span class="n">task</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">execution_date</span><span class="p">)</span> @@ -5482,20 +5595,13 @@ - <script type="text/javascript"> - var DOCUMENTATION_OPTIONS = { - URL_ROOT:'../../', - VERSION:'', - LANGUAGE:'None', - COLLAPSE_INDEX:false, - FILE_SUFFIX:'.html', - HAS_SOURCE: true, - SOURCELINK_SUFFIX: '.txt' - }; - </script> - <script type="text/javascript" src="../../_static/jquery.js"></script> - <script type="text/javascript" src="../../_static/underscore.js"></script> - <script type="text/javascript" src="../../_static/doctools.js"></script> + + + <script type="text/javascript" id="documentation_options" data-url_root="../../" src="../../_static/documentation_options.js"></script> + <script type="text/javascript" src="../../_static/jquery.js"></script> + <script type="text/javascript" src="../../_static/underscore.js"></script> + <script type="text/javascript" src="../../_static/doctools.js"></script> +
http://git-wip-us.apache.org/repos/asf/incubator-airflow-site/blob/1f06fa0e/_modules/airflow/operators/bash_operator.html ---------------------------------------------------------------------- diff --git a/_modules/airflow/operators/bash_operator.html b/_modules/airflow/operators/bash_operator.html index da3c883..3ed727c 100644 --- a/_modules/airflow/operators/bash_operator.html +++ b/_modules/airflow/operators/bash_operator.html @@ -281,9 +281,9 @@ <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">xcom_push_flag</span><span class="p">:</span> <span class="k">return</span> <span class="n">line</span></div> - <span class="k">def</span> <span class="nf">on_kill</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> +<div class="viewcode-block" id="BashOperator.on_kill"><a class="viewcode-back" href="../../../code.html#airflow.operators.bash_operator.BashOperator.on_kill">[docs]</a> <span class="k">def</span> <span class="nf">on_kill</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> <span class="bp">self</span><span class="o">.</span><span class="n">log</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s1">'Sending SIGTERM signal to bash process group'</span><span class="p">)</span> - <span class="n">os</span><span class="o">.</span><span class="n">killpg</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">getpgid</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sp</span><span class="o">.</span><span class="n">pid</span><span class="p">),</span> <span class="n">signal</span><span class="o">.</span><span class="n">SIGTERM</span><span class="p">)</span></div> + <span class="n">os</span><span class="o">.</span><span class="n">killpg</span><span class="p">(</span><span class="n">os</span><span class="o">.</span><span class="n">getpgid</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sp</span><span class="o">.</span><span class="n">pid</span><span class="p">),</span> <span class="n">signal</span><span class="o">.</span><span class="n">SIGTERM</span><span class="p">)</span></div></div> </pre></div> </div> @@ -314,20 +314,13 @@ - <script type="text/javascript"> - var DOCUMENTATION_OPTIONS = { - URL_ROOT:'../../../', - VERSION:'', - LANGUAGE:'None', - COLLAPSE_INDEX:false, - FILE_SUFFIX:'.html', - HAS_SOURCE: true, - SOURCELINK_SUFFIX: '.txt' - }; - </script> - <script type="text/javascript" src="../../../_static/jquery.js"></script> - <script type="text/javascript" src="../../../_static/underscore.js"></script> - <script type="text/javascript" src="../../../_static/doctools.js"></script> + + + <script type="text/javascript" id="documentation_options" data-url_root="../../../" src="../../../_static/documentation_options.js"></script> + <script type="text/javascript" src="../../../_static/jquery.js"></script> + <script type="text/javascript" src="../../../_static/underscore.js"></script> + <script type="text/javascript" src="../../../_static/doctools.js"></script> + http://git-wip-us.apache.org/repos/asf/incubator-airflow-site/blob/1f06fa0e/_modules/airflow/operators/check_operator.html ---------------------------------------------------------------------- diff --git a/_modules/airflow/operators/check_operator.html b/_modules/airflow/operators/check_operator.html index 4d3fd89..06703b9 100644 --- a/_modules/airflow/operators/check_operator.html +++ b/_modules/airflow/operators/check_operator.html @@ -236,7 +236,7 @@ <span class="bp">self</span><span class="o">.</span><span class="n">conn_id</span> <span class="o">=</span> <span class="n">conn_id</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span> <span class="o">=</span> <span class="n">sql</span> - <span class="k">def</span> <span class="nf">execute</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">context</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span> +<div class="viewcode-block" id="CheckOperator.execute"><a class="viewcode-back" href="../../../code.html#airflow.operators.check_operator.CheckOperator.execute">[docs]</a> <span class="k">def</span> <span class="nf">execute</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">context</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span> <span class="bp">self</span><span class="o">.</span><span class="n">log</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s1">'Executing SQL check: </span><span class="si">%s</span><span class="s1">'</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">)</span> <span class="n">records</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_db_hook</span><span class="p">()</span><span class="o">.</span><span class="n">get_first</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">)</span> <span class="bp">self</span><span class="o">.</span><span class="n">log</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s1">'Record: </span><span class="si">%s</span><span class="s1">'</span><span class="p">,</span> <span class="n">records</span><span class="p">)</span> @@ -245,7 +245,7 @@ <span class="k">elif</span> <span class="ow">not</span> <span class="nb">all</span><span class="p">([</span><span class="nb">bool</span><span class="p">(</span><span class="n">r</span><span class="p">)</span> <span class="k">for</span> <span class="n">r</span> <span class="ow">in</span> <span class="n">records</span><span class="p">]):</span> <span class="n">exceptstr</span> <span class="o">=</span> <span class="s2">"Test failed.</span><span class="se">\n</span><span class="s2">Query:</span><span class="se">\n</span><span class="si">{q}</span><span class="se">\n</span><span class="s2">Results:</span><span class="se">\n</span><span class="si">{r!s}</span><span class="s2">"</span> <span class="k">raise</span> <span class="n">AirflowException</span><span class="p">(</span><span class="n">exceptstr</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">q</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">,</span> <span class="n">r</span><span class="o">=</span><span class="n">records</span><span class="p">))</span> - <span class="bp">self</span><span class="o">.</span><span class="n">log</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">"Success."</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">log</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">"Success."</span><span class="p">)</span></div> <span class="k">def</span> <span class="nf">get_db_hook</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> <span class="k">return</span> <span class="n">BaseHook</span><span class="o">.</span><span class="n">get_hook</span><span class="p">(</span><span class="n">conn_id</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">conn_id</span><span class="p">)</span></div> @@ -298,7 +298,7 @@ <span class="bp">self</span><span class="o">.</span><span class="n">tol</span> <span class="o">=</span> <span class="n">tol</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">tol</span><span class="p">,</span> <span class="nb">float</span><span class="p">)</span> <span class="k">else</span> <span class="kc">None</span> <span class="bp">self</span><span class="o">.</span><span class="n">has_tolerance</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">tol</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span> - <span class="k">def</span> <span class="nf">execute</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">context</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span> +<div class="viewcode-block" id="ValueCheckOperator.execute"><a class="viewcode-back" href="../../../code.html#airflow.operators.check_operator.ValueCheckOperator.execute">[docs]</a> <span class="k">def</span> <span class="nf">execute</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">context</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span> <span class="bp">self</span><span class="o">.</span><span class="n">log</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s1">'Executing SQL check: </span><span class="si">%s</span><span class="s1">'</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">)</span> <span class="n">records</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_db_hook</span><span class="p">()</span><span class="o">.</span><span class="n">get_first</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">)</span> <span class="k">if</span> <span class="ow">not</span> <span class="n">records</span><span class="p">:</span> @@ -330,7 +330,7 @@ <span class="k">else</span><span class="p">:</span> <span class="n">tests</span> <span class="o">=</span> <span class="p">[</span><span class="n">r</span> <span class="o">==</span> <span class="n">pass_value_conv</span> <span class="k">for</span> <span class="n">r</span> <span class="ow">in</span> <span class="n">num_rec</span><span class="p">]</span> <span class="k">if</span> <span class="ow">not</span> <span class="nb">all</span><span class="p">(</span><span class="n">tests</span><span class="p">):</span> - <span class="k">raise</span> <span class="n">AirflowException</span><span class="p">(</span><span class="n">except_temp</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="o">**</span><span class="nb">locals</span><span class="p">()))</span> + <span class="k">raise</span> <span class="n">AirflowException</span><span class="p">(</span><span class="n">except_temp</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="o">**</span><span class="nb">locals</span><span class="p">()))</span></div> <span class="k">def</span> <span class="nf">get_db_hook</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> <span class="k">return</span> <span class="n">BaseHook</span><span class="o">.</span><span class="n">get_hook</span><span class="p">(</span><span class="n">conn_id</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">conn_id</span><span class="p">)</span></div> @@ -380,7 +380,7 @@ <span class="bp">self</span><span class="o">.</span><span class="n">sql1</span> <span class="o">=</span> <span class="n">sqlt</span> <span class="o">+</span> <span class="s2">"'{{ ds }}'"</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql2</span> <span class="o">=</span> <span class="n">sqlt</span> <span class="o">+</span> <span class="s2">"'{{ macros.ds_add(ds, "</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">days_back</span><span class="p">)</span> <span class="o">+</span> <span class="s2">") }}'"</span> - <span class="k">def</span> <span class="nf">execute</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">context</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span> +<div class="viewcode-block" id="IntervalCheckOperator.execute"><a class="viewcode-back" href="../../../code.html#airflow.operators.check_operator.IntervalCheckOperator.execute">[docs]</a> <span class="k">def</span> <span class="nf">execute</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">context</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span> <span class="n">hook</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">get_db_hook</span><span class="p">()</span> <span class="bp">self</span><span class="o">.</span><span class="n">log</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s1">'Executing SQL check: </span><span class="si">%s</span><span class="s1">'</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql2</span><span class="p">)</span> <span class="n">row2</span> <span class="o">=</span> <span class="n">hook</span><span class="o">.</span><span class="n">get_first</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">sql2</span><span class="p">)</span> @@ -417,7 +417,7 @@ <span class="n">fstr</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">k</span><span class="o">=</span><span class="n">k</span><span class="p">,</span> <span class="n">r</span><span class="o">=</span><span class="n">ratios</span><span class="p">[</span><span class="n">k</span><span class="p">],</span> <span class="n">tr</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">metrics_thresholds</span><span class="p">[</span><span class="n">k</span><span class="p">])</span> <span class="p">)</span> <span class="k">raise</span> <span class="n">AirflowException</span><span class="p">(</span><span class="n">estr</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="s2">", "</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">failed_tests</span><span class="p">)))</span> - <span class="bp">self</span><span class="o">.</span><span class="n">log</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">"All tests have passed"</span><span class="p">)</span> + <span class="bp">self</span><span class="o">.</span><span class="n">log</span><span class="o">.</span><span class="n">info</span><span class="p">(</span><span class="s2">"All tests have passed"</span><span class="p">)</span></div> <span class="k">def</span> <span class="nf">get_db_hook</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> <span class="k">return</span> <span class="n">BaseHook</span><span class="o">.</span><span class="n">get_hook</span><span class="p">(</span><span class="n">conn_id</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">conn_id</span><span class="p">)</span></div> @@ -451,20 +451,13 @@ - <script type="text/javascript"> - var DOCUMENTATION_OPTIONS = { - URL_ROOT:'../../../', - VERSION:'', - LANGUAGE:'None', - COLLAPSE_INDEX:false, - FILE_SUFFIX:'.html', - HAS_SOURCE: true, - SOURCELINK_SUFFIX: '.txt' - }; - </script> - <script type="text/javascript" src="../../../_static/jquery.js"></script> - <script type="text/javascript" src="../../../_static/underscore.js"></script> - <script type="text/javascript" src="../../../_static/doctools.js"></script> + + + <script type="text/javascript" id="documentation_options" data-url_root="../../../" src="../../../_static/documentation_options.js"></script> + <script type="text/javascript" src="../../../_static/jquery.js"></script> + <script type="text/javascript" src="../../../_static/underscore.js"></script> + <script type="text/javascript" src="../../../_static/doctools.js"></script> +