Repository: SciTools-incubator/image-meta-tag (language: python)

Issue:
collections.Iterable removed in Python vn3.10
Users running Python 3.10 report a failure due to collections.Iterable not existing.
The problem is easily reproduced in the test.py script running python3.10, so this issue will cover all fixes to get this working.


Discussion / hints:

Fix patch:
diff --git a/ImageMetaTag/__init__.py b/ImageMetaTag/__init__.py
index 7986bac..7659fc6 100644
--- a/ImageMetaTag/__init__.py
+++ b/ImageMetaTag/__init__.py
@@ -25,7 +25,7 @@
 
 # Set constants/properties of ImageMetaTag (before any of it is imported)
 # see release_process for details on incrementing the version
-__version__ = '0.7.12'
+__version__ = '0.7.13'
 __documentation__ = 'http://scitools-incubator.github.io/image-meta-tag/build/html/'
 # list fo file formats which are valid for saving metadata to:
 META_IMG_FORMATS = ['png']
diff --git a/ImageMetaTag/img_dict.py b/ImageMetaTag/img_dict.py
index 4b207e5..028eae8 100644
--- a/ImageMetaTag/img_dict.py
+++ b/ImageMetaTag/img_dict.py
@@ -18,7 +18,12 @@
 # required imports
 import os
 import re
+
 import collections
+try:
+    from collections import Iterable
+except:
+    from collections.abc import Iterable
 import inspect
 import copy
 from PIL import Image
@@ -314,7 +319,7 @@ def dict_depths(self, in_dict, depth=0):
     def flatten_lists(self, in_list):
         'Recursively flattens a list of lists:'
         for list_element in in_list:
-            if isinstance(list_element, collections.Iterable) and \
+            if isinstance(list_element, Iterable) and \
                not isinstance(list_element, str):
                 for sub_list in self.flatten_lists(list_element):
                     yield sub_list
@@ -878,8 +883,7 @@ def dict_split(in_dict, n_split=None, size_split=None, extra_opts=None):
 
 
 def simple_dict_filter(simple_dict, tests, raise_key_mismatch=False):
-    '''
-Tests the contents of a simple, un-heirachical dict (properties an image)
+    '''Tests the contents of a simple, un-heirachical dict (properties an image)
 against a set of tests.
 
 An example set of tests:
@@ -915,8 +919,7 @@ def simple_dict_filter(simple_dict, tests, raise_key_mismatch=False):
  * The third indicates whether the input dict is the first element of a \
    list grouped elements (is 'Histogram' in this \
    ['Histogram', 'Line plots'] list).
-
-    '''
+'''
     # this is set to False if the input dict fails the simple criteria:
     passes_tests = True
     # this stores all of the tests:
diff --git a/ImageMetaTag/javascript/imt_dropdown.js b/ImageMetaTag/javascript/imt_dropdown.js
index a93945b..d77bccd 100644
--- a/ImageMetaTag/javascript/imt_dropdown.js
+++ b/ImageMetaTag/javascript/imt_dropdown.js
@@ -1,4 +1,4 @@
-// ImageMetaTag dropdown menu scripting - vn0.7.12
+// ImageMetaTag dropdown menu scripting - vn0.7.13
 // ImageMetaTag is a python package built around a wrapper for savefig in
 // matplotlib, which adds metadata tags to supported image file formats.
 // See https://github.com/SciTools-incubator/image-meta-tag for details.
diff --git a/docs/build/doctrees/ImageDict.doctree b/docs/build/doctrees/ImageDict.doctree
index 1cf0e03..f6aa38e 100644
Binary files a/docs/build/doctrees/ImageDict.doctree and b/docs/build/doctrees/ImageDict.doctree differ
diff --git a/docs/build/doctrees/db.doctree b/docs/build/doctrees/db.doctree
index ae4016c..f1939bc 100644
Binary files a/docs/build/doctrees/db.doctree and b/docs/build/doctrees/db.doctree differ
diff --git a/docs/build/doctrees/environment.pickle b/docs/build/doctrees/environment.pickle
index 6a2d415..32c519d 100644
Binary files a/docs/build/doctrees/environment.pickle and b/docs/build/doctrees/environment.pickle differ
diff --git a/docs/build/doctrees/index.doctree b/docs/build/doctrees/index.doctree
index fb289c1..150a091 100644
Binary files a/docs/build/doctrees/index.doctree and b/docs/build/doctrees/index.doctree differ
diff --git a/docs/build/doctrees/savefig.doctree b/docs/build/doctrees/savefig.doctree
index c9784e0..036815d 100644
Binary files a/docs/build/doctrees/savefig.doctree and b/docs/build/doctrees/savefig.doctree differ
diff --git a/docs/build/doctrees/scripts.doctree b/docs/build/doctrees/scripts.doctree
index 9914c50..987ff50 100644
Binary files a/docs/build/doctrees/scripts.doctree and b/docs/build/doctrees/scripts.doctree differ
diff --git a/docs/build/doctrees/webpage.doctree b/docs/build/doctrees/webpage.doctree
index 0da0a25..b774567 100644
Binary files a/docs/build/doctrees/webpage.doctree and b/docs/build/doctrees/webpage.doctree differ
diff --git a/docs/build/html/.buildinfo b/docs/build/html/.buildinfo
index 6881986..909e6f7 100644
--- a/docs/build/html/.buildinfo
+++ b/docs/build/html/.buildinfo
@@ -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: 0d67c4a91743b3b1c0df7fa345e9705a
+config: e162149e146ce4356b9946e88f30be74
 tags: 645f666f9bcd5a90fca523b33c5a78b7
diff --git a/docs/build/html/ImageDict.html b/docs/build/html/ImageDict.html
index 95fa7d5..c9876ad 100644
--- a/docs/build/html/ImageDict.html
+++ b/docs/build/html/ImageDict.html
@@ -6,7 +6,7 @@
     <meta charset="utf-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
 
-    <title>ImageMetaTag.ImageDict &#8212; ImageMetaTag 0.7.12 documentation</title>
+    <title>ImageMetaTag.ImageDict &#8212; ImageMetaTag 0.7.13 documentation</title>
     <link rel="stylesheet" type="text/css" href="_static/pygments.css" />
     <link rel="stylesheet" type="text/css" href="_static/sphinxdoc.css" />
     <script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script>
@@ -14,6 +14,7 @@
     <script src="_static/underscore.js"></script>
     <script src="_static/_sphinx_javascript_frameworks_compat.js"></script>
     <script src="_static/doctools.js"></script>
+    <script src="_static/sphinx_highlight.js"></script>
     <link rel="index" title="Index" href="genindex.html" />
     <link rel="search" title="Search" href="search.html" />
     <link rel="next" title="ImageMetaTag.webpage" href="webpage.html" />
@@ -34,7 +35,7 @@ <h3>Navigation</h3>
         <li class="right" >
           <a href="db.html" title="ImageMetaTag.db"
              accesskey="P">previous</a> |</li>
-        <li class="nav-item nav-item-0"><a href="index.html">ImageMetaTag 0.7.12 documentation</a> &#187;</li>
+        <li class="nav-item nav-item-0"><a href="index.html">ImageMetaTag 0.7.13 documentation</a> &#187;</li>
         <li class="nav-item nav-item-this"><a href="">ImageMetaTag.ImageDict</a></li> 
       </ul>
     </div>  
@@ -369,8 +370,38 @@ <h2>Functions useful in preparing ImageDicts<a class="headerlink" href="#functio
     <h3><a href="index.html">Table of Contents</a></h3>
     <ul>
 <li><a class="reference internal" href="#">ImageMetaTag.ImageDict</a><ul>
-<li><a class="reference internal" href="#the-imagedict-class">The ImageDict Class</a></li>
-<li><a class="reference internal" href="#functions-useful-in-preparing-imagedicts">Functions useful in preparing ImageDicts</a></li>
+<li><a class="reference internal" href="#the-imagedict-class">The ImageDict Class</a><ul>
+<li><a class="reference internal" href="#ImageMetaTag.ImageDict"><code class="docutils literal notranslate"><span class="pre">ImageDict</span></code></a><ul>
+<li><a class="reference internal" href="#ImageMetaTag.ImageDict.append"><code class="docutils literal notranslate"><span class="pre">ImageDict.append()</span></code></a></li>
+<li><a class="reference internal" href="#ImageMetaTag.ImageDict.copy_except_dict_and_keys"><code class="docutils literal notranslate"><span class="pre">ImageDict.copy_except_dict_and_keys()</span></code></a></li>
+<li><a class="reference internal" href="#ImageMetaTag.ImageDict.dict_depth"><code class="docutils literal notranslate"><span class="pre">ImageDict.dict_depth()</span></code></a></li>
+<li><a class="reference internal" href="#ImageMetaTag.ImageDict.dict_depths"><code class="docutils literal notranslate"><span class="pre">ImageDict.dict_depths()</span></code></a></li>
+<li><a class="reference internal" href="#ImageMetaTag.ImageDict.dict_index_array"><code class="docutils literal notranslate"><span class="pre">ImageDict.dict_index_array()</span></code></a></li>
+<li><a class="reference internal" href="#ImageMetaTag.ImageDict.dict_print"><code class="docutils literal notranslate"><span class="pre">ImageDict.dict_print()</span></code></a></li>
+<li><a class="reference internal" href="#ImageMetaTag.ImageDict.dict_prune"><code class="docutils literal notranslate"><span class="pre">ImageDict.dict_prune()</span></code></a></li>
+<li><a class="reference internal" href="#ImageMetaTag.ImageDict.dict_remove"><code class="docutils literal notranslate"><span class="pre">ImageDict.dict_remove()</span></code></a></li>
+<li><a class="reference internal" href="#ImageMetaTag.ImageDict.dict_union"><code class="docutils literal notranslate"><span class="pre">ImageDict.dict_union()</span></code></a></li>
+<li><a class="reference internal" href="#ImageMetaTag.ImageDict.flatten_lists"><code class="docutils literal notranslate"><span class="pre">ImageDict.flatten_lists()</span></code></a></li>
+<li><a class="reference internal" href="#ImageMetaTag.ImageDict.key_at_depth"><code class="docutils literal notranslate"><span class="pre">ImageDict.key_at_depth()</span></code></a></li>
+<li><a class="reference internal" href="#ImageMetaTag.ImageDict.keys_by_depth"><code class="docutils literal notranslate"><span class="pre">ImageDict.keys_by_depth()</span></code></a></li>
+<li><a class="reference internal" href="#ImageMetaTag.ImageDict.list_keys_by_depth"><code class="docutils literal notranslate"><span class="pre">ImageDict.list_keys_by_depth()</span></code></a></li>
+<li><a class="reference internal" href="#ImageMetaTag.ImageDict.mergedicts"><code class="docutils literal notranslate"><span class="pre">ImageDict.mergedicts()</span></code></a></li>
+<li><a class="reference internal" href="#ImageMetaTag.ImageDict.remove"><code class="docutils literal notranslate"><span class="pre">ImageDict.remove()</span></code></a></li>
+<li><a class="reference internal" href="#ImageMetaTag.ImageDict.return_from_list"><code class="docutils literal notranslate"><span class="pre">ImageDict.return_from_list()</span></code></a></li>
+<li><a class="reference internal" href="#ImageMetaTag.ImageDict.return_key_inds"><code class="docutils literal notranslate"><span class="pre">ImageDict.return_key_inds()</span></code></a></li>
+<li><a class="reference internal" href="#ImageMetaTag.ImageDict.sort_keys"><code class="docutils literal notranslate"><span class="pre">ImageDict.sort_keys()</span></code></a></li>
+</ul>
+</li>
+</ul>
+</li>
+<li><a class="reference internal" href="#functions-useful-in-preparing-imagedicts">Functions useful in preparing ImageDicts</a><ul>
+<li><a class="reference internal" href="#ImageMetaTag.readmeta_from_image"><code class="docutils literal notranslate"><span class="pre">readmeta_from_image()</span></code></a></li>
+<li><a class="reference internal" href="#ImageMetaTag.dict_heirachy_from_list"><code class="docutils literal notranslate"><span class="pre">dict_heirachy_from_list()</span></code></a></li>
+<li><a class="reference internal" href="#ImageMetaTag.dict_split"><code class="docutils literal notranslate"><span class="pre">dict_split()</span></code></a></li>
+<li><a class="reference internal" href="#ImageMetaTag.simple_dict_filter"><code class="docutils literal notranslate"><span class="pre">simple_dict_filter()</span></code></a></li>
+<li><a class="reference internal" href="#ImageMetaTag.check_for_required_keys"><code class="docutils literal notranslate"><span class="pre">check_for_required_keys()</span></code></a></li>
+</ul>
+</li>
 </ul>
 </li>
 </ul>
@@ -422,13 +453,13 @@ <h3>Navigation</h3>
         <li class="right" >
           <a href="db.html" title="ImageMetaTag.db"
              >previous</a> |</li>
-        <li class="nav-item nav-item-0"><a href="index.html">ImageMetaTag 0.7.12 documentation</a> &#187;</li>
+        <li class="nav-item nav-item-0"><a href="index.html">ImageMetaTag 0.7.13 documentation</a> &#187;</li>
         <li class="nav-item nav-item-this"><a href="">ImageMetaTag.ImageDict</a></li> 
       </ul>
     </div>
     <div class="footer" role="contentinfo">
         &#169; Copyright 2015-2023, British Crown Copyright.
-      Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 5.0.2.
+      Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 5.3.0.
     </div>
   </body>
 </html>
\ No newline at end of file
diff --git a/docs/build/html/_modules/ImageMetaTag/db.html b/docs/build/html/_modules/ImageMetaTag/db.html
index 21f5e1c..cd800ed 100644
--- a/docs/build/html/_modules/ImageMetaTag/db.html
+++ b/docs/build/html/_modules/ImageMetaTag/db.html
@@ -5,7 +5,7 @@
   <head>
     <meta charset="utf-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <title>ImageMetaTag.db &#8212; ImageMetaTag 0.7.12 documentation</title>
+    <title>ImageMetaTag.db &#8212; ImageMetaTag 0.7.13 documentation</title>
     <link rel="stylesheet" type="text/css" href="../../_static/pygments.css" />
     <link rel="stylesheet" type="text/css" href="../../_static/sphinxdoc.css" />
     <script data-url_root="../../" id="documentation_options" src="../../_static/documentation_options.js"></script>
@@ -13,6 +13,7 @@
     <script src="../../_static/underscore.js"></script>
     <script src="../../_static/_sphinx_javascript_frameworks_compat.js"></script>
     <script src="../../_static/doctools.js"></script>
+    <script src="../../_static/sphinx_highlight.js"></script>
     <link rel="index" title="Index" href="../../genindex.html" />
     <link rel="search" title="Search" href="../../search.html" /> 
   </head><body>
@@ -25,7 +26,7 @@ <h3>Navigation</h3>
         <li class="right" >
           <a href="../../py-modindex.html" title="Python Module Index"
              >modules</a> |</li>
-        <li class="nav-item nav-item-0"><a href="../../index.html">ImageMetaTag 0.7.12 documentation</a> &#187;</li>
+        <li class="nav-item nav-item-0"><a href="../../index.html">ImageMetaTag 0.7.13 documentation</a> &#187;</li>
           <li class="nav-item nav-item-1"><a href="../index.html" accesskey="U">Module code</a> &#187;</li>
         <li class="nav-item nav-item-this"><a href="">ImageMetaTag.db</a></li> 
       </ul>
@@ -1055,14 +1056,14 @@ <h3>Navigation</h3>
         <li class="right" >
           <a href="../../py-modindex.html" title="Python Module Index"
              >modules</a> |</li>
-        <li class="nav-item nav-item-0"><a href="../../index.html">ImageMetaTag 0.7.12 documentation</a> &#187;</li>
+        <li class="nav-item nav-item-0"><a href="../../index.html">ImageMetaTag 0.7.13 documentation</a> &#187;</li>
           <li class="nav-item nav-item-1"><a href="../index.html" >Module code</a> &#187;</li>
         <li class="nav-item nav-item-this"><a href="">ImageMetaTag.db</a></li> 
       </ul>
     </div>
     <div class="footer" role="contentinfo">
         &#169; Copyright 2015-2023, British Crown Copyright.
-      Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 5.0.2.
+      Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 5.3.0.
     </div>
   </body>
 </html>
\ No newline at end of file
diff --git a/docs/build/html/_modules/ImageMetaTag/img_dict.html b/docs/build/html/_modules/ImageMetaTag/img_dict.html
index fb1a141..8207f6a 100644
--- a/docs/build/html/_modules/ImageMetaTag/img_dict.html
+++ b/docs/build/html/_modules/ImageMetaTag/img_dict.html
@@ -5,7 +5,7 @@
   <head>
     <meta charset="utf-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <title>ImageMetaTag.img_dict &#8212; ImageMetaTag 0.7.12 documentation</title>
+    <title>ImageMetaTag.img_dict &#8212; ImageMetaTag 0.7.13 documentation</title>
     <link rel="stylesheet" type="text/css" href="../../_static/pygments.css" />
     <link rel="stylesheet" type="text/css" href="../../_static/sphinxdoc.css" />
     <script data-url_root="../../" id="documentation_options" src="../../_static/documentation_options.js"></script>
@@ -13,6 +13,7 @@
     <script src="../../_static/underscore.js"></script>
     <script src="../../_static/_sphinx_javascript_frameworks_compat.js"></script>
     <script src="../../_static/doctools.js"></script>
+    <script src="../../_static/sphinx_highlight.js"></script>
     <link rel="index" title="Index" href="../../genindex.html" />
     <link rel="search" title="Search" href="../../search.html" /> 
   </head><body>
@@ -25,7 +26,7 @@ <h3>Navigation</h3>
         <li class="right" >
           <a href="../../py-modindex.html" title="Python Module Index"
              >modules</a> |</li>
-        <li class="nav-item nav-item-0"><a href="../../index.html">ImageMetaTag 0.7.12 documentation</a> &#187;</li>
+        <li class="nav-item nav-item-0"><a href="../../index.html">ImageMetaTag 0.7.13 documentation</a> &#187;</li>
           <li class="nav-item nav-item-1"><a href="../index.html" accesskey="U">Module code</a> &#187;</li>
         <li class="nav-item nav-item-this"><a href="">ImageMetaTag.img_dict</a></li> 
       </ul>
@@ -57,7 +58,12 @@ <h1>Source code for ImageMetaTag.img_dict</h1><div class="highlight"><pre>
 <span class="c1"># required imports</span>
 <span class="kn">import</span> <span class="nn">os</span>
 <span class="kn">import</span> <span class="nn">re</span>
+
 <span class="kn">import</span> <span class="nn">collections</span>
+<span class="k">try</span><span class="p">:</span>
+    <span class="kn">from</span> <span class="nn">collections</span> <span class="kn">import</span> <span class="n">Iterable</span>
+<span class="k">except</span><span class="p">:</span>
+    <span class="kn">from</span> <span class="nn">collections.abc</span> <span class="kn">import</span> <span class="n">Iterable</span>
 <span class="kn">import</span> <span class="nn">inspect</span>
 <span class="kn">import</span> <span class="nn">copy</span>
 <span class="kn">from</span> <span class="nn">PIL</span> <span class="kn">import</span> <span class="n">Image</span>
@@ -353,7 +359,7 @@ <h1>Source code for ImageMetaTag.img_dict</h1><div class="highlight"><pre>
 <div class="viewcode-block" id="ImageDict.flatten_lists"><a class="viewcode-back" href="../../ImageDict.html#ImageMetaTag.ImageDict.flatten_lists">[docs]</a>    <span class="k">def</span> <span class="nf">flatten_lists</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">in_list</span><span class="p">):</span>
         <span class="s1">&#39;Recursively flattens a list of lists:&#39;</span>
         <span class="k">for</span> <span class="n">list_element</span> <span class="ow">in</span> <span class="n">in_list</span><span class="p">:</span>
-            <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">list_element</span><span class="p">,</span> <span class="n">collections</span><span class="o">.</span><span class="n">Iterable</span><span class="p">)</span> <span class="ow">and</span> \
+            <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">list_element</span><span class="p">,</span> <span class="n">Iterable</span><span class="p">)</span> <span class="ow">and</span> \
                <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">list_element</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span>
                 <span class="k">for</span> <span class="n">sub_list</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">flatten_lists</span><span class="p">(</span><span class="n">list_element</span><span class="p">):</span>
                     <span class="k">yield</span> <span class="n">sub_list</span>
@@ -917,8 +923,7 @@ <h1>Source code for ImageMetaTag.img_dict</h1><div class="highlight"><pre>
 
 
 <div class="viewcode-block" id="simple_dict_filter"><a class="viewcode-back" href="../../ImageDict.html#ImageMetaTag.simple_dict_filter">[docs]</a><span class="k">def</span> <span class="nf">simple_dict_filter</span><span class="p">(</span><span class="n">simple_dict</span><span class="p">,</span> <span class="n">tests</span><span class="p">,</span> <span class="n">raise_key_mismatch</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
-    <span class="sd">&#39;&#39;&#39;</span>
-<span class="sd">Tests the contents of a simple, un-heirachical dict (properties an image)</span>
+    <span class="sd">&#39;&#39;&#39;Tests the contents of a simple, un-heirachical dict (properties an image)</span>
 <span class="sd">against a set of tests.</span>
 
 <span class="sd">An example set of tests:</span>
@@ -954,8 +959,7 @@ <h1>Source code for ImageMetaTag.img_dict</h1><div class="highlight"><pre>
 <span class="sd"> * The third indicates whether the input dict is the first element of a \</span>
 <span class="sd">   list grouped elements (is &#39;Histogram&#39; in this \</span>
 <span class="sd">   [&#39;Histogram&#39;, &#39;Line plots&#39;] list).</span>
-
-<span class="sd">    &#39;&#39;&#39;</span>
+<span class="sd">&#39;&#39;&#39;</span>
     <span class="c1"># this is set to False if the input dict fails the simple criteria:</span>
     <span class="n">passes_tests</span> <span class="o">=</span> <span class="kc">True</span>
     <span class="c1"># this stores all of the tests:</span>
@@ -1084,14 +1088,14 @@ <h3>Navigation</h3>
         <li class="right" >
           <a href="../../py-modindex.html" title="Python Module Index"
              >modules</a> |</li>
-        <li class="nav-item nav-item-0"><a href="../../index.html">ImageMetaTag 0.7.12 documentation</a> &#187;</li>
+        <li class="nav-item nav-item-0"><a href="../../index.html">ImageMetaTag 0.7.13 documentation</a> &#187;</li>
           <li class="nav-item nav-item-1"><a href="../index.html" >Module code</a> &#187;</li>
         <li class="nav-item nav-item-this"><a href="">ImageMetaTag.img_dict</a></li> 
       </ul>
     </div>
     <div class="footer" role="contentinfo">
         &#169; Copyright 2015-2023, British Crown Copyright.
-      Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 5.0.2.
+      Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 5.3.0.
     </div>
   </body>
 </html>
\ No newline at end of file
diff --git a/docs/build/html/_modules/ImageMetaTag/savefig.html b/docs/build/html/_modules/ImageMetaTag/savefig.html
index b3c108d..e50a23d 100644
--- a/docs/build/html/_modules/ImageMetaTag/savefig.html
+++ b/docs/build/html/_modules/ImageMetaTag/savefig.html
@@ -5,7 +5,7 @@
   <head>
     <meta charset="utf-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <title>ImageMetaTag.savefig &#8212; ImageMetaTag 0.7.12 documentation</title>
+    <title>ImageMetaTag.savefig &#8212; ImageMetaTag 0.7.13 documentation</title>
     <link rel="stylesheet" type="text/css" href="../../_static/pygments.css" />
     <link rel="stylesheet" type="text/css" href="../../_static/sphinxdoc.css" />
     <script data-url_root="../../" id="documentation_options" src="../../_static/documentation_options.js"></script>
@@ -13,6 +13,7 @@
     <script src="../../_static/underscore.js"></script>
     <script src="../../_static/_sphinx_javascript_frameworks_compat.js"></script>
     <script src="../../_static/doctools.js"></script>
+    <script src="../../_static/sphinx_highlight.js"></script>
     <link rel="index" title="Index" href="../../genindex.html" />
     <link rel="search" title="Search" href="../../search.html" /> 
   </head><body>
@@ -25,7 +26,7 @@ <h3>Navigation</h3>
         <li class="right" >
           <a href="../../py-modindex.html" title="Python Module Index"
              >modules</a> |</li>
-        <li class="nav-item nav-item-0"><a href="../../index.html">ImageMetaTag 0.7.12 documentation</a> &#187;</li>
+        <li class="nav-item nav-item-0"><a href="../../index.html">ImageMetaTag 0.7.13 documentation</a> &#187;</li>
           <li class="nav-item nav-item-1"><a href="../index.html" accesskey="U">Module code</a> &#187;</li>
         <li class="nav-item nav-item-this"><a href="">ImageMetaTag.savefig</a></li> 
       </ul>
@@ -858,14 +859,14 @@ <h3>Navigation</h3>
         <li class="right" >
           <a href="../../py-modindex.html" title="Python Module Index"
              >modules</a> |</li>
-        <li class="nav-item nav-item-0"><a href="../../index.html">ImageMetaTag 0.7.12 documentation</a> &#187;</li>
+        <li class="nav-item nav-item-0"><a href="../../index.html">ImageMetaTag 0.7.13 documentation</a> &#187;</li>
           <li class="nav-item nav-item-1"><a href="../index.html" >Module code</a> &#187;</li>
         <li class="nav-item nav-item-this"><a href="">ImageMetaTag.savefig</a></li> 
       </ul>
     </div>
     <div class="footer" role="contentinfo">
         &#169; Copyright 2015-2023, British Crown Copyright.
-      Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 5.0.2.
+      Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 5.3.0.
     </div>
   </body>
 </html>
\ No newline at end of file
diff --git a/docs/build/html/_modules/ImageMetaTag/webpage.html b/docs/build/html/_modules/ImageMetaTag/webpage.html
index fb6b1e0..f6d296a 100644
--- a/docs/build/html/_modules/ImageMetaTag/webpage.html
+++ b/docs/build/html/_modules/ImageMetaTag/webpage.html
@@ -5,7 +5,7 @@
   <head>
     <meta charset="utf-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <title>ImageMetaTag.webpage &#8212; ImageMetaTag 0.7.12 documentation</title>
+    <title>ImageMetaTag.webpage &#8212; ImageMetaTag 0.7.13 documentation</title>
     <link rel="stylesheet" type="text/css" href="../../_static/pygments.css" />
     <link rel="stylesheet" type="text/css" href="../../_static/sphinxdoc.css" />
     <script data-url_root="../../" id="documentation_options" src="../../_static/documentation_options.js"></script>
@@ -13,6 +13,7 @@
     <script src="../../_static/underscore.js"></script>
     <script src="../../_static/_sphinx_javascript_frameworks_compat.js"></script>
     <script src="../../_static/doctools.js"></script>
+    <script src="../../_static/sphinx_highlight.js"></script>
     <link rel="index" title="Index" href="../../genindex.html" />
     <link rel="search" title="Search" href="../../search.html" /> 
   </head><body>
@@ -25,7 +26,7 @@ <h3>Navigation</h3>
         <li class="right" >
           <a href="../../py-modindex.html" title="Python Module Index"
              >modules</a> |</li>
-        <li class="nav-item nav-item-0"><a href="../../index.html">ImageMetaTag 0.7.12 documentation</a> &#187;</li>
+        <li class="nav-item nav-item-0"><a href="../../index.html">ImageMetaTag 0.7.13 documentation</a> &#187;</li>
           <li class="nav-item nav-item-1"><a href="../index.html" accesskey="U">Module code</a> &#187;</li>
         <li class="nav-item nav-item-this"><a href="">ImageMetaTag.webpage</a></li> 
       </ul>
@@ -1086,14 +1087,14 @@ <h3>Navigation</h3>
         <li class="right" >
           <a href="../../py-modindex.html" title="Python Module Index"
              >modules</a> |</li>
-        <li class="nav-item nav-item-0"><a href="../../index.html">ImageMetaTag 0.7.12 documentation</a> &#187;</li>
+        <li class="nav-item nav-item-0"><a href="../../index.html">ImageMetaTag 0.7.13 documentation</a> &#187;</li>
           <li class="nav-item nav-item-1"><a href="../index.html" >Module code</a> &#187;</li>
         <li class="nav-item nav-item-this"><a href="">ImageMetaTag.webpage</a></li> 
       </ul>
     </div>
     <div class="footer" role="contentinfo">
         &#169; Copyright 2015-2023, British Crown Copyright.
-      Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 5.0.2.
+      Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 5.3.0.
     </div>
   </body>
 </html>
\ No newline at end of file
diff --git a/docs/build/html/_modules/index.html b/docs/build/html/_modules/index.html
index 44e2550..bf0764d 100644
--- a/docs/build/html/_modules/index.html
+++ b/docs/build/html/_modules/index.html
@@ -5,7 +5,7 @@
   <head>
     <meta charset="utf-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <title>Overview: module code &#8212; ImageMetaTag 0.7.12 documentation</title>
+    <title>Overview: module code &#8212; ImageMetaTag 0.7.13 documentation</title>
     <link rel="stylesheet" type="text/css" href="../_static/pygments.css" />
     <link rel="stylesheet" type="text/css" href="../_static/sphinxdoc.css" />
     <script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js"></script>
@@ -13,6 +13,7 @@
     <script src="../_static/underscore.js"></script>
     <script src="../_static/_sphinx_javascript_frameworks_compat.js"></script>
     <script src="../_static/doctools.js"></script>
+    <script src="../_static/sphinx_highlight.js"></script>
     <link rel="index" title="Index" href="../genindex.html" />
     <link rel="search" title="Search" href="../search.html" /> 
   </head><body>
@@ -25,7 +26,7 @@ <h3>Navigation</h3>
         <li class="right" >
           <a href="../py-modindex.html" title="Python Module Index"
              >modules</a> |</li>
-        <li class="nav-item nav-item-0"><a href="../index.html">ImageMetaTag 0.7.12 documentation</a> &#187;</li>
+        <li class="nav-item nav-item-0"><a href="../index.html">ImageMetaTag 0.7.13 documentation</a> &#187;</li>
         <li class="nav-item nav-item-this"><a href="">Overview: module code</a></li> 
       </ul>
     </div>  
@@ -74,13 +75,13 @@ <h3>Navigation</h3>
         <li class="right" >
           <a href="../py-modindex.html" title="Python Module Index"
              >modules</a> |</li>
-        <li class="nav-item nav-item-0"><a href="../index.html">ImageMetaTag 0.7.12 documentation</a> &#187;</li>
+        <li class="nav-item nav-item-0"><a href="../index.html">ImageMetaTag 0.7.13 documentation</a> &#187;</li>
         <li class="nav-item nav-item-this"><a href="">Overview: module code</a></li> 
       </ul>
     </div>
     <div class="footer" role="contentinfo">
         &#169; Copyright 2015-2023, British Crown Copyright.
-      Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 5.0.2.
+      Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 5.3.0.
     </div>
   </body>
 </html>
\ No newline at end of file
diff --git a/docs/build/html/_sources/scripts.rst.txt b/docs/build/html/_sources/scripts.rst.txt
index 6fe3504..4d42f96 100644
--- a/docs/build/html/_sources/scripts.rst.txt
+++ b/docs/build/html/_sources/scripts.rst.txt
@@ -14,13 +14,15 @@ This script operates on a ImageMetaTag database file (imt.db in any examples).
 
 Basic example:
 ::
- rm_imt_images imt.db file.png file2.png
+
+  rm_imt_images imt.db file.png file2.png
 
 this would delete file1.png and file2.png from disk and the imt.db file
 
 Usage with wildcards:
 ::
- rm_imt_images.py /path/to/images/imt.db  /path/to/images/subdir/*
+
+  rm_imt_images /path/to/images/imt.db  /path/to/images/subdir/*
 
 this would delete all files in the example subdirectory and their entry
 in the database
diff --git a/docs/build/html/_static/basic.css b/docs/build/html/_static/basic.css
index 7d5974c..eeb0519 100644
--- a/docs/build/html/_static/basic.css
+++ b/docs/build/html/_static/basic.css
@@ -608,8 +608,6 @@ ol.simple p,
 ul.simple p {
     margin-bottom: 0;
 }
-
-/* Docutils 0.17 and older (footnotes & citations) */
 dl.footnote > dt,
 dl.citation > dt {
     float: left;
@@ -627,33 +625,6 @@ dl.citation > dd:after {
     clear: both;
 }
 
-/* Docutils 0.18+ (footnotes & citations) */
-aside.footnote > span,
-div.citation > span {
-    float: left;
-}
-aside.footnote > span:last-of-type,
-div.citation > span:last-of-type {
-  padding-right: 0.5em;
-}
-aside.footnote > p {
-  margin-left: 2em;
-}
-div.citation > p {
-  margin-left: 4em;
-}
-aside.footnote > p:last-of-type,
-div.citation > p:last-of-type {
-    margin-bottom: 0em;
-}
-aside.footnote > p:last-of-type:after,
-div.citation > p:last-of-type:after {
-    content: "";
-    clear: both;
-}
-
-/* Footnotes & citations ends */
-
 dl.field-list {
     display: grid;
     grid-template-columns: fit-content(30%) auto;
@@ -665,11 +636,11 @@ dl.field-list > dt {
     padding-left: 0.5em;
     padding-right: 5px;
 }
-
 dl.field-list > dt:after {
     content: ":";
 }
 
+
 dl.field-list > dd {
     padding-left: 0.5em;
     margin-top: 0em;
diff --git a/docs/build/html/_static/doctools.js b/docs/build/html/_static/doctools.js
index c3db08d..527b876 100644
--- a/docs/build/html/_static/doctools.js
+++ b/docs/build/html/_static/doctools.js
@@ -10,6 +10,13 @@
  */
 "use strict";
 
+const BLACKLISTED_KEY_CONTROL_ELEMENTS = new Set([
+  "TEXTAREA",
+  "INPUT",
+  "SELECT",
+  "BUTTON",
+]);
+
 const _ready = (callback) => {
   if (document.readyState !== "loading") {
     callback();
@@ -18,73 +25,11 @@ const _ready = (callback) => {
   }
 };
 
-/**
- * highlight a given string on a node by wrapping it in
- * span elements with the given class name.
- */
-const _highlight = (node, addItems, text, className) => {
-  if (node.nodeType === Node.TEXT_NODE) {
-    const val = node.nodeValue;
-    const parent = node.parentNode;
-    const pos = val.toLowerCase().indexOf(text);
-    if (
-      pos >= 0 &&
-      !parent.classList.contains(className) &&
-      !parent.classList.contains("nohighlight")
-    ) {
-      let span;
-
-      const closestNode = parent.closest("body, svg, foreignObject");
-      const isInSVG = closestNode && closestNode.matches("svg");
-      if (isInSVG) {
-        span = document.createElementNS("http://www.w3.org/2000/svg", "tspan");
-      } else {
-        span = document.createElement("span");
-        span.classList.add(className);
-      }
-
-      span.appendChild(document.createTextNode(val.substr(pos, text.length)));
-      parent.insertBefore(
-        span,
-        parent.insertBefore(
-          document.createTextNode(val.substr(pos + text.length)),
-          node.nextSibling
-        )
-      );
-      node.nodeValue = val.substr(0, pos);
-
-      if (isInSVG) {
-        const rect = document.createElementNS(
-          "http://www.w3.org/2000/svg",
-          "rect"
-        );
-        const bbox = parent.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);
-        addItems.push({ parent: parent, target: rect });
-      }
-    }
-  } else if (node.matches && !node.matches("button, select, textarea")) {
-    node.childNodes.forEach((el) => _highlight(el, addItems, text, className));
-  }
-};
-const _highlightText = (thisNode, text, className) => {
-  let addItems = [];
-  _highlight(thisNode, addItems, text, className);
-  addItems.forEach((obj) =>
-    obj.parent.insertAdjacentElement("beforebegin", obj.target)
-  );
-};
-
 /**
  * Small JavaScript module for the documentation.
  */
 const Documentation = {
   init: () => {
-    Documentation.highlightSearchWords();
     Documentation.initDomainIndexTable();
     Documentation.initOnKeyListeners();
   },
@@ -126,51 +71,6 @@ const Documentation = {
     Documentation.LOCALE = catalog.locale;
   },
 
-  /**
-   * highlight the search words provided in the url in the text
-   */
-  highlightSearchWords: () => {
-    const highlight =
-      new URLSearchParams(window.location.search).get("highlight") || "";
-    const terms = highlight.toLowerCase().split(/\s+/).filter(x => x);
-    if (terms.length === 0) return; // nothing to do
-
-    // There should never be more than one element matching "div.body"
-    const divBody = document.querySelectorAll("div.body");
-    const body = divBody.length ? divBody[0] : document.querySelector("body");
-    window.setTimeout(() => {
-      terms.forEach((term) => _highlightText(body, term, "highlighted"));
-    }, 10);
-
-    const searchBox = document.getElementById("searchbox");
-    if (searchBox === null) return;
-    searchBox.appendChild(
-      document
-        .createRange()
-        .createContextualFragment(
-          '<p class="highlight-link">' +
-            '<a href="javascript:Documentation.hideSearchWords()">' +
-            Documentation.gettext("Hide Search Matches") +
-            "</a></p>"
-        )
-    );
-  },
-
-  /**
-   * helper function to hide the search marks again
-   */
-  hideSearchWords: () => {
-    document
-      .querySelectorAll("#searchbox .highlight-link")
-      .forEach((el) => el.remove());
-    document
-      .querySelectorAll("span.highlighted")
-      .forEach((el) => el.classList.remove("highlighted"));
-    const url = new URL(window.location);
-    url.searchParams.delete("highlight");
-    window.history.replaceState({}, "", url);
-  },
-
   /**
    * helper function to focus on search bar
    */
@@ -210,15 +110,11 @@ const Documentation = {
     )
       return;
 
-    const blacklistedElements = new Set([
-      "TEXTAREA",
-      "INPUT",
-      "SELECT",
-      "BUTTON",
-    ]);
     document.addEventListener("keydown", (event) => {
-      if (blacklistedElements.has(document.activeElement.tagName)) return; // bail for input elements
-      if (event.altKey || event.ctrlKey || event.metaKey) return; // bail with special keys
+      // bail for input elements
+      if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return;
+      // bail with special keys
+      if (event.altKey || event.ctrlKey || event.metaKey) return;
 
       if (!event.shiftKey) {
         switch (event.key) {
@@ -240,10 +136,6 @@ const Documentation = {
               event.preventDefault();
             }
             break;
-          case "Escape":
-            if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) break;
-            Documentation.hideSearchWords();
-            event.preventDefault();
         }
       }
 
diff --git a/docs/build/html/_static/documentation_options.js b/docs/build/html/_static/documentation_options.js
index 562c41f..10dfcfd 100644
--- a/docs/build/html/_static/documentation_options.js
+++ b/docs/build/html/_static/documentation_options.js
@@ -1,6 +1,6 @@
 var DOCUMENTATION_OPTIONS = {
     URL_ROOT: document.getElementById("documentation_options").getAttribute('data-url_root'),
-    VERSION: '0.7.12',
+    VERSION: '0.7.13',
     LANGUAGE: 'en',
     COLLAPSE_INDEX: false,
     BUILDER: 'html',
@@ -10,5 +10,5 @@ var DOCUMENTATION_OPTIONS = {
     SOURCELINK_SUFFIX: '.txt',
     NAVIGATION_WITH_KEYS: false,
     SHOW_SEARCH_SUMMARY: true,
-    ENABLE_SEARCH_SHORTCUTS: false,
+    ENABLE_SEARCH_SHORTCUTS: true,
 };
\ No newline at end of file
diff --git a/docs/build/html/_static/searchtools.js b/docs/build/html/_static/searchtools.js
index ac4d586..e89e34d 100644
--- a/docs/build/html/_static/searchtools.js
+++ b/docs/build/html/_static/searchtools.js
@@ -57,14 +57,14 @@ const _removeChildren = (element) => {
 const _escapeRegExp = (string) =>
   string.replace(/[.*+\-?^${}()|[\]\\]/g, "\\$&"); // $& means the whole matched string
 
-const _displayItem = (item, highlightTerms, searchTerms) => {
+const _displayItem = (item, searchTerms) => {
   const docBuilder = DOCUMENTATION_OPTIONS.BUILDER;
   const docUrlRoot = DOCUMENTATION_OPTIONS.URL_ROOT;
   const docFileSuffix = DOCUMENTATION_OPTIONS.FILE_SUFFIX;
   const docLinkSuffix = DOCUMENTATION_OPTIONS.LINK_SUFFIX;
   const showSearchSummary = DOCUMENTATION_OPTIONS.SHOW_SEARCH_SUMMARY;
 
-  const [docName, title, anchor, descr] = item;
+  const [docName, title, anchor, descr, score, _filename] = item;
 
   let listItem = document.createElement("li");
   let requestUrl;
@@ -82,13 +82,12 @@ const _displayItem = (item, highlightTerms, searchTerms) => {
     requestUrl = docUrlRoot + docName + docFileSuffix;
     linkUrl = docName + docLinkSuffix;
   }
-  const params = new URLSearchParams();
-  params.set("highlight", [...highlightTerms].join(" "));
   let linkEl = listItem.appendChild(document.createElement("a"));
-  linkEl.href = linkUrl + "?" + params.toString() + anchor;
+  linkEl.href = linkUrl + anchor;
+  linkEl.dataset.score = score;
   linkEl.innerHTML = title;
   if (descr)
-    listItem.appendChild(document.createElement("span")).innerText =
+    listItem.appendChild(document.createElement("span")).innerHTML =
       " (" + descr + ")";
   else if (showSearchSummary)
     fetch(requestUrl)
@@ -96,7 +95,7 @@ const _displayItem = (item, highlightTerms, searchTerms) => {
       .then((data) => {
         if (data)
           listItem.appendChild(
-            Search.makeSearchSummary(data, searchTerms, highlightTerms)
+            Search.makeSearchSummary(data, searchTerms)
           );
       });
   Search.output.appendChild(listItem);
@@ -116,15 +115,14 @@ const _finishSearch = (resultCount) => {
 const _displayNextItem = (
   results,
   resultCount,
-  highlightTerms,
   searchTerms
 ) => {
   // results left, load the summary and display it
   // this is intended to be dynamic (don't sub resultsCount)
   if (results.length) {
-    _displayItem(results.pop(), highlightTerms, searchTerms);
+    _displayItem(results.pop(), searchTerms);
     setTimeout(
-      () => _displayNextItem(results, resultCount, highlightTerms, searchTerms),
+      () => _displayNextItem(results, resultCount, searchTerms),
       5
     );
   }
@@ -155,10 +153,8 @@ const Search = {
   _pulse_status: -1,
 
   htmlToText: (htmlString) => {
-    const htmlElement = document
-      .createRange()
-      .createContextualFragment(htmlString);
-    _removeChildren(htmlElement.querySelectorAll(".headerlink"));
+    const htmlElement = new DOMParser().parseFromString(htmlString, 'text/html');
+    htmlElement.querySelectorAll(".headerlink").forEach((el) => { el.remove() });
     const docContent = htmlElement.querySelector('[role="main"]');
     if (docContent !== undefined) return docContent.textContent;
     console.warn(
@@ -239,6 +235,12 @@ const Search = {
    * execute search (requires search index to be loaded)
    */
   query: (query) => {
+    const filenames = Search._index.filenames;
+    const docNames = Search._index.docnames;
+    const titles = Search._index.titles;
+    const allTitles = Search._index.alltitles;
+    const indexEntries = Search._index.indexentries;
+
     // stem the search terms and add them to the correct list
     const stemmer = new Stemmer();
     const searchTerms = new Set();
@@ -266,6 +268,10 @@ const Search = {
       }
     });
 
+    if (SPHINX_HIGHLIGHT_ENABLED) {  // set in sphinx_highlight.js
+      localStorage.setItem("sphinx_highlight_terms", [...highlightTerms].join(" "))
+    }
+
     // console.debug("SEARCH: searching for:");
     // console.info("required: ", [...searchTerms]);
     // console.info("excluded: ", [...excludedTerms]);
@@ -274,6 +280,40 @@ const Search = {
     let results = [];
     _removeChildren(document.getElementById("search-progress"));
 
+    const queryLower = query.toLowerCase();
+    for (const [title, foundTitles] of Object.entries(allTitles)) {
+      if (title.toLowerCase().includes(queryLower) && (queryLower.length >= title.length/2)) {
+        for (const [file, id] of foundTitles) {
+          let score = Math.round(100 * queryLower.length / title.length)
+          results.push([
+            docNames[file],
+            titles[file] !== title ? `${titles[file]} > ${title}` : title,
+            id !== null ? "#" + id : "",
+            null,
+            score,
+            filenames[file],
+          ]);
+        }
+      }
+    }
+
+    // search for explicit entries in index directives
+    for (const [entry, foundEntries] of Object.entries(indexEntries)) {
+      if (entry.includes(queryLower) && (queryLower.length >= entry.length/2)) {
+        for (const [file, id] of foundEntries) {
+          let score = Math.round(100 * queryLower.length / entry.length)
+          results.push([
+            docNames[file],
+            titles[file],
+            id ? "#" + id : "",
+            null,
+            score,
+            filenames[file],
+          ]);
+        }
+      }
+    }
+
     // lookup as object
     objectTerms.forEach((term) =>
       results.push(...Search.performObjectSearch(term, objectTerms))
@@ -320,7 +360,7 @@ const Search = {
     // console.info("search results:", Search.lastresults);
 
     // print the results
-    _displayNextItem(results, results.length, highlightTerms, searchTerms);
+    _displayNextItem(results, results.length, searchTerms);
   },
 
   /**
@@ -401,8 +441,8 @@ const Search = {
     // prepare search
     const terms = Search._index.terms;
     const titleTerms = Search._index.titleterms;
-    const docNames = Search._index.docnames;
     const filenames = Search._index.filenames;
+    const docNames = Search._index.docnames;
     const titles = Search._index.titles;
 
     const scoreMap = new Map();
@@ -499,16 +539,15 @@ const Search = {
   /**
    * helper function to return a node containing the
    * search summary for a given text. keywords is a list
-   * of stemmed words, highlightWords is the list of normal, unstemmed
-   * words. the first one is used to find the occurrence, the
-   * latter for highlighting it.
+   * of stemmed words.
    */
-  makeSearchSummary: (htmlText, keywords, highlightWords) => {
-    const text = Search.htmlToText(htmlText).toLowerCase();
+  makeSearchSummary: (htmlText, keywords) => {
+    const text = Search.htmlToText(htmlText);
     if (text === "") return null;
 
+    const textLower = text.toLowerCase();
     const actualStartPosition = [...keywords]
-      .map((k) => text.indexOf(k.toLowerCase()))
+      .map((k) => textLower.indexOf(k.toLowerCase()))
       .filter((i) => i > -1)
       .slice(-1)[0];
     const startWithContext = Math.max(actualStartPosition - 120, 0);
@@ -516,13 +555,9 @@ const Search = {
     const top = startWithContext === 0 ? "" : "...";
     const tail = startWithContext + 240 < text.length ? "..." : "";
 
-    let summary = document.createElement("div");
+    let summary = document.createElement("p");
     summary.classList.add("context");
-    summary.innerText = top + text.substr(startWithContext, 240).trim() + tail;
-
-    highlightWords.forEach((highlightWord) =>
-      _highlightText(summary, highlightWord, "highlighted")
-    );
+    summary.textContent = top + text.substr(startWithContext, 240).trim() + tail;
 
     return summary;
   },
diff --git a/docs/build/html/db.html b/docs/build/html/db.html
index 7c764e5..f9c383d 100644
--- a/docs/build/html/db.html
+++ b/docs/build/html/db.html
@@ -6,7 +6,7 @@
     <meta charset="utf-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
 
-    <title>ImageMetaTag.db &#8212; ImageMetaTag 0.7.12 documentation</title>
+    <title>ImageMetaTag.db &#8212; ImageMetaTag 0.7.13 documentation</title>
     <link rel="stylesheet" type="text/css" href="_static/pygments.css" />
     <link rel="stylesheet" type="text/css" href="_static/sphinxdoc.css" />
     <script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script>
@@ -14,6 +14,7 @@
     <script src="_static/underscore.js"></script>
     <script src="_static/_sphinx_javascript_frameworks_compat.js"></script>
     <script src="_static/doctools.js"></script>
+    <script src="_static/sphinx_highlight.js"></script>
     <link rel="index" title="Index" href="genindex.html" />
     <link rel="search" title="Search" href="search.html" />
     <link rel="next" title="ImageMetaTag.ImageDict" href="ImageDict.html" />
@@ -34,7 +35,7 @@ <h3>Navigation</h3>
         <li class="right" >
           <a href="savefig.html" title="ImageMetaTag.savefig"
              accesskey="P">previous</a> |</li>
-        <li class="nav-item nav-item-0"><a href="index.html">ImageMetaTag 0.7.12 documentation</a> &#187;</li>
+        <li class="nav-item nav-item-0"><a href="index.html">ImageMetaTag 0.7.13 documentation</a> &#187;</li>
         <li class="nav-item nav-item-this"><a href="">ImageMetaTag.db</a></li> 
       </ul>
     </div>  
@@ -316,11 +317,37 @@ <h2>Utility functions<a class="headerlink" href="#utility-functions" title="Perm
     <h3><a href="index.html">Table of Contents</a></h3>
     <ul>
 <li><a class="reference internal" href="#">ImageMetaTag.db</a><ul>
-<li><a class="reference internal" href="#commonly-used-functions">Commonly used functions</a></li>
-<li><a class="reference internal" href="#functions-for-opening-creating-db-files">Functions for opening/creating db files</a></li>
-<li><a class="reference internal" href="#functions-for-working-with-open-databases">Functions for working with open databases</a></li>
-<li><a class="reference internal" href="#internal-functions">Internal functions</a></li>
-<li><a class="reference internal" href="#utility-functions">Utility functions</a></li>
+<li><a class="reference internal" href="#commonly-used-functions">Commonly used functions</a><ul>
+<li><a class="reference internal" href="#ImageMetaTag.db.write_img_to_dbfile"><code class="docutils literal notranslate"><span class="pre">write_img_to_dbfile()</span></code></a></li>
+<li><a class="reference internal" href="#ImageMetaTag.db.read"><code class="docutils literal notranslate"><span class="pre">read()</span></code></a></li>
+<li><a class="reference internal" href="#ImageMetaTag.db.del_plots_from_dbfile"><code class="docutils literal notranslate"><span class="pre">del_plots_from_dbfile()</span></code></a></li>
+<li><a class="reference internal" href="#ImageMetaTag.db.select_dbfile_by_tags"><code class="docutils literal notranslate"><span class="pre">select_dbfile_by_tags()</span></code></a></li>
+<li><a class="reference internal" href="#ImageMetaTag.db.merge_db_files"><code class="docutils literal notranslate"><span class="pre">merge_db_files()</span></code></a></li>
+</ul>
+</li>
+<li><a class="reference internal" href="#functions-for-opening-creating-db-files">Functions for opening/creating db files</a><ul>
+<li><a class="reference internal" href="#ImageMetaTag.db.open_or_create_db_file"><code class="docutils literal notranslate"><span class="pre">open_or_create_db_file()</span></code></a></li>
+<li><a class="reference internal" href="#ImageMetaTag.db.open_db_file"><code class="docutils literal notranslate"><span class="pre">open_db_file()</span></code></a></li>
+<li><a class="reference internal" href="#ImageMetaTag.db.read_db_file_to_mem"><code class="docutils literal notranslate"><span class="pre">read_db_file_to_mem()</span></code></a></li>
+</ul>
+</li>
+<li><a class="reference internal" href="#functions-for-working-with-open-databases">Functions for working with open databases</a><ul>
+<li><a class="reference internal" href="#ImageMetaTag.db.write_img_to_open_db"><code class="docutils literal notranslate"><span class="pre">write_img_to_open_db()</span></code></a></li>
+<li><a class="reference internal" href="#ImageMetaTag.db.read_img_info_from_dbcursor"><code class="docutils literal notranslate"><span class="pre">read_img_info_from_dbcursor()</span></code></a></li>
+<li><a class="reference internal" href="#ImageMetaTag.db.select_dbcr_by_tags"><code class="docutils literal notranslate"><span class="pre">select_dbcr_by_tags()</span></code></a></li>
+<li><a class="reference internal" href="#ImageMetaTag.db.recrete_table_new_cols"><code class="docutils literal notranslate"><span class="pre">recrete_table_new_cols()</span></code></a></li>
+</ul>
+</li>
+<li><a class="reference internal" href="#internal-functions">Internal functions</a><ul>
+<li><a class="reference internal" href="#ImageMetaTag.db.db_name_to_info_key"><code class="docutils literal notranslate"><span class="pre">db_name_to_info_key()</span></code></a></li>
+<li><a class="reference internal" href="#ImageMetaTag.db.info_key_to_db_name"><code class="docutils literal notranslate"><span class="pre">info_key_to_db_name()</span></code></a></li>
+<li><a class="reference internal" href="#ImageMetaTag.db.process_select_star_from"><code class="docutils literal notranslate"><span class="pre">process_select_star_from()</span></code></a></li>
+</ul>
+</li>
+<li><a class="reference internal" href="#utility-functions">Utility functions</a><ul>
+<li><a class="reference internal" href="#ImageMetaTag.db.scan_dir_for_db"><code class="docutils literal notranslate"><span class="pre">scan_dir_for_db()</span></code></a></li>
+</ul>
+</li>
 </ul>
 </li>
 </ul>
@@ -372,13 +399,13 @@ <h3>Navigation</h3>
         <li class="right" >
           <a href="savefig.html" title="ImageMetaTag.savefig"
              >previous</a> |</li>
-        <li class="nav-item nav-item-0"><a href="index.html">ImageMetaTag 0.7.12 documentation</a> &#187;</li>
+        <li class="nav-item nav-item-0"><a href="index.html">ImageMetaTag 0.7.13 documentation</a> &#187;</li>
         <li class="nav-item nav-item-this"><a href="">ImageMetaTag.db</a></li> 
       </ul>
     </div>
     <div class="footer" role="contentinfo">
         &#169; Copyright 2015-2023, British Crown Copyright.
-      Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 5.0.2.
+      Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 5.3.0.
     </div>
   </body>
 </html>
\ No newline at end of file
diff --git a/docs/build/html/genindex.html b/docs/build/html/genindex.html
index c86d278..705db97 100644
--- a/docs/build/html/genindex.html
+++ b/docs/build/html/genindex.html
@@ -5,7 +5,7 @@
   <head>
     <meta charset="utf-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <title>Index &#8212; ImageMetaTag 0.7.12 documentation</title>
+    <title>Index &#8212; ImageMetaTag 0.7.13 documentation</title>
     <link rel="stylesheet" type="text/css" href="_static/pygments.css" />
     <link rel="stylesheet" type="text/css" href="_static/sphinxdoc.css" />
     <script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script>
@@ -13,6 +13,7 @@
     <script src="_static/underscore.js"></script>
     <script src="_static/_sphinx_javascript_frameworks_compat.js"></script>
     <script src="_static/doctools.js"></script>
+    <script src="_static/sphinx_highlight.js"></script>
     <link rel="index" title="Index" href="#" />
     <link rel="search" title="Search" href="search.html" /> 
   </head><body>
@@ -25,7 +26,7 @@ <h3>Navigation</h3>
         <li class="right" >
           <a href="py-modindex.html" title="Python Module Index"
              >modules</a> |</li>
-        <li class="nav-item nav-item-0"><a href="index.html">ImageMetaTag 0.7.12 documentation</a> &#187;</li>
+        <li class="nav-item nav-item-0"><a href="index.html">ImageMetaTag 0.7.13 documentation</a> &#187;</li>
         <li class="nav-item nav-item-this"><a href="">Index</a></li> 
       </ul>
     </div>  
@@ -317,13 +318,13 @@ <h3>Navigation</h3>
         <li class="right" >
           <a href="py-modindex.html" title="Python Module Index"
              >modules</a> |</li>
-        <li class="nav-item nav-item-0"><a href="index.html">ImageMetaTag 0.7.12 documentation</a> &#187;</li>
+        <li class="nav-item nav-item-0"><a href="index.html">ImageMetaTag 0.7.13 documentation</a> &#187;</li>
         <li class="nav-item nav-item-this"><a href="">Index</a></li> 
       </ul>
     </div>
     <div class="footer" role="contentinfo">
         &#169; Copyright 2015-2023, British Crown Copyright.
-      Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 5.0.2.
+      Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 5.3.0.
     </div>
   </body>
 </html>
\ No newline at end of file
diff --git a/docs/build/html/index.html b/docs/build/html/index.html
index f32259a..c9549f9 100644
--- a/docs/build/html/index.html
+++ b/docs/build/html/index.html
@@ -6,7 +6,7 @@
     <meta charset="utf-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
 
-    <title>ImageMetaTag - Image metadata tagging and presentation &#8212; ImageMetaTag 0.7.12 documentation</title>
+    <title>ImageMetaTag - Image metadata tagging and presentation &#8212; ImageMetaTag 0.7.13 documentation</title>
     <link rel="stylesheet" type="text/css" href="_static/pygments.css" />
     <link rel="stylesheet" type="text/css" href="_static/sphinxdoc.css" />
     <script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script>
@@ -14,6 +14,7 @@
     <script src="_static/underscore.js"></script>
     <script src="_static/_sphinx_javascript_frameworks_compat.js"></script>
     <script src="_static/doctools.js"></script>
+    <script src="_static/sphinx_highlight.js"></script>
     <link rel="index" title="Index" href="genindex.html" />
     <link rel="search" title="Search" href="search.html" />
     <link rel="next" title="ImageMetaTag.savefig" href="savefig.html" /> 
@@ -30,7 +31,7 @@ <h3>Navigation</h3>
         <li class="right" >
           <a href="savefig.html" title="ImageMetaTag.savefig"
              accesskey="N">next</a> |</li>
-        <li class="nav-item nav-item-0"><a href="#">ImageMetaTag 0.7.12 documentation</a> &#187;</li>
+        <li class="nav-item nav-item-0"><a href="#">ImageMetaTag 0.7.13 documentation</a> &#187;</li>
         <li class="nav-item nav-item-this"><a href="">ImageMetaTag - Image metadata tagging and presentation</a></li> 
       </ul>
     </div>  
@@ -161,13 +162,13 @@ <h3>Navigation</h3>
         <li class="right" >
           <a href="savefig.html" title="ImageMetaTag.savefig"
              >next</a> |</li>
-        <li class="nav-item nav-item-0"><a href="#">ImageMetaTag 0.7.12 documentation</a> &#187;</li>
+        <li class="nav-item nav-item-0"><a href="#">ImageMetaTag 0.7.13 documentation</a> &#187;</li>
         <li class="nav-item nav-item-this"><a href="">ImageMetaTag - Image metadata tagging and presentation</a></li> 
       </ul>
     </div>
     <div class="footer" role="contentinfo">
         &#169; Copyright 2015-2023, British Crown Copyright.
-      Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 5.0.2.
+      Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 5.3.0.
     </div>
   </body>
 </html>
\ No newline at end of file
diff --git a/docs/build/html/py-modindex.html b/docs/build/html/py-modindex.html
index 90ef10e..cd7c8a0 100644
--- a/docs/build/html/py-modindex.html
+++ b/docs/build/html/py-modindex.html
@@ -5,7 +5,7 @@
   <head>
     <meta charset="utf-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <title>Python Module Index &#8212; ImageMetaTag 0.7.12 documentation</title>
+    <title>Python Module Index &#8212; ImageMetaTag 0.7.13 documentation</title>
     <link rel="stylesheet" type="text/css" href="_static/pygments.css" />
     <link rel="stylesheet" type="text/css" href="_static/sphinxdoc.css" />
     <script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script>
@@ -13,6 +13,7 @@
     <script src="_static/underscore.js"></script>
     <script src="_static/_sphinx_javascript_frameworks_compat.js"></script>
     <script src="_static/doctools.js"></script>
+    <script src="_static/sphinx_highlight.js"></script>
     <link rel="index" title="Index" href="genindex.html" />
     <link rel="search" title="Search" href="search.html" />
  
@@ -28,7 +29,7 @@ <h3>Navigation</h3>
         <li class="right" >
           <a href="#" title="Python Module Index"
              >modules</a> |</li>
-        <li class="nav-item nav-item-0"><a href="index.html">ImageMetaTag 0.7.12 documentation</a> &#187;</li>
+        <li class="nav-item nav-item-0"><a href="index.html">ImageMetaTag 0.7.13 documentation</a> &#187;</li>
         <li class="nav-item nav-item-this"><a href="">Python Module Index</a></li> 
       </ul>
     </div>  
@@ -105,13 +106,13 @@ <h3>Navigation</h3>
         <li class="right" >
           <a href="#" title="Python Module Index"
              >modules</a> |</li>
-        <li class="nav-item nav-item-0"><a href="index.html">ImageMetaTag 0.7.12 documentation</a> &#187;</li>
+        <li class="nav-item nav-item-0"><a href="index.html">ImageMetaTag 0.7.13 documentation</a> &#187;</li>
         <li class="nav-item nav-item-this"><a href="">Python Module Index</a></li> 
       </ul>
     </div>
     <div class="footer" role="contentinfo">
         &#169; Copyright 2015-2023, British Crown Copyright.
-      Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 5.0.2.
+      Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 5.3.0.
     </div>
   </body>
 </html>
\ No newline at end of file
diff --git a/docs/build/html/savefig.html b/docs/build/html/savefig.html
index 8fad6ea..478a117 100644
--- a/docs/build/html/savefig.html
+++ b/docs/build/html/savefig.html
@@ -6,7 +6,7 @@
     <meta charset="utf-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
 
-    <title>ImageMetaTag.savefig &#8212; ImageMetaTag 0.7.12 documentation</title>
+    <title>ImageMetaTag.savefig &#8212; ImageMetaTag 0.7.13 documentation</title>
     <link rel="stylesheet" type="text/css" href="_static/pygments.css" />
     <link rel="stylesheet" type="text/css" href="_static/sphinxdoc.css" />
     <script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script>
@@ -14,6 +14,7 @@
     <script src="_static/underscore.js"></script>
     <script src="_static/_sphinx_javascript_frameworks_compat.js"></script>
     <script src="_static/doctools.js"></script>
+    <script src="_static/sphinx_highlight.js"></script>
     <link rel="index" title="Index" href="genindex.html" />
     <link rel="search" title="Search" href="search.html" />
     <link rel="next" title="ImageMetaTag.db" href="db.html" />
@@ -34,7 +35,7 @@ <h3>Navigation</h3>
         <li class="right" >
           <a href="index.html" title="ImageMetaTag - Image metadata tagging and presentation"
              accesskey="P">previous</a> |</li>
-        <li class="nav-item nav-item-0"><a href="index.html">ImageMetaTag 0.7.12 documentation</a> &#187;</li>
+        <li class="nav-item nav-item-0"><a href="index.html">ImageMetaTag 0.7.13 documentation</a> &#187;</li>
         <li class="nav-item nav-item-this"><a href="">ImageMetaTag.savefig</a></li> 
       </ul>
     </div>  
@@ -176,9 +177,15 @@ <h2>Other functions<a class="headerlink" href="#other-functions" title="Permalin
     <h3><a href="index.html">Table of Contents</a></h3>
     <ul>
 <li><a class="reference internal" href="#">ImageMetaTag.savefig</a><ul>
-<li><a class="reference internal" href="#the-savefig-wrapper">The savefig wrapper</a></li>
+<li><a class="reference internal" href="#the-savefig-wrapper">The savefig wrapper</a><ul>
+<li><a class="reference internal" href="#ImageMetaTag.savefig"><code class="docutils literal notranslate"><span class="pre">savefig()</span></code></a></li>
+</ul>
+</li>
 <li><a class="reference internal" href="#recommended-file-structure">Recommended file structure</a></li>
-<li><a class="reference internal" href="#other-functions">Other functions</a></li>
+<li><a class="reference internal" href="#other-functions">Other functions</a><ul>
+<li><a class="reference internal" href="#ImageMetaTag.image_file_postproc"><code class="docutils literal notranslate"><span class="pre">image_file_postproc()</span></code></a></li>
+</ul>
+</li>
 </ul>
 </li>
 </ul>
@@ -230,13 +237,13 @@ <h3>Navigation</h3>
         <li class="right" >
           <a href="index.html" title="ImageMetaTag - Image metadata tagging and presentation"
              >previous</a> |</li>
-        <li class="nav-item nav-item-0"><a href="index.html">ImageMetaTag 0.7.12 documentation</a> &#187;</li>
+        <li class="nav-item nav-item-0"><a href="index.html">ImageMetaTag 0.7.13 documentation</a> &#187;</li>
         <li class="nav-item nav-item-this"><a href="">ImageMetaTag.savefig</a></li> 
       </ul>
     </div>
     <div class="footer" role="contentinfo">
         &#169; Copyright 2015-2023, British Crown Copyright.
-      Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 5.0.2.
+      Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 5.3.0.
     </div>
   </body>
 </html>
\ No newline at end of file
diff --git a/docs/build/html/scripts.html b/docs/build/html/scripts.html
index 7962629..8dd433b 100644
--- a/docs/build/html/scripts.html
+++ b/docs/build/html/scripts.html
@@ -6,7 +6,7 @@
     <meta charset="utf-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
 
-    <title>Associated scripts packaged with ImageMetaTag &#8212; ImageMetaTag 0.7.12 documentation</title>
+    <title>Associated scripts packaged with ImageMetaTag &#8212; ImageMetaTag 0.7.13 documentation</title>
     <link rel="stylesheet" type="text/css" href="_static/pygments.css" />
     <link rel="stylesheet" type="text/css" href="_static/sphinxdoc.css" />
     <script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script>
@@ -14,6 +14,7 @@
     <script src="_static/underscore.js"></script>
     <script src="_static/_sphinx_javascript_frameworks_compat.js"></script>
     <script src="_static/doctools.js"></script>
+    <script src="_static/sphinx_highlight.js"></script>
     <link rel="index" title="Index" href="genindex.html" />
     <link rel="search" title="Search" href="search.html" />
     <link rel="next" title="Versions of Python" href="versions.html" />
@@ -34,7 +35,7 @@ <h3>Navigation</h3>
         <li class="right" >
           <a href="simple.html" title="ImageMetaTag - simplest_img_dict.py"
              accesskey="P">previous</a> |</li>
-        <li class="nav-item nav-item-0"><a href="index.html">ImageMetaTag 0.7.12 documentation</a> &#187;</li>
+        <li class="nav-item nav-item-0"><a href="index.html">ImageMetaTag 0.7.13 documentation</a> &#187;</li>
         <li class="nav-item nav-item-this"><a href="">Associated scripts packaged with ImageMetaTag</a></li> 
       </ul>
     </div>  
@@ -58,7 +59,7 @@ <h2>rm_imt_images<a class="headerlink" href="#rm-imt-images" title="Permalink to
 </div>
 <p>this would delete file1.png and file2.png from disk and the imt.db file</p>
 <p>Usage with wildcards:</p>
-<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">rm_imt_images</span><span class="o">.</span><span class="n">py</span> <span class="o">/</span><span class="n">path</span><span class="o">/</span><span class="n">to</span><span class="o">/</span><span class="n">images</span><span class="o">/</span><span class="n">imt</span><span class="o">.</span><span class="n">db</span>  <span class="o">/</span><span class="n">path</span><span class="o">/</span><span class="n">to</span><span class="o">/</span><span class="n">images</span><span class="o">/</span><span class="n">subdir</span><span class="o">/*</span>
+<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">rm_imt_images</span> <span class="o">/</span><span class="n">path</span><span class="o">/</span><span class="n">to</span><span class="o">/</span><span class="n">images</span><span class="o">/</span><span class="n">imt</span><span class="o">.</span><span class="n">db</span>  <span class="o">/</span><span class="n">path</span><span class="o">/</span><span class="n">to</span><span class="o">/</span><span class="n">images</span><span class="o">/</span><span class="n">subdir</span><span class="o">/*</span>
 </pre></div>
 </div>
 <p>this would delete all files in the example subdirectory and their entry
@@ -147,13 +148,13 @@ <h3>Navigation</h3>
         <li class="right" >
           <a href="simple.html" title="ImageMetaTag - simplest_img_dict.py"
              >previous</a> |</li>
-        <li class="nav-item nav-item-0"><a href="index.html">ImageMetaTag 0.7.12 documentation</a> &#187;</li>
+        <li class="nav-item nav-item-0"><a href="index.html">ImageMetaTag 0.7.13 documentation</a> &#187;</li>
         <li class="nav-item nav-item-this"><a href="">Associated scripts packaged with ImageMetaTag</a></li> 
       </ul>
     </div>
     <div class="footer" role="contentinfo">
         &#169; Copyright 2015-2023, British Crown Copyright.
-      Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 5.0.2.
+      Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 5.3.0.
     </div>
   </body>
 </html>
\ No newline at end of file
diff --git a/docs/build/html/search.html b/docs/build/html/search.html
index 861b988..4a7d98c 100644
--- a/docs/build/html/search.html
+++ b/docs/build/html/search.html
@@ -5,7 +5,7 @@
   <head>
     <meta charset="utf-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <title>Search &#8212; ImageMetaTag 0.7.12 documentation</title>
+    <title>Search &#8212; ImageMetaTag 0.7.13 documentation</title>
     <link rel="stylesheet" type="text/css" href="_static/pygments.css" />
     <link rel="stylesheet" type="text/css" href="_static/sphinxdoc.css" />
     
@@ -14,6 +14,7 @@
     <script src="_static/underscore.js"></script>
     <script src="_static/_sphinx_javascript_frameworks_compat.js"></script>
     <script src="_static/doctools.js"></script>
+    <script src="_static/sphinx_highlight.js"></script>
     <script src="_static/searchtools.js"></script>
     <script src="_static/language_data.js"></script>
     <link rel="index" title="Index" href="genindex.html" />
@@ -31,7 +32,7 @@ <h3>Navigation</h3>
         <li class="right" >
           <a href="py-modindex.html" title="Python Module Index"
              >modules</a> |</li>
-        <li class="nav-item nav-item-0"><a href="index.html">ImageMetaTag 0.7.12 documentation</a> &#187;</li>
+        <li class="nav-item nav-item-0"><a href="index.html">ImageMetaTag 0.7.13 documentation</a> &#187;</li>
         <li class="nav-item nav-item-this"><a href="">Search</a></li> 
       </ul>
     </div>  
@@ -94,13 +95,13 @@ <h3>Navigation</h3>
         <li class="right" >
           <a href="py-modindex.html" title="Python Module Index"
              >modules</a> |</li>
-        <li class="nav-item nav-item-0"><a href="index.html">ImageMetaTag 0.7.12 documentation</a> &#187;</li>
+        <li class="nav-item nav-item-0"><a href="index.html">ImageMetaTag 0.7.13 documentation</a> &#187;</li>
         <li class="nav-item nav-item-this"><a href="">Search</a></li> 
       </ul>
     </div>
     <div class="footer" role="contentinfo">
         &#169; Copyright 2015-2023, British Crown Copyright.
-      Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 5.0.2.
+      Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 5.3.0.
     </div>
   </body>
 </html>
\ No newline at end of file
diff --git a/docs/build/html/searchindex.js b/docs/build/html/searchindex.js
index 49fccd4..5f532f5 100644
--- a/docs/build/html/searchindex.js
+++ b/docs/build/html/searchindex.js
@@ -1,1 +1,1 @@
-Search.setIndex({"docnames": ["ImageDict", "db", "index", "savefig", "scripts", "simple", "test", "versions", "webpage"], "filenames": ["ImageDict.rst", "db.rst", "index.rst", "savefig.rst", "scripts.rst", "simple.rst", "test.rst", "versions.rst", "webpage.rst"], "titles": ["ImageMetaTag.ImageDict", "ImageMetaTag.db", "ImageMetaTag - Image metadata tagging and presentation", "ImageMetaTag.savefig", "Associated scripts packaged with ImageMetaTag", "ImageMetaTag - simplest_img_dict.py", "ImageMetaTag - test.py", "Versions of Python", "ImageMetaTag.webpage"], "terms": {"thi": [0, 1, 3, 4, 5, 6, 8], "submodul": 0, "contain": [0, 1, 3, 8], "instanc": [0, 1, 8], "purpos": [0, 3], "an": [0, 1, 2, 3, 4, 5, 8], "sort": [0, 5, 8], "imag": [0, 1, 3, 4, 5, 6, 8], "metadata": [0, 1, 3, 5, 6, 8], "suppli": [0, 1, 3, 5, 8], "savefig": [0, 1, 2], "usual": [0, 1, 3], "store": [0, 1, 3], "databas": [0, 2, 3, 4, 5], "file": [0, 2, 4, 5, 8], "form": 0, "can": [0, 1, 2, 3, 5, 6, 8], "quickli": [0, 3], "easili": [0, 2], "present": [0, 1, 3, 5, 6, 8], "webpag": [0, 2, 5, 6], "write_full_pag": [0, 5, 8], "easi": [0, 8], "exampl": [0, 4, 6, 8], "creat": [0, 2, 3, 6, 8], "shown": [0, 8], "simplest_image_dict": [0, 8], "py": [0, 2, 4, 8], "c": [0, 1, 2, 8], "crown": [0, 1, 2, 8], "copyright": [0, 1, 2, 8], "met": [0, 1, 2, 8], "offic": [0, 1, 2, 8], "all": [0, 1, 2, 3, 4, 8], "right": [0, 1, 2, 3, 8], "reserv": [0, 1, 2, 8], "releas": [0, 1, 2, 8], "under": [0, 1, 2, 8], "bsd": [0, 1, 2, 8], "3": [0, 1, 2, 3, 7, 8], "claus": [0, 1, 2, 8], "licens": [0, 1, 2, 8], "see": [0, 1, 2, 3, 5, 8], "more": [0, 1, 2, 8], "detail": [0, 1, 2, 8], "input_dict": 0, "level_nam": [0, 8], "none": [0, 1, 3, 5, 8], "selector_width": 0, "selector_anim": 0, "animation_direct": 0, "sourc": [0, 1, 2, 3, 8], "A": [0, 1, 3, 4, 6, 8], "which": [0, 1, 2, 3, 6, 8], "hold": 0, "heirach": [0, 2], "dictionari": [0, 1, 2, 3, 5, 8], "associ": [0, 1, 2], "method": [0, 3], "append": [0, 5, 8], "remov": [0, 1], "from": [0, 1, 3, 4, 5, 8], "expect": [0, 1, 3, 5], "case": [0, 1, 5, 8], "repres": 0, "larg": [0, 1, 2, 3, 6, 8], "set": [0, 1, 3, 5, 6, 8], "organis": 0, "tag": [0, 1, 3, 5], "when": [0, 1, 3, 8], "wai": [0, 4, 5], "modul": [0, 1, 2, 3, 6, 7, 8], "produc": [0, 1, 2, 3, 5, 6, 8], "web": [0, 2, 3, 4, 5, 6], "page": [0, 2, 3, 4, 5, 6], "brows": [0, 6, 8], "should": [0, 1, 3, 4, 6], "requir": [0, 1, 5, 8], "order": [0, 3, 5, 8], "In": [0, 1, 3, 5, 8], "convert": [0, 1], "flat": 0, "item": [0, 1, 3], "dict_heirachy_from_list": [0, 5], "option": [0, 1, 2, 3, 4, 8], "list": [0, 1, 3, 5, 8], "tagnam": [0, 1], "full": [0, 8], "give": 0, "name": [0, 1, 3, 8], "descript": [0, 8], "what": [0, 5], "mean": 0, "level": [0, 3, 5, 8], "input": [0, 1, 3, 8], "dict": [0, 1, 6, 8], "html": [0, 5, 6, 8], "string": [0, 1, 3, 8], "width": [0, 3], "each": [0, 3, 5, 8], "selector": [0, 8], "output": [0, 1, 3, 4, 8], "current": [0, 1, 3, 8], "unus": 0, "integ": [0, 1, 3], "index": [0, 2, 8], "anim": [0, 8], "animation_dicrect": 0, "1": [0, 3, 7], "indic": [0, 8], "move": [0, 8], "forward": 0, "backward": 0, "object": [0, 2, 6, 8], "structur": [0, 1, 2, 8], "kei": [0, 1, 5], "within": [0, 1, 3, 8], "number": [0, 1, 2, 3, 4, 5, 6], "direct": 0, "desir": [0, 3], "new_dict": 0, "devmod": 0, "fals": [0, 1, 3, 8], "skip_key_relist": 0, "new": [0, 1, 3], "singl": [0, 3, 8], "element": [0, 8], "layer": 0, "true": [0, 1, 3, 8], "stop": 0, "regener": 0, "speed": [0, 3, 4], "up": [0, 1, 3, 8], "multipl": [0, 3, 4, 6], "copy_except_dict_and_kei": 0, "return": [0, 1, 5, 8], "copi": [0, 1, 8], "except": [0, 3], "have": [0, 1, 2, 3, 5, 6, 8], "null": 0, "valu": [0, 1, 3, 5, 8], "dict_depth": [0, 8], "uniform_depth": 0, "get": [0, 4], "depth": [0, 8], "branch": 0, "plot_dict": 0, "check": [0, 8], "thei": [0, 1, 3, 5, 8], "equal": 0, "max": 0, "in_dict": 0, "0": [0, 3, 5, 8], "recurs": 0, "find": 0, "dict_index_arrai": 0, "maxdepth": 0, "verbos": [0, 1, 3, 4, 8], "refer": [0, 1], "result": [0, 3, 6], "maximum": [0, 3], "go": [0, 1, 5, 8], "ie": 0, "dict_print": 0, "indent": [0, 8], "outstr": 0, "dict_prun": 0, "dicts_prun": 0, "prune": 0, "empti": [0, 1, 5, 6], "untermin": 0, "occur": 0, "after": [0, 1, 3, 8], "part": [0, 4, 6], "been": [0, 1, 2, 3, 4, 6, 7], "wa": [0, 1, 6], "dict_remov": 0, "rm_dict": 0, "anoth": 0, "larger": [0, 8], "one": [0, 1, 4, 8], "leav": 0, "so": [0, 1, 3, 4, 5, 8], "need": [0, 1, 3, 5, 8], "clean": [0, 1], "afterward": [0, 1], "dict_union": 0, "union": 0, "flatten_list": 0, "in_list": 0, "flatten": 0, "key_at_depth": 0, "given": [0, 1, 2, 3, 8], "keys_by_depth": 0, "subdir": [0, 4], "subdirectori": [0, 1, 3, 4], "target": [0, 8], "list_keys_by_depth": 0, "its": [0, 5], "It": [0, 1, 3, 6], "much": [0, 1, 3, 5], "faster": [0, 1], "without": [0, 1, 3, 6], "call": 0, "onc": [0, 1, 2, 3, 4, 6], "end": 0, "process": [0, 1, 2, 3, 6], "complet": [0, 5, 8], "work": [0, 2, 3], "where": [0, 1, 3, 6, 8], "also": [0, 1, 2, 3, 6, 8], "uniqu": [0, 1], "locat": [0, 1, 3, 5, 8], "mergedict": 0, "dict1": 0, "dict2": 0, "altern": 0, "version": [0, 1, 2, 5], "gener": 0, "s": [0, 3, 5, 8], "mergdict": 0, "tip": 0, "becaus": [0, 1], "section": [0, 8], "slow": [0, 1, 3], "often": 0, "build": [0, 1], "thing": [0, 5], "you": [0, 1, 3], "want": [0, 5], "do": [0, 1, 3, 4], "return_from_list": 0, "vals_at_depth": 0, "differ": [0, 1, 8], "assum": [0, 1], "ha": [0, 1, 3, 4, 7], "date": 0, "last": 0, "time": [0, 1, 4, 6], "sinc": 0, "return_key_ind": 0, "out_arrai": 0, "this_set_of_ind": 0, "doe": [0, 1, 3, 6, 8], "ad": [0, 1, 3, 8], "compelt": 0, "sort_kei": [0, 5], "sort_method": [0, 5], "plot": [0, 1, 5, 6], "accord": [0, 1, 5], "particular": 0, "match": [0, 1], "valid": [0, 8], "far": 0, "ar": [0, 1, 2, 3, 4, 5, 6, 8], "mostli": 0, "focus": 0, "meteorolog": 0, "term": 0, "includ": [0, 1, 2, 3, 6, 8], "just": [0, 1, 5, 8], "ordinari": 0, "numer": [0, 5], "start": [0, 1, 3], "surfac": 0, "upward": 0, "special": 0, "like": 0, "cross": 0, "etc": [0, 3, 5], "t": [0, 1], "ascend": 0, "similar": [0, 4, 8], "specif": [0, 1], "per": 0, "while": [0, 5, 8], "rest": 0, "activ": 0, "revers": 0, "reverse_sort": [0, 5], "reverse_numer": [0, 5], "readmeta_from_imag": 0, "img_fil": [0, 5], "img_format": [0, 3], "keep_reserved_tag": 0, "read": [0, 1, 2, 5, 8], "tag_nam": [0, 1, 3], "pair": [0, 1, 3], "By": [0, 3, 8], "default": [0, 1, 3, 8], "cannot": 0, "written": [0, 1, 6, 8], "e": [0, 3], "g": [0, 3], "dpi": [0, 3], "chromat": 0, "keep": [0, 1, 3, 5], "payload": [0, 1], "heirachi": [0, 5], "onli": [0, 1, 3, 6, 8], "final": 0, "describ": [0, 6], "would": [0, 4, 5, 8], "rel": [0, 1, 3, 8], "path": [0, 1, 3, 4, 8], "dict_split": 0, "n_split": 0, "size_split": 0, "extra_opt": 0, "break": 0, "yield": 0, "sub": [0, 8], "chunk": [0, 8], "size": [0, 3, 8], "split": [0, 8], "first": [0, 8], "veri": [0, 1, 6, 8], "parallelis": [0, 6], "If": [0, 1, 3, 8], "iter": 0, "routin": [0, 1, 5], "tupl": [0, 3, 8], "One": 0, "n_slpit": 0, "must": [0, 1], "specifi": [0, 3, 8], "simple_dict_filt": 0, "simple_dict": 0, "test": [0, 1, 2, 5, 7], "raise_key_mismatch": 0, "content": [0, 1, 2, 4, 5, 8], "simpl": [0, 5, 6], "un": 0, "properti": 0, "against": 0, "roll": [0, 5], "6": [0, 1, 3, 7], "simul": 0, "216": 0, "1296": 0, "color": [0, 5], "compress": [0, 3, 5, 8], "type": [0, 5, 8], "histogram": 0, "line": [0, 3, 8], "trim": [0, 3, 5], "here": [0, 3, 6], "restrict": 0, "filter": [0, 1, 3], "second": [0, 1, 3, 8], "both": [0, 1, 3], "togeth": [0, 8], "other": [0, 1, 2, 8], "characterist": 0, "attempt": [0, 1, 3], "miss": [0, 1, 8], "rais": [0, 3], "three": 0, "logic": [0, 1], "whether": 0, "pass": [0, 1, 3, 8], "group": [0, 3, 8], "third": 0, "check_for_required_kei": 0, "img_info": [0, 1, 5], "req_kei": 0, "accordingli": 0, "write": [1, 2, 3, 5, 6], "maintain": [1, 3], "sqlite3": 1, "normal": 1, "usag": [1, 4], "primarili": 1, "figur": [1, 3], "save": [1, 3], "built": [1, 2], "load": [1, 5, 8], "For": [1, 8], "most": 1, "follow": [1, 3, 7, 8], "provid": [1, 3], "write_img_to_dbfil": [1, 3], "db_file": [1, 3], "img_filenam": 1, "add_strict": 1, "attempt_replac": 1, "timeout": [1, 3], "argument": [1, 3], "exist": [1, 3], "filenam": [1, 3, 8], "appli": [1, 3], "either": [1, 3, 8], "absolut": 1, "make": [1, 5, 8], "ani": [1, 3, 4, 5, 8], "write_img_to_open_db": 1, "try": [1, 8], "required_tag": [1, 5], "tag_str": [1, 5], "db_timeout": [1, 3], "db_attempt": [1, 3], "20": [1, 3], "n_sampl": 1, "fail": 1, "popul": 1, "entri": [1, 4], "random": [1, 6], "imagedict": [1, 2, 3, 5, 6, 8], "class": [1, 2, 3, 8], "duplic": 1, "ineffici": 1, "memori": [1, 3, 5, 8], "reduc": [1, 2, 4, 8], "consider": 1, "itself": 1, "Will": 1, "problem": 1, "older": 1, "read_img_info_from_dbfil": 1, "still": [1, 3], "del_plots_from_dbfil": 1, "do_vacuum": 1, "allow_retri": 1, "skip_warn": 1, "delet": [1, 4], "restructur": 1, "retri": 1, "allow": 1, "lock": 1, "sleep": 1, "command": [1, 6], "avoid": [1, 3], "overid": 1, "warn": 1, "request": 1, "select_dbfile_by_tag": 1, "select_tag": 1, "select": [1, 8], "field": 1, "accept": 1, "process_select_star_from": 1, "merge_db_fil": 1, "main_db_fil": 1, "add_db_fil": 1, "delete_add_db": 1, "delete_added_entri": 1, "merg": 1, "two": 1, "The": [1, 2, 6, 7, 8], "same": [1, 3, 5, 6], "them": [1, 5, 6], "were": 1, "parallel": [1, 5], "ignor": 1, "open_or_create_db_fil": 1, "restart_db": 1, "initi": [1, 8], "tabl": 1, "connect": 1, "cursor": 1, "truem": 1, "again": 1, "alreadi": [1, 3, 8], "dbcn": 1, "dbcr": 1, "open_db_fil": 1, "read_db_file_to_mem": 1, "pre": [1, 3], "held": [1, 8], "access": [1, 3, 6], "extenst": 1, "lot": [1, 5], "oper": [1, 4], "There": 1, "cost": 1, "take": 1, "few": [1, 2], "worth": 1, "ish": 1, "250k": 1, "row": 1, "suggest": 1, "100": 1, "add": [1, 2, 3], "report": [1, 3], "valueerror": [1, 3], "aren": 1, "defin": [1, 3, 5, 8], "caus": [1, 3], "rewritten": [1, 3], "column": [1, 3], "recrete_table_new_col": 1, "best": [1, 3, 5], "instead": [1, 3, 4, 6], "ideal": [1, 3], "replac": [1, 3, 8], "otherwis": 1, "read_img_info_from_dbcursor": 1, "select_dbcr_by_tag": 1, "current_col": 1, "new_col": 1, "bdcr": 1, "recreat": [1, 4], "major": 1, "chang": [1, 3], "place": 1, "deliber": [1, 6], "commit": 1, "statement": 1, "seen": 1, "intermedi": 1, "incorrect": 1, "possibl": [1, 3, 5], "db_name_to_info_kei": 1, "in_str": 1, "invers": 1, "info_key_to_db_nam": 1, "consist": [1, 4, 5], "db_content": 1, "standard": [1, 3], "format": [1, 2, 3, 5], "identifi": 1, "mai": [1, 8], "occas": 1, "nopt": 1, "intend": 1, "regular": 1, "scan_dir_for_db": 1, "basedir": 1, "img_tag_req": 1, "subdir_excl_list": 1, "known_file_tag": 1, "no_file_ext": 1, "return_tim": 1, "scan": 1, "directori": [1, 3, 5, 6, 8], "disk": [1, 4], "did": 1, "previous": 1, "optim": [1, 4], "perform": 1, "accid": 1, "unless": [1, 2, 3, 8], "behaviour": 1, "least": 1, "imt_tag_req": 1, "those": [1, 5], "don": 1, "thumbnail": [1, 3], "prevent": 1, "being": [1, 3, 8], "exclud": 1, "extens": [1, 3, 8], "known": 1, "themselv": [1, 3], "old": 1, "backup": 1, "updat": 1, "restart": 1, "python": [2, 6], "packag": 2, "around": [2, 3], "wrapper": 2, "matplotlib": [2, 3], "support": [2, 3], "us": [2, 3, 4, 5, 6, 8], "manag": 2, "sql": 2, "As": [2, 6], "involv": 2, "librari": [2, 4, 8], "common": [2, 4], "post": [2, 3], "crop": 2, "logo": [2, 3], "addit": [2, 8], "colour": [2, 3], "palett": [2, 3], "manipul": [2, 3, 4, 8], "files": [2, 3], "code": [2, 5, 6], "explicitli": 2, "state": 2, "british": 2, "2015": 2, "2023": 2, "licenc": 2, "github": [2, 5, 8], "png": [2, 3, 4], "recommend": 2, "function": [2, 5, 6, 8], "db": [2, 3, 4, 5], "commonli": 2, "open": [2, 8], "intern": 2, "util": [2, 4], "prepar": [2, 4], "whole": 2, "indidividu": 2, "compon": 2, "simplest_img_dict": 2, "script": [2, 6, 8], "rm_imt_imag": 2, "search": 2, "usaulli": 3, "iteself": 3, "fig": 3, "img_tag": [3, 5], "img_convert": 3, "do_trim": 3, "trim_bord": 3, "do_thumb": 3, "keep_open": 3, "logo_fil": 3, "logo_width": 3, "logo_height": 3, "logo_pad": 3, "logo_po": 3, "db_replac": 3, "db_add_strict": 3, "db_full_path": 3, "pyplot": 3, "optimis": 3, "depend": [3, 8], "image_file_postproc": 3, "guess": 3, "convers": 3, "system": [3, 4], "reader": 3, "writer": 3, "gamma": 3, "interlac": 3, "transpar": 3, "express": 3, "link": [3, 8], "whose": 3, "resolut": 3, "close": 3, "switch": [3, 8], "befor": [3, 8], "easiest": 3, "quickest": 3, "manner": 3, "advis": 3, "along": [3, 8], "top": [3, 5, 8], "serv": 3, "server": 3, "home": [3, 6], "public_html": [3, 6], "public": [3, 6], "elsewher": 3, "due": 3, "storag": 3, "limit": 3, "symbol": 3, "databs": [3, 5], "correct": 3, "complex": 3, "could": [3, 8], "outfil": 3, "img_buf": 3, "img_dpi": 3, "overwrit": [3, 8], "buffer": 3, "avail": [3, 8], "horizont": [3, 8], "vertic": 3, "eg": 3, "72": 3, "control": 3, "light": 3, "rgba": 3, "rgb": 3, "2": [3, 7, 8], "moder": [3, 6], "adapt": 3, "256": 3, "heavi": 3, "8": [3, 7], "bit": 3, "whitespac": 3, "edg": 3, "pixel": 3, "border": [3, 5], "left": 3, "resiz": 3, "antialias": 3, "well": 3, "shrink": 3, "text": [3, 5, 8], "smaller": 3, "aspect": 3, "ratio": 3, "alwai": [3, 8], "overrid": 3, "height": 3, "40": 3, "pad": 3, "zero": 3, "corner": 3, "legend": 3, "context": 3, "upper": 3, "grow": 3, "fit": 3, "lower": 3, "4": [3, 7], "small": [4, 8], "pacakg": 4, "alongsid": [4, 8], "interfac": 4, "task": 4, "imt": [4, 5], "basic": [4, 6], "file2": 4, "file1": 4, "wildcard": 4, "v": 4, "f": 4, "forc": 4, "rm": 4, "note": 4, "design": 4, "slower": 4, "than": [4, 8], "risk": 4, "out": [4, 8], "sync": 4, "aim": 5, "show": [5, 8], "simplest": 5, "practic": 5, "moduleauthor": 5, "melissa": 5, "brook": 5, "http": [5, 6, 8], "com": [5, 8], "melissaebrook": 5, "minim": 5, "import": [5, 6], "datetim": 5, "we": [5, 8], "coupl": 5, "get_webdir": 5, "define_imt_db": 5, "date_format_www": 5, "def": 5, "__main__": 5, "real": 5, "applic": 5, "own": 5, "sure": 5, "webdir": 5, "imt_db": 5, "how": [5, 6], "now": [5, 8], "img_list": 5, "images_and_tag": 5, "construct": [5, 8], "therefor": 5, "effici": 5, "print": 5, "assembl": 5, "img_dict": [5, 8], "iteritem": 5, "temporari": [5, 8], "tmp_dict": 5, "turn": 5, "els": 5, "page_filenam": [5, 8], "titl": [5, 8], "page_titl": 5, "wegbpag": 5, "webpage_preambl": 5, "h3": 5, "some": 5, "bottom": [5, 8], "webpage_postambl": 5, "i": 5, "strftime": 5, "preambl": [5, 8], "postambl": [5, 8], "sign": 5, "off": 5, "__path__": 5, "__name__": 5, "main": 6, "act": 6, "demonstr": 6, "action": 6, "data": [6, 8], "run": 6, "imagemetatagtest": 6, "view": [6, 8], "gw": 6, "ceda": 6, "ac": 6, "uk": 6, "mo_forecast": 6, "page_para": 6, "page_multi": 6, "re": 6, "skip": 6, "scalabl": 6, "wepag": [6, 8], "9": 6, "factori": 6, "362880": 6, "member": 6, "mimic": 6, "actual": [6, 8], "biggus_pageu": 6, "big": 6, "imagemetatag": 7, "7": 7, "gcc": 7, "20120305": 7, "red": 7, "hat": 7, "linux2": 7, "12": 7, "20120313": 7, "5": 7, "20140120": 7, "15": 7, "linux": 7, "made": 8, "short": 8, "javascript": 8, "js": 8, "json": 8, "tree": 8, "strcutur": 8, "To": 8, "zlib": 8, "pako": 8, "restor": 8, "browser": 8, "done": 8, "templat": 8, "latter": 8, "write_js_to_head": 8, "inform": 8, "header": 8, "write_js_placehold": 8, "placehold": 8, "write_json": 8, "dump": 8, "copy_required_javascript": 8, "At": 8, "style": 8, "dropdownmenu": 8, "hopefulli": 8, "soon": 8, "filepath": 8, "tab_s_nam": 8, "postamble_no_imt_link": 8, "initial_selector": 8, "show_selector_nam": 8, "show_singleton_selector": 8, "optgroup": 8, "url_typ": 8, "int": 8, "only_show_rel_url": 8, "horiz": 8, "dropdown": 8, "write_intmed_tmpfil": 8, "keyword": 8, "css": 8, "load_err_msg": 8, "rather": 8, "appropri": 8, "messag": 8, "sai": 8, "abl": 8, "menu": 8, "denot": 8, "frame": 8, "bodi": 8, "quit": 8, "postabl": 8, "document": 8, "write_js_setup": 8, "displai": 8, "full_name_map": 8, "readabl": 8, "determin": 8, "url": 8, "str": 8, "stdout": 8, "inflat": 8, "nodeca": 8, "amount": 8, "pleas": 8, "wait": 8, "crash": 8, "internet": 8, "explor": 8, "correctli": 8, "firefox": 8, "chrome": 8, "upon": 8, "file_obj": 8, "json_fil": 8, "js_file": 8, "pagenam": 8, "tabnam": 8, "selector_prefix": 8, "url_separ": 8, "ind": 8, "config": 8, "These": 8, "imt_optgroup_ord": 8, "opgroup": 8, "taken": 8, "represent": 8, "prefix": 8, "sel": 8, "metadata7": 8, "animated_level": 8, "dict_dept": 8, "variabl": 8, "visibl": 8, "peopl": 8, "futur": 8, "great": 8, "length": 8, "label": 8, "button": 8, "file_name_no_ext": 8, "chunk_char_limit": 8, "10000000": 8, "strucutur": 8, "compres": 8, "effic": 8, "tempfil": 8, "final_fil": 8, "file_dir": 8, "base": 8, "overwritten": 8, "obtain": 8}, "objects": {"": [[2, 0, 0, "-", "ImageMetaTag"]], "ImageMetaTag": [[0, 1, 1, "", "ImageDict"], [0, 3, 1, "", "check_for_required_keys"], [1, 0, 0, "-", "db"], [0, 3, 1, "", "dict_heirachy_from_list"], [0, 3, 1, "", "dict_split"], [3, 3, 1, "", "image_file_postproc"], [0, 0, 0, "-", "img_dict"], [0, 3, 1, "", "readmeta_from_image"], [3, 3, 1, "", "savefig"], [0, 3, 1, "", "simple_dict_filter"], [8, 0, 0, "-", "webpage"]], "ImageMetaTag.ImageDict": [[0, 2, 1, "", "append"], [0, 2, 1, "", "copy_except_dict_and_keys"], [0, 2, 1, "", "dict_depth"], [0, 2, 1, "", "dict_depths"], [0, 2, 1, "", "dict_index_array"], [0, 2, 1, "", "dict_print"], [0, 2, 1, "", "dict_prune"], [0, 2, 1, "", "dict_remove"], [0, 2, 1, "", "dict_union"], [0, 2, 1, "", "flatten_lists"], [0, 2, 1, "", "key_at_depth"], [0, 2, 1, "", "keys_by_depth"], [0, 2, 1, "", "list_keys_by_depth"], [0, 2, 1, "", "mergedicts"], [0, 2, 1, "", "remove"], [0, 2, 1, "", "return_from_list"], [0, 2, 1, "", "return_key_inds"], [0, 2, 1, "", "sort_keys"]], "ImageMetaTag.db": [[1, 3, 1, "", "db_name_to_info_key"], [1, 3, 1, "", "del_plots_from_dbfile"], [1, 3, 1, "", "info_key_to_db_name"], [1, 3, 1, "", "merge_db_files"], [1, 3, 1, "", "open_db_file"], [1, 3, 1, "", "open_or_create_db_file"], [1, 3, 1, "", "process_select_star_from"], [1, 3, 1, "", "read"], [1, 3, 1, "", "read_db_file_to_mem"], [1, 3, 1, "", "read_img_info_from_dbcursor"], [1, 3, 1, "", "recrete_table_new_cols"], [1, 3, 1, "", "scan_dir_for_db"], [1, 3, 1, "", "select_dbcr_by_tags"], [1, 3, 1, "", "select_dbfile_by_tags"], [1, 3, 1, "", "write_img_to_dbfile"], [1, 3, 1, "", "write_img_to_open_db"]], "ImageMetaTag.webpage": [[8, 3, 1, "", "copy_required_javascript"], [8, 3, 1, "", "write_full_page"], [8, 3, 1, "", "write_js_placeholders"], [8, 3, 1, "", "write_js_to_header"], [8, 3, 1, "", "write_json"]]}, "objtypes": {"0": "py:module", "1": "py:class", "2": "py:method", "3": "py:function"}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "class", "Python class"], "2": ["py", "method", "Python method"], "3": ["py", "function", "Python function"]}, "titleterms": {"imagemetatag": [0, 1, 2, 3, 4, 5, 6, 8], "imagedict": 0, "The": [0, 3], "class": 0, "function": [0, 1, 3], "us": [0, 1], "prepar": 0, "db": 1, "commonli": 1, "open": 1, "creat": 1, "file": [1, 3], "work": 1, "databas": 1, "intern": 1, "util": 1, "imag": 2, "metadata": 2, "tag": 2, "present": 2, "indic": 2, "tabl": 2, "savefig": 3, "wrapper": 3, "recommend": 3, "structur": 3, "other": 3, "associ": 4, "script": 4, "packag": 4, "rm_imt_imag": 4, "simplest_img_dict": 5, "py": [5, 6], "test": 6, "version": 7, "python": 7, "webpag": 8, "write": 8, "whole": 8, "page": 8, "As": 8, "indidividu": 8, "compon": 8}, "envversion": {"sphinx.domains.c": 2, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 6, "sphinx.domains.index": 1, "sphinx.domains.javascript": 2, "sphinx.domains.math": 2, "sphinx.domains.python": 3, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.todo": 2, "sphinx.ext.viewcode": 1, "sphinx": 56}})
\ No newline at end of file
+Search.setIndex({"docnames": ["ImageDict", "db", "index", "savefig", "scripts", "simple", "test", "versions", "webpage"], "filenames": ["ImageDict.rst", "db.rst", "index.rst", "savefig.rst", "scripts.rst", "simple.rst", "test.rst", "versions.rst", "webpage.rst"], "titles": ["ImageMetaTag.ImageDict", "ImageMetaTag.db", "ImageMetaTag - Image metadata tagging and presentation", "ImageMetaTag.savefig", "Associated scripts packaged with ImageMetaTag", "ImageMetaTag - simplest_img_dict.py", "ImageMetaTag - test.py", "Versions of Python", "ImageMetaTag.webpage"], "terms": {"thi": [0, 1, 3, 4, 5, 6, 8], "submodul": 0, "contain": [0, 1, 3, 8], "instanc": [0, 1, 8], "purpos": [0, 3], "an": [0, 1, 2, 3, 4, 5, 8], "i": [0, 1, 2, 3, 4, 5, 6, 8], "sort": [0, 5, 8], "imag": [0, 1, 3, 4, 5, 6, 8], "metadata": [0, 1, 3, 5, 6, 8], "suppli": [0, 1, 3, 5, 8], "savefig": [0, 1, 2], "usual": [0, 1, 3], "store": [0, 1, 3], "databas": [0, 2, 3, 4, 5], "file": [0, 2, 4, 5, 8], "form": 0, "can": [0, 1, 2, 3, 5, 6, 8], "quickli": [0, 3], "easili": [0, 2], "present": [0, 1, 3, 5, 6, 8], "webpag": [0, 2, 5, 6], "write_full_pag": [0, 5, 8], "easi": [0, 8], "exampl": [0, 4, 6, 8], "creat": [0, 2, 3, 6, 8], "shown": [0, 8], "simplest_image_dict": [0, 8], "py": [0, 2, 8], "c": [0, 1, 2, 8], "crown": [0, 1, 2, 8], "copyright": [0, 1, 2, 8], "met": [0, 1, 2, 8], "offic": [0, 1, 2, 8], "all": [0, 1, 2, 3, 4, 8], "right": [0, 1, 2, 3, 8], "reserv": [0, 1, 2, 8], "releas": [0, 1, 2, 8], "under": [0, 1, 2, 8], "bsd": [0, 1, 2, 8], "3": [0, 1, 2, 3, 7, 8], "claus": [0, 1, 2, 8], "licens": [0, 1, 2, 8], "see": [0, 1, 2, 3, 5, 8], "more": [0, 1, 2, 8], "detail": [0, 1, 2, 8], "input_dict": 0, "level_nam": [0, 8], "none": [0, 1, 3, 5, 8], "selector_width": 0, "selector_anim": 0, "animation_direct": 0, "sourc": [0, 1, 2, 3, 8], "A": [0, 1, 3, 4, 6, 8], "which": [0, 1, 2, 3, 6, 8], "hold": 0, "heirach": [0, 2], "dictionari": [0, 1, 2, 3, 5, 8], "associ": [0, 1, 2], "method": [0, 3], "append": [0, 5, 8], "remov": [0, 1], "from": [0, 1, 3, 4, 5, 8], "expect": [0, 1, 3, 5], "case": [0, 1, 5, 8], "repres": 0, "larg": [0, 1, 2, 3, 6, 8], "set": [0, 1, 3, 5, 6, 8], "organis": 0, "tag": [0, 1, 3, 5], "when": [0, 1, 3, 8], "wai": [0, 4, 5], "modul": [0, 1, 2, 3, 6, 7, 8], "produc": [0, 1, 2, 3, 5, 6, 8], "web": [0, 2, 3, 4, 5, 6], "page": [0, 2, 3, 4, 5, 6], "brows": [0, 6, 8], "should": [0, 1, 3, 4, 6], "requir": [0, 1, 5, 8], "order": [0, 3, 5, 8], "In": [0, 1, 3, 5, 8], "convert": [0, 1], "flat": 0, "item": [0, 1, 3], "dict_heirachy_from_list": [0, 5], "option": [0, 1, 2, 3, 4, 8], "list": [0, 1, 3, 5, 8], "tagnam": [0, 1], "full": [0, 8], "give": 0, "name": [0, 1, 3, 8], "descript": [0, 8], "what": [0, 5], "mean": 0, "level": [0, 3, 5, 8], "input": [0, 1, 3, 8], "dict": [0, 1, 6, 8], "html": [0, 5, 6, 8], "string": [0, 1, 3, 8], "width": [0, 3], "each": [0, 3, 5, 8], "selector": [0, 8], "output": [0, 1, 3, 4, 8], "current": [0, 1, 3, 8], "unus": 0, "integ": [0, 1, 3], "index": [0, 2, 8], "anim": [0, 8], "animation_dicrect": 0, "1": [0, 3, 7], "indic": [0, 8], "move": [0, 8], "forward": 0, "backward": 0, "object": [0, 2, 6, 8], "structur": [0, 1, 2, 8], "kei": [0, 1, 5], "within": [0, 1, 3, 8], "number": [0, 1, 2, 3, 4, 5, 6], "direct": 0, "desir": [0, 3], "new_dict": 0, "devmod": 0, "fals": [0, 1, 3, 8], "skip_key_relist": 0, "new": [0, 1, 3], "singl": [0, 3, 8], "element": [0, 8], "layer": 0, "true": [0, 1, 3, 8], "stop": 0, "regener": 0, "speed": [0, 3, 4], "up": [0, 1, 3, 8], "multipl": [0, 3, 4, 6], "copy_except_dict_and_kei": 0, "return": [0, 1, 5, 8], "copi": [0, 1, 8], "except": [0, 3], "have": [0, 1, 2, 3, 5, 6, 8], "null": 0, "valu": [0, 1, 3, 5, 8], "dict_depth": [0, 8], "uniform_depth": 0, "get": [0, 4], "depth": [0, 8], "branch": 0, "plot_dict": 0, "check": [0, 8], "thei": [0, 1, 3, 5, 8], "equal": 0, "max": 0, "in_dict": 0, "0": [0, 3, 5, 8], "recurs": 0, "find": 0, "dict_index_arrai": 0, "maxdepth": 0, "verbos": [0, 1, 3, 4, 8], "refer": [0, 1], "result": [0, 3, 6], "maximum": [0, 3], "go": [0, 1, 5, 8], "ie": 0, "dict_print": 0, "indent": [0, 8], "outstr": 0, "dict_prun": 0, "dicts_prun": 0, "prune": 0, "empti": [0, 1, 5, 6], "untermin": 0, "occur": 0, "after": [0, 1, 3, 8], "part": [0, 4, 6], "been": [0, 1, 2, 3, 4, 6, 7], "wa": [0, 1, 6], "dict_remov": 0, "rm_dict": 0, "anoth": 0, "larger": [0, 8], "one": [0, 1, 4, 8], "leav": 0, "so": [0, 1, 3, 4, 5, 8], "need": [0, 1, 3, 5, 8], "clean": [0, 1], "afterward": [0, 1], "dict_union": 0, "union": 0, "flatten_list": 0, "in_list": 0, "flatten": 0, "key_at_depth": 0, "given": [0, 1, 2, 3, 8], "keys_by_depth": 0, "subdir": [0, 4], "subdirectori": [0, 1, 3, 4], "target": [0, 8], "list_keys_by_depth": 0, "its": [0, 5], "It": [0, 1, 3, 6], "much": [0, 1, 3, 5], "faster": [0, 1], "without": [0, 1, 3, 6], "call": 0, "onc": [0, 1, 2, 3, 4, 6], "end": 0, "process": [0, 1, 2, 3, 6], "complet": [0, 5, 8], "work": [0, 2, 3], "where": [0, 1, 3, 6, 8], "also": [0, 1, 2, 3, 6, 8], "uniqu": [0, 1], "locat": [0, 1, 3, 5, 8], "mergedict": 0, "dict1": 0, "dict2": 0, "altern": 0, "version": [0, 1, 2, 5], "gener": 0, "": [0, 3, 5, 8], "mergdict": 0, "tip": 0, "becaus": [0, 1], "section": [0, 8], "slow": [0, 1, 3], "often": 0, "build": [0, 1], "thing": [0, 5], "you": [0, 1, 3], "want": [0, 5], "do": [0, 1, 3, 4], "return_from_list": 0, "vals_at_depth": 0, "differ": [0, 1, 8], "assum": [0, 1], "ha": [0, 1, 3, 4, 7], "date": 0, "last": 0, "time": [0, 1, 4, 6], "sinc": 0, "return_key_ind": 0, "out_arrai": 0, "this_set_of_ind": 0, "doe": [0, 1, 3, 6, 8], "ad": [0, 1, 3, 8], "compelt": 0, "sort_kei": [0, 5], "sort_method": [0, 5], "plot": [0, 1, 5, 6], "accord": [0, 1, 5], "particular": 0, "match": [0, 1], "valid": [0, 8], "far": 0, "ar": [0, 1, 2, 3, 4, 5, 6, 8], "mostli": 0, "focus": 0, "meteorolog": 0, "term": 0, "includ": [0, 1, 2, 3, 6, 8], "just": [0, 1, 5, 8], "ordinari": 0, "numer": [0, 5], "start": [0, 1, 3], "surfac": 0, "upward": 0, "special": 0, "like": 0, "cross": 0, "etc": [0, 3, 5], "t": [0, 1], "ascend": 0, "similar": [0, 4, 8], "specif": [0, 1], "per": 0, "while": [0, 5, 8], "rest": 0, "activ": 0, "revers": 0, "reverse_sort": [0, 5], "reverse_numer": [0, 5], "readmeta_from_imag": 0, "img_fil": [0, 5], "img_format": [0, 3], "keep_reserved_tag": 0, "read": [0, 1, 2, 5, 8], "tag_nam": [0, 1, 3], "pair": [0, 1, 3], "By": [0, 3, 8], "default": [0, 1, 3, 8], "cannot": 0, "written": [0, 1, 6, 8], "e": [0, 3], "g": [0, 3], "dpi": [0, 3], "chromat": 0, "keep": [0, 1, 3, 5], "payload": [0, 1], "heirachi": [0, 5], "onli": [0, 1, 3, 6, 8], "final": 0, "describ": [0, 6], "would": [0, 4, 5, 8], "rel": [0, 1, 3, 8], "path": [0, 1, 3, 4, 8], "dict_split": 0, "n_split": 0, "size_split": 0, "extra_opt": 0, "break": 0, "yield": 0, "sub": [0, 8], "chunk": [0, 8], "size": [0, 3, 8], "split": [0, 8], "first": [0, 8], "veri": [0, 1, 6, 8], "parallelis": [0, 6], "If": [0, 1, 3, 8], "iter": 0, "routin": [0, 1, 5], "tupl": [0, 3, 8], "One": 0, "n_slpit": 0, "must": [0, 1], "specifi": [0, 3, 8], "simple_dict_filt": 0, "simple_dict": 0, "test": [0, 1, 2, 5, 7], "raise_key_mismatch": 0, "content": [0, 1, 2, 4, 5, 8], "simpl": [0, 5, 6], "un": 0, "properti": 0, "against": 0, "roll": [0, 5], "6": [0, 1, 3, 7], "simul": 0, "216": 0, "1296": 0, "color": [0, 5], "compress": [0, 3, 5, 8], "type": [0, 5, 8], "histogram": 0, "line": [0, 3, 8], "trim": [0, 3, 5], "here": [0, 3, 6], "restrict": 0, "filter": [0, 1, 3], "second": [0, 1, 3, 8], "both": [0, 1, 3], "togeth": [0, 8], "other": [0, 1, 2, 8], "characterist": 0, "attempt": [0, 1, 3], "miss": [0, 1, 8], "rais": [0, 3], "three": 0, "logic": [0, 1], "whether": 0, "pass": [0, 1, 3, 8], "group": [0, 3, 8], "third": 0, "check_for_required_kei": 0, "img_info": [0, 1, 5], "req_kei": 0, "accordingli": 0, "write": [1, 2, 3, 5, 6], "maintain": [1, 3], "sqlite3": 1, "normal": 1, "usag": [1, 4], "primarili": 1, "figur": [1, 3], "save": [1, 3], "built": [1, 2], "load": [1, 5, 8], "For": [1, 8], "most": 1, "follow": [1, 3, 7, 8], "provid": [1, 3], "write_img_to_dbfil": [1, 3], "db_file": [1, 3], "img_filenam": 1, "add_strict": 1, "attempt_replac": 1, "timeout": [1, 3], "argument": [1, 3], "exist": [1, 3], "filenam": [1, 3, 8], "appli": [1, 3], "either": [1, 3, 8], "absolut": 1, "make": [1, 5, 8], "ani": [1, 3, 4, 5, 8], "write_img_to_open_db": 1, "try": [1, 8], "required_tag": [1, 5], "tag_str": [1, 5], "db_timeout": [1, 3], "db_attempt": [1, 3], "20": [1, 3], "n_sampl": 1, "fail": 1, "popul": 1, "entri": [1, 4], "random": [1, 6], "imagedict": [1, 2, 3, 5, 6, 8], "class": [1, 2, 3, 8], "duplic": 1, "ineffici": 1, "memori": [1, 3, 5, 8], "reduc": [1, 2, 4, 8], "consider": 1, "itself": 1, "Will": 1, "problem": 1, "older": 1, "read_img_info_from_dbfil": 1, "still": [1, 3], "del_plots_from_dbfil": 1, "do_vacuum": 1, "allow_retri": 1, "skip_warn": 1, "delet": [1, 4], "restructur": 1, "retri": 1, "allow": 1, "lock": 1, "sleep": 1, "command": [1, 6], "avoid": [1, 3], "overid": 1, "warn": 1, "request": 1, "select_dbfile_by_tag": 1, "select_tag": 1, "select": [1, 8], "field": 1, "accept": 1, "process_select_star_from": 1, "merge_db_fil": 1, "main_db_fil": 1, "add_db_fil": 1, "delete_add_db": 1, "delete_added_entri": 1, "merg": 1, "two": 1, "The": [1, 2, 6, 7, 8], "same": [1, 3, 5, 6], "them": [1, 5, 6], "were": 1, "parallel": [1, 5], "ignor": 1, "open_or_create_db_fil": 1, "restart_db": 1, "initi": [1, 8], "tabl": 1, "connect": 1, "cursor": 1, "truem": 1, "again": 1, "alreadi": [1, 3, 8], "dbcn": 1, "dbcr": 1, "open_db_fil": 1, "read_db_file_to_mem": 1, "pre": [1, 3], "held": [1, 8], "access": [1, 3, 6], "extenst": 1, "lot": [1, 5], "oper": [1, 4], "There": 1, "cost": 1, "take": 1, "few": [1, 2], "worth": 1, "ish": 1, "250k": 1, "row": 1, "suggest": 1, "100": 1, "add": [1, 2, 3], "report": [1, 3], "valueerror": [1, 3], "aren": 1, "defin": [1, 3, 5, 8], "caus": [1, 3], "rewritten": [1, 3], "column": [1, 3], "recrete_table_new_col": 1, "best": [1, 3, 5], "instead": [1, 3, 4, 6], "ideal": [1, 3], "replac": [1, 3, 8], "otherwis": 1, "read_img_info_from_dbcursor": 1, "select_dbcr_by_tag": 1, "current_col": 1, "new_col": 1, "bdcr": 1, "recreat": [1, 4], "major": 1, "chang": [1, 3], "place": 1, "deliber": [1, 6], "commit": 1, "statement": 1, "seen": 1, "intermedi": 1, "incorrect": 1, "possibl": [1, 3, 5], "db_name_to_info_kei": 1, "in_str": 1, "invers": 1, "info_key_to_db_nam": 1, "consist": [1, 4, 5], "db_content": 1, "standard": [1, 3], "format": [1, 2, 3, 5], "identifi": 1, "mai": [1, 8], "occas": 1, "nopt": 1, "intend": 1, "regular": 1, "scan_dir_for_db": 1, "basedir": 1, "img_tag_req": 1, "subdir_excl_list": 1, "known_file_tag": 1, "no_file_ext": 1, "return_tim": 1, "scan": 1, "directori": [1, 3, 5, 6, 8], "disk": [1, 4], "did": 1, "previous": 1, "optim": [1, 4], "perform": 1, "accid": 1, "unless": [1, 2, 3, 8], "behaviour": 1, "least": 1, "imt_tag_req": 1, "those": [1, 5], "don": 1, "thumbnail": [1, 3], "prevent": 1, "being": [1, 3, 8], "exclud": 1, "extens": [1, 3, 8], "known": 1, "themselv": [1, 3], "old": 1, "backup": 1, "updat": 1, "restart": 1, "python": [2, 6], "packag": 2, "around": [2, 3], "wrapper": 2, "matplotlib": [2, 3], "support": [2, 3], "us": [2, 3, 4, 5, 6, 8], "manag": 2, "sql": 2, "As": [2, 6], "involv": 2, "librari": [2, 4, 8], "common": [2, 4], "post": [2, 3], "crop": 2, "logo": [2, 3], "addit": [2, 8], "colour": [2, 3], "palett": [2, 3], "manipul": [2, 3, 4, 8], "files": [2, 3], "code": [2, 5, 6], "explicitli": 2, "state": 2, "british": 2, "2015": 2, "2023": 2, "licenc": 2, "github": [2, 5, 8], "png": [2, 3, 4], "recommend": 2, "function": [2, 5, 6, 8], "db": [2, 3, 4, 5], "commonli": 2, "open": [2, 8], "intern": 2, "util": [2, 4], "prepar": [2, 4], "whole": 2, "indidividu": 2, "compon": 2, "simplest_img_dict": 2, "script": [2, 6, 8], "rm_imt_imag": 2, "search": 2, "usaulli": 3, "iteself": 3, "fig": 3, "img_tag": [3, 5], "img_convert": 3, "do_trim": 3, "trim_bord": 3, "do_thumb": 3, "keep_open": 3, "logo_fil": 3, "logo_width": 3, "logo_height": 3, "logo_pad": 3, "logo_po": 3, "db_replac": 3, "db_add_strict": 3, "db_full_path": 3, "pyplot": 3, "optimis": 3, "depend": [3, 8], "image_file_postproc": 3, "guess": 3, "convers": 3, "system": [3, 4], "reader": 3, "writer": 3, "gamma": 3, "interlac": 3, "transpar": 3, "express": 3, "link": [3, 8], "whose": 3, "resolut": 3, "close": 3, "switch": [3, 8], "befor": [3, 8], "easiest": 3, "quickest": 3, "manner": 3, "advis": 3, "along": [3, 8], "top": [3, 5, 8], "serv": 3, "server": 3, "home": [3, 6], "public_html": [3, 6], "public": [3, 6], "elsewher": 3, "due": 3, "storag": 3, "limit": 3, "symbol": 3, "databs": [3, 5], "correct": 3, "complex": 3, "could": [3, 8], "outfil": 3, "img_buf": 3, "img_dpi": 3, "overwrit": [3, 8], "buffer": 3, "avail": [3, 8], "horizont": [3, 8], "vertic": 3, "eg": 3, "72": 3, "control": 3, "light": 3, "rgba": 3, "rgb": 3, "2": [3, 7, 8], "moder": [3, 6], "adapt": 3, "256": 3, "heavi": 3, "8": [3, 7], "bit": 3, "whitespac": 3, "edg": 3, "pixel": 3, "border": [3, 5], "left": 3, "resiz": 3, "antialias": 3, "well": 3, "shrink": 3, "text": [3, 5, 8], "smaller": 3, "aspect": 3, "ratio": 3, "alwai": [3, 8], "overrid": 3, "height": 3, "40": 3, "pad": 3, "zero": 3, "corner": 3, "legend": 3, "context": 3, "upper": 3, "grow": 3, "fit": 3, "lower": 3, "4": [3, 7], "small": [4, 8], "pacakg": 4, "alongsid": [4, 8], "interfac": 4, "task": 4, "imt": [4, 5], "basic": [4, 6], "file2": 4, "file1": 4, "wildcard": 4, "v": 4, "f": 4, "forc": 4, "rm": 4, "note": 4, "design": 4, "slower": 4, "than": [4, 8], "risk": 4, "out": [4, 8], "sync": 4, "aim": 5, "show": [5, 8], "simplest": 5, "practic": 5, "moduleauthor": 5, "melissa": 5, "brook": 5, "http": [5, 6, 8], "com": [5, 8], "melissaebrook": 5, "minim": 5, "import": [5, 6], "datetim": 5, "we": [5, 8], "coupl": 5, "get_webdir": 5, "define_imt_db": 5, "date_format_www": 5, "def": 5, "__main__": 5, "real": 5, "applic": 5, "own": 5, "sure": 5, "webdir": 5, "imt_db": 5, "how": [5, 6], "now": [5, 8], "img_list": 5, "images_and_tag": 5, "construct": [5, 8], "therefor": 5, "effici": 5, "print": 5, "assembl": 5, "img_dict": [5, 8], "iteritem": 5, "temporari": [5, 8], "tmp_dict": 5, "turn": 5, "els": 5, "page_filenam": [5, 8], "titl": [5, 8], "page_titl": 5, "wegbpag": 5, "webpage_preambl": 5, "h3": 5, "some": 5, "bottom": [5, 8], "webpage_postambl": 5, "strftime": 5, "preambl": [5, 8], "postambl": [5, 8], "sign": 5, "off": 5, "__path__": 5, "__name__": 5, "main": 6, "act": 6, "demonstr": 6, "action": 6, "data": [6, 8], "run": 6, "imagemetatagtest": 6, "view": [6, 8], "gw": 6, "ceda": 6, "ac": 6, "uk": 6, "mo_forecast": 6, "page_para": 6, "page_multi": 6, "re": 6, "skip": 6, "scalabl": 6, "wepag": [6, 8], "9": 6, "factori": 6, "362880": 6, "member": 6, "mimic": 6, "actual": [6, 8], "biggus_pageu": 6, "big": 6, "imagemetatag": 7, "7": 7, "gcc": 7, "20120305": 7, "red": 7, "hat": 7, "linux2": 7, "12": 7, "20120313": 7, "5": 7, "20140120": 7, "15": 7, "linux": 7, "made": 8, "short": 8, "javascript": 8, "j": 8, "json": 8, "tree": 8, "strcutur": 8, "To": 8, "zlib": 8, "pako": 8, "restor": 8, "browser": 8, "done": 8, "templat": 8, "latter": 8, "write_js_to_head": 8, "inform": 8, "header": 8, "write_js_placehold": 8, "placehold": 8, "write_json": 8, "dump": 8, "copy_required_javascript": 8, "At": 8, "style": 8, "dropdownmenu": 8, "hopefulli": 8, "soon": 8, "filepath": 8, "tab_s_nam": 8, "postamble_no_imt_link": 8, "initial_selector": 8, "show_selector_nam": 8, "show_singleton_selector": 8, "optgroup": 8, "url_typ": 8, "int": 8, "only_show_rel_url": 8, "horiz": 8, "dropdown": 8, "write_intmed_tmpfil": 8, "keyword": 8, "css": 8, "load_err_msg": 8, "rather": 8, "appropri": 8, "messag": 8, "sai": 8, "abl": 8, "menu": 8, "denot": 8, "frame": 8, "bodi": 8, "quit": 8, "postabl": 8, "document": 8, "write_js_setup": 8, "displai": 8, "full_name_map": 8, "readabl": 8, "determin": 8, "url": 8, "str": 8, "stdout": 8, "inflat": 8, "nodeca": 8, "amount": 8, "pleas": 8, "wait": 8, "crash": 8, "internet": 8, "explor": 8, "correctli": 8, "firefox": 8, "chrome": 8, "upon": 8, "file_obj": 8, "json_fil": 8, "js_file": 8, "pagenam": 8, "tabnam": 8, "selector_prefix": 8, "url_separ": 8, "ind": 8, "config": 8, "These": 8, "imt_optgroup_ord": 8, "opgroup": 8, "taken": 8, "represent": 8, "prefix": 8, "sel": 8, "metadata7": 8, "animated_level": 8, "dict_dept": 8, "variabl": 8, "visibl": 8, "peopl": 8, "futur": 8, "great": 8, "length": 8, "label": 8, "button": 8, "file_name_no_ext": 8, "chunk_char_limit": 8, "10000000": 8, "strucutur": 8, "compres": 8, "effic": 8, "tempfil": 8, "final_fil": 8, "file_dir": 8, "base": 8, "overwritten": 8, "obtain": 8}, "objects": {"": [[2, 0, 0, "-", "ImageMetaTag"]], "ImageMetaTag": [[0, 1, 1, "", "ImageDict"], [0, 3, 1, "", "check_for_required_keys"], [1, 0, 0, "-", "db"], [0, 3, 1, "", "dict_heirachy_from_list"], [0, 3, 1, "", "dict_split"], [3, 3, 1, "", "image_file_postproc"], [0, 0, 0, "-", "img_dict"], [0, 3, 1, "", "readmeta_from_image"], [3, 3, 1, "", "savefig"], [0, 3, 1, "", "simple_dict_filter"], [8, 0, 0, "-", "webpage"]], "ImageMetaTag.ImageDict": [[0, 2, 1, "", "append"], [0, 2, 1, "", "copy_except_dict_and_keys"], [0, 2, 1, "", "dict_depth"], [0, 2, 1, "", "dict_depths"], [0, 2, 1, "", "dict_index_array"], [0, 2, 1, "", "dict_print"], [0, 2, 1, "", "dict_prune"], [0, 2, 1, "", "dict_remove"], [0, 2, 1, "", "dict_union"], [0, 2, 1, "", "flatten_lists"], [0, 2, 1, "", "key_at_depth"], [0, 2, 1, "", "keys_by_depth"], [0, 2, 1, "", "list_keys_by_depth"], [0, 2, 1, "", "mergedicts"], [0, 2, 1, "", "remove"], [0, 2, 1, "", "return_from_list"], [0, 2, 1, "", "return_key_inds"], [0, 2, 1, "", "sort_keys"]], "ImageMetaTag.db": [[1, 3, 1, "", "db_name_to_info_key"], [1, 3, 1, "", "del_plots_from_dbfile"], [1, 3, 1, "", "info_key_to_db_name"], [1, 3, 1, "", "merge_db_files"], [1, 3, 1, "", "open_db_file"], [1, 3, 1, "", "open_or_create_db_file"], [1, 3, 1, "", "process_select_star_from"], [1, 3, 1, "", "read"], [1, 3, 1, "", "read_db_file_to_mem"], [1, 3, 1, "", "read_img_info_from_dbcursor"], [1, 3, 1, "", "recrete_table_new_cols"], [1, 3, 1, "", "scan_dir_for_db"], [1, 3, 1, "", "select_dbcr_by_tags"], [1, 3, 1, "", "select_dbfile_by_tags"], [1, 3, 1, "", "write_img_to_dbfile"], [1, 3, 1, "", "write_img_to_open_db"]], "ImageMetaTag.webpage": [[8, 3, 1, "", "copy_required_javascript"], [8, 3, 1, "", "write_full_page"], [8, 3, 1, "", "write_js_placeholders"], [8, 3, 1, "", "write_js_to_header"], [8, 3, 1, "", "write_json"]]}, "objtypes": {"0": "py:module", "1": "py:class", "2": "py:method", "3": "py:function"}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "class", "Python class"], "2": ["py", "method", "Python method"], "3": ["py", "function", "Python function"]}, "titleterms": {"imagemetatag": [0, 1, 2, 3, 4, 5, 6, 8], "imagedict": 0, "The": [0, 3], "class": 0, "function": [0, 1, 3], "us": [0, 1], "prepar": 0, "db": 1, "commonli": 1, "open": 1, "creat": 1, "file": [1, 3], "work": 1, "databas": 1, "intern": 1, "util": 1, "imag": 2, "metadata": 2, "tag": 2, "present": 2, "indic": 2, "tabl": 2, "savefig": 3, "wrapper": 3, "recommend": 3, "structur": 3, "other": 3, "associ": 4, "script": 4, "packag": 4, "rm_imt_imag": 4, "simplest_img_dict": 5, "py": [5, 6], "test": 6, "version": 7, "python": 7, "webpag": 8, "write": 8, "whole": 8, "page": 8, "As": 8, "indidividu": 8, "compon": 8}, "envversion": {"sphinx.domains.c": 2, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 8, "sphinx.domains.index": 1, "sphinx.domains.javascript": 2, "sphinx.domains.math": 2, "sphinx.domains.python": 3, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.todo": 2, "sphinx.ext.viewcode": 1, "sphinx": 57}, "alltitles": {"ImageMetaTag.ImageDict": [[0, "module-ImageMetaTag.img_dict"]], "The ImageDict Class": [[0, "the-imagedict-class"]], "Functions useful in preparing ImageDicts": [[0, "functions-useful-in-preparing-imagedicts"]], "ImageMetaTag.db": [[1, "module-ImageMetaTag.db"]], "Commonly used functions": [[1, "commonly-used-functions"]], "Functions for opening/creating db files": [[1, "functions-for-opening-creating-db-files"]], "Functions for working with open databases": [[1, "functions-for-working-with-open-databases"]], "Internal functions": [[1, "internal-functions"]], "Utility functions": [[1, "utility-functions"]], "ImageMetaTag - Image metadata tagging and presentation": [[2, "module-ImageMetaTag"]], "Indices and tables": [[2, "indices-and-tables"]], "ImageMetaTag.savefig": [[3, "imagemetatag-savefig"]], "The savefig wrapper": [[3, "the-savefig-wrapper"]], "Recommended file structure": [[3, "recommended-file-structure"]], "Other functions": [[3, "other-functions"]], "Associated scripts packaged with ImageMetaTag": [[4, "associated-scripts-packaged-with-imagemetatag"]], "rm_imt_images": [[4, "rm-imt-images"]], "ImageMetaTag - simplest_img_dict.py": [[5, "imagemetatag-simplest-img-dict-py"]], "ImageMetaTag - test.py": [[6, "imagemetatag-test-py"]], "Versions of Python": [[7, "versions-of-python"]], "ImageMetaTag.webpage": [[8, "module-ImageMetaTag.webpage"]], "Writing a whole page": [[8, "writing-a-whole-page"]], "As indidividual components": [[8, "as-indidividual-components"]]}, "indexentries": {"imagedict (class in imagemetatag)": [[0, "ImageMetaTag.ImageDict"]], "imagemetatag.img_dict": [[0, "module-ImageMetaTag.img_dict"]], "append() (imagemetatag.imagedict method)": [[0, "ImageMetaTag.ImageDict.append"]], "check_for_required_keys() (in module imagemetatag)": [[0, "ImageMetaTag.check_for_required_keys"]], "copy_except_dict_and_keys() (imagemetatag.imagedict method)": [[0, "ImageMetaTag.ImageDict.copy_except_dict_and_keys"]], "dict_depth() (imagemetatag.imagedict method)": [[0, "ImageMetaTag.ImageDict.dict_depth"]], "dict_depths() (imagemetatag.imagedict method)": [[0, "ImageMetaTag.ImageDict.dict_depths"]], "dict_heirachy_from_list() (in module imagemetatag)": [[0, "ImageMetaTag.dict_heirachy_from_list"]], "dict_index_array() (imagemetatag.imagedict method)": [[0, "ImageMetaTag.ImageDict.dict_index_array"]], "dict_print() (imagemetatag.imagedict method)": [[0, "ImageMetaTag.ImageDict.dict_print"]], "dict_prune() (imagemetatag.imagedict method)": [[0, "ImageMetaTag.ImageDict.dict_prune"]], "dict_remove() (imagemetatag.imagedict method)": [[0, "ImageMetaTag.ImageDict.dict_remove"]], "dict_split() (in module imagemetatag)": [[0, "ImageMetaTag.dict_split"]], "dict_union() (imagemetatag.imagedict method)": [[0, "ImageMetaTag.ImageDict.dict_union"]], "flatten_lists() (imagemetatag.imagedict method)": [[0, "ImageMetaTag.ImageDict.flatten_lists"]], "key_at_depth() (imagemetatag.imagedict method)": [[0, "ImageMetaTag.ImageDict.key_at_depth"]], "keys_by_depth() (imagemetatag.imagedict method)": [[0, "ImageMetaTag.ImageDict.keys_by_depth"]], "list_keys_by_depth() (imagemetatag.imagedict method)": [[0, "ImageMetaTag.ImageDict.list_keys_by_depth"]], "mergedicts() (imagemetatag.imagedict method)": [[0, "ImageMetaTag.ImageDict.mergedicts"]], "module": [[0, "module-ImageMetaTag.img_dict"], [1, "module-ImageMetaTag.db"], [2, "module-ImageMetaTag"], [8, "module-ImageMetaTag.webpage"]], "readmeta_from_image() (in module imagemetatag)": [[0, "ImageMetaTag.readmeta_from_image"]], "remove() (imagemetatag.imagedict method)": [[0, "ImageMetaTag.ImageDict.remove"]], "return_from_list() (imagemetatag.imagedict method)": [[0, "ImageMetaTag.ImageDict.return_from_list"]], "return_key_inds() (imagemetatag.imagedict method)": [[0, "ImageMetaTag.ImageDict.return_key_inds"]], "simple_dict_filter() (in module imagemetatag)": [[0, "ImageMetaTag.simple_dict_filter"]], "sort_keys() (imagemetatag.imagedict method)": [[0, "ImageMetaTag.ImageDict.sort_keys"]], "imagemetatag.db": [[1, "module-ImageMetaTag.db"]], "db_name_to_info_key() (in module imagemetatag.db)": [[1, "ImageMetaTag.db.db_name_to_info_key"]], "del_plots_from_dbfile() (in module imagemetatag.db)": [[1, "ImageMetaTag.db.del_plots_from_dbfile"]], "info_key_to_db_name() (in module imagemetatag.db)": [[1, "ImageMetaTag.db.info_key_to_db_name"]], "merge_db_files() (in module imagemetatag.db)": [[1, "ImageMetaTag.db.merge_db_files"]], "open_db_file() (in module imagemetatag.db)": [[1, "ImageMetaTag.db.open_db_file"]], "open_or_create_db_file() (in module imagemetatag.db)": [[1, "ImageMetaTag.db.open_or_create_db_file"]], "process_select_star_from() (in module imagemetatag.db)": [[1, "ImageMetaTag.db.process_select_star_from"]], "read() (in module imagemetatag.db)": [[1, "ImageMetaTag.db.read"]], "read_db_file_to_mem() (in module imagemetatag.db)": [[1, "ImageMetaTag.db.read_db_file_to_mem"]], "read_img_info_from_dbcursor() (in module imagemetatag.db)": [[1, "ImageMetaTag.db.read_img_info_from_dbcursor"]], "recrete_table_new_cols() (in module imagemetatag.db)": [[1, "ImageMetaTag.db.recrete_table_new_cols"]], "scan_dir_for_db() (in module imagemetatag.db)": [[1, "ImageMetaTag.db.scan_dir_for_db"]], "select_dbcr_by_tags() (in module imagemetatag.db)": [[1, "ImageMetaTag.db.select_dbcr_by_tags"]], "select_dbfile_by_tags() (in module imagemetatag.db)": [[1, "ImageMetaTag.db.select_dbfile_by_tags"]], "write_img_to_dbfile() (in module imagemetatag.db)": [[1, "ImageMetaTag.db.write_img_to_dbfile"]], "write_img_to_open_db() (in module imagemetatag.db)": [[1, "ImageMetaTag.db.write_img_to_open_db"]], "imagemetatag": [[2, "module-ImageMetaTag"]], "image_file_postproc() (in module imagemetatag)": [[3, "ImageMetaTag.image_file_postproc"]], "savefig() (in module imagemetatag)": [[3, "ImageMetaTag.savefig"]], "imagemetatag.webpage": [[8, "module-ImageMetaTag.webpage"]], "copy_required_javascript() (in module imagemetatag.webpage)": [[8, "ImageMetaTag.webpage.copy_required_javascript"]], "write_full_page() (in module imagemetatag.webpage)": [[8, "ImageMetaTag.webpage.write_full_page"]], "write_js_placeholders() (in module imagemetatag.webpage)": [[8, "ImageMetaTag.webpage.write_js_placeholders"]], "write_js_to_header() (in module imagemetatag.webpage)": [[8, "ImageMetaTag.webpage.write_js_to_header"]], "write_json() (in module imagemetatag.webpage)": [[8, "ImageMetaTag.webpage.write_json"]]}})
\ No newline at end of file
diff --git a/docs/build/html/simple.html b/docs/build/html/simple.html
index 6533662..2735a23 100644
--- a/docs/build/html/simple.html
+++ b/docs/build/html/simple.html
@@ -6,7 +6,7 @@
     <meta charset="utf-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
 
-    <title>ImageMetaTag - simplest_img_dict.py &#8212; ImageMetaTag 0.7.12 documentation</title>
+    <title>ImageMetaTag - simplest_img_dict.py &#8212; ImageMetaTag 0.7.13 documentation</title>
     <link rel="stylesheet" type="text/css" href="_static/pygments.css" />
     <link rel="stylesheet" type="text/css" href="_static/sphinxdoc.css" />
     <script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script>
@@ -14,6 +14,7 @@
     <script src="_static/underscore.js"></script>
     <script src="_static/_sphinx_javascript_frameworks_compat.js"></script>
     <script src="_static/doctools.js"></script>
+    <script src="_static/sphinx_highlight.js"></script>
     <link rel="index" title="Index" href="genindex.html" />
     <link rel="search" title="Search" href="search.html" />
     <link rel="next" title="Associated scripts packaged with ImageMetaTag" href="scripts.html" />
@@ -34,7 +35,7 @@ <h3>Navigation</h3>
         <li class="right" >
           <a href="test.html" title="ImageMetaTag - test.py"
              accesskey="P">previous</a> |</li>
-        <li class="nav-item nav-item-0"><a href="index.html">ImageMetaTag 0.7.12 documentation</a> &#187;</li>
+        <li class="nav-item nav-item-0"><a href="index.html">ImageMetaTag 0.7.13 documentation</a> &#187;</li>
         <li class="nav-item nav-item-this"><a href="">ImageMetaTag - simplest_img_dict.py</a></li> 
       </ul>
     </div>  
@@ -185,13 +186,13 @@ <h3>Navigation</h3>
         <li class="right" >
           <a href="test.html" title="ImageMetaTag - test.py"
              >previous</a> |</li>
-        <li class="nav-item nav-item-0"><a href="index.html">ImageMetaTag 0.7.12 documentation</a> &#187;</li>
+        <li class="nav-item nav-item-0"><a href="index.html">ImageMetaTag 0.7.13 documentation</a> &#187;</li>
         <li class="nav-item nav-item-this"><a href="">ImageMetaTag - simplest_img_dict.py</a></li> 
       </ul>
     </div>
     <div class="footer" role="contentinfo">
         &#169; Copyright 2015-2023, British Crown Copyright.
-      Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 5.0.2.
+      Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 5.3.0.
     </div>
   </body>
 </html>
\ No newline at end of file
diff --git a/docs/build/html/versions.html b/docs/build/html/versions.html
index 64f709d..6b8d881 100644
--- a/docs/build/html/versions.html
+++ b/docs/build/html/versions.html
@@ -6,7 +6,7 @@
     <meta charset="utf-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
 
-    <title>Versions of Python &#8212; ImageMetaTag 0.7.12 documentation</title>
+    <title>Versions of Python &#8212; ImageMetaTag 0.7.13 documentation</title>
     <link rel="stylesheet" type="text/css" href="_static/pygments.css" />
     <link rel="stylesheet" type="text/css" href="_static/sphinxdoc.css" />
     <script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script>
@@ -14,6 +14,7 @@
     <script src="_static/underscore.js"></script>
     <script src="_static/_sphinx_javascript_frameworks_compat.js"></script>
     <script src="_static/doctools.js"></script>
+    <script src="_static/sphinx_highlight.js"></script>
     <link rel="index" title="Index" href="genindex.html" />
     <link rel="search" title="Search" href="search.html" />
     <link rel="prev" title="Associated scripts packaged with ImageMetaTag" href="scripts.html" /> 
@@ -30,7 +31,7 @@ <h3>Navigation</h3>
         <li class="right" >
           <a href="scripts.html" title="Associated scripts packaged with ImageMetaTag"
              accesskey="P">previous</a> |</li>
-        <li class="nav-item nav-item-0"><a href="index.html">ImageMetaTag 0.7.12 documentation</a> &#187;</li>
+        <li class="nav-item nav-item-0"><a href="index.html">ImageMetaTag 0.7.13 documentation</a> &#187;</li>
         <li class="nav-item nav-item-this"><a href="">Versions of Python</a></li> 
       </ul>
     </div>  
@@ -100,13 +101,13 @@ <h3>Navigation</h3>
         <li class="right" >
           <a href="scripts.html" title="Associated scripts packaged with ImageMetaTag"
              >previous</a> |</li>
-        <li class="nav-item nav-item-0"><a href="index.html">ImageMetaTag 0.7.12 documentation</a> &#187;</li>
+        <li class="nav-item nav-item-0"><a href="index.html">ImageMetaTag 0.7.13 documentation</a> &#187;</li>
         <li class="nav-item nav-item-this"><a href="">Versions of Python</a></li> 
       </ul>
     </div>
     <div class="footer" role="contentinfo">
         &#169; Copyright 2015-2023, British Crown Copyright.
-      Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 5.0.2.
+      Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 5.3.0.
     </div>
   </body>
 </html>
\ No newline at end of file
diff --git a/docs/build/html/webpage.html b/docs/build/html/webpage.html
index 3c4789a..1a68fff 100644
--- a/docs/build/html/webpage.html
+++ b/docs/build/html/webpage.html
@@ -6,7 +6,7 @@
     <meta charset="utf-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
 
-    <title>ImageMetaTag.webpage &#8212; ImageMetaTag 0.7.12 documentation</title>
+    <title>ImageMetaTag.webpage &#8212; ImageMetaTag 0.7.13 documentation</title>
     <link rel="stylesheet" type="text/css" href="_static/pygments.css" />
     <link rel="stylesheet" type="text/css" href="_static/sphinxdoc.css" />
     <script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script>
@@ -14,6 +14,7 @@
     <script src="_static/underscore.js"></script>
     <script src="_static/_sphinx_javascript_frameworks_compat.js"></script>
     <script src="_static/doctools.js"></script>
+    <script src="_static/sphinx_highlight.js"></script>
     <link rel="index" title="Index" href="genindex.html" />
     <link rel="search" title="Search" href="search.html" />
     <link rel="next" title="ImageMetaTag - test.py" href="test.html" />
@@ -34,7 +35,7 @@ <h3>Navigation</h3>
         <li class="right" >
           <a href="ImageDict.html" title="ImageMetaTag.ImageDict"
              accesskey="P">previous</a> |</li>
-        <li class="nav-item nav-item-0"><a href="index.html">ImageMetaTag 0.7.12 documentation</a> &#187;</li>
+        <li class="nav-item nav-item-0"><a href="index.html">ImageMetaTag 0.7.13 documentation</a> &#187;</li>
         <li class="nav-item nav-item-this"><a href="">ImageMetaTag.webpage</a></li> 
       </ul>
     </div>  
@@ -211,8 +212,17 @@ <h2>As indidividual components<a class="headerlink" href="#as-indidividual-compo
     <h3><a href="index.html">Table of Contents</a></h3>
     <ul>
 <li><a class="reference internal" href="#">ImageMetaTag.webpage</a><ul>
-<li><a class="reference internal" href="#writing-a-whole-page">Writing a whole page</a></li>
-<li><a class="reference internal" href="#as-indidividual-components">As indidividual components</a></li>
+<li><a class="reference internal" href="#writing-a-whole-page">Writing a whole page</a><ul>
+<li><a class="reference internal" href="#ImageMetaTag.webpage.write_full_page"><code class="docutils literal notranslate"><span class="pre">write_full_page()</span></code></a></li>
+</ul>
+</li>
+<li><a class="reference internal" href="#as-indidividual-components">As indidividual components</a><ul>
+<li><a class="reference internal" href="#ImageMetaTag.webpage.write_js_to_header"><code class="docutils literal notranslate"><span class="pre">write_js_to_header()</span></code></a></li>
+<li><a class="reference internal" href="#ImageMetaTag.webpage.write_js_placeholders"><code class="docutils literal notranslate"><span class="pre">write_js_placeholders()</span></code></a></li>
+<li><a class="reference internal" href="#ImageMetaTag.webpage.write_json"><code class="docutils literal notranslate"><span class="pre">write_json()</span></code></a></li>
+<li><a class="reference internal" href="#ImageMetaTag.webpage.copy_required_javascript"><code class="docutils literal notranslate"><span class="pre">copy_required_javascript()</span></code></a></li>
+</ul>
+</li>
 </ul>
 </li>
 </ul>
@@ -264,13 +274,13 @@ <h3>Navigation</h3>
         <li class="right" >
           <a href="ImageDict.html" title="ImageMetaTag.ImageDict"
              >previous</a> |</li>
-        <li class="nav-item nav-item-0"><a href="index.html">ImageMetaTag 0.7.12 documentation</a> &#187;</li>
+        <li class="nav-item nav-item-0"><a href="index.html">ImageMetaTag 0.7.13 documentation</a> &#187;</li>
         <li class="nav-item nav-item-this"><a href="">ImageMetaTag.webpage</a></li> 
       </ul>
     </div>
     <div class="footer" role="contentinfo">
         &#169; Copyright 2015-2023, British Crown Copyright.
-      Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 5.0.2.
+      Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 5.3.0.
     </div>
   </body>
 </html>
\ No newline at end of file
diff --git a/docs/source/conf.py b/docs/source/conf.py
index 1e0ab51..173f2b5 100644
--- a/docs/source/conf.py
+++ b/docs/source/conf.py
@@ -62,7 +62,7 @@
 version = '0.7'
 # The full version, including alpha/beta/rc tags
 # (see release_process for details on incrementing the version):
-release = '0.7.12'
+release = '0.7.13'
 
 # The language for content autogenerated by Sphinx. Refer to documentation
 # for a list of supported languages.
diff --git a/docs/source/scripts.rst b/docs/source/scripts.rst
index 6fe3504..4d42f96 100644
--- a/docs/source/scripts.rst
+++ b/docs/source/scripts.rst
@@ -14,13 +14,15 @@ This script operates on a ImageMetaTag database file (imt.db in any examples).
 
 Basic example:
 ::
- rm_imt_images imt.db file.png file2.png
+
+  rm_imt_images imt.db file.png file2.png
 
 this would delete file1.png and file2.png from disk and the imt.db file
 
 Usage with wildcards:
 ::
- rm_imt_images.py /path/to/images/imt.db  /path/to/images/subdir/*
+
+  rm_imt_images /path/to/images/imt.db  /path/to/images/subdir/*
 
 this would delete all files in the example subdirectory and their entry
 in the database
diff --git a/release_process b/release_process
index 56aa632..0ea5fcd 100644
--- a/release_process
+++ b/release_process
@@ -19,7 +19,8 @@ convention (http://semver.org/)
   cd docs
  * Clean the documentation build:
      make html clean
- * Rebuild the docs, ensuring that the PYTHONPATH refers to the source of the new build:
+ * Rebuild the docs, ensuring that the PYTHONPATH refers to the source of 
+   the new build:
      PYTHONPATH=../ make html
 
 4) Commit the version number and documentation changes:
@@ -29,7 +30,12 @@ convention (http://semver.org/)
 5) Start a pull request for your branch on your github fork and follow the
 process to merge it to the master branch.
 
-6) Test the package works at the commit which you intend to release by installing from the specific commit to a temporary location. Install it using the setup.py and run the test.py script.
+
+## THIS IS BROKEN NOW AND WE HAVE TO DO SOMETHING ELSE.
+## (need to ask a software engineer why and what to do...)
+6) Test the package works at the commit which you intend to release by
+   installing from the specific commit to a temporary location. Install it
+   using the setup.py and run the test.py script.
   py27 setup.py install
 
 This will also make a dist/ folder for uploading to pypi later.
diff --git a/setup.py b/setup.py
index f43f7a2..24a9df1 100644
--- a/setup.py
+++ b/setup.py
@@ -12,7 +12,7 @@
 setup_args = dict(
     name = 'ImageMetaTag',
     # see release_process for details on incrementing the version
-    version = '0.7.12',
+    version = '0.7.13',
     description = 'Image metadata tagging, database and presentation',
     license = 'BSD3',
     author = 'Melissa Brooks',
@@ -23,6 +23,8 @@
                    'Programming Language :: Python :: 3.6',
                    'Programming Language :: Python :: 3.7',
                    'Programming Language :: Python :: 3.8',
+                   'Programming Language :: Python :: 3.9',
+                   'Programming Language :: Python :: 3.10',
                   ],
     package_data = {'ImageMetaTag': ['javascript/*']},
     scripts = ['bin/rm_imt_images'],


Test patch:
diff --git a/docs/build/html/test.html b/docs/build/html/test.html
index a2dcbe2..05ec4f1 100644
--- a/docs/build/html/test.html
+++ b/docs/build/html/test.html
@@ -6,7 +6,7 @@
     <meta charset="utf-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
 
-    <title>ImageMetaTag - test.py &#8212; ImageMetaTag 0.7.12 documentation</title>
+    <title>ImageMetaTag - test.py &#8212; ImageMetaTag 0.7.13 documentation</title>
     <link rel="stylesheet" type="text/css" href="_static/pygments.css" />
     <link rel="stylesheet" type="text/css" href="_static/sphinxdoc.css" />
     <script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script>
@@ -14,6 +14,7 @@
     <script src="_static/underscore.js"></script>
     <script src="_static/_sphinx_javascript_frameworks_compat.js"></script>
     <script src="_static/doctools.js"></script>
+    <script src="_static/sphinx_highlight.js"></script>
     <link rel="index" title="Index" href="genindex.html" />
     <link rel="search" title="Search" href="search.html" />
     <link rel="next" title="ImageMetaTag - simplest_img_dict.py" href="simple.html" />
@@ -34,7 +35,7 @@ <h3>Navigation</h3>
         <li class="right" >
           <a href="webpage.html" title="ImageMetaTag.webpage"
              accesskey="P">previous</a> |</li>
-        <li class="nav-item nav-item-0"><a href="index.html">ImageMetaTag 0.7.12 documentation</a> &#187;</li>
+        <li class="nav-item nav-item-0"><a href="index.html">ImageMetaTag 0.7.13 documentation</a> &#187;</li>
         <li class="nav-item nav-item-this"><a href="">ImageMetaTag - test.py</a></li> 
       </ul>
     </div>  
@@ -131,13 +132,13 @@ <h3>Navigation</h3>
         <li class="right" >
           <a href="webpage.html" title="ImageMetaTag.webpage"
              >previous</a> |</li>
-        <li class="nav-item nav-item-0"><a href="index.html">ImageMetaTag 0.7.12 documentation</a> &#187;</li>
+        <li class="nav-item nav-item-0"><a href="index.html">ImageMetaTag 0.7.13 documentation</a> &#187;</li>
         <li class="nav-item nav-item-this"><a href="">ImageMetaTag - test.py</a></li> 
       </ul>
     </div>
     <div class="footer" role="contentinfo">
         &#169; Copyright 2015-2023, British Crown Copyright.
-      Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 5.0.2.
+      Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 5.3.0.
     </div>
   </body>
 </html>
\ No newline at end of file
diff --git a/test.py b/test.py
index fb573ea..8f8772e 100644
--- a/test.py
+++ b/test.py
@@ -146,8 +146,8 @@ def make_random_data(n_random_data, seed=3):
             n_rolls = 6 ** (i_rand + 1)
         else:
             n_rolls = 6 ** (6) + 2 ** (i_rand + 1)
-        random_data.append(np.random.random_integers(1, 6, n_rolls) +
-                           np.random.random_integers(1, 6, n_rolls))
+        random_data.append(np.random.randint(1, 6, n_rolls) +
+                           np.random.randint(1, 6, n_rolls))
     return random_data