src/build/html/install.html
changeset 10 1d12ff3f036a
parent 9 562bde22e104
child 11 ba0b83b57c0c
--- a/src/build/html/install.html	Sun Jan 14 15:46:10 2018 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,417 +0,0 @@
-
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
-<html xmlns="http://www.w3.org/1999/xhtml">
-  <head>
-    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-    <title>Installing PyAMS &#8212; PyAMS User Guide 0.1.0 documentation</title>
-    <link rel="stylesheet" href="_static/pyramid.css" type="text/css" />
-    <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
-    <script type="text/javascript">
-      var DOCUMENTATION_OPTIONS = {
-        URL_ROOT:    './',
-        VERSION:     '0.1.0',
-        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>
-    <link rel="index" title="Index" href="genindex.html" />
-    <link rel="search" title="Search" href="search.html" />
-    <link rel="next" title="Managing ZCA with PyAMS" href="zca.html" />
-    <link rel="prev" title="Creating ZODB" href="zodb.html" />
-<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Neuton&amp;subset=latin" type="text/css" media="screen" charset="utf-8" />
-<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Nobile:regular,italic,bold,bolditalic&amp;subset=latin" type="text/css" media="screen" charset="utf-8" />
-<!--[if lte IE 6]>
-<link rel="stylesheet" href="_static/ie6.css" type="text/css" media="screen" charset="utf-8" />
-<![endif]-->
-
-  </head>
-  <body>
-
-    <div class="related" role="navigation" aria-label="related navigation">
-      <h3>Navigation</h3>
-      <ul>
-        <li class="right" style="margin-right: 10px">
-          <a href="genindex.html" title="General Index"
-             accesskey="I">index</a></li>
-        <li class="right" >
-          <a href="py-modindex.html" title="Python Module Index"
-             >modules</a> |</li>
-        <li class="right" >
-          <a href="zca.html" title="Managing ZCA with PyAMS"
-             accesskey="N">next</a> |</li>
-        <li class="right" >
-          <a href="zodb.html" title="Creating ZODB"
-             accesskey="P">previous</a> |</li>
-        <li class="nav-item nav-item-0"><a href="index.html">PyAMS User Guide 0.1.0 documentation</a> &#187;</li> 
-      </ul>
-    </div>  
-
-    <div class="document">
-      <div class="documentwrapper">
-        <div class="bodywrapper">
-          <div class="body" role="main">
-            
-  <div class="section" id="installing-pyams">
-<span id="install"></span><h1>Installing PyAMS<a class="headerlink" href="#installing-pyams" title="Permalink to this headline">¶</a></h1>
-<p>PyAMS default installation is based on <a class="reference external" href="http://www.buildout.org">Buildout</a> utility. It’s not mandatory to use a
-virtual environment, but it allows you to have a better control over your Python resources.</p>
-<p>Current PyAMS version is based and validated for Python 3.5; your Python environment must also include a C
-compiler as well as development headers for Python, <em>libjpeg</em>, <em>libpng</em>, <em>libfreetype</em>, <em>libxml2</em>, <em>libxslt</em> and
-eventually <em>libldap</em>, <em>libffi</em>, <em>libgdal</em> or <em>libzmq</em>.</p>
-<p>PyAMS default components configuration also pre-suppose that the following external tools are available:</p>
-<ul class="simple">
-<li>a <em>Memcached</em> or <em>Redis</em> server, to store sessions and cache (can be changed through Beaker configuration)</li>
-</ul>
-<p>Optional tools also include:</p>
-<ul class="simple">
-<li>an <em>LDAP</em> server for authentication</li>
-<li>an <em>ElasticSearch</em> server for full text indexing (see <em>PyAMS_content_es</em> package)</li>
-<li>a <em>WebSockets</em> server using AsyncIO. This is used to manage notifications (see <em>PyAMS_notify</em> and <em>PyAMS_notify_ws</em>
-packages). An <em>out of the box</em> environment can be built using <em>pyams_notify</em> scaffold.</li>
-</ul>
-<p>PyAMS also needs that you use a ZODB remote server, as several background processes needing a concurrent access to ZODB
-are started by PyAMS main process. Three ZODB storages are already provided through PyAMS: ZEO, RelStorage or Newt.db.
-See <a class="reference internal" href="zodb.html#zodb"><span class="std std-ref">Creating ZODB</span></a> to know how to initialize database with the help of PyAMS tools.</p>
-<div class="section" id="creating-initial-buildout">
-<h2>Creating initial buildout<a class="headerlink" href="#creating-initial-buildout" title="Permalink to this headline">¶</a></h2>
-<p>PyAMS provides a new Pyramid scaffold, called <em>pyams</em>, generated via a <em>cookiecutter</em> template.</p>
-<p>A simple option to install PyAMS is to create a buildout environment including <em>Pyramid</em> and all <em>PyAMS</em> packages:</p>
-<div class="highlight-bash"><div class="highlight"><pre><span></span><span class="c1"># mkdir /var/local/</span>
-<span class="c1"># pip3 install virtualenv</span>
-<span class="c1"># virtualenv --python=python3.5 env</span>
-<span class="c1"># cd env</span>
-<span class="c1"># . bin/activate</span>
-<span class="o">(</span>env<span class="o">)</span> <span class="c1"># pip3.5 install cookiecutter</span>
-<span class="o">(</span>env<span class="o">)</span> <span class="c1"># cookiecutter hg+http://hg.ztfy.org/pyams/scaffolds/pyams</span>
-</pre></div>
-</div>
-<p><em>CookieCutter</em> will ask you for a small set of input variables that you can change or not:</p>
-<ul class="simple">
-<li><strong>pyams_release</strong>: version of PyAMS configuration file to use. “latest” (default value) will point to last release;
-you can also choose to point to a given release (“0.1.4” for example)</li>
-<li><strong>project_name</strong>: current environment name in “human form”</li>
-<li><strong>project_slug</strong>: “technical” package name, based on project name</li>
-<li><strong>virtual_hostname</strong>: Apache virtual-host name</li>
-<li><strong>webapp_name</strong>: web application package name (“webapp” as default)</li>
-<li><strong>webapp_port</strong>: TCP/IP port to use when running application outside Apache (“6543” as default)</li>
-<li><strong>eggs_directory</strong>: relative or absolute path to directory containing downloaded eggs; this directory can be
-shared with other projects (“eggs” as default)</li>
-<li><strong>logs_directory</strong>: absolute path to directory containing Apache’s log files</li>
-<li><strong>run_user</strong>: user name under which Apache process will run (“www-data” as default)</li>
-<li><strong>run_group</strong>: group name under which Apache process will run (“www-data” as default)</li>
-<li><strong>beaker_backend</strong>: name of Beaker backend to use to store sessions and cache data (“redis” as default)</li>
-<li><strong>beaker_server</strong>: IP address and port of Beaker backend server (“127.0.0.1:6379” as default)</li>
-<li><strong>db_type</strong>: ZODB database storage; available options include ZEO, RelStorage and NewtDB</li>
-<li><strong>db_host</strong>: IP address of database server (“127.0.0.1” as default); WARNING: database server installation
-is not part of application installation; another “zeo_server” cookiecutter recipe is available for ZEO</li>
-<li><strong>db_port</strong>: listening port of database server (“8100” is given as default for ZEO)</li>
-<li><strong>db_name</strong>: database or ZEO storage name to use</li>
-<li><strong>db_username</strong>: database user name</li>
-<li><strong>db_password</strong>: database password</li>
-<li><strong>zeo_realm</strong>: ZEO authentication realm</li>
-<li><strong>blobs_dir</strong>: local directory to use to store cache of ZODB blobs; cache size is limited to 10GB as default</li>
-<li><strong>use_postgresql</strong>: specify if PostgreSQL access is required; if so, please check that PostgreSQL development files
-are available to compile PsycoPG2 extension</li>
-<li><strong>use_oracle</strong>: specify if Oracle access is required; if so, please check that Oracle development files are
-available to compile cx_Oracle extension, and that ORACLE_HOME environment variable is correctly defined (see below)</li>
-<li><strong>use_ldap</strong>: specify if LDAP access will be required for authentication</li>
-<li><strong>use_elasticsearch</strong>: specify if an ElasticSearch server will be used for indexation</li>
-<li><strong>elasticsearch_server</strong>: URL used to access Elasticsearch server (“<a class="reference external" href="http://127.0.0.1:9200">http://127.0.0.1:9200</a>” as default); this URL can
-include login and password (“<a class="reference external" href="http://login:password&#64;127.0.0.1:9200">http://login:password&#64;127.0.0.1:9200</a>”), if required…</li>
-<li><strong>elasticsearch_index</strong>: name of Elasticsearch index to use (“pyams” as default)</li>
-<li><strong>create_elasticsearch_index</strong>: specify if Elasticsearch index should be created after installation is complete</li>
-<li><strong>define_elasticsearch_mappings</strong> : specify if Elasticsearch mappings should be defined after installation is complete</li>
-<li><strong>smtp_server</strong>: DNS name of SMTP server (“localhost” as default)</li>
-<li><strong>smtp_server_name</strong>: “human” name given to SMTP server (“pyams” as default)</li>
-<li><strong>pyams_scheduler</strong>: TCP/IP address and port to use to access PyAMS tasks scheduler process (“127.0.0.1:5555” as
-default); see <span class="xref std std-ref">pyams_scheduler</span></li>
-<li><strong>start_scheduler</strong>: boolean value to indicate if scheduler process is started by this application instance</li>
-<li><strong>pyams_medias_converter</strong>: TCP/IP address and port to use to access PyAMS medias converter process (“127.0.0.1:5556”
-as default); see <span class="xref std std-ref">pyams_medias</span></li>
-<li><strong>start_medias_converter</strong>: boolean value to indicate if medias converter process is started by this application
-instance</li>
-<li><strong>pyams_es_indexer</strong>: TCP/IP address and port to use to access PyAMS Elasticsearch indexer process (“127.0.0.1:5557”
-as default); see <span class="xref std std-ref">pyams_content_es</span></li>
-<li><strong>start_es_indexer</strong> boolean value to indicate if Elasticsearch indexer process is started by this application
-instance</li>
-<li><strong>use_notifications</strong>: specify if PyAMS notifications services are to be used (see <a class="reference internal" href="pyams_notify.html#pyams-notify"><span class="std std-ref">PyAMS notification services</span></a>)</li>
-<li><strong>pyams_ws_notify</strong>: TCP/IP address and port of PyAMS websockets server managing notifications service
-(“127.0.0.1:8081” as default)</li>
-<li><strong>lexicon_languages</strong>: NLTK lexicon languages to use (“en:english fr:french” as default)</li>
-<li><strong>extension_package</strong>: name of a PyAMS extension package to include in environment configuration</li>
-<li><strong>need_pyams_gis</strong>: specify if PyAMS GIS features are to be used by given extension package; if so, please check
-that <em>libgdal</em> development files are available; on Debian (and maybe others), you have to specify environment
-variables (see below).</li>
-</ul>
-<p>You can then check, and eventually update, the proposed Buildout configuration file <em>buildout.cfg</em>, to add or remove
-packages or update settings to your needs. Then finalize Bootstrap initialization:</p>
-<div class="highlight-bash"><div class="highlight"><pre><span></span><span class="o">(</span>env<span class="o">)</span> <span class="c1"># python3.5 bootstrap.py</span>
-<span class="o">(</span>env<span class="o">)</span> <span class="c1"># ./bin/buildout</span>
-</pre></div>
-</div>
-<p>This last operation can be quite long, as many packages have to downloaded, compiled and installed in the virtual
-environment. If you encounter any compile error, just install the required dependencies and restart the buildout.</p>
-<p>Some dependencies can require the definition of custom environment variables before running <em>buildout</em>, like:</p>
-<ul class="simple">
-<li>for <em>libgdal</em>, which is required by <strong>PyAMS_gis</strong> package, use:</li>
-</ul>
-<div class="highlight-bash"><div class="highlight"><pre><span></span><span class="o">(</span>env<span class="o">)</span> <span class="c1"># export C_INCLUDE_PATH=/usr/include/gdal</span>
-<span class="o">(</span>env<span class="o">)</span> <span class="c1"># export CPLUS_INCLUDE_PATH=/usr/include/gdal</span>
-</pre></div>
-</div>
-<p><strong>WARNING</strong>: you have to check also that your <em>libgdal</em> release is matching “GDAL” release given in PyAMS
-configuration file (actually 2.1.0).</p>
-<ul class="simple">
-<li>for <em>cx_Oracle</em>, which is required if you use Oracle database connections, use:</li>
-</ul>
-<div class="highlight-bash"><div class="highlight"><pre><span></span><span class="o">(</span>env<span class="o">)</span> <span class="c1"># export ORACLE_HOME=/usr/lib/oracle/12.1/client64</span>
-</pre></div>
-</div>
-<p>These examples are given for Debian GNU/Linux. You may have to adapt configuration based on your own Linux
-distribution and packages versions.</p>
-</div>
-<div class="section" id="environment-settings">
-<h2>Environment settings<a class="headerlink" href="#environment-settings" title="Permalink to this headline">¶</a></h2>
-<p>The project generated from <em>pyams</em> scaffold is based on default Pyramid’s <em>zodb</em> scaffold, but it adds:</p>
-<ul class="simple">
-<li>a custom application factory, in the <em>webapp</em> directory (see <a class="reference internal" href="site.html#site"><span class="std std-ref">PyAMS site management</span></a>)</li>
-<li>a set of directories to store runtime data, in the <em>var</em> directory; each directory contains a <em>README.txt</em> file
-which should be self-explanatory to indicate what this directory should contain, including a ZEO cache</li>
-<li>a set of configuration files, in the <em>etc</em> directory; here are standard <em>development.ini</em> and <em>production.ini</em>
-configuration files, a ZODB configuration files (<em>zodb-zeo.conf</em>) for a ZEO client storage and two Apache
-configurations (for Apache 2.2 and 2.4) using <em>mod_wsgi</em>.</li>
-</ul>
-<p>Once the project have been created from the scaffold, you are free to update all the configuration files.</p>
-<p>If you need to add packages to the environment, you have to add them to the <em>buildout.cfg</em> file <strong>AND</strong> to the INI
-file (in the <em>pyramid.includes</em> section) before running the <em>buildout</em> another time; don’t forget to add the
-requested version at the end of <em>buildout.cfg</em> file, as Buildout is not configured by default to automatically
-download the last release of a given unknown package.</p>
-<p><em>development.ini</em> and <em>production.ini</em> files contain many commented directives related to PyAMS components. Read and
-update them carefully before initializing your application database!</p>
-</div>
-<div class="section" id="initializing-the-database">
-<h2>Initializing the database<a class="headerlink" href="#initializing-the-database" title="Permalink to this headline">¶</a></h2>
-<p>When you have downloaded and installed all required packages, you have to initialize the database so that all
-required components are available.</p>
-<p>From a shell, just type:</p>
-<div class="highlight-bash"><div class="highlight"><pre><span></span><span class="o">(</span>env<span class="o">)</span> <span class="c1"># ./bin/pyams_upgrade etc/development.ini</span>
-</pre></div>
-</div>
-<p>This process requires that every package is correctly included into <em>pyramid.includes</em> directive from selected
-configuration file.</p>
-</div>
-<div class="section" id="initializing-elasticsearch-index">
-<h2>Initializing Elasticsearch index<a class="headerlink" href="#initializing-elasticsearch-index" title="Permalink to this headline">¶</a></h2>
-<p>If you want to use an Elasticsearch index, you have to initialize index settings and mappings; the Ingest attachment
-plug-in is also required to handle attachments correctly.</p>
-<p>Elasticsearch integration is defined through the <em>PyAMS_content_es</em> package. Configuration files are available in this
-package, for attachment pipeline, index settings and mappings:</p>
-<div class="highlight-bash"><div class="highlight"><pre><span></span><span class="o">(</span>env<span class="o">)</span> <span class="c1"># cd /var/local/src/pyams/pyams_content_es</span>
-<span class="o">(</span>env<span class="o">)</span> <span class="c1"># curl --noproxy localhost -XDELETE http://localhost:9200/pyams (1)</span>
-<span class="o">(</span>env<span class="o">)</span> <span class="c1"># curl --noproxy localhost -XPUT    http://localhost:9200/pyams -d @index-settings.json</span>
-
-<span class="o">(</span>env<span class="o">)</span> <span class="c1"># curl --noproxy localhost -XPUT    http://localhost:9200/pyams/WfNewsEvent/_mapping -d @mappings/WfNewsEvent.json</span>
-<span class="o">(</span>env<span class="o">)</span> <span class="c1"># curl --noproxy localhost -XPUT    http://localhost:9200/pyams/WfTopic/_mapping -d @mappings/WfTopic.json</span>
-<span class="o">(</span>env<span class="o">)</span> <span class="c1"># curl --noproxy localhost -XPUT    http://localhost:9200/pyams/WfBlogPost/_mapping -d @mappings/WfBlogPost.json</span>
-</pre></div>
-</div>
-<ol class="arabic simple">
-<li>If ‘pyams’ is defined as Elasticsearch index name.</li>
-</ol>
-</div>
-<div class="section" id="nltk-initialization">
-<h2>NLTK initialization<a class="headerlink" href="#nltk-initialization" title="Permalink to this headline">¶</a></h2>
-<p>Some NLTK (Natural Language Toolkit) tokenizers and stopwords utilities are used to index fulltext contents elements.
-This package requires downloading and configuration of several elements which are done as follow:</p>
-<div class="highlight-bash"><div class="highlight"><pre><span></span><span class="o">(</span>end<span class="o">)</span> <span class="c1"># ./bin/py</span>
-&gt;&gt;&gt; import nltk
-&gt;&gt;&gt; nltk.download<span class="o">()</span>
-NLTK Downloader
----------------------------------------------------------------------------
-    d<span class="o">)</span> Download   l<span class="o">)</span> List    u<span class="o">)</span> Update   c<span class="o">)</span> Config   h<span class="o">)</span> Help   q<span class="o">)</span> Quit
----------------------------------------------------------------------------
-Downloader&gt; c
-
-Data Server:
-  - URL: &lt;https://raw.githubusercontent.com/nltk/nltk_data/gh-pages/index.xml&gt;
-  - <span class="m">6</span> Package Collections Available
-  - <span class="m">107</span> Individual Packages Available
-
-Local Machine:
-  - Data directory: /home/tflorac/nltk_data
-
----------------------------------------------------------------------------
-    s<span class="o">)</span> Show Config   u<span class="o">)</span> Set Server URL   d<span class="o">)</span> Set Data Dir   m<span class="o">)</span> Main Menu
----------------------------------------------------------------------------
-Config&gt; d
-  New directory&gt; /usr/local/lib/nltk_data <span class="o">(</span><span class="m">1</span><span class="o">)</span>
-Config&gt; m
-
----------------------------------------------------------------------------
-    d<span class="o">)</span> Download   l<span class="o">)</span> List    u<span class="o">)</span> Update   c<span class="o">)</span> Config   h<span class="o">)</span> Help   q<span class="o">)</span> Quit
----------------------------------------------------------------------------
-Downloader&gt; d
-
-Download which package <span class="o">(</span><span class="nv">l</span><span class="o">=</span>list<span class="p">;</span> <span class="nv">x</span><span class="o">=</span>cancel<span class="o">)</span>?
-  Identifier&gt; punkt
-    Downloading package punkt to /usr/local/lib/nltk_data...
-
-Downloader&gt; d
-
-Download which package <span class="o">(</span><span class="nv">l</span><span class="o">=</span>list<span class="p">;</span> <span class="nv">x</span><span class="o">=</span>cancel<span class="o">)</span>?
-  Identifier&gt; stopwords
-    Downloading package stopwords to /usr/local/lib/nltk_data...
-</pre></div>
-</div>
-<p>(1) On Debian GNU/Linux, you can choose any directory between ‘<em>~/nltk_data</em>’ (where ‘~’ is the homedir of user running
-Pyramid application), ‘<em>/usr/share/nltk_data</em>’, ‘<em>/usr/local/share/nltk_data</em>’, ‘<em>/usr/lib/nltk_data</em>’ and
-‘<em>/usr/local/lib/nltk_data</em>’.</p>
-</div>
-<div class="section" id="starting-the-application">
-<h2>Starting the application<a class="headerlink" href="#starting-the-application" title="Permalink to this headline">¶</a></h2>
-<p>When database upgrade process has ended, you can start the web application process with the standard Pyramid’s
-<em>pserve</em> command line tool:</p>
-<div class="highlight-bash"><div class="highlight"><pre><span></span><span class="o">(</span>env<span class="o">)</span> <span class="c1"># ./bin/pserve etc/development.ini</span>
-</pre></div>
-</div>
-<p>In standard debug mode, all registered components are displayed in the console, until the final line (here using ZEO):</p>
-<div class="highlight-bash"><div class="highlight"><pre><span></span><span class="m">2018</span>-01-14 <span class="m">11</span>:37:54,339 INFO  <span class="o">[</span>ZEO.ClientStorage<span class="o">][</span>MainThread<span class="o">]</span> <span class="o">[(</span><span class="s1">&#39;127.0.0.1&#39;</span>, <span class="m">8100</span><span class="o">)]</span> ClientStorage <span class="o">(</span><span class="nv">pid</span><span class="o">=</span><span class="m">28695</span><span class="o">)</span> created RW/normal <span class="k">for</span> storage: <span class="s1">&#39;pyams&#39;</span>
-<span class="m">2018</span>-01-14 <span class="m">11</span>:37:54,340 INFO  <span class="o">[</span>ZEO.cache<span class="o">][</span>MainThread<span class="o">]</span> created temporary cache file <span class="m">3</span>
-<span class="m">2018</span>-01-14 <span class="m">11</span>:37:54,345 INFO  <span class="o">[</span>ZODB.blob<span class="o">][</span>MainThread<span class="o">]</span> <span class="o">(</span><span class="m">28695</span><span class="o">)</span> Blob directory <span class="sb">`</span>/var/local/env/pyams/var/db/blobs<span class="sb">`</span> is used but has no layout marker set. Selected <span class="sb">`</span>lawn<span class="sb">`</span> layout.
-<span class="m">2018</span>-01-14 <span class="m">11</span>:37:54,345 WARNI <span class="o">[</span>ZODB.blob<span class="o">][</span>MainThread<span class="o">]</span> <span class="o">(</span><span class="m">28695</span><span class="o">)</span> The <span class="sb">`</span>lawn<span class="sb">`</span> blob directory layout is deprecated due to scalability issues on some file systems, please consider migrating to the <span class="sb">`</span>bushy<span class="sb">`</span> layout.
-<span class="m">2018</span>-01-14 <span class="m">11</span>:37:54,346 DEBUG <span class="o">[</span>asyncio<span class="o">][[(</span><span class="s1">&#39;127.0.0.1&#39;</span>, <span class="m">8100</span><span class="o">)]</span> zeo client networking thread<span class="o">]</span> Using selector: EpollSelector
-<span class="m">2018</span>-01-14 <span class="m">11</span>:37:54,347 DEBUG <span class="o">[</span>ZEO.asyncio.client<span class="o">][[(</span><span class="s1">&#39;127.0.0.1&#39;</span>, <span class="m">8100</span><span class="o">)]</span> zeo client networking thread<span class="o">]</span> disconnected &lt;ZEO.asyncio.client.Client object at 0x7feeb1de7390&gt; None
-<span class="m">2018</span>-01-14 <span class="m">11</span>:37:54,348 DEBUG <span class="o">[</span>ZEO.asyncio.client<span class="o">][[(</span><span class="s1">&#39;127.0.0.1&#39;</span>, <span class="m">8100</span><span class="o">)]</span> zeo client networking thread<span class="o">]</span> try_connecting
-<span class="m">2018</span>-01-14 <span class="m">11</span>:37:54,349 INFO  <span class="o">[</span>ZEO.asyncio.base<span class="o">][[(</span><span class="s1">&#39;127.0.0.1&#39;</span>, <span class="m">8100</span><span class="o">)]</span> zeo client networking thread<span class="o">]</span> Connected Protocol<span class="o">((</span><span class="s1">&#39;127.0.0.1&#39;</span>, <span class="m">8100</span><span class="o">)</span>, <span class="s1">&#39;pyams&#39;</span>, False<span class="o">)</span>
-<span class="m">2018</span>-01-14 <span class="m">11</span>:37:54,355 INFO  <span class="o">[</span>ZEO.ClientStorage<span class="o">][[(</span><span class="s1">&#39;127.0.0.1&#39;</span>, <span class="m">8100</span><span class="o">)]</span> zeo client networking thread<span class="o">]</span> <span class="o">[(</span><span class="s1">&#39;127.0.0.1&#39;</span>, <span class="m">8100</span><span class="o">)]</span> Connected to storage: <span class="o">(</span><span class="s1">&#39;localhost&#39;</span>, <span class="m">8100</span><span class="o">)</span>
-<span class="m">2018</span>-01-14 <span class="m">11</span>:37:54,358 DEBUG <span class="o">[</span>txn.140663320073984<span class="o">][</span>MainThread<span class="o">]</span> new transaction
-<span class="m">2018</span>-01-14 <span class="m">11</span>:37:54,360 DEBUG <span class="o">[</span>txn.140663320073984<span class="o">][</span>MainThread<span class="o">]</span> commit
-<span class="m">2018</span>-01-14 <span class="m">11</span>:37:54,484 DEBUG <span class="o">[</span>config<span class="o">][</span>MainThread<span class="o">]</span> include /home/tflorac/Dropbox/src/PyAMS/pyams_template/src/pyams_template/configure.zcml
-<span class="m">2018</span>-01-14 <span class="m">11</span>:37:54,485 DEBUG <span class="o">[</span>config<span class="o">][</span>MainThread<span class="o">]</span> include /var/local/env/pycharm/lib/python3.5/site-packages/pyramid_zcml/configure.zcml
-...
-<span class="m">2018</span>-01-14 <span class="m">11</span>:37:54,833 DEBUG <span class="o">[</span>PyAMS <span class="o">(</span>utils<span class="o">)][</span>MainThread<span class="o">]</span> Registering utility &lt;class <span class="s1">&#39;pyams_utils.timezone.utility.TimezoneGenerationsChecker&#39;</span>&gt; named <span class="s1">&#39;PyAMS timezone&#39;</span> providing &lt;InterfaceClass pyams_utils.interfaces.site.ISiteGenerations&gt;
-<span class="m">2018</span>-01-14 <span class="m">11</span>:37:54,834 DEBUG <span class="o">[</span>PyAMS <span class="o">(</span>utils<span class="o">)][</span>MainThread<span class="o">]</span> Registering class &lt;class <span class="s1">&#39;pyams_utils.timezone.vocabulary.TimezonesVocabulary&#39;</span>&gt; as vocabulary with name <span class="s2">&quot;PyAMS timezones&quot;</span>
-<span class="m">2018</span>-01-14 <span class="m">11</span>:37:54,835 DEBUG <span class="o">[</span>PyAMS <span class="o">(</span>utils<span class="o">)][</span>MainThread<span class="o">]</span> Registering adapter &lt;class <span class="s1">&#39;pyams_utils.traversing.PathElementsAdapter&#39;</span>&gt; <span class="k">for</span> <span class="o">(</span>&lt;InterfaceClass zope.location.interfaces.IContained&gt;,<span class="o">)</span> providing &lt;InterfaceClass pyams_utils.interfaces.traversing.IPathElements&gt;
-<span class="m">2018</span>-01-14 <span class="m">11</span>:37:54,839 DEBUG <span class="o">[</span>PyAMS <span class="o">(</span>utils<span class="o">)][</span>MainThread<span class="o">]</span> Registering adapter &lt;class <span class="s1">&#39;pyams_utils.url.AbsoluteUrlTalesExtension&#39;</span>&gt; <span class="k">for</span> <span class="o">(</span>&lt;InterfaceClass zope.interface.Interface&gt;, &lt;InterfaceClass zope.interface.Interface&gt;, &lt;InterfaceClass zope.interface.Interface&gt;<span class="o">)</span> providing &lt;InterfaceClass pyams_utils.interfaces.tales.ITALESExtension&gt;
-<span class="m">2018</span>-01-14 <span class="m">11</span>:37:54,847 DEBUG <span class="o">[</span>PyAMS <span class="o">(</span>utils<span class="o">)][</span>MainThread<span class="o">]</span> Registering adapter &lt;class <span class="s1">&#39;pyams_utils.widget.decimal.DottedDecimalDataConverter&#39;</span>&gt; <span class="k">for</span> <span class="o">(</span>&lt;InterfaceClass pyams_utils.schema.IDottedDecimalField&gt;, &lt;InterfaceClass z3c.form.interfaces.IWidget&gt;<span class="o">)</span> providing &lt;InterfaceClass z3c.form.interfaces.IDataConverter&gt;
-<span class="m">2018</span>-01-14 <span class="m">11</span>:37:54,942 DEBUG <span class="o">[</span>PyAMS <span class="o">(</span>utils<span class="o">)][</span>MainThread<span class="o">]</span> Registering adapter &lt;class <span class="s1">&#39;pyams_utils.zmi.intids.IntIdsLengthAdapter&#39;</span>&gt; <span class="k">for</span> <span class="o">(</span>&lt;InterfaceClass zope.intid.interfaces.IIntIds&gt;,<span class="o">)</span> providing &lt;InterfaceClass pyams_utils.interfaces.intids.IIndexLength&gt;
-<span class="m">2018</span>-01-14 <span class="m">11</span>:37:54,943 DEBUG <span class="o">[</span>PyAMS <span class="o">(</span>pagelet<span class="o">)][</span>MainThread<span class="o">]</span> Registering pagelet view <span class="s2">&quot;properties.html&quot;</span> <span class="k">for</span> &lt;InterfaceClass zope.intid.interfaces.IIntIds&gt; <span class="o">(</span>&lt;class <span class="s1">&#39;pyams_utils.zmi.intids.IntIdsPropertiesDisplayForm&#39;</span>&gt;<span class="o">)</span>
-<span class="m">2018</span>-01-14 <span class="m">11</span>:37:54,949 DEBUG <span class="o">[</span>PyAMS <span class="o">(</span>pagelet<span class="o">)][</span>MainThread<span class="o">]</span> Registering pagelet view <span class="s2">&quot;properties.html&quot;</span> <span class="k">for</span> &lt;InterfaceClass pyams_utils.interfaces.timezone.IServerTimezone&gt; <span class="o">(</span>&lt;class <span class="s1">&#39;pyams_utils.zmi.timezone.ServerTimezonePropertiesEditForm&#39;</span>&gt;<span class="o">)</span>
-<span class="m">2018</span>-01-14 <span class="m">11</span>:37:54,980 DEBUG <span class="o">[</span>PyAMS <span class="o">(</span>utils<span class="o">)][</span>MainThread<span class="o">]</span> Registering class &lt;class <span class="s1">&#39;pyams_utils.zodb.ZEOConnectionVocabulary&#39;</span>&gt; as vocabulary with name <span class="s2">&quot;PyAMS ZEO connections&quot;</span>
-<span class="m">2018</span>-01-14 <span class="m">11</span>:37:54,981 DEBUG <span class="o">[</span>PyAMS <span class="o">(</span>utils<span class="o">)][</span>MainThread<span class="o">]</span> Registering class &lt;class <span class="s1">&#39;pyams_utils.zodb.ZODBConnectionVocabulary&#39;</span>&gt; as vocabulary with name <span class="s2">&quot;PyAMS ZODB connections&quot;</span>
-<span class="m">2018</span>-01-14 <span class="m">11</span>:37:55,015 DEBUG <span class="o">[</span>PyAMS <span class="o">(</span>pagelet<span class="o">)][</span>MainThread<span class="o">]</span> Registering pagelet view <span class="s2">&quot;add-zeo-connection.html&quot;</span> <span class="k">for</span> &lt;InterfaceClass zope.component.interfaces.ISite&gt; <span class="o">(</span>&lt;class <span class="s1">&#39;pyams_utils.zmi.zeo.ZEOConnectionAddForm&#39;</span>&gt;<span class="o">)</span>
-<span class="m">2018</span>-01-14 <span class="m">11</span>:37:55,016 DEBUG <span class="o">[</span>PyAMS <span class="o">(</span>utils<span class="o">)][</span>MainThread<span class="o">]</span> Registering adapter &lt;class <span class="s1">&#39;pyams_utils.zmi.zeo.ZEOConnectionNameAdapter&#39;</span>&gt; <span class="k">for</span> <span class="o">(</span>&lt;InterfaceClass pyams_utils.interfaces.zeo.IZEOConnection&gt;, &lt;InterfaceClass pyams_zmi.layer.IAdminLayer&gt;<span class="o">)</span> providing &lt;InterfaceClass pyams_skin.interfaces.container.ITableElementName&gt;
-<span class="m">2018</span>-01-14 <span class="m">11</span>:37:55,017 DEBUG <span class="o">[</span>PyAMS <span class="o">(</span>pagelet<span class="o">)][</span>MainThread<span class="o">]</span> Registering pagelet view <span class="s2">&quot;properties.html&quot;</span> <span class="k">for</span> &lt;InterfaceClass pyams_utils.interfaces.zeo.IZEOConnection&gt; <span class="o">(</span>&lt;class <span class="s1">&#39;pyams_utils.zmi.zeo.ZEOConnectionPropertiesEditForm&#39;</span>&gt;<span class="o">)</span>
-...
-<span class="m">2018</span>-01-14 <span class="m">11</span>:41:13,214 DEBUG <span class="o">[</span>PyAMS <span class="o">(</span>utils<span class="o">)][</span>MainThread<span class="o">]</span> Registering adapter &lt;class <span class="s1">&#39;pyams_default_theme.skin.ResourcesAdapter&#39;</span>&gt; <span class="k">for</span> <span class="o">(</span>&lt;InterfaceClass zope.interface.Interface&gt;, &lt;InterfaceClass pyams_default_theme.layer.IPyAMSDefaultLayer&gt;, &lt;InterfaceClass zope.interface.Interface&gt;<span class="o">)</span> providing &lt;InterfaceClass pyams_skin.interfaces.resources.IResources&gt;
-<span class="m">2018</span>-01-14 <span class="m">11</span>:43:36,665 INFO  <span class="o">[</span>ZEO.ClientStorage<span class="o">][</span>MainThread<span class="o">]</span> <span class="o">[(</span><span class="s1">&#39;127.0.0.1&#39;</span>, <span class="m">8100</span><span class="o">)]</span> ClientStorage <span class="o">(</span><span class="nv">pid</span><span class="o">=</span><span class="m">29335</span><span class="o">)</span> created RW/normal <span class="k">for</span> storage: <span class="s1">&#39;pyams&#39;</span>
-<span class="m">2018</span>-01-14 <span class="m">11</span>:43:36,665 INFO  <span class="o">[</span>ZEO.cache<span class="o">][</span>MainThread<span class="o">]</span> created temporary cache file <span class="m">9</span>
-<span class="m">2018</span>-01-14 <span class="m">11</span>:43:36,673 DEBUG <span class="o">[</span>asyncio<span class="o">][[(</span><span class="s1">&#39;127.0.0.1&#39;</span>, <span class="m">8100</span><span class="o">)]</span> zeo client networking thread<span class="o">]</span> Using selector: EpollSelector
-<span class="m">2018</span>-01-14 <span class="m">11</span>:43:36,674 DEBUG <span class="o">[</span>ZEO.ClientStorage.check_blob_cache<span class="o">][[(</span><span class="s1">&#39;127.0.0.1&#39;</span>, <span class="m">8100</span><span class="o">)]</span> zeo client check blob size thread<span class="o">]</span> <span class="m">140712483907328</span> Checking blob cache size. <span class="o">(</span>target: <span class="m">966367642</span><span class="o">)</span>
-<span class="m">2018</span>-01-14 <span class="m">11</span>:43:36,674 DEBUG <span class="o">[</span>ZEO.asyncio.client<span class="o">][[(</span><span class="s1">&#39;127.0.0.1&#39;</span>, <span class="m">8100</span><span class="o">)]</span> zeo client networking thread<span class="o">]</span> disconnected &lt;ZEO.asyncio.client.Client object at 0x7ffa54058860&gt; None
-<span class="m">2018</span>-01-14 <span class="m">11</span>:43:36,675 DEBUG <span class="o">[</span>ZEO.ClientStorage.check_blob_cache<span class="o">][[(</span><span class="s1">&#39;127.0.0.1&#39;</span>, <span class="m">8100</span><span class="o">)]</span> zeo client check blob size thread<span class="o">]</span> <span class="m">140712483907328</span>   blob cache size: <span class="m">0</span>
-<span class="m">2018</span>-01-14 <span class="m">11</span>:43:36,675 DEBUG <span class="o">[</span>ZEO.asyncio.client<span class="o">][[(</span><span class="s1">&#39;127.0.0.1&#39;</span>, <span class="m">8100</span><span class="o">)]</span> zeo client networking thread<span class="o">]</span> try_connecting
-<span class="m">2018</span>-01-14 <span class="m">11</span>:43:36,675 DEBUG <span class="o">[</span>ZEO.ClientStorage.check_blob_cache<span class="o">][[(</span><span class="s1">&#39;127.0.0.1&#39;</span>, <span class="m">8100</span><span class="o">)]</span> zeo client check blob size thread<span class="o">]</span> <span class="m">140712483907328</span>   --&gt;
-<span class="m">2018</span>-01-14 <span class="m">11</span>:43:36,677 INFO  <span class="o">[</span>ZEO.asyncio.base<span class="o">][[(</span><span class="s1">&#39;127.0.0.1&#39;</span>, <span class="m">8100</span><span class="o">)]</span> zeo client networking thread<span class="o">]</span> Connected Protocol<span class="o">((</span><span class="s1">&#39;127.0.0.1&#39;</span>, <span class="m">8100</span><span class="o">)</span>, <span class="s1">&#39;pyams&#39;</span>, False<span class="o">)</span>
-<span class="m">2018</span>-01-14 <span class="m">11</span>:43:36,679 INFO  <span class="o">[</span>ZEO.ClientStorage<span class="o">][[(</span><span class="s1">&#39;127.0.0.1&#39;</span>, <span class="m">8100</span><span class="o">)]</span> zeo client networking thread<span class="o">]</span> <span class="o">[(</span><span class="s1">&#39;127.0.0.1&#39;</span>, <span class="m">8100</span><span class="o">)]</span> Connected to storage: <span class="o">(</span><span class="s1">&#39;localhost&#39;</span>, <span class="m">8100</span><span class="o">)</span>
-<span class="m">2018</span>-01-14 <span class="m">11</span>:43:36,682 DEBUG <span class="o">[</span>txn.140713340237568<span class="o">][</span>MainThread<span class="o">]</span> new transaction
-<span class="m">2018</span>-01-14 <span class="m">11</span>:43:36,683 DEBUG <span class="o">[</span>txn.140713340237568<span class="o">][</span>MainThread<span class="o">]</span> commit
-<span class="m">2018</span>-01-14 <span class="m">11</span>:43:36,690 INFO  <span class="o">[</span>PyAMS <span class="o">(</span>scheduler<span class="o">][</span>MainThread<span class="o">]</span> Starting tasks scheduler &lt;SchedulerProcess<span class="o">(</span>SchedulerProcess-1, initial<span class="o">)</span>&gt;...
-<span class="m">2018</span>-01-14 <span class="m">11</span>:43:36,698 INFO  <span class="o">[</span>PyAMS <span class="o">(</span>scheduler<span class="o">][</span>MainThread<span class="o">]</span> Started tasks scheduler with PID <span class="m">29361</span>.
-<span class="m">2018</span>-01-14 <span class="m">11</span>:43:36,701 INFO  <span class="o">[</span>apscheduler.scheduler<span class="o">][</span>MainThread<span class="o">]</span> Scheduler started
-<span class="m">2018</span>-01-14 <span class="m">11</span>:43:36,702 DEBUG <span class="o">[</span>apscheduler.scheduler<span class="o">][</span>APScheduler<span class="o">]</span> Looking <span class="k">for</span> <span class="nb">jobs</span> to run
-<span class="m">2018</span>-01-14 <span class="m">11</span>:43:36,704 DEBUG <span class="o">[</span>apscheduler.scheduler<span class="o">][</span>APScheduler<span class="o">]</span> No jobs<span class="p">;</span> waiting <span class="k">until</span> a job is added
-<span class="m">2018</span>-01-14 <span class="m">11</span>:43:36,719 INFO  <span class="o">[</span>ZEO.ClientStorage<span class="o">][</span>MainThread<span class="o">]</span> <span class="o">[(</span><span class="s1">&#39;127.0.0.1&#39;</span>, <span class="m">8100</span><span class="o">)]</span> ClientStorage <span class="o">(</span><span class="nv">pid</span><span class="o">=</span><span class="m">29335</span><span class="o">)</span> created RW/normal <span class="k">for</span> storage: <span class="s1">&#39;pyams&#39;</span>
-<span class="m">2018</span>-01-14 <span class="m">11</span>:43:36,720 INFO  <span class="o">[</span>ZEO.cache<span class="o">][</span>MainThread<span class="o">]</span> created temporary cache file <span class="m">15</span>
-<span class="m">2018</span>-01-14 <span class="m">11</span>:43:36,724 DEBUG <span class="o">[</span>asyncio<span class="o">][[(</span><span class="s1">&#39;127.0.0.1&#39;</span>, <span class="m">8100</span><span class="o">)]</span> zeo client networking thread<span class="o">]</span> Using selector: EpollSelector
-<span class="m">2018</span>-01-14 <span class="m">11</span>:43:36,725 DEBUG <span class="o">[</span>ZEO.asyncio.client<span class="o">][[(</span><span class="s1">&#39;127.0.0.1&#39;</span>, <span class="m">8100</span><span class="o">)]</span> zeo client networking thread<span class="o">]</span> disconnected &lt;ZEO.asyncio.client.Client object at 0x7ffa557e8b00&gt; None
-<span class="m">2018</span>-01-14 <span class="m">11</span>:43:36,726 DEBUG <span class="o">[</span>ZEO.asyncio.client<span class="o">][[(</span><span class="s1">&#39;127.0.0.1&#39;</span>, <span class="m">8100</span><span class="o">)]</span> zeo client networking thread<span class="o">]</span> try_connecting
-<span class="m">2018</span>-01-14 <span class="m">11</span>:43:36,727 DEBUG <span class="o">[</span>ZEO.ClientStorage.check_blob_cache<span class="o">][[(</span><span class="s1">&#39;127.0.0.1&#39;</span>, <span class="m">8100</span><span class="o">)]</span> zeo client check blob size thread<span class="o">]</span> <span class="m">140712483907328</span> Checking blob cache size. <span class="o">(</span>target: <span class="m">966367642</span><span class="o">)</span>
-<span class="m">2018</span>-01-14 <span class="m">11</span>:43:36,728 INFO  <span class="o">[</span>ZEO.asyncio.base<span class="o">][[(</span><span class="s1">&#39;127.0.0.1&#39;</span>, <span class="m">8100</span><span class="o">)]</span> zeo client networking thread<span class="o">]</span> Connected Protocol<span class="o">((</span><span class="s1">&#39;127.0.0.1&#39;</span>, <span class="m">8100</span><span class="o">)</span>, <span class="s1">&#39;pyams&#39;</span>, False<span class="o">)</span>
-<span class="m">2018</span>-01-14 <span class="m">11</span>:43:36,729 DEBUG <span class="o">[</span>ZEO.ClientStorage.check_blob_cache<span class="o">][[(</span><span class="s1">&#39;127.0.0.1&#39;</span>, <span class="m">8100</span><span class="o">)]</span> zeo client check blob size thread<span class="o">]</span> <span class="m">140712483907328</span>   blob cache size: <span class="m">0</span>
-<span class="m">2018</span>-01-14 <span class="m">11</span>:43:36,729 DEBUG <span class="o">[</span>ZEO.ClientStorage.check_blob_cache<span class="o">][[(</span><span class="s1">&#39;127.0.0.1&#39;</span>, <span class="m">8100</span><span class="o">)]</span> zeo client check blob size thread<span class="o">]</span> <span class="m">140712483907328</span>   --&gt;
-<span class="m">2018</span>-01-14 <span class="m">11</span>:43:36,732 INFO  <span class="o">[</span>ZEO.ClientStorage<span class="o">][[(</span><span class="s1">&#39;127.0.0.1&#39;</span>, <span class="m">8100</span><span class="o">)]</span> zeo client networking thread<span class="o">]</span> <span class="o">[(</span><span class="s1">&#39;127.0.0.1&#39;</span>, <span class="m">8100</span><span class="o">)]</span> Connected to storage: <span class="o">(</span><span class="s1">&#39;localhost&#39;</span>, <span class="m">8100</span><span class="o">)</span>
-<span class="m">2018</span>-01-14 <span class="m">11</span>:43:36,735 DEBUG <span class="o">[</span>txn.140713340237568<span class="o">][</span>MainThread<span class="o">]</span> new transaction
-<span class="m">2018</span>-01-14 <span class="m">11</span>:43:36,736 DEBUG <span class="o">[</span>txn.140713340237568<span class="o">][</span>MainThread<span class="o">]</span> commit
-<span class="m">2018</span>-01-14 <span class="m">11</span>:43:36,743 INFO  <span class="o">[</span>PyAMS <span class="o">(</span>media<span class="o">)][</span>MainThread<span class="o">]</span> Starting medias converter &lt;MediaConversionProcess<span class="o">(</span>MediaConversionProcess-2, initial<span class="o">)</span>&gt;...
-<span class="m">2018</span>-01-14 <span class="m">11</span>:43:36,751 INFO  <span class="o">[</span>PyAMS <span class="o">(</span>media<span class="o">)][</span>MainThread<span class="o">]</span> Started medias converter with PID <span class="m">29367</span>.
-Starting server in PID <span class="m">29335</span>.
-Serving on http://0.0.0.0:6543
-</pre></div>
-</div>
-<p>From this point, you can launch a browser and open URL <em>http://127.0.0.1:6543/admin</em> to get access to PyAMS
-management interface; default login is “admin/admin”, that you may change as soon as possible (see
-<a class="reference internal" href="pyams_security.html#pyams-security"><span class="std std-ref">PyAMS security</span></a>)!!.</p>
-</div>
-</div>
-
-
-          </div>
-        </div>
-      </div>
-      <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
-        <div class="sphinxsidebarwrapper">
-  <h3><a href="index.html">Table Of Contents</a></h3>
-  <ul>
-<li><a class="reference internal" href="#">Installing PyAMS</a><ul>
-<li><a class="reference internal" href="#creating-initial-buildout">Creating initial buildout</a></li>
-<li><a class="reference internal" href="#environment-settings">Environment settings</a></li>
-<li><a class="reference internal" href="#initializing-the-database">Initializing the database</a></li>
-<li><a class="reference internal" href="#initializing-elasticsearch-index">Initializing Elasticsearch index</a></li>
-<li><a class="reference internal" href="#nltk-initialization">NLTK initialization</a></li>
-<li><a class="reference internal" href="#starting-the-application">Starting the application</a></li>
-</ul>
-</li>
-</ul>
-
-  <h4>Previous topic</h4>
-  <p class="topless"><a href="zodb.html"
-                        title="previous chapter">Creating ZODB</a></p>
-  <h4>Next topic</h4>
-  <p class="topless"><a href="zca.html"
-                        title="next chapter">Managing ZCA with PyAMS</a></p>
-<div id="searchbox" style="display: none" role="search">
-  <h3>Quick search</h3>
-    <form class="search" action="search.html" method="get">
-      <div><input type="text" name="q" /></div>
-      <div><input type="submit" value="Go" /></div>
-      <input type="hidden" name="check_keywords" value="yes" />
-      <input type="hidden" name="area" value="default" />
-    </form>
-</div>
-<script type="text/javascript">$('#searchbox').show(0);</script>
-        </div>
-      </div>
-      <div class="clearer"></div>
-    </div>
-    <div class="related" role="navigation" aria-label="related navigation">
-      <h3>Navigation</h3>
-      <ul>
-        <li class="right" style="margin-right: 10px">
-          <a href="genindex.html" title="General Index"
-             >index</a></li>
-        <li class="right" >
-          <a href="py-modindex.html" title="Python Module Index"
-             >modules</a> |</li>
-        <li class="right" >
-          <a href="zca.html" title="Managing ZCA with PyAMS"
-             >next</a> |</li>
-        <li class="right" >
-          <a href="zodb.html" title="Creating ZODB"
-             >previous</a> |</li>
-        <li class="nav-item nav-item-0"><a href="index.html">PyAMS User Guide 0.1.0 documentation</a> &#187;</li> 
-      </ul>
-    </div>
-    <div class="footer" role="contentinfo">
-        &#169; Copyright 2017, Thierry Florac.
-      Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.5.
-    </div>
-  </body>
-</html>
\ No newline at end of file