This commit is contained in:
rednafi
2019-11-17 17:58:56 +06:00
parent 72ba69e0d5
commit e351b96f7a
16 changed files with 10764 additions and 73 deletions
+1
View File
@@ -6,6 +6,7 @@
* ~~Make the docs site up and running with Sphinx~~
* ~~Add installation instruction~~
* Deploy v0.1.0
* Turn the Sphinx site builder's `Makefile` into a `Bakefile` and add that as an example
* Automate flask template via `Bakefile`
* Automate hugo blog deployment with `Bakefile`
Binary file not shown.
Binary file not shown.
+1 -1
View File
@@ -1,4 +1,4 @@
# Sphinx build info version 1
# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done.
config: 6a74d5c65ae736524f696c1dc0f20a4e
config: bdca5955648a0cd028e7478308f123b6
tags: 645f666f9bcd5a90fca523b33c5a78b7
+89 -1
View File
@@ -231,6 +231,16 @@ a.headerlink {
visibility: hidden;
}
a.brackets:before,
span.brackets > a:before{
content: "[";
}
a.brackets:after,
span.brackets > a:after {
content: "]";
}
h1:hover > a.headerlink,
h2:hover > a.headerlink,
h3:hover > a.headerlink,
@@ -279,6 +289,12 @@ img.align-center, .figure.align-center, object.align-center {
margin-right: auto;
}
img.align-default, .figure.align-default {
display: block;
margin-left: auto;
margin-right: auto;
}
.align-left {
text-align: left;
}
@@ -287,6 +303,10 @@ img.align-center, .figure.align-center, object.align-center {
text-align: center;
}
.align-default {
text-align: center;
}
.align-right {
text-align: right;
}
@@ -358,6 +378,11 @@ table.align-center {
margin-right: auto;
}
table.align-default {
margin-left: auto;
margin-right: auto;
}
table caption span.caption-number {
font-style: italic;
}
@@ -391,6 +416,16 @@ table.citation td {
border-bottom: none;
}
th > p:first-child,
td > p:first-child {
margin-top: 0px;
}
th > p:last-child,
td > p:last-child {
margin-bottom: 0px;
}
/* -- figures --------------------------------------------------------------- */
div.figure {
@@ -460,11 +495,58 @@ ol.upperroman {
list-style: upper-roman;
}
li > p:first-child {
margin-top: 0px;
}
li > p:last-child {
margin-bottom: 0px;
}
dl.footnote > dt,
dl.citation > dt {
float: left;
}
dl.footnote > dd,
dl.citation > dd {
margin-bottom: 0em;
}
dl.footnote > dd:after,
dl.citation > dd:after {
content: "";
clear: both;
}
dl.field-list {
display: grid;
grid-template-columns: fit-content(30%) auto;
}
dl.field-list > dt {
font-weight: bold;
word-break: break-word;
padding-left: 0.5em;
padding-right: 5px;
}
dl.field-list > dt:after {
content: ":";
}
dl.field-list > dd {
padding-left: 0.5em;
margin-top: 0em;
margin-left: 0em;
margin-bottom: 0em;
}
dl {
margin-bottom: 15px;
}
dd p {
dd > p:first-child {
margin-top: 0px;
}
@@ -537,6 +619,12 @@ dl.glossary dt {
font-style: oblique;
}
.classifier:before {
font-style: normal;
margin: 0.5em;
content: ":";
}
abbr, acronym {
border-bottom: dotted 1px;
cursor: help;
@@ -87,14 +87,13 @@ jQuery.fn.highlightText = function(text, className) {
node.nextSibling));
node.nodeValue = val.substr(0, pos);
if (isInSVG) {
var bbox = span.getBBox();
var rect = document.createElementNS("http://www.w3.org/2000/svg", "rect");
rect.x.baseVal.value = bbox.x;
var bbox = node.parentElement.getBBox();
rect.x.baseVal.value = bbox.x;
rect.y.baseVal.value = bbox.y;
rect.width.baseVal.value = bbox.width;
rect.height.baseVal.value = bbox.height;
rect.setAttribute('class', className);
var parentOfText = node.parentNode.parentNode;
addItems.push({
"parent": node.parentNode,
"target": rect});
@@ -6,5 +6,5 @@ var DOCUMENTATION_OPTIONS = {
FILE_SUFFIX: '.html',
HAS_SOURCE: true,
SOURCELINK_SUFFIX: '.txt',
NAVIGATION_WITH_KEYS: false,
NAVIGATION_WITH_KEYS: false
};
File diff suppressed because it is too large Load Diff
File diff suppressed because one or more lines are too long
@@ -36,8 +36,10 @@ if (!Scorer) {
// query found in title
title: 15,
partialTitle: 7,
// query found in terms
term: 5
term: 5,
partialTerm: 2
};
}
@@ -56,6 +58,14 @@ var Search = {
_queued_query : null,
_pulse_status : -1,
htmlToText : function(htmlString) {
var htmlElement = document.createElement('span');
htmlElement.innerHTML = htmlString;
$(htmlElement).find('.headerlink').remove();
docContent = $(htmlElement).find('[role=main]')[0];
return docContent.textContent || docContent.innerText;
},
init : function() {
var params = $.getQueryParameters();
if (params.q) {
@@ -120,7 +130,7 @@ var Search = {
this.out = $('#search-results');
this.title = $('<h2>' + _('Searching') + '</h2>').appendTo(this.out);
this.dots = $('<span></span>').appendTo(this.title);
this.status = $('<p style="display: none"></p>').appendTo(this.out);
this.status = $('<p class="search-summary">&nbsp;</p>').appendTo(this.out);
this.output = $('<ul class="search"/>').appendTo(this.out);
$('#search-progress').text(_('Preparing search...'));
@@ -259,11 +269,7 @@ var Search = {
displayNextItem();
});
} else if (DOCUMENTATION_OPTIONS.HAS_SOURCE) {
var suffix = DOCUMENTATION_OPTIONS.SOURCELINK_SUFFIX;
if (suffix === undefined) {
suffix = '.txt';
}
$.ajax({url: DOCUMENTATION_OPTIONS.URL_ROOT + '_sources/' + item[5] + (item[5].slice(-suffix.length) === suffix ? '' : suffix),
$.ajax({url: DOCUMENTATION_OPTIONS.URL_ROOT + item[0] + DOCUMENTATION_OPTIONS.FILE_SUFFIX,
dataType: "text",
complete: function(jqxhr, textstatus) {
var data = jqxhr.responseText;
@@ -313,12 +319,13 @@ var Search = {
for (var prefix in objects) {
for (var name in objects[prefix]) {
var fullname = (prefix ? prefix + '.' : '') + name;
if (fullname.toLowerCase().indexOf(object) > -1) {
var fullnameLower = fullname.toLowerCase()
if (fullnameLower.indexOf(object) > -1) {
var score = 0;
var parts = fullname.split('.');
var parts = fullnameLower.split('.');
// check for different match types: exact matches of full name or
// "last name" (i.e. last dotted part)
if (fullname == object || parts[parts.length - 1] == object) {
if (fullnameLower == object || parts[parts.length - 1] == object) {
score += Scorer.objNameMatch;
// matches in last name
} else if (parts[parts.length - 1].indexOf(object) > -1) {
@@ -385,6 +392,19 @@ var Search = {
{files: terms[word], score: Scorer.term},
{files: titleterms[word], score: Scorer.title}
];
// add support for partial matches
if (word.length > 2) {
for (var w in terms) {
if (w.match(word) && !terms[word]) {
_o.push({files: terms[w], score: Scorer.partialTerm})
}
}
for (var w in titleterms) {
if (w.match(word) && !titleterms[word]) {
_o.push({files: titleterms[w], score: Scorer.partialTitle})
}
}
}
// no match but word was a required one
if ($u.every(_o, function(o){return o.files === undefined;})) {
@@ -424,8 +444,12 @@ var Search = {
var valid = true;
// check if all requirements are matched
if (fileMap[file].length != searchterms.length)
continue;
var filteredTermCount = // as search terms with length < 3 are discarded: ignore
searchterms.filter(function(term){return term.length > 2}).length
if (
fileMap[file].length != searchterms.length &&
fileMap[file].length != filteredTermCount
) continue;
// ensure that none of the excluded terms is in the search result
for (i = 0; i < excluded.length; i++) {
@@ -456,7 +480,8 @@ var Search = {
* words. the first one is used to find the occurrence, the
* latter for highlighting it.
*/
makeSearchSummary : function(text, keywords, hlwords) {
makeSearchSummary : function(htmlText, keywords, hlwords) {
var text = Search.htmlToText(htmlText);
var textLower = text.toLowerCase();
var start = 0;
$.each(keywords, function() {
@@ -1,11 +1,9 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta charset="utf-8" />
<title>Installation &#8212; Bake documentation</title>
<link rel="stylesheet" href="../_static/alabaster.css" type="text/css" />
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
@@ -60,11 +58,11 @@
</pre></div>
</div>
<ul class="simple">
<li>Bakefile is expected to live at <cite>/app/Bakefile</cite>.</li>
<li><p>Bakefile is expected to live at <cite>/app/Bakefile</cite>.</p></li>
</ul>
<p>If you inherit from this image, ONBUILD directives will automatically copy your application code (build context) into the container, into /app.</p>
<ul class="simple">
<li>Bonus Points: this image is also available on the <a class="reference external" href="https://github.com/kennethreitz/bake/packages/24444">GitHub Package Registry</a> (beta).</li>
<li><p>Bonus Points: this image is also available on the <a class="reference external" href="https://github.com/kennethreitz/bake/packages/24444">GitHub Package Registry</a> (beta).</p></li>
</ul>
</div>
</div>
@@ -107,13 +105,11 @@
</ul>
</div>
<div id="searchbox" style="display: none" role="search">
<h3>Quick search</h3>
<h3 id="searchlabel">Quick search</h3>
<div class="searchformwrapper">
<form class="search" action="../search.html" method="get">
<input type="text" name="q" />
<input type="text" name="q" aria-labelledby="searchlabel" />
<input type="submit" value="Go" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
@@ -134,7 +130,7 @@
&copy;2019, Kenneth Reitz.
|
Powered by <a href="http://sphinx-doc.org/">Sphinx 1.8.5</a>
Powered by <a href="http://sphinx-doc.org/">Sphinx 2.2.1</a>
&amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
|
+5 -9
View File
@@ -1,12 +1,10 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta charset="utf-8" />
<title>Index &#8212; Bake documentation</title>
<link rel="stylesheet" href="_static/alabaster.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
@@ -69,13 +67,11 @@
</ul>
</div>
<div id="searchbox" style="display: none" role="search">
<h3>Quick search</h3>
<h3 id="searchlabel">Quick search</h3>
<div class="searchformwrapper">
<form class="search" action="search.html" method="get">
<input type="text" name="q" />
<input type="text" name="q" aria-labelledby="searchlabel" />
<input type="submit" value="Go" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
@@ -96,7 +92,7 @@
&copy;2019, Kenneth Reitz.
|
Powered by <a href="http://sphinx-doc.org/">Sphinx 1.8.5</a>
Powered by <a href="http://sphinx-doc.org/">Sphinx 2.2.1</a>
&amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
</div>
+14 -18
View File
@@ -1,11 +1,9 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta charset="utf-8" />
<title>Bake: A s☿rangely familiar workflow utility! &#8212; Bake documentation</title>
<link rel="stylesheet" href="_static/alabaster.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
@@ -40,12 +38,12 @@
<div class="section" id="what-s-in-the-oven">
<h2>Whats in the oven?<a class="headerlink" href="#what-s-in-the-oven" title="Permalink to this headline"></a></h2>
<ul class="simple">
<li>A <strong>Bakefile</strong>, which looks and feels like the good parts of a <strong>Makefile</strong>.</li>
<li>Except, you can write real <cite>bash</cite> code! (Any and all syntax is accepted — no magic going on here.)</li>
<li>Unlike <strong>Makefile</strong>, you may utilize <strong>[ 4 × U+0020 a.k.a. “spaces”]</strong> for indentation.</li>
<li>Environment variables are explicitly passed or whitelisted (allow), not inherited from the parent shell.</li>
<li>Tasks can be run safely and reliably. Rest assured that scripts are executed from the project root directory.</li>
<li>There are many other benefits to this design, that have yet to be expressed in this document.</li>
<li><p>A <strong>Bakefile</strong>, which looks and feels like the good parts of a <strong>Makefile</strong>.</p></li>
<li><p>Except, you can write real <cite>bash</cite> code! (Any and all syntax is accepted — no magic going on here.)</p></li>
<li><p>Unlike <strong>Makefile</strong>, you may utilize <strong>[ 4 × U+0020 a.k.a. “spaces”]</strong> for indentation.</p></li>
<li><p>Environment variables are explicitly passed or whitelisted (allow), not inherited from the parent shell.</p></li>
<li><p>Tasks can be run safely and reliably. Rest assured that scripts are executed from the project root directory.</p></li>
<li><p>There are many other benefits to this design, that have yet to be expressed in this document.</p></li>
</ul>
</div>
<div class="section" id="table-of-contents">
@@ -70,9 +68,9 @@
<div class="section" id="indices-tables">
<h2>Indices &amp; Tables<a class="headerlink" href="#indices-tables" title="Permalink to this headline"></a></h2>
<ul class="simple">
<li><a class="reference internal" href="genindex.html"><span class="std std-ref">Index</span></a></li>
<li><a class="reference internal" href="py-modindex.html"><span class="std std-ref">Module Index</span></a></li>
<li><a class="reference internal" href="search.html"><span class="std std-ref">Search Page</span></a></li>
<li><p><a class="reference internal" href="genindex.html"><span class="std std-ref">Index</span></a></p></li>
<li><p><a class="reference internal" href="py-modindex.html"><span class="std std-ref">Module Index</span></a></p></li>
<li><p><a class="reference internal" href="search.html"><span class="std std-ref">Search Page</span></a></p></li>
</ul>
</div>
</div>
@@ -107,13 +105,11 @@
</ul>
</div>
<div id="searchbox" style="display: none" role="search">
<h3>Quick search</h3>
<h3 id="searchlabel">Quick search</h3>
<div class="searchformwrapper">
<form class="search" action="search.html" method="get">
<input type="text" name="q" />
<input type="text" name="q" aria-labelledby="searchlabel" />
<input type="submit" value="Go" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
@@ -134,7 +130,7 @@
&copy;2019, Kenneth Reitz.
|
Powered by <a href="http://sphinx-doc.org/">Sphinx 1.8.5</a>
Powered by <a href="http://sphinx-doc.org/">Sphinx 2.2.1</a>
&amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
|
+5 -11
View File
@@ -1,11 +1,9 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta charset="utf-8" />
<title>Search &#8212; Bake documentation</title>
<link rel="stylesheet" href="_static/alabaster.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
@@ -18,11 +16,7 @@
<script type="text/javascript" src="_static/searchtools.js"></script>
<link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="#" />
<script type="text/javascript">
jQuery(function() { Search.loadIndex("searchindex.js"); });
</script>
<script type="text/javascript" id="searchindexloader"></script>
<script type="text/javascript" src="searchindex.js" defer></script>
<link rel="stylesheet" href="_static/custom.css" type="text/css" />
@@ -56,7 +50,7 @@
containing fewer words won't appear in the result list.
</p>
<form action="" method="get">
<input type="text" name="q" value="" />
<input type="text" name="q" aria-labelledby="search-documentation" value="" />
<input type="submit" value="search" />
<span id="search-progress" style="padding-left: 10px"></span>
</form>
@@ -108,7 +102,7 @@
&copy;2019, Kenneth Reitz.
|
Powered by <a href="http://sphinx-doc.org/">Sphinx 1.8.5</a>
Powered by <a href="http://sphinx-doc.org/">Sphinx 2.2.1</a>
&amp; <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.12</a>
</div>
+1 -1
View File
@@ -1 +1 @@
Search.setIndex({docnames:["files/installation","index"],envversion:{"sphinx.domains.c":1,"sphinx.domains.changeset":1,"sphinx.domains.cpp":1,"sphinx.domains.javascript":1,"sphinx.domains.math":2,"sphinx.domains.python":1,"sphinx.domains.rst":1,"sphinx.domains.std":1,sphinx:54},filenames:["files/installation.md","index.md"],objects:{},objnames:{},objtypes:{},terms:{"7mb":[],"default":0,And:[],For:1,The:[0,1],There:1,_github:[],accept:1,adjust:0,all:1,allow:1,also:[0,1],alwai:0,ani:1,app:0,applic:[0,1],assur:1,autom:1,automat:0,avail:0,bake:0,bakefil:[0,1],base:[],bash:1,been:0,benefit:1,beta:0,bonu:0,brew:0,build:0,built:[],can:1,cellar:[],choos:1,cli:0,cloud:[],code:[0,1],collect:[],com:[],combin:1,command:1,compil:1,complic:1,consol:[],contain:0,content:[],context:0,control:1,copi:0,def:[],deleg:[],design:1,develop:1,differ:1,direct:0,directori:1,distribut:1,docker:0,dockerhub:0,document:1,easi:0,echo:[],environ:1,except:1,execut:1,expect:0,explicitli:1,express:1,fact:1,fals:[],feel:1,fiddl:1,file:1,formula:0,from:[0,1],get:1,github:0,gnu:1,going:1,good:1,happen:[],has:[0,1],have:1,hello:[],help:[0,1],here:[0,1],highlight:[],homebrew:0,http:[],idk:[],imag:0,indent:1,index:1,inherit:[0,1],instal:[],instead:1,interest:[],just:1,kennethreitz:0,known:1,larg:1,like:1,line:[],live:0,local:1,look:1,machin:1,maco:1,made:0,magic:1,mai:1,make:1,makefil:1,manag:1,mani:1,manual:1,method:0,modul:1,most:1,need:0,nix:1,offici:0,often:1,onbuild:0,one:1,onli:1,other:1,packag:0,page:1,parent:1,part:1,pass:1,pexpect:[],pip3:0,pip:0,point:0,power:1,prepar:1,previous:1,primari:0,print:[],product:1,project:1,provid:1,ptyprocess:[],pure:1,python:1,real:1,recommend:0,registri:0,reliabl:1,repetit:1,repo:0,repositori:[],resid:1,rest:1,root:1,rule:1,run:[0,1],safe:1,same:1,script:1,search:1,second:[],separ:1,shell:1,some:[],some_funct:[],soon:0,sourc:1,space:1,subtl:0,successfulli:[],syntax:1,target:1,task:1,thi:[0,1],time:1,todai:0,tool:1,typic:1,unlik:1,used:1,user:[],using:1,usr:[],variabl:1,variou:1,veri:[0,1],via:0,want:0,what:[],when:[],which:1,whitelist:1,work:0,write:1,yet:1,you:[0,1],your:[0,1]},titles:["Installation","<strong>Bake</strong>: A s\u263frangely familiar workflow utility!"],titleterms:{For:0,bake:1,bootstrap:1,content:1,develop:0,distribut:0,document:[],environ:0,familiar:1,hello:[],indic:1,instal:[0,1],known:0,local:0,maco:0,nix:0,oven:1,previous:0,product:0,python:0,rang:1,some:[],tabl:1,util:1,variou:0,welcom:[],what:1,workflow:1}})
Search.setIndex({docnames:["files/installation","index"],envversion:{"sphinx.domains.c":1,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":1,"sphinx.domains.javascript":1,"sphinx.domains.math":2,"sphinx.domains.python":1,"sphinx.domains.rst":1,"sphinx.domains.std":1,sphinx:56},filenames:["files/installation.md","index.md"],objects:{},objnames:{},objtypes:{},terms:{"default":0,For:1,The:[0,1],There:1,accept:1,adjust:0,all:1,allow:1,also:[0,1],alwai:0,ani:1,app:0,applic:[0,1],assur:1,autom:1,automat:0,avail:0,bake:0,bakefil:[0,1],bash:1,been:0,benefit:1,beta:0,bonu:0,brew:0,build:0,can:1,choos:1,cli:0,code:[0,1],combin:1,command:1,compil:1,complic:1,contain:0,context:0,control:1,copi:0,design:1,develop:1,differ:1,direct:0,directori:1,distribut:1,docker:0,dockerhub:0,document:1,easi:0,environ:1,except:1,execut:1,expect:0,explicitli:1,express:1,fact:1,feel:1,fiddl:1,file:1,formula:0,from:[0,1],get:1,github:0,gnu:1,going:1,good:1,has:[0,1],have:1,help:[0,1],here:[0,1],homebrew:0,imag:0,indent:1,index:1,inherit:[0,1],instead:1,just:1,kennethreitz:0,known:1,larg:1,like:1,live:0,local:1,look:1,machin:1,maco:1,made:0,magic:1,mai:1,make:1,makefil:1,manag:1,mani:1,manual:1,method:0,modul:1,most:1,need:0,nix:1,offici:0,often:1,onbuild:0,one:1,onli:1,other:1,packag:0,page:1,parent:1,part:1,pass:1,pip3:0,pip:0,point:0,power:1,prepar:1,previous:1,primari:0,product:1,project:1,provid:1,pure:1,python:1,real:1,recommend:0,registri:0,reliabl:1,repetit:1,repo:0,resid:1,rest:1,root:1,rule:1,run:[0,1],safe:1,same:1,script:1,search:1,separ:1,shell:1,soon:0,sourc:1,space:1,subtl:0,syntax:1,target:1,task:1,thi:[0,1],time:1,todai:0,tool:1,typic:1,unlik:1,used:1,using:1,variabl:1,variou:1,veri:[0,1],via:0,want:0,which:1,whitelist:1,work:0,write:1,yet:1,you:[0,1],your:[0,1]},titles:["Installation","<strong>Bake</strong>: A s\u263frangely familiar workflow utility!"],titleterms:{For:0,bake:1,bootstrap:1,content:1,develop:0,distribut:0,environ:0,familiar:1,indic:1,instal:[0,1],known:0,local:0,maco:0,nix:0,oven:1,previous:0,product:0,python:0,rang:1,tabl:1,util:1,variou:0,what:1,workflow:1}})