http://git-wip-us.apache.org/repos/asf/incubator-airflow-site/blob/9c75ee9e/_modules/ssh_hook.html
----------------------------------------------------------------------
diff --git a/_modules/ssh_hook.html b/_modules/ssh_hook.html
index e094b62..8da4b35 100644
--- a/_modules/ssh_hook.html
+++ b/_modules/ssh_hook.html
@@ -30,6 +30,9 @@
+ <link rel="index" title="Index"
+ href="../genindex.html"/>
+ <link rel="search" title="Search" href="../search.html"/>
<link rel="top" title="Airflow Documentation" href="../index.html"/>
<link rel="up" title="Module code" href="index.html"/>
@@ -40,6 +43,7 @@
<body class="wy-body-for-nav" role="document">
+
<div class="wy-grid-for-nav">
@@ -90,6 +94,8 @@
<li class="toctree-l1"><a class="reference internal" href="../scheduler.html">Scheduling
& Triggers</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.html">Security</a></li>
+<li class="toctree-l1"><a class="reference internal" href="../api.html">Experimental
Rest API</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="../faq.html">FAQ</a></li>
<li class="toctree-l1"><a class="reference internal" href="../code.html">API
Reference</a></li>
</ul>
@@ -104,8 +110,10 @@
<nav class="wy-nav-top" role="navigation" aria-label="top navigation">
- <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
- <a href="../index.html">Airflow</a>
+
+ <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+ <a href="../index.html">Airflow</a>
+
</nav>
@@ -118,19 +126,36 @@
+
+
+
+
+
+
+
+
+
+
<div role="navigation" aria-label="breadcrumbs navigation">
+
<ul class="wy-breadcrumbs">
- <li><a href="../index.html">Docs</a> »</li>
-
+
+ <li><a href="../index.html">Docs</a> »</li>
+
<li><a href="index.html">Module code</a> »</li>
-
- <li>ssh_hook</li>
+
+ <li>ssh_hook</li>
+
+
<li class="wy-breadcrumbs-aside">
-
+
</li>
+
</ul>
+
+
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
@@ -156,10 +181,10 @@
<span class="c1">#</span>
<span class="c1"># This is a port of Luigi's ssh implementation. All credits
go there.</span>
<span class="kn">import</span> <span class="nn">subprocess</span>
-<span class="kn">from</span> <span class="nn">contextlib</span> <span
class="kn">import</span> <span class="n">contextmanager</span>
+<span class="kn">from</span> <span class="nn">contextlib</span> <span
class="k">import</span> <span class="n">contextmanager</span>
-<span class="kn">from</span> <span class="nn">airflow.hooks.base_hook</span>
<span class="kn">import</span> <span class="n">BaseHook</span>
-<span class="kn">from</span> <span class="nn">airflow.exceptions</span>
<span class="kn">import</span> <span class="n">AirflowException</span>
+<span class="kn">from</span> <span class="nn">airflow.hooks.base_hook</span>
<span class="k">import</span> <span class="n">BaseHook</span>
+<span class="kn">from</span> <span class="nn">airflow.exceptions</span>
<span class="k">import</span> <span class="n">AirflowException</span>
<span class="kn">import</span> <span class="nn">logging</span>
@@ -191,11 +216,13 @@
<span class="sd"> """</span>
<span class="k">def</span> <span class="nf">__init__</span><span
class="p">(</span><span class="bp">self</span><span class="p">,</span>
<span class="n">conn_id</span><span class="o">=</span><span class="s1">'ssh_default'</span><span
class="p">):</span>
<span class="n">conn</span> <span class="o">=</span> <span
class="bp">self</span><span class="o">.</span><span class="n">get_connection</span><span
class="p">(</span><span class="n">conn_id</span><span class="p">)</span>
- <span class="bp">self</span><span class="o">.</span><span
class="n">key_file</span> <span class="o">=</span> <span class="n">conn</span><span
class="o">.</span><span class="n">extra_dejson</span><span class="o">.</span><span
class="n">get</span><span class="p">(</span><span class="s1">'key_file'</span><span
class="p">,</span> <span class="bp">None</span><span class="p">)</span>
- <span class="bp">self</span><span class="o">.</span><span
class="n">connect_timeout</span> <span class="o">=</span> <span class="n">conn</span><span
class="o">.</span><span class="n">extra_dejson</span><span class="o">.</span><span
class="n">get</span><span class="p">(</span><span class="s1">'connect_timeout'</span><span
class="p">,</span> <span class="bp">None</span><span class="p">)</span>
- <span class="bp">self</span><span class="o">.</span><span
class="n">no_host_key_check</span> <span class="o">=</span> <span
class="n">conn</span><span class="o">.</span><span class="n">extra_dejson</span><span
class="o">.</span><span class="n">get</span><span class="p">(</span><span
class="s1">'no_host_key_check'</span><span class="p">,</span>
<span class="bp">False</span><span class="p">)</span>
- <span class="bp">self</span><span class="o">.</span><span
class="n">tty</span> <span class="o">=</span> <span class="n">conn</span><span
class="o">.</span><span class="n">extra_dejson</span><span class="o">.</span><span
class="n">get</span><span class="p">(</span><span class="s1">'tty'</span><span
class="p">,</span> <span class="bp">False</span><span class="p">)</span>
- <span class="bp">self</span><span class="o">.</span><span
class="n">sshpass</span> <span class="o">=</span> <span class="n">conn</span><span
class="o">.</span><span class="n">extra_dejson</span><span class="o">.</span><span
class="n">get</span><span class="p">(</span><span class="s1">'sshpass'</span><span
class="p">,</span> <span class="bp">False</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span
class="n">key_file</span> <span class="o">=</span> <span class="n">conn</span><span
class="o">.</span><span class="n">extra_dejson</span><span class="o">.</span><span
class="n">get</span><span class="p">(</span><span class="s1">'key_file'</span><span
class="p">,</span> <span class="kc">None</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span
class="n">connect_timeout</span> <span class="o">=</span> <span class="n">conn</span><span
class="o">.</span><span class="n">extra_dejson</span><span class="o">.</span><span
class="n">get</span><span class="p">(</span><span class="s1">'connect_timeout'</span><span
class="p">,</span> <span class="kc">None</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span
class="n">tcp_keepalive</span> <span class="o">=</span> <span class="n">conn</span><span
class="o">.</span><span class="n">extra_dejson</span><span class="o">.</span><span
class="n">get</span><span class="p">(</span><span class="s1">'tcp_keepalive'</span><span
class="p">,</span> <span class="kc">False</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span
class="n">server_alive_interval</span> <span class="o">=</span> <span
class="n">conn</span><span class="o">.</span><span class="n">extra_dejson</span><span
class="o">.</span><span class="n">get</span><span class="p">(</span><span
class="s1">'server_alive_interval'</span><span class="p">,</span>
<span class="mi">60</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span
class="n">no_host_key_check</span> <span class="o">=</span> <span
class="n">conn</span><span class="o">.</span><span class="n">extra_dejson</span><span
class="o">.</span><span class="n">get</span><span class="p">(</span><span
class="s1">'no_host_key_check'</span><span class="p">,</span>
<span class="kc">False</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span
class="n">tty</span> <span class="o">=</span> <span class="n">conn</span><span
class="o">.</span><span class="n">extra_dejson</span><span class="o">.</span><span
class="n">get</span><span class="p">(</span><span class="s1">'tty'</span><span
class="p">,</span> <span class="kc">False</span><span class="p">)</span>
+ <span class="bp">self</span><span class="o">.</span><span
class="n">sshpass</span> <span class="o">=</span> <span class="n">conn</span><span
class="o">.</span><span class="n">extra_dejson</span><span class="o">.</span><span
class="n">get</span><span class="p">(</span><span class="s1">'sshpass'</span><span
class="p">,</span> <span class="kc">False</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span
class="n">conn</span> <span class="o">=</span> <span class="n">conn</span>
<span class="k">def</span> <span class="nf">get_conn</span><span
class="p">(</span><span class="bp">self</span><span class="p">):</span>
@@ -203,7 +230,7 @@
<span class="k">def</span> <span class="nf">_host_ref</span><span
class="p">(</span><span class="bp">self</span><span class="p">):</span>
<span class="k">if</span> <span class="bp">self</span><span
class="o">.</span><span class="n">conn</span><span class="o">.</span><span
class="n">login</span><span class="p">:</span>
- <span class="k">return</span> <span class="s2">"{0}@{1}"</span><span
class="o">.</span><span class="n">format</span><span class="p">(</span><span
class="bp">self</span><span class="o">.</span><span class="n">conn</span><span
class="o">.</span><span class="n">login</span><span class="p">,</span>
<span class="bp">self</span><span class="o">.</span><span class="n">conn</span><span
class="o">.</span><span class="n">host</span><span class="p">)</span>
+ <span class="k">return</span> <span class="s2">"</span><span
class="si">{0}</span><span class="s2">@</span><span class="si">{1}</span><span
class="s2">"</span><span class="o">.</span><span class="n">format</span><span
class="p">(</span><span class="bp">self</span><span class="o">.</span><span
class="n">conn</span><span class="o">.</span><span class="n">login</span><span
class="p">,</span> <span class="bp">self</span><span class="o">.</span><span
class="n">conn</span><span class="o">.</span><span class="n">host</span><span
class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="k">return</span> <span class="bp">self</span><span
class="o">.</span><span class="n">conn</span><span class="o">.</span><span
class="n">host</span>
@@ -218,7 +245,11 @@
<span class="n">connection_cmd</span> <span class="o">+=</span>
<span class="p">[</span><span class="s2">"-p"</span><span
class="p">,</span> <span class="nb">str</span><span class="p">(</span><span
class="bp">self</span><span class="o">.</span><span class="n">conn</span><span
class="o">.</span><span class="n">port</span><span class="p">)]</span>
<span class="k">if</span> <span class="bp">self</span><span
class="o">.</span><span class="n">connect_timeout</span><span class="p">:</span>
- <span class="n">connection_cmd</span> <span class="o">+=</span>
<span class="p">[</span><span class="s2">"-o"</span><span
class="p">,</span> <span class="s2">"ConnectionTimeout={}"</span><span
class="o">.</span><span class="n">format</span><span class="p">(</span><span
class="bp">self</span><span class="o">.</span><span class="n">connect_timeout</span><span
class="p">)]</span>
+ <span class="n">connection_cmd</span> <span class="o">+=</span>
<span class="p">[</span><span class="s2">"-o"</span><span
class="p">,</span> <span class="s2">"ConnectionTimeout=</span><span
class="si">{}</span><span class="s2">"</span><span class="o">.</span><span
class="n">format</span><span class="p">(</span><span class="bp">self</span><span
class="o">.</span><span class="n">connect_timeout</span><span class="p">)]</span>
+
+ <span class="k">if</span> <span class="bp">self</span><span
class="o">.</span><span class="n">tcp_keepalive</span><span class="p">:</span>
+ <span class="n">connection_cmd</span> <span class="o">+=</span>
<span class="p">[</span><span class="s2">"-o"</span><span
class="p">,</span> <span class="s2">"TCPKeepAlive=yes"</span><span
class="p">]</span>
+ <span class="n">connection_cmd</span> <span class="o">+=</span>
<span class="p">[</span><span class="s2">"-o"</span><span
class="p">,</span> <span class="s2">"ServerAliveInterval=</span><span
class="si">{}</span><span class="s2">"</span><span class="o">.</span><span
class="n">format</span><span class="p">(</span><span class="bp">self</span><span
class="o">.</span><span class="n">server_alive_interval</span><span
class="p">)]</span>
<span class="k">if</span> <span class="bp">self</span><span
class="o">.</span><span class="n">no_host_key_check</span><span class="p">:</span>
<span class="n">connection_cmd</span> <span class="o">+=</span>
<span class="p">[</span><span class="s2">"-o"</span><span
class="p">,</span> <span class="s2">"UserKnownHostsFile=/dev/null"</span><span
class="p">,</span>
@@ -231,7 +262,7 @@
<span class="n">connection_cmd</span> <span class="o">+=</span>
<span class="p">[</span><span class="s2">"-t"</span><span
class="p">]</span>
<span class="n">connection_cmd</span> <span class="o">+=</span>
<span class="n">cmd</span>
- <span class="n">logging</span><span class="o">.</span><span
class="n">debug</span><span class="p">(</span><span class="s2">"SSH
cmd: {} "</span><span class="o">.</span><span class="n">format</span><span
class="p">(</span><span class="n">connection_cmd</span><span class="p">))</span>
+ <span class="n">logging</span><span class="o">.</span><span
class="n">debug</span><span class="p">(</span><span class="s2">"SSH
cmd: </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">connection_cmd</span><span class="p">))</span>
<span class="k">return</span> <span class="n">connection_cmd</span>
@@ -259,13 +290,13 @@
<span class="k">if</span> <span class="n">p</span><span
class="o">.</span><span class="n">returncode</span> <span class="o">!=</span>
<span class="mi">0</span><span class="p">:</span>
<span class="c1"># I like this better: RemoteCalledProcessError(p.returncode,
cmd, self.host, output=output)</span>
- <span class="k">raise</span> <span class="n">AirflowException</span><span
class="p">(</span><span class="s2">"Cannot execute {} on {}. Error
code is: {}. Output: {}, Stderr: {}"</span><span class="o">.</span><span
class="n">format</span><span class="p">(</span>
+ <span class="k">raise</span> <span class="n">AirflowException</span><span
class="p">(</span><span class="s2">"Cannot execute </span><span
class="si">{}</span><span class="s2"> on </span><span class="si">{}</span><span
class="s2">. Error code is: </span><span class="si">{}</span><span
class="s2">. Output: </span><span class="si">{}</span><span class="s2">,
Stderr: </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">cmd</span><span class="p">,</span>
<span class="bp">self</span><span class="o">.</span><span class="n">conn</span><span
class="o">.</span><span class="n">host</span><span class="p">,</span>
<span class="n">p</span><span class="o">.</span><span class="n">returncode</span><span
class="p">,</span> <span class="n">output</span><span class="p">,</span>
<span class="n">stderr</span><span class="p">))</span>
<span class="k">return</span> <span class="n">output</span></div>
<span class="nd">@contextmanager</span>
-<div class="viewcode-block" id="SSHHook.tunnel"><a class="viewcode-back" href="../code.html#airflow.contrib.hooks.SSHHook.tunnel">[docs]</a>
<span class="k">def</span> <span class="nf">tunnel</span><span
class="p">(</span><span class="bp">self</span><span class="p">,</span>
<span class="n">local_port</span><span class="p">,</span> <span
class="n">remote_port</span><span class="o">=</span><span class="bp">None</span><span
class="p">,</span> <span class="n">remote_host</span><span class="o">=</span><span
class="s2">"localhost"</span><span class="p">):</span>
+<div class="viewcode-block" id="SSHHook.tunnel"><a class="viewcode-back" href="../code.html#airflow.contrib.hooks.SSHHook.tunnel">[docs]</a>
<span class="k">def</span> <span class="nf">tunnel</span><span
class="p">(</span><span class="bp">self</span><span class="p">,</span>
<span class="n">local_port</span><span class="p">,</span> <span
class="n">remote_port</span><span class="o">=</span><span class="kc">None</span><span
class="p">,</span> <span class="n">remote_host</span><span class="o">=</span><span
class="s2">"localhost"</span><span class="p">):</span>
<span class="sd">"""</span>
<span class="sd"> Creates a tunnel between two hosts. Like ssh -L <LOCAL_PORT>:host:<REMOTE_PORT>.</span>
<span class="sd"> Remember to close() the returned "tunnel"
object in order to clean up</span>
@@ -279,7 +310,7 @@
<span class="sd"> :type remote_host: str</span>
<span class="sd"> :return:</span>
<span class="sd"> """</span>
- <span class="n">tunnel_host</span> <span class="o">=</span>
<span class="s2">"{0}:{1}:{2}"</span><span class="o">.</span><span
class="n">format</span><span class="p">(</span><span class="n">local_port</span><span
class="p">,</span> <span class="n">remote_host</span><span class="p">,</span>
<span class="n">remote_port</span><span class="p">)</span>
+ <span class="n">tunnel_host</span> <span class="o">=</span>
<span class="s2">"</span><span class="si">{0}</span><span
class="s2">:</span><span class="si">{1}</span><span class="s2">:</span><span
class="si">{2}</span><span class="s2">"</span><span class="o">.</span><span
class="n">format</span><span class="p">(</span><span class="n">local_port</span><span
class="p">,</span> <span class="n">remote_host</span><span class="p">,</span>
<span class="n">remote_port</span><span class="p">)</span>
<span class="n">proc</span> <span class="o">=</span> <span
class="bp">self</span><span class="o">.</span><span class="n">Popen</span><span
class="p">([</span><span class="s2">"-L"</span><span
class="p">,</span> <span class="n">tunnel_host</span><span class="p">,</span>
<span class="s2">"echo -n ready && cat"</span><span
class="p">],</span>
<span class="n">stdin</span><span class="o">=</span><span
class="n">subprocess</span><span class="o">.</span><span class="n">PIPE</span><span
class="p">,</span> <span class="n">stdout</span><span class="o">=</span><span
class="n">subprocess</span><span class="o">.</span><span class="n">PIPE</span><span
class="p">)</span>
@@ -287,11 +318,14 @@
<span class="k">assert</span> <span class="n">ready</span>
<span class="o">==</span> <span class="n">b</span><span class="s2">"ready"</span><span
class="p">,</span> <span class="s2">"Did not get 'ready'
from remote"</span>
<span class="k">yield</span>
<span class="n">proc</span><span class="o">.</span><span
class="n">communicate</span><span class="p">()</span>
- <span class="k">assert</span> <span class="n">proc</span><span
class="o">.</span><span class="n">returncode</span> <span class="o">==</span>
<span class="mi">0</span><span class="p">,</span> <span class="s2">"Tunnel
process did unclean exit (returncode {}"</span><span class="o">.</span><span
class="n">format</span><span class="p">(</span><span class="n">proc</span><span
class="o">.</span><span class="n">returncode</span><span class="p">)</span></div></div>
+ <span class="k">assert</span> <span class="n">proc</span><span
class="o">.</span><span class="n">returncode</span> <span class="o">==</span>
<span class="mi">0</span><span class="p">,</span> <span class="s2">"Tunnel
process did unclean exit (returncode </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">proc</span><span class="o">.</span><span
class="n">returncode</span><span class="p">)</span></div></div>
</pre></div>
</div>
+ <div class="articleComments">
+
+ </div>
</div>
<footer>
@@ -324,7 +358,8 @@
VERSION:'',
COLLAPSE_INDEX:false,
FILE_SUFFIX:'.html',
- HAS_SOURCE: true
+ HAS_SOURCE: true,
+ SOURCELINK_SUFFIX: '.txt'
};
</script>
<script type="text/javascript" src="../_static/jquery.js"></script>
http://git-wip-us.apache.org/repos/asf/incubator-airflow-site/blob/9c75ee9e/_static/basic.css
----------------------------------------------------------------------
diff --git a/_static/basic.css b/_static/basic.css
index 65dfd7d..7ed0e58 100644
--- a/_static/basic.css
+++ b/_static/basic.css
@@ -85,10 +85,6 @@ div.sphinxsidebar #searchbox input[type="text"] {
width: 170px;
}
-div.sphinxsidebar #searchbox input[type="submit"] {
- width: 30px;
-}
-
img {
border: 0;
max-width: 100%;
@@ -126,6 +122,8 @@ ul.keywordmatches li.goodmatch a {
table.contentstable {
width: 90%;
+ margin-left: auto;
+ margin-right: auto;
}
table.contentstable p.biglink {
@@ -153,9 +151,14 @@ table.indextable td {
vertical-align: top;
}
-table.indextable dl, table.indextable dd {
+table.indextable ul {
margin-top: 0;
margin-bottom: 0;
+ list-style-type: none;
+}
+
+table.indextable > tbody > tr > td > ul {
+ padding-left: 0em;
}
table.indextable tr.pcap {
@@ -187,6 +190,13 @@ div.genindex-jumpbox {
padding: 0.4em;
}
+/* -- domain module index --------------------------------------------------- */
+
+table.modindextable td {
+ padding: 2px;
+ border-collapse: collapse;
+}
+
/* -- general body styles --------------------------------------------------- */
div.body p, div.body dd, div.body li, div.body blockquote {
@@ -221,10 +231,6 @@ div.body td {
text-align: left;
}
-.field-list ul {
- padding-left: 1em;
-}
-
.first {
margin-top: 0 !important;
}
@@ -341,10 +347,6 @@ table.docutils td, table.docutils th {
border-bottom: 1px solid #aaa;
}
-table.field-list td, table.field-list th {
- border: 0 !important;
-}
-
table.footnote td, table.footnote th {
border: 0 !important;
}
@@ -381,6 +383,20 @@ div.figure p.caption span.caption-number {
div.figure p.caption span.caption-text {
}
+/* -- field list styles ----------------------------------------------------- */
+
+table.field-list td, table.field-list th {
+ border: 0 !important;
+}
+
+.field-list ul {
+ margin: 0;
+ padding-left: 1em;
+}
+
+.field-list p {
+ margin: 0;
+}
/* -- other body styles ----------------------------------------------------- */
@@ -431,15 +447,6 @@ dl.glossary dt {
font-size: 1.1em;
}
-.field-list ul {
- margin: 0;
- padding-left: 1em;
-}
-
-.field-list p {
- margin: 0;
-}
-
.optional {
font-size: 1.3em;
}
@@ -498,6 +505,13 @@ pre {
overflow-y: hidden; /* fixes display issues on Chrome browsers */
}
+span.pre {
+ -moz-hyphens: none;
+ -ms-hyphens: none;
+ -webkit-hyphens: none;
+ hyphens: none;
+}
+
td.linenos pre {
padding: 5px 0px;
border: 0;
@@ -589,6 +603,16 @@ span.eqno {
float: right;
}
+span.eqno a.headerlink {
+ position: relative;
+ left: 0px;
+ z-index: 1;
+}
+
+div.math:hover a.headerlink {
+ visibility: visible;
+}
+
/* -- printout stylesheet --------------------------------------------------- */
@media print {
http://git-wip-us.apache.org/repos/asf/incubator-airflow-site/blob/9c75ee9e/_static/comment-bright.png
----------------------------------------------------------------------
diff --git a/_static/comment-bright.png b/_static/comment-bright.png
index 551517b..15e27ed 100644
Binary files a/_static/comment-bright.png and b/_static/comment-bright.png differ
http://git-wip-us.apache.org/repos/asf/incubator-airflow-site/blob/9c75ee9e/_static/comment-close.png
----------------------------------------------------------------------
diff --git a/_static/comment-close.png b/_static/comment-close.png
index 09b54be..4d91bcf 100644
Binary files a/_static/comment-close.png and b/_static/comment-close.png differ
http://git-wip-us.apache.org/repos/asf/incubator-airflow-site/blob/9c75ee9e/_static/comment.png
----------------------------------------------------------------------
diff --git a/_static/comment.png b/_static/comment.png
index 92feb52..dfbc0cb 100644
Binary files a/_static/comment.png and b/_static/comment.png differ
http://git-wip-us.apache.org/repos/asf/incubator-airflow-site/blob/9c75ee9e/_static/css/badge_only.css
----------------------------------------------------------------------
diff --git a/_static/css/badge_only.css b/_static/css/badge_only.css
index 7e17fb1..6362912 100644
--- a/_static/css/badge_only.css
+++ b/_static/css/badge_only.css
@@ -1,2 +1,2 @@
-.fa:before{-webkit-font-smoothing:antialiased}.clearfix{*zoom:1}.clearfix:before,.clearfix:after{display:table;content:""}.clearfix:after{clear:both}@font-face{font-family:FontAwesome;font-weight:normal;font-style:normal;src:url("../font/fontawesome_webfont.eot");src:url("../font/fontawesome_webfont.eot?#iefix")
format("embedded-opentype"),url("../font/fontawesome_webfont.woff") format("woff"),url("../font/fontawesome_webfont.ttf")
format("truetype"),url("../font/fontawesome_webfont.svg#FontAwesome") format("svg")}.fa:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;text-decoration:inherit}a
.fa{display:inline-block;text-decoration:inherit}li .fa{display:inline-block}li .fa-large:before,li
.fa-large:before{width:1.875em}ul.fas{list-style-type:none;margin-left:2em;text-indent:-0.8em}ul.fas
li .fa{width:0.8em}ul.fas li .fa-large:before,ul.fas li .fa-large:before{vertical-align:baseline}.fa-book:before{content:""}.icon-book:be
fore{content:""}.fa-caret-down:before{content:""}.icon-caret-down:before{content:""}.fa-caret-up:before{content:""}.icon-caret-up:before{content:""}.fa-caret-left:before{content:""}.icon-caret-left:before{content:""}.fa-caret-right:before{content:""}.icon-caret-right:before{content:""}.rst-versions{position:fixed;bottom:0;left:0;width:300px;color:#fcfcfc;background:#1f1d1d;border-top:solid
10px #343131;font-family:"Lato","proxima-nova","Helvetica Neue",Arial,sans-serif;z-index:400}.rst-versions
a{color:#2980B9;text-decoration:none}.rst-versions .rst-badge-small{display:none}.rst-versions
.rst-current-version{padding:12px;background-color:#272525;display:block;text-align:right;font-size:90%;cursor:pointer;color:#27AE60;*zoom:1}.rst-versions
.rst-current-version:before,.rst-versions .rst-current-version:after{display:table;content:""}.rst-versions
.rst-current-version:after{clear:both}.rst-versions .rst-current-version .fa{color:#fcfcfc}.rst-versions
.rst-cu
rrent-version .fa-book{float:left}.rst-versions .rst-current-version .icon-book{float:left}.rst-versions
.rst-current-version.rst-out-of-date{background-color:#E74C3C;color:#fff}.rst-versions .rst-current-version.rst-active-old-version{background-color:#F1C40F;color:#000}.rst-versions.shift-up
.rst-other-versions{display:block}.rst-versions .rst-other-versions{font-size:90%;padding:12px;color:gray;display:none}.rst-versions
.rst-other-versions hr{display:block;height:1px;border:0;margin:20px 0;padding:0;border-top:solid
1px #413d3d}.rst-versions .rst-other-versions dd{display:inline-block;margin:0}.rst-versions
.rst-other-versions dd a{display:inline-block;padding:6px;color:#fcfcfc}.rst-versions.rst-badge{width:auto;bottom:20px;right:20px;left:auto;border:none;max-width:300px}.rst-versions.rst-badge
.icon-book{float:none}.rst-versions.rst-badge .fa-book{float:none}.rst-versions.rst-badge.shift-up
.rst-current-version{text-align:right}.rst-versions.rst-badge.shift-up .rst-current-ver
sion .fa-book{float:left}.rst-versions.rst-badge.shift-up .rst-current-version .icon-book{float:left}.rst-versions.rst-badge
.rst-current-version{width:auto;height:30px;line-height:30px;padding:0 6px;display:block;text-align:center}@media
screen and (max-width: 768px){.rst-versions{width:85%;display:none}.rst-versions.shift{display:block}img{width:100%;height:auto}}
+.fa:before{-webkit-font-smoothing:antialiased}.clearfix{*zoom:1}.clearfix:before,.clearfix:after{display:table;content:""}.clearfix:after{clear:both}@font-face{font-family:FontAwesome;font-weight:normal;font-style:normal;src:url("../font/fontawesome_webfont.eot");src:url("../font/fontawesome_webfont.eot?#iefix")
format("embedded-opentype"),url("../font/fontawesome_webfont.woff") format("woff"),url("../font/fontawesome_webfont.ttf")
format("truetype"),url("../font/fontawesome_webfont.svg#FontAwesome") format("svg")}.fa:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;text-decoration:inherit}a
.fa{display:inline-block;text-decoration:inherit}li .fa{display:inline-block}li .fa-large:before,li
.fa-large:before{width:1.875em}ul.fas{list-style-type:none;margin-left:2em;text-indent:-0.8em}ul.fas
li .fa{width:0.8em}ul.fas li .fa-large:before,ul.fas li .fa-large:before{vertical-align:baseline}.fa-book:before{content:""}.icon-book:be
fore{content:""}.fa-caret-down:before{content:""}.icon-caret-down:before{content:""}.fa-caret-up:before{content:""}.icon-caret-up:before{content:""}.fa-caret-left:before{content:""}.icon-caret-left:before{content:""}.fa-caret-right:before{content:""}.icon-caret-right:before{content:""}.rst-versions{position:fixed;bottom:0;left:0;width:300px;color:#fcfcfc;background:#1f1d1d;border-top:solid
10px #343131;font-family:"Lato","proxima-nova","Helvetica Neue",Arial,sans-serif;z-index:400}.rst-versions
a{color:#2980B9;text-decoration:none}.rst-versions .rst-badge-small{display:none}.rst-versions
.rst-current-version{padding:12px;background-color:#272525;display:block;text-align:right;font-size:90%;cursor:pointer;color:#27AE60;*zoom:1}.rst-versions
.rst-current-version:before,.rst-versions .rst-current-version:after{display:table;content:""}.rst-versions
.rst-current-version:after{clear:both}.rst-versions .rst-current-version .fa{color:#fcfcfc}.rst-versions
.rst-cu
rrent-version .fa-book{float:left}.rst-versions .rst-current-version .icon-book{float:left}.rst-versions
.rst-current-version.rst-out-of-date{background-color:#E74C3C;color:#fff}.rst-versions .rst-current-version.rst-active-old-version{background-color:#F1C40F;color:#000}.rst-versions.shift-up
.rst-other-versions{display:block}.rst-versions .rst-other-versions{font-size:90%;padding:12px;color:gray;display:none}.rst-versions
.rst-other-versions hr{display:block;height:1px;border:0;margin:20px 0;padding:0;border-top:solid
1px #413d3d}.rst-versions .rst-other-versions dd{display:inline-block;margin:0}.rst-versions
.rst-other-versions dd a{display:inline-block;padding:6px;color:#fcfcfc}.rst-versions.rst-badge{width:auto;bottom:20px;right:20px;left:auto;border:none;max-width:300px}.rst-versions.rst-badge
.icon-book{float:none}.rst-versions.rst-badge .fa-book{float:none}.rst-versions.rst-badge.shift-up
.rst-current-version{text-align:right}.rst-versions.rst-badge.shift-up .rst-current-ver
sion .fa-book{float:left}.rst-versions.rst-badge.shift-up .rst-current-version .icon-book{float:left}.rst-versions.rst-badge
.rst-current-version{width:auto;height:30px;line-height:30px;padding:0 6px;display:block;text-align:center}@media
screen and (max-width: 768px){.rst-versions{width:85%;display:none}.rst-versions.shift{display:block}}
/*# sourceMappingURL=badge_only.css.map */
|