diff --git a/doc/.static/logilab.png b/doc/.static/logilab.png
new file mode 100644
index 0000000000000000000000000000000000000000..2af1f2392ddeb991ada4133de6fd882022cbb4af
GIT binary patch
literal 4597
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
VMXPSY7X|?zl%}4>2jqjW{{ZAbx={cC

diff --git a/doc/.static/sphinx-default.css b/doc/.static/sphinx-default.css
new file mode 100644
index 0000000000000000000000000000000000000000..e8512b775e2de33550c901d1597aee8403107a36_ZG9jLy5zdGF0aWMvc3BoaW54LWRlZmF1bHQuY3Nz
--- /dev/null
+++ b/doc/.static/sphinx-default.css
@@ -0,0 +1,860 @@
+/**
+ * Sphinx Doc Design
+ */
+
+html, body {
+    background: white;	
+}
+
+body {
+    font-family: Verdana, sans-serif;
+    font-size: 100%;
+    background-color: white;
+    color: black;
+    margin: 0;
+    padding: 0;
+}
+
+/* :::: LAYOUT :::: */
+
+div.logilablogo {
+    padding: 10px 10px 10px 10px;
+    height:75;
+}
+
+
+div.document {
+    background-color: white;
+}
+
+div.documentwrapper {
+    float: left;
+    width: 100%;
+}
+
+div.bodywrapper {
+    margin: 0 0 0 230px;
+}
+
+div.body {
+    background-color: white;
+    padding: 0 20px 30px 20px;
+    border-left:solid;
+    border-left-color:#e2e2e2;
+    border-left-width:thin;
+}
+
+div.sphinxsidebarwrapper {
+    padding: 10px 5px 0 10px;
+}
+
+div.sphinxsidebar {
+    float: left;
+    width: 230px;
+    margin-left: -100%;
+    font-size: 90%;
+}
+
+div.clearer {
+    clear: both;
+}
+
+div.footer {
+    color: #ff4500;
+    width: 100%;
+    padding: 9px 0 9px 0;
+    text-align: center;
+    font-size: 75%;
+}
+
+div.footer a {
+    color: #ff4500;
+    text-decoration: underline;
+}
+
+div.related {
+    background-color: #ff7700;
+    color: white;
+    width: 100%;
+    height: 30px;
+    line-height: 30px;
+    font-size: 90%;
+}
+
+div.related h3 {
+    display: none;
+}
+
+div.related ul {
+    margin: 0;
+    padding: 0 0 0 10px;
+    list-style: none;
+}
+
+div.related li {
+    display: inline;
+}
+
+div.related li.right {
+    float: right;
+    margin-right: 5px;
+}
+
+div.related a {
+    color: white;
+    font-weight:bold;
+}
+
+/* ::: TOC :::: */
+
+div.sphinxsidebar {
+    border-style:solid;
+    border-color: white;
+/*    background-color:#e2e2e2;*/
+    padding-bottom:5px;
+}
+
+div.sphinxsidebar h3 {
+    font-family: 'Verdanda', sans-serif;
+    color: black;
+    font-size: 1.2em;
+    font-weight: normal;
+    margin: 0;
+    padding: 0;
+    font-weight:bold;
+    font-style:italic;
+}
+
+div.sphinxsidebar h4 {
+    font-family: 'Verdana', sans-serif;
+    color: black;
+    font-size: 1.1em;
+    font-weight: normal;
+    margin: 5px 0 0 0;
+    padding: 0;
+    font-weight:bold;
+    font-style:italic;
+}
+
+div.sphinxsidebar p {
+    color: black;
+}
+
+div.sphinxsidebar p.topless {
+    margin: 5px 10px 10px 10px;
+}
+
+div.sphinxsidebar ul {
+    margin: 10px;
+    padding: 0;
+    list-style: none;
+    color: black;
+}
+
+div.sphinxsidebar ul ul,
+div.sphinxsidebar ul.want-points {
+    margin-left: 20px;
+    list-style: square;
+}
+
+div.sphinxsidebar ul ul {
+    margin-top: 0;
+    margin-bottom: 0;
+}
+
+div.sphinxsidebar a {
+    color: black;
+}
+
+div.sphinxsidebar form {
+    margin-top: 10px;
+}
+
+div.sphinxsidebar input {
+    border: 1px solid #e2e2e2;
+    font-family: sans-serif;
+    font-size: 1em;
+    padding-bottom: 5px;
+}
+
+/* :::: MODULE CLOUD :::: */
+div.modulecloud {
+    margin: -5px 10px 5px 10px;
+    padding: 10px;
+    line-height: 160%;
+    border: 1px solid #cbe7e5;
+    background-color: #f2fbfd;
+}
+
+div.modulecloud a {
+    padding: 0 5px 0 5px;
+}
+
+/* :::: SEARCH :::: */
+ul.search {
+    margin: 10px 0 0 20px;
+    padding: 0;
+}
+
+ul.search li {
+    padding: 5px 0 5px 20px;
+    background-image: url(file.png);
+    background-repeat: no-repeat;
+    background-position: 0 7px;
+}
+
+ul.search li a {
+    font-weight: bold;
+}
+
+ul.search li div.context {
+    color: #888;
+    margin: 2px 0 0 30px;
+    text-align: left;
+}
+
+ul.keywordmatches li.goodmatch a {
+    font-weight: bold;
+}
+
+/* :::: COMMON FORM STYLES :::: */
+
+div.actions {
+    padding: 5px 10px 5px 10px;
+    border-top: 1px solid #cbe7e5;
+    border-bottom: 1px solid #cbe7e5;
+    background-color: #e0f6f4;
+}
+
+form dl {
+    color: #333;
+}
+
+form dt {
+    clear: both;
+    float: left;
+    min-width: 110px;
+    margin-right: 10px;
+    padding-top: 2px;
+}
+
+input#homepage {
+    display: none;
+}
+
+div.error {
+    margin: 5px 20px 0 0;
+    padding: 5px;
+    border: 1px solid #d00;
+    font-weight: bold;
+}
+
+/* :::: INLINE COMMENTS :::: */
+
+div.inlinecomments {
+    position: absolute;
+    right: 20px;
+}
+
+div.inlinecomments a.bubble {
+    display: block;
+    float: right;
+    background-image: url(style/comment.png);
+    background-repeat: no-repeat;
+    width: 25px;
+    height: 25px;
+    text-align: center;
+    padding-top: 3px;
+    font-size: 0.9em;
+    line-height: 14px;
+    font-weight: bold;
+    color: black;
+}
+
+div.inlinecomments a.bubble span {
+    display: none;
+}
+
+div.inlinecomments a.emptybubble {
+    background-image: url(style/nocomment.png);
+}
+
+div.inlinecomments a.bubble:hover {
+    background-image: url(style/hovercomment.png);
+    text-decoration: none;
+    color: #3ca0a4;
+}
+
+div.inlinecomments div.comments {
+    float: right;
+    margin: 25px 5px 0 0;
+    max-width: 50em;
+    min-width: 30em;
+    border: 1px solid #2eabb0;
+    background-color: #f2fbfd;
+    z-index: 150;
+}
+
+div#comments {
+    border: 1px solid #2eabb0;
+    margin-top: 20px;
+}
+
+div#comments div.nocomments {
+    padding: 10px;
+    font-weight: bold;
+}
+
+div.inlinecomments div.comments h3,
+div#comments h3 {
+    margin: 0;
+    padding: 0;
+    background-color: #2eabb0;
+    color: white;
+    border: none;
+    padding: 3px;
+}
+
+div.inlinecomments div.comments div.actions {
+    padding: 4px;
+    margin: 0;
+    border-top: none;
+}
+
+div#comments div.comment {
+    margin: 10px;
+    border: 1px solid #2eabb0;
+}
+
+div.inlinecomments div.comment h4,
+div.commentwindow div.comment h4,
+div#comments div.comment h4 {
+    margin: 10px 0 0 0;
+    background-color: #2eabb0;
+    color: white;
+    border: none;
+    padding: 1px 4px 1px 4px;
+}
+
+div#comments div.comment h4 {
+    margin: 0;
+}
+
+div#comments div.comment h4 a {
+    color: #d5f4f4;
+}
+
+div.inlinecomments div.comment div.text,
+div.commentwindow div.comment div.text,
+div#comments div.comment div.text {
+    margin: -5px 0 -5px 0;
+    padding: 0 10px 0 10px;
+}
+
+div.inlinecomments div.comment div.meta,
+div.commentwindow div.comment div.meta,
+div#comments div.comment div.meta {
+    text-align: right;
+    padding: 2px 10px 2px 0;
+    font-size: 95%;
+    color: #538893;
+    border-top: 1px solid #cbe7e5;
+    background-color: #e0f6f4;
+}
+
+div.commentwindow {
+    position: absolute;
+    width: 500px;
+    border: 1px solid #cbe7e5;
+    background-color: #f2fbfd;
+    display: none;
+    z-index: 130;
+}
+
+div.commentwindow h3 {
+    margin: 0;
+    background-color: #2eabb0;
+    color: white;
+    border: none;
+    padding: 5px;
+    font-size: 1.5em;
+    cursor: pointer;
+}
+
+div.commentwindow div.actions {
+    margin: 10px -10px 0 -10px;
+    padding: 4px 10px 4px 10px;
+    color: #538893;
+}
+
+div.commentwindow div.actions input {
+    border: 1px solid #2eabb0;
+    background-color: white;
+    color: #135355;
+    cursor: pointer;
+}
+
+div.commentwindow div.form {
+    padding: 0 10px 0 10px;
+}
+
+div.commentwindow div.form input,
+div.commentwindow div.form textarea {
+    border: 1px solid #3c9ea2;
+    background-color: white;
+    color: black;
+}
+
+div.commentwindow div.error {
+    margin: 10px 5px 10px 5px;
+    background-color: #fbe5dc;
+    display: none;
+}
+
+div.commentwindow div.form textarea {
+    width: 99%;
+}
+
+div.commentwindow div.preview {
+    margin: 10px 0 10px 0;
+    background-color: #70d0d4;
+    padding: 0 1px 1px 25px;
+}
+
+div.commentwindow div.preview h4 {
+    margin: 0 0 -5px -20px;
+    padding: 4px 0 0 4px;
+    color: white;
+    font-size: 1.3em;
+}
+
+div.commentwindow div.preview div.comment {
+    background-color: #f2fbfd;
+}
+
+div.commentwindow div.preview div.comment h4 {
+    margin: 10px 0 0 0!important;
+    padding: 1px 4px 1px 4px!important;
+    font-size: 1.2em;
+}
+
+/* :::: SUGGEST CHANGES :::: */
+div#suggest-changes-box input, div#suggest-changes-box textarea {
+    border: 1px solid #ccc;
+    background-color: white;
+    color: black;
+}
+
+div#suggest-changes-box textarea {
+    width: 99%;
+    height: 400px;
+}
+
+
+/* :::: PREVIEW :::: */
+div.preview {
+    background-image: url(style/preview.png);
+    padding: 0 20px 20px 20px;
+    margin-bottom: 30px;
+}
+
+
+/* :::: INDEX PAGE :::: */
+
+table.contentstable {
+    width: 90%;
+}
+
+table.contentstable p.biglink {
+    line-height: 150%;
+}
+
+a.biglink {
+    font-size: 1.3em;
+}
+
+span.linkdescr {
+    font-style: italic;
+    padding-top: 5px;
+    font-size: 90%;
+}
+
+/* :::: INDEX STYLES :::: */
+
+table.indextable td {
+    text-align: left;
+    vertical-align: top;
+}
+
+table.indextable dl, table.indextable dd {
+    margin-top: 0;
+    margin-bottom: 0;
+}
+
+table.indextable tr.pcap {
+    height: 10px;
+}
+
+table.indextable tr.cap {
+    margin-top: 10px;
+    background-color: #f2f2f2;
+}
+
+img.toggler {
+    margin-right: 3px;
+    margin-top: 3px;
+    cursor: pointer;
+}
+
+form.pfform {
+    margin: 10px 0 20px 0;
+}
+
+/* :::: GLOBAL STYLES :::: */
+
+.docwarning {
+    background-color: #ffe4e4;
+    padding: 10px;
+    margin: 0 -20px 0 -20px;
+    border-bottom: 1px solid #f66;
+}
+
+p.subhead {
+    font-weight: bold;
+    margin-top: 20px;
+}
+
+a {
+    color: black;
+    text-decoration: none;
+}
+
+a:hover {
+    text-decoration: underline;
+}
+
+div.body h1,
+div.body h2,
+div.body h3,
+div.body h4,
+div.body h5,
+div.body h6 {
+    font-family: 'Verdana', sans-serif;
+    background-color: white;
+    font-weight: bold;
+    color: black;
+    border-bottom: 1px solid #ccc;
+    margin: 20px -20px 10px -20px;
+    padding: 3px 0 3px 10px;
+}
+
+div.body h1 { margin-top: 0; font-size: 200%; }
+div.body h2 { font-size: 160%; }
+div.body h3 { font-size: 120%; }
+div.body h4 { font-size: 100%; }
+div.body h5 { font-size: 90%; }
+div.body h6 { font-size: 70%; }
+
+a.headerlink {
+    color: #c60f0f;
+    font-size: 0.8em;
+    padding: 0 4px 0 4px;
+    text-decoration: none;
+    visibility: hidden;
+}
+
+h1:hover > a.headerlink,
+h2:hover > a.headerlink,
+h3:hover > a.headerlink,
+h4:hover > a.headerlink,
+h5:hover > a.headerlink,
+h6:hover > a.headerlink,
+dt:hover > a.headerlink {
+    visibility: visible;
+}
+
+a.headerlink:hover {
+    background-color: #c60f0f;
+    color: white;
+}
+
+div.body p, div.body dd, div.body li {
+    text-align: justify;
+    line-height: 130%;
+}
+
+div.body p.caption {
+    text-align: inherit;
+}
+
+div.body td {
+    text-align: left;
+}
+
+ul.fakelist {
+    list-style: none;
+    margin: 10px 0 10px 20px;
+    padding: 0;
+}
+
+.field-list ul {
+    padding-left: 1em;
+}
+
+.first {
+    margin-top: 0 !important;
+}
+
+/* "Footnotes" heading */
+p.rubric {
+    margin-top: 30px;
+    font-weight: bold;
+}
+
+/* "Topics" */
+
+div.topic {
+    background-color: #eee;
+    border: 1px solid #ccc;
+    padding: 0 7px 0 7px;
+    margin: 10px 0 10px 0;
+}
+
+p.topic-title {
+    font-size: 1.1em;
+    font-weight: bold;
+    margin-top: 10px;
+}
+
+/* Admonitions */
+
+div.admonition {
+    margin-top: 10px;
+    margin-bottom: 10px;
+    padding: 7px;
+}
+
+div.admonition dt {
+    font-weight: bold;
+}
+
+div.admonition dl {
+    margin-bottom: 0;
+}
+
+div.admonition p {
+    display: inline;
+}
+
+div.seealso {
+    background-color: #ffc;
+    border: 1px solid #ff6;
+}
+
+div.warning {
+    background-color: #ffe4e4;
+    border: 1px solid #f66;
+}
+
+div.note {
+    background-color: #eee;
+    border: 1px solid #ccc;
+}
+
+p.admonition-title {
+    margin: 0px 10px 5px 0px;
+    font-weight: bold;
+    display: inline;
+}
+
+p.admonition-title:after {
+    content: ":";
+}
+
+div.body p.centered {
+    text-align: center;
+    margin-top: 25px;
+}
+
+table.docutils {
+    border: 0;
+}
+
+table.docutils td, table.docutils th {
+    padding: 1px 8px 1px 0;
+    border-top: 0;
+    border-left: 0;
+    border-right: 0;
+    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;
+}
+
+.field-list ul {
+    margin: 0;
+    padding-left: 1em;
+}
+
+.field-list p {
+    margin: 0;
+}
+
+dl {
+    margin-bottom: 15px;
+    clear: both;
+}
+
+dd p {
+    margin-top: 0px;
+}
+
+dd ul, dd table {
+    margin-bottom: 10px;
+}
+
+dd {
+    margin-top: 3px;
+    margin-bottom: 10px;
+    margin-left: 30px;
+}
+
+.refcount {
+    color: #060;
+}
+
+dt:target,
+.highlight {
+    background-color: #fbe54e;
+}
+
+dl.glossary dt {
+    font-weight: bold;
+    font-size: 1.1em;
+}
+
+th {
+    text-align: left;
+    padding-right: 5px;
+}
+
+pre {
+    padding: 5px;
+    background-color: #efc;
+    color: #333;
+    border: 1px solid #ac9;
+    border-left: none;
+    border-right: none;
+    overflow: auto;
+}
+
+td.linenos pre {
+    padding: 5px 0px;
+    border: 0;
+    background-color: transparent;
+    color: #aaa;
+}
+
+table.highlighttable {
+    margin-left: 0.5em;
+}
+
+table.highlighttable td {
+    padding: 0 0.5em 0 0.5em;
+}
+
+tt {
+    background-color: #ecf0f3;
+    padding: 0 1px 0 1px;
+    font-size: 0.95em;
+}
+
+tt.descname {
+    background-color: transparent;
+    font-weight: bold;
+    font-size: 1.2em;
+}
+
+tt.descclassname {
+    background-color: transparent;
+}
+
+tt.xref, a tt {
+    background-color: transparent;
+    font-weight: bold;
+}
+
+.footnote:target  { background-color: #ffa }
+
+h1 tt, h2 tt, h3 tt, h4 tt, h5 tt, h6 tt {
+    background-color: transparent;
+}
+
+.optional {
+    font-size: 1.3em;
+}
+
+.versionmodified {
+    font-style: italic;
+}
+
+form.comment {
+    margin: 0;
+    padding: 10px 30px 10px 30px;
+    background-color: #eee;
+}
+
+form.comment h3 {
+    background-color: #326591;
+    color: white;
+    margin: -10px -30px 10px -30px;
+    padding: 5px;
+    font-size: 1.4em;
+}
+
+form.comment input,
+form.comment textarea {
+    border: 1px solid #ccc;
+    padding: 2px;
+    font-family: sans-serif;
+    font-size: 100%;
+}
+
+form.comment input[type="text"] {
+    width: 240px;
+}
+
+form.comment textarea {
+    width: 100%;
+    height: 200px;
+    margin-bottom: 10px;
+}
+
+.system-message {
+    background-color: #fda;
+    padding: 5px;
+    border: 3px solid red;
+}
+
+/* :::: PRINT :::: */
+@media print {
+    div.document,
+    div.documentwrapper,
+    div.bodywrapper {
+        margin: 0;
+        width : 100%;
+    }
+
+    div.sphinxsidebar,
+    div.related,
+    div.footer,
+    div#comments div.new-comment-box,
+    #top-link {
+        display: none;
+    }
+}
diff --git a/doc/.templates/layout.html b/doc/.templates/layout.html
new file mode 100644
index 0000000000000000000000000000000000000000..e8512b775e2de33550c901d1597aee8403107a36_ZG9jLy50ZW1wbGF0ZXMvbGF5b3V0Lmh0bWw=
--- /dev/null
+++ b/doc/.templates/layout.html
@@ -0,0 +1,195 @@
+{%- block doctype -%}
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+{%- endblock %}
+{%- set reldelim1 = reldelim1 is not defined and ' &raquo;' or reldelim1 %}
+{%- set reldelim2 = reldelim2 is not defined and ' |' or reldelim2 %}
+{%- macro relbar %}
+    <div class="related">
+      <h3>Navigation</h3>
+      <ul>
+        {%- for rellink in rellinks %}
+        <li class="right" {% if loop.first %}style="margin-right: 10px"{% endif %}>
+          <a href="{{ pathto(rellink[0]) }}" title="{{ rellink[1]|striptags }}"
+             accesskey="{{ rellink[2] }}">{{ rellink[3] }}</a>
+          {%- if not loop.first %}{{ reldelim2 }}{% endif %}</li>
+        {%- endfor %}
+        {%- block rootrellink %}
+        <li><a href="{{ pathto('index') }}">{{ shorttitle }}</a>{{ reldelim1 }}</li>
+        {%- endblock %}
+        {%- for parent in parents %}
+          <li><a href="{{ parent.link|e }}" accesskey="U">{{ parent.title }}</a>{{ reldelim1 }}</li>
+        {%- endfor %}
+        {%- block relbaritems %}{% endblock %}
+      </ul>
+    </div>
+{%- endmacro %}
+{%- macro sidebar %}
+      {%- if builder != 'htmlhelp' %}
+      <div class="sphinxsidebar">
+        <div class="sphinxsidebarwrapper">
+          {%- block sidebarlogo %}
+          {%- if logo %}
+            <p class="logo"><img class="logo" src="{{ pathto('_static/' + logo, 1) }}" alt="Logo"/></p>
+          {%- endif %}
+          {%- endblock %}
+          {%- block sidebartoc %}
+          {%- if display_toc %}
+            <h3>Table Of Contents</h3>
+            {{ toc }}
+          {%- endif %}
+          {%- endblock %}
+          {%- block sidebarrel %}
+          {%- if prev %}
+            <h4>Previous topic</h4>
+            <p class="topless"><a href="{{ prev.link|e }}" title="previous chapter">{{ prev.title }}</a></p>
+          {%- endif %}
+          {%- if next %}
+            <h4>Next topic</h4>
+            <p class="topless"><a href="{{ next.link|e }}" title="next chapter">{{ next.title }}</a></p>
+          {%- endif %}
+          {%- endblock %}
+          {%- if sourcename %}
+            <h3>This Page</h3>
+            <ul class="this-page-menu">
+            {%- if builder == 'web' %}
+              <li><a href="#comments">Comments ({{ comments|length }} so far)</a></li>
+              <li><a href="{{ pathto('@edit/' + sourcename)|e }}">Suggest Change</a></li>
+              <li><a href="{{ pathto('@source/' + sourcename)|e }}">Show Source</a></li>
+            {%- elif builder == 'html' %}
+              <li><a href="{{ pathto('_sources/' + sourcename, true)|e }}">Show Source</a></li>
+            {%- endif %}
+            </ul>
+          {%- endif %}
+          {%- if customsidebar %}
+          {{ rendertemplate(customsidebar) }}
+          {%- endif %}
+          {%- block sidebarsearch %}
+          {%- if pagename != "search" %}
+            <h3>{{ builder == 'web' and 'Keyword' or 'Quick' }} search</h3>
+            <form class="search" action="{{ pathto('search') }}" method="get">
+              <input type="text" name="q" size="18" /> <input type="submit" value="Go" />
+              <input type="hidden" name="check_keywords" value="yes" />
+              <input type="hidden" name="area" value="default" />
+            </form>
+            {%- if builder == 'web' %}
+            <p style="font-size: 90%">Enter a module, class or function name.</p>
+            {%- endif %}
+          {%- endif %}
+          {%- endblock %}
+        </div>
+      </div>
+      {%- endif %}
+{%- endmacro -%}
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    {%- if builder != 'htmlhelp' %}
+      {%- set titlesuffix = " &mdash; " + docstitle %}
+    {%- endif %}
+    <title>{{ title|striptags }}{{ titlesuffix }}</title>
+    {%- if builder == 'web' %}
+    <link rel="stylesheet" href="{{ pathto('index') }}?do=stylesheet{%
+      if in_admin_panel %}&admin=yes{% endif %}" type="text/css" />
+    {%- for link, type, title in page_links %}
+    <link rel="alternate" type="{{ type|e(true) }}" title="{{ title|e(true) }}" href="{{ link|e(true) }}" />
+    {%- endfor %}
+    {%- else %}
+    <link rel="stylesheet" href="{{ pathto('_static/' + style, 1) }}" type="text/css" />
+    <link rel="stylesheet" href="{{ pathto('_static/pygments.css', 1) }}" type="text/css" />
+    {%- endif %}
+    {%- if builder != 'htmlhelp' %}
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+          URL_ROOT:    '{{ pathto("", 1) }}',
+          VERSION:     '{{ release }}',
+          COLLAPSE_MODINDEX: false,
+          FILE_SUFFIX: '{{ file_suffix }}'
+      };
+    </script>
+    <script type="text/javascript" src="{{ pathto('_static/jquery.js', 1) }}"></script>
+    <script type="text/javascript" src="{{ pathto('_static/interface.js', 1) }}"></script>
+    <script type="text/javascript" src="{{ pathto('_static/doctools.js', 1) }}"></script>
+    {%- if use_opensearch %}
+    <link rel="search" type="application/opensearchdescription+xml"
+          title="Search within {{ docstitle }}"
+          href="{{ pathto('_static/opensearch.xml', 1) }}"/>
+    {%- endif %}
+    {%- if favicon %}
+    <link rel="shortcut icon" href="{{ pathto('_static/' + favicon, 1) }}"/>
+    {%- endif %}
+    {%- endif %}
+{%- block rellinks %}
+    {%- if hasdoc('about') %}
+    <link rel="author" title="About these documents" href="{{ pathto('about') }}" />
+    {%- endif %}
+    <link rel="contents" title="Global table of contents" href="{{ pathto('contents') }}" />
+    <link rel="index" title="Global index" href="{{ pathto('genindex') }}" />
+    <link rel="search" title="Search" href="{{ pathto('search') }}" />
+    {%- if hasdoc('copyright') %}
+    <link rel="copyright" title="Copyright" href="{{ pathto('copyright') }}" />
+    {%- endif %}
+    <link rel="top" title="{{ docstitle }}" href="{{ pathto('index') }}" />
+    {%- if parents %}
+    <link rel="up" title="{{ parents[-1].title|striptags }}" href="{{ parents[-1].link|e }}" />
+    {%- endif %}
+    {%- if next %}
+    <link rel="next" title="{{ next.title|striptags }}" href="{{ next.link|e }}" />
+    {%- endif %}
+    {%- if prev %}
+    <link rel="prev" title="{{ prev.title|striptags }}" href="{{ prev.link|e }}" />
+    {%- endif %}
+{%- endblock %}
+{%- block extrahead %}{% endblock %}
+  </head>
+  <body>
+
+{% block logilablogo %}
+<div class="logilablogo">
+	<a class="logogo" href="http://www.logilab.org"><img border="0" src="{{ pathto('_static/logilab.png', 1) }}"/></a>
+  </div>
+{% endblock %}
+
+{%- block relbar1 %}{{ relbar() }}{% endblock %}
+
+{%- block sidebar1 %}{# possible location for sidebar #}{% endblock %}
+
+{%- block document %}
+    <div class="document">
+      <div class="documentwrapper">
+      {%- if builder != 'htmlhelp' %}
+        <div class="bodywrapper">
+      {%- endif %}
+          <div class="body">
+            {% block body %}{% endblock %}
+          </div>
+      {%- if builder != 'htmlhelp' %}
+        </div>
+      {%- endif %}
+      </div>
+{%- endblock %}
+
+{%- block sidebar2 %}{{ sidebar() }}{% endblock %}
+      <div class="clearer"></div>
+    </div>
+
+{%- block relbar2 %}{{ relbar() }}{% endblock %}
+
+{%- block footer %}
+    <div class="footer">
+    {%- if hasdoc('copyright') %}
+      &copy; <a href="{{ pathto('copyright') }}">Copyright</a> {{ copyright }}.
+    {%- else %}
+      &copy; Copyright {{ copyright }}.
+    {%- endif %}
+    {%- if last_updated %}
+      Last updated on {{ last_updated }}.
+    {%- endif %}
+    {%- if show_sphinx %}
+      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a>.
+    {%- endif %}
+    </div>
+{%- endblock %}
+  </body>
+</html>
diff --git a/doc/Makefile b/doc/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..e8512b775e2de33550c901d1597aee8403107a36_ZG9jL01ha2VmaWxl
--- /dev/null
+++ b/doc/Makefile
@@ -0,0 +1,70 @@
+# Makefile for Sphinx documentation
+#
+
+# You can set these variables from the command line.
+SPHINXOPTS    =
+SPHINXBUILD   = sphinx-build
+PAPER         =
+
+# Internal variables.
+PAPEROPT_a4     = -D latex_paper_size=a4
+PAPEROPT_letter = -D latex_paper_size=letter
+ALLSPHINXOPTS   = -d build/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
+
+.PHONY: help clean html web pickle htmlhelp latex changes linkcheck
+
+help:
+	@echo "Please use \`make <target>' where <target> is one of"
+	@echo "  html      to make standalone HTML files"
+	@echo "  pickle    to make pickle files (usable by e.g. sphinx-web)"
+	@echo "  htmlhelp  to make HTML files and a HTML help project"
+	@echo "  latex     to make LaTeX files, you can set PAPER=a4 or PAPER=letter"
+	@echo "  changes   to make an overview over all changed/added/deprecated items"
+	@echo "  linkcheck to check all external links for integrity"
+
+clean:
+	-rm -rf build/*
+
+html:
+	mkdir -p build/html build/doctrees
+	$(SPHINXBUILD) -b html $(ALLSPHINXOPTS) build/html
+	@echo
+	@echo "Build finished. The HTML pages are in build/html."
+
+pickle:
+	mkdir -p build/pickle build/doctrees
+	$(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) build/pickle
+	@echo
+	@echo "Build finished; now you can process the pickle files or run"
+	@echo "  sphinx-web build/pickle"
+	@echo "to start the sphinx-web server."
+
+web: pickle
+
+htmlhelp:
+	mkdir -p build/htmlhelp build/doctrees
+	$(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) build/htmlhelp
+	@echo
+	@echo "Build finished; now you can run HTML Help Workshop with the" \
+	      ".hhp project file in build/htmlhelp."
+
+latex:
+	mkdir -p build/latex build/doctrees
+	$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) build/latex
+	@echo
+	@echo "Build finished; the LaTeX files are in build/latex."
+	@echo "Run \`make all-pdf' or \`make all-ps' in that directory to" \
+	      "run these through (pdf)latex."
+
+changes:
+	mkdir -p build/changes build/doctrees
+	$(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) build/changes
+	@echo
+	@echo "The overview file is in build/changes."
+
+linkcheck:
+	mkdir -p build/linkcheck build/doctrees
+	$(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) build/linkcheck
+	@echo
+	@echo "Link check complete; look for any errors in the above output " \
+	      "or in build/linkcheck/output.txt."
diff --git a/doc/conf.py b/doc/conf.py
new file mode 100644
index 0000000000000000000000000000000000000000..e8512b775e2de33550c901d1597aee8403107a36_ZG9jL2NvbmYucHk=
--- /dev/null
+++ b/doc/conf.py
@@ -0,0 +1,179 @@
+# -*- coding: utf-8 -*-
+#
+# RQL documentation build configuration file, created by
+# sphinx-quickstart on Tue Nov  4 07:54:06 2008.
+#
+# This file is execfile()d with the current directory set to its containing dir.
+#
+# The contents of this file are pickled, so don't put values in the namespace
+# that aren't pickleable (module imports are okay, they're removed automatically).
+#
+# All configuration values have a default value; values that are commented out
+# serve to show the default value.
+
+import sys, os
+
+# If your extensions are in another directory, add it here. If the directory
+# is relative to the documentation root, use os.path.abspath to make it
+# absolute, like shown here.
+#sys.path.append(os.path.abspath('some/directory'))
+
+# General configuration
+# ---------------------
+
+# Add any Sphinx extension module names here, as strings. They can be extensions
+# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
+extensions = ['sphinx.ext.autodoc']
+
+# Add any paths that contain templates here, relative to this directory.
+templates_path = ['.templates']
+
+# The suffix of source filenames.
+source_suffix = '.txt'
+
+# The master toctree document.
+master_doc = 'index'
+
+# General substitutions.
+project = 'RQL'
+copyright = '2008, Sylvain Thenault'
+
+# The default replacements for |version| and |release|, also used in various
+# other places throughout the built documents.
+#
+# The short X.Y version.
+version = '0.20.2'
+# The full version, including alpha/beta/rc tags.
+release = '0.20.2'
+
+# There are two options for replacing |today|: either, you set today to some
+# non-false value, then it is used:
+#today = ''
+# Else, today_fmt is used as the format for a strftime call.
+today_fmt = '%B %d, %Y'
+
+# List of documents that shouldn't be included in the build.
+#unused_docs = []
+
+# List of directories, relative to source directories, that shouldn't be searched
+# for source files.
+#exclude_dirs = []
+
+# The reST default role (used for this markup: `text`) to use for all documents.
+#default_role = None
+
+# If true, '()' will be appended to :func: etc. cross-reference text.
+#add_function_parentheses = True
+
+# If true, the current module name will be prepended to all description
+# unit titles (such as .. function::).
+#add_module_names = True
+
+# If true, sectionauthor and moduleauthor directives will be shown in the
+# output. They are ignored by default.
+#show_authors = False
+
+# The name of the Pygments (syntax highlighting) style to use.
+pygments_style = 'sphinx'
+
+
+# Options for HTML output
+# -----------------------
+
+# The style sheet to use for HTML and HTML Help pages. A file of that name
+# must exist either in Sphinx' static/ path, or in one of the custom paths
+# given in html_static_path.
+html_style = 'sphinx-default.css'
+
+# The name for this set of Sphinx documents.  If None, it defaults to
+# "<project> v<release> documentation".
+#html_title = None
+
+# A shorter title for the navigation bar.  Default is the same as html_title.
+#html_short_title = None
+
+# The name of an image file (within the static path) to place at the top of
+# the sidebar.
+#html_logo = None
+
+# The name of an image file (within the static path) to use as favicon of the
+# docs.  This file should be a Windows icon file (.ico) being 16x16 or 32x32
+# pixels large.
+#html_favicon = None
+
+# Add any paths that contain custom static files (such as style sheets) here,
+# relative to this directory. They are copied after the builtin static files,
+# so a file named "default.css" will overwrite the builtin "default.css".
+html_static_path = ['.static']
+
+# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
+# using the given strftime format.
+html_last_updated_fmt = '%b %d, %Y'
+
+# If true, SmartyPants will be used to convert quotes and dashes to
+# typographically correct entities.
+#html_use_smartypants = True
+
+# Custom sidebar templates, maps document names to template names.
+#html_sidebars = {}
+
+# Additional templates that should be rendered to pages, maps page names to
+# template names.
+#html_additional_pages = {}
+
+# If false, no module index is generated.
+#html_use_modindex = True
+
+# If false, no index is generated.
+#html_use_index = True
+
+# If true, the index is split into individual pages for each letter.
+#html_split_index = False
+
+# If true, the reST sources are included in the HTML build as _sources/<name>.
+#html_copy_source = True
+
+# If true, an OpenSearch description file will be output, and all pages will
+# contain a <link> tag referring to it.  The value of this option must be the
+# base URL from which the finished HTML is served.
+#html_use_opensearch = ''
+
+# If nonempty, this is the file name suffix for HTML files (e.g. ".xhtml").
+#html_file_suffix = ''
+
+# Output file base name for HTML help builder.
+htmlhelp_basename = 'RQLdoc'
+
+
+# Options for LaTeX output
+# ------------------------
+
+# The paper size ('letter' or 'a4').
+#latex_paper_size = 'letter'
+
+# The font size ('10pt', '11pt' or '12pt').
+#latex_font_size = '10pt'
+
+# Grouping the document tree into LaTeX files. List of tuples
+# (source start file, target name, title, author, document class [howto/manual]).
+latex_documents = [
+  ('index', 'RQL.tex', 'RQL Documentation',
+   'Sylvain Thenault', 'manual'),
+]
+
+# The name of an image file (relative to this directory) to place at the top of
+# the title page.
+#latex_logo = None
+
+# For "manual" documents, if this is true, then toplevel headings are parts,
+# not chapters.
+#latex_use_parts = False
+
+# Additional stuff for the LaTeX preamble.
+#latex_preamble = ''
+
+# Documents to append as an appendix to all manuals.
+#latex_appendices = []
+
+# If false, no module index is generated.
+#latex_use_modindex = True
diff --git a/doc/index.txt b/doc/index.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e8512b775e2de33550c901d1597aee8403107a36_ZG9jL2luZGV4LnR4dA==
--- /dev/null
+++ b/doc/index.txt
@@ -0,0 +1,23 @@
+.. RQL documentation master file, created by sphinx-quickstart on Tue Nov  4 07:54:06 2008.
+   You can adapt this file completely to your liking, but it should at least
+   contain the root `toctree` directive.
+
+Documentation technique de RQL
+==============================
+
+Contents:
+
+.. toctree::
+   :maxdepth: 2
+
+   specifications_fr.txt
+   canonisation.txt
+   tutoriel_fr.txt
+
+Indices and tables
+==================
+
+* :ref:`genindex`
+* :ref:`modindex`
+* :ref:`search`
+